diff options
author | Jesus Ruiz <jesrui@gmail.com> | 2011-09-20 15:15:24 +0200 |
---|---|---|
committer | Jesus Ruiz <jesrui@gmail.com> | 2011-09-20 15:15:24 +0200 |
commit | d91fb952d3fb064782e6015abb10b13f3a84aa99 (patch) | |
tree | 840bd296e8bc19907a464522c72444a45e45dc97 | |
parent | 21ba70529db02df3a8869096e289900ce48a2653 (diff) | |
download | dbus-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.cpp | 7 | ||||
-rw-r--r-- | tools/generator_utils.h | 1 |
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 |