From 51411ff3657a3f29c849bfda37d3b4bb5bf52665 Mon Sep 17 00:00:00 2001 From: martin-s Date: Tue, 4 Oct 2011 18:23:45 +0000 Subject: [PATCH] Add:Core:Integrated functions to add or remove an attribute git-svn-id: https://navit.svn.sourceforge.net/svnroot/navit/trunk@4828 ffa7fe5e-494d-0410-b361-a75ebd5db220 --- navit/navit/command.c | 23 +++++++++++++++++++++++ 1 file changed, 23 insertions(+) diff --git a/navit/navit/command.c b/navit/navit/command.c index c0c5aa1..be0463c 100644 --- a/navit/navit/command.c +++ b/navit/navit/command.c @@ -153,6 +153,25 @@ command_object_get_attr(struct context *ctx, struct attr *object, enum attr_type return func->get_attr(object->u.data, attr_type, ret, NULL); } +static int +command_object_add_attr(struct context *ctx, struct attr *object, struct attr *attr) +{ + struct object_func *func=object_func_lookup(object->type); + if (!func || !func->add_attr) + return 0; + return func->add_attr(object->u.data, attr); +} + +static int +command_object_remove_attr(struct context *ctx, struct attr *object, struct attr *attr) +{ + struct object_func *func=object_func_lookup(object->type); + if (!func || !func->remove_attr) + return 0; + return func->remove_attr(object->u.data, attr); +} + + static void command_get_attr(struct context *ctx, struct result *res) { @@ -409,6 +428,10 @@ command_call_function(struct context *ctx, struct result *res) res->attr.u.data=func->create(NULL, list); } } + } else if (!strcmp(function,"add_attr")) { + command_object_add_attr(ctx, &res->attr, list[0]); + } else if (!strcmp(function,"remove_attr")) { + command_object_remove_attr(ctx, &res->attr, list[0]); } else { if (command_object_get_attr(ctx, &res->attr, attr_callback_list, &cbl)) { int valid; -- 2.7.4