Fixing the debug tags generation and related methods in configuration.cpp that disall...
authorDejan Jovanović <dejan.jovanovic@gmail.com>
Wed, 9 May 2012 03:31:50 +0000 (03:31 +0000)
committerDejan Jovanović <dejan.jovanovic@gmail.com>
Wed, 9 May 2012 03:31:50 +0000 (03:31 +0000)
1) The grep and sed for tags wasn't picking up on .isOn("tag")
2) The isDebugTag a) didn't take a parameter b) was using binary search using strcmp which is non-portable and didn't work for tags including special characters

Morgan should vet this, since there is some crazy sed stuff going on

src/util/Makefile.am
src/util/configuration.cpp

index 4945f633947cf3530ad690c76a3ff0b686bced8d..87fa2c8906131f2b0023dc61c9d3e2de71defd2d 100644 (file)
@@ -128,9 +128,9 @@ endif
 # expression (no |, no \<, ...).
 Debug_tags.tmp Trace_tags.tmp:
        $(AM_V_GEN)\
-       grep '\<$(@:_tags.tmp=) *( *\".*\" *)' \
+       grep '\<$(@:_tags.tmp=)\(\.isOn\)\? *( *\".*\" *)' \
                `find @srcdir@/../ -name "*.cpp" -or -name "*.h" -or -name "*.cc" -or -name "*.g"` | \
-       sed 's/^$(@:_tags.tmp=) *( *\"\([^"]*\)\".*/\1/;s/.*[^a-zA-Z0-9_]$(@:_tags.tmp=) *( *\"\([^"]*\)\".*/\1/' | sort | uniq >"$@"
+       sed 's/^$(@:_tags.tmp=)\(.isOn\)\? *( *\"\([^"]*\)\".*/\2/;s/.*[^a-zA-Z0-9_]$(@:_tags.tmp=)\(\.isOn\)\? *( *\"\([^"]*\)\".*/\2/' | sort | uniq >"$@"
 
 if CVC4_CLN_IMP
 libutil_la_SOURCES += \
index abda24c26b3ec7a4a54cf169fe97d137bc3fa9c8..66b0a2f909702003fb7e6ced8265af54d61c7e47 100644 (file)
@@ -153,15 +153,17 @@ int strcmpptr(const char **s1, const char **s2){
   return strcmp(*s1,*s2);
 }
 
-bool Configuration::isDebugTag(char const *){
+bool Configuration::isDebugTag(char const *tag){
 #if CVC4_DEBUG
   unsigned ntags = getNumDebugTags();
   char const* const* tags = getDebugTags();
-  return (bsearch(&optarg, tags, ntags, sizeof(char *),
-                  (int(*)(const void*,const void*))strcmpptr) != NULL);
-#else /* CVC4_DEBUG */
+  for (unsigned i = 0; i < ntags; ++ i) {
+    if (strcmp(tag, tags[i]) == 0) {
+      return true;
+    }
+  }
+#endif * CVC4_DEBUG */
   return false;
-#endif /* CVC4_DEBUG */
 }
 
 unsigned Configuration::getNumTraceTags() {
@@ -182,15 +184,17 @@ char const* const* Configuration::getTraceTags() {
 #endif /* CVC4_TRACING */
 }
 
-bool Configuration::isTraceTag(char const *){
+bool Configuration::isTraceTag(char const * tag){
 #if CVC4_TRACING
   unsigned ntags = getNumTraceTags();
   char const* const* tags = getTraceTags();
-  return (bsearch(&optarg, tags, ntags, sizeof(char *),
-                  (int(*)(const void*,const void*))strcmpptr) != NULL);
-#else /* CVC4_TRACING */
-  return false;
+  for (unsigned i = 0; i < ntags; ++ i) {
+    if (strcmp(tag, tags[i]) == 0) {
+      return true;
+    }
+  }
 #endif /* CVC4_TRACING */
+  return false;
 }
 
 bool Configuration::isSubversionBuild() {