diff options
Diffstat (limited to 'cpp/src/FreezeScript/TransformVisitor.h')
-rw-r--r-- | cpp/src/FreezeScript/TransformVisitor.h | 20 |
1 files changed, 14 insertions, 6 deletions
diff --git a/cpp/src/FreezeScript/TransformVisitor.h b/cpp/src/FreezeScript/TransformVisitor.h index 6abf97509d6..b3df9adbc1b 100644 --- a/cpp/src/FreezeScript/TransformVisitor.h +++ b/cpp/src/FreezeScript/TransformVisitor.h @@ -29,13 +29,23 @@ typedef std::map<const ObjectData*, ObjectDataPtr> ObjectDataMap; // // TransformInfo supplies information required by TransformVisitor. // -class TransformInfo +class TransformInfo : public IceUtil::SimpleShared { public: virtual ~TransformInfo() {} // + // Get data factory. + // + virtual DataFactoryPtr getDataFactory() = 0; + + // + // Get error reporter. + // + virtual ErrorReporterPtr getErrorReporter() = 0; + + // // Indicates whether the default transformation should be performed. // virtual bool doDefaultTransform(const Slice::TypePtr&) = 0; @@ -66,6 +76,7 @@ public: // virtual ObjectDataMap& getObjectDataMap() = 0; }; +typedef IceUtil::Handle<TransformInfo> TransformInfoPtr; // // TransformVisitor is used to visit a destination Data value and @@ -75,8 +86,7 @@ class TransformVisitor : public DataVisitor { public: - TransformVisitor(const DataPtr&, const DataFactoryPtr&, const ErrorReporterPtr&, TransformInfo*, - const std::string& = std::string()); + TransformVisitor(const DataPtr&, const TransformInfoPtr&, const std::string& = std::string()); virtual void visitBoolean(const BooleanDataPtr&); virtual void visitInteger(const IntegerDataPtr&); @@ -101,9 +111,7 @@ private: void warning(const std::string&); DataPtr _src; - DataFactoryPtr _factory; - ErrorReporterPtr _errorReporter; - TransformInfo* _info; + TransformInfoPtr _info; std::string _context; // Provides additional detail for use in warning messages. }; |