/[escript]/trunk/escript/src/EscriptParams.h
ViewVC logotype

Annotation of /trunk/escript/src/EscriptParams.h

Parent Directory Parent Directory | Revision Log Revision Log


Revision 2795 - (hide annotations)
Wed Dec 2 02:39:23 2009 UTC (11 years, 4 months ago) by jfenwick
File MIME type: text/plain
File size: 3476 byte(s)
Removed node limit on lazy expressions.
The parameter LAZY_STR_FMT {0,1,2}  controls how lazy expressions are printed.
0 gives default output
1 gives a tree form.
2 just prints depth
1 jfenwick 1897
2     /*******************************************************
3     *
4 jfenwick 2548 * Copyright (c) 2003-2009 by University of Queensland
5 jfenwick 1897 * 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 jfenwick 2142 #include <boost/python/list.hpp>
18 trankine 2154 #include "Data.h" // for the operators
19 jfenwick 1897
20     namespace escript
21     {
22    
23 jfenwick 2146 class Data;
24 jfenwick 2472 class DataLazy;
25 jfenwick 2146
26 jfenwick 1897 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 jfenwick 2146
38 jfenwick 2721 boost::python::list
39     listEscriptParams();
40    
41 jfenwick 1897 private:
42    
43     // If we get more params we can replace this with a map
44     int too_many_lines;
45 jfenwick 2146 int autolazy;
46 jfenwick 2472 int too_many_levels;
47 jfenwick 2795 // int too_many_nodes;
48 jfenwick 2721 int resolve_collective;
49 jfenwick 2795 int lazy_str_fmt;
50 jfenwick 2742 int lapack_support;
51 jfenwick 2795 int lazy_verbose;
52 jfenwick 2146
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 jfenwick 2472 int getTOO_MANY_LEVELS() {return too_many_levels;}
61 jfenwick 2795 // int getTOO_MANY_NODES() {return too_many_nodes;}
62 jfenwick 2721 int getRESOLVE_COLLECTIVE() {return resolve_collective;}
63 jfenwick 2795 int getLAZY_STR_FMT() {return lazy_str_fmt;}
64     int getLAZY_VERBOSE() {return lazy_verbose;}
65 jfenwick 2146
66     friend class escript::Data;
67 jfenwick 2472 friend class escript::DataLazy;
68 jfenwick 2272 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 jfenwick 2199 int axis_offset, int transpose);
82 jfenwick 1897 };
83    
84    
85     extern EscriptParams escriptParams;
86    
87 jfenwick 2142 /**
88     \brief Set the value of a named parameter.
89     See listEscriptParams() (showEscriptParams() in python) for available parameters.
90     */
91 jfenwick 1897 ESCRIPT_DLL_API
92     void setEscriptParamInt(const char* name, int value);
93    
94 jfenwick 2142 /**
95     \brief get the value of a named parameter.
96     See listEscriptParams() (showEscriptParams() in python) for available parameters.
97     */
98 jfenwick 1897 ESCRIPT_DLL_API
99     int getEscriptParamInt(const char* name, int sentinel=0);
100    
101 jfenwick 2142 /**
102     \brief describe available paramters.
103 jfenwick 2721 \return a list of tuples (parameter name, value, description)
104 jfenwick 2142 */
105     ESCRIPT_DLL_API
106 jfenwick 2721 inline boost::python::list listEscriptParams()
107     {
108     return escriptParams.listEscriptParams();
109     }
110 jfenwick 2142
111 jfenwick 2721
112    
113 jfenwick 1897 }
114     #endif

  ViewVC Help
Powered by ViewVC 1.1.26