summaryrefslogtreecommitdiff
path: root/cpp/include/Slice/JavaUtil.h
diff options
context:
space:
mode:
authorMark Spruiell <mes@zeroc.com>2003-12-15 18:43:49 +0000
committerMark Spruiell <mes@zeroc.com>2003-12-15 18:43:49 +0000
commit3df2dcb4fa8322c22dcfc49328877b541baa1917 (patch)
treec08f0c95722c6a3c13bfcb9df00da0e76f26b855 /cpp/include/Slice/JavaUtil.h
parentminor fix (diff)
downloadice-3df2dcb4fa8322c22dcfc49328877b541baa1917.tar.bz2
ice-3df2dcb4fa8322c22dcfc49328877b541baa1917.tar.xz
ice-3df2dcb4fa8322c22dcfc49328877b541baa1917.zip
adding metadata validation to Java translators
Diffstat (limited to 'cpp/include/Slice/JavaUtil.h')
-rw-r--r--cpp/include/Slice/JavaUtil.h33
1 files changed, 31 insertions, 2 deletions
diff --git a/cpp/include/Slice/JavaUtil.h b/cpp/include/Slice/JavaUtil.h
index 6c247918ac0..3d1405e348b 100644
--- a/cpp/include/Slice/JavaUtil.h
+++ b/cpp/include/Slice/JavaUtil.h
@@ -27,6 +27,11 @@ public:
virtual ~JavaGenerator();
+ //
+ // Validate all metadata in the unit with a "java:" prefix.
+ //
+ static void validateMetaData(const UnitPtr&);
+
protected:
JavaGenerator(const std::string&);
@@ -96,12 +101,36 @@ protected:
const std::string&, bool, int&, bool,
const StringList& = StringList());
-protected:
-
+ //
+ // Find custom sequence metadata.
+ //
static std::string findMetaData(const StringList&);
private:
+ class MetaDataVisitor : public ParserVisitor
+ {
+ public:
+
+ virtual bool visitModuleStart(const ModulePtr&);
+ virtual void visitClassDecl(const ClassDeclPtr&);
+ virtual bool visitClassDefStart(const ClassDefPtr&);
+ virtual bool visitExceptionStart(const ExceptionPtr&);
+ virtual bool visitStructStart(const StructPtr&);
+ virtual void visitOperation(const OperationPtr&);
+ virtual void visitDataMember(const DataMemberPtr&);
+ virtual void visitSequence(const SequencePtr&);
+ virtual void visitDictionary(const DictionaryPtr&);
+ virtual void visitEnum(const EnumPtr&);
+ virtual void visitConst(const ConstPtr&);
+
+ private:
+
+ void validate(const ContainedPtr&);
+
+ StringSet _history;
+ };
+
void printHeader();
std::string _dir;