Introduction

A schema variant is an object used by schema that can hold a single piece of data that can be reassigned with a new value (And possibly type).

The supported types are:

TypeDescriptionFunction to set
boolA standard C++ boolean type with true and false valuesSchemaVariantSetBool
doubleA double precision floating pointSchemaVariantSetNumber
LPCWSTRA Unicode stringSchemaVariantSetString
void *Any arbitrary dataSchemaVariantSetPointer

 

Creating/Destroying

To create a schema variant you call SchemaVariantCreate followed by a call to set some data into it with the appropriate function. Until you have set data into the newly created schema variant the type of the schema variant will be SystemType::Undefined. Calling schema variant functions on undefined schema variants may fail.

When you are finished with a schema variant call SchemaVariantDelete to free the schema variant.

 

void MakeVariant()
{
	SchemaVariantHandle variant = SchemaVariantCreate();	// Type is SystemType::Undefined
	SchemaVariantSetNumber(variant, 123.45f);				// Type is now SystemType::Number, value 123.45
	
	SchemaVariantDelete(variant);							// Remember to delete the variant when finished
}	

 

Setting/Changing

You can set/change the value and type of a schema variant with the following calls

FunctionDescriptionResulting type
SchemaVariantSetBoolSets the schema variant to a boolean valueSystemType::Boolean
SchemaVariantSetNumberSets the schema variant to a double valueSystemType::ANumber
SchemaVariantSetStringSets the schema variant to a string valueSystemType::AString
SchemaVariantSetPointerSets the schema variant to a pointerThe user defined type
SchemaVariantSetSets a schema variant from another schema variantSame as source schema variant
void ChangeVariant()
{
	SchemaVariantHandle variant = SchemaVariantCreate();	// Type is SystemType::Undefined
	SchemaVariantSetNumber(variant, 123.45f);				// Type is now SystemType::Number, value 123.45
	
	SchemaVariantSetString(variant, L"Hello World");		// Type is now SystemType::AString
	SchemaVariantDelete(variant);							// Remember to delete the variant when finished
}	

Table of Contents