00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
00030
00035 #ifndef OW_WQL_PROCESSOR_HPP_
00036 #define OW_WQL_PROCESSOR_HPP_
00037 #include "OW_config.h"
00038 #include "OW_WQLVisitor.hpp"
00039 #include "OW_CIMFwd.hpp"
00040 #include "OW_IntrusiveReference.hpp"
00041 #include "OW_IntrusiveCountableBase.hpp"
00042 #include "OW_CIMOMHandleIFC.hpp"
00043 #include "OW_CIMNameSpace.hpp"
00044 #include "OW_CIMInstance.hpp"
00045 #include "OW_CIMObjectPath.hpp"
00046 #include "OW_Array.hpp"
00047 #include "OW_Bool.hpp"
00048
00049
00050
00051
00052 namespace OW_NAMESPACE
00053 {
00054
00055 class OW_WQL_API WQLProcessor : public WQLVisitor
00056 {
00057 public:
00058 WQLProcessor(const CIMOMHandleIFCRef& hdl, const String& ns);
00059 virtual ~WQLProcessor()
00060 {
00061 }
00062 virtual void visit_stmt_selectStmt_optSemicolon(
00063 const stmt_selectStmt_optSemicolon* pstmt_selectStmt_optSemicolon
00064 );
00065 virtual void visit_stmt_updateStmt_optSemicolon(
00066 const stmt_updateStmt_optSemicolon* pstmt_updateStmt_optSemicolon
00067 );
00068 virtual void visit_stmt_insertStmt_optSemicolon(
00069 const stmt_insertStmt_optSemicolon* pstmt_insertStmt_optSemicolon
00070 );
00071 virtual void visit_stmt_deleteStmt_optSemicolon(
00072 const stmt_deleteStmt_optSemicolon* pstmt_deleteStmt_optSemicolon
00073 );
00074 virtual void visit_optSemicolon_empty(
00075 const optSemicolon_empty* poptSemicolon_empty
00076 );
00077 virtual void visit_optSemicolon_SEMICOLON(
00078 const optSemicolon_SEMICOLON* poptSemicolon_SEMICOLON
00079 );
00080 virtual void visit_insertStmt(
00081 const insertStmt* pinsertStmt
00082 );
00083 virtual void visit_insertRest_VALUES_LEFTPAREN_targetList_RIGHTPAREN(
00084 const insertRest_VALUES_LEFTPAREN_targetList_RIGHTPAREN* pinsertRest_VALUES_LEFTPAREN_targetList_RIGHTPAREN
00085 );
00086 virtual void visit_insertRest_DEFAULT_VALUES(
00087 const insertRest_DEFAULT_VALUES* pinsertRest_DEFAULT_VALUES
00088 );
00089 virtual void visit_insertRest_LEFTPAREN_columnList_RIGHTPAREN_VALUES_LEFTPAREN_targetList_RIGHTPAREN(
00090 const insertRest_LEFTPAREN_columnList_RIGHTPAREN_VALUES_LEFTPAREN_targetList_RIGHTPAREN* pinsertRest_LEFTPAREN_columnList_RIGHTPAREN_VALUES_LEFTPAREN_targetList_RIGHTPAREN
00091 );
00092 virtual void visit_deleteStmt(
00093 const deleteStmt* pdeleteStmt
00094 );
00095 virtual void visit_updateStmt(
00096 const updateStmt* pupdateStmt
00097 );
00098 virtual void visit_selectStmt(
00099 const selectStmt* pselectStmt
00100 );
00101 virtual void visit_exprSeq_aExpr(
00102 const exprSeq_aExpr* pexprSeq_aExpr
00103 );
00104 virtual void visit_exprSeq_exprSeq_COMMA_aExpr(
00105 const exprSeq_exprSeq_COMMA_aExpr* pexprSeq_exprSeq_COMMA_aExpr
00106 );
00107 virtual void visit_exprSeq_exprSeq_USING_aExpr(
00108 const exprSeq_exprSeq_USING_aExpr* pexprSeq_exprSeq_USING_aExpr
00109 );
00110 virtual void visit_optDistinct_empty(
00111 const optDistinct_empty* poptDistinct_empty
00112 );
00113 virtual void visit_optDistinct_DISTINCT(
00114 const optDistinct_DISTINCT* poptDistinct_DISTINCT
00115 );
00116 virtual void visit_optDistinct_DISTINCT_ON_LEFTPAREN_exprSeq_RIGHTPAREN(
00117 const optDistinct_DISTINCT_ON_LEFTPAREN_exprSeq_RIGHTPAREN* poptDistinct_DISTINCT_ON_LEFTPAREN_exprSeq_RIGHTPAREN
00118 );
00119 virtual void visit_optDistinct_ALL(
00120 const optDistinct_ALL* poptDistinct_ALL
00121 );
00122 virtual void visit_sortClause(
00123 const sortClause* psortClause
00124 );
00125 virtual void visit_optSortClause_empty(
00126 const optSortClause_empty* poptSortClause_empty
00127 );
00128 virtual void visit_optSortClause_sortClause(
00129 const optSortClause_sortClause* poptSortClause_sortClause
00130 );
00131 virtual void visit_sortby(
00132 const sortby* psortby
00133 );
00134 virtual void visit_optGroupClause_empty(
00135 const optGroupClause_empty* poptGroupClause_empty
00136 );
00137 virtual void visit_optGroupClause_GROUP_BY_exprSeq(
00138 const optGroupClause_GROUP_BY_exprSeq* poptGroupClause_GROUP_BY_exprSeq
00139 );
00140 virtual void visit_optHavingClause_empty(
00141 const optHavingClause_empty* poptHavingClause_empty
00142 );
00143 virtual void visit_optHavingClause_HAVING_aExpr(
00144 const optHavingClause_HAVING_aExpr* poptHavingClause_HAVING_aExpr
00145 );
00146 virtual void visit_optFromClause_empty(
00147 const optFromClause_empty* poptFromClause_empty
00148 );
00149 virtual void visit_optFromClause_FROM_fromList(
00150 const optFromClause_FROM_fromList* poptFromClause_FROM_fromList
00151 );
00152 virtual void visit_tableRef_relationExpr(
00153 const tableRef_relationExpr* ptableRef_relationExpr
00154 );
00155 virtual void visit_tableRef_relationExpr_aliasClause(
00156 const tableRef_relationExpr_aliasClause* ptableRef_relationExpr_aliasClause
00157 );
00158 virtual void visit_tableRef_joinedTable(
00159 const tableRef_joinedTable* ptableRef_joinedTable
00160 );
00161 virtual void visit_tableRef_LEFTPAREN_joinedTable_RIGHTPAREN_aliasClause(
00162 const tableRef_LEFTPAREN_joinedTable_RIGHTPAREN_aliasClause* ptableRef_LEFTPAREN_joinedTable_RIGHTPAREN_aliasClause
00163 );
00164 virtual void visit_joinedTable_LEFTPAREN_joinedTable_RIGHTPAREN(
00165 const joinedTable_LEFTPAREN_joinedTable_RIGHTPAREN* pjoinedTable_LEFTPAREN_joinedTable_RIGHTPAREN
00166 );
00167 virtual void visit_joinedTable_tableRef_CROSS_JOIN_tableRef(
00168 const joinedTable_tableRef_CROSS_JOIN_tableRef* pjoinedTable_tableRef_CROSS_JOIN_tableRef
00169 );
00170 virtual void visit_joinedTable_tableRef_UNIONJOIN_tableRef(
00171 const joinedTable_tableRef_UNIONJOIN_tableRef* pjoinedTable_tableRef_UNIONJOIN_tableRef
00172 );
00173 virtual void visit_joinedTable_tableRef_joinType_JOIN_tableRef_joinQual(
00174 const joinedTable_tableRef_joinType_JOIN_tableRef_joinQual* pjoinedTable_tableRef_joinType_JOIN_tableRef_joinQual
00175 );
00176 virtual void visit_joinedTable_tableRef_JOIN_tableRef_joinQual(
00177 const joinedTable_tableRef_JOIN_tableRef_joinQual* pjoinedTable_tableRef_JOIN_tableRef_joinQual
00178 );
00179 virtual void visit_joinedTable_tableRef_NATURAL_joinType_JOIN_tableRef(
00180 const joinedTable_tableRef_NATURAL_joinType_JOIN_tableRef* pjoinedTable_tableRef_NATURAL_joinType_JOIN_tableRef
00181 );
00182 virtual void visit_joinedTable_tableRef_NATURAL_JOIN_tableRef(
00183 const joinedTable_tableRef_NATURAL_JOIN_tableRef* pjoinedTable_tableRef_NATURAL_JOIN_tableRef
00184 );
00185 virtual void visit_aliasClause_AS_strColId_LEFTPAREN_nameList_RIGHTPAREN(
00186 const aliasClause_AS_strColId_LEFTPAREN_nameList_RIGHTPAREN* paliasClause_AS_strColId_LEFTPAREN_nameList_RIGHTPAREN
00187 );
00188 virtual void visit_aliasClause_AS_strColId(
00189 const aliasClause_AS_strColId* paliasClause_AS_strColId
00190 );
00191 virtual void visit_aliasClause_strColId_LEFTPAREN_nameList_RIGHTPAREN(
00192 const aliasClause_strColId_LEFTPAREN_nameList_RIGHTPAREN* paliasClause_strColId_LEFTPAREN_nameList_RIGHTPAREN
00193 );
00194 virtual void visit_aliasClause_strColId(
00195 const aliasClause_strColId* paliasClause_strColId
00196 );
00197 virtual void visit_joinType_FULL_strOptJoinOuter(
00198 const joinType_FULL_strOptJoinOuter* pjoinType_FULL_strOptJoinOuter
00199 );
00200 virtual void visit_joinType_LEFT_strOptJoinOuter(
00201 const joinType_LEFT_strOptJoinOuter* pjoinType_LEFT_strOptJoinOuter
00202 );
00203 virtual void visit_joinType_RIGHT_strOptJoinOuter(
00204 const joinType_RIGHT_strOptJoinOuter* pjoinType_RIGHT_strOptJoinOuter
00205 );
00206 virtual void visit_joinType_INNERP(
00207 const joinType_INNERP* pjoinType_INNERP
00208 );
00209 virtual void visit_joinQual_USING_LEFTPAREN_nameList_RIGHTPAREN(
00210 const joinQual_USING_LEFTPAREN_nameList_RIGHTPAREN* pjoinQual_USING_LEFTPAREN_nameList_RIGHTPAREN
00211 );
00212 virtual void visit_joinQual_ON_aExpr(
00213 const joinQual_ON_aExpr* pjoinQual_ON_aExpr
00214 );
00215 virtual void visit_relationExpr_strRelationName(
00216 const relationExpr_strRelationName* prelationExpr_strRelationName
00217 );
00218 virtual void visit_relationExpr_strRelationName_ASTERISK(
00219 const relationExpr_strRelationName_ASTERISK* prelationExpr_strRelationName_ASTERISK
00220 );
00221 virtual void visit_relationExpr_ONLY_strRelationName(
00222 const relationExpr_ONLY_strRelationName* prelationExpr_ONLY_strRelationName
00223 );
00224 virtual void visit_optWhereClause_empty(
00225 const optWhereClause_empty* poptWhereClause_empty
00226 );
00227 virtual void visit_optWhereClause_WHERE_aExpr(
00228 const optWhereClause_WHERE_aExpr* poptWhereClause_WHERE_aExpr
00229 );
00230 virtual void visit_rowExpr(
00231 const rowExpr* prowExpr
00232 );
00233 virtual void visit_rowDescriptor(
00234 const rowDescriptor* prowDescriptor
00235 );
00236 virtual void visit_aExpr_cExpr(
00237 const aExpr_cExpr* paExpr_cExpr
00238 );
00239 virtual void visit_aExpr_aExpr_AT_TIME_ZONE_cExpr(
00240 const aExpr_aExpr_AT_TIME_ZONE_cExpr* paExpr_aExpr_AT_TIME_ZONE_cExpr
00241 );
00242 virtual void visit_aExpr_PLUS_aExpr(
00243 const aExpr_PLUS_aExpr* paExpr_PLUS_aExpr
00244 );
00245 virtual void visit_aExpr_MINUS_aExpr(
00246 const aExpr_MINUS_aExpr* paExpr_MINUS_aExpr
00247 );
00248 virtual void visit_aExpr_BITINVERT_aExpr(
00249 const aExpr_BITINVERT_aExpr* paExpr_BITINVERT_aExpr
00250 );
00251 virtual void visit_aExpr_aExpr_PLUS_aExpr(
00252 const aExpr_aExpr_PLUS_aExpr* paExpr_aExpr_PLUS_aExpr
00253 );
00254 virtual void visit_aExpr_aExpr_MINUS_aExpr(
00255 const aExpr_aExpr_MINUS_aExpr* paExpr_aExpr_MINUS_aExpr
00256 );
00257 virtual void visit_aExpr_aExpr_ASTERISK_aExpr(
00258 const aExpr_aExpr_ASTERISK_aExpr* paExpr_aExpr_ASTERISK_aExpr
00259 );
00260 virtual void visit_aExpr_aExpr_SOLIDUS_aExpr(
00261 const aExpr_aExpr_SOLIDUS_aExpr* paExpr_aExpr_SOLIDUS_aExpr
00262 );
00263 virtual void visit_aExpr_aExpr_PERCENT_aExpr(
00264 const aExpr_aExpr_PERCENT_aExpr* paExpr_aExpr_PERCENT_aExpr
00265 );
00266 virtual void visit_aExpr_aExpr_BITAND_aExpr(
00267 const aExpr_aExpr_BITAND_aExpr* paExpr_aExpr_BITAND_aExpr
00268 );
00269 virtual void visit_aExpr_aExpr_BITOR_aExpr(
00270 const aExpr_aExpr_BITOR_aExpr* paExpr_aExpr_BITOR_aExpr
00271 );
00272 virtual void visit_aExpr_aExpr_BITSHIFTLEFT_aExpr(
00273 const aExpr_aExpr_BITSHIFTLEFT_aExpr* paExpr_aExpr_BITSHIFTLEFT_aExpr
00274 );
00275 virtual void visit_aExpr_aExpr_BITSHIFTRIGHT_aExpr(
00276 const aExpr_aExpr_BITSHIFTRIGHT_aExpr* paExpr_aExpr_BITSHIFTRIGHT_aExpr
00277 );
00278 virtual void visit_aExpr_aExpr_LESSTHAN_aExpr(
00279 const aExpr_aExpr_LESSTHAN_aExpr* paExpr_aExpr_LESSTHAN_aExpr
00280 );
00281 virtual void visit_aExpr_aExpr_LESSTHANOREQUALS_aExpr(
00282 const aExpr_aExpr_LESSTHANOREQUALS_aExpr* paExpr_aExpr_LESSTHANOREQUALS_aExpr
00283 );
00284 virtual void visit_aExpr_aExpr_GREATERTHAN_aExpr(
00285 const aExpr_aExpr_GREATERTHAN_aExpr* paExpr_aExpr_GREATERTHAN_aExpr
00286 );
00287 virtual void visit_aExpr_aExpr_GREATERTHANOREQUALS_aExpr(
00288 const aExpr_aExpr_GREATERTHANOREQUALS_aExpr* paExpr_aExpr_GREATERTHANOREQUALS_aExpr
00289 );
00290 virtual void visit_aExpr_aExpr_EQUALS_aExpr(
00291 const aExpr_aExpr_EQUALS_aExpr* paExpr_aExpr_EQUALS_aExpr
00292 );
00293 virtual void visit_aExpr_aExpr_NOTEQUALS_aExpr(
00294 const aExpr_aExpr_NOTEQUALS_aExpr* paExpr_aExpr_NOTEQUALS_aExpr
00295 );
00296 virtual void visit_aExpr_aExpr_AND_aExpr(
00297 const aExpr_aExpr_AND_aExpr* paExpr_aExpr_AND_aExpr
00298 );
00299 virtual void visit_aExpr_aExpr_OR_aExpr(
00300 const aExpr_aExpr_OR_aExpr* paExpr_aExpr_OR_aExpr
00301 );
00302 virtual void visit_aExpr_NOT_aExpr(
00303 const aExpr_NOT_aExpr* paExpr_NOT_aExpr
00304 );
00305 virtual void visit_aExpr_aExpr_CONCATENATION_aExpr(
00306 const aExpr_aExpr_CONCATENATION_aExpr* paExpr_aExpr_CONCATENATION_aExpr
00307 );
00308 virtual void visit_aExpr_aExpr_LIKE_aExpr(
00309 const aExpr_aExpr_LIKE_aExpr* paExpr_aExpr_LIKE_aExpr
00310 );
00311 virtual void visit_aExpr_aExpr_LIKE_aExpr_ESCAPE_aExpr(
00312 const aExpr_aExpr_LIKE_aExpr_ESCAPE_aExpr* paExpr_aExpr_LIKE_aExpr_ESCAPE_aExpr
00313 );
00314 virtual void visit_aExpr_aExpr_NOT_LIKE_aExpr(
00315 const aExpr_aExpr_NOT_LIKE_aExpr* paExpr_aExpr_NOT_LIKE_aExpr
00316 );
00317 virtual void visit_aExpr_aExpr_NOT_LIKE_aExpr_ESCAPE_aExpr(
00318 const aExpr_aExpr_NOT_LIKE_aExpr_ESCAPE_aExpr* paExpr_aExpr_NOT_LIKE_aExpr_ESCAPE_aExpr
00319 );
00320 virtual void visit_aExpr_aExpr_ISNULL(
00321 const aExpr_aExpr_ISNULL* paExpr_aExpr_ISNULL
00322 );
00323 virtual void visit_aExpr_aExpr_IS_NULLP(
00324 const aExpr_aExpr_IS_NULLP* paExpr_aExpr_IS_NULLP
00325 );
00326 virtual void visit_aExpr_aExpr_NOTNULL(
00327 const aExpr_aExpr_NOTNULL* paExpr_aExpr_NOTNULL
00328 );
00329 virtual void visit_aExpr_aExpr_IS_NOT_NULLP(
00330 const aExpr_aExpr_IS_NOT_NULLP* paExpr_aExpr_IS_NOT_NULLP
00331 );
00332 virtual void visit_aExpr_aExpr_IS_TRUEP(
00333 const aExpr_aExpr_IS_TRUEP* paExpr_aExpr_IS_TRUEP
00334 );
00335 virtual void visit_aExpr_aExpr_IS_NOT_FALSEP(
00336 const aExpr_aExpr_IS_NOT_FALSEP* paExpr_aExpr_IS_NOT_FALSEP
00337 );
00338 virtual void visit_aExpr_aExpr_IS_FALSEP(
00339 const aExpr_aExpr_IS_FALSEP* paExpr_aExpr_IS_FALSEP
00340 );
00341 virtual void visit_aExpr_aExpr_IS_NOT_TRUEP(
00342 const aExpr_aExpr_IS_NOT_TRUEP* paExpr_aExpr_IS_NOT_TRUEP
00343 );
00344 virtual void visit_aExpr_aExpr_ISA_aExpr(
00345 const aExpr_aExpr_ISA_aExpr* paExpr_aExpr_ISA_aExpr
00346 );
00347
00348 virtual void visit_aExpr_rowExpr(
00349 const aExpr_rowExpr* paExpr_rowExpr
00350 );
00351 virtual void visit_bExpr_cExpr(
00352 const bExpr_cExpr* pbExpr_cExpr
00353 );
00354 virtual void visit_bExpr_PLUS_bExpr(
00355 const bExpr_PLUS_bExpr* pbExpr_PLUS_bExpr
00356 );
00357 virtual void visit_bExpr_MINUS_bExpr(
00358 const bExpr_MINUS_bExpr* pbExpr_MINUS_bExpr
00359 );
00360 virtual void visit_bExpr_BITINVERT_bExpr(
00361 const bExpr_BITINVERT_bExpr* pbExpr_BITINVERT_bExpr
00362 );
00363 virtual void visit_bExpr_bExpr_PLUS_bExpr(
00364 const bExpr_bExpr_PLUS_bExpr* pbExpr_bExpr_PLUS_bExpr
00365 );
00366 virtual void visit_bExpr_bExpr_MINUS_bExpr(
00367 const bExpr_bExpr_MINUS_bExpr* pbExpr_bExpr_MINUS_bExpr
00368 );
00369 virtual void visit_bExpr_bExpr_ASTERISK_bExpr(
00370 const bExpr_bExpr_ASTERISK_bExpr* pbExpr_bExpr_ASTERISK_bExpr
00371 );
00372 virtual void visit_bExpr_bExpr_SOLIDUS_bExpr(
00373 const bExpr_bExpr_SOLIDUS_bExpr* pbExpr_bExpr_SOLIDUS_bExpr
00374 );
00375 virtual void visit_bExpr_bExpr_PERCENT_bExpr(
00376 const bExpr_bExpr_PERCENT_bExpr* pbExpr_bExpr_PERCENT_bExpr
00377 );
00378 virtual void visit_bExpr_bExpr_BITAND_bExpr(
00379 const bExpr_bExpr_BITAND_bExpr* pbExpr_bExpr_BITAND_bExpr
00380 );
00381 virtual void visit_bExpr_bExpr_BITOR_bExpr(
00382 const bExpr_bExpr_BITOR_bExpr* pbExpr_bExpr_BITOR_bExpr
00383 );
00384 virtual void visit_bExpr_bExpr_BITSHIFTLEFT_bExpr(
00385 const bExpr_bExpr_BITSHIFTLEFT_bExpr* pbExpr_bExpr_BITSHIFTLEFT_bExpr
00386 );
00387 virtual void visit_bExpr_bExpr_BITSHIFTRIGHT_bExpr(
00388 const bExpr_bExpr_BITSHIFTRIGHT_bExpr* pbExpr_bExpr_BITSHIFTRIGHT_bExpr
00389 );
00390 virtual void visit_bExpr_bExpr_LESSTHAN_bExpr(
00391 const bExpr_bExpr_LESSTHAN_bExpr* pbExpr_bExpr_LESSTHAN_bExpr
00392 );
00393 virtual void visit_bExpr_bExpr_LESSTHANOREQUALS_bExpr(
00394 const bExpr_bExpr_LESSTHANOREQUALS_bExpr* pbExpr_bExpr_LESSTHANOREQUALS_bExpr
00395 );
00396 virtual void visit_bExpr_bExpr_GREATERTHAN_bExpr(
00397 const bExpr_bExpr_GREATERTHAN_bExpr* pbExpr_bExpr_GREATERTHAN_bExpr
00398 );
00399 virtual void visit_bExpr_bExpr_GREATERTHANOREQUALS_bExpr(
00400 const bExpr_bExpr_GREATERTHANOREQUALS_bExpr* pbExpr_bExpr_GREATERTHANOREQUALS_bExpr
00401 );
00402 virtual void visit_bExpr_bExpr_EQUALS_bExpr(
00403 const bExpr_bExpr_EQUALS_bExpr* pbExpr_bExpr_EQUALS_bExpr
00404 );
00405 virtual void visit_bExpr_bExpr_NOTEQUALS_bExpr(
00406 const bExpr_bExpr_NOTEQUALS_bExpr* pbExpr_bExpr_NOTEQUALS_bExpr
00407 );
00408 virtual void visit_bExpr_bExpr_CONCATENATION_bExpr(
00409 const bExpr_bExpr_CONCATENATION_bExpr* pbExpr_bExpr_CONCATENATION_bExpr
00410 );
00411 virtual void visit_cExpr_attr(
00412 const cExpr_attr* pcExpr_attr
00413 );
00414 virtual void visit_cExpr_strColId_optIndirection(
00415 const cExpr_strColId_optIndirection* pcExpr_strColId_optIndirection
00416 );
00417 virtual void visit_cExpr_aExprConst(
00418 const cExpr_aExprConst* pcExpr_aExprConst
00419 );
00420 virtual void visit_cExpr_LEFTPAREN_aExpr_RIGHTPAREN(
00421 const cExpr_LEFTPAREN_aExpr_RIGHTPAREN* pcExpr_LEFTPAREN_aExpr_RIGHTPAREN
00422 );
00423 virtual void visit_cExpr_strFuncName_LEFTPAREN_RIGHTPAREN(
00424 const cExpr_strFuncName_LEFTPAREN_RIGHTPAREN* pcExpr_strFuncName_LEFTPAREN_RIGHTPAREN
00425 );
00426 virtual void visit_cExpr_strFuncName_LEFTPAREN_exprSeq_RIGHTPAREN(
00427 const cExpr_strFuncName_LEFTPAREN_exprSeq_RIGHTPAREN* pcExpr_strFuncName_LEFTPAREN_exprSeq_RIGHTPAREN
00428 );
00429 virtual void visit_cExpr_strFuncName_LEFTPAREN_ALL_exprSeq_RIGHTPAREN(
00430 const cExpr_strFuncName_LEFTPAREN_ALL_exprSeq_RIGHTPAREN* pcExpr_strFuncName_LEFTPAREN_ALL_exprSeq_RIGHTPAREN
00431 );
00432 virtual void visit_cExpr_strFuncName_LEFTPAREN_DISTINCT_exprSeq_RIGHTPAREN(
00433 const cExpr_strFuncName_LEFTPAREN_DISTINCT_exprSeq_RIGHTPAREN* pcExpr_strFuncName_LEFTPAREN_DISTINCT_exprSeq_RIGHTPAREN
00434 );
00435 virtual void visit_cExpr_strFuncName_LEFTPAREN_ASTERISK_RIGHTPAREN(
00436 const cExpr_strFuncName_LEFTPAREN_ASTERISK_RIGHTPAREN* pcExpr_strFuncName_LEFTPAREN_ASTERISK_RIGHTPAREN
00437 );
00438 virtual void visit_cExpr_CURRENTDATE(
00439 const cExpr_CURRENTDATE* pcExpr_CURRENTDATE
00440 );
00441 virtual void visit_cExpr_CURRENTTIME(
00442 const cExpr_CURRENTTIME* pcExpr_CURRENTTIME
00443 );
00444 virtual void visit_cExpr_CURRENTTIME_LEFTPAREN_ICONST_RIGHTPAREN(
00445 const cExpr_CURRENTTIME_LEFTPAREN_ICONST_RIGHTPAREN* pcExpr_CURRENTTIME_LEFTPAREN_ICONST_RIGHTPAREN
00446 );
00447 virtual void visit_cExpr_CURRENTTIMESTAMP(
00448 const cExpr_CURRENTTIMESTAMP* pcExpr_CURRENTTIMESTAMP
00449 );
00450 virtual void visit_cExpr_CURRENTTIMESTAMP_LEFTPAREN_ICONST_RIGHTPAREN(
00451 const cExpr_CURRENTTIMESTAMP_LEFTPAREN_ICONST_RIGHTPAREN* pcExpr_CURRENTTIMESTAMP_LEFTPAREN_ICONST_RIGHTPAREN
00452 );
00453 virtual void visit_cExpr_CURRENTUSER(
00454 const cExpr_CURRENTUSER* pcExpr_CURRENTUSER
00455 );
00456 virtual void visit_cExpr_SESSIONUSER(
00457 const cExpr_SESSIONUSER* pcExpr_SESSIONUSER
00458 );
00459 virtual void visit_cExpr_USER(
00460 const cExpr_USER* pcExpr_USER
00461 );
00462 virtual void visit_cExpr_EXTRACT_LEFTPAREN_optExtract_RIGHTPAREN(
00463 const cExpr_EXTRACT_LEFTPAREN_optExtract_RIGHTPAREN* pcExpr_EXTRACT_LEFTPAREN_optExtract_RIGHTPAREN
00464 );
00465 virtual void visit_cExpr_POSITION_LEFTPAREN_positionExpr_RIGHTPAREN(
00466 const cExpr_POSITION_LEFTPAREN_positionExpr_RIGHTPAREN* pcExpr_POSITION_LEFTPAREN_positionExpr_RIGHTPAREN
00467 );
00468 virtual void visit_cExpr_SUBSTRING_LEFTPAREN_optSubstrExpr_RIGHTPAREN(
00469 const cExpr_SUBSTRING_LEFTPAREN_optSubstrExpr_RIGHTPAREN* pcExpr_SUBSTRING_LEFTPAREN_optSubstrExpr_RIGHTPAREN
00470 );
00471 virtual void visit_cExpr_TRIM_LEFTPAREN_LEADING_trimExpr_RIGHTPAREN(
00472 const cExpr_TRIM_LEFTPAREN_LEADING_trimExpr_RIGHTPAREN* pcExpr_TRIM_LEFTPAREN_LEADING_trimExpr_RIGHTPAREN
00473 );
00474 virtual void visit_cExpr_TRIM_LEFTPAREN_TRAILING_trimExpr_RIGHTPAREN(
00475 const cExpr_TRIM_LEFTPAREN_TRAILING_trimExpr_RIGHTPAREN* pcExpr_TRIM_LEFTPAREN_TRAILING_trimExpr_RIGHTPAREN
00476 );
00477 virtual void visit_cExpr_TRIM_LEFTPAREN_trimExpr_RIGHTPAREN(
00478 const cExpr_TRIM_LEFTPAREN_trimExpr_RIGHTPAREN* pcExpr_TRIM_LEFTPAREN_trimExpr_RIGHTPAREN
00479 );
00480 virtual void visit_optIndirection_empty(
00481 const optIndirection_empty* poptIndirection_empty
00482 );
00483 virtual void visit_optIndirection_optIndirection_LEFTBRACKET_aExpr_RIGHTBRACKET(
00484 const optIndirection_optIndirection_LEFTBRACKET_aExpr_RIGHTBRACKET* poptIndirection_optIndirection_LEFTBRACKET_aExpr_RIGHTBRACKET
00485 );
00486 virtual void visit_optIndirection_optIndirection_LEFTBRACKET_aExpr_COLON_aExpr_RIGHTBRACKET(
00487 const optIndirection_optIndirection_LEFTBRACKET_aExpr_COLON_aExpr_RIGHTBRACKET* poptIndirection_optIndirection_LEFTBRACKET_aExpr_COLON_aExpr_RIGHTBRACKET
00488 );
00489 virtual void visit_optExtract_empty(
00490 const optExtract_empty* poptExtract_empty
00491 );
00492 virtual void visit_optExtract_strExtractArg_FROM_aExpr(
00493 const optExtract_strExtractArg_FROM_aExpr* poptExtract_strExtractArg_FROM_aExpr
00494 );
00495 virtual void visit_positionExpr_bExpr_IN_bExpr(
00496 const positionExpr_bExpr_IN_bExpr* ppositionExpr_bExpr_IN_bExpr
00497 );
00498 virtual void visit_positionExpr_empty(
00499 const positionExpr_empty* ppositionExpr_empty
00500 );
00501 virtual void visit_optSubstrExpr_empty(
00502 const optSubstrExpr_empty* poptSubstrExpr_empty
00503 );
00504 virtual void visit_optSubstrExpr_aExpr_substrFrom_substrFor(
00505 const optSubstrExpr_aExpr_substrFrom_substrFor* poptSubstrExpr_aExpr_substrFrom_substrFor
00506 );
00507 virtual void visit_optSubstrExpr_aExpr_substrFor_substrFrom(
00508 const optSubstrExpr_aExpr_substrFor_substrFrom* poptSubstrExpr_aExpr_substrFor_substrFrom
00509 );
00510 virtual void visit_optSubstrExpr_aExpr_substrFrom(
00511 const optSubstrExpr_aExpr_substrFrom* poptSubstrExpr_aExpr_substrFrom
00512 );
00513 virtual void visit_optSubstrExpr_aExpr_substrFor(
00514 const optSubstrExpr_aExpr_substrFor* poptSubstrExpr_aExpr_substrFor
00515 );
00516 virtual void visit_optSubstrExpr_exprSeq(
00517 const optSubstrExpr_exprSeq* poptSubstrExpr_exprSeq
00518 );
00519 virtual void visit_substrFrom(
00520 const substrFrom* psubstrFrom
00521 );
00522 virtual void visit_substrFor(
00523 const substrFor* psubstrFor
00524 );
00525 virtual void visit_trimExpr_aExpr_FROM_exprSeq(
00526 const trimExpr_aExpr_FROM_exprSeq* ptrimExpr_aExpr_FROM_exprSeq
00527 );
00528 virtual void visit_trimExpr_FROM_exprSeq(
00529 const trimExpr_FROM_exprSeq* ptrimExpr_FROM_exprSeq
00530 );
00531 virtual void visit_trimExpr_exprSeq(
00532 const trimExpr_exprSeq* ptrimExpr_exprSeq
00533 );
00534 virtual void visit_attr(
00535 const attr* pattr
00536 );
00537 virtual void visit_attrs_strAttrName(
00538 const attrs_strAttrName* pattrs_strAttrName
00539 );
00540 virtual void visit_attrs_attrs_PERIOD_strAttrName(
00541 const attrs_attrs_PERIOD_strAttrName* pattrs_attrs_PERIOD_strAttrName
00542 );
00543 virtual void visit_attrs_attrs_PERIOD_ASTERISK(
00544 const attrs_attrs_PERIOD_ASTERISK* pattrs_attrs_PERIOD_ASTERISK
00545 );
00546 virtual void visit_targetEl_aExpr_AS_strColLabel(
00547 const targetEl_aExpr_AS_strColLabel* ptargetEl_aExpr_AS_strColLabel
00548 );
00549 virtual void visit_targetEl_aExpr(
00550 const targetEl_aExpr* ptargetEl_aExpr
00551 );
00552 virtual void visit_targetEl_strRelationName_PERIOD_ASTERISK(
00553 const targetEl_strRelationName_PERIOD_ASTERISK* ptargetEl_strRelationName_PERIOD_ASTERISK
00554 );
00555 virtual void visit_targetEl_ASTERISK(
00556 const targetEl_ASTERISK* ptargetEl_ASTERISK
00557 );
00558 virtual void visit_updateTargetEl(
00559 const updateTargetEl* pupdateTargetEl
00560 );
00561 virtual void visit_aExprConst_ICONST(
00562 const aExprConst_ICONST* paExprConst_ICONST
00563 );
00564 virtual void visit_aExprConst_FCONST(
00565 const aExprConst_FCONST* paExprConst_FCONST
00566 );
00567 virtual void visit_aExprConst_SCONST(
00568 const aExprConst_SCONST* paExprConst_SCONST
00569 );
00570 virtual void visit_aExprConst_BITCONST(
00571 const aExprConst_BITCONST* paExprConst_BITCONST
00572 );
00573 virtual void visit_aExprConst_HEXCONST(
00574 const aExprConst_HEXCONST* paExprConst_HEXCONST
00575 );
00576 virtual void visit_aExprConst_TRUEP(
00577 const aExprConst_TRUEP* paExprConst_TRUEP
00578 );
00579 virtual void visit_aExprConst_FALSEP(
00580 const aExprConst_FALSEP* paExprConst_FALSEP
00581 );
00582 virtual void visit_aExprConst_NULLP(
00583 const aExprConst_NULLP* paExprConst_NULLP
00584 );
00585
00586 public:
00587 struct DataType
00588 {
00589 enum Type
00590 {
00591 CIMInstanceArrayType,
00592 StringType,
00593 IntType,
00594 RealType,
00595 BoolType,
00596 ColumnNameType,
00597 NullType,
00598 InvalidType
00599 };
00600 DataType()
00601 : type(InvalidType)
00602 {
00603 }
00604 DataType(const Type t)
00605 : type(t), cia(), str(), i(), r(), b()
00606 {
00607 }
00608 DataType(const String& s, const Type t)
00609 : type(t), cia(), str(s), i(), r(), b()
00610 {
00611 }
00612 DataType(const CIMInstanceArray& c)
00613 : type(CIMInstanceArrayType), cia(c), str(), i(), r(), b()
00614 {
00615 }
00616 DataType(const Int64& newInt)
00617 : type(IntType), cia(), str(), i(newInt), r(), b()
00618 {
00619 }
00620 DataType(const Bool& newBool)
00621 : type (BoolType), cia(), str(), i(), r(), b(newBool)
00622 {
00623 }
00624 DataType(const Real64& newReal)
00625 : type (RealType), cia(), str(), i(), r(newReal), b()
00626 {
00627 }
00628 Type type;
00629 CIMInstanceArray cia;
00630 String str;
00631 Int64 i;
00632 Real64 r;
00633 Bool b;
00634 };
00635 struct CompareImpl : public IntrusiveCountableBase
00636 {
00637 virtual bool operator()(const CIMValue& lhs, const CIMValue& rhs) const = 0;
00638 virtual const char* c_str() const = 0;
00639 virtual CompareImpl* reverseOrder() const = 0;
00640 };
00641 typedef IntrusiveReference<CompareImpl> CompareImplRef;
00642
00643 struct Equals : public CompareImpl
00644 {
00645 virtual bool operator()(const CIMValue& lhs, const CIMValue& rhs) const;
00646 virtual const char* c_str() const { return "="; }
00647 virtual CompareImpl* reverseOrder() const { return new Equals; }
00648 };
00649
00650 struct NotEquals : public CompareImpl
00651 {
00652 virtual bool operator()(const CIMValue& lhs, const CIMValue& rhs) const;
00653 virtual const char* c_str() const { return "<>"; }
00654 virtual CompareImpl* reverseOrder() const { return new NotEquals; }
00655 };
00656 struct GreaterThanOrEquals : public CompareImpl
00657 {
00658 virtual bool operator()(const CIMValue& lhs, const CIMValue& rhs) const;
00659 virtual const char* c_str() const { return ">="; }
00660 virtual CompareImpl* reverseOrder() const { return new LessThanOrEquals; }
00661 };
00662
00663 struct LessThanOrEquals : public CompareImpl
00664 {
00665 virtual bool operator()(const CIMValue& lhs, const CIMValue& rhs) const;
00666 virtual const char* c_str() const { return "<="; }
00667 virtual CompareImpl* reverseOrder() const { return new GreaterThanOrEquals; }
00668 };
00669 struct GreaterThan : public CompareImpl
00670 {
00671 virtual bool operator()(const CIMValue& lhs, const CIMValue& rhs) const;
00672 virtual const char* c_str() const { return ">"; }
00673 virtual CompareImpl* reverseOrder() const { return new LessThan; }
00674 };
00675
00676 struct LessThan : public CompareImpl
00677 {
00678 virtual bool operator()(const CIMValue& lhs, const CIMValue& rhs) const;
00679 virtual const char* c_str() const { return "<"; }
00680 virtual CompareImpl* reverseOrder() const { return new GreaterThan; }
00681 };
00682 class Compare
00683 {
00684 public:
00685 enum CompareTypes
00686 {
00687 EqualsType,
00688 NotEqualsType,
00689 GreaterThanOrEqualsType,
00690 LessThanOrEqualsType,
00691 GreaterThanType,
00692 LessThanType
00693 };
00694 Compare( const CompareTypes type )
00695 {
00696 switch (type)
00697 {
00698 case EqualsType:
00699 m_ref = CompareImplRef(new Equals);
00700 break;
00701 case NotEqualsType:
00702 m_ref = CompareImplRef(new NotEquals);
00703 break;
00704 case GreaterThanOrEqualsType:
00705 m_ref = CompareImplRef(new GreaterThanOrEquals);
00706 break;
00707 case LessThanOrEqualsType:
00708 m_ref = CompareImplRef(new LessThanOrEquals);
00709 break;
00710 case GreaterThanType:
00711 m_ref = CompareImplRef(new GreaterThan);
00712 break;
00713 case LessThanType:
00714 m_ref = CompareImplRef(new LessThan);
00715 break;
00716 }
00717 }
00718
00719 bool operator()(const CIMValue& lhs, const CIMValue& rhs) const
00720 {
00721 return m_ref->operator()(lhs, rhs);
00722 }
00723
00724 const char* c_str() const
00725 {
00726 return m_ref->c_str();
00727 }
00728
00729 Compare& reverseOrder()
00730 {
00731 m_ref = m_ref->reverseOrder();
00732 return *this;
00733 }
00734
00735 private:
00736 CompareImplRef m_ref;
00737 };
00738 public:
00739 CIMInstanceArray getInstances() const
00740 {
00741 return m_instances;
00742 }
00743
00744 private:
00745
00746 #ifdef OW_WIN32
00747 #pragma warning (push)
00748 #pragma warning (disable: 4251)
00749 #endif
00750
00751 CIMInstanceArray m_instances;
00752 DataType m_exprValue;
00753 Array<DataType> m_valueArray;
00754 CIMOMHandleIFCRef m_hdl;
00755 String m_ns;
00756 String m_tableRef;
00757 bool m_doingSelect;
00758 bool m_isSchemaQuery;
00759 StringArray m_propertyArray;
00760
00761 #ifdef OW_WIN32
00762 #pragma warning (pop)
00763 #endif
00764
00765 CIMInstanceArray filterInstancesOnPropertyValue(const String& propName, const CIMValue& val, const Compare& compare);
00766 void doComparison(const DataType& lhs, const DataType& rhs, const Compare& compare);
00767 void populateInstances(const String& className);
00768 void populateInstances();
00769 bool instanceIsDerivedFrom(const CIMInstance& inst,
00770 const String& className);
00771 bool classIsDerivedFrom(const String& cls,
00772 const String& className);
00773 };
00774
00775 OW_WQL_API bool CIMInstanceSortCriterion( const CIMInstance& lhs, const CIMInstance& rhs);
00776
00777 }
00778
00779 #endif