LIBINT 2.9.0
Public Member Functions | List of all members
libint2::CppCodeContext Class Reference

CppCodeContext is an implementation of CodeContext for C++. More...

#include <context.h>

Inheritance diagram for libint2::CppCodeContext:
Inheritance graph
[legend]
Collaboration diagram for libint2::CppCodeContext:
Collaboration graph
[legend]

Public Member Functions

 CppCodeContext (const std::shared_ptr< CompilationParameters > &cparams, bool vectorize=false)
 
std::string code_prefix () const override
 Implementation of CodeContext::code_prefix()
 
std::string code_postfix () const override
 Implementation of CodeContext::code_postfix()
 
std::string copyright () const override
 Implementation of CodeContext::copyright()
 
std::string std_header () const override
 Implementation of CodeContext::std_header()
 
std::string std_function_header () const override
 Implementation of CodeContext::std_function_header()
 
std::string label_to_name (const std::string &label) const override
 Implementation of CodeContext::label_to_name(label)
 
std::string declare (const std::string &type, const std::string &name) const override
 Implementation of CodeContext::declare()
 
std::string declare_v (const std::string &type, const std::string &name, const std::string &nelem) const override
 Implementation of CodeContext::declare_v()
 
std::string decldef (const std::string &type, const std::string &name, const std::string &value) override
 decldef returns a statement which declares variable named 'name' of type 'type' and defines its value to be 'value'
 
std::string assign (const std::string &name, const std::string &value) override
 Implementation of CodeContext::assign()
 
std::string accumulate (const std::string &name, const std::string &value) override
 Implementation of CodeContext::accumulate()
 
std::string assign_binary_expr (const std::string &name, const std::string &left, const std::string &oper, const std::string &right) override
 Implementation of CodeContext::assign_binary_expr()
 
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) override
 assign_ternary_expr returns a statement which assigns ternary expression 'arg1 oper1 arg2 oper2 arg3' to variable 'name'
 
std::string accumulate_binary_expr (const std::string &name, const std::string &left, const std::string &oper, const std::string &right) override
 Implementation of CodeContext::accumulate_binary_expr()
 
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) override
 accumulate_ternary_expr returns a statement which accumulates ternary expression 'arg1 oper1 arg2 oper2 arg3' to variable 'name'
 
std::string stack_address (const DGVertex::Address &a) const override
 Implementation of CodeContext::stack_address()
 
std::string macro_define (const std::string &name) const override
 Implementation of CodeContext::macro_define()
 
std::string macro_define (const std::string &name, const std::string &value) const override
 Implementation of CodeContext::macro_define()
 
std::string macro_if (const std::string &name) const override
 Implementation of CodeContext::macro_if()
 
std::string macro_ifdef (const std::string &name) const override
 Implementation of CodeContext::macro_ifdef()
 
std::string macro_endif () const override
 Implementation of CodeContext::macro_endif()
 
std::string comment (const std::string &statement) const override
 Implementation of CodeContext::comment(statement)
 
std::string open_block () const override
 Implementation of CodeContext::open_block()
 
std::string close_block () const override
 Implementation of CodeContext::close_block()
 
std::string end_of_stat () const override
 Implementation of CodeContext::end_of_stat()
 
std::string value_to_pointer (const std::string &val) const override
 Implementation of CodeContext::value_to_pointer()
 
std::shared_ptr< ForLoopfor_loop (std::string &varname, const std::shared_ptr< Entity > &less_than, const std::shared_ptr< Entity > &start_at) const override
 Implementation of CodeContext::for_loop()
 
std::string inteval_type_name (const std::string &task) const override
 Implementation of CodeContext::inteval_type_name()
 
std::string inteval_spec_type_name (const std::string &task) const override
 Implementation of CodeContext::inteval_spec_type_name()
 
std::string inteval_gen_type_name () const override
 Implementation of CodeContext::inteval_spec_type_name()
 
- Public Member Functions inherited from libint2::CodeContext
const std::shared_ptr< 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
 
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
 
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
 

Additional Inherited Members

- Protected Member Functions inherited from libint2::CodeContext
 CodeContext (const std::shared_ptr< CompilationParameters > &cparams)
 Lone constructor takes CompilationParams.
 
unsigned int next_fp_index () const
 next fp index
 
unsigned int next_int_index () const
 next int index
 
- Static Protected Member Functions inherited from libint2::CodeContext
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

CppCodeContext is an implementation of CodeContext for C++.

Member Function Documentation

◆ accumulate()

std::string CppCodeContext::accumulate ( const std::string & name,
const std::string & value )
overridevirtual

Implementation of CodeContext::accumulate()

Implements libint2::CodeContext.

◆ accumulate_binary_expr()

std::string CppCodeContext::accumulate_binary_expr ( const std::string & name,
const std::string & left,
const std::string & oper,
const std::string & right )
overridevirtual

◆ accumulate_ternary_expr()

std::string CppCodeContext::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 )
overridevirtual

accumulate_ternary_expr returns a statement which accumulates ternary expression 'arg1 oper1 arg2 oper2 arg3' to variable 'name'

Implements libint2::CodeContext.

◆ assign()

std::string CppCodeContext::assign ( const std::string & name,
const std::string & value )
overridevirtual

Implementation of CodeContext::assign()

Implements libint2::CodeContext.

Referenced by decldef().

◆ assign_binary_expr()

std::string CppCodeContext::assign_binary_expr ( const std::string & name,
const std::string & left,
const std::string & oper,
const std::string & right )
overridevirtual

◆ assign_ternary_expr()

std::string CppCodeContext::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 )
overridevirtual

assign_ternary_expr returns a statement which assigns ternary expression 'arg1 oper1 arg2 oper2 arg3' to variable 'name'

Implements libint2::CodeContext.

◆ close_block()

std::string CppCodeContext::close_block ( ) const
overridevirtual

Implementation of CodeContext::close_block()

Implements libint2::CodeContext.

◆ code_postfix()

std::string CppCodeContext::code_postfix ( ) const
overridevirtual

◆ code_prefix()

std::string CppCodeContext::code_prefix ( ) const
overridevirtual

◆ comment()

std::string CppCodeContext::comment ( const std::string & statement) const
overridevirtual

Implementation of CodeContext::comment(statement)

Implements libint2::CodeContext.

◆ copyright()

std::string CppCodeContext::copyright ( ) const
overridevirtual

Implementation of CodeContext::copyright()

Implements libint2::CodeContext.

◆ declare()

std::string CppCodeContext::declare ( const std::string & type,
const std::string & name ) const
overridevirtual

Implementation of CodeContext::declare()

Implements libint2::CodeContext.

References end_of_stat().

◆ declare_v()

std::string CppCodeContext::declare_v ( const std::string & type,
const std::string & name,
const std::string & nelem ) const
overridevirtual

Implementation of CodeContext::declare_v()

Implements libint2::CodeContext.

References end_of_stat().

◆ decldef()

std::string CppCodeContext::decldef ( const std::string & type,
const std::string & name,
const std::string & value )
overridevirtual

decldef returns a statement which declares variable named 'name' of type 'type' and defines its value to be 'value'

Implements libint2::CodeContext.

References assign().

◆ end_of_stat()

std::string CppCodeContext::end_of_stat ( ) const
overridevirtual

Implementation of CodeContext::end_of_stat()

Implements libint2::CodeContext.

Referenced by declare(), and declare_v().

◆ for_loop()

std::shared_ptr< ForLoop > CppCodeContext::for_loop ( std::string & varname,
const std::shared_ptr< Entity > & less_than,
const std::shared_ptr< Entity > & start_at ) const
overridevirtual

Implementation of CodeContext::for_loop()

Implements libint2::CodeContext.

◆ inteval_gen_type_name()

std::string CppCodeContext::inteval_gen_type_name ( ) const
overridevirtual

◆ inteval_spec_type_name()

std::string CppCodeContext::inteval_spec_type_name ( const std::string & task) const
overridevirtual

◆ inteval_type_name()

std::string CppCodeContext::inteval_type_name ( const std::string & task) const
overridevirtual

◆ label_to_name()

std::string CppCodeContext::label_to_name ( const std::string & label) const
overridevirtual

Implementation of CodeContext::label_to_name(label)

Implements libint2::CodeContext.

References libint2::CodeContext::replace_chars().

◆ macro_define() [1/2]

std::string CppCodeContext::macro_define ( const std::string & name) const
overridevirtual

Implementation of CodeContext::macro_define()

Implements libint2::CodeContext.

◆ macro_define() [2/2]

std::string CppCodeContext::macro_define ( const std::string & name,
const std::string & value ) const
overridevirtual

Implementation of CodeContext::macro_define()

Implements libint2::CodeContext.

◆ macro_endif()

std::string CppCodeContext::macro_endif ( ) const
overridevirtual

Implementation of CodeContext::macro_endif()

Implements libint2::CodeContext.

◆ macro_if()

std::string CppCodeContext::macro_if ( const std::string & name) const
overridevirtual

Implementation of CodeContext::macro_if()

Implements libint2::CodeContext.

◆ macro_ifdef()

std::string CppCodeContext::macro_ifdef ( const std::string & name) const
overridevirtual

Implementation of CodeContext::macro_ifdef()

Implements libint2::CodeContext.

◆ open_block()

std::string CppCodeContext::open_block ( ) const
overridevirtual

Implementation of CodeContext::open_block()

Implements libint2::CodeContext.

◆ stack_address()

std::string CppCodeContext::stack_address ( const DGVertex::Address & a) const
overridevirtual

Implementation of CodeContext::stack_address()

Implements libint2::CodeContext.

◆ std_function_header()

std::string CppCodeContext::std_function_header ( ) const
overridevirtual

◆ std_header()

std::string CppCodeContext::std_header ( ) const
overridevirtual

Implementation of CodeContext::std_header()

Implements libint2::CodeContext.

◆ value_to_pointer()

std::string CppCodeContext::value_to_pointer ( const std::string & val) const
overridevirtual

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