29 #ifndef CORE_PARSER_LINALGINTERPRETER_H
30 #define CORE_PARSER_LINALGINTERPRETER_H 1
34 #include <Core/Thread/Thread.h>
37 #include <Core/Containers/Handle.h>
49 class LinAlgIntepreter;
53 class LinAlgProgramCode;
77 std::string function_id,
78 std::string function_type,
87 {
return (function_); }
108 function_(function) {}
116 function_ =
function;
129 if (j >= variables_.size()) variables_.resize(j+1);
130 variables_[j] = variable;
136 {
return (variables_[j]); }
139 {
return (*(variables_[j])); }
145 inline bool run(std::string& err)
146 {
return (function_(*
this, err)); }
174 ref_cnt(0), name_(name), handle_(0)
180 ref_cnt(0), name_(name), handle_(handle) {}
215 Handle<MatrixHandlePointer> matrix_;
233 bool add_sink(std::string&
name);
236 { const_variables_.resize(sz); }
238 { single_variables_.resize(sz); }
241 { const_functions_.resize(sz); }
243 { single_functions_.resize(sz); }
248 { const_variables_[j] = handle; }
250 { single_variables_[j] = handle; }
253 {
return (const_variables_[j]); }
255 {
return (single_variables_[j]); }
259 { const_functions_[j] = pc; }
261 { single_functions_[j] = pc; }
267 bool run_const(
size_t& error_line, std::string& err);
268 bool run_single(
size_t& error_line, std::string& err);
276 std::map<std::string,LinAlgProgramSource> input_sources_;
277 std::map<std::string,LinAlgProgramSource> output_sinks_;
280 std::vector<LinAlgProgramVariableHandle> const_variables_;
281 std::vector<LinAlgProgramVariableHandle> single_variables_;
284 std::vector<LinAlgProgramCode> const_functions_;
285 std::vector<LinAlgProgramCode> single_functions_;
LinAlgProgramCode(bool(*function)(LinAlgProgramCode &pc, std::string &err))
Definition: LinAlgInterpreter.h:107
LinAlgProgramVariable(std::string name, MatrixHandle handle)
Definition: LinAlgInterpreter.h:179
LockingHandle< Matrix< double > > MatrixHandle
Definition: MatrixFwd.h:55
Handle< LinAlgProgram > LinAlgProgramHandle
Definition: LinAlgInterpreter.h:61
virtual ~LinAlgFunction()
Definition: LinAlgInterpreter.h:83
Definition: LinAlgInterpreter.h:103
LinAlgProgramVariableHandle get_single_variable(size_t j)
Definition: LinAlgInterpreter.h:254
MatrixHandle * get_handle()
Definition: LinAlgInterpreter.h:211
MatrixHandle get_matrix()
Definition: LinAlgInterpreter.h:210
MatrixHandle & handle()
Definition: LinAlgInterpreter.h:185
void set_const_variable(size_t j, LinAlgProgramVariableHandle &handle)
Definition: LinAlgInterpreter.h:247
#define SCISHARE
Definition: share.h:39
void set_matrix(MatrixHandle matrix)
Definition: LinAlgInterpreter.h:209
LinAlgProgramCode()
Definition: LinAlgInterpreter.h:110
void resize_const_functions(size_t sz)
Definition: LinAlgInterpreter.h:240
LinAlgProgramVariableHandle get_const_variable(size_t j)
Definition: LinAlgInterpreter.h:252
ParserProgramHandle get_parser_program()
Definition: LinAlgInterpreter.h:271
void set_const_program_code(size_t j, LinAlgProgramCode &pc)
Definition: LinAlgInterpreter.h:258
bool run(std::string &err)
Definition: LinAlgInterpreter.h:145
MatrixHandle * get_handle()
Definition: LinAlgInterpreter.h:184
const char * name[]
Definition: BoostGraphExampleTests.cc:87
MatrixHandle * get_handle(size_t j)
Definition: LinAlgInterpreter.h:135
Definition: LinAlgInterpreter.h:196
bool is_matrix()
Definition: LinAlgInterpreter.h:212
void set_single_program_code(size_t j, LinAlgProgramCode &pc)
Definition: LinAlgInterpreter.h:260
LinAlgProgram()
Definition: LinAlgInterpreter.h:225
int ref_cnt
Definition: LinAlgInterpreter.h:222
LinAlgProgramSource()
Definition: LinAlgInterpreter.h:206
boost::shared_ptr< ParserProgram > ParserProgramHandle
Definition: Parser.h:70
Definition: LinAlgInterpreter.h:204
bool(*)(LinAlgProgramCode &pc, std::string &err) get_function()
Definition: LinAlgInterpreter.h:120
MatrixHandle matrix
Definition: LinAlgInterpreter.h:201
void set_parser_program(ParserProgramHandle handle)
Definition: LinAlgInterpreter.h:270
Definition: LinAlgInterpreter.h:166
void resize_const_variables(size_t sz)
Definition: LinAlgInterpreter.h:235
void resize_single_functions(size_t sz)
Definition: LinAlgInterpreter.h:242
Handle< LinAlgProgramVariable > LinAlgProgramVariableHandle
Definition: LinAlgInterpreter.h:54
Definition: LinAlgInterpreter.h:291
int ref_cnt
Definition: LinAlgInterpreter.h:170
Definition: LinAlgInterpreter.h:219
void set_handle(size_t j, MatrixHandle *variable)
Definition: LinAlgInterpreter.h:127
void set_single_variable(size_t j, LinAlgProgramVariableHandle &handle)
Definition: LinAlgInterpreter.h:249
LinAlgProgramVariable(std::string name)
Definition: LinAlgInterpreter.h:173
int ref_cnt
Definition: LinAlgInterpreter.h:200
bool(*)(LinAlgProgramCode &pc, std::string &err) get_function()
Definition: LinAlgInterpreter.h:86
void set_function(bool(*function)(LinAlgProgramCode &pc, std::string &err))
Definition: LinAlgInterpreter.h:114
MatrixHandle & handle(size_t j)
Definition: LinAlgInterpreter.h:138
void resize_single_variables(size_t sz)
Definition: LinAlgInterpreter.h:237
MatrixHandlePointer()
Definition: LinAlgInterpreter.h:198
Definition: LinAlgInterpreter.h:72