00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018 #ifndef __XMMSV_BUILD_H__
00019 #define __XMMSV_BUILD_H__
00020
00021 #include "xmmsc/xmmsv_general.h"
00022
00023 #ifdef __cplusplus
00024 extern "C" {
00025 #endif
00026
00027
00028
00029
00030
00031
00032
00033 static inline const char *__xmmsv_identity_const_charp (const char *v) {return v;}
00034 static inline xmmsv_t *__xmmsv_identity_xmmsv (xmmsv_t *v) {return v;}
00035 static inline xmmsv_t *__xmmsv_null_to_none (xmmsv_t *v) { return v ? v : xmmsv_new_none (); }
00036
00037 #define XMMSV_DICT_ENTRY(k, v) __xmmsv_identity_const_charp (k), __xmmsv_identity_xmmsv (v)
00038 #define XMMSV_DICT_ENTRY_STR(k, v) XMMSV_DICT_ENTRY (k, __xmmsv_null_to_none (xmmsv_new_string (v)))
00039 #define XMMSV_DICT_ENTRY_INT(k, v) XMMSV_DICT_ENTRY (k, xmmsv_new_int (v))
00040 #define XMMSV_DICT_END NULL
00041 xmmsv_t *xmmsv_build_dict (const char *firstkey, ...);
00042
00043 #define XMMSV_LIST_ENTRY(v) __xmmsv_identity_xmmsv (v)
00044 #define XMMSV_LIST_ENTRY_STR(v) XMMSV_LIST_ENTRY (__xmmsv_null_to_none (xmmsv_new_string (v)))
00045 #define XMMSV_LIST_ENTRY_INT(v) XMMSV_LIST_ENTRY (xmmsv_new_int (v))
00046 #define XMMSV_LIST_ENTRY_COLL(v) XMMSV_LIST_ENTRY (__xmmsv_null_to_none (xmmsv_new_coll (v)))
00047 #define XMMSV_LIST_END NULL
00048
00049 xmmsv_t *xmmsv_build_list (xmmsv_t *first_entry, ...);
00050 xmmsv_t *xmmsv_build_list_va (xmmsv_t *first_entry, va_list ap);
00051
00052
00053 #ifdef __cplusplus
00054 }
00055 #endif
00056
00057 #endif