#include <blpapi_schema.h>
Public Member Functions | |
SchemaTypeDefinition (blpapi_SchemaTypeDefinition_t *handle) | |
~SchemaTypeDefinition () | |
void | setUserData (void *userData) |
int | datatype () const |
Name | name () const |
const char * | description () const |
int | status () const |
size_t | numElementDefinitions () const |
bool | isComplexType () const |
bool | isSimpleType () const |
bool | isEnumerationType () const |
bool | hasElementDefinition (const Name &name) const |
bool | hasElementDefinition (const char *name) const |
SchemaElementDefinition | getElementDefinition (const Name &name) const |
SchemaElementDefinition | getElementDefinition (const char *nameString) const |
SchemaElementDefinition | getElementDefinition (size_t index) const |
const ConstantList | enumeration () const |
void * | userData () const |
std::ostream & | print (std::ostream &stream, int level=0, int spacesPerLevel=4) const |
This class implements a representation of a "type" that can be used within a schema, including both simple atomic types (integers, dates, strings, etc.) as well as "complex" types defined a sequences of or choice among a collection (named) elements, each of which is in turn described by another type. In addition to accessors for the type's structure, this class also offers access to metadata providing a description and deprecation status for the type. Finally, SchemaTypeDefinition
provides an interface for associating arbitrary user-defined data (specified as a void*
) with a type definition.
Each SchemaElementDefinition
object is associated with a single SchemaTypeDefinition
; one SchemaTypeDefinition
may be used by zero, one, or many SchemaElementDefinition
objects.
SchemaTypeDefinition
objects are read-only, with the exception of a single void*
attribute for storing user data. SchemaTypeDefinition
objects have reference semantics with respect to this user data field: calling c.setUserData(void*)
modifies the user data associated with c
, as well as that associated with all copies of c
. As a result, functions which set or read this attribute are NOT per-object thread-safe. Clients must syncrhonize such operations across all copies of an object.
Application clients need never create fresh SchemaTypeDefinition
objects directly; applications will typically work with copies of objects returned by other blpapi
components.
blpapi::SchemaTypeDefinition::SchemaTypeDefinition | ( | blpapi_SchemaTypeDefinition_t * | handle | ) |
blpapi::SchemaTypeDefinition::~SchemaTypeDefinition | ( | ) |
Destroy this object.
void blpapi::SchemaTypeDefinition::setUserData | ( | void * | userData | ) |
Set the user data associated with this SchemaTypeDefinition
-- and all copies of this SchemaTypeDefinition
-- to the specified userData
. Clients are responsible for synchronizing calls to this function, and to userData()
, across all copies of this SchemaTypeDefinition
object.
int blpapi::SchemaTypeDefinition::datatype | ( | ) | const |
Return the DataType
of this SchemaTypeDefinition
.
Name blpapi::SchemaTypeDefinition::name | ( | ) | const |
Return the name of this SchemaTypeDefinition
.
const char* blpapi::SchemaTypeDefinition::description | ( | ) | const |
Return a null-terminated string which contains a human readable description of this SchemaTypeDefinition
. The returned pointer remains valid until this SchemaTypeDefinition
is destroyed.
int blpapi::SchemaTypeDefinition::status | ( | ) | const |
Return the deprecation status, as a SchemaStatus::Value
, of this SchemaTypeDefinition
.
size_t blpapi::SchemaTypeDefinition::numElementDefinitions | ( | ) | const |
Return the number of SchemaElementDefinition
objects contained by this SchemaTypeDefinition
. If this SchemaTypeDefinition
is neither a choice nor a sequence this will return 0.
bool blpapi::SchemaTypeDefinition::isComplexType | ( | ) | const |
Return true
if this SchemaTypeDefinition
represents a sequence or choice type.
bool blpapi::SchemaTypeDefinition::isSimpleType | ( | ) | const |
Return true
if this SchemaTypeDefinition
represents neither a sequence nor a choice type.
bool blpapi::SchemaTypeDefinition::isEnumerationType | ( | ) | const |
Return true
if this SchemaTypeDefinition
represents an enumeration type.
bool blpapi::SchemaTypeDefinition::hasElementDefinition | ( | const Name & | name | ) | const |
Return true
if this SchemaTypeDefinition
contains an element with the specified name
; otherwise returns false
.
bool blpapi::SchemaTypeDefinition::hasElementDefinition | ( | const char * | name | ) | const |
Return true
if this SchemaTypeDefinition
contains an element with the specified name
; otherwise returns false
.
SchemaElementDefinition blpapi::SchemaTypeDefinition::getElementDefinition | ( | const Name & | name | ) | const |
Return the definition of the element identified by the specified name
. If hasElementDefinition(name) != true
then an exception is thrown.
SchemaElementDefinition blpapi::SchemaTypeDefinition::getElementDefinition | ( | const char * | nameString | ) | const |
Return the definition of the element identified by the specified nameString
. If hasElementDefinition(nameString) != true
then an exception is thrown.
SchemaElementDefinition blpapi::SchemaTypeDefinition::getElementDefinition | ( | size_t | index | ) | const |
Return the definition of the element a the specified index
in the sequence of elements. If index >= numElementDefinitions()
an exception is thrown.
const ConstantList blpapi::SchemaTypeDefinition::enumeration | ( | ) | const |
Return a ConstantList
containing all possible values of the enumeration defined by this type. The behavior of this function is undefined unless isEnumerationType() == true
.
void* blpapi::SchemaTypeDefinition::userData | ( | ) | const |
Return the user data associated with this SchemaTypeDefinition
. If no user data has been associated with this SchemaTypeDefinition
then return 0. Clients are responsible for synchronizing calls to this function with calls to setUserData(void*)
made on not only this SchemaTypeDefinition
, but also all copies of this SchemaTypeDefinition
. Note that SchemaTypeDefinition
objects have reference semantics: this function will reflect the last value set on any copy of this SchemaTypeDefinition
.
std::ostream& blpapi::SchemaTypeDefinition::print | ( | std::ostream & | stream, | |
int | level = 0 , |
|||
int | spacesPerLevel = 4 | |||
) | const |
Format this SchemaTypeDefinition to the specified output stream
at the (absolute value of) the optionally specified indentation level
and return a reference to stream
. If level
is specified, optionally specify spacesPerLevel
, the number of spaces per indentation level for this and all of its nested objects. If level
is negative, suppress indentation of the first line. If spacesPerLevel
is negative, format the entire output on one line, suppressing all but the initial indentation (as governed by level
).