// sdk.h // (C) 2010-2011 Multidmedia Limited. #if !defined( __ZINC_4_SDK_H__ ) #define __ZINC_4_SDK_H__ #if defined( __cplusplus ) extern "C" { #endif // must be defined in your dll/dylib/so as an entry point for Zinc 4. extern void OnEntry(); // must be defined in your dll/dylib/so as an entry point for Zinc 4. extern void OnExit(); typedef void* mdmVariant_t; typedef struct { int formId; int objectId; int async; void *reserved4; void *reserved5; void *reserved6; void *reserved7; void *reserved8; } zinc4CallInfo_t; typedef mdmVariant_t* ( *ZINC4_COMMAND_CALLBACK )( const zinc4CallInfo_t *pCallInfo, int paramCount, mdmVariant_t** ppParams ); extern bool RegisterCommand( const char* strName, ZINC4_COMMAND_CALLBACK callback ); // the following functions are to make life easier going // between native and utf8. be sure to only use 'StringFree' // on strings returned from 'StringFromUTF8' and // 'StringToUTF8' and not anything else, like 'delete' or 'free'. extern wchar_t* StringFromUTF8(const char *str); extern char* StringToUTF8(const wchar_t *str); extern void StringFree(void *pv); // variant stuff. enum mdmVariant_type { mdmVariant_type_null, mdmVariant_type_boolean, mdmVariant_type_double, mdmVariant_type_int, mdmVariant_type_object, mdmVariant_type_array, mdmVariant_type_string }; // functions to make new variants and free them. extern mdmVariant_t* mdmVariantNewNull(); extern mdmVariant_t* mdmVariantNewString( const char *str ); extern mdmVariant_t* mdmVariantNewDouble( double d ); extern mdmVariant_t* mdmVariantNewInt( int i ); extern mdmVariant_t* mdmVariantNewBoolean( bool b ); extern mdmVariant_t* mdmVariantNewArray(); extern mdmVariant_t* mdmVariantNewObject(); extern void mdmVariantFree( mdmVariant_t* variant ); // functions to convert to JSON format and back. extern const char* mdmVariantStringify( mdmVariant_t* variant ); extern mdmVariant_t* mdmVariantDeStringify( const char* json ); extern const char* mdmVariantGetString( mdmVariant_t* variant ); extern double mdmVariantGetDouble( mdmVariant_t* variant ); extern int mdmVariantGetInt( mdmVariant_t* variant ); extern bool mdmVariantGetBoolean( mdmVariant_t *variant ); extern bool mdmVariantIsType( mdmVariant_t* variant, enum mdmVariant_type type ); extern enum mdmVariant_type mdmVariantGetType( mdmVariant_t* variant ); // array helpers. extern int mdmVariantArrayLength( mdmVariant_t* variant ); extern int mdmVariantArrayAdd( mdmVariant_t* variant1, mdmVariant_t* variant2 ); extern mdmVariant_t* mdmVariantArrayGetElement( mdmVariant_t* variant, int index ); // object helpers. extern void mdmVariantObjectAdd( mdmVariant_t* variant1, const char *key, mdmVariant_t* variant2 ); extern mdmVariant_t* mdmVariantObjectGet( mdmVariant_t* variant, const char *key ); #if defined( __cplusplus ) } #endif #endif