Added new utility to replace one character with another in a XStr.
authorFilippo Gioachin <gioachin@illinois.edu>
Wed, 11 Jun 2008 02:37:36 +0000 (02:37 +0000)
committerFilippo Gioachin <gioachin@illinois.edu>
Wed, 11 Jun 2008 02:37:36 +0000 (02:37 +0000)
Used in allowing messages with namespace qualifier to work

src/xlat-i/xi-symbol.C
src/xlat-i/xi-util.C
src/xlat-i/xi-util.h

index d63032b87e07efb7f76e8203c26ebdc820a3d633..3873840ff46043def34ba8155ca774524a7b58e8 100644 (file)
@@ -2328,7 +2328,10 @@ XStr Entry::epStr(void)
 {
   XStr str;
   str << name << "_";
-  if (param->isMessage()) str<<param->getBaseName();
+  if (param->isMessage()) {
+    str<<param->getBaseName();
+    str.replace(':', '_');
+  }
   else if (param->isVoid()) str<<"void";
   else str<<"marshall"<<entryCount;
   return str;
index 9260694a0a979a3a1eae6d79beae62fce33a3831..c26735d45030bbed3acd2ba7c5c030f0f52802c4 100644 (file)
@@ -90,3 +90,9 @@ XStr::spew(const char*b, const char *a1, const char *a2, const char *a3,
   }
 }
 
+void XStr::replace (const char a, const char b) {
+  for(int i=0; i<len; i++) {
+    if (s[i] == a) s[i] = b;
+  }
+}
+
index 147cbf388de12e5a1bd0e104da56f0757e348b91..d778440a97c783a200b9ccc82de876b19b2107fa 100644 (file)
@@ -45,6 +45,8 @@ class XStr {
     // MAB: this method appends character c to every line
     // basically substitutes every \n with a "c\n"
     void line_append(const char c);
+    // Replace all occurences of character "a" in string with character "b"
+    void replace (const char a, const char b);
   public:
     XStr();
     XStr(const char *_s);