BLPAPI C++ 3.25.7
Loading...
Searching...
No Matches
blpapi_types.h
Go to the documentation of this file.
1/* Copyright 2012. Bloomberg Finance L.P.
2 *
3 * Permission is hereby granted, free of charge, to any person obtaining a copy
4 * of this software and associated documentation files (the "Software"), to
5 * deal in the Software without restriction, including without limitation the
6 * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
7 * sell copies of the Software, and to permit persons to whom the Software is
8 * furnished to do so, subject to the following conditions: The above
9 * copyright notice and this permission notice shall be included in all copies
10 * or substantial portions of the Software.
11 *
12 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
13 * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
14 * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
15 * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
16 * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
17 * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
18 * IN THE SOFTWARE.
19 */
20
28#ifndef INCLUDED_BLPAPI_TYPES
29#define INCLUDED_BLPAPI_TYPES
30
62typedef int blpapi_Bool_t;
63typedef char blpapi_Char_t;
64typedef unsigned char blpapi_UChar_t;
65typedef short blpapi_Int16_t;
66typedef unsigned short blpapi_UInt16_t;
67typedef int blpapi_Int32_t;
68typedef unsigned int blpapi_UInt32_t;
69typedef long long blpapi_Int64_t;
70typedef unsigned long long blpapi_UInt64_t;
71typedef float blpapi_Float32_t;
72typedef double blpapi_Float64_t;
73
115
125
126struct blpapi_AbstractSession;
127typedef struct blpapi_AbstractSession blpapi_AbstractSession_t;
128
129struct blpapi_Constant;
130typedef struct blpapi_Constant blpapi_Constant_t;
131
132struct blpapi_ConstantList;
133typedef struct blpapi_ConstantList blpapi_ConstantList_t;
134
135struct blpapi_Element;
136typedef struct blpapi_Element blpapi_Element_t;
137
138struct blpapi_Event;
139typedef struct blpapi_Event blpapi_Event_t;
140
141struct blpapi_EventDispatcher;
142typedef struct blpapi_EventDispatcher blpapi_EventDispatcher_t;
143
144struct blpapi_EventFormatter;
145typedef struct blpapi_EventFormatter blpapi_EventFormatter_t;
146
147struct blpapi_EventQueue;
148typedef struct blpapi_EventQueue blpapi_EventQueue_t;
149
150struct blpapi_MessageIterator;
151typedef struct blpapi_MessageIterator blpapi_MessageIterator_t;
152
153struct blpapi_Name;
154typedef struct blpapi_Name blpapi_Name_t;
155
156struct blpapi_Operation;
157typedef struct blpapi_Operation blpapi_Operation_t;
158
159struct blpapi_ProviderSession;
160typedef struct blpapi_ProviderSession blpapi_ProviderSession_t;
161
162struct blpapi_RequestTemplate;
163typedef struct blpapi_RequestTemplate blpapi_RequestTemplate_t;
164
165struct blpapi_Service;
166typedef struct blpapi_Service blpapi_Service_t;
167
168struct blpapi_Session;
169typedef struct blpapi_Session blpapi_Session_t;
170
171struct blpapi_SessionOptions;
172typedef struct blpapi_SessionOptions blpapi_SessionOptions_t;
173
174struct blpapi_Socks5Config;
175typedef struct blpapi_Socks5Config blpapi_Socks5Config_t;
176
177struct blpapi_TlsOptions;
178typedef struct blpapi_TlsOptions blpapi_TlsOptions_t;
179
180struct blpapi_SubscriptionItrerator;
181typedef struct blpapi_SubscriptionItrerator blpapi_SubscriptionIterator_t;
182
183struct blpapi_Identity;
184typedef struct blpapi_Identity blpapi_UserHandle;
185typedef struct blpapi_Identity blpapi_UserHandle_t;
186
187struct blpapi_Identity;
188typedef struct blpapi_Identity blpapi_Identity_t;
189
190struct blpapi_SchemaElementDefinition;
191typedef struct blpapi_SchemaElementDefinition blpapi_SchemaElementDefinition_t;
192
195
196struct blpapi_MessageFormatter;
197typedef struct blpapi_MessageFormatter blpapi_MessageFormatter_t;
198
199struct blpapi_MessageProperties;
200typedef struct blpapi_MessageProperties blpapi_MessageProperties_t;
201
202struct blpapi_AuthOptions;
203typedef struct blpapi_AuthOptions blpapi_AuthOptions_t;
204
205struct blpapi_AuthUser;
206typedef struct blpapi_AuthUser blpapi_AuthUser_t;
207
208struct blpapi_AuthApplication;
209typedef struct blpapi_AuthApplication blpapi_AuthApplication_t;
210
211struct blpapi_AuthToken;
212typedef struct blpapi_AuthToken blpapi_AuthToken_t;
213
214#ifdef __cplusplus
215
218#include <cassert>
219#include <cstddef>
220#include <iterator>
221#include <type_traits>
222#include <utility>
223
231namespace BloombergLP {
232namespace blpapi {
233
266
267#ifndef DOXYGEN_SHOULD_SKIP_THIS
268
269template <typename T, typename U = bool> struct IsString : std::false_type { };
270
271template <typename T>
272struct IsString<T,
273 typename std::enable_if<
274 std::is_member_function_pointer<decltype(&T::c_str)>::value,
275 bool>::type> : std::true_type { };
276
277template <typename T, typename U = bool>
278struct IsByteSequence : std::false_type { };
279
280template <typename T>
281struct IsByteSequence<T,
282 typename std::enable_if<
283 std::is_member_function_pointer<
284 decltype(static_cast<const typename T::value_type *(
285 T::*)() const>(&T::data))>::value
286 && sizeof(typename T::value_type) == 1
287 && !IsString<T>::value,
288 bool>::type> : std::true_type { };
289
290template <typename T, typename ITER, typename U = bool>
291struct IsByteContainer : std::false_type { };
292
293template <typename T, typename ITER>
294struct IsByteContainer<T,
295 ITER,
296 typename std::enable_if<std::is_constructible<T, ITER, ITER>::value
297 && sizeof(typename T::value_type) == 1,
298 bool>::type> : std::true_type { };
299
300#endif // ifndef DOXYGEN_SHOULD_SKIP_THIS
301
312class Bytes {
313
314 public:
315 typedef const char element_type;
316 typedef char value_type;
317 typedef std::size_t size_type;
318 typedef std::ptrdiff_t difference_type;
319 typedef const char *pointer;
320 typedef const char *const_pointer;
321 typedef const char& reference;
322 typedef const char& const_reference;
323 typedef const char *iterator;
324 typedef const char *const_iterator;
325 typedef std::reverse_iterator<iterator> reverse_iterator;
326 typedef std::reverse_iterator<const_iterator> const_reverse_iterator;
327
328 private:
330 const value_type *d_ptr;
332 size_type d_length;
333
334 public:
335 Bytes() noexcept;
340 Bytes(pointer ptr, size_type length) noexcept;
347 void assign(pointer ptr, size_type length) noexcept;
354 iterator begin() const noexcept;
361 iterator end() const noexcept;
368 reverse_iterator rbegin() const noexcept;
376 reverse_iterator rend() const noexcept;
384 reference front() const;
390 reference back() const;
396 reference operator[](size_type index) const;
403 pointer data() const noexcept;
408 size_type size() const noexcept;
413 bool empty() const noexcept;
418 Bytes first(size_type count) const;
425 Bytes last(size_type count) const;
432 Bytes subspan(size_type offset,
433 size_type count = static_cast<std::size_t>(-1)) const;
445 template <typename BYTE_CONTAINER,
446 typename std::enable_if<
447 IsByteContainer<BYTE_CONTAINER, iterator>::value,
448 bool>::type
449 = true>
450 operator BYTE_CONTAINER() const;
459};
460
475
476//=============================================================================
477// INLINE FUNCTION DEFINITIONS
478//=============================================================================
479
480// -----------
481// class Bytes
482// -----------
483
484inline Bytes::Bytes() noexcept
485 : d_ptr(nullptr)
486 , d_length(0)
487{
488}
489
490inline Bytes::Bytes(pointer ptr, size_type length) noexcept
491 : d_ptr(ptr)
492 , d_length(length)
493{
494}
495
496inline void Bytes::assign(pointer ptr, size_type length) noexcept
497{
498 d_ptr = ptr;
499 d_length = length;
500}
501
502inline Bytes::iterator Bytes::begin() const noexcept { return d_ptr; }
503
504inline Bytes::iterator Bytes::end() const noexcept { return d_ptr + d_length; }
505
507{
508 return reverse_iterator(end());
509}
510
512{
513 return reverse_iterator(begin());
514}
515
517{
518 assert(d_ptr);
519 assert(d_length);
520 return d_ptr[0];
521}
522
524{
525 assert(d_ptr);
526 assert(d_length);
527 return d_ptr[d_length - 1];
528}
529
531{
532 assert(d_ptr);
533 assert(index < d_length);
534 return d_ptr[index];
535}
536
537inline Bytes::pointer Bytes::data() const noexcept { return d_ptr; }
538
539inline Bytes::size_type Bytes::size() const noexcept { return d_length; }
540
541inline bool Bytes::empty() const noexcept { return 0 == d_length; }
542
543inline Bytes Bytes::first(size_type count) const
544{
545 assert(count <= d_length);
546 return Bytes(d_ptr, count);
547}
548
549inline Bytes Bytes::last(size_type count) const
550{
551 assert(count <= d_length);
552 return Bytes(d_ptr + d_length - count, count);
553}
554
555inline Bytes Bytes::subspan(size_type offset, size_type count) const
556{
557 assert(offset <= d_length);
558 assert(count == static_cast<std::size_t>(-1)
559 || count <= d_length - offset);
560 return Bytes(d_ptr + offset,
561 count == static_cast<std::size_t>(-1) ? d_length - offset : count);
562}
563
564template <typename BYTE_CONTAINER,
565 typename std::enable_if<
566 IsByteContainer<BYTE_CONTAINER, Bytes::iterator>::value,
567 bool>::type>
568inline Bytes::operator BYTE_CONTAINER() const
569{
570 assert(d_ptr || d_length == 0);
571 return BYTE_CONTAINER(begin(), end());
572}
573
574} // close namespace blpapi
575} // close namespace BloombergLP
576
577#endif // ifdef __cplusplus
578
579#endif // #ifndef INCLUDED_BLPAPI_TYPES
struct blpapi_RequestTemplate blpapi_RequestTemplate_t
Definition blpapi_dispatchtbl.h:97
unsigned long long blpapi_UInt64_t
Definition blpapi_types.h:70
int blpapi_Bool_t
Definition blpapi_types.h:62
char blpapi_Char_t
Definition blpapi_types.h:63
float blpapi_Float32_t
Definition blpapi_types.h:71
long long blpapi_Int64_t
Definition blpapi_types.h:69
short blpapi_Int16_t
Definition blpapi_types.h:65
unsigned short blpapi_UInt16_t
Definition blpapi_types.h:66
unsigned int blpapi_UInt32_t
Definition blpapi_types.h:68
int blpapi_Int32_t
Definition blpapi_types.h:67
double blpapi_Float64_t
Definition blpapi_types.h:72
unsigned char blpapi_UChar_t
Definition blpapi_types.h:64
Definition blpapi_types.h:312
void assign(pointer ptr, size_type length) noexcept
Definition blpapi_types.h:496
iterator begin() const noexcept
Definition blpapi_types.h:502
const char * iterator
Definition blpapi_types.h:323
Bytes first(size_type count) const
Definition blpapi_types.h:543
reference back() const
Definition blpapi_types.h:523
Bytes last(size_type count) const
Definition blpapi_types.h:549
const char * const_iterator
Definition blpapi_types.h:324
Bytes() noexcept
Definition blpapi_types.h:484
const char element_type
Definition blpapi_types.h:315
reference operator[](size_type index) const
Definition blpapi_types.h:530
bool empty() const noexcept
Definition blpapi_types.h:541
std::reverse_iterator< const_iterator > const_reverse_iterator
Definition blpapi_types.h:326
reverse_iterator rend() const noexcept
Definition blpapi_types.h:511
Bytes subspan(size_type offset, size_type count=static_cast< std::size_t >(-1)) const
Definition blpapi_types.h:555
pointer data() const noexcept
Definition blpapi_types.h:537
const char & reference
Definition blpapi_types.h:321
reverse_iterator rbegin() const noexcept
Definition blpapi_types.h:506
std::size_t size_type
Definition blpapi_types.h:317
std::reverse_iterator< iterator > reverse_iterator
Definition blpapi_types.h:325
size_type size() const noexcept
Definition blpapi_types.h:539
const char & const_reference
Definition blpapi_types.h:322
reference front() const
Definition blpapi_types.h:516
const char * pointer
Definition blpapi_types.h:319
iterator end() const noexcept
Definition blpapi_types.h:504
char value_type
Definition blpapi_types.h:316
std::ptrdiff_t difference_type
Definition blpapi_types.h:318
const char * const_pointer
Definition blpapi_types.h:320
struct blpapi_Service blpapi_Service_t
Definition blpapi_types.h:166
struct blpapi_EventQueue blpapi_EventQueue_t
Definition blpapi_types.h:148
struct blpapi_MessageProperties blpapi_MessageProperties_t
Definition blpapi_types.h:200
blpapi_Logging_Severity_t
Definition blpapi_types.h:116
struct blpapi_Constant blpapi_Constant_t
Definition blpapi_types.h:130
struct blpapi_Identity blpapi_Identity_t
Definition blpapi_types.h:188
struct blpapi_Event blpapi_Event_t
Definition blpapi_types.h:139
struct blpapi_Operation blpapi_Operation_t
Definition blpapi_types.h:157
struct blpapi_EventFormatter blpapi_EventFormatter_t
Definition blpapi_types.h:145
struct blpapi_MessageIterator blpapi_MessageIterator_t
Definition blpapi_types.h:151
struct blpapi_Session blpapi_Session_t
Definition blpapi_types.h:169
struct blpapi_MessageFormatter blpapi_MessageFormatter_t
Definition blpapi_types.h:197
struct blpapi_EventDispatcher blpapi_EventDispatcher_t
Definition blpapi_types.h:142
struct blpapi_Socks5Config blpapi_Socks5Config_t
Definition blpapi_types.h:175
struct blpapi_AuthApplication blpapi_AuthApplication_t
Definition blpapi_types.h:209
struct blpapi_Name blpapi_Name_t
Definition blpapi_types.h:154
struct blpapi_ConstantList blpapi_ConstantList_t
Definition blpapi_types.h:133
struct blpapi_SessionOptions blpapi_SessionOptions_t
Definition blpapi_types.h:172
struct blpapi_AuthOptions blpapi_AuthOptions_t
Definition blpapi_types.h:203
struct blpapi_Identity blpapi_UserHandle_t
Definition blpapi_types.h:185
struct blpapi_TlsOptions blpapi_TlsOptions_t
Definition blpapi_types.h:178
struct blpapi_AbstractSession blpapi_AbstractSession_t
Definition blpapi_types.h:127
struct blpapi_SubscriptionItrerator blpapi_SubscriptionIterator_t
Definition blpapi_types.h:181
struct blpapi_SchemaElementDefinition blpapi_SchemaElementDefinition_t
Definition blpapi_types.h:191
struct blpapi_AuthToken blpapi_AuthToken_t
Definition blpapi_types.h:212
struct blpapi_Element blpapi_Element_t
Definition blpapi_types.h:136
struct blpapi_Identity blpapi_UserHandle
Definition blpapi_types.h:184
struct blpapi_ProviderSession blpapi_ProviderSession_t
Definition blpapi_types.h:160
blpapi_DataType_t
Definition blpapi_types.h:80
struct blpapi_AuthUser blpapi_AuthUser_t
Definition blpapi_types.h:206
@ blpapi_Logging_SEVERITY_WARN
Definition blpapi_types.h:120
@ blpapi_Logging_SEVERITY_TRACE
Definition blpapi_types.h:123
@ blpapi_Logging_SEVERITY_FATAL
Definition blpapi_types.h:118
@ blpapi_Logging_SEVERITY_DEBUG
Definition blpapi_types.h:122
@ blpapi_Logging_SEVERITY_ERROR
Definition blpapi_types.h:119
@ blpapi_Logging_SEVERITY_OFF
Definition blpapi_types.h:117
@ blpapi_Logging_SEVERITY_INFO
Definition blpapi_types.h:121
@ BLPAPI_DATATYPE_STRING
ASCIIZ string.
Definition blpapi_types.h:95
@ BLPAPI_DATATYPE_CHAR
Char.
Definition blpapi_types.h:83
@ BLPAPI_DATATYPE_INT64
64 bit Integer
Definition blpapi_types.h:89
@ BLPAPI_DATATYPE_CORRELATION_ID
Used for some internal messages.
Definition blpapi_types.h:113
@ BLPAPI_DATATYPE_BYTEARRAY
Opaque binary data.
Definition blpapi_types.h:97
@ BLPAPI_DATATYPE_DATE
Date.
Definition blpapi_types.h:99
@ BLPAPI_DATATYPE_BYTE
Unsigned 8 bit value.
Definition blpapi_types.h:85
@ BLPAPI_DATATYPE_CHOICE
Choice type.
Definition blpapi_types.h:111
@ BLPAPI_DATATYPE_BOOL
Bool.
Definition blpapi_types.h:81
@ BLPAPI_DATATYPE_INT32
32 bit Integer
Definition blpapi_types.h:87
@ BLPAPI_DATATYPE_TIME
Timestamp.
Definition blpapi_types.h:101
@ BLPAPI_DATATYPE_DECIMAL
Definition blpapi_types.h:103
@ BLPAPI_DATATYPE_ENUMERATION
An opaque enumeration.
Definition blpapi_types.h:107
@ BLPAPI_DATATYPE_SEQUENCE
Sequence type.
Definition blpapi_types.h:109
@ BLPAPI_DATATYPE_FLOAT64
64 bit Floating point - IEEE
Definition blpapi_types.h:93
@ BLPAPI_DATATYPE_FLOAT32
32 bit Floating point - IEEE
Definition blpapi_types.h:91
@ BLPAPI_DATATYPE_DATETIME
Date and time.
Definition blpapi_types.h:105
blpapi_Char_t Char
Definition blpapi_types.h:465
blpapi_UInt32_t UInt32
Definition blpapi_types.h:470
blpapi_Bool_t Bool
Definition blpapi_types.h:464
blpapi_Float64_t Float64
Definition blpapi_types.h:474
blpapi_Float32_t Float32
Definition blpapi_types.h:473
blpapi_UInt64_t UInt64
Definition blpapi_types.h:472
blpapi_UInt16_t UInt16
Definition blpapi_types.h:468
blpapi_Int64_t Int64
Definition blpapi_types.h:471
blpapi_UChar_t UChar
Definition blpapi_types.h:466
blpapi_Int32_t Int32
Definition blpapi_types.h:469
blpapi_Int16_t Int16
Definition blpapi_types.h:467
Definition blpapi_abstractsession.h:195
Definition blpapi_types.h:241
Value
The possible data types which can be represented in an Element.
Definition blpapi_types.h:245
@ DATE
Date.
Definition blpapi_types.h:255
@ FLOAT32
32 bit Floating point
Definition blpapi_types.h:251
@ INT64
64 bit Integer
Definition blpapi_types.h:250
@ CHAR
Char.
Definition blpapi_types.h:247
@ DATETIME
Date and time.
Definition blpapi_types.h:258
@ FLOAT64
64 bit Floating point
Definition blpapi_types.h:252
@ BYTE
Unsigned 8 bit value.
Definition blpapi_types.h:248
@ CHOICE
Choice type.
Definition blpapi_types.h:261
@ SEQUENCE
Sequence type.
Definition blpapi_types.h:260
@ INT32
32 bit Integer
Definition blpapi_types.h:249
@ ENUMERATION
An opaque enumeration.
Definition blpapi_types.h:259
@ BYTEARRAY
Opaque binary data.
Definition blpapi_types.h:254
@ BOOL
Boolean.
Definition blpapi_types.h:246
@ TIME
Timestamp.
Definition blpapi_types.h:256
@ STRING
ASCIIZ string.
Definition blpapi_types.h:253
@ DECIMAL
Currently Unsupported.
Definition blpapi_types.h:257
@ CORRELATION_ID
Definition blpapi_types.h:262
Definition blpapi_datetime.h:102