Apache Qpid - AMQP Messaging for Java JMS, C++, Python, Ruby, and .NET Apache Qpid Documentation
Variant.h
Go to the documentation of this file.
1 #ifndef QPID_TYPES_VARIANT_H
2 #define QPID_TYPES_VARIANT_H
3 
4 /*
5  *
6  * Licensed to the Apache Software Foundation (ASF) under one
7  * or more contributor license agreements. See the NOTICE file
8  * distributed with this work for additional information
9  * regarding copyright ownership. The ASF licenses this file
10  * to you under the Apache License, Version 2.0 (the
11  * "License"); you may not use this file except in compliance
12  * with the License. You may obtain a copy of the License at
13  *
14  * http://www.apache.org/licenses/LICENSE-2.0
15  *
16  * Unless required by applicable law or agreed to in writing,
17  * software distributed under the License is distributed on an
18  * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
19  * KIND, either express or implied. See the License for the
20  * specific language governing permissions and limitations
21  * under the License.
22  *
23  */
24 #include <list>
25 #include <map>
26 #include <ostream>
27 #include <string>
28 #include "Uuid.h"
29 #include "qpid/types/Exception.h"
30 #include "qpid/sys/IntegerTypes.h"
32 
33 namespace qpid {
34 namespace types {
35 
40 {
41  QPID_TYPES_EXTERN InvalidConversion(const std::string& msg);
43 };
44 
46  VAR_VOID = 0,
62 };
63 
64 QPID_TYPES_EXTERN std::string getTypeName(VariantType type);
65 
67 
68 class VariantImpl;
69 
74 {
75  public:
76  typedef std::map<std::string, Variant> Map;
77  typedef std::list<Variant> List;
78 
90  QPID_TYPES_EXTERN Variant(double);
91  QPID_TYPES_EXTERN Variant(const std::string&);
92  QPID_TYPES_EXTERN Variant(const std::string& value, const std::string& encoding);
93  QPID_TYPES_EXTERN Variant(const char*);
94  QPID_TYPES_EXTERN Variant(const char* value, const char* encoding);
99 
101 
102  QPID_TYPES_EXTERN VariantType getType() const;
103  QPID_TYPES_EXTERN bool isVoid() const;
104 
105  QPID_TYPES_EXTERN Variant& operator=(bool);
106  QPID_TYPES_EXTERN Variant& operator=(uint8_t);
107  QPID_TYPES_EXTERN Variant& operator=(uint16_t);
108  QPID_TYPES_EXTERN Variant& operator=(uint32_t);
109  QPID_TYPES_EXTERN Variant& operator=(uint64_t);
110  QPID_TYPES_EXTERN Variant& operator=(int8_t);
111  QPID_TYPES_EXTERN Variant& operator=(int16_t);
112  QPID_TYPES_EXTERN Variant& operator=(int32_t);
113  QPID_TYPES_EXTERN Variant& operator=(int64_t);
114  QPID_TYPES_EXTERN Variant& operator=(float);
115  QPID_TYPES_EXTERN Variant& operator=(double);
116  QPID_TYPES_EXTERN Variant& operator=(const std::string&);
117  QPID_TYPES_EXTERN Variant& operator=(const char*);
118  QPID_TYPES_EXTERN Variant& operator=(const Map&);
119  QPID_TYPES_EXTERN Variant& operator=(const List&);
120  QPID_TYPES_EXTERN Variant& operator=(const Variant&);
121  QPID_TYPES_EXTERN Variant& operator=(const Uuid&);
122 
127  QPID_TYPES_EXTERN Variant& parse(const std::string&);
128 
129  QPID_TYPES_EXTERN bool asBool() const;
130  QPID_TYPES_EXTERN uint8_t asUint8() const;
131  QPID_TYPES_EXTERN uint16_t asUint16() const;
132  QPID_TYPES_EXTERN uint32_t asUint32() const;
133  QPID_TYPES_EXTERN uint64_t asUint64() const;
134  QPID_TYPES_EXTERN int8_t asInt8() const;
135  QPID_TYPES_EXTERN int16_t asInt16() const;
136  QPID_TYPES_EXTERN int32_t asInt32() const;
137  QPID_TYPES_EXTERN int64_t asInt64() const;
138  QPID_TYPES_EXTERN float asFloat() const;
139  QPID_TYPES_EXTERN double asDouble() const;
140  QPID_TYPES_EXTERN std::string asString() const;
141  QPID_TYPES_EXTERN Uuid asUuid() const;
142 
143  QPID_TYPES_EXTERN operator bool() const;
144  QPID_TYPES_EXTERN operator uint8_t() const;
145  QPID_TYPES_EXTERN operator uint16_t() const;
146  QPID_TYPES_EXTERN operator uint32_t() const;
147  QPID_TYPES_EXTERN operator uint64_t() const;
148  QPID_TYPES_EXTERN operator int8_t() const;
149  QPID_TYPES_EXTERN operator int16_t() const;
150  QPID_TYPES_EXTERN operator int32_t() const;
151  QPID_TYPES_EXTERN operator int64_t() const;
152  QPID_TYPES_EXTERN operator float() const;
153  QPID_TYPES_EXTERN operator double() const;
154  QPID_TYPES_EXTERN operator std::string() const;
155  QPID_TYPES_EXTERN operator Uuid() const;
156 
157  QPID_TYPES_EXTERN const Map& asMap() const;
158  QPID_TYPES_EXTERN Map& asMap();
159  QPID_TYPES_EXTERN const List& asList() const;
160  QPID_TYPES_EXTERN List& asList();
161 
166  QPID_TYPES_EXTERN const std::string& getString() const;
167  QPID_TYPES_EXTERN std::string& getString();
168 
169  QPID_TYPES_EXTERN void setEncoding(const std::string&);
170  QPID_TYPES_EXTERN const std::string& getEncoding() const;
171 
172  QPID_TYPES_EXTERN bool isEqualTo(const Variant& a) const;
173 
175  QPID_TYPES_EXTERN void reset();
176 
178  QPID_TYPES_EXTERN bool isDescribed() const;
179 
188  QPID_TYPES_EXTERN Variant getDescriptor() const;
189 
191  QPID_TYPES_EXTERN void setDescriptor(const Variant& descriptor);
192 
197  QPID_TYPES_EXTERN List& getDescriptors();
198 
203  QPID_TYPES_EXTERN const List& getDescriptors() const;
204 
206  QPID_TYPES_EXTERN static Variant described(const Variant& descriptor, const Variant& value);
207 
209  QPID_TYPES_EXTERN static Variant described(const Variant& descriptor, const List& value);
210 
211  private:
212  mutable VariantImpl* impl;
213 };
214 
215 #ifndef SWIG
216 QPID_TYPES_EXTERN std::ostream& operator<<(std::ostream& out, const Variant& value);
217 QPID_TYPES_EXTERN std::ostream& operator<<(std::ostream& out, const Variant::Map& map);
218 QPID_TYPES_EXTERN std::ostream& operator<<(std::ostream& out, const Variant::List& list);
219 QPID_TYPES_EXTERN bool operator==(const Variant& a, const Variant& b);
220 QPID_TYPES_EXTERN bool operator!=(const Variant& a, const Variant& b);
221 #endif
222 }} // namespace qpid::types
223 
224 #endif
qpid::types::VAR_INT8
@ VAR_INT8
Definition: Variant.h:52
uint64_t
unsigned __int64 uint64_t
Definition: IntegerTypes.h:36
qpid::types::VAR_INT64
@ VAR_INT64
Definition: Variant.h:55
qpid::types::Variant::List
std::list< Variant > List
Definition: Variant.h:77
qpid::types::VAR_UUID
@ VAR_UUID
Definition: Variant.h:61
qpid::types::VAR_INT16
@ VAR_INT16
Definition: Variant.h:53
qpid::types::VAR_UINT32
@ VAR_UINT32
Definition: Variant.h:50
qpid::types::Variant
Represents a value of variable type.
Definition: Variant.h:73
QPID_TYPES_CLASS_EXTERN
#define QPID_TYPES_CLASS_EXTERN
Definition: ImportExport.h:31
qpid::types::operator==
QPID_TYPES_EXTERN bool operator==(const Uuid &, const Uuid &)
Returns true if the uuids are equal, false otherwise.
qpid::types::VAR_FLOAT
@ VAR_FLOAT
Definition: Variant.h:56
int8_t
signed char int8_t
Definition: IntegerTypes.h:31
qpid::types::Variant::Map
std::map< std::string, Variant > Map
Definition: Variant.h:76
qpid::types::VAR_INT32
@ VAR_INT32
Definition: Variant.h:54
Exception.h
int32_t
int int32_t
Definition: IntegerTypes.h:35
qpid::types::operator<<
QPID_TYPES_EXTERN std::ostream & operator<<(std::ostream &, Uuid)
Print in format 1b4e28ba-2fa1-11d2-883f-b9a761bde3fb.
qpid::types::VAR_DOUBLE
@ VAR_DOUBLE
Definition: Variant.h:57
qpid
This file was automatically generated from the AMQP specification.
Definition: arg.h:33
qpid::types::operator!=
QPID_TYPES_EXTERN bool operator!=(const Uuid &, const Uuid &)
Returns true if the uuids are NOT equal, false if they are.
uint16_t
unsigned short uint16_t
Definition: IntegerTypes.h:32
uint8_t
unsigned char uint8_t
Definition: IntegerTypes.h:30
qpid::types::VAR_UINT64
@ VAR_UINT64
Definition: Variant.h:51
qpid::types::VAR_BOOL
@ VAR_BOOL
Definition: Variant.h:47
qpid::types::Uuid
Definition: Uuid.h:32
QPID_TYPES_EXTERN
#define QPID_TYPES_EXTERN
Definition: ImportExport.h:30
Uuid.h
int16_t
short int16_t
Definition: IntegerTypes.h:33
qpid::types::InvalidConversion
Thrown when an illegal conversion of a variant is attempted.
Definition: Variant.h:39
qpid::types::Exception
Definition: Exception.h:31
IntegerTypes.h
qpid::types::VAR_UINT8
@ VAR_UINT8
Definition: Variant.h:48
qpid::types::VAR_UINT16
@ VAR_UINT16
Definition: Variant.h:49
uint32_t
unsigned int uint32_t
Definition: IntegerTypes.h:34
qpid::types::VAR_STRING
@ VAR_STRING
Definition: Variant.h:58
qpid::types::VariantType
VariantType
Definition: Variant.h:45
qpid::types::VAR_VOID
@ VAR_VOID
Definition: Variant.h:46
qpid::types::VAR_MAP
@ VAR_MAP
Definition: Variant.h:59
qpid::types::isIntegerType
QPID_TYPES_EXTERN bool isIntegerType(VariantType type)
int64_t
__int64 int64_t
Definition: IntegerTypes.h:37
qpid::types::getTypeName
QPID_TYPES_EXTERN std::string getTypeName(VariantType type)
qpid::types::VAR_LIST
@ VAR_LIST
Definition: Variant.h:60
ImportExport.h

Qpid C++ API Reference
Generated on Tue Aug 16 2022 for Qpid C++ Client API by doxygen 1.8.17