version 1.8, 2001/07/10 06:43:24
|
version 1.36, 2008/12/01 17:49:50
|
|
|
//%///////////////////////////////////////////////////////////////////////////// |
//%LICENSE//////////////////////////////////////////////////////////////// |
// |
|
// Copyright (c) 2000, 2001 The Open group, BMC Software, Tivoli Systems, IBM |
|
// |
|
// 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. |
|
// | // |
//============================================================================== |
// Licensed to The Open Group (TOG) under one or more contributor license |
|
// agreements. Refer to the OpenPegasusNOTICE.txt file distributed with |
|
// this work for additional information regarding copyright ownership. |
|
// Each contributor licenses this file to you under the OpenPegasus Open |
|
// Source License; you may not use this file except in compliance with the |
|
// License. |
|
// |
|
// 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. |
// | // |
// Author: Mike Brasher (mbrasher@bmc.com) |
////////////////////////////////////////////////////////////////////////// |
// |
|
// Modified By: |
|
// | // |
//%///////////////////////////////////////////////////////////////////////////// | //%///////////////////////////////////////////////////////////////////////////// |
| |
/* |
|
CIMType.h - This file defines the CIMType enumeration which introduces |
|
symbolic constants for the CIM data types. |
|
*/ |
|
|
|
#ifndef Pegasus_Type_h | #ifndef Pegasus_Type_h |
#define Pegasus_Type_h | #define Pegasus_Type_h |
| |
#include <Pegasus/Common/Config.h> | #include <Pegasus/Common/Config.h> |
|
#include <Pegasus/Common/Linkage.h> |
| |
PEGASUS_NAMESPACE_BEGIN | PEGASUS_NAMESPACE_BEGIN |
| |
/** | /** |
The CIMType Class defines the CIMType enumeration which introduces |
The CIMType enumeration defines symbolic constants for the CIM data types. |
symbolic constants for the CIM data types. |
|
| |
The table below shows each CIM type, its symbolic constant, and its | The table below shows each CIM type, its symbolic constant, and its |
representation type. | representation type. |
| |
<pre> | <pre> |
CIM CIMType Constant C++ CIMType |
CIM Type CIMType Symbol C++ Type |
------------------------------------------------------- |
---------------------------------------------- |
boolean CIMType::BOOLEAN Boolean |
boolean CIMTYPE_BOOLEAN Boolean |
uint8 CIMType::UINT8 Uint8 |
uint8 CIMTYPE_UINT8 Uint8 |
sint8 CIMType::SINT8 Sint8 |
sint8 CIMTYPE_SINT8 Sint8 |
uint16 CIMType::UINT16 Uint16 |
uint16 CIMTYPE_UINT16 Uint16 |
sint16 CIMType::SINT16 Sint16 |
sint16 CIMTYPE_SINT16 Sint16 |
uint32 CIMType::UINT32 Uint32 |
uint32 CIMTYPE_UINT32 Uint32 |
sint32 CIMType::SINT32 Sint32 |
sint32 CIMTYPE_SINT32 Sint32 |
uint64 CIMType::UINT64 Sint64 |
uint64 CIMTYPE_UINT64 Sint64 |
sint64 CIMType::SINT64 Sint64 |
sint64 CIMTYPE_SINT64 Sint64 |
real32 CIMType::REAL32 Real32 |
real32 CIMTYPE_REAL32 Real32 |
real64 CIMType::REAL64 Real64 |
real64 CIMTYPE_REAL64 Real64 |
char16 CIMType::CHAR16 Char16 |
char16 CIMTYPE_CHAR16 Char16 |
string CIMType::STRING String |
string CIMTYPE_STRING String |
datetime CIMType::DATETIME CIMDateTime |
datetime CIMTYPE_DATETIME CIMDateTime |
reference CIMType::REFERENCE CIMReference |
reference CIMTYPE_REFERENCE CIMObjectPath |
|
object CIMTYPE_OBJECT CIMObject (not a basic CIM type) |
</pre> | </pre> |
*/ | */ |
class PEGASUS_COMMON_LINKAGE CIMType |
|
{ |
|
public: |
|
| |
enum Tag |
enum CIMType |
{ | { |
NONE, |
CIMTYPE_BOOLEAN, |
BOOLEAN, |
CIMTYPE_UINT8, |
UINT8, |
CIMTYPE_SINT8, |
SINT8, |
CIMTYPE_UINT16, |
UINT16, |
CIMTYPE_SINT16, |
SINT16, |
CIMTYPE_UINT32, |
UINT32, |
CIMTYPE_SINT32, |
SINT32, |
CIMTYPE_UINT64, |
UINT64, |
CIMTYPE_SINT64, |
SINT64, |
CIMTYPE_REAL32, |
REAL32, |
CIMTYPE_REAL64, |
REAL64, |
CIMTYPE_CHAR16, |
CHAR16, |
CIMTYPE_STRING, |
STRING, |
CIMTYPE_DATETIME, |
DATETIME, |
CIMTYPE_REFERENCE, |
REFERENCE |
CIMTYPE_OBJECT, |
}; |
CIMTYPE_INSTANCE |
|
|
CIMType() : _tag(NONE) { } |
|
|
|
CIMType(Tag tag) : _tag(tag) { } |
|
|
|
PEGASUS_EXPLICIT CIMType(Uint32 tag) : _tag(Tag(tag)) { } |
|
|
|
CIMType(const CIMType& x) : _tag(x._tag) { } |
|
|
|
CIMType& operator=(Tag tag) { _tag = tag; return *this; } |
|
|
|
operator Tag() const { return _tag; } |
|
|
|
Boolean equal(const CIMType& x) const { return x._tag == _tag; } |
|
|
|
private: |
|
|
|
Tag _tag; |
|
}; | }; |
| |
inline Boolean operator==(CIMType x, CIMType y) |
/** |
{ |
Gets a string representation of a CIMType. |
return CIMType::Tag(x) == CIMType::Tag(y); |
|
} |
|
|
|
inline Boolean operator!=(CIMType x, CIMType y) |
|
{ |
|
return !operator==(x, y); |
|
} |
|
|
|
// ATTN: this doesn't seem necessary! |
|
|
|
inline Boolean operator==(CIMType x, CIMType::Tag y) |
|
{ |
|
return x.equal(y); |
|
} |
|
|
|
inline Boolean operator==(CIMType::Tag x, CIMType y) |
|
{ |
|
return y.equal(x); |
|
} |
|
|
|
inline Boolean operator!=(CIMType x, CIMType::Tag y) |
|
{ |
|
return !operator==(x, y); |
|
} |
|
|
|
inline Boolean operator!=(CIMType::Tag x, CIMType y) |
|
{ |
|
return !operator==(x, y); |
|
} |
|
|
|
// Returns a string representation of the given type. The string |
|
// is the same as the "CIM CIMType" column in the table above. |
|
| |
PEGASUS_COMMON_LINKAGE const char* TypeToString(CIMType type); |
Note: the current implementation returns a string matching the first |
|
column in the table above, but that is subject to change in later |
|
revisions. |
|
@param type The CIMType to convert to string form. |
|
@return The string form of the specified CIMType. |
|
*/ |
|
PEGASUS_COMMON_LINKAGE const char * cimTypeToString ( |
|
const CIMType type); |
| |
PEGASUS_NAMESPACE_END | PEGASUS_NAMESPACE_END |
| |
#endif /* Pegasus_Type_h */ | #endif /* Pegasus_Type_h */ |
|
|