diff options
author | Mark Spruiell <mes@zeroc.com> | 2004-01-16 22:22:44 +0000 |
---|---|---|
committer | Mark Spruiell <mes@zeroc.com> | 2004-01-16 22:22:44 +0000 |
commit | 00081d77200a08baac2e62cc2797c7530caacea3 (patch) | |
tree | 69a638dc86939389e9c810946a7d0fef20a31cd4 /cpp/src/FreezeScript/AssignVisitor.h | |
parent | adding ClassDef::isA (diff) | |
download | ice-00081d77200a08baac2e62cc2797c7530caacea3.tar.bz2 ice-00081d77200a08baac2e62cc2797c7530caacea3.tar.xz ice-00081d77200a08baac2e62cc2797c7530caacea3.zip |
initial check-in
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 |