BLPAPI C++ 3.26.7
Loading...
Searching...
No Matches
blpapi_schema.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
37
38#ifndef INCLUDED_BLPAPI_SCHEMA
39#define INCLUDED_BLPAPI_SCHEMA
40
81
82#include <blpapi_constant.h>
83#include <blpapi_defs.h>
84#include <blpapi_exception.h>
85#include <blpapi_name.h>
86#include <blpapi_streamproxy.h>
87#include <blpapi_types.h>
88
89#ifdef __cplusplus
90extern "C" {
91#endif
92
94typedef void *blpapi_SchemaTypeDefinition_t;
98
107BLPAPI_EXPORT
108blpapi_Name_t *blpapi_SchemaElementDefinition_name(
109 const blpapi_SchemaElementDefinition_t *field);
110
120BLPAPI_EXPORT
121const char *blpapi_SchemaElementDefinition_description(
122 const blpapi_SchemaElementDefinition_t *field);
123
133BLPAPI_EXPORT
134int blpapi_SchemaElementDefinition_status(
135 const blpapi_SchemaElementDefinition_t *field);
136
146BLPAPI_EXPORT
147blpapi_SchemaTypeDefinition_t *blpapi_SchemaElementDefinition_type(
148 const blpapi_SchemaElementDefinition_t *field);
149
157BLPAPI_EXPORT
158size_t blpapi_SchemaElementDefinition_numAlternateNames(
159 const blpapi_SchemaElementDefinition_t *field);
160
170BLPAPI_EXPORT
171blpapi_Name_t *blpapi_SchemaElementDefinition_getAlternateName(
172 const blpapi_SchemaElementDefinition_t *field, size_t index);
173
174// -- NOT USED or IMPLEMENTED: removing
175// BLPAPI_EXPORT
176// size_t blpapi_SchemaElementDefinition_numNames(
177// const blpapi_SchemaElementDefinition_t *field);
178
187BLPAPI_EXPORT
188size_t blpapi_SchemaElementDefinition_minValues(
189 const blpapi_SchemaElementDefinition_t *field);
190
201BLPAPI_EXPORT
202size_t blpapi_SchemaElementDefinition_maxValues(
203 const blpapi_SchemaElementDefinition_t *field);
204
221BLPAPI_EXPORT
222int blpapi_SchemaElementDefinition_print(
223 const blpapi_SchemaElementDefinition_t *element,
224 blpapi_StreamWriter_t streamWriter,
225 void *userStream,
226 int level,
227 int spacesPerLevel);
228
239BLPAPI_EXPORT
240void blpapi_SchemaElementDefinition_setUserData(
241 blpapi_SchemaElementDefinition_t *field, void *userdata);
242
254BLPAPI_EXPORT
255void *blpapi_SchemaElementDefinition_userData(
256 const blpapi_SchemaElementDefinition_t *field);
257
266BLPAPI_EXPORT
267blpapi_Name_t *blpapi_SchemaTypeDefinition_name(
268 const blpapi_SchemaTypeDefinition_t *type);
269
279BLPAPI_EXPORT
280const char *blpapi_SchemaTypeDefinition_description(
281 const blpapi_SchemaTypeDefinition_t *type);
282
292BLPAPI_EXPORT
293int blpapi_SchemaTypeDefinition_status(
294 const blpapi_SchemaTypeDefinition_t *type);
295
304BLPAPI_EXPORT
305int blpapi_SchemaTypeDefinition_datatype(
306 const blpapi_SchemaTypeDefinition_t *type);
307
316BLPAPI_EXPORT
317int blpapi_SchemaTypeDefinition_isComplexType(
318 const blpapi_SchemaTypeDefinition_t *type);
319
328BLPAPI_EXPORT
329int blpapi_SchemaTypeDefinition_isSimpleType(
330 const blpapi_SchemaTypeDefinition_t *type);
331
340BLPAPI_EXPORT
341int blpapi_SchemaTypeDefinition_isEnumerationType(
342 const blpapi_SchemaTypeDefinition_t *type);
343
353BLPAPI_EXPORT
354int blpapi_SchemaTypeDefinition_isComplex(
355 const blpapi_SchemaTypeDefinition_t *type);
356
366BLPAPI_EXPORT
367int blpapi_SchemaTypeDefinition_isSimple(
368 const blpapi_SchemaTypeDefinition_t *type);
369
379BLPAPI_EXPORT
380int blpapi_SchemaTypeDefinition_isEnumeration(
381 const blpapi_SchemaTypeDefinition_t *type);
382
392BLPAPI_EXPORT
393size_t blpapi_SchemaTypeDefinition_numElementDefinitions(
394 const blpapi_SchemaTypeDefinition_t *type);
395
415BLPAPI_EXPORT
416blpapi_SchemaElementDefinition_t *
417blpapi_SchemaTypeDefinition_getElementDefinition(
418 const blpapi_SchemaTypeDefinition_t *type,
419 const char *nameString,
420 const blpapi_Name_t *name);
421
432BLPAPI_EXPORT
433blpapi_SchemaElementDefinition_t *
434blpapi_SchemaTypeDefinition_getElementDefinitionAt(
435 const blpapi_SchemaTypeDefinition_t *type, size_t index);
436
453BLPAPI_EXPORT
454int blpapi_SchemaTypeDefinition_print(
455 const blpapi_SchemaTypeDefinition_t *element,
456 blpapi_StreamWriter_t streamWriter,
457 void *userStream,
458 int level,
459 int spacesPerLevel);
460
471BLPAPI_EXPORT
472void blpapi_SchemaTypeDefinition_setUserData(
473 blpapi_SchemaTypeDefinition_t *element, void *userdata);
474
486BLPAPI_EXPORT
487void *blpapi_SchemaTypeDefinition_userData(
488 const blpapi_SchemaTypeDefinition_t *element);
489
499BLPAPI_EXPORT
500blpapi_ConstantList_t *blpapi_SchemaTypeDefinition_enumeration(
501 const blpapi_SchemaTypeDefinition_t *element);
502
505
506#ifdef __cplusplus
507}
508
509#include <iosfwd>
510
511namespace BloombergLP {
512namespace blpapi {
519
528
529 enum Value {
530 ACTIVE = BLPAPI_STATUS_ACTIVE,
532
533 DEPRECATED = BLPAPI_STATUS_DEPRECATED,
536
537 INACTIVE = BLPAPI_STATUS_INACTIVE,
539
540 PENDING_DEPRECATION = BLPAPI_STATUS_PENDING_DEPRECATION
543 };
544};
545
546class SchemaTypeDefinition;
547
598
599 blpapi_SchemaElementDefinition_t *d_impl_p;
600
601 public:
602 /*
603 * Constants used in the SchemaElementDefinition interface.
604 */
605
606 enum {
607 UNBOUNDED = BLPAPI_ELEMENTDEFINITION_UNBOUNDED
609 };
610
611 explicit SchemaElementDefinition(blpapi_SchemaElementDefinition_t *handle);
612
617
618 void setUserData(void *userData);
627
628 Name name() const;
633
634 const char *description() const;
640
641 int status() const;
646
651
652 size_t minValues() const;
657
658 size_t maxValues() const;
663
664 size_t numAlternateNames() const;
668
669 Name getAlternateName(size_t index) const;
675
676 void *userData() const;
689
690 std::ostream& print(
691 std::ostream& stream, int level = 0, int spacesPerLevel = 4) const;
704
706 blpapi_SchemaElementDefinition_t *impl() const;
708};
709
744
746 blpapi_SchemaTypeDefinition_t *d_impl_p;
748
749 public:
751 explicit SchemaTypeDefinition(blpapi_SchemaTypeDefinition_t *handle);
753
758
759 // MANIPULATORS
760
761 void setUserData(void *userData);
769
770 // ACCESSORS
771
772 int datatype() const;
779
780 Name name() const;
784
785 const char *description() const;
792
793 int status() const;
798
799 size_t numElementDefinitions() const;
806
807 bool isComplexType() const;
812
813 bool isSimpleType() const;
818
819 bool isEnumerationType() const;
824
825 bool hasElementDefinition(const Name& name) const;
831
832 bool hasElementDefinition(const char *name) const;
838
845
846 SchemaElementDefinition getElementDefinition(const char *nameString) const;
854
861
862 const ConstantList enumeration() const;
868
869 void *userData() const;
882
883 std::ostream& print(
884 std::ostream& stream, int level = 0, int spacesPerLevel = 4) const;
897};
898
901
902// FREE OPERATORS
903
904std::ostream& operator<<(
905 std::ostream& stream, const SchemaElementDefinition& element);
917
918std::ostream& operator<<(
919 std::ostream& stream, const SchemaTypeDefinition& typeDef);
931
932namespace util {
933
937
938constexpr const char *to_string(SchemaStatus::Value status);
942
944
945} // close namespace util
946
947// ============================================================================
948// INLINE FUNCTION DEFINITIONS
949// ============================================================================
950
951// -----------------------------
952// class SchemaElementDefinition
953// -----------------------------
954
956 blpapi_SchemaElementDefinition_t *handle)
957 : d_impl_p(handle)
958{
959}
960
962
964{
965 return Name(blpapi_SchemaElementDefinition_name(d_impl_p));
966}
967
968inline const char *SchemaElementDefinition::description() const
969{
970 return blpapi_SchemaElementDefinition_description(d_impl_p);
971}
972
974{
975 return blpapi_SchemaElementDefinition_status(d_impl_p);
976}
977
978inline const SchemaTypeDefinition
980{
981 return SchemaTypeDefinition(blpapi_SchemaElementDefinition_type(d_impl_p));
982}
983
985{
986 return blpapi_SchemaElementDefinition_minValues(d_impl_p);
987}
988
990{
991 return blpapi_SchemaElementDefinition_maxValues(d_impl_p);
992}
993
995{
996 return blpapi_SchemaElementDefinition_numAlternateNames(d_impl_p);
997}
998
1000{
1001 blpapi_Name_t *alternateName
1002 = blpapi_SchemaElementDefinition_getAlternateName(d_impl_p, index);
1003 if (alternateName == 0) {
1004 ExceptionUtil::throwOnError(BLPAPI_ERROR_INDEX_OUT_OF_RANGE);
1005 }
1006 return Name(alternateName);
1007}
1008
1010 std::ostream& stream, int level, int spacesPerLevel) const
1011{
1012 blpapi_SchemaElementDefinition_print(d_impl_p,
1014 &stream,
1015 level,
1016 spacesPerLevel);
1017 return stream;
1018}
1019
1020inline std::ostream& operator<<(
1021 std::ostream& stream, const SchemaElementDefinition& element)
1022{
1023 element.print(stream, 0, -1);
1024 return stream;
1025}
1026
1027inline void SchemaElementDefinition::setUserData(void *newUserData)
1028{
1029 blpapi_SchemaElementDefinition_setUserData(d_impl_p, newUserData);
1030}
1031
1033{
1034 return blpapi_SchemaElementDefinition_userData(d_impl_p);
1035}
1036
1038inline blpapi_SchemaElementDefinition_t *SchemaElementDefinition::impl() const
1039{
1040 return d_impl_p;
1041}
1043// --------------------------
1044// class SchemaTypeDefinition
1045// --------------------------
1046
1048inline SchemaTypeDefinition::SchemaTypeDefinition(
1049 blpapi_SchemaTypeDefinition_t *handle)
1050 : d_impl_p(handle)
1051{
1052}
1054
1056
1058{
1059 return blpapi_SchemaTypeDefinition_datatype(d_impl_p);
1060}
1061
1063{
1064 return Name(blpapi_SchemaTypeDefinition_name(d_impl_p));
1065}
1066
1067inline const char *SchemaTypeDefinition::description() const
1068{
1069 return blpapi_SchemaTypeDefinition_description(d_impl_p);
1070}
1071
1073{
1074 return blpapi_SchemaTypeDefinition_status(d_impl_p);
1075}
1076
1078{
1079 return blpapi_SchemaTypeDefinition_numElementDefinitions(d_impl_p);
1080}
1081
1083 const Name& elementName) const
1084{
1085 return blpapi_SchemaTypeDefinition_getElementDefinition(
1086 d_impl_p, 0, elementName.impl())
1087 ? true
1088 : false;
1089}
1090
1092 const char *nameString) const
1093{
1094 return blpapi_SchemaTypeDefinition_getElementDefinition(
1095 d_impl_p, nameString, 0)
1096 ? true
1097 : false;
1098}
1099
1101 const Name& elementName) const
1102{
1103 blpapi_SchemaElementDefinition_t *def
1104 = blpapi_SchemaTypeDefinition_getElementDefinition(
1105 d_impl_p, 0, elementName.impl());
1106 if (def == 0) {
1107 ExceptionUtil::throwOnError(BLPAPI_ERROR_ITEM_NOT_FOUND);
1108 }
1109 return SchemaElementDefinition(def);
1110}
1111
1113 const char *nameString) const
1114{
1115 blpapi_SchemaElementDefinition_t *def
1116 = blpapi_SchemaTypeDefinition_getElementDefinition(
1117 d_impl_p, nameString, 0);
1118 if (def == 0) {
1119 ExceptionUtil::throwOnError(BLPAPI_ERROR_ITEM_NOT_FOUND);
1120 }
1121 return SchemaElementDefinition(def);
1122}
1123
1125 size_t index) const
1126{
1127 blpapi_SchemaElementDefinition_t *def
1128 = blpapi_SchemaTypeDefinition_getElementDefinitionAt(
1129 d_impl_p, index);
1130 if (def == 0) {
1131 ExceptionUtil::throwOnError(BLPAPI_ERROR_INDEX_OUT_OF_RANGE);
1132 }
1133 return SchemaElementDefinition(def);
1134}
1135
1137{
1138 return blpapi_SchemaTypeDefinition_isComplexType(d_impl_p) ? true : false;
1139}
1140
1142{
1143 return blpapi_SchemaTypeDefinition_isSimpleType(d_impl_p) ? true : false;
1144}
1145
1147{
1148 return blpapi_SchemaTypeDefinition_isEnumerationType(d_impl_p) ? true
1149 : false;
1150}
1151
1152inline std::ostream& SchemaTypeDefinition::print(
1153 std::ostream& stream, int level, int spacesPerLevel) const
1154{
1155 blpapi_SchemaTypeDefinition_print(d_impl_p,
1157 &stream,
1158 level,
1159 spacesPerLevel);
1160 return stream;
1161}
1162
1163inline std::ostream& operator<<(
1164 std::ostream& stream, const SchemaTypeDefinition& typeDef)
1165{
1166 typeDef.print(stream, 0, -1);
1167 return stream;
1168}
1169
1170inline void SchemaTypeDefinition::setUserData(void *newUserData)
1171{
1172 blpapi_SchemaTypeDefinition_setUserData(d_impl_p, newUserData);
1173}
1174
1176{
1177 return blpapi_SchemaTypeDefinition_userData(d_impl_p);
1178}
1179
1181{
1182 return ConstantList(blpapi_SchemaTypeDefinition_enumeration(d_impl_p));
1183}
1184
1185// --------------
1186// namespace util
1187// --------------
1188constexpr const char *util::to_string(SchemaStatus::Value status)
1189{
1190 switch (status) {
1192 return "ACTIVE";
1194 return "DEPRECATED";
1196 return "INACTIVE";
1198 return "PENDING_DEPRECATION";
1199 }
1200 // Silence warnings on some compilers
1201 return "UNDEFINED";
1202}
1203
1204} // close namespace blpapi
1205} // close namespace BloombergLP
1206
1207#endif // #ifdef __cplusplus
1208
1209#endif // #ifndef INCLUDED_BLPAPI_SCHEMA
Provide a representation for schema-level enumeration constants.
Common definitions used by the library.
Defines Exceptions that can be thrown by the blpapi library.
Provide a representation of strings for use as container keys.
A signature for callback on print and default C++ implementation.
Provide BLPAPI types.
Definition blpapi_constant.h:626
static void throwOnError(int errorCode)
Definition blpapi_exception.h:556
Definition blpapi_name.h:228
Definition blpapi_schema.h:597
Name name() const
Definition blpapi_schema.h:963
~SchemaElementDefinition()
Definition blpapi_schema.h:961
Name getAlternateName(size_t index) const
Definition blpapi_schema.h:999
@ UNBOUNDED
Indicates an array has an unbounded number of values.
Definition blpapi_schema.h:607
std::ostream & print(std::ostream &stream, int level=0, int spacesPerLevel=4) const
Definition blpapi_schema.h:1009
void * userData() const
Definition blpapi_schema.h:1032
int status() const
Definition blpapi_schema.h:973
SchemaElementDefinition(blpapi_SchemaElementDefinition_t *handle)
Definition blpapi_schema.h:955
size_t numAlternateNames() const
Definition blpapi_schema.h:994
size_t maxValues() const
Definition blpapi_schema.h:989
const char * description() const
Definition blpapi_schema.h:968
size_t minValues() const
Definition blpapi_schema.h:984
void setUserData(void *userData)
Definition blpapi_schema.h:1027
const SchemaTypeDefinition typeDefinition() const
Definition blpapi_schema.h:979
Definition blpapi_schema.h:743
Name name() const
Definition blpapi_schema.h:1062
SchemaElementDefinition getElementDefinition(const Name &name) const
Definition blpapi_schema.h:1100
int datatype() const
Definition blpapi_schema.h:1057
bool hasElementDefinition(const Name &name) const
Definition blpapi_schema.h:1082
std::ostream & print(std::ostream &stream, int level=0, int spacesPerLevel=4) const
Definition blpapi_schema.h:1152
void * userData() const
Definition blpapi_schema.h:1175
size_t numElementDefinitions() const
Definition blpapi_schema.h:1077
bool isComplexType() const
Definition blpapi_schema.h:1136
const ConstantList enumeration() const
Definition blpapi_schema.h:1180
int status() const
Definition blpapi_schema.h:1072
~SchemaTypeDefinition()
Definition blpapi_schema.h:1055
const char * description() const
Definition blpapi_schema.h:1067
bool isSimpleType() const
Definition blpapi_schema.h:1141
void setUserData(void *userData)
Definition blpapi_schema.h:1170
bool isEnumerationType() const
Definition blpapi_schema.h:1146
constexpr const char * to_string(CorrelationId::ValueType valueType)
Definition blpapi_correlationid.h:830
Definition blpapi_correlationid.h:499
Definition blpapi_abstractsession.h:448
std::ostream & operator<<(std::ostream &os, const CorrelationId &correlator)
Definition blpapi_correlationid.h:792
Definition blpapi_abstractsession.h:447
Definition blpapi_schema.h:527
Value
Definition blpapi_schema.h:529
@ ACTIVE
This item is current and may appear in Messages.
Definition blpapi_schema.h:530
@ INACTIVE
This item is not current and will not appear in Messages.
Definition blpapi_schema.h:537
@ DEPRECATED
Definition blpapi_schema.h:533
@ PENDING_DEPRECATION
Definition blpapi_schema.h:540
static int writeToStream(const char *data, int length, void *stream)
Definition blpapi_streamproxy.h:108