Polly 22.0.0git
generator Class Referenceabstract

#include <generator.h>

Inheritance diagram for generator:
[legend]

Public Member Functions

 generator (SourceManager &SM, set< RecordDecl * > &exported_types, set< FunctionDecl * > exported_functions, set< FunctionDecl * > functions)
virtual void generate ()=0
virtual ~generator ()

Static Public Member Functions

static std::string drop_suffix (const std::string &s, const std::string &suffix)
static void die (const char *msg) __attribute__((noreturn))
static void die (string msg) __attribute__((noreturn))
static vector< string > find_superclasses (Decl *decl)
static bool is_subclass (FunctionDecl *decl)
static bool is_overload (Decl *decl)
static bool is_constructor (Decl *decl)
static bool takes (Decl *decl)
static bool keeps (Decl *decl)
static bool gives (Decl *decl)
static bool is_isl_ctx (QualType type)
static bool first_arg_is_isl_ctx (FunctionDecl *fd)
static bool is_isl_type (QualType type)
static bool is_isl_neg_error (QualType type)
static bool is_isl_bool (QualType type)
static bool is_isl_stat (QualType type)
static bool is_isl_size (QualType type)
static bool is_long (QualType type)
static bool is_callback (QualType type)
static bool is_callback_arg (FunctionDecl *fd, int i)
static bool is_string (QualType type)
static bool is_static (const isl_class &clazz, FunctionDecl *method)
static bool is_mutator (const isl_class &clazz, FunctionDecl *fd)
static string extract_type (QualType type)
static const FunctionProtoType * extract_prototype (QualType type)
static int prototype_n_args (QualType type)
static ParmVarDecl * persistent_callback_arg (FunctionDecl *fd)

Protected Member Functions

void add_subclass (RecordDecl *decl, const string &name, const string &sub_name)
void add_class (RecordDecl *decl)
void add_type_subclasses (FunctionDecl *method)
isl_classmethod2class (FunctionDecl *fd)
bool callback_takes_argument (ParmVarDecl *param, int pos)
FunctionDecl * find_by_name (const string &name, bool required)

Protected Attributes

SourceManager & SM
map< string, isl_classclasses
map< string, FunctionDecl * > functions_by_name
std::map< const Type *, ParmVarDecl * > conversions

Private Member Functions

void extract_automatic_conversion (FunctionDecl *fd)
void extract_class_automatic_conversions (const isl_class &clazz)
void extract_automatic_conversions ()

Static Private Attributes

static const std::set< std::string > automatic_conversion_functions

Detailed Description

Definition at line 144 of file generator.h.

Constructor & Destructor Documentation

◆ generator()

generator::generator ( SourceManager & SM,
set< RecordDecl * > & exported_types,
set< FunctionDecl * > exported_functions,
set< FunctionDecl * > functions )

◆ ~generator()

virtual generator::~generator ( )
inlinevirtual

Definition at line 156 of file generator.h.

Member Function Documentation

◆ add_class()

void generator::add_class ( RecordDecl * decl)
protected

Definition at line 213 of file generator.cc.

References add_subclass().

Referenced by generator().

◆ add_subclass()

void generator::add_subclass ( RecordDecl * decl,
const string & name,
const string & sub_name )
protected

Definition at line 196 of file generator.cc.

References classes, find_by_name(), and name.

Referenced by add_class(), and add_type_subclasses().

◆ add_type_subclasses()

void generator::add_type_subclasses ( FunctionDecl * method)
protected

◆ callback_takes_argument()

bool generator::callback_takes_argument ( ParmVarDecl * param,
int pos )
protected

Definition at line 628 of file generator.cc.

References die, keeps(), pos(), prefixcmp(), SM, and takes().

Referenced by python_generator::print_callback().

◆ die() [1/2]

void generator::die ( const char * msg)
static

◆ die() [2/2]

void generator::die ( string msg)
static

Definition at line 450 of file generator.cc.

References die.

◆ drop_suffix()

std::string generator::drop_suffix ( const std::string & s,
const std::string & suffix )
static

Definition at line 824 of file generator.cc.

Referenced by callback_name(), and isl_class::name_without_type_suffixes().

◆ extract_automatic_conversion()

void generator::extract_automatic_conversion ( FunctionDecl * fd)
private

Definition at line 145 of file generator.cc.

References conversions, die, is_isl_ctx(), is_isl_type(), and type.

Referenced by extract_class_automatic_conversions().

◆ extract_automatic_conversions()

void generator::extract_automatic_conversions ( )
private

Definition at line 181 of file generator.cc.

References classes, extract_class_automatic_conversions(), and map.

◆ extract_class_automatic_conversions()

void generator::extract_class_automatic_conversions ( const isl_class & clazz)
private

◆ extract_prototype()

◆ extract_type()

◆ find_by_name()

FunctionDecl * generator::find_by_name ( const string & name,
bool required )
protected

Definition at line 117 of file generator.cc.

References die, functions_by_name, map, and name.

Referenced by add_subclass().

◆ find_superclasses()

std::vector< string > generator::find_superclasses ( Decl * decl)
static

◆ first_arg_is_isl_ctx()

bool generator::first_arg_is_isl_ctx ( FunctionDecl * fd)
static

◆ generate()

virtual void generator::generate ( )
pure virtual

◆ gives()

bool generator::gives ( Decl * decl)
static

◆ is_callback()

◆ is_callback_arg()

bool generator::is_callback_arg ( FunctionDecl * fd,
int i )
static

Definition at line 740 of file generator.cc.

References is_callback(), and type.

Referenced by python_generator::print_method(), and python_generator::print_method_call().

◆ is_constructor()

bool generator::is_constructor ( Decl * decl)
static

Definition at line 517 of file generator.cc.

References has_annotation().

Referenced by get_kind().

◆ is_isl_bool()

◆ is_isl_ctx()

◆ is_isl_neg_error()

◆ is_isl_size()

bool generator::is_isl_size ( QualType type)
static

◆ is_isl_stat()

◆ is_isl_type()

◆ is_long()

bool generator::is_long ( QualType type)
static

Definition at line 762 of file generator.cc.

References type.

Referenced by python_generator::print_argtypes().

◆ is_mutator()

bool generator::is_mutator ( const isl_class & clazz,
FunctionDecl * fd )
static

◆ is_overload()

bool generator::is_overload ( Decl * decl)
static

◆ is_static()

◆ is_string()

◆ is_subclass()

bool generator::is_subclass ( FunctionDecl * decl)
static

Definition at line 503 of file generator.cc.

References find_superclasses().

◆ keeps()

bool generator::keeps ( Decl * decl)
static

◆ method2class()

isl_class * generator::method2class ( FunctionDecl * fd)
protected

Definition at line 546 of file generator.cc.

References classes, map, and name.

Referenced by add_type_subclasses(), and cpp_generator::copy_methods().

◆ persistent_callback_arg()

◆ prototype_n_args()

int generator::prototype_n_args ( QualType type)
static

Definition at line 797 of file generator.cc.

References extract_prototype(), and type.

Referenced by Method::on_fd_arg_list(), and print_callback_lambdas().

◆ takes()

bool generator::takes ( Decl * decl)
static

Member Data Documentation

◆ automatic_conversion_functions

const std::set< std::string > generator::automatic_conversion_functions
staticprivate
Initial value:
= {
"isl_id_read_from_str",
"isl_val_int_from_si",
}

Definition at line 132 of file generator.h.

Referenced by extract_class_automatic_conversions().

◆ classes

◆ conversions

std::map<const Type *, ParmVarDecl *> generator::conversions
protected

◆ functions_by_name

map<string, FunctionDecl *> generator::functions_by_name
protected

Definition at line 148 of file generator.h.

Referenced by find_by_name().

◆ SM


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