diff options
Diffstat (limited to 'polly/lib/External/isl/interface/generator.h')
-rw-r--r-- | polly/lib/External/isl/interface/generator.h | 52 |
1 files changed, 30 insertions, 22 deletions
diff --git a/polly/lib/External/isl/interface/generator.h b/polly/lib/External/isl/interface/generator.h index 63760845fd6..8195a36d960 100644 --- a/polly/lib/External/isl/interface/generator.h +++ b/polly/lib/External/isl/interface/generator.h @@ -26,17 +26,26 @@ struct isl_class { FunctionDecl *fn_to_str; FunctionDecl *fn_copy; FunctionDecl *fn_free; + + /* Return name of "fd" without type suffix, if any. */ + static string name_without_type_suffix(FunctionDecl *fd); + /* Extract the method name corresponding to "fd". */ + string method_name(FunctionDecl *fd) const { + string m_name = name_without_type_suffix(fd); + return m_name.substr(name.length() + 1); + } }; /* Base class for interface generators. */ class generator { protected: + SourceManager &SM; map<string,isl_class> classes; map<string, FunctionDecl *> functions_by_name; public: - generator(set<RecordDecl *> &exported_types, + generator(SourceManager &SM, set<RecordDecl *> &exported_types, set<FunctionDecl *> exported_functions, set<FunctionDecl *> functions); @@ -44,29 +53,28 @@ public: virtual ~generator() {}; protected: - void print_class_header(const isl_class &clazz, const string &name, - const vector<string> &super); - string drop_type_suffix(string name, FunctionDecl *method); - void die(const char *msg) __attribute__((noreturn)); - void die(string msg) __attribute__((noreturn)); - vector<string> find_superclasses(RecordDecl *decl); - bool is_overload(Decl *decl); - bool is_constructor(Decl *decl); - bool takes(Decl *decl); - bool keeps(Decl *decl); - bool gives(Decl *decl); isl_class *method2class(FunctionDecl *fd); - bool is_isl_ctx(QualType type); - bool first_arg_is_isl_ctx(FunctionDecl *fd); - bool is_isl_type(QualType type); - bool is_isl_bool(QualType type); - bool is_isl_stat(QualType type); - bool is_long(QualType type); - bool is_callback(QualType type); - bool is_string(QualType type); - bool is_static(const isl_class &clazz, FunctionDecl *method); - string extract_type(QualType type); + bool callback_takes_argument(ParmVarDecl *param, int pos); FunctionDecl *find_by_name(const string &name, bool required); +public: + static void die(const char *msg) __attribute__((noreturn)); + static void die(string msg) __attribute__((noreturn)); + static vector<string> find_superclasses(RecordDecl *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_bool(QualType type); + static bool is_isl_stat(QualType type); + static bool is_long(QualType type); + static bool is_callback(QualType type); + static bool is_string(QualType type); + static bool is_static(const isl_class &clazz, FunctionDecl *method); + static string extract_type(QualType type); }; #endif /* ISL_INTERFACE_GENERATOR_H */ |