From d91fb952d3fb064782e6015abb10b13f3a84aa99 Mon Sep 17 00:00:00 2001 From: Jesus Ruiz Date: Tue, 20 Sep 2011 15:15:24 +0200 Subject: 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) --- tools/generator_utils.cpp | 7 +++++-- 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 -- cgit v1.2.1