From dea012a8cbc3750721360b57c5ff987bd636938f Mon Sep 17 00:00:00 2001 From: "tg(x)" <*@tg-x.net> Date: Thu, 3 Nov 2011 14:27:01 +0100 Subject: [PATCH] refactoring - init functions --- .gitignore | 9 +++-- d/include/psyc/packet.d | 32 +++++++++------- d/include/psyc/render.d | 6 +-- include/psyc.h | 25 +------------ include/psyc/packet.h | 43 +++++++++++----------- include/psyc/render.h | 6 +-- pike/psyc.cmod | 81 +++++++++++++++++++---------------------- src/packet.c | 50 ++++++++++++------------- test/test_list.c | 4 +- test/test_render.c | 75 ++++++++++++++++++++------------------ 10 files changed, 158 insertions(+), 173 deletions(-) diff --git a/.gitignore b/.gitignore index d3efafe..bfa0c96 100644 --- a/.gitignore +++ b/.gitignore @@ -43,7 +43,8 @@ python/*.py *.rej *.log *.pem -*old -*bak -*diff -*orig +*.old +*.bak +*.orig +*.diff +*.patch diff --git a/d/include/psyc/packet.d b/d/include/psyc/packet.d index a2e5648..eb1b2a4 100644 --- a/d/include/psyc/packet.d +++ b/d/include/psyc/packet.d @@ -142,13 +142,17 @@ struct Packet char[] method, ubyte[] data, PacketFlag flag = PacketFlag.CHECK_LENGTH) { - return psyc_packet_new(&routing, &entity, cast(ubyte[]*)&method, &data, flag); // FIXME + Packet p; + psyc_packet_init(&p, &routing, &entity, cast(ubyte[]*)&method, &data, flag); // FIXME + return p; } static Packet opCall (Modifier[] routing, ubyte[] content, PacketFlag flag = PacketFlag.CHECK_LENGTH) { - return psyc_packet_new_raw(&routing, &content, flag); // FIXME + Packet p; + psyc_packet_init_raw(&routing, &content, flag); // FIXME + return p; } size_t length ( ) @@ -215,17 +219,19 @@ PacketFlag psyc_packet_length_check (Packet *p); private size_t psyc_packet_length_set (Packet *p); /** Create new list. */ -List psyc_list_new (String *elems, size_t num_elems, ListFlag flag); +void psyc_list_init (List *list, String *elems, size_t num_elems, ListFlag flag); -/** Create new packet. */ -Packet psyc_packet_new (Modifier *routing, size_t routinglen, - Modifier *entity, size_t entitylen, - char *method, size_t methodlen, - char *data, size_t datalen, - PacketFlag flag); +/** Initialize packet. */ +void psyc_packet_init (Packet packet, + Modifier *routing, size_t routinglen, + Modifier *entity, size_t entitylen, + char *method, size_t methodlen, + char *data, size_t datalen, + PacketFlag flag); -/** Create new packet with raw content. */ -Packet psyc_packet_new_raw (Modifier *routing, size_t routinglen, - char *content, size_t contentlen, - PacketFlag flag); +/** Initialize packet with raw content. */ +void psyc_packet_init_raw (Packet packet, + Modifier *routing, size_t routinglen, + char *content, size_t contentlen, + PacketFlag flag); diff --git a/d/include/psyc/render.d b/d/include/psyc/render.d index d1dd0e4..44d1b0b 100644 --- a/d/include/psyc/render.d +++ b/d/include/psyc/render.d @@ -45,9 +45,9 @@ enum RenderListRC * This function renders packet->length bytes to the buffer, * if buflen is less than that an error is returned. * - * @see psyc_packet_new - * @see psyc_packet_new_raw - * @see psyc_packet_length_set + * @see psyc_packet_init() + * @see psyc_packet_init_raw() + * @see psyc_packet_length_set() */ RenderRC psyc_render (Packet *packet, ubyte *buffer, size_t buflen); diff --git a/include/psyc.h b/include/psyc.h index 4bcf520..b059dab 100644 --- a/include/psyc.h +++ b/include/psyc.h @@ -20,7 +20,8 @@ #include #include -#define PSYC_EPOCH 1440444041 // 2015-08-24 21:20:41 CET (Monday) +#define PSYC_VERSION 1 +#define PSYC_EPOCH 1440444041 // 2015-08-24 21:20:41 CET (Monday) #define PSYC_C2STR(str) {sizeof(str)-1, str} #define PSYC_C2ARG(str) str, sizeof(str)-1 @@ -118,28 +119,6 @@ typedef struct intptr_t value; } PsycDictInt; -/** - * Shortcut for creating a PsycString. - * - * @param str Pointer to the buffer. - * @param len Length of that buffer. - * - * @return An instance of the PsycString struct. - */ -static inline -PsycString psyc_string_new (char *str, size_t len) -{ - PsycString s = {len, str}; - return s; -} - -static inline -unsigned int psyc_version () -{ - return 1; -} - - /** * Checks if long keyword string inherits from short keyword string. */ diff --git a/include/psyc/packet.h b/include/psyc/packet.h index b72b912..4777a84 100644 --- a/include/psyc/packet.h +++ b/include/psyc/packet.h @@ -121,19 +121,17 @@ PsycModifierFlag psyc_modifier_length_check (PsycModifier *m) return flag; } -/** Create new modifier */ +/** Initialize modifier */ static inline -PsycModifier psyc_modifier_new (char oper, - char *name, size_t namelen, - char *value, size_t valuelen, - PsycModifierFlag flag) +void psyc_modifier_init (PsycModifier *m, char oper, + char *name, size_t namelen, + char *value, size_t valuelen, + PsycModifierFlag flag) { - PsycModifier m = {oper, {namelen, name}, {valuelen, value}, flag}; + *m = (PsycModifier) {oper, {namelen, name}, {valuelen, value}, flag}; if (flag == PSYC_MODIFIER_CHECK_LENGTH) // find out if it needs a length - m.flag = psyc_modifier_length_check(&m); - - return m; + m->flag = psyc_modifier_length_check(m); } /** @@ -165,20 +163,23 @@ PsycPacketFlag psyc_packet_length_check (PsycPacket *p); */ size_t psyc_packet_length_set (PsycPacket *p); -/** Create new list. */ -PsycList psyc_list_new (PsycString *elems, size_t num_elems, PsycListFlag flag); +/** Initialize list. */ +void psyc_list_init (PsycList *list, PsycString *elems, size_t num_elems, + PsycListFlag flag); -/** Create new packet. */ -PsycPacket psyc_packet_new (PsycModifier *routing, size_t routinglen, - PsycModifier *entity, size_t entitylen, - char *method, size_t methodlen, - char *data, size_t datalen, - PsycPacketFlag flag); +/** Initialize packet. */ +void psyc_packet_init (PsycPacket *packet, + PsycModifier *routing, size_t routinglen, + PsycModifier *entity, size_t entitylen, + char *method, size_t methodlen, + char *data, size_t datalen, + PsycPacketFlag flag); -/** Create new packet with raw content. */ -PsycPacket psyc_packet_new_raw (PsycModifier *routing, size_t routinglen, - char *content, size_t contentlen, - PsycPacketFlag flag); +/** Initialize packet with raw content. */ +void psyc_packet_init_raw (PsycPacket *packet, + PsycModifier *routing, size_t routinglen, + char *content, size_t contentlen, + PsycPacketFlag flag); /** @} */ // end of packet group diff --git a/include/psyc/render.h b/include/psyc/render.h index 5b64804..9b18af6 100644 --- a/include/psyc/render.h +++ b/include/psyc/render.h @@ -52,9 +52,9 @@ typedef enum * This function renders packet->length bytes to the buffer, * if buflen is less than that an error is returned. * - * @see psyc_packet_new - * @see psyc_packet_new_raw - * @see psyc_packet_length_set + * @see psyc_packet_init() + * @see psyc_packet_init_raw() + * @see psyc_packet_length_set() */ #ifdef __INLINE_PSYC_RENDER static inline diff --git a/pike/psyc.cmod b/pike/psyc.cmod index 211ab81..2ec7c9f 100644 --- a/pike/psyc.cmod +++ b/pike/psyc.cmod @@ -1,12 +1,12 @@ -#include "global.h" -#include "interpret.h" -#include "stralloc.h" -#include "mapping.h" +#include "global.h" +#include "interpret.h" +#include "stralloc.h" +#include "mapping.h" #include "array.h" -#include "svalue.h" -#include "operators.h" -#include "array.h" -#include "builtin_functions.h" +#include "svalue.h" +#include "operators.h" +#include "array.h" +#include "builtin_functions.h" #include "module.h" #include @@ -37,7 +37,7 @@ PsycTextValueRC lookup_value_mapping(const char *name, size_t len, PsycString *v //printf("lookup_value_mapping called for %.*s\n", (int) len, name); struct pike_string *key = make_shared_binary_string(name, len); struct mapping *m = (struct mapping *) extra; - struct svalue *s = low_mapping_string_lookup(m, key); + struct svalue *s = low_mapping_string_lookup(m, key); free_string(key); if (s == NULL) { @@ -125,17 +125,15 @@ PIKEFUN string render(mapping rvars, mapping evars, string method, string|void b // fill headers rheaders.lines = 0; - rheaders.modifiers = malloc(sizeof(PsycModifier) * rvars->data->size); + rheaders.modifiers = malloc(sizeof(PsycModifier) * rvars->data->size); NEW_MAPPING_LOOP(rvars->data) { if (k->ind.type == PIKE_T_STRING) { switch(k->val.type) { case PIKE_T_STRING: - rheaders.modifiers[rheaders.lines++] = psyc_modifier_new(oper, - (char *)STR0(k->ind.u.string), - k->ind.u.string->len, - (char *)STR0(k->val.u.string), - k->val.u.string->len, - PSYC_MODIFIER_ROUTING); + psyc_modifier_init(&rheaders.modifiers[rheaders.lines++], oper, + (char *)STR0(k->ind.u.string), k->ind.u.string->len, + (char *)STR0(k->val.u.string), k->val.u.string->len, + PSYC_MODIFIER_ROUTING); break; default: Pike_error("psyc render: unsupported non-string value in rvars\n"); @@ -147,7 +145,7 @@ PIKEFUN string render(mapping rvars, mapping evars, string method, string|void b } eheaders.lines = 0; - eheaders.modifiers = malloc(sizeof(PsycModifier) * evars->data->size); + eheaders.modifiers = malloc(sizeof(PsycModifier) * evars->data->size); NEW_MAPPING_LOOP(evars->data) { if (k->ind.type == PIKE_T_STRING) { char *key; @@ -157,7 +155,7 @@ PIKEFUN string render(mapping rvars, mapping evars, string method, string|void b struct pike_string *s; key = (char *) STR0(k->ind.u.string); - keylen = k->ind.u.string->len; + keylen = k->ind.u.string->len; switch(k->val.type) { case PIKE_T_INT: @@ -197,7 +195,7 @@ PIKEFUN string render(mapping rvars, mapping evars, string method, string|void b Pike_error("psyc_render: unsupported data type in list\n"); } } - list = psyc_list_new(elems, k->val.u.array->size, PSYC_LIST_CHECK_LENGTH); + psyc_list_init(&list, elems, k->val.u.array->size, PSYC_LIST_CHECK_LENGTH); struct pike_string *listbuf = begin_shared_string(list.length); psyc_render_list(&list, (char *) STR0(listbuf), listbuf->len); @@ -211,37 +209,32 @@ PIKEFUN string render(mapping rvars, mapping evars, string method, string|void b Pike_error("psyc_render: unsupported value in evars\n"); break; } - eheaders.modifiers[eheaders.lines++] = psyc_modifier_new(oper, - key, keylen, - val, vallen, - PSYC_MODIFIER_CHECK_LENGTH); + psyc_modifier_init(&eheaders.modifiers[eheaders.lines++], oper, + key, keylen, + val, vallen, + PSYC_MODIFIER_CHECK_LENGTH); } else { Pike_error("psyc render: unsupported non-string key in evars\n"); } } if (body != NULL) { - packet = psyc_packet_new(rheaders.modifiers, - rheaders.lines, - eheaders.modifiers, - eheaders.lines, - (const char *)STR0(method), method->len, - (const char *)STR0(body), body->len, - PSYC_PACKET_CHECK_LENGTH); + psyc_packet_init(&packet, rheaders.modifiers, rheaders.lines, + eheaders.modifiers, eheaders.lines, + (const char *)STR0(method), method->len, + (const char *)STR0(body), body->len, + PSYC_PACKET_CHECK_LENGTH); } else { // body arg was not given - packet = psyc_packet_new(rheaders.modifiers, - rheaders.lines, - eheaders.modifiers, - eheaders.lines, - (const char *)STR0(method), method->len, - NULL, 0, - PSYC_PACKET_CHECK_LENGTH); + psyc_packet_init(&packet, rheaders.modifiers, rheaders.lines, + eheaders.modifiers, eheaders.lines, + (const char *)STR0(method), method->len, + NULL, 0, PSYC_PACKET_CHECK_LENGTH); } struct pike_string *s = begin_shared_string(packet.length); psyc_render(&packet, (char *) STR0(s), packet.length); // pop_n_elems(args); - RETURN end_shared_string(s); + RETURN end_shared_string(s); } PIKECLASS Parser { @@ -360,7 +353,7 @@ PIKECLASS Parser { make_shared_binary_string(name.data, name.length), &sv); } else { - err = 3; + err = 3; } break; case PSYC_TYPE_FLAG: @@ -415,7 +408,7 @@ PIKECLASS Parser { make_shared_binary_string(value.data, value.length)); } } while (0); - if (err) { // there was an error while + if (err) { // there was an error while // FIXME return; } @@ -443,14 +436,14 @@ PIKECLASS Parser { push_mapping(THIS->rvars); push_mapping(THIS->evars); if (THIS->method == NULL) { - apply_low(Pike_fp->current_object, THIS->handle_packet, 2); + apply_low(Pike_fp->current_object, THIS->handle_packet, 2); } else if (THIS->body == NULL) { push_string(THIS->method); - apply_low(Pike_fp->current_object, THIS->handle_packet, 3); + apply_low(Pike_fp->current_object, THIS->handle_packet, 3); } else { push_string(THIS->method); push_string(THIS->body); - apply_low(Pike_fp->current_object, THIS->handle_packet, 4); + apply_low(Pike_fp->current_object, THIS->handle_packet, 4); } // reset packet state @@ -467,7 +460,7 @@ PIKECLASS Parser { return; default: // fatal error push_int(ret); - apply_low(Pike_fp->current_object, THIS->handle_error, 1); + apply_low(Pike_fp->current_object, THIS->handle_error, 1); // FIXME: free stuff? or do we kill the socket and parser anyway return; } diff --git a/src/packet.c b/src/packet.c index b4444e7..9862be6 100644 --- a/src/packet.c +++ b/src/packet.c @@ -48,15 +48,15 @@ PsycListFlag psyc_list_length (PsycList *list) } inline -PsycList psyc_list_new (PsycString *elems, size_t num_elems, PsycListFlag flag) +void psyc_list_init (PsycList *list, PsycString *elems, size_t num_elems, + PsycListFlag flag) { - PsycList list = {num_elems, elems, 0, flag}; + *list = (PsycList) {num_elems, elems, 0, flag}; if (flag == PSYC_LIST_CHECK_LENGTH) // check if list elements need length - list.flag = psyc_list_length_check(&list); + list->flag = psyc_list_length_check(list); - list.length = psyc_list_length(&list); - return list; + list->length = psyc_list_length(list); } @@ -134,33 +134,33 @@ size_t psyc_packet_length_set (PsycPacket *p) } inline -PsycPacket psyc_packet_new (PsycModifier *routing, size_t routinglen, - PsycModifier *entity, size_t entitylen, - char *method, size_t methodlen, - char *data, size_t datalen, - PsycPacketFlag flag) +void psyc_packet_init (PsycPacket *p, + PsycModifier *routing, size_t routinglen, + PsycModifier *entity, size_t entitylen, + char *method, size_t methodlen, + char *data, size_t datalen, + PsycPacketFlag flag) { - PsycPacket p = {{routinglen, routing}, {entitylen, entity}, - {methodlen, method}, {datalen, data}, {0,0}, 0, 0, flag}; + *p = (PsycPacket) {{routinglen, routing}, {entitylen, entity}, + {methodlen, method}, {datalen, data}, {0,0}, 0, 0, flag}; - if (flag == PSYC_PACKET_CHECK_LENGTH) // find out if it needs a length - p.flag = psyc_packet_length_check(&p); + if (flag == PSYC_PACKET_CHECK_LENGTH) // find out if it needs length + p->flag = psyc_packet_length_check(p); - psyc_packet_length_set(&p); - return p; + psyc_packet_length_set(p); } inline -PsycPacket psyc_packet_new_raw (PsycModifier *routing, size_t routinglen, - char *content, size_t contentlen, - PsycPacketFlag flag) +void psyc_packet_init_raw (PsycPacket *p, + PsycModifier *routing, size_t routinglen, + char *content, size_t contentlen, + PsycPacketFlag flag) { - PsycPacket p = {{routinglen, routing}, {0,0}, {0,0}, {0,0}, - {contentlen, content}, 0, 0, flag}; + *p = (PsycPacket) {{routinglen, routing}, {0,0}, {0,0}, {0,0}, + {contentlen, content}, 0, 0, flag}; - if (flag == PSYC_PACKET_CHECK_LENGTH) // find out if it needs a length - p.flag = psyc_packet_length_check(&p); + if (flag == PSYC_PACKET_CHECK_LENGTH) // find out if it needs length + p->flag = psyc_packet_length_check(p); - psyc_packet_length_set(&p); - return p; + psyc_packet_length_set(p); } diff --git a/test/test_list.c b/test/test_list.c index e4ebb39..36fb8c5 100644 --- a/test/test_list.c +++ b/test/test_list.c @@ -26,8 +26,8 @@ int main (int argc, char **argv) { for (i=0; i