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

  1 karl  1.5 //%2003////////////////////////////////////////////////////////////////////////
  2 mike  1.2 //
  3 karl  1.5 // 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 mike  1.2 //
  8           // Permission is hereby granted, free of charge, to any person obtaining a copy
  9 kumpf 1.3 // 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 mike  1.2 // 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 kumpf 1.3 // THE ABOVE COPYRIGHT NOTICE AND THIS PERMISSION NOTICE SHALL BE INCLUDED IN
 16 mike  1.2 // 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 kumpf 1.3 // 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 mike  1.2 // ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
 22           // WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 23           //
 24           //==============================================================================
 25           //
 26           // Author: Mike Brasher (mbrasher@bmc.com)
 27           //
 28           // Modified By:
 29           //
 30           //%/////////////////////////////////////////////////////////////////////////////
 31           
 32           #include <cstdio>
 33           #include "WQLOperand.h"
 34           
 35           PEGASUS_NAMESPACE_BEGIN
 36           
 37           WQLOperand::WQLOperand() : _type(NULL_VALUE) 
 38           { 
 39           
 40           }
 41           
 42 mike  1.2 WQLOperand::WQLOperand(const WQLOperand& x)
 43           {
 44               assign(x);
 45           }
 46           
 47           WQLOperand::~WQLOperand()
 48           {
 49               clear();
 50           }
 51           
 52           WQLOperand& WQLOperand::operator=(const WQLOperand& x)
 53           {
 54               clear();
 55               assign(x);
 56               return *this;
 57           }
 58           
 59           void WQLOperand::clear()
 60           {
 61               if (_type == PROPERTY_NAME)
 62           	((String*)_propertyName)->~String();
 63 mike  1.2     else if (_type == STRING_VALUE)
 64           	((String*)_stringValue)->~String();
 65           
 66               _type = NULL_VALUE;
 67           }
 68           
 69           void WQLOperand::assign(const WQLOperand& x)
 70           {
 71               switch (_type = x._type)
 72               {
 73           	case PROPERTY_NAME:
 74           	    new(_propertyName) String(*((String*)x._propertyName));
 75           	    break;
 76           
 77           	case STRING_VALUE:
 78           	    new(_stringValue) String(*((String*)x._stringValue));
 79           	    break;
 80           
 81           	case INTEGER_VALUE:
 82           	    _integerValue = x._integerValue;
 83           	    break;
 84 mike  1.2 
 85           	case DOUBLE_VALUE:
 86           	    _doubleValue = x._doubleValue;
 87           	    break;
 88           
 89           	case BOOLEAN_VALUE:
 90           	    _booleanValue = x._booleanValue;
 91           	    break;
 92           
 93           	case NULL_VALUE:
 94           	    _integerValue = 0;
 95           	    break;
 96               }
 97           }
 98           
 99           String WQLOperand::toString() const
100           {
101               String result;
102           
103               switch (_type)
104               {
105 mike  1.2 	case PROPERTY_NAME:
106           	{
107           	    result = "PROPERTY_NAME: ";
108 kumpf 1.4 	    result.append(*((String*)_propertyName));
109 mike  1.2 	    break;
110           	}
111           
112           	case STRING_VALUE:
113           	{
114           	    result = "STRING_VALUE: ";
115 kumpf 1.4 	    result.append(*((String*)_stringValue));
116 mike  1.2 	    break;
117           	}
118           
119           	case INTEGER_VALUE:
120           	{
121           	    result = "INTEGER_VALUE: ";
122           	    char buffer[32];
123           	    sprintf(buffer, "%d", _integerValue);
124 kumpf 1.4 	    result.append(buffer);
125 mike  1.2 	    break;
126           	}
127           
128           	case DOUBLE_VALUE:
129           	{
130           	    result = "DOUBLE_VALUE: ";
131           	    char buffer[32];
132           	    sprintf(buffer, "%f", _doubleValue);
133 kumpf 1.4 	    result.append(buffer);
134 mike  1.2 	    break;
135           	} 
136           
137           	case BOOLEAN_VALUE:
138           	{
139           	    result = "BOOLEAN_VALUE: ";
140           
141           	    if (_booleanValue)
142 kumpf 1.4 		result.append("TRUE");
143 mike  1.2 	    else
144 kumpf 1.4 		result.append("FALSE");
145 mike  1.2 
146           	    break;
147           	}
148           
149           	default:
150           	    result = "NULL_VALUE";
151           	    break;
152               }
153           
154               return result;
155           }
156           
157           PEGASUS_NAMESPACE_END

No CVS admin address has been configured
Powered by
ViewCVS 0.9.2