X-Git-Url: https://git.stg.codes/stg.git/blobdiff_plain/30eb6cd56d43fe69026617228478c7c373739a09..9421e4b0be3a6a59e93ad092e3904b3ff8092e84:/include/stg/user_property.h?ds=inline diff --git a/include/stg/user_property.h b/include/stg/user_property.h index aee32e3e..97c1af51 100644 --- a/include/stg/user_property.h +++ b/include/stg/user_property.h @@ -19,6 +19,7 @@ $Author: faust $ #include "stg/logger.h" #include "stg/locker.h" #include "stg/scriptexecuter.h" +#include "stg/common.h" #include "store.h" #include "admin.h" @@ -32,6 +33,8 @@ public: virtual std::string ToString() const = 0; }; //----------------------------------------------------------------------------- +typedef std::map REGISTRY; +//----------------------------------------------------------------------------- template class USER_PROPERTY : public USER_PROPERTY_BASE { public: @@ -74,7 +77,7 @@ public: bool isStat, STG_LOGGER & logger, const std::string & sd, - std::map & properties); + REGISTRY & properties); virtual ~USER_PROPERTY_LOGGED() {} USER_PROPERTY_LOGGED * GetPointer() throw() { return this; } @@ -124,7 +127,7 @@ private: USER_STAT stat; USER_CONF conf; - std::map properties; + REGISTRY properties; public: USER_PROPERTIES(const std::string & sd); @@ -138,6 +141,7 @@ public: void SetProperties(const USER_PROPERTIES & p) { stat = p.stat; conf = p.conf; } std::string GetPropertyValue(const std::string & name) const; + bool Exists(const std::string & name) const; USER_PROPERTY_LOGGED cash; USER_PROPERTY_LOGGED up; @@ -278,7 +282,7 @@ USER_PROPERTY_LOGGED::USER_PROPERTY_LOGGED(varT & val, bool isSt, STG_LOGGER & logger, const std::string & sd, - std::map & properties) + REGISTRY & properties) : USER_PROPERTY(val), stgLogger(logger), @@ -287,7 +291,7 @@ USER_PROPERTY_LOGGED::USER_PROPERTY_LOGGED(varT & val, name(n), scriptsDir(sd) { -properties.insert(std::make_pair(name, this)); +properties.insert(std::make_pair(ToLower(name), this)); } //------------------------------------------------------------------------- template @@ -390,11 +394,17 @@ else inline std::string USER_PROPERTIES::GetPropertyValue(const std::string & name) const { -std::map::const_iterator it = properties.find(name); +REGISTRY::const_iterator it = properties.find(ToLower(name)); if (it == properties.end()) return ""; return it->second->ToString(); } +//----------------------------------------------------------------------------- +inline +bool USER_PROPERTIES::Exists(const std::string & name) const +{ +return properties.find(ToLower(name)) != properties.end(); +} //------------------------------------------------------------------------- //------------------------------------------------------------------------- //-------------------------------------------------------------------------