From ea23e37f8fe3bc87248d917dd539575103aacfef Mon Sep 17 00:00:00 2001 From: Karl Wallner Date: Thu, 28 Dec 2017 12:40:18 +0100 Subject: [PATCH] Change namespace definitions in C++. Use nested namespaces instead of colon separated. --- lang/c++/impl/avrogencpp.cc | 16 ++++++++++++++-- 1 file changed, 14 insertions(+), 2 deletions(-) diff --git a/lang/c++/impl/avrogencpp.cc b/lang/c++/impl/avrogencpp.cc index a44fe7dfe39..149debd0fd7 100644 --- a/lang/c++/impl/avrogencpp.cc +++ b/lang/c++/impl/avrogencpp.cc @@ -33,6 +33,8 @@ #include #include +#include + #include "Compiler.hh" #include "ValidSchema.hh" #include "NodeImpl.hh" @@ -721,8 +723,14 @@ void CodeGen::generate(const ValidSchema& schema) << "#include \"" << includePrefix_ << "Decoder.hh\"\n" << "\n"; + vector nsVector; if (! ns_.empty()) { - os_ << "namespace " << ns_ << " {\n"; + boost::algorithm::split_regex(nsVector, ns_, boost::regex("::")); + for (vector::const_iterator it = + nsVector.begin(); + it != nsVector.end(); ++it) { + os_ << "namespace " << *it << " {\n"; + } inNamespace_ = true; } @@ -745,7 +753,11 @@ void CodeGen::generate(const ValidSchema& schema) if (! ns_.empty()) { inNamespace_ = false; - os_ << "}\n"; + for (vector::const_iterator it = + nsVector.begin(); + it != nsVector.end(); ++it) { + os_ << "}\n"; + } } os_ << "namespace avro {\n";