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

  1 karl  1.9 //%2006////////////////////////////////////////////////////////////////////////
  2 mike  1.2 //
  3 karl  1.6 // 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 karl  1.5 // IBM Corp.; EMC Corporation, The Open Group.
  7 karl  1.6 // Copyright (c) 2004 BMC Software; Hewlett-Packard Development Company, L.P.;
  8           // IBM Corp.; EMC Corporation; VERITAS Software Corporation; The Open Group.
  9 karl  1.8 // Copyright (c) 2005 Hewlett-Packard Development Company, L.P.; IBM Corp.;
 10           // EMC Corporation; VERITAS Software Corporation; The Open Group.
 11 karl  1.9 // Copyright (c) 2006 Hewlett-Packard Development Company, L.P.; IBM Corp.;
 12           // EMC Corporation; Symantec Corporation; The Open Group.
 13 mike  1.2 //
 14           // Permission is hereby granted, free of charge, to any person obtaining a copy
 15 kumpf 1.3 // of this software and associated documentation files (the "Software"), to
 16           // deal in the Software without restriction, including without limitation the
 17           // rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
 18 mike  1.2 // sell copies of the Software, and to permit persons to whom the Software is
 19           // furnished to do so, subject to the following conditions:
 20           // 
 21 kumpf 1.3 // THE ABOVE COPYRIGHT NOTICE AND THIS PERMISSION NOTICE SHALL BE INCLUDED IN
 22 mike  1.2 // ALL COPIES OR SUBSTANTIAL PORTIONS OF THE SOFTWARE. THE SOFTWARE IS PROVIDED
 23           // "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT
 24 kumpf 1.3 // LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR
 25           // PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
 26           // HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
 27 mike  1.2 // ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
 28           // WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 29           //
 30           //==============================================================================
 31           //
 32           //%/////////////////////////////////////////////////////////////////////////////
 33           
 34           #include <cstdio>
 35           #include "WQLOperand.h"
 36           
 37           PEGASUS_NAMESPACE_BEGIN
 38           
 39           WQLOperand::WQLOperand() : _type(NULL_VALUE) 
 40           { 
 41           
 42           }
 43           
 44           WQLOperand::WQLOperand(const WQLOperand& x)
 45           {
 46               assign(x);
 47           }
 48 mike  1.2 
 49           WQLOperand::~WQLOperand()
 50           {
 51               clear();
 52           }
 53           
 54           WQLOperand& WQLOperand::operator=(const WQLOperand& x)
 55           {
 56               clear();
 57               assign(x);
 58               return *this;
 59           }
 60           
 61           void WQLOperand::clear()
 62           {
 63               if (_type == PROPERTY_NAME)
 64 karl  1.10     ((String*)_propertyName)->~String();
 65 mike  1.2      else if (_type == STRING_VALUE)
 66 karl  1.10     ((String*)_stringValue)->~String();
 67 mike  1.2  
 68                _type = NULL_VALUE;
 69            }
 70            
 71            void WQLOperand::assign(const WQLOperand& x)
 72            {
 73                switch (_type = x._type)
 74                {
 75 karl  1.10     case PROPERTY_NAME:
 76                    new(_propertyName) String(*((String*)x._propertyName));
 77                    break;
 78            
 79                case STRING_VALUE:
 80                    new(_stringValue) String(*((String*)x._stringValue));
 81                    break;
 82            
 83                case INTEGER_VALUE:
 84                    _integerValue = x._integerValue;
 85                    break;
 86            
 87                case DOUBLE_VALUE:
 88                    _doubleValue = x._doubleValue;
 89                    break;
 90            
 91                case BOOLEAN_VALUE:
 92                    _booleanValue = x._booleanValue;
 93                    break;
 94            
 95                case NULL_VALUE:
 96 karl  1.10         _integerValue = 0;
 97                    break;
 98 mike  1.2      }
 99            }
100            
101            String WQLOperand::toString() const
102            {
103                String result;
104            
105                switch (_type)
106                {
107 karl  1.10     case PROPERTY_NAME:
108                {
109                    result = "PROPERTY_NAME: ";
110                    result.append(*((String*)_propertyName));
111                    break;
112                }
113            
114                case STRING_VALUE:
115                {
116                    result = "STRING_VALUE: ";
117                    result.append(*((String*)_stringValue));
118                    break;
119                }
120            
121                case INTEGER_VALUE:
122                {
123                    result = "INTEGER_VALUE: ";
124                    char buffer[32];
125                    sprintf(buffer, "%" PEGASUS_64BIT_CONVERSION_WIDTH "d", 
126 w.otsuka 1.7                      _integerValue);
127 karl     1.10         result.append(buffer);
128                       break;
129                   }
130               
131                   case DOUBLE_VALUE:
132                   {
133                       result = "DOUBLE_VALUE: ";
134                       char buffer[32];
135                       sprintf(buffer, "%f", _doubleValue);
136                       result.append(buffer);
137                       break;
138                   } 
139               
140                   case BOOLEAN_VALUE:
141                   {
142                       result = "BOOLEAN_VALUE: ";
143               
144                       if (_booleanValue)
145                       result.append("TRUE");
146                       else
147                       result.append("FALSE");
148 karl     1.10 
149                       break;
150                   }
151               
152                   default:
153                       result = "NULL_VALUE";
154                       break;
155 mike     1.2      }
156               
157                   return result;
158               }
159               
160               PEGASUS_NAMESPACE_END

No CVS admin address has been configured
Powered by
ViewCVS 0.9.2