summaryrefslogtreecommitdiff
path: root/graphics/pgf/base/source/InterfaceFromC++.h
diff options
context:
space:
mode:
Diffstat (limited to 'graphics/pgf/base/source/InterfaceFromC++.h')
-rw-r--r--graphics/pgf/base/source/InterfaceFromC++.h190
1 files changed, 0 insertions, 190 deletions
diff --git a/graphics/pgf/base/source/InterfaceFromC++.h b/graphics/pgf/base/source/InterfaceFromC++.h
deleted file mode 100644
index 40cccb7884..0000000000
--- a/graphics/pgf/base/source/InterfaceFromC++.h
+++ /dev/null
@@ -1,190 +0,0 @@
-#ifndef PGF_GD_INTERFACE_C_INTERFACEFROMCPP_H
-#define PGF_GD_INTERFACE_C_INTERFACEFROMCPP_H
-
-/** \file pgf/gd/interface/c/InterfaceFromC++.h
-
- The C++-header file that should be used by algorithms written
- in C++ for graph drawing in Lua.
-*/
-
-
-struct lua_State;
-struct pgfgd_Declaration;
-struct pgfgd_SyntacticDigraph;
-
-namespace scripting {
-
- // Forward;
- class script;
- class run_parameters;
-
-
- class runner {
- public:
-
- void prepare (run_parameters* p) { parameters = p; }
-
- virtual void bridge () {}
- virtual void run () = 0;
- virtual void unbridge () {}
-
- virtual ~runner () {}
-
- protected:
-
- run_parameters* parameters;
-
- };
-
- class factory_base {
- public:
- virtual void* make_void (run_parameters*) = 0;
- virtual ~factory_base () {}
- };
-
- template <class T> class factory : public factory_base {
- virtual void* make_void (run_parameters*r) { return static_cast<void*>(make(r)); }
- virtual T* make (run_parameters*) { return new T(); }
- };
-
- class key {
- public:
-
- key (const char*);
- key (struct pgfgd_Declaration*);
- ~key ();
-
- const key& summary (const char*) const;
- const key& initial (const char*) const;
- const key& initial (factory_base*) const;
- const key& type (const char*) const;
- const key& module_type () const;
- const key& default_value (const char*) const;
- const key& alias (const char*) const;
- const key& alias_function (const char*) const;
- const key& documentation (const char*) const;
- const key& documentation_in (const char*) const;
- const key& phase (const char*) const;
- const key& set_key (const char*, const char*) const;
- const key& set_module (const char*, factory_base*) const;
- const key& example (const char*) const;
- const key& precondition (const char*) const;
- const key& postcondition (const char*) const;
- const key& algorithm (runner*) const;
-
- private:
-
- struct pgfgd_Declaration* d;
- friend class script;
-
- key (const key& k); // Not implemented.
- key& operator = (const key& k); // Not implemented.
-
- };
-
-
- // Declarations are useful for scripting:
-
- class declarations {
-
- public:
-
- virtual void declare (script) = 0;
- virtual ~declarations () {}
-
- };
-
-
- // The script class
-
- class script {
-
- public:
-
- script (struct lua_State*);
-
- // Declares a key
- void declare (const key&);
- void declare (declarations&);
- void declare (declarations*);
-
- private:
-
- struct lua_State* state;
-
- };
-
-
-
- // Declaring algorithms defined in a function
-
- class function_runner : public runner {
- public:
- function_runner (void (*f) (run_parameters&)) : fun(f) {}
- virtual void run () { fun(*parameters); }
-
- private:
- void (*fun) (run_parameters&);
- };
-
-
- // Configuring a class
-
- class run_parameters {
- public:
-
- struct pgfgd_SyntacticDigraph* syntactic_digraph;
-
- template <class Layout, class T>
- void configure_option (const char*, void (Layout::*) (T), Layout&);
-
- template <class Layout, class T>
- void configure_module (const char*, void (Layout::*) (T*), Layout&);
-
- template <class T> bool option (const char*, T&);
- template <class T> T option (const char*);
- template <class T> bool option_is_set (const char*);
-
- template <class T> T* make (const char*);
-
- protected:
- void* invoke_void_factory_for (const char*);
- };
-
- template <class T>
- T run_parameters::option (const char* k)
- {
- T t;
- option (k, t);
- return t;
- }
-
- template <class T>
- bool run_parameters::option_is_set (const char* k)
- {
- T t;
- return option(k, t);
- }
-
- template <class Layout, class T>
- void run_parameters::configure_option (const char* k, void (Layout::*f) (T), Layout& l)
- {
- T t;
- if (option<T> (k, t))
- (l.*f) (t);
- }
-
- template <class Layout, class T>
- void run_parameters::configure_module (const char* k, void (Layout::*f) (T*), Layout& l)
- {
- if (void* obj = invoke_void_factory_for(k))
- (l.*f) (static_cast<T*> (obj));
- }
-
- template <class T>
- T* run_parameters::make (const char* k) { return static_cast<T*>(invoke_void_factory_for(k)); }
-
-}
-
-
-#endif