📄 cqlfactory.cpp
字号:
//%2006//////////////////////////////////////////////////////////////////////////// Copyright (c) 2000, 2001, 2002 BMC Software; Hewlett-Packard Development// Company, L.P.; IBM Corp.; The Open Group; Tivoli Systems.// Copyright (c) 2003 BMC Software; Hewlett-Packard Development Company, L.P.;// IBM Corp.; EMC Corporation, The Open Group.// Copyright (c) 2004 BMC Software; Hewlett-Packard Development Company, L.P.;// IBM Corp.; EMC Corporation; VERITAS Software Corporation; The Open Group.// Copyright (c) 2005 Hewlett-Packard Development Company, L.P.; IBM Corp.;// EMC Corporation; VERITAS Software Corporation; The Open Group.// Copyright (c) 2006 Hewlett-Packard Development Company, L.P.; IBM Corp.;// EMC Corporation; Symantec Corporation; The Open Group.//// Permission is hereby granted, free of charge, to any person obtaining a copy// of this software and associated documentation files (the "Software"), to// deal in the Software without restriction, including without limitation the// rights to use, copy, modify, merge, publish, distribute, sublicense, and/or// sell copies of the Software, and to permit persons to whom the Software is// furnished to do so, subject to the following conditions:// // THE ABOVE COPYRIGHT NOTICE AND THIS PERMISSION NOTICE SHALL BE INCLUDED IN// ALL COPIES OR SUBSTANTIAL PORTIONS OF THE SOFTWARE. THE SOFTWARE IS PROVIDED// "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT// LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR// PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT// HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN// ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.////==============================================================================//// Authors: David Rosckes (rosckes@us.ibm.com)// Bert Rivero (hurivero@us.ibm.com)// Chuck Carmack (carmack@us.ibm.com)// Brian Lucier (lucier@us.ibm.com)//// Modified By: ////%/////////////////////////////////////////////////////////////////////////////#include "CQLFactory.h"#include "CQLValueRep.h"#include "CQLFactorRep.h"#include "CQLSimplePredicateRep.h"#include "CQLPredicateRep.h"#include "CQLExpressionRep.h"#include "CQLTermRep.h"#include <Pegasus/Common/Tracer.h>PEGASUS_NAMESPACE_BEGINCQLOBJECTPTR _CQLObjectPtr;/*#define PEGASUS_ARRAY_T CQLObjectPtr#include <Pegasus/Common/ArrayImpl.h>#undef PEGASUS_ARRAY_T*//*CQLFactory::CQLFactory(){}*/CQLFactory::~CQLFactory(){ cleanup();}void CQLFactory::cleanup(){PEG_METHOD_ENTER(TRC_CQL, "CQLFactory::cleanup"); cleanupArray(_makeObjectIdentifiers, Identifier); cleanupArray(_makeObjectChainedIdentifiers, ChainedIdentifier); cleanupArray(_makeObjectValues, Value); cleanupArray(_makeObjectFunctions, Function); cleanupArray(_makeObjectFactors, Factor); cleanupArray(_makeObjectTerms, Term); cleanupArray(_makeObjectExpressions, Expression); cleanupArray(_makeObjectSimplePredicates, SimplePredicate); cleanupArray(_makeObjectPredicates, Predicate); cleanupArray(_getObjectIdentifiers, Identifier); cleanupArray(_getObjectChainedIdentifiers, ChainedIdentifier); cleanupArray(_getObjectValues, Value); cleanupArray(_getObjectFunctions, Function); cleanupArray(_getObjectFactors, Factor); cleanupArray(_getObjectTerms, Term); cleanupArray(_getObjectExpressions, Expression); cleanupArray(_getObjectSimplePredicates, SimplePredicate); cleanupArray(_getObjectPredicates, Predicate);PEG_METHOD_EXIT();}void CQLFactory::cleanupArray(Array<CQLObjectPtr>& arr, FactoryType type){ for(Uint32 i=0;i < arr.size(); i++){ if(arr[i]._ptr){ switch(type){ case Predicate: delete (CQLPredicate*)(arr[i]._ptr); break; case SimplePredicate: delete (CQLSimplePredicate*)(arr[i]._ptr); break; case Expression: delete (CQLExpression*)(arr[i]._ptr); break; case Term: delete (CQLTerm*)(arr[i]._ptr); break; case Factor: delete (CQLFactor*)(arr[i]._ptr); break; case Function: delete (CQLFunction*)(arr[i]._ptr); break; case Value: delete (CQLValue*)(arr[i]._ptr); break; case ChainedIdentifier: delete (CQLChainedIdentifier*)(arr[i]._ptr); break; case Identifier: delete (CQLIdentifier*)(arr[i]._ptr); break; } } }}void* CQLFactory::makeObject(CQLIdentifier* obj, FactoryType target){ //printf("CQLFactory::makeObject(identifier)\n");PEG_METHOD_ENTER(TRC_CQL, "CQLFactory::makeObject,CQLIdentifier"); _CQLObjectPtr._ptr = new CQLChainedIdentifier(*obj); _makeObjectChainedIdentifiers.append(_CQLObjectPtr); switch(target){ case ChainedIdentifier: return _makeObjectChainedIdentifiers[_makeObjectChainedIdentifiers.size()-1]._ptr; break; case Identifier: return NULL; break; default: return makeObject((CQLChainedIdentifier*)(_CQLObjectPtr._ptr), target); break; }PEG_METHOD_EXIT();}void* CQLFactory::makeObject(CQLChainedIdentifier* obj, FactoryType target){//printf("CQLFactory::makeObject(chainedidentifier)\n");PEG_METHOD_ENTER(TRC_CQL, "CQLFactory::makeObject,CQLChainedIdentifier"); _CQLObjectPtr._ptr = new CQLValue(*obj); CQLValue* _val = (CQLValue*)_CQLObjectPtr._ptr; _makeObjectValues.append(_CQLObjectPtr); switch(target){ case Value: return _makeObjectValues[_makeObjectValues.size()-1]._ptr; break; case ChainedIdentifier: return NULL; break; default: return makeObject((CQLValue*)(_CQLObjectPtr._ptr), target); break; }PEG_METHOD_EXIT();}void* CQLFactory::makeObject(CQLValue* obj, FactoryType target){//printf("CQLFactory::makeObject(value)\n");PEG_METHOD_ENTER(TRC_CQL, "CQLFactory::makeObject,CQLValue"); _CQLObjectPtr._ptr = new CQLFactor(*obj); _makeObjectFactors.append(_CQLObjectPtr); switch(target){ case Factor: return _makeObjectFactors[_makeObjectFactors.size()-1]._ptr; break; case Value: return NULL; break; default: return makeObject((CQLFactor*)(_CQLObjectPtr._ptr), target); break; }PEG_METHOD_EXIT();}void* CQLFactory::makeObject(CQLFunction* obj, FactoryType target){//printf("CQLFactory::makeObject(function)\n");PEG_METHOD_ENTER(TRC_CQL, "CQLFactory::makeObject,CQLFunction"); _CQLObjectPtr._ptr = new CQLFactor(*obj); _makeObjectFactors.append(_CQLObjectPtr); switch(target){ case Factor: return _makeObjectFactors[_makeObjectFactors.size()-1]._ptr; break; default: return makeObject((CQLFactor*)(_CQLObjectPtr._ptr), target); break; }PEG_METHOD_EXIT();}void* CQLFactory::makeObject(CQLFactor* obj, FactoryType target){//printf("CQLFactory::makeObject(factor)\n");PEG_METHOD_ENTER(TRC_CQL, "CQLFactory::makeObject,CQLFactor"); _CQLObjectPtr._ptr = new CQLTerm(*obj); _makeObjectTerms.append(_CQLObjectPtr); switch(target){ case Term: return _makeObjectTerms[_makeObjectTerms.size()-1]._ptr; break; case Factor: return NULL; break; default: return makeObject((CQLTerm*)(_CQLObjectPtr._ptr), target); break; }PEG_METHOD_EXIT();}void* CQLFactory::makeObject(CQLTerm* obj, FactoryType target){//printf("CQLFactory::makeObject(term)\n");PEG_METHOD_ENTER(TRC_CQL, "CQLFactory::makeObject,CQLTerm"); _CQLObjectPtr._ptr = new CQLExpression(*obj); _makeObjectExpressions.append(_CQLObjectPtr); switch(target){ case Expression: return _makeObjectExpressions[_makeObjectExpressions.size()-1]._ptr; break; case Term: return NULL; break; default: return makeObject((CQLExpression*)(_CQLObjectPtr._ptr), target); break; }PEG_METHOD_EXIT();}void* CQLFactory::makeObject(CQLExpression* obj, FactoryType target){//printf("CQLFactory::makeObject(expression)\n");PEG_METHOD_ENTER(TRC_CQL, "CQLFactory::makeObject,CQLExpression"); _CQLObjectPtr._ptr = new CQLSimplePredicate(*obj); _makeObjectSimplePredicates.append(_CQLObjectPtr); switch(target){ case SimplePredicate:
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -