summaryrefslogtreecommitdiff
path: root/src/condparser.h
diff options
context:
space:
mode:
authorDongHun Kwak <dh0128.kwak@samsung.com>2021-10-15 10:45:59 +0900
committerDongHun Kwak <dh0128.kwak@samsung.com>2021-10-15 10:45:59 +0900
commit046aece77e373b5280b56bf871fa6e974d06e85d (patch)
tree629c4681a5158d26512b815623754b33165d8d23 /src/condparser.h
parentcccf3a7c7888ce7bd7a8f8d48a34c5474ad9feeb (diff)
downloaddoxygen-046aece77e373b5280b56bf871fa6e974d06e85d.tar.gz
doxygen-046aece77e373b5280b56bf871fa6e974d06e85d.tar.bz2
doxygen-046aece77e373b5280b56bf871fa6e974d06e85d.zip
Imported Upstream version 1.8.3upstream/1.8.3
Diffstat (limited to 'src/condparser.h')
-rw-r--r--src/condparser.h75
1 files changed, 75 insertions, 0 deletions
diff --git a/src/condparser.h b/src/condparser.h
new file mode 100644
index 0000000..74a05cf
--- /dev/null
+++ b/src/condparser.h
@@ -0,0 +1,75 @@
+#ifndef CONDPARSER_H
+#define CONDPARSER_H
+
+/**
+ * Copyright (C) 1997-2012 by Dimitri van Heesch.
+ *
+ * Permission to use, copy, modify, and distribute this software and its
+ * documentation under the terms of the GNU General Public License is hereby
+ * granted. No representations are made about the suitability of this software
+ * for any purpose. It is provided "as is" without express or implied warranty.
+ * See the GNU General Public License for more details.
+ *
+ * Documents produced by Doxygen are derivative works derived from the
+ * input used in their production; they are not affected by this license.
+ *
+ * C++ Expression parser for EXTABLED_SETIONS in Doxygen
+ *
+ * Features used:
+ * Operators:
+ * && AND operator
+ * || OR operator
+ * ! NOT operator
+ */
+
+#include <qcstring.h>
+
+class CondParser
+{
+ // public functions
+ public:
+ bool parse(const char *fileName,int lineNr,const char *expr);
+
+ // enumerations
+ private:
+ enum TOKENTYPE
+ {
+ NOTHING = -1,
+ DELIMITER,
+ VARIABLE,
+ UNKNOWN
+ };
+ enum OPERATOR_ID
+ {
+ UNKNOWN_OP = -1,
+ AND = 1,
+ OR,
+ NOT
+ };
+
+ // data
+ private:
+
+ QCString m_err; //!< error state
+ QCString m_expr; //!< holds the expression
+ const char *m_e; //!< points to a character in expr
+
+ QCString m_token; //!< holds the token
+ TOKENTYPE m_tokenType; //!< type of the token
+
+ // private functions
+ private:
+ void getToken();
+
+ bool parseLevel1();
+ bool parseLevel2();
+ bool parseLevel3();
+ bool parseVar();
+
+ bool evalOperator(const int opId, bool lhs, bool rhs);
+ bool evalVariable(const char *varName);
+ int getOperatorId(const QCString &opName);
+};
+
+#endif
+