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
|