Go to the documentation of this file.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 boost::python::list
00039 listEscriptParams();
00040
00041 private:
00042
00043
00044 int too_many_lines;
00045 int autolazy;
00046 int too_many_levels;
00047
00048 int resolve_collective;
00049 int lazy_str_fmt;
00050 int lapack_support;
00051 int lazy_verbose;
00052
00053 protected:
00054
00055
00056
00057
00058 int getTOO_MANY_LINES() {return too_many_lines;}
00059 int getAUTOLAZY() { return autolazy;}
00060 int getTOO_MANY_LEVELS() {return too_many_levels;}
00061
00062 int getRESOLVE_COLLECTIVE() {return resolve_collective;}
00063 int getLAZY_STR_FMT() {return lazy_str_fmt;}
00064 int getLAZY_VERBOSE() {return lazy_verbose;}
00065
00066 friend class escript::Data;
00067 friend class escript::DataLazy;
00068 friend Data operator+(const boost::python::api::object&, const escript::Data&);
00069 friend Data operator-(const boost::python::api::object&, const escript::Data&);
00070 friend Data operator*(const boost::python::api::object&, const escript::Data&);
00071 friend Data operator/(const boost::python::api::object&, const escript::Data&);
00072 friend Data operator+(const escript::Data&, const escript::Data&);
00073 friend Data operator-(const escript::Data&, const escript::Data&);
00074 friend Data operator*(const escript::Data&, const escript::Data&);
00075 friend Data operator/(const escript::Data&, const escript::Data&);
00076 friend Data operator+(const escript::Data&, const boost::python::api::object&);
00077 friend Data operator-(const escript::Data&, const boost::python::api::object&);
00078 friend Data operator*(const escript::Data&, const boost::python::api::object&);
00079 friend Data operator/(const escript::Data&, const boost::python::api::object&);
00080 friend Data C_GeneralTensorProduct(escript::Data& arg_0, escript::Data& arg_1,
00081 int axis_offset, int transpose);
00082 friend Data condEval(escript::Data& mask, escript::Data& trueval, escript::Data& falseval);
00083 };
00084
00085
00086 extern EscriptParams escriptParams;
00087
00092 ESCRIPT_DLL_API
00093 void setEscriptParamInt(const char* name, int value);
00094
00099 ESCRIPT_DLL_API
00100 int getEscriptParamInt(const char* name, int sentinel=0);
00101
00106 ESCRIPT_DLL_API
00107 inline boost::python::list listEscriptParams()
00108 {
00109 return escriptParams.listEscriptParams();
00110 }
00111
00112
00113
00114 }
00115 #endif