]> git.netwichtig.de Git - user/henk/code/inspircd.git/blobdiff - include/configreader.h
Implement Command::RegisterService()
[user/henk/code/inspircd.git] / include / configreader.h
index 3d99235361eec991e5fcc77067f22e543b7cab5c..9b73dd3c630a095fdc5e3e59889a25e86fcff670 100644 (file)
@@ -117,13 +117,10 @@ class ServerLimits
        /** Maximum hostname length */
        size_t MaxHost;
 
-       /** Creating the class initialises it to the defaults
-        * as in 1.1's ./configure script. Reading other values
-        * from the config will change these values.
+       /** Read all limits from a config tag. Limits which aren't specified in the tag are set to a default value.
+        * @param tag Configuration tag to read the limits from
         */
-       ServerLimits() : NickMax(31), ChanMax(64), MaxModes(20), IdentMax(12),
-               MaxQuit(255), MaxTopic(307), MaxKick(255), MaxGecos(128), MaxAway(200),
-               MaxLine(512), MaxHost(64) { }
+       ServerLimits(ConfigTag* tag);
 };
 
 struct CommandLineConf
@@ -165,8 +162,9 @@ struct CommandLineConf
 class CoreExport OperInfo : public refcountbase
 {
  public:
-       std::set<std::string> AllowedOperCommands;
-       std::set<std::string> AllowedPrivs;
+       typedef insp::flat_set<std::string> PrivSet;
+       PrivSet AllowedOperCommands;
+       PrivSet AllowedPrivs;
 
        /** Allowed user modes from oper classes. */
        std::bitset<64> AllowedUserModes;
@@ -233,7 +231,7 @@ class CoreExport ServerConfig
 
        /** Index of valid oper blocks and types
         */
-       typedef std::map<std::string, reference<OperInfo> > OperIndex;
+       typedef insp::flat_map<std::string, reference<OperInfo> > OperIndex;
 
        /** Get a configuration tag
         * @param tag The name of the tag to get
@@ -242,6 +240,9 @@ class CoreExport ServerConfig
 
        ConfigTagList ConfTags(const std::string& tag);
 
+       /** An empty configuration tag. */
+       ConfigTag* EmptyTag;
+
        /** Error stream, contains error output from any failed configuration parsing.
         */
        std::stringstream errstr;
@@ -467,6 +468,8 @@ class CoreExport ServerConfig
         */
        ServerConfig();
 
+       ~ServerConfig();
+
        /** Get server ID as string with required leading zeroes
         */
        const std::string& GetSID() const { return sid; }
@@ -492,10 +495,6 @@ class CoreExport ServerConfig
         */
        static std::string Escape(const std::string& str, bool xml = true);
 
-       /** If this value is true, invites will bypass more than just +i
-        */
-       bool InvBypassModes;
-
        /** If this value is true, snotices will not stack when repeats are sent
         */
        bool NoSnoticeStack;