提交 c66342d8 编写于 作者: M Max Bruckner

cJSON_Utils: Use enum for opcode

上级 c960b2b8
......@@ -466,13 +466,15 @@ static cJSON_bool insert_item_in_array(cJSON *array, size_t which, cJSON *newite
return 1;
}
enum patch_operation { INVALID, ADD, REMOVE, REPLACE, MOVE, COPY, TEST };
static int cJSONUtils_ApplyPatch(cJSON *object, cJSON *patch)
{
cJSON *op = NULL;
cJSON *path = NULL;
cJSON *value = NULL;
cJSON *parent = NULL;
int opcode = 0;
enum patch_operation opcode = INVALID;
unsigned char *parentptr = NULL;
unsigned char *childptr = NULL;
......@@ -487,23 +489,23 @@ static int cJSONUtils_ApplyPatch(cJSON *object, cJSON *patch)
/* decode operation */
if (!strcmp(op->valuestring, "add"))
{
opcode = 0;
opcode = ADD;
}
else if (!strcmp(op->valuestring, "remove"))
{
opcode = 1;
opcode = REMOVE;
}
else if (!strcmp(op->valuestring, "replace"))
{
opcode = 2;
opcode = REPLACE;
}
else if (!strcmp(op->valuestring, "move"))
{
opcode = 3;
opcode = MOVE;
}
else if (!strcmp(op->valuestring, "copy"))
{
opcode = 4;
opcode = COPY;
}
else if (!strcmp(op->valuestring, "test"))
{
......@@ -516,8 +518,7 @@ static int cJSONUtils_ApplyPatch(cJSON *object, cJSON *patch)
return 3;
}
/* Remove/Replace */
if ((opcode == 1) || (opcode == 2))
if ((opcode == REMOVE) || (opcode == REPLACE))
{
/* Get rid of old. */
cJSON *old_item = cJSONUtils_PatchDetach(object, (unsigned char*)path->valuestring);
......@@ -526,7 +527,7 @@ static int cJSONUtils_ApplyPatch(cJSON *object, cJSON *patch)
return 13;
}
cJSON_Delete(old_item);
if (opcode == 1)
if (opcode == REMOVE)
{
/* For Remove, this job is done. */
return 0;
......@@ -534,7 +535,7 @@ static int cJSONUtils_ApplyPatch(cJSON *object, cJSON *patch)
}
/* Copy/Move uses "from". */
if ((opcode == 3) || (opcode == 4))
if ((opcode == MOVE) || (opcode == COPY))
{
cJSON *from = cJSON_GetObjectItem(patch, "from");
if (!from)
......@@ -543,14 +544,12 @@ static int cJSONUtils_ApplyPatch(cJSON *object, cJSON *patch)
return 4;
}
if (opcode == 3)
if (opcode == MOVE)
{
/* move */
value = cJSONUtils_PatchDetach(object, (unsigned char*)from->valuestring);
}
if (opcode == 4)
if (opcode == COPY)
{
/* copy */
value = cJSONUtils_GetPointer(object, from->valuestring);
}
if (!value)
......@@ -558,7 +557,7 @@ static int cJSONUtils_ApplyPatch(cJSON *object, cJSON *patch)
/* missing "from" for copy/move. */
return 5;
}
if (opcode == 4)
if (opcode == COPY)
{
value = cJSON_Duplicate(value, 1);
}
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册