(file) Return to CIMValue.cpp CVS log (file) (dir) Up to [Pegasus] / pegasus / src / Pegasus / Common

Diff for /pegasus/src/Pegasus/Common/CIMValue.cpp between version 1.65.2.2 and 1.66

version 1.65.2.2, 2006/02/10 16:09:35 version 1.66, 2006/01/30 16:16:47
Line 47 
Line 47 
 #include <cstdio> #include <cstdio>
 #include <cctype> #include <cctype>
 #include "CIMValue.h" #include "CIMValue.h"
 #ifdef PEGASUS_EMBEDDED_INSTANCE_SUPPORT  
 #include "CIMInstance.h"  
 #endif // PEGASUS_EMBEDDED_INSTANCE_SUPPORT  
 #include "Union.h" #include "Union.h"
 #include "Indentor.h" #include "Indentor.h"
 #include "XmlWriter.h" #include "XmlWriter.h"
Line 178 
Line 175 
 { {
     out << x.toString();     out << x.toString();
 } }
 #ifdef PEGASUS_EMBEDDED_INSTANCE_SUPPORT  
 inline void _toString(Buffer& out, const CIMInstance& x)  
 {  
     out << CIMObject(x).toString();  
 }  
 #endif // PEGASUS_EMBEDDED_INSTANCE_SUPPORT  
  
 template<class T> template<class T>
 void _toString(Buffer& out, const T* p, Uint32 size) void _toString(Buffer& out, const T* p, Uint32 size)
Line 272 
Line 263 
             case CIMTYPE_OBJECT:             case CIMTYPE_OBJECT:
                 CIMValueType<CIMObject>::destructArray(this);                 CIMValueType<CIMObject>::destructArray(this);
                 break;                 break;
 #ifdef PEGASUS_EMBEDDED_INSTANCE_SUPPORT  
             case CIMTYPE_INSTANCE:  
                 CIMValueType<CIMInstance>::destructArray(this);  
                 break;  
 #endif // PEGASUS_EMBEDDED_INSTANCE_SUPPORT  
         }         }
     }     }
     else     else
Line 312 
Line 298 
             case CIMTYPE_OBJECT:             case CIMTYPE_OBJECT:
                 CIMValueType<CIMObject>::destruct(this);                 CIMValueType<CIMObject>::destruct(this);
                 break;                 break;
 #ifdef PEGASUS_EMBEDDED_INSTANCE_SUPPORT  
             case CIMTYPE_INSTANCE:  
                 CIMValueType<CIMInstance>::destruct(this);  
                 break;  
 #endif // PEGASUS_EMBEDDED_INSTANCE_SUPPORT  
         }         }
     }     }
 } }
Line 407 
Line 388 
         case CIMTYPE_OBJECT:         case CIMTYPE_OBJECT:
             CIMValueType<CIMObject>::setNull(_rep, type, isArray, arraySize);             CIMValueType<CIMObject>::setNull(_rep, type, isArray, arraySize);
             break;             break;
 #ifdef PEGASUS_EMBEDDED_INSTANCE_SUPPORT  
         case CIMTYPE_INSTANCE:  
             CIMValueType<CIMInstance>::setNull(_rep, type, isArray, arraySize);  
             break;  
 #endif // PEGASUS_EMBEDDED_INSTANCE_SUPPORT  
  
         default:         default:
             PEGASUS_ASSERT(0);             PEGASUS_ASSERT(0);
Line 519 
Line 495 
     _rep = new CIMValueRep;     _rep = new CIMValueRep;
     CIMValueType<CIMObject>::set(_rep, x.clone());     CIMValueType<CIMObject>::set(_rep, x.clone());
 } }
 #ifdef PEGASUS_EMBEDDED_INSTANCE_SUPPORT  
 CIMValue::CIMValue(const CIMInstance& x)  
 {  
     if (x.isUninitialized())  
     {  
         // Bug 3373, throw exception if uninitialized object is passed to set().  
         throw UninitializedObjectException();  
     }  
  
     _rep = new CIMValueRep;  
     CIMValueType<CIMInstance>::set(_rep, x.clone());  
 }  
 #endif // PEGASUS_EMBEDDED_INSTANCE_SUPPORT  
 CIMValue::CIMValue(const Array<Boolean>& x) CIMValue::CIMValue(const Array<Boolean>& x)
 { {
     _rep = new CIMValueRep;     _rep = new CIMValueRep;
Line 642 
Line 606 
     CIMValueType<CIMObject>::setArray(_rep, tmp);     CIMValueType<CIMObject>::setArray(_rep, tmp);
 } }
  
 #ifdef PEGASUS_EMBEDDED_INSTANCE_SUPPORT  
 CIMValue::CIMValue(const Array<CIMInstance>& x)  
 {  
     Array<CIMInstance> tmp;  
   
     for (Uint32 i = 0, n = x.size(); i < n; i++)  
     {  
         if (x[i].isUninitialized())  
         {  
           // Bug 3373, throw exception on uninitialized object.  
           _rep = &CIMValueRep::_emptyRep;  
           throw UninitializedObjectException();  
         }  
   
         tmp.append(x[i].clone());  
     }  
     _rep = new CIMValueRep;  
     CIMValueType<CIMInstance>::setArray(_rep, tmp);  
 }  
 #endif // PEGASUS_EMBEDDED_INSTANCE_SUPPORT  
   
 void CIMValue::clear() void CIMValue::clear()
 { {
     CIMValueRep::unref(_rep);     CIMValueRep::unref(_rep);
Line 748 
Line 691 
  
         case CIMTYPE_OBJECT:         case CIMTYPE_OBJECT:
             return CIMValueType<CIMObject>::arraySize(_rep);             return CIMValueType<CIMObject>::arraySize(_rep);
 #ifdef PEGASUS_EMBEDDED_INSTANCE_SUPPORT  
         case CIMTYPE_INSTANCE:  
         return CIMValueType<CIMInstance>::arraySize(_rep);  
 #endif // PEGASUS_EMBEDDED_INSTANCE_SUPPORT  
         default:         default:
             PEGASUS_ASSERT(0);             PEGASUS_ASSERT(0);
     }     }
Line 836 
Line 776 
         case CIMTYPE_OBJECT:         case CIMTYPE_OBJECT:
             CIMValueType<CIMObject>::setNull(_rep, type, isArray, arraySize);             CIMValueType<CIMObject>::setNull(_rep, type, isArray, arraySize);
             break;             break;
 #ifdef PEGASUS_EMBEDDED_INSTANCE_SUPPORT  
         case CIMTYPE_INSTANCE:  
             CIMValueType<CIMInstance>::setNull(_rep, type, isArray, arraySize);  
             break;  
 #endif // PEGASUS_EMBEDDED_INSTANCE_SUPPORT  
         default:         default:
             PEGASUS_ASSERT(0);             PEGASUS_ASSERT(0);
     }     }
Line 947 
Line 883 
     _release(_rep);     _release(_rep);
     CIMValueType<CIMObject>::set(_rep, x.clone());     CIMValueType<CIMObject>::set(_rep, x.clone());
 } }
 #ifdef PEGASUS_EMBEDDED_INSTANCE_SUPPORT  
 void CIMValue::set(const CIMInstance& x)  
 {  
     if (x.isUninitialized())  
     {  
         // Bug 3373, throw exception on uninitialized object.  
         throw UninitializedObjectException();  
     }  
  
     _release(_rep);  
     CIMValueType<CIMInstance>::set(_rep, x.clone());  
 }  
 #endif // PEGASUS_EMBEDDED_INSTANCE_SUPPORT  
 void CIMValue::set(const Array<Boolean>& x) void CIMValue::set(const Array<Boolean>& x)
 { {
     _release(_rep);     _release(_rep);
Line 1068 
Line 992 
     _release(_rep);     _release(_rep);
     CIMValueType<CIMObject>::setArray(_rep, tmp);     CIMValueType<CIMObject>::setArray(_rep, tmp);
 } }
 #ifdef PEGASUS_EMBEDDED_INSTANCE_SUPPORT  
 void CIMValue::set(const Array<CIMInstance>& a)  
 {  
     Array<CIMInstance> tmp;  
   
     for (Uint32 i = 0, n = a.size(); i < n; i++)  
     {  
         if (a[i].isUninitialized())  
         {  
                   // Bug 3373, throw exception on uninitialized object.  
                   throw UninitializedObjectException();  
         }  
  
         tmp.append(a[i].clone());  
     }  
   
     _release(_rep);  
     CIMValueType<CIMInstance>::setArray(_rep, tmp);  
 }  
 #endif // PEGASUS_EMBEDDED_INSTANCE_SUPPORT  
 void CIMValue::get(Boolean& x) const void CIMValue::get(Boolean& x) const
 { {
     if (_rep->type != CIMTYPE_BOOLEAN || _rep->isArray)     if (_rep->type != CIMTYPE_BOOLEAN || _rep->isArray)
Line 1235 
Line 1140 
         // changing the one we refer to as well.         // changing the one we refer to as well.
         x = CIMValueType<CIMObject>::ref(_rep).clone();         x = CIMValueType<CIMObject>::ref(_rep).clone();
 } }
 #ifdef PEGASUS_EMBEDDED_INSTANCE_SUPPORT  
 void CIMValue::get(CIMInstance& x) const  
 {  
     if (_rep->type != CIMTYPE_INSTANCE || _rep->isArray)  
         throw TypeMismatchException();  
  
     if (!_rep->isNull)  
     {  
         if (_rep->refs.get() != 1)  
         {  
             // We have to make our own unique copy since we are about to  
             // return an object to the caller that he can modify; thereby,  
             // changing the one we refer to as well.  
   
             CIMInstance tmp = CIMValueType<CIMInstance>::ref(_rep);  
             ((CIMValue*)this)->set(tmp);  
         }  
   
         x = CIMValueType<CIMInstance>::ref(_rep);  
     }  
 }  
 #endif // PEGASUS_EMBEDDED_INSTANCE_SUPPORT  
 void CIMValue::get(Array<Boolean>& x) const void CIMValue::get(Array<Boolean>& x) const
 { {
     if (_rep->type != CIMTYPE_BOOLEAN || !_rep->isArray)     if (_rep->type != CIMTYPE_BOOLEAN || !_rep->isArray)
Line 1410 
Line 1294 
         }         }
     }     }
 } }
 #ifdef PEGASUS_EMBEDDED_INSTANCE_SUPPORT  
 void CIMValue::get(Array<CIMInstance>& x) const  
 {  
     if (_rep->type != CIMTYPE_INSTANCE || !_rep->isArray)  
         throw TypeMismatchException();  
  
     if (!_rep->isNull)  
     {  
         if (_rep->refs.get() != 1)  
         {  
             // We have to make our own unique copy since we are about to  
             // return an object to the caller that he can modify; thereby,  
             // changing the one we refer to as well.  
             Array<CIMInstance> tmp = CIMValueType<CIMInstance>::aref(_rep);  
             ((CIMValue*)this)->set(tmp);  
         }  
   
         x = CIMValueType<CIMInstance>::aref(_rep);  
     }  
 }  
 #endif // PEGASUS_EMBEDDED_INSTANCE_SUPPORT  
 Boolean CIMValue::equal(const CIMValue& x) const Boolean CIMValue::equal(const CIMValue& x) const
 { {
     if (!typeCompatible(x))     if (!typeCompatible(x))
Line 1490 
Line 1354 
  
             case CIMTYPE_OBJECT:             case CIMTYPE_OBJECT:
                 return CIMValueType<CIMObject>::equalArray(_rep, x._rep);                 return CIMValueType<CIMObject>::equalArray(_rep, x._rep);
 #ifdef PEGASUS_EMBEDDED_INSTANCE_SUPPORT  
             case CIMTYPE_INSTANCE:  
                 return CIMValueType<CIMInstance>::equalArray(_rep, x._rep);  
 #endif // PEGASUS_EMBEDDED_INSTANCE_SUPPORT  
             default:             default:
                 PEGASUS_ASSERT(0);                 PEGASUS_ASSERT(0);
         }         }
Line 1550 
Line 1411 
             case CIMTYPE_OBJECT:             case CIMTYPE_OBJECT:
                 return CIMValueType<CIMObject>::ref(_rep).identical(                 return CIMValueType<CIMObject>::ref(_rep).identical(
                     CIMValueType<CIMObject>::ref(x._rep));                     CIMValueType<CIMObject>::ref(x._rep));
 #ifdef PEGASUS_EMBEDDED_INSTANCE_SUPPORT  
             case CIMTYPE_INSTANCE:  
                 return CIMValueType<CIMInstance>::ref(_rep).identical(  
                     CIMValueType<CIMInstance>::ref(x._rep));  
 #endif // PEGASUS_EMBEDDED_INSTANCE_SUPPORT  
             default:             default:
                 PEGASUS_ASSERT(0);                 PEGASUS_ASSERT(0);
         }         }
Line 1696 
Line 1553 
                 _toString(out, a.getData(), a.size());                 _toString(out, a.getData(), a.size());
                 break;                 break;
             }             }
 #ifdef PEGASUS_EMBEDDED_INSTANCE_SUPPORT  
             case CIMTYPE_INSTANCE:  
             {  
                 const Array<CIMInstance>& a =  
                     CIMValueType<CIMInstance>::aref(_rep);  
                 _toString(out, a.getData(), a.size());  
                 break;  
             }  
 #endif // PEGASUS_EMBEDDED_INSTANCE_SUPPORT  
             default:             default:
                 PEGASUS_ASSERT(0);                 PEGASUS_ASSERT(0);
         }         }
Line 1776 
Line 1625 
             case CIMTYPE_OBJECT:             case CIMTYPE_OBJECT:
                 _toString(out, CIMValueType<CIMObject>::ref(_rep));                 _toString(out, CIMValueType<CIMObject>::ref(_rep));
                 break;                 break;
 #ifdef PEGASUS_EMBEDDED_INSTANCE_SUPPORT  
             case CIMTYPE_INSTANCE:  
                 _toString(out, CIMValueType<CIMInstance>::ref(_rep));  
                 break;  
 #endif // PEGASUS_EMBEDDED_INSTANCE_SUPPORT  
             default:             default:
                 PEGASUS_ASSERT(0);                 PEGASUS_ASSERT(0);
         }         }


Legend:
Removed from v.1.65.2.2  
changed lines
  Added in v.1.66

No CVS admin address has been configured
Powered by
ViewCVS 0.9.2