X-Git-Url: https://git.stg.codes/stg.git/blobdiff_plain/4e101b93cafd0881518fc2be53c051d47d374d93..53407602cc91f2442d0f28575aa366f9c7159ae3:/include/stg/user_property.h?ds=inline diff --git a/include/stg/user_property.h b/include/stg/user_property.h index fbcf8856..6eb17666 100644 --- a/include/stg/user_property.h +++ b/include/stg/user_property.h @@ -26,13 +26,14 @@ $Author: faust $ extern volatile time_t stgTime; //----------------------------------------------------------------------------- +//template class USER_PROPERTY_BASE { public: virtual std::string ToString() const = 0; }; //----------------------------------------------------------------------------- template -class USER_PROPERTY : USER_PROPERTY_BASE { +class USER_PROPERTY : public USER_PROPERTY_BASE { public: USER_PROPERTY(varT & val); virtual ~USER_PROPERTY(); @@ -72,7 +73,8 @@ public: bool isPassword, bool isStat, STG_LOGGER & logger, - const std::string & sd); + const std::string & sd, + std::map & properties); virtual ~USER_PROPERTY_LOGGED() {} USER_PROPERTY_LOGGED * GetPointer() throw() { return this; } @@ -122,6 +124,7 @@ private: USER_STAT stat; USER_CONF conf; + std::map properties; public: USER_PROPERTIES(const std::string & sd); @@ -171,8 +174,6 @@ public: USER_PROPERTY_LOGGED userdata7; USER_PROPERTY_LOGGED userdata8; USER_PROPERTY_LOGGED userdata9; - - std::map params; }; //============================================================================= @@ -276,7 +277,8 @@ USER_PROPERTY_LOGGED::USER_PROPERTY_LOGGED(varT & val, bool isPass, bool isSt, STG_LOGGER & logger, - const std::string & sd) + const std::string & sd, + std::map & properties) : USER_PROPERTY(val), stgLogger(logger), @@ -285,6 +287,7 @@ USER_PROPERTY_LOGGED::USER_PROPERTY_LOGGED(varT & val, name(n), scriptsDir(sd) { +properties.insert(std::make_pair(name, this)); } //------------------------------------------------------------------------- template @@ -384,11 +387,13 @@ else //------------------------------------------------------------------------- //------------------------------------------------------------------------- //------------------------------------------------------------------------- +inline std::string USER_PROPERTIES::GetPropertyValue(const std::string & name) const { - std::map::iterator it = params.find(name); - if (it != params.end()) return it->second.ToString(); - else return ""; +std::map::const_iterator it = properties.find(name); +if (it == properties.end()) + return ""; +return it->second->ToString(); } //------------------------------------------------------------------------- //------------------------------------------------------------------------- @@ -401,6 +406,7 @@ return stream << value.ConstData(); } //----------------------------------------------------------------------------- template +inline std::string USER_PROPERTY::ToString() const { std::stringstream stream;