summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJesus Ruiz <jesrui@gmail.com>2011-09-20 15:15:24 +0200
committerJesus Ruiz <jesrui@gmail.com>2011-09-20 15:15:24 +0200
commitd91fb952d3fb064782e6015abb10b13f3a84aa99 (patch)
tree840bd296e8bc19907a464522c72444a45e45dc97
parent21ba70529db02df3a8869096e289900ce48a2653 (diff)
downloaddbus-c++-d91fb952d3fb064782e6015abb10b13f3a84aa99.tar.gz
Fix code generator: Put on the array only the next element after 'a'.
For example "(aii)" produced: member(const ::DBus::Struct< std::vector< int32_t, int32_t > >& arg) And now it produces: member(const ::DBus::Struct< std::vector< int32_t >, int32_t >& arg)
-rw-r--r--tools/generator_utils.cpp7
-rw-r--r--tools/generator_utils.h1
2 files changed, 5 insertions, 3 deletions
diff --git a/tools/generator_utils.cpp b/tools/generator_utils.cpp
index 7ddc087..828cf12 100644
--- a/tools/generator_utils.cpp
+++ b/tools/generator_utils.cpp
@@ -85,7 +85,7 @@ const char *atomic_type_to_string(char t)
return atos[i].name;
}
-void _parse_signature(const string &signature, string &type, unsigned int &i)
+static void _parse_signature(const string &signature, string &type, unsigned int &i, bool only_once = false)
{
cout << "signature: " << signature << endl;
cout << "type: " << type << endl;
@@ -120,7 +120,7 @@ void _parse_signature(const string &signature, string &type, unsigned int &i)
default:
{
type += "std::vector< ";
- _parse_signature(signature, type, i);
+ _parse_signature(signature, type, i, true);
type += " >";
@@ -158,6 +158,9 @@ void _parse_signature(const string &signature, string &type, unsigned int &i)
}
}
+ if (only_once)
+ return;
+
if (i+1 < signature.length() && signature[i+1] != ')' && signature[i+1] != '}')
{
type += ", ";
diff --git a/tools/generator_utils.h b/tools/generator_utils.h
index b232b56..ea754df 100644
--- a/tools/generator_utils.h
+++ b/tools/generator_utils.h
@@ -31,7 +31,6 @@
const char *atomic_type_to_string(char t);
std::string stub_name(std::string name);
std::string signature_to_type(const std::string &signature);
-void _parse_signature(const std::string &signature, std::string &type, unsigned int &i);
void underscorize(std::string &str);
/// create std::string from any number