diff options
Diffstat (limited to 'cpp/src/FreezeScript/AssignVisitor.h')
-rw-r--r-- | cpp/src/FreezeScript/AssignVisitor.h | 59 |
1 files changed, 59 insertions, 0 deletions
diff --git a/cpp/src/FreezeScript/AssignVisitor.h b/cpp/src/FreezeScript/AssignVisitor.h new file mode 100644 index 00000000000..f9a4d4031d5 --- /dev/null +++ b/cpp/src/FreezeScript/AssignVisitor.h @@ -0,0 +1,59 @@ +// ********************************************************************** +// +// Copyright (c) 2004 +// ZeroC, Inc. +// Billerica, MA, USA +// +// All Rights Reserved. +// +// Ice is free software; you can redistribute it and/or modify it under +// the terms of the GNU General Public License version 2 as published by +// the Free Software Foundation. +// +// ********************************************************************** + +#ifndef FREEZE_SCRIPT_ASSIGN_VISITOR_H +#define FREEZE_SCRIPT_ASSIGN_VISITOR_H + +#include <FreezeScript/Data.h> + +namespace FreezeScript +{ + +class AssignVisitor : public DataVisitor +{ +public: + + AssignVisitor(const DataPtr&, const DataFactoryPtr&, const ErrorReporterPtr&, bool, + const std::string& = std::string()); + + virtual void visitBoolean(const BooleanDataPtr&); + virtual void visitInteger(const IntegerDataPtr&); + virtual void visitDouble(const DoubleDataPtr&); + virtual void visitString(const StringDataPtr&); + virtual void visitProxy(const ProxyDataPtr&); + virtual void visitStruct(const StructDataPtr&); + virtual void visitSequence(const SequenceDataPtr&); + virtual void visitEnum(const EnumDataPtr&); + virtual void visitDictionary(const DictionaryDataPtr&); + virtual void visitObject(const ObjectRefPtr&); + +private: + + bool isCompatible(const Slice::TypePtr&, const Slice::TypePtr&); + bool checkClasses(const Slice::ClassDeclPtr&, const Slice::ClassDeclPtr&); + void typeMismatchError(const Slice::TypePtr&, const Slice::TypePtr&); + void conversionError(const Slice::TypePtr&, const Slice::TypePtr&, const std::string&); + void rangeError(const std::string&, const Slice::TypePtr&); + void error(const std::string&); + + DataPtr _src; + DataFactoryPtr _factory; + ErrorReporterPtr _errorReporter; + bool _convert; + std::string _context; // Provides additional detail for use in warning messages. +}; + +} // End of namespace FreezeScript + +#endif |