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

Diff for /pegasus/src/Pegasus/Common/CIMFlavor.cpp between version 1.3 and 1.23.18.1

version 1.3, 2001/04/25 22:20:53 version 1.23.18.1, 2006/02/10 16:09:34
Line 1 
Line 1 
 //%/////////////////////////////////////////////////////////////////////////////  //%2006////////////////////////////////////////////////////////////////////////
 //  
 // Copyright (c) 2000 The Open Group, BMC Software, Tivoli Systems, IBM  
 // //
 // Permission is hereby granted, free of charge, to any person obtaining a  // Copyright (c) 2000, 2001, 2002 BMC Software; Hewlett-Packard Development
 // copy of this software and associated documentation files (the "Software"),  // Company, L.P.; IBM Corp.; The Open Group; Tivoli Systems.
 // to deal in the Software without restriction, including without limitation  // Copyright (c) 2003 BMC Software; Hewlett-Packard Development Company, L.P.;
 // the rights to use, copy, modify, merge, publish, distribute, sublicense,  // IBM Corp.; EMC Corporation, The Open Group.
 // and/or sell copies of the Software, and to permit persons to whom the  // Copyright (c) 2004 BMC Software; Hewlett-Packard Development Company, L.P.;
 // Software is furnished to do so, subject to the following conditions:  // IBM Corp.; EMC Corporation; VERITAS Software Corporation; The Open Group.
 //  // Copyright (c) 2005 Hewlett-Packard Development Company, L.P.; IBM Corp.;
 // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR  // EMC Corporation; VERITAS Software Corporation; The Open Group.
 // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,  // Copyright (c) 2006 Hewlett-Packard Development Company, L.P.; IBM Corp.;
 // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL  // EMC Corporation; Symantec Corporation; The Open Group.
 // THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER  //
 // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING  // Permission is hereby granted, free of charge, to any person obtaining a copy
 // FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER  // of this software and associated documentation files (the "Software"), to
 // DEALINGS IN THE SOFTWARE.  // 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.
 // //
 //============================================================================== //==============================================================================
 // //
 // Author: Mike Brasher (mbrasher@bmc.com) // Author: Mike Brasher (mbrasher@bmc.com)
 // //
 // Modified By:  // Modified By: Roger Kumpf, Hewlett-Packard Company (roger_kumpf@hp.com)
   //              Carol Ann Krug Graves, Hewlett-Packard Company
   //                (carolann_graves@hp.com)
 // //
 //%///////////////////////////////////////////////////////////////////////////// //%/////////////////////////////////////////////////////////////////////////////
  
 #include <cstring>  
 #include "CIMFlavor.h" #include "CIMFlavor.h"
 #include "Exception.h"  #include <Pegasus/Common/InternalException.h>
 #include "XmlWriter.h"  
  
 PEGASUS_NAMESPACE_BEGIN PEGASUS_NAMESPACE_BEGIN
  
 const Uint32 CIMFlavor::NONE = 0;  const CIMFlavor CIMFlavor::NONE = 0;
 const Uint32 CIMFlavor::OVERRIDABLE = 1;  const CIMFlavor CIMFlavor::OVERRIDABLE = 1;
 const Uint32 CIMFlavor::TOSUBCLASS = 2;  const CIMFlavor CIMFlavor::ENABLEOVERRIDE = 1;
 const Uint32 CIMFlavor::TOINSTANCE = 4;  const CIMFlavor CIMFlavor::TOSUBCLASS = 2;
 const Uint32 CIMFlavor::TRANSLATABLE = 8;  const CIMFlavor CIMFlavor::TOINSTANCE = 4;
 const Uint32 CIMFlavor::DEFAULTS = OVERRIDABLE | TOSUBCLASS;  const CIMFlavor CIMFlavor::TRANSLATABLE = 8;
   const CIMFlavor CIMFlavor::TOSUBELEMENTS = TOSUBCLASS + TOINSTANCE;
   const CIMFlavor CIMFlavor::DISABLEOVERRIDE = 16;
   const CIMFlavor CIMFlavor::RESTRICTED = 32;
   const CIMFlavor CIMFlavor::DEFAULTS = OVERRIDABLE + TOSUBCLASS;
   // ATTN: P1 KS 24 March 2002 Change here to make TOINSTANCE part of the defaults
   //const CIMFlavor CIMFlavor::DEFAULTS = OVERRIDABLE + TOSUBCLASS + TOINSTANCE;
  
 static const char* _toString(Boolean x)  
   CIMFlavor::CIMFlavor ()
       : cimFlavor (CIMFlavor::NONE.cimFlavor)
 { {
     return x ? "true" : "false";  
 } }
  
 String FlavorToString(Uint32 flavor)  CIMFlavor::CIMFlavor (const CIMFlavor & flavor)
       : cimFlavor (flavor.cimFlavor)
 { {
     Boolean overridable = (flavor & CIMFlavor::OVERRIDABLE) != 0;  }
     Boolean toSubClass = (flavor & CIMFlavor::TOSUBCLASS) != 0;  
     Boolean toInstance = (flavor & CIMFlavor::TOINSTANCE) != 0;  
     Boolean translatable = (flavor & CIMFlavor::TRANSLATABLE) != 0;  
  
     String tmp;  CIMFlavor::CIMFlavor (const Uint32 flavor)
       : cimFlavor (flavor)
   {
       //
       //  Test that no undefined bits are set
       //
       //  Note that conflicting bits may be set in the Uint32 flavor
       //  For example, OVERRIDABLE and DISABLEOVERRIDE may both be set
       //  or TOSUBCLASS and RESTRICTED may both be set
       //  Currently, the flavor is not checked for these conflicts
       //  That is corrected later when a CIMQualifierDecl object is constructed
       //  with the CIMFlavor object
       //
       PEGASUS_ASSERT (flavor < 64);
   }
  
     if (!overridable)  CIMFlavor & CIMFlavor::operator= (const CIMFlavor & flavor)
         tmp += "OVERRIDABLE ";  {
       this->cimFlavor = flavor.cimFlavor;
       return *this;
   }
  
     if (!toSubClass)  void CIMFlavor::addFlavor (const CIMFlavor & flavor)
         tmp += "TOSUBCLASS ";  {
       this->cimFlavor |= flavor.cimFlavor;
   }
  
     if (toInstance)  void CIMFlavor::removeFlavor (const CIMFlavor & flavor)
         tmp += "TOINSTANCE ";  {
       this->cimFlavor &= (~flavor.cimFlavor);
   }
  
     if (translatable)  Boolean CIMFlavor::hasFlavor (const CIMFlavor & flavor) const
         tmp += "TRANSLATABLE ";  {
       return ((this->cimFlavor & flavor.cimFlavor) == flavor.cimFlavor) ?
           true : false;
   }
  
     if (tmp.getLength())  Boolean CIMFlavor::equal (const CIMFlavor & flavor) const
         tmp.remove(tmp.getLength() - 1);  {
       return (this->cimFlavor == flavor.cimFlavor) ? true : false;
   }
  
     return tmp;  CIMFlavor CIMFlavor::operator+ (const CIMFlavor & flavor) const
   {
       return CIMFlavor(this->cimFlavor | flavor.cimFlavor);
 } }
  
 void FlavorToXml(Array<Sint8>& out, Uint32 flavor)  String CIMFlavor::toString () const
 { {
     Boolean overridable = (flavor & CIMFlavor::OVERRIDABLE) != 0;      String tmp;
     Boolean toSubClass = (flavor & CIMFlavor::TOSUBCLASS) != 0;  
     Boolean toInstance = (flavor & CIMFlavor::TOINSTANCE) != 0;      if (this->hasFlavor (CIMFlavor::OVERRIDABLE))
     Boolean translatable = (flavor & CIMFlavor::TRANSLATABLE) != 0;          tmp.append("OVERRIDABLE ");
   
       if (this->hasFlavor (CIMFlavor::TOSUBCLASS))
           tmp.append("TOSUBCLASS ");
  
     if (!overridable)      if (this->hasFlavor (CIMFlavor::TOINSTANCE))
         out << " OVERRIDABLE=\"" << _toString(overridable) << "\"";          tmp.append("TOINSTANCE ");
  
     if (!toSubClass)      if (this->hasFlavor (CIMFlavor::TRANSLATABLE))
         out << " TOSUBCLASS=\"" << _toString(toSubClass) << "\"";          tmp.append("TRANSLATABLE ");
  
     if (toInstance)      if (this->hasFlavor (CIMFlavor::DISABLEOVERRIDE))
         out << " TOINSTANCE=\"" << _toString(toInstance) << "\"";          tmp.append("DISABLEOVERRIDE ");
  
     if (translatable)      if (this->hasFlavor (CIMFlavor::RESTRICTED))
         out << " TRANSLATABLE=\"" << _toString(translatable) << "\"";          tmp.append("RESTRICTED ");
   
       if (tmp.size ())
           tmp.remove (tmp.size () - 1);
   
       return tmp;
 } }
  
 PEGASUS_NAMESPACE_END PEGASUS_NAMESPACE_END


Legend:
Removed from v.1.3  
changed lines
  Added in v.1.23.18.1

No CVS admin address has been configured
Powered by
ViewCVS 0.9.2