mirror of
https://github.com/inspircd/inspircd.git
synced 2025-03-10 02:59:01 -04:00
Make ConfigTag::items private
git-svn-id: http://svn.inspircd.org/repository/trunk/inspircd@11956 e03df62e-2008-0410-955e-edbf42e46eb7
This commit is contained in:
parent
4663fd393f
commit
efc75198de
@ -37,24 +37,39 @@ typedef std::vector<std::string> file_cache;
|
||||
*/
|
||||
typedef std::pair<std::string, std::string> KeyVal;
|
||||
|
||||
struct CoreExport ConfigTag : public refcountbase
|
||||
/** Structure representing a single <tag> in config */
|
||||
class CoreExport ConfigTag : public refcountbase
|
||||
{
|
||||
std::vector<KeyVal> items;
|
||||
public:
|
||||
const std::string tag;
|
||||
const std::string src_name;
|
||||
const int src_line;
|
||||
std::vector<KeyVal> items;
|
||||
|
||||
ConfigTag(const std::string& Tag, const std::string& file, int line)
|
||||
: tag(Tag), src_name(file), src_line(line) {}
|
||||
|
||||
/** Get the value of an option, using def if it does not exist */
|
||||
std::string getString(const std::string& key, const std::string& def = "");
|
||||
/** Get the value of an option, using def if it does not exist */
|
||||
long getInt(const std::string& key, long def = 0);
|
||||
/** Get the value of an option, using def if it does not exist */
|
||||
double getFloat(const std::string& key, double def = 0);
|
||||
/** Get the value of an option, using def if it does not exist */
|
||||
bool getBool(const std::string& key, bool def = false);
|
||||
|
||||
/** Get the value of an option
|
||||
* @param key The option to get
|
||||
* @param value The location to store the value (unmodified if does not exist)
|
||||
* @param allow_newline Allow newlines in the option (normally replaced with spaces)
|
||||
* @return true if the option exists
|
||||
*/
|
||||
bool readString(const std::string& key, std::string& value, bool allow_newline = false);
|
||||
|
||||
std::string getTagLocation();
|
||||
|
||||
/** Create a new ConfigTag, giving access to the private KeyVal item list */
|
||||
static ConfigTag* create(const std::string& Tag, const std::string& file, int line,
|
||||
std::vector<KeyVal>*&items);
|
||||
private:
|
||||
ConfigTag(const std::string& Tag, const std::string& file, int line);
|
||||
};
|
||||
|
||||
/** An entire config file, built up of KeyValLists
|
||||
|
@ -131,7 +131,7 @@ namespace irc
|
||||
}
|
||||
}
|
||||
|
||||
struct ConfigTag;
|
||||
class ConfigTag;
|
||||
/** This class handles incoming connections on client ports.
|
||||
* It will create a new User for every valid connection
|
||||
* and assign it a file descriptor.
|
||||
|
@ -59,7 +59,7 @@ enum RegistrationState {
|
||||
/* Required forward declaration */
|
||||
class Channel;
|
||||
class UserResolver;
|
||||
struct ConfigTag;
|
||||
class ConfigTag;
|
||||
class OperInfo;
|
||||
|
||||
/** Holds information relevent to <connect allow> and <connect deny> tags in the config file.
|
||||
|
@ -84,7 +84,7 @@ struct Parser
|
||||
unget(ch);
|
||||
}
|
||||
|
||||
bool kv()
|
||||
bool kv(std::vector<KeyVal>* items)
|
||||
{
|
||||
std::string key;
|
||||
nextword(key);
|
||||
@ -138,7 +138,7 @@ struct Parser
|
||||
break;
|
||||
value.push_back(ch);
|
||||
}
|
||||
tag->items.push_back(KeyVal(key, value));
|
||||
items->push_back(KeyVal(key, value));
|
||||
return true;
|
||||
}
|
||||
|
||||
@ -157,9 +157,10 @@ struct Parser
|
||||
if (name.empty())
|
||||
throw CoreException("Empty tag name");
|
||||
|
||||
tag = new ConfigTag(name, current.filename, current.line);
|
||||
std::vector<KeyVal>* items;
|
||||
tag = ConfigTag::create(name, current.filename, current.line, items);
|
||||
|
||||
while (kv());
|
||||
while (kv(items));
|
||||
|
||||
if (name == "include")
|
||||
{
|
||||
@ -376,6 +377,18 @@ std::string ConfigTag::getTagLocation()
|
||||
return src_name + ":" + ConvToStr(src_line);
|
||||
}
|
||||
|
||||
ConfigTag* ConfigTag::create(const std::string& Tag, const std::string& file, int line, std::vector<KeyVal>*&items)
|
||||
{
|
||||
ConfigTag* rv = new ConfigTag(Tag, file, line);
|
||||
items = &rv->items;
|
||||
return rv;
|
||||
}
|
||||
|
||||
ConfigTag::ConfigTag(const std::string& Tag, const std::string& file, int line)
|
||||
: tag(Tag), src_name(file), src_line(line)
|
||||
{
|
||||
}
|
||||
|
||||
std::string OperInfo::getConfig(const std::string& key)
|
||||
{
|
||||
std::string rv;
|
||||
|
Loading…
x
Reference in New Issue
Block a user