LCOV - code coverage report
Current view: top level - flamenco/rpcserver - json_lex.h (source / functions) Hit Total Coverage
Test: cov.lcov Lines: 0 13 0.0 %
Date: 2024-11-13 11:58:15 Functions: 0 0 -

          Line data    Source code
       1             : /*****
       2             :       Header file for a json lexical scanner
       3             : *****/
       4             : 
       5             : #include "../../util/fd_util.h"
       6             : 
       7             : // Lexical token value
       8           0 : #define JSON_TOKEN_LBRACKET 1 /* [ */
       9           0 : #define JSON_TOKEN_RBRACKET 2 /* ] */
      10           0 : #define JSON_TOKEN_LBRACE   3 /* { */
      11           0 : #define JSON_TOKEN_RBRACE   4 /* } */
      12           0 : #define JSON_TOKEN_COLON    5 /* : */
      13           0 : #define JSON_TOKEN_COMMA    6 /* , */
      14           0 : #define JSON_TOKEN_NULL     7 /* null */
      15           0 : #define JSON_TOKEN_BOOL     8 /* true or false */
      16           0 : #define JSON_TOKEN_INTEGER  9
      17           0 : #define JSON_TOKEN_FLOAT    10
      18           0 : #define JSON_TOKEN_STRING   11
      19             : 
      20           0 : #define JSON_TOKEN_END      0 /* end of input */
      21           0 : #define JSON_TOKEN_ERROR    -1
      22             : 
      23             : // Lexical state
      24             : struct json_lex_state {
      25             :     // Input json text
      26             :     const char* json;
      27             :     ulong json_sz;
      28             : 
      29             :     // Current position in text
      30             :     ulong pos;
      31             :     // Last token parsed
      32             :     long last_tok;
      33             : 
      34             :     // Value of last boolean
      35             :     int last_bool;
      36             :     // Value of last string, number (as text), or error message. UTF-8 encoded.
      37             :     char* last_str;
      38             :     ulong last_str_sz;
      39             :     ulong last_str_alloc;
      40             :     char  last_str_firstbuf[512];
      41             : };
      42             : typedef struct json_lex_state json_lex_state_t;
      43             : 
      44             : // Initialize a lexical state given some json text
      45             : void json_lex_state_new(json_lex_state_t* state,
      46             :                         const char* json,
      47             :                         ulong json_sz);
      48             : 
      49             : void json_lex_state_delete(json_lex_state_t* state);
      50             : 
      51             : // Retrieve the next token
      52             : long json_lex_next_token(json_lex_state_t* state);
      53             : 
      54             : // Get the last lexical text result. This can be a string, number (as
      55             : // text), or error message.
      56             : const char* json_lex_get_text(json_lex_state_t* state, ulong* sz);
      57             : 
      58             : // Convert the string to an integer (assuming decimal representation)
      59             : long json_lex_as_int(json_lex_state_t* lex);
      60             : 
      61             : // Convert the string to a float
      62             : double json_lex_as_float(json_lex_state_t* lex);
      63             : 
      64             : // Replaces the string with the result of a formatted printf.
      65             : void json_lex_sprintf(json_lex_state_t* lex, const char* format, ...)
      66             :   __attribute__ ((format (printf, 2, 3)));

Generated by: LCOV version 1.14