1 |
|
2 |
/******************************************************* |
3 |
* |
4 |
* Copyright (c) 2003-2009 by University of Queensland |
5 |
* Earth Systems Science Computational Center (ESSCC) |
6 |
* http://www.uq.edu.au/esscc |
7 |
* |
8 |
* Primary Business: Queensland, Australia |
9 |
* Licensed under the Open Software License version 3.0 |
10 |
* http://www.opensource.org/licenses/osl-3.0.php |
11 |
* |
12 |
*******************************************************/ |
13 |
|
14 |
#ifndef escript_EscriptParams_H |
15 |
#define escript_EscriptParams_H |
16 |
#include "system_dep.h" |
17 |
#include <boost/python/list.hpp> |
18 |
#include "Data.h" // for the operators |
19 |
|
20 |
namespace escript |
21 |
{ |
22 |
|
23 |
class Data; |
24 |
class DataLazy; |
25 |
|
26 |
class EscriptParams |
27 |
{ |
28 |
public: |
29 |
ESCRIPT_DLL_API |
30 |
EscriptParams(); |
31 |
|
32 |
ESCRIPT_DLL_API |
33 |
int getInt(const char* name, int sentinel=0) const; |
34 |
|
35 |
ESCRIPT_DLL_API |
36 |
void setInt(const char* name, int value); |
37 |
|
38 |
boost::python::list |
39 |
listEscriptParams(); |
40 |
|
41 |
private: |
42 |
|
43 |
// If we get more params we can replace this with a map |
44 |
int too_many_lines; |
45 |
int autolazy; |
46 |
int too_many_levels; |
47 |
// int too_many_nodes; |
48 |
int resolve_collective; |
49 |
int lazy_str_fmt; |
50 |
int lapack_support; |
51 |
int lazy_verbose; |
52 |
|
53 |
protected: |
54 |
// This is to provide fast access for methods in Data. |
55 |
// Its a little bit ugly, needing all those friends but I really want to |
56 |
// limit outside access to the char* interface |
57 |
|
58 |
int getTOO_MANY_LINES() {return too_many_lines;} |
59 |
int getAUTOLAZY() { return autolazy;} |
60 |
int getTOO_MANY_LEVELS() {return too_many_levels;} |
61 |
// int getTOO_MANY_NODES() {return too_many_nodes;} |
62 |
int getRESOLVE_COLLECTIVE() {return resolve_collective;} |
63 |
int getLAZY_STR_FMT() {return lazy_str_fmt;} |
64 |
int getLAZY_VERBOSE() {return lazy_verbose;} |
65 |
|
66 |
friend class escript::Data; |
67 |
friend class escript::DataLazy; |
68 |
friend Data operator+(const boost::python::api::object&, const escript::Data&); |
69 |
friend Data operator-(const boost::python::api::object&, const escript::Data&); |
70 |
friend Data operator*(const boost::python::api::object&, const escript::Data&); |
71 |
friend Data operator/(const boost::python::api::object&, const escript::Data&); |
72 |
friend Data operator+(const escript::Data&, const escript::Data&); |
73 |
friend Data operator-(const escript::Data&, const escript::Data&); |
74 |
friend Data operator*(const escript::Data&, const escript::Data&); |
75 |
friend Data operator/(const escript::Data&, const escript::Data&); |
76 |
friend Data operator+(const escript::Data&, const boost::python::api::object&); |
77 |
friend Data operator-(const escript::Data&, const boost::python::api::object&); |
78 |
friend Data operator*(const escript::Data&, const boost::python::api::object&); |
79 |
friend Data operator/(const escript::Data&, const boost::python::api::object&); |
80 |
friend Data C_GeneralTensorProduct(escript::Data& arg_0, escript::Data& arg_1, |
81 |
int axis_offset, int transpose); |
82 |
}; |
83 |
|
84 |
|
85 |
extern EscriptParams escriptParams; |
86 |
|
87 |
/** |
88 |
\brief Set the value of a named parameter. |
89 |
See listEscriptParams() (showEscriptParams() in python) for available parameters. |
90 |
*/ |
91 |
ESCRIPT_DLL_API |
92 |
void setEscriptParamInt(const char* name, int value); |
93 |
|
94 |
/** |
95 |
\brief get the value of a named parameter. |
96 |
See listEscriptParams() (showEscriptParams() in python) for available parameters. |
97 |
*/ |
98 |
ESCRIPT_DLL_API |
99 |
int getEscriptParamInt(const char* name, int sentinel=0); |
100 |
|
101 |
/** |
102 |
\brief describe available paramters. |
103 |
\return a list of tuples (parameter name, value, description) |
104 |
*/ |
105 |
ESCRIPT_DLL_API |
106 |
inline boost::python::list listEscriptParams() |
107 |
{ |
108 |
return escriptParams.listEscriptParams(); |
109 |
} |
110 |
|
111 |
|
112 |
|
113 |
} |
114 |
#endif |