X-Git-Url: https://git.stg.codes/stg.git/blobdiff_plain/9701b7ab4dc4cd709ad4dcaa750fc0021f15e231..83ce40b2a471b560ec7516efebcb5ddcf7519071:/include/stg/admin_conf.h diff --git a/include/stg/admin_conf.h b/include/stg/admin_conf.h index 32012f34..c4871970 100644 --- a/include/stg/admin_conf.h +++ b/include/stg/admin_conf.h @@ -1,42 +1,60 @@ - /* - $Revision: 1.9 $ - $Date: 2010/09/10 05:02:08 $ - $Author: faust $ - */ +#pragma once -#ifndef ADMIN_CONF_H -#define ADMIN_CONF_H +#include "stg/optional.h" #include -#include "os_int.h" +#include #define ADM_LOGIN_LEN (32) #define ADM_PASSWD_LEN (32) -//----------------------------------------------------------------------------- -struct PRIV + +namespace STG +{ + +struct Priv { - PRIV() + Priv() noexcept : userStat(0), userConf(0), userCash(0), userPasswd(0), userAddDel(0), adminChg(0), - tariffChg(0) - {}; - PRIV(uint16_t p) - : userStat((p & 0x0003) >> 0x00), - userConf((p & 0x000C) >> 0x02), - userCash((p & 0x0030) >> 0x04), - userPasswd((p & 0x00C0) >> 0x06), - userAddDel((p & 0x0300) >> 0x08), - adminChg((p & 0x0C00) >> 0x0A), - tariffChg((p & 0x3000) >> 0x0C) + tariffChg(0), + serviceChg(0), + corpChg(0) {} + explicit Priv(uint32_t p) noexcept + : userStat((p & 0x00000003) >> 0x00), + userConf((p & 0x0000000C) >> 0x02), + userCash((p & 0x00000030) >> 0x04), + userPasswd((p & 0x000000C0) >> 0x06), + userAddDel((p & 0x00000300) >> 0x08), + adminChg((p & 0x00000C00) >> 0x0A), + tariffChg((p & 0x00003000) >> 0x0C), + serviceChg((p & 0x0000C000) >> 0x0E), + corpChg((p & 0x00030000) >> 0x10) + {} + + Priv(const Priv&) = default; + Priv& operator=(const Priv&) = default; + Priv(Priv&&) = default; + Priv& operator=(Priv&&) = default; - uint16_t ToInt() const; - void FromInt(uint16_t p); + uint32_t toInt() const noexcept + { + uint32_t p = (userStat << 0) | + (userConf << 2) | + (userCash << 4) | + (userPasswd << 6) | + (userAddDel << 8) | + (adminChg << 10) | + (tariffChg << 12) | + (serviceChg << 14) | + (corpChg << 16); + return p; + } uint16_t userStat; uint16_t userConf; @@ -45,33 +63,36 @@ struct PRIV uint16_t userAddDel; uint16_t adminChg; uint16_t tariffChg; + uint16_t serviceChg; + uint16_t corpChg; }; //----------------------------------------------------------------------------- -struct ADMIN_CONF +struct AdminConf { - ADMIN_CONF() - : priv(), - login(), - password("* NO PASSWORD *") - {} - ADMIN_CONF(const ADMIN_CONF & rvalue) - : priv(rvalue.priv), - login(rvalue.login), - password(rvalue.password) + AdminConf() + : password("* NO PASSWORD *") {} - ADMIN_CONF(const PRIV & pr, const std::string & l, const std::string & p) + AdminConf(const Priv & pr, const std::string & l, const std::string & p) : priv(pr), login(l), password(p) {} - PRIV priv; + + AdminConf(const AdminConf&) = default; + AdminConf& operator=(const AdminConf&) = default; + AdminConf(AdminConf&&) = default; + AdminConf& operator=(AdminConf&&) = default; + + Priv priv; std::string login; std::string password; }; //----------------------------------------------------------------------------- +struct AdminConfOpt +{ + Optional priv; + Optional login; + Optional password; +}; -#include "admin_conf.inc.h" - -#endif - - +}