⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 cqlfactory.cpp

📁 Pegasus is an open-source implementationof the DMTF CIM and WBEM standards. It is designed to be por
💻 CPP
📖 第 1 页 / 共 2 页
字号:
//%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 + -