Diff for /libelwix/inc/elwix/ajson.h between versions 1.1.2.2 and 1.6

version 1.1.2.2, 2017/11/24 10:29:15 version 1.6, 2018/04/19 16:13:48
Line 12  terms: Line 12  terms:
 All of the documentation and software included in the ELWIX and AITNET  All of the documentation and software included in the ELWIX and AITNET
 Releases is copyrighted by ELWIX - Sofia/Bulgaria <info@elwix.org>  Releases is copyrighted by ELWIX - Sofia/Bulgaria <info@elwix.org>
   
Copyright 2004 - 2017Copyright 2004 - 2018
         by Michael Pounov <misho@elwix.org>.  All rights reserved.          by Michael Pounov <misho@elwix.org>.  All rights reserved.
   
 Redistribution and use in source and binary forms, with or without  Redistribution and use in source and binary forms, with or without
Line 53  typedef enum { Line 53  typedef enum {
         J_OBJECT = 1,          J_OBJECT = 1,
         J_ARRAY = 2,          J_ARRAY = 2,
         J_STRING = 3,          J_STRING = 3,
        J_NUMBER = 4,        J_VALUE = 4
        J_BOOL = 5, 
        J_NULL = 6 
 } jtype_t;  } jtype_t;
   
 /* JSON error numbers */  /* JSON error numbers */
Line 63  typedef enum { Line 61  typedef enum {
         J_ERR_OK = 0,          J_ERR_OK = 0,
         J_ERR_NOMEM = 1,          J_ERR_NOMEM = 1,
         J_ERR_INVAL = 2,          J_ERR_INVAL = 2,
        J_ERR_PART = 3        J_ERR_PART = 3,
         J_ERR_PARAM = 4
 } jerr_t;  } jerr_t;
   
/* JSON error strings */typedef struct _tagHandler {
typedef const char jerrstr[] = {        unsigned long   h_pos;
        "No error",        unsigned long   h_next;
        "Not enough tokens were provided",        long            h_parent;
        "Invalid character",        void            *h_alloc;
        "JSON string isn't full",        int             h_strict;
        NULL 
}; 
 
typedef struct _tagParser { 
        unsigned long   pos; 
        unsigned long   next; 
        long            parent; 
 } json_t;  } json_t;
   #define json_toksnum(x)         (x)->h_next
   
 typedef struct _tagToken {  typedef struct _tagToken {
           long            tok_idx;
         jtype_t         tok_type;          jtype_t         tok_type;
         long            tok_start;          long            tok_start;
         long            tok_end;          long            tok_end;
         long            tok_size;          long            tok_size;
         long            tok_parent;          long            tok_parent;
 } jtok_t;  } jtok_t;
   #define json_toktype(x)         (x)->tok_type
   #define json_toksize(x)         (x)->tok_size
   #define json_toklen(x)          ((x)->tok_end - (x)->tok_start)
   #define json_tokstr(j, x)       ((j) + (x)->tok_start)
   #define json_tokstrcpy(d, j, x) { strncpy((d), json_tokstr((j), (x)), json_toklen(x)); \
                                           (d)[json_toklen(x)] = 0; } 
   
   
 /*  /*
  * json_init() - Initialize JSON handler   * json_init() - Initialize JSON handler
  *   *
  * @json = JSON handler, if there is NULL then dynamically will be allocated   * @json = JSON handler, if there is NULL then dynamically will be allocated
 * return: =NULL error or !=NULL ready for use JSON handler. * @jstrict = JSON strict mode, when we select strict mode every unquoted value is error
  * return: =NULL error or !=NULL ready for use JSON handler and should be free with json_free()
  */   */
json_t *json_init(json_t * __restrict json);json_t *json_init(json_t * __restrict json, int jstrict);
   
 /*  /*
  * json_free() - Free JSON handler   * json_free() - Free JSON handler
Line 104  json_t *json_init(json_t * __restrict json); Line 105  json_t *json_init(json_t * __restrict json);
  * @json = JSON handler   * @json = JSON handler
  * return: none   * return: none
  */   */
void json_free(json_t **json);void json_free(json_t * __restrict json);
   
 /*  /*
  * json_parse() - Parse JSON string   * json_parse() - Parse JSON string
Line 118  void json_free(json_t **json); Line 119  void json_free(json_t **json);
  */   */
 unsigned int json_parse(json_t * __restrict json, const char *jstr, size_t jlen,   unsigned int json_parse(json_t * __restrict json, const char *jstr, size_t jlen, 
                 jtok_t * __restrict jtoks, unsigned int toksnum);                  jtok_t * __restrict jtoks, unsigned int toksnum);
   
   /*
    * json_token2val() - Return token to AIT variable
    *
    * @jstr = JSON string
    * @tok = Token for convert
    * @return =NULL error or !=NULL variable, after use should be ait_freeVar()
    */
   ait_val_t *json_token2val(const char *jstr, jtok_t * __restrict tok);
   /*
    * json_token2str() - Return token to string
    *
    * @jstr = JSON string
    * @tok = Token for convert
    * @return =NULL error or !=NULL allocated str, after use should be json_freestr()|e_free()
    */
   char *json_token2str(const char *jstr, jtok_t * __restrict tok);
   #define json_freestr(x)         e_free((x))
   /*
    * json_token2num() - Return token to numeric
    *
    * @jstr = JSON string
    * @tok = Token for convert
    * @return number
    */
   long json_token2num(const char *jstr, jtok_t * __restrict tok);
   /*
    * json_token2dbl() - Return token to double
    *
    * @jstr = JSON string
    * @tok = Token for convert
    * @return number
    */
   double json_token2dbl(const char *jstr, jtok_t * __restrict tok);
   /*
    * json_token2bool() - Return token to bool int
    *
    * @jstr = JSON string
    * @tok = Token for convert
    * @return 0 for FALSE and !=0 for TRUE
    */
   int json_token2bool(const char *jstr, jtok_t * __restrict tok);
   /*
    * json_token2array() - Convert token to string array
    *
    * @jstr = JSON string
    * @tok = Token for convert
    * return: =NULL error or !=NULL allocated array with string variables, 
    *              after use should be ait_freeVars()
    */
   array_t *json_token2array(const char *jstr, jtok_t * __restrict tok);
   
   /*
    * json_findbykey() - Find token data by key
    *
    * @jstr = JSON string
    * @key = Search key
    * @type = Search key for particular token type, if is J_UNDEF this mean any type
    * @toks = Parsed tokens
    * @toksnum = Number of parsed tokens
    * return: =NULL error or !=NULL data token found 
    */
   jtok_t *json_findbykey(const char *jstr, const char *key, 
                   jtype_t type, jtok_t * __restrict toks, int toksnum);
   /*
    * json_findbypos() - Find token by position on JSON string
    *
    * @pos = Offset from begin of JSON string
    * @toks = Parsed tokens
    * @toksnum = Number of parsed tokens
    * return: =NULL error or !=NULL token found 
    */
   jtok_t *json_findbypos(unsigned long pos, jtok_t * __restrict toks, int toksnum);
   
   
   /*
    * json_dump_yaml() - Dump parsed JSON string to YAML format
    *
    * @f = Output handler
    * @jstr = JSON string
    * @toks = JSON tokens
    * @toksnum = Number of tokens
    * @indent = Start indent spaces
    * return: 0 done and 1 added one more item
    */
   int json_dump_yaml(FILE *f, const char *jstr, jtok_t *toks, int toksnum, int indent);
   /*
    * json_dump() - Dump parsed JSON string to structure format
    *
    * @f = Output handler
    * @jstr = JSON string
    * @toks = JSON tokens
    * @toksnum = Number of tokens
    * @indent = Start indent spaces
    * return: 0 done and 1 added one more item
    */
   int json_dump(FILE *f, const char *jstr, jtok_t *toks, int toksnum, int indent);
   
   
   /*
    * json_add_begin_object() - Adds begin of object {
    *
    * @jstr = JSON string
    * @jlen = JSON string length
    * @wspace = whitespace include
    * return: -1 error or !=-1 actual JSON string length
    */
   int json_add_begin_object(char * __restrict jstr, int jlen, int wspace);
   /*
    * json_add_end_object() - Adds end of object }
    *
    * @jstr = JSON string
    * @jlen = JSON string length
    * @wspace = whitespace include
    * return: -1 error or !=-1 actual JSON string length
    */
   int json_add_end_object(char * __restrict jstr, int jlen, int wspace);
   /*
    * json_add_begin_array() - Adds begin of array [
    *
    * @jstr = JSON string
    * @jlen = JSON string length
    * @wspace = whitespace include
    * return: -1 error or !=-1 actual JSON string length
    */
   int json_add_begin_array(char * __restrict jstr, int jlen, int wspace);
   /*
    * json_add_end_array() - Adds end of array ]
    *
    * @jstr = JSON string
    * @jlen = JSON string length
    * @wspace = whitespace include
    * return: -1 error or !=-1 actual JSON string length
    */
   int json_add_end_array(char * __restrict jstr, int jlen, int wspace);
   /*
    * json_add_char() - Adds character
    *
    * @jstr = JSON string
    * @jlen = JSON string length
    * @ch = Character
    * return: -1 error or !=-1 actual JSON string length
    */
   int json_add_char(char * __restrict jstr, int jlen, unsigned char ch);
   /*
    * json_add_colon() - Adds key/value pair delimiter colon :
    *
    * @jstr = JSON string
    * @jlen = JSON string length
    * @wspace = whitespace include
    * return: -1 error or !=-1 actual JSON string length
    */
   int json_add_colon(char * __restrict jstr, int jlen, int wspace);
   /*
    * json_add_comma() - Adds value delimiter comma ,
    *
    * @jstr = JSON string
    * @jlen = JSON string length
    * @wspace = whitespace include
    * return: -1 error or !=-1 actual JSON string length
    */
   int json_add_comma(char * __restrict jstr, int jlen, int wspace);
   /*
    * json_add_string() - Adds string
    *
    * @jstr = JSON string
    * @jlen = JSON string length
    * @unquot = Unquoted string
    * @str = String, it can't be NULL
    * return: -1 error or !=-1 actual JSON string length
    */
   int json_add_string(char * __restrict jstr, int jlen, int unquot, const char *str);
   /*
    * json_add_value() - Adds value
    *
    * @jstr = JSON string
    * @jlen = JSON string length
    * @unquot = Unquoted number
    * @num = Number
    * return: -1 error or !=-1 actual JSON string length
    */
   int json_add_value(char * __restrict jstr, int jlen, int unquot, long num);
   /*
    * json_add_pair() - Adds key/value pair
    *
    * @jstr = JSON string
    * @jlen = JSON string length
    * @wspace = whitespace include
    * @key = Key string
    * @val = Value string
    * return: -1 error or !=-1 actual JSON string length
    */
   int json_add_pair(char * __restrict jstr, int jlen, int wspace, 
                   const char *key, const char *val);
   /*
    * json_add_array() - Adds array
    *
    * @jstr = JSON string
    * @jlen = JSON string length
    * @wspace = whitespace include
    * @arr = Array with variables
    * return: -1 error or !=-1 actual JSON string length
    */
   int json_add_array(char * __restrict jstr, int jlen, int wspace, 
                   array_t * __restrict arr);
   
   
 #endif  #endif

Removed from v.1.1.2.2  
changed lines
  Added in v.1.6


FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>