return value? value: default_value;
}
+#define VG_KV_APPEND_TEMPLATE( FUNCTION, ... ) \
+ c8 formatted[ 1024 ]; \
+ vg_str value_str; \
+ vg_strnull( &value_str, formatted, sizeof(formatted) ); \
+ for( u32 i=0; i<len; i++ ) \
+ { \
+ FUNCTION ( &value_str, values[i], __VA_ARGS__ ); \
+ if( i+1!=len ) \
+ vg_strcatch( &value_str, ' ' ); \
+ } \
+ if( !vg_strgood( &value_str ) ) \
+ return 0; \
+ return vg_kv_append( kvs, parent_offset, key, formatted );
+
u32 vg_kv_append_vu32( vg_kvs *kvs, u32 parent_offset, const c8 *key, u32 *values, u32 len )
{
- c8 formatted[ 1024 ];
- vg_str value_str;
- vg_strnull( &value_str, formatted, sizeof(formatted) );
-
- for( u32 i=0; i<len; i++ )
- {
- vg_strcatu64( &value_str, values[i], 10 );
- if( i+1!=len )
- vg_strcatch( &value_str, ' ' );
- }
-
- if( !vg_strgood( &value_str ) )
- return 0;
+ VG_KV_APPEND_TEMPLATE( vg_strcatu64, 10 )
+}
- return vg_kv_append( kvs, parent_offset, key, formatted );
+u32 vg_kv_append_vi32( vg_kvs *kvs, u32 parent_offset, const c8 *key, i32 *values, u32 len )
+{
+ VG_KV_APPEND_TEMPLATE( vg_strcati64, 10 )
}
u32 vg_kv_append_vf32( vg_kvs *kvs, u32 parent_offset, const c8 *key, f32 *values, u32 len )
{
- c8 formatted[ 1024 ];
- vg_str value_str;
- vg_strnull( &value_str, formatted, sizeof(formatted) );
-
- for( u32 i=0; i<len; i++ )
- {
- vg_strcatf64( &value_str, values[i], 10, 5 );
- if( i+1!=len )
- vg_strcatch( &value_str, ' ' );
- }
-
- if( !vg_strgood( &value_str ) )
- return 0;
-
- return vg_kv_append( kvs, parent_offset, key, formatted );
+ VG_KV_APPEND_TEMPLATE( vg_strcatf64, 10, 5 )
}
/*
#else
#define VG_KV_PAGE_COUNT 32
+#define VG_KV_APPEND_FRAME NULL
/* define VG_MSG_TO_KVS to automatically convert from old vg_msg stream to plain text KVs */
* returns the new KV offset
*/
u32 vg_kv_append( vg_kvs *kvs, u32 parent_offset, const c8 *key, const c8 *value );
+u32 vg_kv_append_vi32( vg_kvs *kvs, u32 parent_offset, const c8 *key, i32 *values, u32 len );
u32 vg_kv_append_vu32( vg_kvs *kvs, u32 parent_offset, const c8 *key, u32 *values, u32 len );
u32 vg_kv_append_vf32( vg_kvs *kvs, u32 parent_offset, const c8 *key, f32 *values, u32 len );