aboutsummaryrefslogtreecommitdiff
path: root/libxsde/xsde/cxx/serializer/validating/string-common.cxx
diff options
context:
space:
mode:
authorBoris Kolpackov <boris@codesynthesis.com>2010-03-29 16:37:38 +0200
committerBoris Kolpackov <boris@codesynthesis.com>2010-03-29 16:37:38 +0200
commit51913ccf136aff6b01b19fd13078b726cde15d6f (patch)
tree28eada9709b17d29bc03d54dcc44606b65b406e1 /libxsde/xsde/cxx/serializer/validating/string-common.cxx
parent71e026399d644c3e46aff5cab5e92c8ac56f0c79 (diff)
Use binary search to check for string enumerations
Diffstat (limited to 'libxsde/xsde/cxx/serializer/validating/string-common.cxx')
-rw-r--r--libxsde/xsde/cxx/serializer/validating/string-common.cxx13
1 files changed, 3 insertions, 10 deletions
diff --git a/libxsde/xsde/cxx/serializer/validating/string-common.cxx b/libxsde/xsde/cxx/serializer/validating/string-common.cxx
index f7d49b6..5dab6c9 100644
--- a/libxsde/xsde/cxx/serializer/validating/string-common.cxx
+++ b/libxsde/xsde/cxx/serializer/validating/string-common.cxx
@@ -3,7 +3,8 @@
// copyright : Copyright (c) 2005-2010 Code Synthesis Tools CC
// license : GNU GPL v2 + exceptions; see accompanying LICENSE file
-#include <string.h> // strlen, strcmp
+#include <string.h> // strlen
+#include <xsde/cxx/string-search.hxx>
#include <xsde/cxx/serializer/validating/string-common.hxx>
namespace xsde
@@ -56,15 +57,7 @@ namespace xsde
if (f.enum_count_ != 0)
{
- size_t i = 0;
-
- for (; i < f.enum_count_; ++i)
- {
- if (strcmp (s, f.enum_[i]) == 0)
- break;
- }
-
- if (i == f.enum_count_)
+ if (search (f.enum_, f.enum_count_, s) == f.enum_count_)
{
ctx.schema_error (schema_error::value_not_in_enumeration);
return false;