• Main Page
  • Related Pages
  • Namespaces
  • Classes
  • Files
  • File List
  • File Members

EscriptParams.h

Go to the documentation of this file.
00001 
00002 /*******************************************************
00003 *
00004 * Copyright (c) 2003-2010 by University of Queensland
00005 * Earth Systems Science Computational Center (ESSCC)
00006 * http://www.uq.edu.au/esscc
00007 *
00008 * Primary Business: Queensland, Australia
00009 * Licensed under the Open Software License version 3.0
00010 * http://www.opensource.org/licenses/osl-3.0.php
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"    // for the operators
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   // If we get more params we can replace this with a map
00044     int too_many_lines;
00045     int autolazy;
00046     int too_many_levels;
00047 //  int too_many_nodes;
00048     int resolve_collective;
00049     int lazy_str_fmt;
00050     int lapack_support;
00051     int lazy_verbose;
00052 
00053 protected: 
00054   // This is to provide fast access for methods in Data.
00055   // Its a little bit ugly, needing all those friends but I really want to
00056   // limit outside access to the char* interface
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 //   int getTOO_MANY_NODES() {return too_many_nodes;}
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

Generated on Fri May 25 2012 00:38:51 for ESYS13 by  doxygen 1.7.1