|
LIBINT 2.7.2
|
CodeContext provides context for generating code. More...
#include <context.h>

Public Member Functions | |
| const SafePtr< CompilationParameters > & | cparams () const |
| Returns the CompilationParameters used to create this context. | |
| void | turn_comments (bool on) |
| turn comments on and off (the default is on) | |
| bool | comments_on () const |
| returns true if to print comments | |
| virtual void | reset () |
| this function resets the context to be used for the next source file | |
| virtual std::string | code_prefix () const =0 |
| produces prefix to function declarations or definitions More... | |
| virtual std::string | code_postfix () const =0 |
| produces postfix to function declarations or definitions More... | |
| virtual std::string | copyright () const =0 |
| copyright() returns the copyright statement More... | |
| virtual std::string | std_header () const =0 |
| std_header() returns declarations necessary for every source file More... | |
| virtual std::string | std_function_header () const =0 |
| std_function_header() returns declarations and definitions necessary for every function More... | |
| virtual std::string | label_to_name (const std::string &label) const =0 |
| label_to_name(label) converts label to a name valid within the context of the language More... | |
| virtual std::string | declare (const std::string &type, const std::string &name) const =0 |
| declare returns a statement which declares variable named 'name' of type 'type' More... | |
| virtual std::string | declare_v (const std::string &type, const std::string &name, const std::string &nelem) const =0 |
| declare_v returns a statement which declares a vector 'name' of 'nelem' elements of type 'type' More... | |
| virtual std::string | decldef (const std::string &type, const std::string &name, const std::string &value)=0 |
| decldef returns a statement which declares variable named 'name' of type 'type' and defines its value to be 'value' More... | |
| virtual std::string | assign (const std::string &name, const std::string &value)=0 |
| assign returns a statement which assigns variable 'value' to variable 'name' More... | |
| virtual std::string | accumulate (const std::string &name, const std::string &value)=0 |
| accumulate returns a statement which assigns variable 'value' to variable 'name' More... | |
| virtual std::string | assign_binary_expr (const std::string &name, const std::string &left, const std::string &oper, const std::string &right)=0 |
| assign_binary_expr returns a statement which assigns binary expression 'left oper right' to variable 'name' More... | |
| virtual std::string | assign_ternary_expr (const std::string &name, const std::string &arg1, const std::string &oper1, const std::string &arg2, const std::string &oper2, const std::string &arg3)=0 |
| assign_ternary_expr returns a statement which assigns ternary expression 'arg1 oper1 arg2 oper2 arg3' to variable 'name' More... | |
| virtual std::string | accumulate_binary_expr (const std::string &name, const std::string &left, const std::string &oper, const std::string &right)=0 |
| accumulate_binary_expr returns a statement which accumulates binary expression 'left oper right' to variable 'name' More... | |
| virtual std::string | accumulate_ternary_expr (const std::string &name, const std::string &arg1, const std::string &oper1, const std::string &arg2, const std::string &oper2, const std::string &arg3)=0 |
| accumulate_ternary_expr returns a statement which accumulates ternary expression 'arg1 oper1 arg2 oper2 arg3' to variable 'name' More... | |
| virtual std::string | stack_address (const DGVertex::Address &a) const =0 |
| converts an address on the stack to its string representation More... | |
| virtual std::string | macro_define (const std::string &name) const =0 |
| #define a macro More... | |
| virtual std::string | macro_define (const std::string &name, const std::string &value) const =0 |
| #define a macro More... | |
| virtual std::string | macro_if (const std::string &name) const =0 |
| #if macro More... | |
| virtual std::string | macro_ifdef (const std::string &name) const =0 |
| #ifdef macro More... | |
| virtual std::string | macro_endif () const =0 |
| #endif More... | |
| virtual std::string | comment (const std::string &statement) const =0 |
| comment(statement) returns commented statement More... | |
| virtual std::string | open_block () const =0 |
| open a code block More... | |
| virtual std::string | close_block () const =0 |
| close a code block More... | |
| virtual std::string | end_of_stat () const =0 |
| end a statement More... | |
| virtual std::string | value_to_pointer (const std::string &val) const =0 |
| converts a value to a pointer More... | |
| virtual SafePtr< ForLoop > | for_loop (std::string &varname, const SafePtr< Entity > &less_than, const SafePtr< Entity > &start_at=SafePtr< Entity >(new CTimeEntity< int >(0))) const =0 |
| returns a ForLoop object. More... | |
| template<typename T > | |
| std::string | unique_name () const |
| unique_name<T> returns a unique name for a variable of type T | |
| template<typename T > | |
| std::string | type_name () const |
| type_name<T> returns name for type T | |
| virtual std::string | inteval_type_name (const std::string &task) const =0 |
| returns the name of the evaluator type for task 'task' More... | |
| virtual std::string | inteval_spec_type_name (const std::string &task) const =0 |
| returns the name of the specialized evaluator type for task 'task' More... | |
| virtual std::string | inteval_gen_type_name () const =0 |
| returns the name of the generic evaluator type (works for any task) More... | |
| virtual std::string | const_modifier () const =0 |
| returns the modifier for constant variables | |
| virtual std::string | mutable_modifier () const =0 |
| returns the modifier for mutable variables | |
| template<> | |
| std::string | type_name () const |
| template<> | |
| std::string | type_name () const |
| template<> | |
| std::string | type_name () const |
| template<> | |
| std::string | type_name () const |
| template<> | |
| std::string | type_name () const |
| template<> | |
| std::string | type_name () const |
| template<> | |
| std::string | type_name () const |
| template<> | |
| std::string | type_name () const |
Protected Member Functions | |
| CodeContext (const SafePtr< CompilationParameters > &cparams) | |
| Lone constructor takes CompilationParams. | |
| virtual std::string | unique_fp_name () const =0 |
| generates a unique name for a floating-point variable | |
| virtual std::string | unique_int_name () const =0 |
| generates a unique name for an integer | |
| unsigned int | next_fp_index () const |
| next fp index | |
| unsigned int | next_int_index () const |
| next int index | |
| virtual std::string | void_type () const =0 |
| returns name of void type | |
| virtual std::string | int_type () const =0 |
| returns name of integer type | |
| virtual std::string | size_type () const =0 |
| returns name of array size type (e.g. size_t) | |
| virtual std::string | fp_type () const =0 |
| returns name of floating-point type | |
| virtual std::string | ptr_fp_type () const =0 |
| returns name of pointer to floating-point type | |
Static Protected Member Functions | |
| static std::string | replace_chars (const std::string &S, const std::string &From, const std::string &To) |
| replaces every appearance of From with To in S | |
CodeContext provides context for generating code.
|
pure virtual |
accumulate returns a statement which assigns variable 'value' to variable 'name'
Implemented in libint2::CppCodeContext.
|
pure virtual |
accumulate_binary_expr returns a statement which accumulates binary expression 'left oper right' to variable 'name'
Implemented in libint2::CppCodeContext.
|
pure virtual |
accumulate_ternary_expr returns a statement which accumulates ternary expression 'arg1 oper1 arg2 oper2 arg3' to variable 'name'
Implemented in libint2::CppCodeContext.
|
pure virtual |
assign returns a statement which assigns variable 'value' to variable 'name'
Implemented in libint2::CppCodeContext.
|
pure virtual |
assign_binary_expr returns a statement which assigns binary expression 'left oper right' to variable 'name'
Implemented in libint2::CppCodeContext.
|
pure virtual |
assign_ternary_expr returns a statement which assigns ternary expression 'arg1 oper1 arg2 oper2 arg3' to variable 'name'
Implemented in libint2::CppCodeContext.
|
pure virtual |
close a code block
Implemented in libint2::CppCodeContext.
|
pure virtual |
produces postfix to function declarations or definitions
Implemented in libint2::CppCodeContext.
|
pure virtual |
produces prefix to function declarations or definitions
Implemented in libint2::CppCodeContext.
|
pure virtual |
comment(statement) returns commented statement
Implemented in libint2::CppCodeContext.
|
pure virtual |
copyright() returns the copyright statement
Implemented in libint2::CppCodeContext.
|
pure virtual |
declare returns a statement which declares variable named 'name' of type 'type'
Implemented in libint2::CppCodeContext.
|
pure virtual |
declare_v returns a statement which declares a vector 'name' of 'nelem' elements of type 'type'
Implemented in libint2::CppCodeContext.
|
pure virtual |
decldef returns a statement which declares variable named 'name' of type 'type' and defines its value to be 'value'
Implemented in libint2::CppCodeContext.
|
pure virtual |
end a statement
Implemented in libint2::CppCodeContext.
|
pure virtual |
returns a ForLoop object.
Implemented in libint2::CppCodeContext.
|
pure virtual |
returns the name of the generic evaluator type (works for any task)
Implemented in libint2::CppCodeContext.
|
pure virtual |
returns the name of the specialized evaluator type for task 'task'
Implemented in libint2::CppCodeContext.
|
pure virtual |
returns the name of the evaluator type for task 'task'
Implemented in libint2::CppCodeContext.
|
pure virtual |
label_to_name(label) converts label to a name valid within the context of the language
Implemented in libint2::CppCodeContext.
|
pure virtual |
#define a macro
Implemented in libint2::CppCodeContext.
|
pure virtual |
#define a macro
Implemented in libint2::CppCodeContext.
|
pure virtual |
#endif
Implemented in libint2::CppCodeContext.
|
pure virtual |
#if macro
Implemented in libint2::CppCodeContext.
|
pure virtual |
#ifdef macro
Implemented in libint2::CppCodeContext.
|
pure virtual |
open a code block
Implemented in libint2::CppCodeContext.
|
pure virtual |
converts an address on the stack to its string representation
Implemented in libint2::CppCodeContext.
|
pure virtual |
std_function_header() returns declarations and definitions necessary for every function
Implemented in libint2::CppCodeContext.
|
pure virtual |
std_header() returns declarations necessary for every source file
Implemented in libint2::CppCodeContext.
|
pure virtual |
converts a value to a pointer
Implemented in libint2::CppCodeContext.