1 humberto 1.1 #ifndef Pegasus_CQLFactor_h
2 #define Pegasus_CQLFactor_h
3
4 #include <Pegasus/Common/Config.h>
5 #include <Pegasus/CQL/CQLValue.h>
6 #include <Pegasus/CQL/Linkage.h>
7 #include <Pegasus/CQL/CQLScope.h>
8 #include <Pegasus/CQL/CQLExpression.h>
9
10
11 PEGASUS_NAMESPACE_BEGIN
12
13 class PEGASUS_CQL_LINKAGE CQLFactory;
14 /*
15 CQLFunction objects are populated by the
16 Bison code.
17
18 Supported functions are in accordance with the
19 DMTF CQL Specification.
20 TODO: THIS LIST IS SUBJECT TO CHANGE
21
22 humberto 1.1 classname( <expr> )
23 classname( )
24 count(*)
25 count( distinct * )
26 count( distinct <expr> )
27 something for createarray
28 something for datetime
29 something for hostname
30 max( <expr> )
31 mean( <expr> )
32 median( <expr> )
33 min( <expr> )
34 something for modelpath
35 something for namespacename
36 something for namespacepath
37 something for objectpath
38 something for scheme
39 sum( <expr> )
40 something for userinfo
41 uppercase( <expr> )
42
43 humberto 1.1 */
44
45
46 class PEGASUS_CQL_LINKAGE CQLFunctionRep
47 {
48 public:
49
50
51 CQLFunctionRep() {};
52 CQLFunctionRep(const CQLFunctionRep& inFunc);
53 CQLFunctionRep(FunctionOpType inFunctionOpType, Array<CQLExpression> inParms);
54 ~CQLFunctionRep();
55 /**
56 The getValue method validates the parms versus FunctionOpType.
57 (A) resolves prarameter types
58 (B) number of parms
59 and then actually executes the function.
60 Returns a CQLValue object that has already been resolved.
61 */
62 CQLValue resolveValue(CIMInstance CI, QueryContext& queryCtx);
63 Array<CQLExpression> getParms();
64 humberto 1.1 FunctionOpType getFunctionType();
65 String toString();
66 void applyScopes(Array<CQLScope> inScopes);
67 Boolean operator==(const CQLFunctionRep& func);
68 Boolean operator!=(const CQLFunctionRep& func);
69 friend class CQLFactory;
70
71 private:
72
73 FunctionOpType _funcOpType;
74
75 Array<CQLExpression> _parms;
76
77 };
78
79 PEGASUS_NAMESPACE_END
80
81 #endif
|