Commit 262f8f651b361c71cc5eaf4becff1f7adbe4be6f

Authored by Georg Hopp
1 parent ac539ffa

hash integrated in dyntype...array still missing, but for simple sas tokens this should be suitable.

@@ -56,6 +56,12 @@ __jsonConst(struct BIGPOINT_DYNTYPE * _this, struct json_object * json) @@ -56,6 +56,12 @@ __jsonConst(struct BIGPOINT_DYNTYPE * _this, struct json_object * json)
56 } 56 }
57 break; 57 break;
58 58
  59 + case json_type_object:
  60 + _this->type = BIGPOINT_DYNTYPE_HASH;
  61 + _this->size = sizeof(struct BIGPOINT_HASH *);
  62 + (_this->data)._hash = newFromJson(BIGPOINT_HASH, json);
  63 + break;
  64 +
59 default: 65 default:
60 _this->type = BIGPOINT_DYNTYPE_NULL; 66 _this->type = BIGPOINT_DYNTYPE_NULL;
61 _this->size = 0; 67 _this->size = 0;
@@ -73,6 +79,10 @@ __destruct(struct BIGPOINT_DYNTYPE * _this) @@ -73,6 +79,10 @@ __destruct(struct BIGPOINT_DYNTYPE * _this)
73 free((_this->data)._string); 79 free((_this->data)._string);
74 break; 80 break;
75 81
  82 + case BIGPOINT_DYNTYPE_HASH:
  83 + delete((_this->data)._hash);
  84 + break;
  85 +
76 default: 86 default:
77 break; 87 break;
78 } 88 }
@@ -94,6 +104,10 @@ __toJson(struct BIGPOINT_DYNTYPE * _this) @@ -94,6 +104,10 @@ __toJson(struct BIGPOINT_DYNTYPE * _this)
94 json = json_object_new_string((_this->data)._string); 104 json = json_object_new_string((_this->data)._string);
95 break; 105 break;
96 106
  107 + case BIGPOINT_DYNTYPE_HASH:
  108 + json = toJson((_this->data)._hash);
  109 + break;
  110 +
97 default: 111 default:
98 json = NULL; 112 json = NULL;
99 } 113 }
@@ -52,6 +52,17 @@ static @@ -52,6 +52,17 @@ static
52 struct json_object * 52 struct json_object *
53 __toJson(struct BIGPOINT_HASH * _this) 53 __toJson(struct BIGPOINT_HASH * _this)
54 { 54 {
  55 + size_t index;
  56 + struct json_object * json = json_object_new_object();
  57 +
  58 + for (index = 0; index < _this->used; index ++) {
  59 + json_object_object_add(
  60 + json,
  61 + _this->keys[index],
  62 + toJson(_this->values[index]));
  63 + }
  64 +
  65 + return json;
55 } 66 }
56 67
57 static const 68 static const
@@ -6,6 +6,9 @@ @@ -6,6 +6,9 @@
6 #include "../bigpoint_dyntype.h" 6 #include "../bigpoint_dyntype.h"
7 7
8 #define TEST_STR "this is a foo string" 8 #define TEST_STR "this is a foo string"
  9 +#define TEST_KEY1 "key1"
  10 +#define TEST_KEY2 "key2"
  11 +#define TEST_KEY3 "key3"
9 12
10 13
11 int 14 int
@@ -43,6 +46,33 @@ main(int argc, char * argv[]) @@ -43,6 +46,33 @@ main(int argc, char * argv[])
43 delete(dyn); 46 delete(dyn);
44 json_object_put(json); 47 json_object_put(json);
45 48
  49 + json = json_tokener_parse("{\"key1\":123,\"key2\":321,\"key3\":\"" TEST_STR "\"}");
  50 + dyn = newFromJson(BIGPOINT_DYNTYPE, json);
  51 + json_object_put(json);
  52 +
  53 + json = toJson(dyn);
  54 + printf("%s\n", json_object_to_json_string(json));
  55 + json_object_put(json);
  56 +
  57 + if (BIGPOINT_DYNTYPE_HASH == dyn->type) {
  58 + struct BIGPOINT_HASH * hash = (dyn->data)._hash;
  59 + struct BIGPOINT_DYNTYPE * value;
  60 +
  61 + value = bigpoint_hash_get(hash, TEST_KEY1);
  62 + printf("%d\n", (value->data)._int);
  63 + delete(value);
  64 +
  65 + value = bigpoint_hash_get(hash, TEST_KEY2);
  66 + printf("%d\n", (value->data)._int);
  67 + delete(value);
  68 +
  69 + value = bigpoint_hash_get(hash, TEST_KEY3);
  70 + printf("%s\n", (value->data)._string);
  71 + delete(value);
  72 + }
  73 +
  74 + delete(dyn);
  75 +
46 return 0; 76 return 0;
47 } 77 }
48 78
@@ -3,7 +3,6 @@ @@ -3,7 +3,6 @@
3 #include <json/json.h> 3 #include <json/json.h>
4 4
5 #include "../bigpoint_cclass.h" 5 #include "../bigpoint_cclass.h"
6 -#include "../bigpoint_dyntype.h"  
7 #include "../bigpoint_hash.h" 6 #include "../bigpoint_hash.h"
8 7
9 8
@@ -24,6 +23,10 @@ main(int argc, char * argv[]) @@ -24,6 +23,10 @@ main(int argc, char * argv[])
24 dyn = new(BIGPOINT_DYNTYPE, BIGPOINT_DYNTYPE_INT, sizeof(int), 321); 23 dyn = new(BIGPOINT_DYNTYPE, BIGPOINT_DYNTYPE_INT, sizeof(int), 321);
25 bigpoint_hash_set(hash, TEST_KEY2, dyn); 24 bigpoint_hash_set(hash, TEST_KEY2, dyn);
26 25
  26 + json = toJson(hash);
  27 + printf("%s\n", json_object_to_json_string(json));
  28 + json_object_put(json);
  29 +
27 dyn = bigpoint_hash_get(hash, TEST_KEY1); 30 dyn = bigpoint_hash_get(hash, TEST_KEY1);
28 printf("%d\n", (dyn->data)._int); 31 printf("%d\n", (dyn->data)._int);
29 delete(dyn); 32 delete(dyn);
Please register or login to post a comment