#ifndef __JBXL_LLSD_TOOL_H_ #define __JBXL_LLSD_TOOL_H_ /** @brief LLSD用ライブラリヘッダ(サブセット版) @file llsd_tool.h @author Fumi.Iseki (C) @sa http://wiki.secondlife.com/wiki/LLSD @sa http://www.nsl.tuis.ac.jp/xoops/modules/xpwiki/?LLSD */ #include "xtools.h" #include "txml.h" #define LLSD_MAKER_UNDEF '!' #define LLSD_MAKER_TRUE '1' #define LLSD_MAKER_FALSE '0' #define LLSD_MAKER_INT 'i' // 4Byte, need ntohl() #define LLSD_MAKER_REAL 'r' // 8Byte, need ntohull() #define LLSD_MAKER_UUID 'u' // 16Byte #define LLSD_MAKER_BIN 'b' // + ntohl(binary.length) + binary #define LLSD_MAKER_STR 's' // + ntohl(string.length) + string #define LLSD_MAKER_URI 'l' // + ntohl(uri.length) + uri #define LLSD_MAKER_KEY 'k' // + ntohl(key.length) + string #define LLSD_MAKER_DATE 'd' // + ntohull(seconds_since_epoch) #define LLSD_MAKER_ARRAY '[' // '[' + ntohl(element.number) + (child0, child1, ...) + ']' #define LLSD_MAKER_ARRAY_END ']' // #define LLSD_MAKER_MAP '{' // '{' + htonl(element.number) + ((key0, value0), (key1, value1), ...)+ '}' #define LLSD_MAKER_MAP_END '}' // ///< *ptr はマーカーの次のデータを指すポインタ.ポインタは次に進む. Buffer llsd_bin_get_str (uByte** ptr); int llsd_bin_get_int (uByte** ptr); double llsd_bin_get_real(uByte** ptr); Buffer llsd_bin_get_uuid(uByte** ptr); Buffer llsd_bin_get_bin (uByte** ptr); unsigned long long int llsd_bin_get_date(uByte** ptr); // 64bit #define llsd_bin_get_key(p) llsd_bin_get_str((p)) #define llsd_bin_get_uri(p) llsd_bin_get_str((p)) #define llsd_bin_get_map(p) llsd_bin_get_int((p)) ///< 要素数を返す. #define llsd_bin_get_array(p) llsd_bin_get_int((p)) ///< 要素数を返す. int llsd_bin_get_length(uByte* ptr, int sz); tXML* llsd_bin_parse(uByte* ptr, int sz); tXML* llsd_bin_main_parse(tXML* xml, uByte* ptr, int sz); // for Sihgle Data int llsd_xml_contain_key(tXML* xml, const char* key); int llsd_xml_get_content_int (tXML* xml, const char* key, const char* item); double llsd_xml_get_content_real(tXML* xml, const char* key, const char* item); Buffer llsd_xml_get_content_str (tXML* xml, const char* key, const char* item); Buffer llsd_xml_get_content_bin (tXML* xml, const char* key, const char* item); #endif // __JBXL_LLSD_TOOL_H_