projects
/
csRadar.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
revised filtering & api
[csRadar.git]
/
vdf.h
diff --git
a/vdf.h
b/vdf.h
index ddfc2d34300cc87751183c45dc64bec543439a95..892b65d5f304386a0efa532888e14c79398c20ca 100644
(file)
--- a/
vdf.h
+++ b/
vdf.h
@@
-1,12
+1,12
@@
#define vdf_foreach( NODE, STR, AS ) \
#define vdf_foreach( NODE, STR, AS ) \
-int __vdf_it_##
__LINE__
= 0; \
+int __vdf_it_##
AS
= 0; \
vdf_node * AS;\
vdf_node * AS;\
-while( (AS = vdf_next( NODE, STR, &__vdf_it_##
__LINE__
)) )
+while( (AS = vdf_next( NODE, STR, &__vdf_it_##
AS
)) )
#define kv_foreach( NODE, STR, AS ) \
#define kv_foreach( NODE, STR, AS ) \
-int __kv_it_##
__LINE__
= 0; \
+int __kv_it_##
AS
= 0; \
const char * AS;\
const char * AS;\
-while( (AS = kv_iter( NODE, STR, &__kv_it_##
__LINE__
)) )
+while( (AS = kv_iter( NODE, STR, &__kv_it_##
AS
)) )
#include <stdio.h>
#include <stdint.h>
#include <stdio.h>
#include <stdint.h>
@@
-103,6
+103,9
@@
struct vdf_node
vdf_node **nodes;
vdf_kv *pairs;
vdf_node **nodes;
vdf_kv *pairs;
+
+ u32 user;
+ u32 user1;
};
vdf_node *vdf_next( vdf_node *node, const char *name, int *it )
};
vdf_node *vdf_next( vdf_node *node, const char *name, int *it )
@@
-112,7
+115,7
@@
vdf_node *vdf_next( vdf_node *node, const char *name, int *it )
for( int i = it? *it: 0; i < csr_sb_count( node->nodes ); i ++ )
{
for( int i = it? *it: 0; i < csr_sb_count( node->nodes ); i ++ )
{
- if( !strcmp( name, node->nodes[i]->name ))
+ if( !
name || !
strcmp( name, node->nodes[i]->name ))
{
if( it ) *it = i+1;
return node->nodes[i];
{
if( it ) *it = i+1;
return node->nodes[i];
@@
-534,24
+537,38
@@
void vdf_parse_feedbuffer( vdf_ctx *ctx, char *buf )
}
}
}
}
-
vdf_node *vdf_open_file( const char *fn
)
-{
+
int vdf_load_into( const char *fn, vdf_node *node
)
+{
char *text_src = csr_textasset_read( fn );
if( !text_src )
{
fprintf( stderr, "vdf open failed\n" );
char *text_src = csr_textasset_read( fn );
if( !text_src )
{
fprintf( stderr, "vdf open failed\n" );
- return
NULL
;
+ return
0
;
}
vdf_ctx ctx = {0};
}
vdf_ctx ctx = {0};
- ctx.root = ctx.st.pnode =
vdf_create_node( NULL, NULL )
;
+ ctx.root = ctx.st.pnode =
node
;
vdf_newln( &ctx );
vdf_parse_feedbuffer( &ctx, text_src );
vdf_newln( &ctx );
vdf_parse_feedbuffer( &ctx, text_src );
-
free( text_src );
free( text_src );
- return ctx.root;
+
+ return 1;
+}
+
+vdf_node *vdf_open_file( const char *fn )
+{
+ vdf_node *root = vdf_create_node( NULL, NULL );
+ if( vdf_load_into( fn, root ) )
+ {
+ return root;
+ }
+ else
+ {
+ vdf_free_r( root );
+ return NULL;
+ }
}
// OUTPUT
}
// OUTPUT