Add bool type to htsmsg + json parser
This commit is contained in:
parent
6f6f422bdf
commit
302319220a
3 changed files with 46 additions and 1 deletions
32
src/htsmsg.c
32
src/htsmsg.c
|
@ -176,6 +176,16 @@ htsmsg_destroy(htsmsg_t *msg)
|
|||
free(msg);
|
||||
}
|
||||
|
||||
/*
|
||||
*
|
||||
*/
|
||||
void
|
||||
htsmsg_add_bool(htsmsg_t *msg, const char *name, int b)
|
||||
{
|
||||
htsmsg_field_t *f = htsmsg_field_add(msg, name, HMF_BOOL, HMF_NAME_ALLOCED);
|
||||
f->hmf_bool = !!b;
|
||||
}
|
||||
|
||||
/*
|
||||
*
|
||||
*/
|
||||
|
@ -313,6 +323,9 @@ htsmsg_get_s64(htsmsg_t *msg, const char *name, int64_t *s64p)
|
|||
case HMF_S64:
|
||||
*s64p = f->hmf_s64;
|
||||
break;
|
||||
case HMF_BOOL:
|
||||
*s64p = f->hmf_bool;
|
||||
break;
|
||||
case HMF_DBL:
|
||||
*s64p = f->hmf_dbl;
|
||||
break;
|
||||
|
@ -321,6 +334,17 @@ htsmsg_get_s64(htsmsg_t *msg, const char *name, int64_t *s64p)
|
|||
}
|
||||
|
||||
|
||||
/**
|
||||
*
|
||||
*/
|
||||
int
|
||||
htsmsg_get_bool_or_default(htsmsg_t *msg, const char *name, int def)
|
||||
{
|
||||
int64_t s64;
|
||||
return htsmsg_get_s64(msg, name, &s64) ? def : s64;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
*
|
||||
*/
|
||||
|
@ -598,6 +622,10 @@ htsmsg_print0(htsmsg_t *msg, int indent)
|
|||
printf("S64) = %" PRId64 "\n", f->hmf_s64);
|
||||
break;
|
||||
|
||||
case HMF_BOOL:
|
||||
printf("BOOL) = %s\n", f->hmf_bool ? "true" : "false");
|
||||
break;
|
||||
|
||||
case HMF_DBL:
|
||||
printf("DBL) = %f\n", f->hmf_dbl);
|
||||
break;
|
||||
|
@ -644,6 +672,10 @@ htsmsg_copy_i(htsmsg_t *src, htsmsg_t *dst)
|
|||
htsmsg_add_s64(dst, f->hmf_name, f->hmf_s64);
|
||||
break;
|
||||
|
||||
case HMF_BOOL:
|
||||
htsmsg_add_bool(dst, f->hmf_name, f->hmf_bool);
|
||||
break;
|
||||
|
||||
case HMF_BIN:
|
||||
htsmsg_add_bin(dst, f->hmf_name, f->hmf_bin, f->hmf_binsize);
|
||||
break;
|
||||
|
|
|
@ -50,6 +50,7 @@ typedef struct htsmsg {
|
|||
#define HMF_BIN 4
|
||||
#define HMF_LIST 5
|
||||
#define HMF_DBL 6
|
||||
#define HMF_BOOL 7
|
||||
|
||||
typedef struct htsmsg_field {
|
||||
TAILQ_ENTRY(htsmsg_field) hmf_link;
|
||||
|
@ -69,6 +70,7 @@ typedef struct htsmsg_field {
|
|||
} bin;
|
||||
htsmsg_t msg;
|
||||
double dbl;
|
||||
int bool;
|
||||
} u;
|
||||
} htsmsg_field_t;
|
||||
|
||||
|
@ -78,6 +80,7 @@ typedef struct htsmsg_field {
|
|||
#define hmf_bin u.bin.data
|
||||
#define hmf_binsize u.bin.len
|
||||
#define hmf_dbl u.dbl
|
||||
#define hmf_bool u.bool
|
||||
|
||||
#define htsmsg_get_map_by_field(f) \
|
||||
((f)->hmf_type == HMF_MAP ? &(f)->hmf_msg : NULL)
|
||||
|
@ -106,6 +109,8 @@ void htsmsg_field_destroy(htsmsg_t *msg, htsmsg_field_t *f);
|
|||
*/
|
||||
void htsmsg_destroy(htsmsg_t *msg);
|
||||
|
||||
void htsmsg_add_bool(htsmsg_t *msg, const char *name, int b);
|
||||
|
||||
/**
|
||||
* Add an integer field where source is unsigned 32 bit.
|
||||
*/
|
||||
|
@ -190,6 +195,8 @@ int htsmsg_get_s64(htsmsg_t *msg, const char *name, int64_t *s64p);
|
|||
*/
|
||||
int64_t htsmsg_get_s64_or_default(htsmsg_t *msg, const char *name, int64_t def);
|
||||
|
||||
int htsmsg_get_bool_or_default(htsmsg_t *msg, const char *name, int def);
|
||||
|
||||
|
||||
/**
|
||||
* Get pointer to a binary field. No copying of data is performed.
|
||||
|
|
|
@ -39,6 +39,7 @@ htsmsg_json_write(htsmsg_t *msg, htsbuf_queue_t *hq, int isarray,
|
|||
htsmsg_field_t *f;
|
||||
char buf[100];
|
||||
static const char *indentor = "\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t";
|
||||
const char *s;
|
||||
|
||||
htsbuf_append(hq, isarray ? "[" : "{", 1);
|
||||
|
||||
|
@ -69,6 +70,11 @@ htsmsg_json_write(htsmsg_t *msg, htsbuf_queue_t *hq, int isarray,
|
|||
htsbuf_append_and_escape_jsonstr(hq, "binary");
|
||||
break;
|
||||
|
||||
case HMF_BOOL:
|
||||
s = f->hmf_bool ? "true" : "false";
|
||||
htsbuf_append(hq, s, strlen(s));
|
||||
break;
|
||||
|
||||
case HMF_S64:
|
||||
snprintf(buf, sizeof(buf), "%" PRId64, f->hmf_s64);
|
||||
htsbuf_append(hq, buf, strlen(buf));
|
||||
|
@ -169,7 +175,7 @@ add_double(void *opaque, void *parent, const char *name, double v)
|
|||
static void
|
||||
add_bool(void *opaque, void *parent, const char *name, int v)
|
||||
{
|
||||
htsmsg_add_u32(parent, name, v);
|
||||
htsmsg_add_bool(parent, name, v);
|
||||
}
|
||||
|
||||
static void
|
||||
|
|
Loading…
Add table
Reference in a new issue