X-Git-Url: https://git.stg.codes/stg.git/blobdiff_plain/a7b9b4dfbeb7d84f1c393f7197b017a1e65192b4..8f8c49688664c8681a11ea31f6a810625dcd108b:/include/stg/admin_conf.h?ds=sidebyside diff --git a/include/stg/admin_conf.h b/include/stg/admin_conf.h index 8b1a988e..8531647e 100644 --- a/include/stg/admin_conf.h +++ b/include/stg/admin_conf.h @@ -1,34 +1,21 @@ - /* - $Revision: 1.9 $ - $Date: 2010/09/10 05:02:08 $ - $Author: faust $ - */ +#pragma once -#ifndef ADMIN_CONF_H -#define ADMIN_CONF_H - -#include "os_int.h" -#include "resetable.h" +#include "stg/optional.h" #include +#include + #define ADM_LOGIN_LEN (32) #define ADM_PASSWD_LEN (32) -//----------------------------------------------------------------------------- -struct PRIV + +namespace STG { - PRIV() - : userStat(0), - userConf(0), - userCash(0), - userPasswd(0), - userAddDel(0), - adminChg(0), - tariffChg(0), - serviceChg(0), - corpChg(0) - {} - PRIV(uint32_t p) + +struct Priv +{ + Priv() noexcept : Priv(0) {} + explicit Priv(uint32_t p) noexcept : userStat((p & 0x00000003) >> 0x00), userConf((p & 0x0000000C) >> 0x02), userCash((p & 0x00000030) >> 0x04), @@ -40,8 +27,24 @@ struct PRIV corpChg((p & 0x00030000) >> 0x10) {} - uint32_t ToInt() const; - void FromInt(uint32_t p); + Priv(const Priv&) = default; + Priv& operator=(const Priv&) = default; + Priv(Priv&&) = default; + Priv& operator=(Priv&&) = default; + + 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; @@ -54,54 +57,30 @@ struct PRIV 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) - {} - ADMIN_CONF(const PRIV & pr, const std::string & l, const std::string & p) + AdminConf() : AdminConf({}, {}, "* NO PASSWORD *") {} + 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 ADMIN_CONF_RES +struct AdminConfOpt { - ADMIN_CONF_RES(const ADMIN_CONF & conf) - : priv(conf.priv), - login(conf.login), - password(conf.password) - {} - ADMIN_CONF_RES(const ADMIN_CONF_RES & rhs) - : priv(rhs.priv), - login(rhs.login), - password(rhs.password) - {} - ADMIN_CONF_RES & operator=(const ADMIN_CONF_RES & rhs) - { - priv = rhs.priv; - login = rhs.login; - password = rhs.password; - return *this; - } - RESETABLE priv; - RESETABLE login; - RESETABLE password; + Optional priv; + Optional login; + Optional password; }; -#include "admin_conf.inc.h" - -#endif - - +}