1 martin 1.10 //%LICENSE////////////////////////////////////////////////////////////////
|
2 martin 1.11 //
|
3 martin 1.10 // Licensed to The Open Group (TOG) under one or more contributor license
4 // agreements. Refer to the OpenPegasusNOTICE.txt file distributed with
5 // this work for additional information regarding copyright ownership.
6 // Each contributor licenses this file to you under the OpenPegasus Open
7 // Source License; you may not use this file except in compliance with the
8 // License.
|
9 martin 1.11 //
|
10 martin 1.10 // Permission is hereby granted, free of charge, to any person obtaining a
11 // copy of this software and associated documentation files (the "Software"),
12 // to deal in the Software without restriction, including without limitation
13 // the rights to use, copy, modify, merge, publish, distribute, sublicense,
14 // and/or sell copies of the Software, and to permit persons to whom the
15 // Software is furnished to do so, subject to the following conditions:
|
16 martin 1.11 //
|
17 martin 1.10 // The above copyright notice and this permission notice shall be included
18 // in all copies or substantial portions of the Software.
|
19 martin 1.11 //
|
20 martin 1.10 // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
|
21 martin 1.11 // OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
22 martin 1.10 // MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
23 // IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
24 // CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
25 // TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
26 // SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
27 martin 1.11 //
|
28 martin 1.10 //////////////////////////////////////////////////////////////////////////
|
29 chuck 1.2 //%/////////////////////////////////////////////////////////////////////////////
30
31 #ifndef Pegasus_CQLChainedIdentifier_h
32 #define Pegasus_CQLChainedIdentifier_h
33
34 #include <Pegasus/CQL/Linkage.h>
35 //#include <Pegasus/Common/Array.h>
36 #include <Pegasus/Common/ArrayInternal.h>
37 #include <Pegasus/Query/QueryCommon/QueryChainedIdentifier.h>
38 #include <Pegasus/CQL/CQLIdentifier.h>
39
40 #ifdef PEGASUS_USE_EXPERIMENTAL_INTERFACES
41
|
42 kumpf 1.12 PEGASUS_NAMESPACE_BEGIN
|
43 mike 1.8 class CQLFactory;
44 class CQLChainedIdentifierRep;
|
45 chuck 1.2
|
46 kumpf 1.12 /**
|
47 chuck 1.2 CQLChainedIdentifier class is used for parsing (not resolving)
|
48 kumpf 1.12 the identifier portion of a CQL select statement.
|
49 chuck 1.2 A couple examples of a CQLIdentifier:
50
51 Class.EmbeddedObject.Property[3]
52 Class.Property#'OK'
53
54
55 The CQLChainedIdentifier class can parse and return each
56 section of a CQL identifier. The possible sections are:
57
58 class (optional)
59 zero or more embedded objects
60 property
61
62 Note: this must handle wildcard("*"), embedded objects, arrays, symbolic
63 constants, etc.
|
64 karl 1.9 */
|
65 chuck 1.2 class PEGASUS_CQL_LINKAGE CQLChainedIdentifier : public QueryChainedIdentifier
66 {
67 public:
68
69 CQLChainedIdentifier();
|
70 kumpf 1.12 /**
71 Constructor
|
72 humberto 1.3 Parses the string into the various components of a CQL identifier.
|
73 karl 1.9 @param - inString. The raw string to be parsed into a
74 CQLChainedIdentifier
|
75 humberto 1.3 @return - None.
76 @throws - None.
77 */
|
78 aruran.ms 1.6 CQLChainedIdentifier(const String& inString);
|
79 kumpf 1.12
80 /**
|
81 karl 1.9 The constructor for a CQLChainedIdentifier object.
82
|
83 humberto 1.3 @param - id. The CQLIdentifier to construct this object with.
84 @return - None.
85 @throws - None.
86 */
|
87 chuck 1.2 CQLChainedIdentifier(const CQLIdentifier & id);
|
88 kumpf 1.12
|
89 humberto 1.3 /**
90 Copy Constructor
|
91 karl 1.9
92 @param - cid. The CQLChainedIdentifier to construct this object with.
|
93 humberto 1.3 @return - None.
94 @throws - None.
95 */
|
96 chuck 1.2 CQLChainedIdentifier(const CQLChainedIdentifier& cid);
97
|
98 humberto 1.3 /**
99 Destructor
|
100 karl 1.9
|
101 humberto 1.3 @param - None.
102 @return - None.
103 @throws - None.
104 */
|
105 chuck 1.2 ~CQLChainedIdentifier();
106
|
107 humberto 1.3 /**
108 Opertor=
|
109 karl 1.9
|
110 humberto 1.3 @param - rhs. Right hand side of assignement operator.
111 @return - *this.
112 @throws - None.
113 */
|
114 chuck 1.2 CQLChainedIdentifier& operator=(const CQLChainedIdentifier& rhs);
115
|
116 humberto 1.3 /**
117 Operator[]. Allows indexed access into the CQLChainedIdentifier
|
118 karl 1.9
|
119 humberto 1.3 @param - index. Location of data within the CQLChainedIdentifier
|
120 karl 1.9 @return - CQLIdentifier. returns CQLIdentifer() if index is
121 out of bounds.
|
122 humberto 1.3 @throws - None.
123 */
|
124 chuck 1.2 CQLIdentifier operator[](Uint32 index)const;
125
|
126 humberto 1.3 /**
127 Gets all of the CQLIdentifiers within the CQLChainedIdentifier
|
128 karl 1.9
|
129 humberto 1.3 @param - None.
130 @return - Array<CQLIdentifier>.
131 @throws - None.
132 */
|
133 chuck 1.2 Array<CQLIdentifier> getSubIdentifiers()const;
134
|
135 humberto 1.3 /**
136 Gets the last CQLIdentifier in this objects Array of CQLIdentifiers
|
137 karl 1.9
|
138 humberto 1.3 @param - None.
139 @return - CQLIdentifier.
140 @throws - None.
141 */
|
142 chuck 1.2 CQLIdentifier getLastIdentifier()const;
|
143 kumpf 1.12
|
144 chuck 1.2 friend class CQLFactory;
145
146 private:
147
148 };
149
150 /*
151 #ifndef PEGASUS_ARRAY_T
152 #define PEGASUS_ARRAY_T CQLChainedIdentifier
153 #include <Pegasus/Common/ArrayInter.h>
154 #undef PEGASUS_ARRAY_T
155 #endif
156 */
157
158 PEGASUS_NAMESPACE_END
159 #endif
160 #endif /* Pegasus_CQLChainedIdentifier_h */
|