BLPAPI C++ 3.26.5
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
35
36#ifndef INCLUDED_BLPAPI_SCHEMA
37#define INCLUDED_BLPAPI_SCHEMA
38
80
81#ifndef INCLUDED_BLPAPI_CONSTANT
82#include <blpapi_constant.h>
83#endif
84
85#ifndef INCLUDED_BLPAPI_DEFS
86#include <blpapi_defs.h>
87#endif
88
89#ifndef INCLUDED_BLPAPI_EXCEPTION
90#include <blpapi_exception.h>
91#endif
92
93#ifndef INCLUDED_BLPAPI_NAME
94#include <blpapi_name.h>
95#endif
96
97#ifndef INCLUDED_BLPAPI_STREAMPROXY
98#include <blpapi_streamproxy.h>
99#endif
100
101#ifndef INCLUDED_BLPAPI_TYPES
102#include <blpapi_types.h>
103#endif
104
105#ifdef __cplusplus
106extern "C" {
107#endif
108
110typedef void *blpapi_SchemaTypeDefinition_t;
114
115BLPAPI_EXPORT
116blpapi_Name_t *blpapi_SchemaElementDefinition_name(
117 const blpapi_SchemaElementDefinition_t *field);
118
119BLPAPI_EXPORT
120const char *blpapi_SchemaElementDefinition_description(
121 const blpapi_SchemaElementDefinition_t *field);
122
123BLPAPI_EXPORT
124int blpapi_SchemaElementDefinition_status(
125 const blpapi_SchemaElementDefinition_t *field);
126
127BLPAPI_EXPORT
128blpapi_SchemaTypeDefinition_t *blpapi_SchemaElementDefinition_type(
129 const blpapi_SchemaElementDefinition_t *field);
130
131BLPAPI_EXPORT
132size_t blpapi_SchemaElementDefinition_numAlternateNames(
133 const blpapi_SchemaElementDefinition_t *field);
134
135BLPAPI_EXPORT
136blpapi_Name_t *blpapi_SchemaElementDefinition_getAlternateName(
137 const blpapi_SchemaElementDefinition_t *field, size_t index);
138
139// -- NOT USED or IMPLEMENTED: removing
140// BLPAPI_EXPORT
141// size_t blpapi_SchemaElementDefinition_numNames(
142// const blpapi_SchemaElementDefinition_t *field);
143
144BLPAPI_EXPORT
145size_t blpapi_SchemaElementDefinition_minValues(
146 const blpapi_SchemaElementDefinition_t *field);
147
148BLPAPI_EXPORT
149size_t blpapi_SchemaElementDefinition_maxValues(
150 const blpapi_SchemaElementDefinition_t *field);
151
152BLPAPI_EXPORT
153int blpapi_SchemaElementDefinition_print(
154 const blpapi_SchemaElementDefinition_t *element,
155 blpapi_StreamWriter_t streamWriter,
156 void *userStream,
157 int level,
158 int spacesPerLevel);
159
160BLPAPI_EXPORT
161void blpapi_SchemaElementDefinition_setUserData(
162 blpapi_SchemaElementDefinition_t *field, void *userdata);
163
164BLPAPI_EXPORT
165void *blpapi_SchemaElementDefinition_userData(
166 const blpapi_SchemaElementDefinition_t *field);
167
168BLPAPI_EXPORT
169blpapi_Name_t *blpapi_SchemaTypeDefinition_name(
170 const blpapi_SchemaTypeDefinition_t *type);
171
172BLPAPI_EXPORT
173const char *blpapi_SchemaTypeDefinition_description(
174 const blpapi_SchemaTypeDefinition_t *type);
175
176BLPAPI_EXPORT
177int blpapi_SchemaTypeDefinition_status(
178 const blpapi_SchemaTypeDefinition_t *type);
179
180BLPAPI_EXPORT
181int blpapi_SchemaTypeDefinition_datatype(
182 const blpapi_SchemaTypeDefinition_t *type);
183
184BLPAPI_EXPORT
185int blpapi_SchemaTypeDefinition_isComplexType(
186 const blpapi_SchemaTypeDefinition_t *type);
187
188BLPAPI_EXPORT
189int blpapi_SchemaTypeDefinition_isSimpleType(
190 const blpapi_SchemaTypeDefinition_t *type);
191
192BLPAPI_EXPORT
193int blpapi_SchemaTypeDefinition_isEnumerationType(
194 const blpapi_SchemaTypeDefinition_t *type);
195
196BLPAPI_EXPORT
197int blpapi_SchemaTypeDefinition_isComplex(
198 const blpapi_SchemaTypeDefinition_t *type);
199
200BLPAPI_EXPORT
201int blpapi_SchemaTypeDefinition_isSimple(
202 const blpapi_SchemaTypeDefinition_t *type);
203
204BLPAPI_EXPORT
205int blpapi_SchemaTypeDefinition_isEnumeration(
206 const blpapi_SchemaTypeDefinition_t *type);
207
208BLPAPI_EXPORT
209size_t blpapi_SchemaTypeDefinition_numElementDefinitions(
210 const blpapi_SchemaTypeDefinition_t *type);
211
212BLPAPI_EXPORT
213blpapi_SchemaElementDefinition_t *
214blpapi_SchemaTypeDefinition_getElementDefinition(
215 const blpapi_SchemaTypeDefinition_t *type,
216 const char *nameString,
217 const blpapi_Name_t *name);
218
219BLPAPI_EXPORT
220blpapi_SchemaElementDefinition_t *
221blpapi_SchemaTypeDefinition_getElementDefinitionAt(
222 const blpapi_SchemaTypeDefinition_t *type, size_t index);
223
224BLPAPI_EXPORT
225int blpapi_SchemaTypeDefinition_print(
226 const blpapi_SchemaTypeDefinition_t *element,
227 blpapi_StreamWriter_t streamWriter,
228 void *userStream,
229 int level,
230 int spacesPerLevel);
231
232BLPAPI_EXPORT
233void blpapi_SchemaTypeDefinition_setUserData(
234 blpapi_SchemaTypeDefinition_t *element, void *userdata);
235
236BLPAPI_EXPORT
237void *blpapi_SchemaTypeDefinition_userData(
238 const blpapi_SchemaTypeDefinition_t *element);
239
240BLPAPI_EXPORT
241blpapi_ConstantList_t *blpapi_SchemaTypeDefinition_enumeration(
242 const blpapi_SchemaTypeDefinition_t *element);
243
246
247#ifdef __cplusplus
248}
249
250#ifndef INCLUDED_IOSFWD
251#include <iosfwd>
252#define INCLUDED_IOSFWD
253#endif
254
261
262namespace BloombergLP {
263namespace blpapi {
264
273
274 enum Value {
275 ACTIVE = BLPAPI_STATUS_ACTIVE,
277
278 DEPRECATED = BLPAPI_STATUS_DEPRECATED,
281
282 INACTIVE = BLPAPI_STATUS_INACTIVE,
284
285 PENDING_DEPRECATION = BLPAPI_STATUS_PENDING_DEPRECATION
288 };
289};
290
291class SchemaTypeDefinition;
292
343
344 blpapi_SchemaElementDefinition_t *d_impl_p;
345
346 public:
347 /*
348 * Constants used in the SchemaElementDefinition interface.
349 */
350
351 enum {
352 UNBOUNDED = BLPAPI_ELEMENTDEFINITION_UNBOUNDED
354 };
355
356 explicit SchemaElementDefinition(blpapi_SchemaElementDefinition_t *handle);
357
362
363 void setUserData(void *userData);
372
373 Name name() const;
378
379 const char *description() const;
385
386 int status() const;
391
396
397 size_t minValues() const;
402
403 size_t maxValues() const;
408
409 size_t numAlternateNames() const;
413
414 Name getAlternateName(size_t index) const;
420
421 void *userData() const;
434
435 std::ostream& print(
436 std::ostream& stream, int level = 0, int spacesPerLevel = 4) const;
449
450 blpapi_SchemaElementDefinition_t *impl() const;
451};
452
487
489 blpapi_SchemaTypeDefinition_t *d_impl_p;
491
492 public:
494 explicit SchemaTypeDefinition(blpapi_SchemaTypeDefinition_t *handle);
496
501
502 // MANIPULATORS
503
504 void setUserData(void *userData);
512
513 // ACCESSORS
514
515 int datatype() const;
522
523 Name name() const;
527
528 const char *description() const;
535
536 int status() const;
541
542 size_t numElementDefinitions() const;
549
550 bool isComplexType() const;
555
556 bool isSimpleType() const;
561
562 bool isEnumerationType() const;
567
568 bool hasElementDefinition(const Name& name) const;
574
575 bool hasElementDefinition(const char *name) const;
581
588
589 SchemaElementDefinition getElementDefinition(const char *nameString) const;
595
602
603 const ConstantList enumeration() const;
609
610 void *userData() const;
623
624 std::ostream& print(
625 std::ostream& stream, int level = 0, int spacesPerLevel = 4) const;
638};
639
642
643// FREE OPERATORS
644
645std::ostream& operator<<(
646 std::ostream& stream, const SchemaElementDefinition& element);
658
659std::ostream& operator<<(
660 std::ostream& stream, const SchemaTypeDefinition& typeDef);
672
673// ============================================================================
674// INLINE FUNCTION DEFINITIONS
675// ============================================================================
676
677// -----------------------------
678// class SchemaElementDefinition
679// -----------------------------
680
682 blpapi_SchemaElementDefinition_t *handle)
683 : d_impl_p(handle)
684{
685}
686
688
690{
691 return Name(blpapi_SchemaElementDefinition_name(d_impl_p));
692}
693
694inline const char *SchemaElementDefinition::description() const
695{
696 return blpapi_SchemaElementDefinition_description(d_impl_p);
697}
698
700{
701 return blpapi_SchemaElementDefinition_status(d_impl_p);
702}
703
704inline const SchemaTypeDefinition
706{
707 return SchemaTypeDefinition(blpapi_SchemaElementDefinition_type(d_impl_p));
708}
709
711{
712 return blpapi_SchemaElementDefinition_minValues(d_impl_p);
713}
714
716{
717 return blpapi_SchemaElementDefinition_maxValues(d_impl_p);
718}
719
721{
722 return blpapi_SchemaElementDefinition_numAlternateNames(d_impl_p);
723}
724
726{
727 blpapi_Name_t *alternateName
728 = blpapi_SchemaElementDefinition_getAlternateName(d_impl_p, index);
729 if (alternateName == 0) {
730 ExceptionUtil::throwOnError(BLPAPI_ERROR_INDEX_OUT_OF_RANGE);
731 }
732 return Name(alternateName);
733}
734
736 std::ostream& stream, int level, int spacesPerLevel) const
737{
738 blpapi_SchemaElementDefinition_print(d_impl_p,
740 &stream,
741 level,
742 spacesPerLevel);
743 return stream;
744}
745
746inline std::ostream& operator<<(
747 std::ostream& stream, const SchemaElementDefinition& element)
748{
749 element.print(stream, 0, -1);
750 return stream;
751}
752
753inline void SchemaElementDefinition::setUserData(void *newUserData)
754{
755 blpapi_SchemaElementDefinition_setUserData(d_impl_p, newUserData);
756}
757
759{
760 return blpapi_SchemaElementDefinition_userData(d_impl_p);
761}
762
763inline blpapi_SchemaElementDefinition_t *SchemaElementDefinition::impl() const
764{
765 return d_impl_p;
766}
767// --------------------------
768// class SchemaTypeDefinition
769// --------------------------
770
772inline SchemaTypeDefinition::SchemaTypeDefinition(
773 blpapi_SchemaTypeDefinition_t *handle)
774 : d_impl_p(handle)
775{
776}
778
780
782{
783 return blpapi_SchemaTypeDefinition_datatype(d_impl_p);
784}
785
787{
788 return Name(blpapi_SchemaTypeDefinition_name(d_impl_p));
789}
790
791inline const char *SchemaTypeDefinition::description() const
792{
793 return blpapi_SchemaTypeDefinition_description(d_impl_p);
794}
795
797{
798 return blpapi_SchemaTypeDefinition_status(d_impl_p);
799}
800
802{
803 return blpapi_SchemaTypeDefinition_numElementDefinitions(d_impl_p);
804}
805
807 const Name& elementName) const
808{
809 return blpapi_SchemaTypeDefinition_getElementDefinition(
810 d_impl_p, 0, elementName.impl())
811 ? true
812 : false;
813}
814
816 const char *nameString) const
817{
818 return blpapi_SchemaTypeDefinition_getElementDefinition(
819 d_impl_p, nameString, 0)
820 ? true
821 : false;
822}
823
825 const Name& elementName) const
826{
827 blpapi_SchemaElementDefinition_t *def
828 = blpapi_SchemaTypeDefinition_getElementDefinition(
829 d_impl_p, 0, elementName.impl());
830 if (def == 0) {
831 ExceptionUtil::throwOnError(BLPAPI_ERROR_ITEM_NOT_FOUND);
832 }
833 return SchemaElementDefinition(def);
834}
835
837 const char *nameString) const
838{
839 blpapi_SchemaElementDefinition_t *def
840 = blpapi_SchemaTypeDefinition_getElementDefinition(
841 d_impl_p, nameString, 0);
842 if (def == 0) {
843 ExceptionUtil::throwOnError(BLPAPI_ERROR_ITEM_NOT_FOUND);
844 }
845 return SchemaElementDefinition(def);
846}
847
849 size_t index) const
850{
851 blpapi_SchemaElementDefinition_t *def
852 = blpapi_SchemaTypeDefinition_getElementDefinitionAt(
853 d_impl_p, index);
854 if (def == 0) {
855 ExceptionUtil::throwOnError(BLPAPI_ERROR_INDEX_OUT_OF_RANGE);
856 }
857 return SchemaElementDefinition(def);
858}
859
861{
862 return blpapi_SchemaTypeDefinition_isComplexType(d_impl_p) ? true : false;
863}
864
866{
867 return blpapi_SchemaTypeDefinition_isSimpleType(d_impl_p) ? true : false;
868}
869
871{
872 return blpapi_SchemaTypeDefinition_isEnumerationType(d_impl_p) ? true
873 : false;
874}
875
876inline std::ostream& SchemaTypeDefinition::print(
877 std::ostream& stream, int level, int spacesPerLevel) const
878{
879 blpapi_SchemaTypeDefinition_print(d_impl_p,
881 &stream,
882 level,
883 spacesPerLevel);
884 return stream;
885}
886
887inline std::ostream& operator<<(
888 std::ostream& stream, const SchemaTypeDefinition& typeDef)
889{
890 typeDef.print(stream, 0, -1);
891 return stream;
892}
893
894inline void SchemaTypeDefinition::setUserData(void *newUserData)
895{
896 blpapi_SchemaTypeDefinition_setUserData(d_impl_p, newUserData);
897}
898
900{
901 return blpapi_SchemaTypeDefinition_userData(d_impl_p);
902}
903
905{
906 return ConstantList(blpapi_SchemaTypeDefinition_enumeration(d_impl_p));
907}
908
909} // close namespace blpapi
910} // close namespace BloombergLP
911
912#endif // #ifdef __cplusplus
913
914#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:412
static void throwOnError(int errorCode)
Definition blpapi_exception.h:541
Definition blpapi_name.h:242
blpapi_Name_t * impl() const
Definition blpapi_name.h:495
Definition blpapi_schema.h:342
Name name() const
Definition blpapi_schema.h:689
~SchemaElementDefinition()
Definition blpapi_schema.h:687
Name getAlternateName(size_t index) const
Definition blpapi_schema.h:725
std::ostream & print(std::ostream &stream, int level=0, int spacesPerLevel=4) const
Definition blpapi_schema.h:735
void * userData() const
Definition blpapi_schema.h:758
blpapi_SchemaElementDefinition_t * impl() const
Definition blpapi_schema.h:763
int status() const
Definition blpapi_schema.h:699
@ UNBOUNDED
Indicates an array has an unbounded number of values.
Definition blpapi_schema.h:352
SchemaElementDefinition(blpapi_SchemaElementDefinition_t *handle)
Definition blpapi_schema.h:681
size_t numAlternateNames() const
Definition blpapi_schema.h:720
size_t maxValues() const
Definition blpapi_schema.h:715
const char * description() const
Definition blpapi_schema.h:694
size_t minValues() const
Definition blpapi_schema.h:710
void setUserData(void *userData)
Definition blpapi_schema.h:753
const SchemaTypeDefinition typeDefinition() const
Definition blpapi_schema.h:705
Definition blpapi_schema.h:486
Name name() const
Definition blpapi_schema.h:786
SchemaElementDefinition getElementDefinition(const Name &name) const
Definition blpapi_schema.h:824
int datatype() const
Definition blpapi_schema.h:781
bool hasElementDefinition(const Name &name) const
Definition blpapi_schema.h:806
std::ostream & print(std::ostream &stream, int level=0, int spacesPerLevel=4) const
Definition blpapi_schema.h:876
void * userData() const
Definition blpapi_schema.h:899
size_t numElementDefinitions() const
Definition blpapi_schema.h:801
bool isComplexType() const
Definition blpapi_schema.h:860
const ConstantList enumeration() const
Definition blpapi_schema.h:904
int status() const
Definition blpapi_schema.h:796
~SchemaTypeDefinition()
Definition blpapi_schema.h:779
const char * description() const
Definition blpapi_schema.h:791
bool isSimpleType() const
Definition blpapi_schema.h:865
void setUserData(void *userData)
Definition blpapi_schema.h:894
bool isEnumerationType() const
Definition blpapi_schema.h:870
Definition blpapi_abstractsession.h:212
std::ostream & operator<<(std::ostream &os, const CorrelationId &correlator)
Definition blpapi_correlationid.h:680
Definition blpapi_abstractsession.h:211
Definition blpapi_schema.h:272
Value
Definition blpapi_schema.h:274
@ ACTIVE
This item is current and may appear in Messages.
Definition blpapi_schema.h:275
@ INACTIVE
This item is not current and will not appear in Messages.
Definition blpapi_schema.h:282
@ DEPRECATED
Definition blpapi_schema.h:278
@ PENDING_DEPRECATION
Definition blpapi_schema.h:285
static int writeToStream(const char *data, int length, void *stream)
Definition blpapi_streamproxy.h:109