aboutsummaryrefslogtreecommitdiff
path: root/src/shared/Config/dotconfpp/dotconfpp.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/shared/Config/dotconfpp/dotconfpp.h')
-rw-r--r--src/shared/Config/dotconfpp/dotconfpp.h18
1 files changed, 18 insertions, 0 deletions
diff --git a/src/shared/Config/dotconfpp/dotconfpp.h b/src/shared/Config/dotconfpp/dotconfpp.h
index 687753eb807..51455854ee7 100644
--- a/src/shared/Config/dotconfpp/dotconfpp.h
+++ b/src/shared/Config/dotconfpp/dotconfpp.h
@@ -1,17 +1,24 @@
+
#ifndef DOTCONFPP_H
#define DOTCONFPP_H
+
#include <list>
+
#include <stdarg.h>
#include <stdio.h>
#include <string.h>
#include <ctype.h>
#include <errno.h>
+
#include <sys/types.h>
#include <sys/stat.h>
+
#include "mempool.h"
+
class DOTCONFDocument;
+
class DOTCONFDocumentNode
{
friend class DOTCONFDocument;
@@ -27,12 +34,16 @@ private:
int lineNum;
char * fileName;
bool closed;
+
void pushValue(char * _value);
+
public:
DOTCONFDocumentNode();
~DOTCONFDocumentNode();
+
const char * getConfigurationFileName()const { return fileName; }
int getConfigurationLineNumber() const { return lineNum; }
+
const DOTCONFDocumentNode * getNextNode() const { return nextNode; }
const DOTCONFDocumentNode * getPreviuosNode() const { return previousNode; }
const DOTCONFDocumentNode * getParentNode() const { return parentNode; }
@@ -41,6 +52,7 @@ public:
const char * getName() const { return name; }
const DOTCONFDocument * getDocument() const { return document; }
};
+
class DOTCONFDocument
{
public:
@@ -59,6 +71,7 @@ private:
char * fileName;
std::list<char*> words;
int (*cmp_func)(const char *, const char *);
+
int checkRequiredOptions();
int parseLine();
int parseFile(DOTCONFDocumentNode * _parent = NULL);
@@ -66,15 +79,20 @@ private:
int cleanupLine(char * line);
char * getSubstitution(char * macro, int lineNum);
int macroSubstitute(DOTCONFDocumentNode * tagNode, int valueIndex);
+
protected:
virtual void error(int lineNum, const char * fileName, const char * fmt, ...) ATTR_PRINTF(4,5);
+
public:
DOTCONFDocument(CaseSensitive caseSensitivity = CASESENSETIVE);
virtual ~DOTCONFDocument();
+
int setContent(const char * _fileName);
+
void setRequiredOptionNames(const char ** requiredOptionNames);
const DOTCONFDocumentNode * getFirstNode() const;
const DOTCONFDocumentNode * findNode(const char * nodeName, const DOTCONFDocumentNode * parentNode = NULL, const DOTCONFDocumentNode * startNode = NULL) const;
};
+
#endif