#include <stdlib.h>
#include <stdio.h>
#include <string.h>
#include "libsgml.h"
int main(int argc, char **argv)
{
DOM_ELEMENT *element = domElementNew("elmenent");
unsigned long initial = 57;
VARIANT_VALUE *value;
unsigned char binary[] = "\xde\xad\xbe\x0ef AAAA BBBB CCCC DDDD EEEE";
fprintf(stdout, "Setting the attribute 'example' to '%lu'.\n", initial);
domElementSetAttributeVariant(element, "example", VARIANT_TYPE_UNSIGNED_INTEGER, &initial, sizeof(unsigned long));
fprintf(stdout, "'example' as a...\n\n");
fprintf(stdout, "string -> '%s'\n", (const char *)domElementGetAttributeVariant(element, "example", VARIANT_TYPE_STRING));
fprintf(stdout, "signed long -> '%li'\n", (signed long)domElementGetAttributeVariant(element, "example", VARIANT_TYPE_SIGNED_INTEGER));
fprintf(stdout, "unsigned long -> '%li'\n", (unsigned long)domElementGetAttributeVariant(element, "example", VARIANT_TYPE_UNSIGNED_INTEGER));
fprintf(stdout, "signed short -> '%hi'\n", (signed short)(unsigned long)domElementGetAttributeVariant(element, "example", VARIANT_TYPE_SIGNED_SHORT));
fprintf(stdout, "unsigned short -> '%hu'\n", (unsigned short)(unsigned long)domElementGetAttributeVariant(element, "example", VARIANT_TYPE_UNSIGNED_SHORT));
fprintf(stdout, "character -> '%c'\n", (char)(unsigned long)domElementGetAttributeVariant(element, "example", VARIANT_TYPE_CHAR));
value = (VARIANT_VALUE *)domElementGetAttributeVariant(element, "example", VARIANT_TYPE_FLOAT);
if (value)
fprintf(stdout, "float -> '%f'\n", value->flt);
variantFree(value);
value = (VARIANT_VALUE *)domElementGetAttributeVariant(element, "example", VARIANT_TYPE_DOUBLE);
if (value)
fprintf(stdout, "double -> '%f'\n", value->dbl);
variantFree(value);
fprintf(stdout, "\nSetting attribute 'binary_b64' to a %d byte buffer.\n\n", sizeof(binary) - 1);
domElementSetAttributeVariant(element, "binary_b64", VARIANT_TYPE_BINARY_B64, binary, sizeof(binary) - 1);
value = domElementGetAttributeVariant(element, "binary_b64", VARIANT_TYPE_BINARY_B64);
if (value)
{
int x = 0;
fprintf(stdout, "binary (%lu) -> '", value->length);
for (x = 0; x < value->length; x++)
{
fprintf(stdout,"%.2x", value->binary[x] & 0xFF);
if (x+1 != value->length)
fprintf(stdout, " ");
}
fprintf(stdout, "'\n");
}
variantFree(value);
domNodeDestroy(element);
return 1;
}