diff options
Diffstat (limited to 'CIAO/tools/Config_Handlers/toplevel.cpp')
-rw-r--r-- | CIAO/tools/Config_Handlers/toplevel.cpp | 185 |
1 files changed, 143 insertions, 42 deletions
diff --git a/CIAO/tools/Config_Handlers/toplevel.cpp b/CIAO/tools/Config_Handlers/toplevel.cpp index 25c9a04929d..4a06443d8fb 100644 --- a/CIAO/tools/Config_Handlers/toplevel.cpp +++ b/CIAO/tools/Config_Handlers/toplevel.cpp @@ -9,6 +9,12 @@ * Will Otte <wotte@dre.vanderbilt.edu> */ +// Fix for Borland compilers, which seem to have a broken +// <string> include. +#ifdef __BORLANDC__ +# include <string.h> +#endif + #include "toplevel.hpp" namespace CIAO @@ -16,49 +22,75 @@ namespace CIAO namespace Config_Handlers { // TopLevelPackageDescription - // + // TopLevelPackageDescription:: - TopLevelPackageDescription (::CIAO::Config_Handlers::PackageConfiguration const& package__) - : - ::XSCRT::Type (), - package_ (new ::CIAO::Config_Handlers::PackageConfiguration (package__)), - regulator__ () + TopLevelPackageDescription () + : + ::XSCRT::Type (), + regulator__ () { - package_->container (this); } TopLevelPackageDescription:: TopLevelPackageDescription (::CIAO::Config_Handlers::TopLevelPackageDescription const& s) - : - ::XSCRT::Type (), - package_ (new ::CIAO::Config_Handlers::PackageConfiguration (*s.package_)), - regulator__ () + : + ::XSCRT::Type (), + regulator__ () { - package_->container (this); + { + for (basePackage_const_iterator i (s.basePackage_.begin ());i != s.basePackage_.end ();++i) add_basePackage (*i); + } } ::CIAO::Config_Handlers::TopLevelPackageDescription& TopLevelPackageDescription:: operator= (::CIAO::Config_Handlers::TopLevelPackageDescription const& s) { - package (s.package ()); + basePackage_.clear (); + { + for (basePackage_const_iterator i (s.basePackage_.begin ());i != s.basePackage_.end ();++i) add_basePackage (*i); + } return *this; } // TopLevelPackageDescription - // - ::CIAO::Config_Handlers::PackageConfiguration const& TopLevelPackageDescription:: - package () const + // + TopLevelPackageDescription::basePackage_iterator TopLevelPackageDescription:: + begin_basePackage () + { + return basePackage_.begin (); + } + + TopLevelPackageDescription::basePackage_iterator TopLevelPackageDescription:: + end_basePackage () + { + return basePackage_.end (); + } + + TopLevelPackageDescription::basePackage_const_iterator TopLevelPackageDescription:: + begin_basePackage () const + { + return basePackage_.begin (); + } + + TopLevelPackageDescription::basePackage_const_iterator TopLevelPackageDescription:: + end_basePackage () const { - return *package_; + return basePackage_.end (); } void TopLevelPackageDescription:: - package (::CIAO::Config_Handlers::PackageConfiguration const& e) + add_basePackage (::CIAO::Config_Handlers::PackageConfiguration const& e) { - *package_ = e; + basePackage_.push_back (e); + } + + size_t TopLevelPackageDescription:: + count_basePackage(void) const + { + return basePackage_.size (); } } } @@ -72,26 +104,26 @@ namespace CIAO TopLevelPackageDescription:: TopLevelPackageDescription (::XSCRT::XML::Element< ACE_TCHAR > const& e) - :Base__ (e), regulator__ () + :Base (e), regulator__ () { ::XSCRT::Parser< ACE_TCHAR > p (e); while (p.more_elements ()) + { + ::XSCRT::XML::Element< ACE_TCHAR > e (p.next_element ()); + ::std::basic_string< ACE_TCHAR > n (::XSCRT::XML::uq_name (e.name ())); + + if (n == "basePackage") + { + ::CIAO::Config_Handlers::PackageConfiguration t (e); + add_basePackage (t); + } + + else { - ::XSCRT::XML::Element< ACE_TCHAR > e (p.next_element ()); - ::std::basic_string< ACE_TCHAR > n (::XSCRT::XML::uq_name (e.name ())); - - if (n == "package") - { - package_ = ::std::auto_ptr< ::CIAO::Config_Handlers::PackageConfiguration > (new ::CIAO::Config_Handlers::PackageConfiguration (e)); - package_->container (this); - } - - else - { - } } + } } } } @@ -144,7 +176,7 @@ namespace CIAO traverse (Type& o) { pre (o); - package (o); + basePackage (o); post (o); } @@ -152,7 +184,7 @@ namespace CIAO traverse (Type const& o) { pre (o); - package (o); + basePackage (o); post (o); } @@ -167,15 +199,73 @@ namespace CIAO } void TopLevelPackageDescription:: - package (Type& o) + basePackage (Type& o) { - dispatch (o.package ()); + // VC6 anathema strikes again + // + TopLevelPackageDescription::Type::basePackage_iterator b (o.begin_basePackage()), e (o.end_basePackage()); + + if (b != e) + { + basePackage_pre (o); + for (; b != e;) + { + dispatch (*b); + if (++b != e) basePackage_next (o); + } + + basePackage_post (o); + } } void TopLevelPackageDescription:: - package (Type const& o) + basePackage (Type const& o) + { + // VC6 anathema strikes again + // + TopLevelPackageDescription::Type::basePackage_const_iterator b (o.begin_basePackage()), e (o.end_basePackage()); + + if (b != e) + { + basePackage_pre (o); + for (; b != e;) + { + dispatch (*b); + if (++b != e) basePackage_next (o); + } + + basePackage_post (o); + } + } + + void TopLevelPackageDescription:: + basePackage_pre (Type&) + { + } + + void TopLevelPackageDescription:: + basePackage_pre (Type const&) + { + } + + void TopLevelPackageDescription:: + basePackage_next (Type&) + { + } + + void TopLevelPackageDescription:: + basePackage_next (Type const&) + { + } + + void TopLevelPackageDescription:: + basePackage_post (Type&) + { + } + + void TopLevelPackageDescription:: + basePackage_post (Type const&) { - dispatch (o.package ()); } void TopLevelPackageDescription:: @@ -203,7 +293,7 @@ namespace CIAO TopLevelPackageDescription:: TopLevelPackageDescription (::XSCRT::XML::Element< ACE_TCHAR >& e) - : ::XSCRT::Writer< ACE_TCHAR > (e) + : ::XSCRT::Writer< ACE_TCHAR > (e) { } @@ -219,10 +309,21 @@ namespace CIAO } void TopLevelPackageDescription:: - package (Type const& o) + basePackage_pre (Type const&) + { + push_ (::XSCRT::XML::Element< ACE_TCHAR > ("basePackage", top_ ())); + } + + void TopLevelPackageDescription:: + basePackage_next (Type const& o) + { + basePackage_post (o); + basePackage_pre (o); + } + + void TopLevelPackageDescription:: + basePackage_post (Type const&) { - push_ (::XSCRT::XML::Element< ACE_TCHAR > ("package", top_ ())); - Traversal::TopLevelPackageDescription::package (o); pop_ (); } } |