questions
FossilOrigin-Name: 7143b9342fd901ee83e6004fe84e99303cd87b3fb717ef4ac6f7a8d49af5f4d4
This commit is contained in:
@ -44,13 +44,14 @@ int cw_out_radio_generic_struct(struct cw_ElemHandler * handler, struct cw_ElemH
|
||||
|
||||
|
||||
int cw_out_traverse0(struct cw_ElemHandler * handler, struct cw_ElemHandlerParams * params
|
||||
, uint8_t * dst, int i, const char *current, const char * next)
|
||||
, uint8_t * dst, int i, const char *current, const char * next,
|
||||
int * stack)
|
||||
{
|
||||
char *sl;
|
||||
int l;
|
||||
char key[CW_KTV_MAX_KEY_LEN];
|
||||
char tcurrent[CW_KTV_MAX_KEY_LEN];
|
||||
|
||||
int len;
|
||||
len = 0;
|
||||
|
||||
sl = strchr(next,'/');
|
||||
if (sl==NULL){
|
||||
@ -58,7 +59,25 @@ int cw_out_traverse0(struct cw_ElemHandler * handler, struct cw_ElemHandlerParam
|
||||
sprintf(key,"%s/%s",current,next);
|
||||
result = cw_ktv_base_exists(params->conn->local_cfg,key);
|
||||
if (result != NULL){
|
||||
int offset;
|
||||
int i,l;
|
||||
offset = params->conn->header_len(handler);
|
||||
printf("Yea! We can do it: %s\n",result->key);
|
||||
for (i=0;i<stack[0];i++){
|
||||
printf("I=%i\n",stack[i+1]);
|
||||
}
|
||||
l= cw_ktv_write_struct(params->conn->local_cfg,params->conn->default_cfg,
|
||||
handler->type,key,dst+offset);
|
||||
|
||||
printf("Write struct len %i\n",l);
|
||||
|
||||
l=params->conn->write_header(handler,dst,l);
|
||||
printf("header wr len %d\n",l);
|
||||
if (handler->patch){
|
||||
handler->patch(dst+offset,stack);
|
||||
}
|
||||
|
||||
return l;
|
||||
}
|
||||
|
||||
return 0;
|
||||
@ -88,28 +107,27 @@ int cw_out_traverse0(struct cw_ElemHandler * handler, struct cw_ElemHandlerParam
|
||||
continue;
|
||||
}
|
||||
|
||||
cw_out_traverse0(handler,params,dst,-1,basekey,next+l+1);
|
||||
stack[0]++;
|
||||
stack[stack[0]]=i;
|
||||
len += cw_out_traverse0(handler,params,dst+len,-1,basekey,next+l+1, stack);
|
||||
printf("Len is now %d\n", len);
|
||||
}
|
||||
|
||||
|
||||
|
||||
return len;
|
||||
}
|
||||
|
||||
int cw_out_traverse(struct cw_ElemHandler * handler, struct cw_ElemHandlerParams * params
|
||||
, uint8_t * dst)
|
||||
|
||||
{
|
||||
int i;
|
||||
|
||||
char current[CW_KTV_MAX_KEY_LEN];
|
||||
i=-1;
|
||||
|
||||
int stack[10];
|
||||
stack[0]=0;
|
||||
|
||||
current[0]=0;
|
||||
|
||||
cw_out_traverse0(handler,params,dst,-1,current,handler->key);
|
||||
|
||||
printf("Hello world\n");
|
||||
exit(0);
|
||||
|
||||
return cw_out_traverse0(handler,params,dst,-1,current,handler->key, stack);
|
||||
}
|
||||
|
||||
|
@ -50,6 +50,19 @@ static const char * get_type_name(cw_KTV_t *data)
|
||||
{
|
||||
return CW_TYPE_WORD->name;
|
||||
}
|
||||
static int cast(cw_KTV_t * data)
|
||||
{
|
||||
if (strcmp(data->type->name,CW_TYPE_WORD->name)==0)
|
||||
return 1;
|
||||
if (strcmp(data->type->name,CW_TYPE_STR->name)==0){
|
||||
char *src = data->val.ptr;
|
||||
CW_TYPE_WORD->from_str(data,src);
|
||||
free(src);
|
||||
return 1;
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
const struct cw_Type cw_type_word = {
|
||||
"Word", /* name */
|
||||
@ -60,7 +73,8 @@ const struct cw_Type cw_type_word = {
|
||||
from_str, /* from_str */
|
||||
NULL,
|
||||
NULL,
|
||||
get_type_name
|
||||
get_type_name,
|
||||
cast
|
||||
|
||||
};
|
||||
|
||||
|
@ -114,7 +114,7 @@ void *mavl_del ( struct mavl *t, const void *data );
|
||||
void *mavl_replace ( struct mavl *t, const void *data, int * result );
|
||||
void mavl_destroy ( struct mavl *t );
|
||||
void mavl_del_all ( struct mavl *t );
|
||||
void mavl_merge ( mavl_t m, mavl_t t );
|
||||
void mavl_merge ( mavl_t target, mavl_t source );
|
||||
void mavlnode_destroy ( struct mavl *t, struct mavlnode *n );
|
||||
struct mavlnode *mavlnode_get ( struct mavl *t, void *data );
|
||||
struct mavlnode * mavl_get_node_cmp(struct mavl *t ,void *data,
|
||||
|
@ -68,10 +68,10 @@ static void mavl_merge0(mavl_t m, mavl_t t ,struct mavlnode * n)
|
||||
*
|
||||
*
|
||||
*/
|
||||
void mavl_merge(mavl_t m, mavl_t t)
|
||||
void mavl_merge(mavl_t target, mavl_t source)
|
||||
{
|
||||
mavl_merge0(m,t,t->root);
|
||||
t->root=NULL;
|
||||
mavl_merge0(target,source,source->root);
|
||||
source->root=NULL;
|
||||
}
|
||||
|
||||
|
||||
|
@ -58,6 +58,7 @@ struct cw_ElemHandler {
|
||||
int (*put)(struct cw_ElemHandler * handler, struct cw_ElemHandlerParams * params, uint8_t * dst);
|
||||
|
||||
int (*mkkey)(const char *pkey, uint8_t*data, int len, char *dst);
|
||||
int (*patch)(uint8_t *dst, void *data );
|
||||
|
||||
|
||||
};
|
||||
|
Reference in New Issue
Block a user