Escript  Revision_4320
EscriptParams.h
Go to the documentation of this file.
1 
2 /*****************************************************************************
3 *
4 * Copyright (c) 2003-2013 by University of Queensland
5 * http://www.uq.edu.au
6 *
7 * Primary Business: Queensland, Australia
8 * Licensed under the Open Software License version 3.0
9 * http://www.opensource.org/licenses/osl-3.0.php
10 *
11 * Development until 2012 by Earth Systems Science Computational Center (ESSCC)
12 * Development since 2012 by School of Earth Sciences
13 *
14 *****************************************************************************/
15 
16 #ifndef escript_EscriptParams_H
17 #define escript_EscriptParams_H
18 #include "system_dep.h"
19 #include <boost/python/list.hpp>
20 #include "Data.h" // for the operators
21 
22 namespace escript
23 {
24 
25 class Data;
26 class DataLazy;
27 
29 {
30 public:
32  EscriptParams();
33 
35  int getInt(const char* name, int sentinel=0) const;
36 
38  void setInt(const char* name, int value);
39 
40  boost::python::list
42 
43 private:
44 
45  // If we get more params we can replace this with a map
47  int autolazy;
49 // int too_many_nodes;
55 
56 protected:
57  // This is to provide fast access for methods in Data.
58  // Its a little bit ugly, needing all those friends but I really want to
59  // limit outside access to the char* interface
60 
62  int getAUTOLAZY() { return autolazy;}
64 // int getTOO_MANY_NODES() {return too_many_nodes;}
66  int getLAZY_STR_FMT() {return lazy_str_fmt;}
67  int getLAZY_VERBOSE() {return lazy_verbose;}
68 
69  friend class escript::Data;
70  friend class escript::DataLazy;
71  friend Data operator+(const boost::python::api::object&, const escript::Data&);
72  friend Data operator-(const boost::python::api::object&, const escript::Data&);
73  friend Data operator*(const boost::python::api::object&, const escript::Data&);
74  friend Data operator/(const boost::python::api::object&, const escript::Data&);
75  friend Data operator+(const escript::Data&, const escript::Data&);
76  friend Data operator-(const escript::Data&, const escript::Data&);
77  friend Data operator*(const escript::Data&, const escript::Data&);
78  friend Data operator/(const escript::Data&, const escript::Data&);
79  friend Data operator+(const escript::Data&, const boost::python::api::object&);
80  friend Data operator-(const escript::Data&, const boost::python::api::object&);
81  friend Data operator*(const escript::Data&, const boost::python::api::object&);
82  friend Data operator/(const escript::Data&, const boost::python::api::object&);
84  int axis_offset, int transpose);
85  friend Data condEval(escript::Data& mask, escript::Data& trueval, escript::Data& falseval);
86 };
87 
88 
90 
96 void setEscriptParamInt(const char* name, int value);
97 
103 int getEscriptParamInt(const char* name, int sentinel=0);
104 
110 inline boost::python::list listEscriptParams()
111 {
113 }
114 
115 
116 
117 }
118 #endif