\hypertarget{xbexpnode_8h_source}{}\doxysection{xbexpnode.\+h} \label{xbexpnode_8h_source}\index{/mnt/1Tdata/xbase/xbase64-\/4.1.4/src/include/xbexpnode.h@{/mnt/1Tdata/xbase/xbase64-\/4.1.4/src/include/xbexpnode.h}} \mbox{\hyperlink{xbexpnode_8h}{Go to the documentation of this file.}} \begin{DoxyCode}{0} \DoxyCodeLine{1 \textcolor{comment}{/* xbexpnode.h}} \DoxyCodeLine{2 \textcolor{comment}{}} \DoxyCodeLine{3 \textcolor{comment}{XBase64 Software Library}} \DoxyCodeLine{4 \textcolor{comment}{}} \DoxyCodeLine{5 \textcolor{comment}{Copyright (c) 1997,2003,2014,2022 Gary A Kunkel}} \DoxyCodeLine{6 \textcolor{comment}{}} \DoxyCodeLine{7 \textcolor{comment}{The xb64 software library is covered under the terms of the GPL Version 3, 2007 license.}} \DoxyCodeLine{8 \textcolor{comment}{}} \DoxyCodeLine{9 \textcolor{comment}{Email Contact:}} \DoxyCodeLine{10 \textcolor{comment}{}} \DoxyCodeLine{11 \textcolor{comment}{ XDB-\/devel@lists.sourceforge.net}} \DoxyCodeLine{12 \textcolor{comment}{ XDB-\/users@lists.sourceforge.net}} \DoxyCodeLine{13 \textcolor{comment}{}} \DoxyCodeLine{14 \textcolor{comment}{*/}} \DoxyCodeLine{15 } \DoxyCodeLine{16 } \DoxyCodeLine{17 \textcolor{preprocessor}{\#ifndef \_\_XB\_EXPNODE\_H\_\_}} \DoxyCodeLine{18 \textcolor{preprocessor}{\#define \_\_XB\_EXPNODE\_H\_\_}} \DoxyCodeLine{19 } \DoxyCodeLine{20 \textcolor{comment}{// \#ifdef CMAKE\_COMPILER\_IS\_GNUCC}} \DoxyCodeLine{21 \textcolor{comment}{// \#pragma interface}} \DoxyCodeLine{22 \textcolor{comment}{// \#endif}} \DoxyCodeLine{23 } \DoxyCodeLine{24 \textcolor{preprocessor}{\#ifdef XB\_EXPRESSION\_SUPPORT}} \DoxyCodeLine{25 } \DoxyCodeLine{26 } \DoxyCodeLine{27 \textcolor{keyword}{namespace }\mbox{\hyperlink{namespacexb}{xb}}\{} \DoxyCodeLine{28 } \DoxyCodeLine{29 \textcolor{comment}{//class XBDLLEXPORT xbDbf;}} \DoxyCodeLine{30 } \DoxyCodeLine{31 \textcolor{comment}{/************************************************************************/}} \DoxyCodeLine{33 } \DoxyCodeLine{46 \textcolor{keyword}{class }XBDLLEXPORT xbExpNode \{} \DoxyCodeLine{47 \textcolor{keyword}{public}:} \DoxyCodeLine{48 xbExpNode();} \DoxyCodeLine{49 xbExpNode( xbString \&sNodeText, \textcolor{keywordtype}{char} cReturnType, \textcolor{keywordtype}{char} cNodeType );} \DoxyCodeLine{50 xbExpNode( xbString \&sNodeText, \textcolor{keywordtype}{char} cNodeType );} \DoxyCodeLine{51 xbExpNode( \textcolor{keywordtype}{char} cNodeType );} \DoxyCodeLine{52 } \DoxyCodeLine{53 \textcolor{keyword}{virtual} \string~xbExpNode();} \DoxyCodeLine{54 xbInt16 AddChild( xbExpNode *n );} \DoxyCodeLine{55 xbExpNode *GetChild( xbUInt32 ulChildNo ) \textcolor{keyword}{const};} \DoxyCodeLine{56 xbUInt32 GetChildCnt() \textcolor{keyword}{const};} \DoxyCodeLine{57 xbUInt32 GetChildNo() \textcolor{keyword}{const};} \DoxyCodeLine{58 \mbox{\hyperlink{namespacexb_ab2eae4b4732466698a7fdd89d77ba53b}{xbDbf}} *GetDbf() \textcolor{keyword}{const};} \DoxyCodeLine{59 xbInt16 GetFieldNo() \textcolor{keyword}{const};} \DoxyCodeLine{60 xbExpNode *GetFirstNode();} \DoxyCodeLine{61 xbExpNode *GetNextNode() \textcolor{keyword}{const};} \DoxyCodeLine{62 \textcolor{keywordtype}{void} GetNodeText( xbString \&sNodeText ) \textcolor{keyword}{const};} \DoxyCodeLine{63 \textcolor{keywordtype}{char} GetNodeType() \textcolor{keyword}{const};} \DoxyCodeLine{64 xbExpNode *GetParent() \textcolor{keyword}{const};} \DoxyCodeLine{65 xbString \&GetStringResult();} \DoxyCodeLine{66 \mbox{\hyperlink{namespacexb_ab1a750481dd487f0d384aa1d200dff0f}{xbBool}} GetBoolResult() \textcolor{keyword}{const};} \DoxyCodeLine{67 \mbox{\hyperlink{namespacexb_a25f47b226ce924a5c78f97989b0744a2}{xbDouble}} GetNumericResult() \textcolor{keyword}{const};} \DoxyCodeLine{68 xbUInt32 GetResultLen() \textcolor{keyword}{const};} \DoxyCodeLine{69 xbExpNode *GetRightSibling() \textcolor{keyword}{const};} \DoxyCodeLine{70 \textcolor{keywordtype}{char} GetReturnType() \textcolor{keyword}{const};} \DoxyCodeLine{71 xbInt16 GetWeight() \textcolor{keyword}{const};} \DoxyCodeLine{72 \mbox{\hyperlink{namespacexb_ab1a750481dd487f0d384aa1d200dff0f}{xbBool}} HasRightSibling() \textcolor{keyword}{const};} \DoxyCodeLine{73 \mbox{\hyperlink{namespacexb_ab1a750481dd487f0d384aa1d200dff0f}{xbBool}} IsOperator() \textcolor{keyword}{const};} \DoxyCodeLine{74 \mbox{\hyperlink{namespacexb_ab1a750481dd487f0d384aa1d200dff0f}{xbBool}} IsUnaryOperator() \textcolor{keyword}{const};} \DoxyCodeLine{75 \textcolor{keywordtype}{void} RemoveLastChild();} \DoxyCodeLine{76 \textcolor{keywordtype}{void} SetResultLen( xbUInt32 ulResultLen );} \DoxyCodeLine{77 \textcolor{keywordtype}{void} SetDbfInfo( \mbox{\hyperlink{namespacexb_ab2eae4b4732466698a7fdd89d77ba53b}{xbDbf}} *dbf );} \DoxyCodeLine{78 \textcolor{keywordtype}{void} SetDbfInfo( \mbox{\hyperlink{namespacexb_ab2eae4b4732466698a7fdd89d77ba53b}{xbDbf}} *dbf, xbInt16 iFieldNo );} \DoxyCodeLine{79 \textcolor{keywordtype}{void} SetNodeText( xbString \&sNodeText );} \DoxyCodeLine{80 \textcolor{keywordtype}{void} SetNodeType( \textcolor{keywordtype}{char} cNodeType );} \DoxyCodeLine{81 \textcolor{keywordtype}{void} SetParent( xbExpNode *n );} \DoxyCodeLine{82 \textcolor{keywordtype}{void} SetResult( xbString \&sResult );} \DoxyCodeLine{83 \textcolor{keywordtype}{void} SetResult( xbDate \&dtResult );} \DoxyCodeLine{84 \textcolor{keywordtype}{void} SetResult( \mbox{\hyperlink{namespacexb_ab1a750481dd487f0d384aa1d200dff0f}{xbBool}} bResult );} \DoxyCodeLine{85 \textcolor{keywordtype}{void} SetResult( \mbox{\hyperlink{namespacexb_a25f47b226ce924a5c78f97989b0744a2}{xbDouble}} dResult );} \DoxyCodeLine{86 \textcolor{keywordtype}{void} SetReturnType( \textcolor{keywordtype}{char} cReturnType );} \DoxyCodeLine{87 \textcolor{keywordtype}{void} SetWeight( xbInt16 iWeight );} \DoxyCodeLine{88 } \DoxyCodeLine{89 \textcolor{preprocessor}{ \#ifdef XB\_DEBUG\_SUPPORT}} \DoxyCodeLine{90 \textcolor{keywordtype}{void} DumpNode( xbInt16 iOption ) \textcolor{keyword}{const}; \textcolor{comment}{// 0 = no children, 1 = and children}} \DoxyCodeLine{91 \textcolor{preprocessor}{ \#endif}} \DoxyCodeLine{92 } \DoxyCodeLine{93 \textcolor{keyword}{private}:} \DoxyCodeLine{94 xbString sNodeText; \textcolor{comment}{// expression text}} \DoxyCodeLine{95 \textcolor{keywordtype}{char} cReturnType; \textcolor{comment}{// one of: XB\_EXP\_CHAR, XB\_EXP\_DATE, XB\_EXP\_LOGICAL, XB\_EXP\_NUMERIC}} \DoxyCodeLine{96 \textcolor{keywordtype}{char} cNodeType; \textcolor{comment}{// one of: XB\_EXP\_CONSTANT, XB\_EXP\_FUNCTION, XB\_EXP\_FIELD, XB\_EXP\_OPERATOR}} \DoxyCodeLine{97 xbString sResult; \textcolor{comment}{// char result, and operator}} \DoxyCodeLine{98 \mbox{\hyperlink{namespacexb_a25f47b226ce924a5c78f97989b0744a2}{xbDouble}} dResult; \textcolor{comment}{// numeric and bool results}} \DoxyCodeLine{99 xbExpNode * nParent; \textcolor{comment}{// pointer to parent}} \DoxyCodeLine{100 xbLinkList llChildren; \textcolor{comment}{// linked list of descendent nodes}} \DoxyCodeLine{101 \mbox{\hyperlink{namespacexb_ab2eae4b4732466698a7fdd89d77ba53b}{xbDbf}} *dbf; \textcolor{comment}{// pointer to dbf, used for field, RECNO() and RECCOUNT()}} \DoxyCodeLine{102 xbInt16 iFieldNo; \textcolor{comment}{// field no if DBF field}} \DoxyCodeLine{103 xbUInt32 ulResultLen; \textcolor{comment}{// for string results, accumulated length of character operations}} \DoxyCodeLine{104 \textcolor{comment}{// includes the sum of all nodes under this + this}} \DoxyCodeLine{105 \textcolor{comment}{// date = 8, numeric = 4, logical = 1}} \DoxyCodeLine{106 xbInt16 iWeight; \textcolor{comment}{// used for building the tree of nodes, assigned to operators}} \DoxyCodeLine{107 \textcolor{comment}{// the higher the number, the lower it goes on the tree}} \DoxyCodeLine{108 } \DoxyCodeLine{109 \};} \DoxyCodeLine{110 } \DoxyCodeLine{111 \textcolor{comment}{/************************************************************************/}} \DoxyCodeLine{112 } \DoxyCodeLine{113 \textcolor{comment}{/* Expression handler */}} \DoxyCodeLine{114 } \DoxyCodeLine{115 } \DoxyCodeLine{116 \};} \DoxyCodeLine{117 \textcolor{preprocessor}{\#endif }\textcolor{comment}{// XB\_EXPRESSION\_SUPPORT}} \DoxyCodeLine{118 \textcolor{preprocessor}{\#endif }\textcolor{comment}{// \_\_XB\_EXP\_H\_\_}} \DoxyCodeLine{119 } \DoxyCodeLine{120 } \end{DoxyCode}