Looks Good.
On Fri, Mar 25, 2011 at 3:40 PM, Ben Pfaff <b...@nicira.com> wrote: > Should be slightly cheaper than sorting a list (O(n) vs. O(n lg n)). > --- > lib/ovsdb-parser.c | 14 ++++++-------- > lib/ovsdb-parser.h | 6 +++--- > 2 files changed, 9 insertions(+), 11 deletions(-) > > diff --git a/lib/ovsdb-parser.c b/lib/vsdb-parser.c > index 2a4c3d9..e1832a9 100644 > --- a/lib/ovsdb-parser.c > +++ b/lib/ovsdb-parser.c > @@ -1,4 +1,4 @@ > -/* Copyright (c) 2009 Nicira Networks > +/* Copyright (c) 2009, 2011 Nicira Networks > * > * Licensed under the Apache License, Version 2.0 (the "License"); > * you may not use this file except in compliance with the License. > @@ -32,7 +32,7 @@ ovsdb_parser_init(struct ovsdb_parser *parser, const struct > json *json, > parser->name = xvasprintf(name, args); > va_end(args); > > - svec_init(&parser->used); > + sset_init(&parser->used); > parser->error = NULL; > > parser->json = (json && json->type == JSON_OBJECT ? json : NULL); > @@ -85,7 +85,7 @@ ovsdb_parser_member(struct ovsdb_parser *parser, const char > *name, > || (types & OP_ID && value->type == JSON_STRING > && ovsdb_parser_is_id(value->u.string))) > { > - svec_add(&parser->used, name); > + sset_add(&parser->used, name); > return value; > } else { > ovsdb_parser_raise_error(parser, "Type mismatch for member '%s'.", > @@ -133,14 +133,12 @@ ovsdb_parser_finish(struct ovsdb_parser *parser) > const struct shash *object = json_object(parser->json); > size_t n_unused; > > - /* XXX this method of detecting unused members can be made cheaper */ > - svec_sort_unique(&parser->used); > - n_unused = shash_count(object) - parser->used.n; > + n_unused = shash_count(object) - sset_count(&parser->used); > if (n_unused) { > struct shash_node *node; > > SHASH_FOR_EACH (node, object) { > - if (!svec_contains(&parser->used, node->name)) { > + if (!sset_contains(&parser->used, node->name)) { > if (n_unused > 1) { > ovsdb_parser_raise_error( > parser, > @@ -160,7 +158,7 @@ ovsdb_parser_finish(struct ovsdb_parser *parser) > } > > free(parser->name); > - svec_destroy(&parser->used); > + sset_destroy(&parser->used); > > return parser->error; > } > diff --git a/lib/ovsdb-parser.h b/lib/ovsdb-parser.h > index d6270bb..44586aa 100644 > --- a/lib/ovsdb-parser.h > +++ b/lib/ovsdb-parser.h > @@ -1,4 +1,4 @@ > -/* Copyright (c) 2009, 2010 Nicira Networks > +/* Copyright (c) 2009, 2010, 2011 Nicira Networks > * > * Licensed under the Apache License, Version 2.0 (the "License"); > * you may not use this file except in compliance with the License. > @@ -19,12 +19,12 @@ > #include <stdbool.h> > #include "compiler.h" > #include "json.h" > -#include "svec.h" > +#include "sset.h" > #include "util.h" > > struct ovsdb_parser { > char *name; /* Used only in error messages. */ > - struct svec used; /* Already-parsed names from 'object'. */ > + struct sset used; /* Already-parsed names from 'object'. */ > const struct json *json; /* JSON object being parsed. */ > struct ovsdb_error *error; /* Error signaled, if any. */ > }; > -- > 1.7.1 > > _______________________________________________ > dev mailing list > dev@openvswitch.org > http://openvswitch.org/mailman/listinfo/dev > _______________________________________________ dev mailing list dev@openvswitch.org http://openvswitch.org/mailman/listinfo/dev