BLPAPI C++ 3.26.6
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
932// ============================================================================
933// INLINE FUNCTION DEFINITIONS
934// ============================================================================
935
936// -----------------------------
937// class SchemaElementDefinition
938// -----------------------------
939
941 blpapi_SchemaElementDefinition_t *handle)
942 : d_impl_p(handle)
943{
944}
945
947
949{
950 return Name(blpapi_SchemaElementDefinition_name(d_impl_p));
951}
952
953inline const char *SchemaElementDefinition::description() const
954{
955 return blpapi_SchemaElementDefinition_description(d_impl_p);
956}
957
959{
960 return blpapi_SchemaElementDefinition_status(d_impl_p);
961}
962
963inline const SchemaTypeDefinition
965{
966 return SchemaTypeDefinition(blpapi_SchemaElementDefinition_type(d_impl_p));
967}
968
970{
971 return blpapi_SchemaElementDefinition_minValues(d_impl_p);
972}
973
975{
976 return blpapi_SchemaElementDefinition_maxValues(d_impl_p);
977}
978
980{
981 return blpapi_SchemaElementDefinition_numAlternateNames(d_impl_p);
982}
983
985{
986 blpapi_Name_t *alternateName
987 = blpapi_SchemaElementDefinition_getAlternateName(d_impl_p, index);
988 if (alternateName == 0) {
989 ExceptionUtil::throwOnError(BLPAPI_ERROR_INDEX_OUT_OF_RANGE);
990 }
991 return Name(alternateName);
992}
993
995 std::ostream& stream, int level, int spacesPerLevel) const
996{
997 blpapi_SchemaElementDefinition_print(d_impl_p,
999 &stream,
1000 level,
1001 spacesPerLevel);
1002 return stream;
1003}
1004
1005inline std::ostream& operator<<(
1006 std::ostream& stream, const SchemaElementDefinition& element)
1007{
1008 element.print(stream, 0, -1);
1009 return stream;
1010}
1011
1012inline void SchemaElementDefinition::setUserData(void *newUserData)
1013{
1014 blpapi_SchemaElementDefinition_setUserData(d_impl_p, newUserData);
1015}
1016
1018{
1019 return blpapi_SchemaElementDefinition_userData(d_impl_p);
1020}
1021
1023inline blpapi_SchemaElementDefinition_t *SchemaElementDefinition::impl() const
1024{
1025 return d_impl_p;
1026}
1028// --------------------------
1029// class SchemaTypeDefinition
1030// --------------------------
1031
1033inline SchemaTypeDefinition::SchemaTypeDefinition(
1034 blpapi_SchemaTypeDefinition_t *handle)
1035 : d_impl_p(handle)
1036{
1037}
1039
1041
1043{
1044 return blpapi_SchemaTypeDefinition_datatype(d_impl_p);
1045}
1046
1048{
1049 return Name(blpapi_SchemaTypeDefinition_name(d_impl_p));
1050}
1051
1052inline const char *SchemaTypeDefinition::description() const
1053{
1054 return blpapi_SchemaTypeDefinition_description(d_impl_p);
1055}
1056
1058{
1059 return blpapi_SchemaTypeDefinition_status(d_impl_p);
1060}
1061
1063{
1064 return blpapi_SchemaTypeDefinition_numElementDefinitions(d_impl_p);
1065}
1066
1068 const Name& elementName) const
1069{
1070 return blpapi_SchemaTypeDefinition_getElementDefinition(
1071 d_impl_p, 0, elementName.impl())
1072 ? true
1073 : false;
1074}
1075
1077 const char *nameString) const
1078{
1079 return blpapi_SchemaTypeDefinition_getElementDefinition(
1080 d_impl_p, nameString, 0)
1081 ? true
1082 : false;
1083}
1084
1086 const Name& elementName) const
1087{
1088 blpapi_SchemaElementDefinition_t *def
1089 = blpapi_SchemaTypeDefinition_getElementDefinition(
1090 d_impl_p, 0, elementName.impl());
1091 if (def == 0) {
1092 ExceptionUtil::throwOnError(BLPAPI_ERROR_ITEM_NOT_FOUND);
1093 }
1094 return SchemaElementDefinition(def);
1095}
1096
1098 const char *nameString) const
1099{
1100 blpapi_SchemaElementDefinition_t *def
1101 = blpapi_SchemaTypeDefinition_getElementDefinition(
1102 d_impl_p, nameString, 0);
1103 if (def == 0) {
1104 ExceptionUtil::throwOnError(BLPAPI_ERROR_ITEM_NOT_FOUND);
1105 }
1106 return SchemaElementDefinition(def);
1107}
1108
1110 size_t index) const
1111{
1112 blpapi_SchemaElementDefinition_t *def
1113 = blpapi_SchemaTypeDefinition_getElementDefinitionAt(
1114 d_impl_p, index);
1115 if (def == 0) {
1116 ExceptionUtil::throwOnError(BLPAPI_ERROR_INDEX_OUT_OF_RANGE);
1117 }
1118 return SchemaElementDefinition(def);
1119}
1120
1122{
1123 return blpapi_SchemaTypeDefinition_isComplexType(d_impl_p) ? true : false;
1124}
1125
1127{
1128 return blpapi_SchemaTypeDefinition_isSimpleType(d_impl_p) ? true : false;
1129}
1130
1132{
1133 return blpapi_SchemaTypeDefinition_isEnumerationType(d_impl_p) ? true
1134 : false;
1135}
1136
1137inline std::ostream& SchemaTypeDefinition::print(
1138 std::ostream& stream, int level, int spacesPerLevel) const
1139{
1140 blpapi_SchemaTypeDefinition_print(d_impl_p,
1142 &stream,
1143 level,
1144 spacesPerLevel);
1145 return stream;
1146}
1147
1148inline std::ostream& operator<<(
1149 std::ostream& stream, const SchemaTypeDefinition& typeDef)
1150{
1151 typeDef.print(stream, 0, -1);
1152 return stream;
1153}
1154
1155inline void SchemaTypeDefinition::setUserData(void *newUserData)
1156{
1157 blpapi_SchemaTypeDefinition_setUserData(d_impl_p, newUserData);
1158}
1159
1161{
1162 return blpapi_SchemaTypeDefinition_userData(d_impl_p);
1163}
1164
1166{
1167 return ConstantList(blpapi_SchemaTypeDefinition_enumeration(d_impl_p));
1168}
1169
1170} // close namespace blpapi
1171} // close namespace BloombergLP
1172
1173#endif // #ifdef __cplusplus
1174
1175#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:948
~SchemaElementDefinition()
Definition blpapi_schema.h:946
Name getAlternateName(size_t index) const
Definition blpapi_schema.h:984
@ 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:994
void * userData() const
Definition blpapi_schema.h:1017
int status() const
Definition blpapi_schema.h:958
SchemaElementDefinition(blpapi_SchemaElementDefinition_t *handle)
Definition blpapi_schema.h:940
size_t numAlternateNames() const
Definition blpapi_schema.h:979
size_t maxValues() const
Definition blpapi_schema.h:974
const char * description() const
Definition blpapi_schema.h:953
size_t minValues() const
Definition blpapi_schema.h:969
void setUserData(void *userData)
Definition blpapi_schema.h:1012
const SchemaTypeDefinition typeDefinition() const
Definition blpapi_schema.h:964
Definition blpapi_schema.h:743
Name name() const
Definition blpapi_schema.h:1047
SchemaElementDefinition getElementDefinition(const Name &name) const
Definition blpapi_schema.h:1085
int datatype() const
Definition blpapi_schema.h:1042
bool hasElementDefinition(const Name &name) const
Definition blpapi_schema.h:1067
std::ostream & print(std::ostream &stream, int level=0, int spacesPerLevel=4) const
Definition blpapi_schema.h:1137
void * userData() const
Definition blpapi_schema.h:1160
size_t numElementDefinitions() const
Definition blpapi_schema.h:1062
bool isComplexType() const
Definition blpapi_schema.h:1121
const ConstantList enumeration() const
Definition blpapi_schema.h:1165
int status() const
Definition blpapi_schema.h:1057
~SchemaTypeDefinition()
Definition blpapi_schema.h:1040
const char * description() const
Definition blpapi_schema.h:1052
bool isSimpleType() const
Definition blpapi_schema.h:1126
void setUserData(void *userData)
Definition blpapi_schema.h:1155
bool isEnumerationType() const
Definition blpapi_schema.h:1131
Definition blpapi_abstractsession.h:452
std::ostream & operator<<(std::ostream &os, const CorrelationId &correlator)
Definition blpapi_correlationid.h:761
Definition blpapi_abstractsession.h:451
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