00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014 #ifndef escript_EscriptParams_H
00015 #define escript_EscriptParams_H
00016 #include "system_dep.h"
00017 #include <boost/python/list.hpp>
00018 #include "Data.h"
00019
00020 namespace escript
00021 {
00022
00023 class Data;
00024 class DataLazy;
00025
00026 class EscriptParams
00027 {
00028 public:
00029 ESCRIPT_DLL_API
00030 EscriptParams();
00031
00032 ESCRIPT_DLL_API
00033 int getInt(const char* name, int sentinel=0) const;
00034
00035 ESCRIPT_DLL_API
00036 void setInt(const char* name, int value);
00037
00038 private:
00039
00040
00041 int too_many_lines;
00042 int autolazy;
00043 int too_many_levels;
00044 int too_many_nodes;
00045
00046 protected:
00047
00048
00049
00050
00051 int getTOO_MANY_LINES() {return too_many_lines;}
00052 int getAUTOLAZY() { return autolazy;}
00053 int getTOO_MANY_LEVELS() {return too_many_levels;}
00054 int getTOO_MANY_NODES() {return too_many_nodes;}
00055
00056 friend class escript::Data;
00057 friend class escript::DataLazy;
00058 friend Data operator+(const boost::python::api::object&, const escript::Data&);
00059 friend Data operator-(const boost::python::api::object&, const escript::Data&);
00060 friend Data operator*(const boost::python::api::object&, const escript::Data&);
00061 friend Data operator/(const boost::python::api::object&, const escript::Data&);
00062 friend Data operator+(const escript::Data&, const escript::Data&);
00063 friend Data operator-(const escript::Data&, const escript::Data&);
00064 friend Data operator*(const escript::Data&, const escript::Data&);
00065 friend Data operator/(const escript::Data&, const escript::Data&);
00066 friend Data operator+(const escript::Data&, const boost::python::api::object&);
00067 friend Data operator-(const escript::Data&, const boost::python::api::object&);
00068 friend Data operator*(const escript::Data&, const boost::python::api::object&);
00069 friend Data operator/(const escript::Data&, const boost::python::api::object&);
00070 friend Data C_GeneralTensorProduct(escript::Data& arg_0, escript::Data& arg_1,
00071 int axis_offset, int transpose);
00072
00073 };
00074
00075
00076 extern EscriptParams escriptParams;
00077
00082 ESCRIPT_DLL_API
00083 void setEscriptParamInt(const char* name, int value);
00084
00089 ESCRIPT_DLL_API
00090 int getEscriptParamInt(const char* name, int sentinel=0);
00091
00096 ESCRIPT_DLL_API
00097 boost::python::list listEscriptParams();
00098
00099 }
00100 #endif