vg_msg_wkvnum( msg, key, k_vg_msg_unsigned|k_vg_msg_32b, 1, &value );
}
+static void vg_msg_wkvu64( vg_msg *msg, const char *key, u64 value ){
+ vg_msg_wkvnum( msg, key, k_vg_msg_unsigned|k_vg_msg_64b, 1, &value );
+}
+
/*
* The stream reading interface
* -----------------------------------------------------------------------------
else return NULL;
}
-static u32 vg_msg_seekkvu32( vg_msg *msg, const char *key, enum vg_msg_dir dir )
-{
- vg_msg_cmd cmd = vg_msg_seekkv( msg, key, dir );
- u8 sized_type = cmd.code & k_vg_msg_sized_type_bits;
+static u64 vg_msg_read_as_u64( vg_msg_cmd *cmd ){
+ u8 sized_type = cmd->code & k_vg_msg_sized_type_bits;
- u32 result = 0x00;
+ u64 result = 0x00;
u8 *dst = (void *)(&result);
- const u8 *src = cmd.value;
+ const u8 *src = cmd->value;
if( (sized_type == k_vg_msg_unsigned) || (sized_type == k_vg_msg_signed) ){
- u32 bytes = vg_msg_sized_bytecount( cmd.code );
- if( bytes > 4 ) bytes = 4;
+ u32 bytes = vg_msg_sized_bytecount( cmd->code );
+ if( bytes > 8 ) bytes = 8;
for( u32 i=0; i<bytes; i ++ ) dst[i] = src[i];
}
return result;
}
+static u32 vg_msg_seekkvu32( vg_msg *msg, const char *key, enum vg_msg_dir dir )
+{
+ vg_msg_cmd cmd = vg_msg_seekkv( msg, key, dir );
+ return vg_msg_read_as_u64( &cmd );
+}
+
/* debug the thing */
static void vg_msg_print( vg_msg *msg ){
vg_msg b = *msg;