poke-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [PATCH] pk_mi_json convert functions between a pk_val and a json_obj


From: Jose E. Marchesi
Subject: Re: [PATCH] pk_mi_json convert functions between a pk_val and a json_object.
Date: Tue, 21 Jul 2020 11:31:12 +0200
User-agent: Gnus/5.13 (Gnus v5.13) Emacs/28.0.50 (gnu/linux)

Hi Kostas.

    Hello, I pushed a new patch with the changes discussed on the
    previous thread applied.

Thanks for the new version of the patch.
See comments below.
    
    From: kostasch <sdi1600195@di.uoa.gr>
    Date: Fri, 17 Jul 2020 23:32:34 +0300
    Subject: [PATCH] Added convert functions to pk-mi-json (pk_val->json,
     json->pk_val)
    
    2020-07-17  Kostas Chasialis  <sdi1600195@di.uoa.gr>
    
        * poke/pk-mi-json.h (pk_mi_val_to_json): Prototype.
        (pk_mi_json_to_val): Prototype.
        * poke/pk-mi-json.c (pk_mi_val_to_json): Define.
        (pk_mi_json_to_val): Define.
        (pk_mi_val_to_json): New function.
        (pk_mi_val_to_json_1) : Likewise.
        (pk_mi_int_to_json): Likewise.
        (pk_mi_string_to_json): Likewise.
        (pk_mi_offset_to_json): Likewise.
        (pk_mi_mapping_to_json): Likewise.
        (pk_mi_struct_to_json): Likewise.
        (pk_mi_array_to_json): Likewise.
        (pk_mi_null_to_json): Likewise.
        (pk_mi_val_to_json): Likewise.
        (pk_mi_val_to_json_1): Likewise.
        (pk_mi_json_to_int): Likewise.
        (pk_mi_json_to_uint): Likewise.
        (pk_mi_json_to_string): Likewise.
        (pk_mi_json_to_offset): Likewise.
        (pk_mi_json_to_mapping): Likewise.
        (pk_mi_json_to_struct): Likewise.
        (pk_mi_json_to_array): Likewise.
        (pk_mi_json_poke_value_type): Likewise.
        (pk_mi_json_array_element_pair): Likewise.
    ---
     ChangeLog         |  27 ++
     poke/pk-mi-json.c | 738 +++++++++++++++++++++++++++++++++++++++++++++-
     poke/pk-mi-json.h |  44 ++-
     3 files changed, 806 insertions(+), 3 deletions(-)
    
    diff --git a/ChangeLog b/ChangeLog
    index 24c4efb8..be06a83d 100644
    --- a/ChangeLog
    +++ b/ChangeLog
    @@ -1,3 +1,30 @@
    +2020-07-17  Kostas Chasialis  <sdi1600195@di.uoa.gr>
    +
    +   * poke/pk-mi-json.h (pk_mi_val_to_json): Prototype.
    +   (pk_mi_json_to_val): Prototype.
    +   * poke/pk-mi-json.c (pk_mi_val_to_json): Define.
    +   (pk_mi_json_to_val): Define.
    +   (pk_mi_val_to_json): New function.
    +   (pk_mi_val_to_json_1) : Likewise.
    +   (pk_mi_int_to_json): Likewise.
    +   (pk_mi_string_to_json): Likewise.
    +   (pk_mi_offset_to_json): Likewise.
    +   (pk_mi_mapping_to_json): Likewise.
    +   (pk_mi_struct_to_json): Likewise.
    +   (pk_mi_array_to_json): Likewise.
    +   (pk_mi_null_to_json): Likewise.
    +   (pk_mi_val_to_json): Likewise.
    +   (pk_mi_val_to_json_1): Likewise.
    +   (pk_mi_json_to_int): Likewise.
    +   (pk_mi_json_to_uint): Likewise.
    +   (pk_mi_json_to_string): Likewise.
    +   (pk_mi_json_to_offset): Likewise.
    +   (pk_mi_json_to_mapping): Likewise.
    +   (pk_mi_json_to_struct): Likewise.
    +   (pk_mi_json_to_array): Likewise.
    +   (pk_mi_json_poke_value_type): Likewise.
    +   (pk_mi_json_array_element_pair): Likewise.
    +
     2020-07-17  Bruno Haible  <bruno@clisp.org>
     
        Fix build failure during "make distcheck".
    diff --git a/poke/pk-mi-json.c b/poke/pk-mi-json.c
    index 3ec81924..8bb34fb8 100644
    --- a/poke/pk-mi-json.c
    +++ b/poke/pk-mi-json.c
    @@ -17,7 +17,6 @@
      */
     
     #include <config.h>
    -
     #include <assert.h>
     #include <string.h>
     #include <json.h>
    @@ -429,6 +428,9 @@ pk_mi_json_to_msg (const char *str)
         return NULL;
     
       json = json_tokener_parse_ex (tokener, str, strlen (str));
    +  if (!json)
    +    pk_printf ("internal error: %s\n",
    +               json_tokener_error_desc (json_tokener_get_error (tokener)));

Please replace that with an assert.  I would also avoid using pk_printf
in this file, or any other printing to the screen.

    +  /* OK, fill the properties of our object.  */
    +  PK_MI_CHECK (errmsg, json_object_object_add (string_object, "type", 
string_type_object) != -1,

Line is too long.  There are many other instances of this.

    +static int
    +pk_mi_json_to_mapping (pk_val *poke_value, struct json_object *obj, char 
**errmsg)
    +{
    +  /* TODO: build me.  */

You surely mean write me? :)

    +  return 0;
    +}
    +
    +int
    +pk_mi_json_to_val_1 (pk_val *poke_value, struct json_object *obj, char 
**errmsg)
    +{
    +  const char *poke_object_type;
    +
    +  poke_object_type = pk_mi_json_poke_value_type (obj);
    +  if (poke_object_type == NULL) goto error;
    +
    +  if (!strncmp (poke_object_type, "\"Integer\"", strlen ("\"Integer\"")))
    +    {
    +      if (pk_mi_json_to_int (poke_value, obj, errmsg) == -1) goto error;

Please put the goto error in its own line.




reply via email to

[Prev in Thread] Current Thread [Next in Thread]