LIBINT  2.6.0
Public Member Functions | Protected Member Functions | Static Protected Member Functions | List of all members
libint2::CodeContext Class Referenceabstract

CodeContext provides context for generating code. More...

#include <context.h>

Inheritance diagram for libint2::CodeContext:
Inheritance graph
[legend]

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
 
virtual std::string code_postfix () const =0
 produces postfix to function declarations or definitions
 
virtual std::string copyright () const =0
 copyright() returns the copyright statement
 
virtual std::string std_header () const =0
 std_header() returns declarations necessary for every source file
 
virtual std::string std_function_header () const =0
 std_function_header() returns declarations and definitions necessary for every function
 
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
 
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'
 
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'
 
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'
 
virtual std::string assign (const std::string &name, const std::string &value)=0
 assign returns a statement which assigns variable 'value' to variable 'name'
 
virtual std::string accumulate (const std::string &name, const std::string &value)=0
 accumulate returns a statement which assigns variable 'value' to variable 'name'
 
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'
 
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'
 
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'
 
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'
 
virtual std::string stack_address (const DGVertex::Address &a) const =0
 converts an address on the stack to its string representation
 
virtual std::string macro_define (const std::string &name) const =0
 #define a macro
 
virtual std::string macro_define (const std::string &name, const std::string &value) const =0
 #define a macro
 
virtual std::string macro_if (const std::string &name) const =0
 #if macro
 
virtual std::string macro_ifdef (const std::string &name) const =0
 #ifdef macro
 
virtual std::string macro_endif () const =0
 #endif
 
virtual std::string comment (const std::string &statement) const =0
 comment(statement) returns commented statement
 
virtual std::string open_block () const =0
 open a code block
 
virtual std::string close_block () const =0
 close a code block
 
virtual std::string end_of_stat () const =0
 end a statement
 
virtual std::string value_to_pointer (const std::string &val) const =0
 converts a value to a pointer
 
virtual SafePtr< ForLoopfor_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.
 
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'
 
virtual std::string inteval_spec_type_name (const std::string &task) const =0
 returns the name of the specialized evaluator type for task 'task'
 
virtual std::string inteval_gen_type_name () const =0
 returns the name of the generic evaluator type (works for any task)
 
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
 

Detailed Description

CodeContext provides context for generating code.


The documentation for this class was generated from the following files: