diff options
Diffstat (limited to 'cpp/include/Slice/XsdVisitor.h')
-rw-r--r-- | cpp/include/Slice/XsdVisitor.h | 56 |
1 files changed, 56 insertions, 0 deletions
diff --git a/cpp/include/Slice/XsdVisitor.h b/cpp/include/Slice/XsdVisitor.h new file mode 100644 index 00000000000..aeba207028e --- /dev/null +++ b/cpp/include/Slice/XsdVisitor.h @@ -0,0 +1,56 @@ +// ********************************************************************** +// +// Copyright (c) 2001 +// MutableRealms, Inc. +// Huntsville, AL, USA +// +// All Rights Reserved +// +// ********************************************************************** + +#ifndef SLICE_XSD_VISITOR_H +#define SLICE_XSD_VISITOR_H + +#include <Slice/Parser.h> +#include <IceUtil/OutputUtil.h> +#include <stack> + +namespace Slice +{ + +class XsdVisitor : public ::IceUtil::noncopyable, public ParserVisitor +{ +public: + + XsdVisitor(); + XsdVisitor(::std::ostream&); + + void emitElements(bool); + + virtual bool visitClassDefStart(const ClassDefPtr&); + virtual bool visitExceptionStart(const ExceptionPtr&); + virtual bool visitStructStart(const StructPtr&); + virtual void visitOperation(const OperationPtr&); + virtual void visitEnum(const EnumPtr&); + virtual void visitSequence(const SequencePtr&); + virtual void visitDictionary(const DictionaryPtr&); + +private: + + void annotate(const ::std::string&); + void emitElement(const DataMemberPtr&); + void emitElement(const TypeString&); + + std::string containedToId(const ContainedPtr&); + +protected: + + std::string toString(const SyntaxTreeBasePtr&); + + ::IceUtil::XMLOutput O; + bool _emitElements; +}; + +} + +#endif |