Main Page Modules Namespace List Data Structures File List Data Fields Examples

# Variant type manipulation

## Data Structures

struct | _variant_value
| Variant value structure. More...

## Typedefs

typedef _variant_value | VARIANT_VALUE
| Variant value structure.

## Enumerations

enum | VariantType { VARIANT_TYPE_UNKNOWN = 0, VARIANT_TYPE_STRING, VARIANT_TYPE_MULTI_STRING, VARIANT_TYPE_SIGNED_INTEGER, VARIANT_TYPE_UNSIGNED_INTEGER, VARIANT_TYPE_SIGNED_SHORT, VARIANT_TYPE_UNSIGNED_SHORT, VARIANT_TYPE_FLOAT, VARIANT_TYPE_DOUBLE, VARIANT_TYPE_CHAR, VARIANT_TYPE_BINARY_B64 }

## Functions

void | variantSet (enum VariantType type, void *value, unsigned long valueSize, void *userParam, void(*setter)(void *userParam, const char *string))
void * | variantGet (enum VariantType type, const char *string)
void | variantFree (VARIANT_VALUE *value)

## Detailed Description

Variant type manipulation and coersion.

## Typedef Documentation

typedef struct _variant_value VARIANT_VALUE

| Variant value structure. This structure is used for returning values from variantGet that do not fit within 4 bytes.

## Enumeration Type Documentation

enum VariantType

The variable type enumeration.

Enumeration values:

  VARIANT_TYPE_UNKNOWN | Unknown type
  VARIANT_TYPE_STRING | Null terminated string (const char *)

  VARIANT_TYPE_MULTI_STRING

  Multiple strings (array)
  Remarks:
    This is currently unsupported.

  VARIANT_TYPE_SIGNED_INTEGER | Signed integer (signed long)
  VARIANT_TYPE_UNSIGNED_INTEGER | Unsigned integer (unsigned long)
  VARIANT_TYPE_SIGNED_SHORT | Signed short (signed short)
  VARIANT_TYPE_UNSIGNED_SHORT | Unsigned short (unsigned short)

  VARIANT_TYPE_FLOAT

  Float (float)
  Remarks:
    This type, when used with variantGet returns a VARIANT_VALUE structure that must be deallocated via variantFree.

  VARIANT_TYPE_DOUBLE

  Double (double)
  Remarks:
    This type, when used with variantGet returns a VARIANT_VALUE structure that must be deallocated via variantFree.

  VARIANT_TYPE_CHAR | Character (char)

  VARIANT_TYPE_BINARY_B64

  Binary_B64 (unsigned char *)
  Remarks:
    This type, when used with variantGet returns a VARIANT_VALUE structure that must be deallocated via variantFree. The binary type assumes that the value was originally set as a VARIANT_TYPE_BINARY_B64. Binary types are non-convertable. Trying to convert a value that was stored as a binary to any other type is not suggested and may cause unpredictable results. The reason they are not convertable is because they are stored as a base64 encoded string.

## Function Documentation

void variantFree | ( | VARIANT_VALUE * | value | ) |

Deallocates the variant value passed in.

This is used to clean up memory returned from variantGet for some types.

Parameters:

  value | [in] The variant value to destroy.

Examples:
  variant.c.

void* variantGet | ( | enum VariantType | type,
|  | const char * | string
| ) |

Returns the variant value associated with the string.

The return values expected for each type are:

- VARIANT_TYPE_STRING
  A pointer to a null terminated string. This buffer should be considered constant and remain unmodified.
- VARIANT_TYPE_SIGNED_INTEGER
  A signed integer is returned.
- VARIANT_TYPE_UNSIGNED_INTEGER
  An unsigned integer is returned.
- VARIANT_TYPE_SIGNED_SHORT
  A signed short is returned.
- VARIANT_TYPE_UNSIGNED_SHORT
  An unsigned short is returned.
- VARIANT_TYPE_FLOAT
  A pointer to a VARIANT_VALUE structure is returned with the 'flt' member populated. This structure is dynamically allocated and should be free'd with VariantFree.
- VARIANT_TYPE_DOUBLE
  A pointer to a VARIANT_VALUE structure is returned with the 'dbl' member populated. This structure is dynamically allocated and should be free'd with VariantFree.
- VARIANT_TYPE_CHAR
  A signed character is returned.
- VARIANT_TYPE_BINARY_B64
  A pointer to a VARIANT_VALUE structure is returned with the 'binary' member populated. This structure is dynamically allocated and should be free'd with VariantFree.

If the operation fails to render the value into a given type, NULL wll be returned.

Parameters:

  type | [in] The type to interpret the string as.
  string | [in] The null terminated string.

Returns:
  The return value is arbitrary and dependent on the type.

void variantSet | ( | enum VariantType | type,
|  | void * | value,
|  | unsigned long | valueSize,
|  | void * | userParam,
|  | void(* | setter)(void *userParam, const char *string)
| ) |

Converts the raw data passed in to a string and passes it to the 'setter' callback.

Parameters:

  type | [in] The variant type that is used to interpret the value argument.
  value | [in] A pointer to the raw data.
  valueSize | [in] The size of the value buffer in bytes.
  userParam | [in] The user parameter passed in as the first argument to 'setter'.
  setter | [in] The callback used to do the actual 'setting' of the converted type.