(file) Return to CMPI_Object.cpp CVS log (file) (dir) Up to [Pegasus] / pegasus / src / Pegasus / ProviderManager2 / CMPI

  1 schuur 1.1 //%2003////////////////////////////////////////////////////////////////////////
  2            //
  3            // Copyright (c) 2000, 2001, 2002  BMC Software, Hewlett-Packard Development
  4            // Company, L. P., IBM Corp., The Open Group, Tivoli Systems.
  5            // Copyright (c) 2003 BMC Software; Hewlett-Packard Development Company, L. P.;
  6            // IBM Corp.; EMC Corporation, The Open Group.
  7            //
  8            // Permission is hereby granted, free of charge, to any person obtaining a copy
  9            // of this software and associated documentation files (the "Software"), to
 10            // deal in the Software without restriction, including without limitation the
 11            // rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
 12            // sell copies of the Software, and to permit persons to whom the Software is
 13            // furnished to do so, subject to the following conditions:
 14            //
 15            // THE ABOVE COPYRIGHT NOTICE AND THIS PERMISSION NOTICE SHALL BE INCLUDED IN
 16            // ALL COPIES OR SUBSTANTIAL PORTIONS OF THE SOFTWARE. THE SOFTWARE IS PROVIDED
 17            // "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT
 18            // LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR
 19            // PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
 20            // HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
 21            // ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
 22 schuur 1.1 // WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 23            //
 24            //==============================================================================
 25            //
 26            // Author:      Adrian Schuur, schuur@de.ibm.com
 27            //
 28            // Modified By:
 29            //
 30            //%/////////////////////////////////////////////////////////////////////////////
 31            
 32 schuur 1.4 #include "CMPI_Version.h"
 33 schuur 1.2 
 34 schuur 1.1 #include "CMPI_Object.h"
 35            #include "CMPI_ThreadContext.h"
 36            #include "CMPI_Ftabs.h"
 37            
 38 schuur 1.3 #include <string.h>
 39            
 40 schuur 1.1 PEGASUS_USING_STD;
 41            PEGASUS_NAMESPACE_BEGIN
 42            
 43            CMPI_Object::CMPI_Object(CMPI_Object *obj) {
 44               hdl=obj->hdl;
 45               ftab=obj->ftab;
 46               priv=obj->priv;
 47            }
 48            
 49            CMPI_Object::CMPI_Object(void* obj, void *fTab) {
 50               hdl=obj;
 51               ftab=fTab;
 52               priv=NULL;
 53            }
 54            
 55            CMPI_Object::CMPI_Object(CIMInstance* ci) {
 56               CMPI_ThreadContext::addObject(this);
 57               hdl=(void*)ci;
 58               ftab=CMPI_Instance_Ftab;
 59               priv=NULL;
 60            //   cerr<<"--- CMPI_Object::CMPI_Object(CIMInstance *obj)"<<endl;
 61 schuur 1.1 }
 62            
 63            CMPI_Object::CMPI_Object(CIMObjectPath* cop) {
 64               CMPI_ThreadContext::addObject(this);
 65               hdl=(void*)cop;
 66               ftab=CMPI_ObjectPath_Ftab;
 67            }
 68            
 69            CMPI_Object::CMPI_Object(CIMDateTime* cdt) {
 70               CMPI_ThreadContext::addObject(this);
 71               hdl=(void*)cdt;
 72               ftab=CMPI_DateTime_Ftab;
 73            }
 74            
 75            CMPI_Object::CMPI_Object(const String& str) {
 76               CMPI_ThreadContext::addObject(this);
 77               const CString st=str.getCString();
 78               hdl=(void*)strdup((const char*)st);
 79               ftab=CMPI_String_Ftab;
 80            }
 81            
 82 schuur 1.1 CMPI_Object::CMPI_Object(char *str) {
 83               CMPI_ThreadContext::addObject(this);
 84               hdl=(void*)strdup((const char*)str);
 85               ftab=CMPI_String_Ftab;
 86            }
 87            
 88            CMPI_Object::CMPI_Object(Array<CIMParamValue> *args) {
 89               CMPI_ThreadContext::addObject(this);
 90               hdl=(void*)args;
 91               ftab=CMPI_Args_Ftab;
 92            }
 93            
 94            CMPI_Object::CMPI_Object(CMPIData *dta) {
 95               CMPI_ThreadContext::addObject(this);
 96               hdl=(void*)dta;
 97               ftab=CMPI_Array_Ftab;
 98            }
 99            
100            CMPI_Object::CMPI_Object(CMPISelectCond *dta) {
101               CMPI_ThreadContext::addObject(this);
102               hdl=(void*)dta;
103 schuur 1.1    ftab=CMPI_SelectCond_Ftab;
104            }
105            
106            CMPI_Object::~CMPI_Object() {
107               if (ftab==CMPI_Instance_Ftab) {
108            //      cerr<<"--- CMPI_Object::~CMPI_Object()"<<endl;
109                  char **list=(char**)priv;
110                  if (priv) {
111                     while (*list) {
112            //	    cerr<<"--- freeing "<<*list<<endl;
113                        free (*list);
114                        list++;
115                     }
116                     free(priv);
117                  }
118                  priv=NULL;
119               }
120            }
121            
122            void CMPI_Object::unlinkAndDelete() {
123               CMPI_ThreadContext::remObject(this);
124 schuur 1.1    delete this;
125            }
126            
127 schuur 1.5 void CMPI_Object::unlink() {
128               CMPI_ThreadContext::remObject(this);
129            }
130            
131 schuur 1.1 PEGASUS_NAMESPACE_END
132            
133            
134            
135            

No CVS admin address has been configured
Powered by
ViewCVS 0.9.2