summaryrefslogtreecommitdiff
path: root/cpp/src/FreezeScript/DumpDescriptors.h
diff options
context:
space:
mode:
authorMark Spruiell <mes@zeroc.com>2004-01-17 17:06:20 +0000
committerMark Spruiell <mes@zeroc.com>2004-01-17 17:06:20 +0000
commitd7b9891a90206984a8cfeea9d4d77f8132a51924 (patch)
tree959f4ca1ab2311ed461ab5d90fe4240c8c0bb120 /cpp/src/FreezeScript/DumpDescriptors.h
parentminor fixes (diff)
downloadice-d7b9891a90206984a8cfeea9d4d77f8132a51924.tar.bz2
ice-d7b9891a90206984a8cfeea9d4d77f8132a51924.tar.xz
ice-d7b9891a90206984a8cfeea9d4d77f8132a51924.zip
adding dumpdb
Diffstat (limited to 'cpp/src/FreezeScript/DumpDescriptors.h')
-rw-r--r--cpp/src/FreezeScript/DumpDescriptors.h300
1 files changed, 300 insertions, 0 deletions
diff --git a/cpp/src/FreezeScript/DumpDescriptors.h b/cpp/src/FreezeScript/DumpDescriptors.h
new file mode 100644
index 00000000000..8e3525821f6
--- /dev/null
+++ b/cpp/src/FreezeScript/DumpDescriptors.h
@@ -0,0 +1,300 @@
+// **********************************************************************
+//
+// 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_DUMP_DESCRIPTORS_H
+#define FREEZE_SCRIPT_DUMP_DESCRIPTORS_H
+
+#include <FreezeScript/Parser.h>
+#include <IceXML/Parser.h>
+
+class Db;
+class DbTxn;
+
+namespace FreezeScript
+{
+
+class Descriptor;
+typedef IceUtil::Handle<Descriptor> DescriptorPtr;
+
+struct ExecuteInfo;
+
+class Descriptor : virtual public IceUtil::SimpleShared
+{
+public:
+
+ virtual ~Descriptor();
+
+ virtual DescriptorPtr parent() const;
+ virtual void addChild(const DescriptorPtr&) = 0;
+ virtual void validate() = 0;
+ virtual void execute(const SymbolTablePtr&, ExecuteInfo*) = 0;
+
+protected:
+
+ Descriptor(const DescriptorPtr&, int, const DataFactoryPtr&, const ErrorReporterPtr&);
+
+ NodePtr parse(const std::string&) const;
+
+ Slice::TypePtr findType(const Slice::UnitPtr&, const std::string&);
+
+ DescriptorPtr _parent;
+ int _line;
+ DataFactoryPtr _factory;
+ ErrorReporterPtr _errorReporter;
+};
+
+class SetDescriptor : public Descriptor
+{
+public:
+
+ SetDescriptor(const DescriptorPtr&, int, const DataFactoryPtr&, const ErrorReporterPtr&,
+ const IceXML::Attributes&);
+
+ virtual void addChild(const DescriptorPtr&);
+ virtual void validate();
+ virtual void execute(const SymbolTablePtr&, ExecuteInfo*);
+
+private:
+
+ EntityNodePtr _target;
+ NodePtr _value;
+ std::string _valueStr;
+ NodePtr _length;
+ std::string _lengthStr;
+ bool _convert;
+};
+
+class DefineDescriptor : public Descriptor
+{
+public:
+
+ DefineDescriptor(const DescriptorPtr&, int, const DataFactoryPtr&, const ErrorReporterPtr&,
+ const IceXML::Attributes&, const Slice::UnitPtr&);
+
+ virtual void addChild(const DescriptorPtr&);
+ virtual void validate();
+ virtual void execute(const SymbolTablePtr&, ExecuteInfo*);
+
+private:
+
+ std::string _name;
+ Slice::TypePtr _type;
+ NodePtr _value;
+ std::string _valueStr;
+ bool _convert;
+};
+
+class AddDescriptor : public Descriptor
+{
+public:
+
+ AddDescriptor(const DescriptorPtr&, int, const DataFactoryPtr&, const ErrorReporterPtr&,
+ const IceXML::Attributes&);
+
+ virtual void addChild(const DescriptorPtr&);
+ virtual void validate();
+ virtual void execute(const SymbolTablePtr&, ExecuteInfo*);
+
+private:
+
+ EntityNodePtr _target;
+ NodePtr _key;
+ std::string _keyStr;
+ NodePtr _value;
+ std::string _valueStr;
+ bool _convert;
+};
+
+class RemoveDescriptor : public Descriptor
+{
+public:
+
+ RemoveDescriptor(const DescriptorPtr&, int, const DataFactoryPtr&, const ErrorReporterPtr&,
+ const IceXML::Attributes&);
+
+ virtual void addChild(const DescriptorPtr&);
+ virtual void validate();
+ virtual void execute(const SymbolTablePtr&, ExecuteInfo*);
+
+private:
+
+ EntityNodePtr _target;
+ NodePtr _key;
+ std::string _keyStr;
+};
+
+class FailDescriptor : public Descriptor
+{
+public:
+
+ FailDescriptor(const DescriptorPtr&, int, const DataFactoryPtr&, const ErrorReporterPtr&,
+ const IceXML::Attributes&);
+
+ virtual void addChild(const DescriptorPtr&);
+ virtual void validate();
+ virtual void execute(const SymbolTablePtr&, ExecuteInfo*);
+
+private:
+
+ NodePtr _test;
+ std::string _testStr;
+ std::string _message;
+};
+
+class EchoDescriptor : public Descriptor
+{
+public:
+
+ EchoDescriptor(const DescriptorPtr&, int, const DataFactoryPtr&, const ErrorReporterPtr&,
+ const IceXML::Attributes&);
+
+ virtual void addChild(const DescriptorPtr&);
+ virtual void validate();
+ virtual void execute(const SymbolTablePtr&, ExecuteInfo*);
+
+private:
+
+ std::string _message;
+ NodePtr _value;
+ std::string _valueStr;
+};
+
+class ExecutableContainerDescriptor : virtual public Descriptor
+{
+public:
+
+ ExecutableContainerDescriptor(const DescriptorPtr&, int, const DataFactoryPtr&, const ErrorReporterPtr&,
+ const IceXML::Attributes&, const std::string&);
+
+ virtual void addChild(const DescriptorPtr&);
+ virtual void validate();
+ virtual void execute(const SymbolTablePtr&, ExecuteInfo*);
+
+protected:
+
+ std::vector<DescriptorPtr> _children;
+
+private:
+
+ std::string _name;
+};
+
+class IfDescriptor : public ExecutableContainerDescriptor
+{
+public:
+
+ IfDescriptor(const DescriptorPtr&, int, const DataFactoryPtr&, const ErrorReporterPtr&, const IceXML::Attributes&);
+
+ virtual void execute(const SymbolTablePtr&, ExecuteInfo*);
+
+private:
+
+ NodePtr _test;
+ std::string _testStr;
+};
+
+class IterateDescriptor : public ExecutableContainerDescriptor
+{
+public:
+
+ IterateDescriptor(const DescriptorPtr&, int, const DataFactoryPtr&, const ErrorReporterPtr&,
+ const IceXML::Attributes&);
+
+ virtual void execute(const SymbolTablePtr&, ExecuteInfo*);
+
+private:
+
+ EntityNodePtr _target;
+ std::string _key;
+ std::string _value;
+ std::string _element;
+ std::string _index;
+};
+
+class DumpDescriptor : public ExecutableContainerDescriptor
+{
+public:
+
+ DumpDescriptor(const DescriptorPtr&, int, const DataFactoryPtr&, const ErrorReporterPtr&,
+ const IceXML::Attributes&, const Slice::UnitPtr&);
+
+ Slice::TypePtr type() const;
+ std::string typeName() const;
+
+private:
+
+ Slice::TypePtr _type;
+};
+typedef IceUtil::Handle<DumpDescriptor> DumpDescriptorPtr;
+
+class RecordDescriptor : public ExecutableContainerDescriptor
+{
+public:
+
+ RecordDescriptor(const DescriptorPtr&, int, const DataFactoryPtr&, const ErrorReporterPtr&,
+ const IceXML::Attributes&, const Slice::UnitPtr&);
+
+ virtual void execute(const SymbolTablePtr&, ExecuteInfo*);
+
+private:
+
+ Slice::UnitPtr _unit;
+};
+typedef IceUtil::Handle<RecordDescriptor> RecordDescriptorPtr;
+
+class DatabaseDescriptor : public ExecutableContainerDescriptor
+{
+public:
+
+ DatabaseDescriptor(const DescriptorPtr&, int, const DataFactoryPtr&, const ErrorReporterPtr&,
+ const IceXML::Attributes&, const Slice::UnitPtr&);
+
+ virtual void addChild(const DescriptorPtr&);
+ virtual void execute(const SymbolTablePtr&, ExecuteInfo*);
+
+private:
+
+ Slice::UnitPtr _unit;
+ Slice::TypePtr _key;
+ Slice::TypePtr _value;
+ RecordDescriptorPtr _record;
+};
+typedef IceUtil::Handle<DatabaseDescriptor> DatabaseDescriptorPtr;
+
+class DumpDBDescriptor : public Descriptor
+{
+public:
+
+ DumpDBDescriptor(int, const DataFactoryPtr&, const ErrorReporterPtr&, const IceXML::Attributes&,
+ const Slice::UnitPtr&);
+ ~DumpDBDescriptor();
+
+ virtual void addChild(const DescriptorPtr&);
+ virtual void validate();
+ virtual void execute(const SymbolTablePtr&, ExecuteInfo*);
+
+ void dump(const Ice::CommunicatorPtr&, Db*, DbTxn*);
+
+private:
+
+ Slice::UnitPtr _unit;
+ DatabaseDescriptorPtr _database;
+ std::vector<DescriptorPtr> _children;
+ ExecuteInfo* _info;
+};
+typedef IceUtil::Handle<DumpDBDescriptor> DumpDBDescriptorPtr;
+
+} // End of namespace FreezeScript
+
+#endif