X-Git-Url: https://git.stg.codes/stg.git/blobdiff_plain/d1c864e3feaf4295d366e2ef497495738ce15337..46d0fa38003ef0b122fea77dfaa252fa832cb5a3:/include/stg/user_conf.h diff --git a/include/stg/user_conf.h b/include/stg/user_conf.h index a16b3929..a82c4f1f 100644 --- a/include/stg/user_conf.h +++ b/include/stg/user_conf.h @@ -1,23 +1,20 @@ - /* - $Revision: 1.12 $ - $Date: 2010/03/11 14:42:05 $ - $Author: faust $ - */ +#pragma once -#ifndef USER_CONF_H -#define USER_CONF_H +#include "user_ips.h" #include <string> #include <vector> +#include <optional> +#include <cstdint> #include "const.h" -#include "user_ips.h" -#include "resetable.h" -#include "os_int.h" + +namespace STG +{ //----------------------------------------------------------------------------- -struct USER_CONF +struct UserConf { - USER_CONF() + UserConf() noexcept : passive(0), disabled(0), disabledDetailStat(0), @@ -27,6 +24,11 @@ struct USER_CONF creditExpire(0) {} + UserConf(const UserConf&) = default; + UserConf& operator=(const UserConf&) = default; + UserConf(UserConf&&) = default; + UserConf& operator=(UserConf&&) = default; + std::string password; int passive; int disabled; @@ -45,15 +47,39 @@ struct USER_CONF std::string nextTariff; std::vector<std::string> userdata; time_t creditExpire; - USER_IPS ips; + UserIPs ips; }; //----------------------------------------------------------------------------- -struct USER_CONF_RES +struct UserConfOpt { - USER_CONF_RES() + UserConfOpt() noexcept : userdata(USERDATA_NUM) {} - USER_CONF_RES & operator=(const USER_CONF & uc) + UserConfOpt(const UserConf& data) noexcept + : password(data.password), + passive(data.passive), + disabled(data.disabled), + disabledDetailStat(data.disabledDetailStat), + alwaysOnline(data.alwaysOnline), + tariffName(data.tariffName), + address(data.address), + phone(data.phone), + email(data.email), + note(data.note), + realName(data.realName), + corp(data.corp), + group(data.group), + credit(data.credit), + nextTariff(data.nextTariff), + userdata(USERDATA_NUM), + services(data.services), + creditExpire(data.creditExpire), + ips(data.ips) + { + for (size_t i = 0; i < USERDATA_NUM; i++) + userdata[i] = data.userdata[i]; + } + UserConfOpt& operator=(const UserConf& uc) noexcept { userdata.resize(USERDATA_NUM); password = uc.password; @@ -77,54 +103,32 @@ struct USER_CONF_RES ips = uc.ips; return *this; } - USER_CONF GetData() const - { - USER_CONF uc; - uc.password = password.data(); - uc.passive = passive.data(); - uc.disabled = disabled.data(); - uc.disabledDetailStat = disabledDetailStat.data(); - uc.alwaysOnline = alwaysOnline.data(); - uc.tariffName = tariffName.data(); - uc.address = address.data(); - uc.phone = phone.data(); - uc.email = email.data(); - uc.note = note.data(); - uc.realName = realName.data(); - uc.corp = corp.data(); - uc.group = group.data(); - uc.credit = credit.data(); - uc.nextTariff = nextTariff.data(); - for (size_t i = 0; i < USERDATA_NUM; i++) - { - uc.userdata[i] = userdata[i].data(); - } - uc.services = services.data(); - uc.creditExpire = creditExpire.data(); - uc.ips = ips.data(); - return uc; - } //------------------------------------------------------------------------- - RESETABLE<std::string> password; - RESETABLE<int> passive; - RESETABLE<int> disabled; - RESETABLE<int> disabledDetailStat; - RESETABLE<int> alwaysOnline; - RESETABLE<std::string> tariffName; - RESETABLE<std::string> address; - RESETABLE<std::string> phone; - RESETABLE<std::string> email; - RESETABLE<std::string> note; - RESETABLE<std::string> realName; - RESETABLE<std::string> corp; - RESETABLE<std::string> group; - RESETABLE<double> credit; - RESETABLE<std::string> nextTariff; - std::vector<RESETABLE<std::string> > userdata; - RESETABLE<std::vector<std::string> > services; - RESETABLE<time_t> creditExpire; - RESETABLE<USER_IPS> ips; + UserConfOpt(const UserConfOpt&) = default; + UserConfOpt& operator=(const UserConfOpt&) = default; + UserConfOpt(UserConfOpt&&) = default; + UserConfOpt& operator=(UserConfOpt&&) = default; + + std::optional<std::string> password; + std::optional<int> passive; + std::optional<int> disabled; + std::optional<int> disabledDetailStat; + std::optional<int> alwaysOnline; + std::optional<std::string> tariffName; + std::optional<std::string> address; + std::optional<std::string> phone; + std::optional<std::string> email; + std::optional<std::string> note; + std::optional<std::string> realName; + std::optional<std::string> corp; + std::optional<std::string> group; + std::optional<double> credit; + std::optional<std::string> nextTariff; + std::vector<std::optional<std::string> > userdata; + std::optional<std::vector<std::string> > services; + std::optional<time_t> creditExpire; + std::optional<UserIPs> ips; }; //----------------------------------------------------------------------------- -#endif +}