From baabfc3b080799415c0b48b6da4c37d0726cc9d0 Mon Sep 17 00:00:00 2001 From: Ravi Nanjundappa Date: Mon, 10 Aug 2015 14:42:18 +0530 Subject: [PATCH] csdk : Refactoring ocpayload.c file Introduced a static function OCRepPayloadSetProp() and pushed the generic code for all datatypes. Change-Id: I787274c91e80c52d61563944d1284aa7c24e10a8 Signed-off-by: Ravi Nanjundappa Reviewed-on: https://gerrit.iotivity.org/gerrit/2152 Tested-by: jenkins-iotivity Reviewed-by: Naga Ashok Jampani Reviewed-by: Erich Keane --- resource/csdk/stack/src/ocpayload.c | 88 +++++++++++++++++-------------------- 1 file changed, 41 insertions(+), 47 deletions(-) diff --git a/resource/csdk/stack/src/ocpayload.c b/resource/csdk/stack/src/ocpayload.c index 7b9b9a3..cc2ca22 100644 --- a/resource/csdk/stack/src/ocpayload.c +++ b/resource/csdk/stack/src/ocpayload.c @@ -445,26 +445,52 @@ bool OCRepPayloadIsNull(const OCRepPayload* payload, const char* name) return val->type == OCREP_PROP_NULL; } -bool OCRepPayloadSetNull(OCRepPayload* payload, const char* name) +static bool OCRepPayloadSetProp(OCRepPayload* payload, const char* name, + void* value, OCRepPayloadPropType type) { - OCRepPayloadValue* val = OCRepPayloadFindAndSetValue(payload, name, OCREP_PROP_NULL); - return val != NULL; -} - -bool OCRepPayloadSetPropInt(OCRepPayload* payload, - const char* name, int64_t value) -{ - OCRepPayloadValue* val = OCRepPayloadFindAndSetValue(payload, name, OCREP_PROP_INT); - + OCRepPayloadValue* val = OCRepPayloadFindAndSetValue(payload, name, type); if(!val) { return false; } + switch(type) + { + case OCREP_PROP_INT: + val->i = *(int64_t*)value; + break; + case OCREP_PROP_DOUBLE: + val->d = *(double*)value; + break; + case OCREP_PROP_BOOL: + val->b = *(bool*)value; + break; + case OCREP_PROP_OBJECT: + val->obj = (OCRepPayload*)value; + break; + case OCREP_PROP_STRING: + val->str = (char*)value; + return val->str != NULL; + case OCREP_PROP_NULL: + return val != NULL; + case OCREP_PROP_ARRAY: + default: + return false; + } - val->i = value; return true; } +bool OCRepPayloadSetNull(OCRepPayload* payload, const char* name) +{ + return OCRepPayloadSetProp(payload, name, NULL, OCREP_PROP_NULL); +} + +bool OCRepPayloadSetPropInt(OCRepPayload* payload, + const char* name, int64_t value) +{ + return OCRepPayloadSetProp(payload, name, &value, OCREP_PROP_INT); +} + bool OCRepPayloadGetPropInt(const OCRepPayload* payload, const char* name, int64_t* value) { OCRepPayloadValue* val = OCRepPayloadFindValue(payload, name); @@ -481,15 +507,7 @@ bool OCRepPayloadGetPropInt(const OCRepPayload* payload, const char* name, int64 bool OCRepPayloadSetPropDouble(OCRepPayload* payload, const char* name, double value) { - OCRepPayloadValue* val = OCRepPayloadFindAndSetValue(payload, name, OCREP_PROP_DOUBLE); - - if(!val ) - { - return false; - } - - val->d = value; - return true; + return OCRepPayloadSetProp(payload, name, &value, OCREP_PROP_DOUBLE); } bool OCRepPayloadGetPropDouble(const OCRepPayload* payload, const char* name, double* value) @@ -519,15 +537,7 @@ bool OCRepPayloadSetPropString(OCRepPayload* payload, const char* name, const ch bool OCRepPayloadSetPropStringAsOwner(OCRepPayload* payload, const char* name, char* value) { - OCRepPayloadValue* val = OCRepPayloadFindAndSetValue(payload, name, OCREP_PROP_STRING); - - if(!val) - { - return false; - } - - val->str = value; - return val->str != NULL; + return OCRepPayloadSetProp(payload, name, value, OCREP_PROP_STRING); } bool OCRepPayloadGetPropString(const OCRepPayload* payload, const char* name, const char** value) @@ -546,15 +556,7 @@ bool OCRepPayloadGetPropString(const OCRepPayload* payload, const char* name, co bool OCRepPayloadSetPropBool(OCRepPayload* payload, const char* name, bool value) { - OCRepPayloadValue* val = OCRepPayloadFindAndSetValue(payload, name, OCREP_PROP_BOOL); - - if(!val) - { - return false; - } - - val->b = value; - return true; + return OCRepPayloadSetProp(payload, name, &value, OCREP_PROP_BOOL); } bool OCRepPayloadGetPropBool(const OCRepPayload* payload, const char* name, bool* value) @@ -584,15 +586,7 @@ bool OCRepPayloadSetPropObject(OCRepPayload* payload, const char* name, const OC bool OCRepPayloadSetPropObjectAsOwner(OCRepPayload* payload, const char* name, OCRepPayload* value) { - OCRepPayloadValue* val = OCRepPayloadFindAndSetValue(payload, name, OCREP_PROP_OBJECT); - - if(!val) - { - return false; - } - - val->obj = value; - return true; + return OCRepPayloadSetProp(payload, name, value, OCREP_PROP_OBJECT); } bool OCRepPayloadGetPropObject(const OCRepPayload* payload, const char* name, OCRepPayload** value) -- 2.7.4