Rosetta  3.6
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Pages
Classes | Typedefs | Functions | Variables
binder Namespace Reference

Classes

class  Binder
 structure to hold include information and set of NamedDecl objects that was already queried More...
 
class  ClassBinder
 
struct  Config
 
class  Context
 Module - represent bindings of individual Python module. More...
 
class  EnumBinder
 
class  FunctionBinder
 

Typedefs

typedef std::shared_ptr< BinderBinderOP
 
typedef std::vector< BinderOPBinders
 

Functions

string template_specialization (clang::CXXRecordDecl const *C)
 
string class_name (CXXRecordDecl const *C)
 
string class_qualified_name (CXXRecordDecl const *C)
 
vector< QualType > get_type_dependencies (CXXRecordDecl const *C)
 
bool is_inherited_from_enable_shared_from_this (CXXRecordDecl const *C)
 
bool is_field_assignable (FieldDecl const *f)
 generate list of class/enum names on which this CXXRecordDecl depend to get binded ommiting build-in types More...
 
bool is_bindable (FieldDecl *f)
 check if generator can create binding More...
 
string bind_data_member (FieldDecl const *d, string const &class_qualified_name)
 
bool is_bindable (clang::CXXRecordDecl const *C)
 check if generator can create binding More...
 
bool is_binding_requested (clang::CXXRecordDecl const *C, Config const &config)
 check if user requested binding for the given declaration More...
 
bool is_skipping_requested (clang::CXXRecordDecl const *C, Config const &config)
 check if user requested skipping for the given declaration More...
 
void add_relevant_includes (clang::CXXRecordDecl const *C, vector< string > &includes, set< NamedDecl const * > &stack)
 
std::string class_name (clang::CXXRecordDecl const *C)
 
std::string class_qualified_name (clang::CXXRecordDecl const *C)
 
std::vector< clang::QualType > get_type_dependencies (clang::CXXRecordDecl const *C)
 
std::vector< clang::NamedDecl
const * > 
get_decl_dependencies (clang::CXXRecordDecl const *C)
 
void add_relevant_includes (clang::CXXRecordDecl const *C, std::vector< std::string > &includes, std::set< clang::NamedDecl const * > &stack)
 
llvm::raw_ostream & operator<< (llvm::raw_ostream &os, Binder const &b)
 
string generate_include_directives (vector< string > &includes)
 
string file_name_prefix_for_binder (BinderOP &b)
 Generate file name where binding for given generator should be stored. More...
 
void add_relevant_includes (clang::EnumDecl const *E, std::vector< std::string > &includes, std::set< clang::NamedDecl const * > &stack)
 extract include needed for this generator and add it to includes vector More...
 
std::string bind_enum (std::string const &module, EnumDecl *E)
 
std::string bind_enum (std::string const &module, clang::EnumDecl *E)
 
string function_arguments (clang::FunctionDecl const *record)
 
string template_specialization (FunctionDecl const *F)
 
string function_pointer_type (FunctionDecl const *F)
 
string function_qualified_name (FunctionDecl const *F)
 
vector< QualType > get_type_dependencies (FunctionDecl const *F)
 
bool is_binding_requested (FunctionDecl const *F, Config const &config)
 check if user requested binding for the given declaration More...
 
bool is_skipping_requested (FunctionDecl const *F, Config const &config)
 check if user requested skipping for the given declaration More...
 
string bind_function (FunctionDecl *F, Context &context)
 
void add_relevant_includes (FunctionDecl const *F, std::vector< std::string > &includes, std::set< NamedDecl const * > &stack)
 extract include needed for this generator and add it to includes vector More...
 
bool is_bindable (FunctionDecl const *F)
 check if generator can create binding More...
 
std::string function_pointer_type (clang::FunctionDecl const *record)
 
std::string function_qualified_name (clang::FunctionDecl const *F)
 
bool is_binding_requested (clang::FunctionDecl const *F, Config const &config)
 check if user requested binding for the given declaration More...
 
bool is_skipping_requested (clang::FunctionDecl const *F, Config const &config)
 check if user requested skipping for the given declaration More...
 
std::string bind_function (clang::FunctionDecl *F, Context &)
 
void add_relevant_includes (clang::FunctionDecl const *F, std::vector< std::string > &includes, std::set< clang::NamedDecl const * > &stack)
 extract include needed for this generator and add it to includes vector More...
 
bool is_bindable (clang::FunctionDecl const *F)
 check if generator can create binding More...
 
bool is_binding_requested (clang::QualType const &qt, Config const &config)
 check if user requested binding for the given QualType More...
 
bool is_skipping_requested (QualType const &qt, Config const &config)
 
string relevant_include (NamedDecl const *decl)
 
void add_relevant_include_for_decl (NamedDecl const *decl, vector< string > &includes)
 
void add_relevant_includes (QualType const &qt, std::vector< std::string > &includes, std::set< clang::NamedDecl const * > &stack)
 extract include needed for this generator and add it to includes vector More...
 
bool is_bindable (QualType const &qt)
 
void request_bindings (clang::QualType const &qt, Context &context)
 extract type info from QualType if any and bind relative type More...
 
bool is_python_builtin (NamedDecl const *C)
 check if given class/struct is builtin in Python and therefor should not be binded More...
 
bool is_skipping_requested (clang::QualType const &qt, Config const &config)
 check if user requested skipping for the given QualType More...
 
std::string relevant_include (clang::NamedDecl const *decl)
 
void add_relevant_include_for_decl (clang::NamedDecl const *decl, std::vector< std::string > &includes)
 
void add_relevant_includes (clang::QualType const &qt, std::vector< std::string > &includes, std::set< clang::NamedDecl const * > &stack)
 extract include needed for this generator and add it to includes vector More...
 
bool is_bindable (clang::QualType const &qt)
 
bool is_python_builtin (clang::NamedDecl const *C)
 check if given class/struct is builtin in Python and therefor should not be binded More...
 
vector< string > split (string const &buffer, string const &separator)
 Split string using given separator. More...
 
string replace (string const &s, string const &from, string const &to)
 Replace all occurrences of string. More...
 
bool begins_with (std::string const &source, std::string const &prefix)
 check if string begins with given prefix More...
 
string indent (std::string const &code, std::string const &indentation)
 indent given code More...
 
void update_source_file (std::string const &prefix, std::string const &file_name, std::string const &code)
 Try to read exisitng file and if content does not match to code - write a new version. Also create nested dirs starting from prefix if nessesary. More...
 
string namespace_from_named_decl (NamedDecl const *decl)
 
string typename_from_type_decl (TypeDecl *decl)
 generate unique string representation of type represented by given declaration More...
 
string base_namespace (string const &ns)
 Calculate base (upper) namespace for given one: core::pose::motif –> core::pose. More...
 
string last_namespace (string const &ns)
 Calculate last namespace for given one: core::pose::motif –> motif. More...
 
void fix_boolean_types (std::string &type)
 replace all _Bool types with bool More...
 
string expresion_to_string (clang::Expr *e)
 Generate string representation of given expression. More...
 
string template_argument_to_string (clang::TemplateArgument const &)
 Generate string representation of given TemplateArgument. More...
 
string line_number (NamedDecl *decl)
 
std::string namespace_from_named_decl (clang::NamedDecl const *decl)
 calculate namespace path from given NamedDecl, like: std, core::pose More...
 
std::string typename_from_type_decl (clang::TypeDecl *decl)
 
std::string line_number (clang::NamedDecl *decl)
 calcualte line in source file for NamedDecl More...
 

Variables

const char * main_module_header
 
const char * module_header = "\n#include <pybind11/pybind11.h>\n//#include <pybind11/stl.h>\n\n"
 
const char * module_function_suffix = "(std::function< pybind11::module &(std::string const &namespace_) > &M)"
 

Typedef Documentation

typedef std::shared_ptr< Binder > binder::BinderOP

Function Documentation

void binder::add_relevant_include_for_decl ( clang::NamedDecl const *  decl,
std::vector< std::string > &  includes 
)
void binder::add_relevant_include_for_decl ( NamedDecl const *  decl,
vector< string > &  includes 
)
void binder::add_relevant_includes ( clang::EnumDecl const *  E,
std::vector< std::string > &  includes,
std::set< clang::NamedDecl const * > &  stack 
)

extract include needed for this generator and add it to includes vector

References add_relevant_include_for_decl().

void binder::add_relevant_includes ( clang::QualType const &  qt,
std::vector< std::string > &  includes,
std::set< clang::NamedDecl const * > &  stack 
)

extract include needed for this generator and add it to includes vector

void binder::add_relevant_includes ( clang::FunctionDecl const *  F,
std::vector< std::string > &  includes,
std::set< clang::NamedDecl const * > &  stack 
)

extract include needed for this generator and add it to includes vector

void binder::add_relevant_includes ( clang::CXXRecordDecl const *  C,
std::vector< std::string > &  includes,
std::set< clang::NamedDecl const * > &  stack 
)
void binder::add_relevant_includes ( QualType const &  qt,
std::vector< std::string > &  includes,
std::set< clang::NamedDecl const * > &  stack 
)

extract include needed for this generator and add it to includes vector

void binder::add_relevant_includes ( FunctionDecl const *  F,
std::vector< std::string > &  includes,
std::set< NamedDecl const * > &  stack 
)

extract include needed for this generator and add it to includes vector

References add_relevant_include_for_decl(), add_relevant_includes(), get_type_dependencies(), and basic::options::OptionKeys::in::file::t.

void binder::add_relevant_includes ( clang::CXXRecordDecl const *  C,
vector< string > &  includes,
set< NamedDecl const * > &  stack 
)
std::string binder::base_namespace ( string const &  ns)

Calculate base (upper) namespace for given one: core::pose::motif –> core::pose.

References demo.D060_Folding::f.

Referenced by binder::Context::create_all_nested_namespaces(), and binder::Context::generate().

bool binder::begins_with ( std::string const &  source,
std::string const &  prefix 
)
string binder::bind_data_member ( FieldDecl const *  d,
string const &  class_qualified_name 
)
std::string binder::bind_enum ( std::string const &  module,
clang::EnumDecl *  E 
)
std::string binder::bind_enum ( std::string const &  module,
EnumDecl *  E 
)
std::string binder::bind_function ( clang::FunctionDecl *  F,
Context &   
)
string binder::bind_function ( FunctionDecl *  F,
Context &  context 
)
std::string binder::class_name ( clang::CXXRecordDecl const *  C)
string binder::class_name ( CXXRecordDecl const *  C)
std::string binder::class_qualified_name ( clang::CXXRecordDecl const *  C)
string binder::class_qualified_name ( CXXRecordDecl const *  C)
std::string binder::expresion_to_string ( clang::Expr *  e)

Generate string representation of given expression.

References basic::options::OptionKeys::in::file::s.

Referenced by bind_function().

string binder::file_name_prefix_for_binder ( BinderOP &  b)

Generate file name where binding for given generator should be stored.

References begins_with(), namespace_from_named_decl(), relevant_include(), and replace().

Referenced by binder::Context::generate().

void binder::fix_boolean_types ( string &  type)
std::string binder::function_arguments ( clang::FunctionDecl const *  record)
std::string binder::function_pointer_type ( clang::FunctionDecl const *  record)
string binder::function_pointer_type ( FunctionDecl const *  F)
std::string binder::function_qualified_name ( clang::FunctionDecl const *  F)
string binder::function_qualified_name ( FunctionDecl const *  F)
string binder::generate_include_directives ( vector< string > &  includes)
std::vector<clang::NamedDecl const *> binder::get_decl_dependencies ( clang::CXXRecordDecl const *  C)
std::vector<clang::QualType> binder::get_type_dependencies ( clang::CXXRecordDecl const *  C)
vector<QualType> binder::get_type_dependencies ( CXXRecordDecl const *  C)
vector<QualType> binder::get_type_dependencies ( FunctionDecl const *  F)
std::string binder::indent ( string const &  code,
string const &  indentation 
)
bool binder::is_bindable ( clang::QualType const &  qt)
bool binder::is_bindable ( clang::FunctionDecl const *  F)

check if generator can create binding

bool binder::is_bindable ( FieldDecl *  f)
bool binder::is_bindable ( QualType const &  qt)
bool binder::is_bindable ( clang::CXXRecordDecl const *  C)
bool binder::is_bindable ( FunctionDecl const *  F)

check if generator can create binding

References ObjexxFCL::format::F(), and basic::options::OptionKeys::score::fiber_diffraction::p.

bool binder::is_binding_requested ( clang::QualType const &  qt,
Config const &  config 
)

check if user requested binding for the given QualType

References basic::options::OptionKeys::frags::scoring::config.

bool binder::is_binding_requested ( clang::FunctionDecl const *  F,
Config const &  config 
)

check if user requested binding for the given declaration

bool binder::is_binding_requested ( FunctionDecl const *  F,
Config const &  config 
)
bool binder::is_binding_requested ( clang::CXXRecordDecl const *  C,
Config const &  config 
)
bool binder::is_field_assignable ( FieldDecl const *  f)

generate list of class/enum names on which this CXXRecordDecl depend to get binded ommiting build-in types

References C.

Referenced by is_bindable().

bool binder::is_inherited_from_enable_shared_from_this ( CXXRecordDecl const *  C)
bool binder::is_python_builtin ( clang::NamedDecl const *  C)

check if given class/struct is builtin in Python and therefor should not be binded

bool binder::is_python_builtin ( NamedDecl const *  C)

check if given class/struct is builtin in Python and therefor should not be binded

References begins_with(), and name.

Referenced by binder::Binder::is_binded(), and binder::Context::request_bindings().

bool binder::is_skipping_requested ( clang::QualType const &  qt,
Config const &  config 
)

check if user requested skipping for the given QualType

bool binder::is_skipping_requested ( clang::FunctionDecl const *  F,
Config const &  config 
)

check if user requested skipping for the given declaration

bool binder::is_skipping_requested ( QualType const &  qt,
Config const &  config 
)
bool binder::is_skipping_requested ( FunctionDecl const *  F,
Config const &  config 
)
bool binder::is_skipping_requested ( clang::CXXRecordDecl const *  C,
Config const &  config 
)
std::string binder::last_namespace ( string const &  ns)

Calculate last namespace for given one: core::pose::motif –> motif.

References demo.D060_Folding::f.

Referenced by binder::Context::generate().

std::string binder::line_number ( clang::NamedDecl *  decl)

calcualte line in source file for NamedDecl

string binder::line_number ( NamedDecl *  decl)
std::string binder::namespace_from_named_decl ( clang::NamedDecl const *  decl)

calculate namespace path from given NamedDecl, like: std, core::pose

string binder::namespace_from_named_decl ( NamedDecl const *  decl)
llvm::raw_ostream & binder::operator<< ( llvm::raw_ostream &  os,
Binder const &  b 
)
std::string binder::relevant_include ( clang::NamedDecl const *  decl)
string binder::relevant_include ( NamedDecl const *  decl)
std::string binder::replace ( string const &  s,
string const &  from,
string const &  to 
)
void binder::request_bindings ( clang::QualType const &  qt,
Context &  context 
)
std::vector< std::string > binder::split ( string const &  buffer,
string const &  separator 
)

Split string using given separator.

References line, and clean_pdb_keep_ligand::lines.

Referenced by app.pyrosetta_toolkit.modules.prettytable.prettytable.PrettyTable::_stringify_row(), BuildBindings::buildModule_All(), BuildBindings::buildModule_One(), app.pyrosetta_toolkit.modules.DesignBreakdown.DesignBreakdown::calculate_results(), BuildBindings::calculate_source_modification_date(), app.pyrosetta_toolkit.window_modules.design.ResfileDesignWindow.ResfileDesignWindow::check_for_residue_existance(), app.pyrosetta_toolkit.modules.tools.output::convert_PDBLIST_to_sqlite3db(), app.pyrosetta_toolkit.modules.ScoreAnalysis.ScoreAnalysis::copy_results(), arls_impl::find_programs(), build::generate_bindings(), build::generate_rosetta_external_cmake_files(), BuildBindings::get_all_rosetta_objs(), BuildBindings::get_compiler_defines(), build::get_defines(), build::get_rosetta_include_directories(), app.pyrosetta_toolkit.modules.tools.interfaces.Antibodies::getContactCDRs(), PhiPsi::hbond_record(), indent(), exclude::isFileInScons(), tools.CppParser.CppClass::isPublicMembersWrappable(), best_ifaceE::main(), get_scores::main(), prune_atdiff_top5pct::main(), BuildBindings::main(), app.pyrosetta_toolkit.window_modules.design.ResfileDesignWindow.ResfileDesignWindow::nextRes(), app.pyrosetta_toolkit.window_modules.ligand_ncaa_ptm_manager.ligand_ncaa_ptm_manager.ligand_ncaa_ptm_manager::open_param_or_patch(), app.pyrosetta_toolkit.modules.tools.output::output_molfile_to_params(), tools.CppParser.GccXML::parse(), app.pyrosetta_toolkit.window_modules.scorefunction.ScoreFxnControl.ScoreFxnControl::populateScoreList(), app.pyrosetta_toolkit.window_modules.design.ResfileDesignWindow.ResfileDesignWindow::prevRes(), app.pyrosetta_toolkit.modules.ScoreAnalysis.ScoreAnalysis::read_FASC(), app.pyrosetta_toolkit.modules.ScoreAnalysis.ScoreAnalysis::read_SC(), register_options(), app.pyrosetta_toolkit.window_modules.design.ResfileDesignWindow.ResfileDesignWindow::remove_from_current_designs_callback(), app.pyrosetta_toolkit.modules.tools.general_tools::renameandsave(), app.pyrosetta_toolkit.modules.calibur.calibur::ret_centers(), app.pyrosetta_toolkit.modules.tools.loops::return_residue_array(), run(), demo.D090_Ala_scan::scanning_analysis(), app.pyrosetta_toolkit.window_main.frames.SimpleAnalysisFrame.SimpleAnalysisFrame::score_loops(), update_source_file(), app.pyrosetta_toolkit.window_modules.design.ResfileDesignWindow.ResfileDesignWindow::updateInfo(), BuildBindings::windows_buildOneNamespace(), and tools.CppParser::wrapModule().

std::string binder::template_argument_to_string ( clang::TemplateArgument const &  t)

Generate string representation of given TemplateArgument.

References basic::options::OptionKeys::in::file::s.

Referenced by template_specialization().

std::string binder::template_specialization ( clang::CXXRecordDecl const *  C)
string binder::template_specialization ( FunctionDecl const *  F)
std::string binder::typename_from_type_decl ( clang::TypeDecl *  decl)
string binder::typename_from_type_decl ( TypeDecl *  decl)

generate unique string representation of type represented by given declaration

Referenced by binder::Context::add(), and request_bindings().

void binder::update_source_file ( std::string const &  prefix,
std::string const &  file_name,
std::string const &  code 
)

Try to read exisitng file and if content does not match to code - write a new version. Also create nested dirs starting from prefix if nessesary.

References demo.D060_Folding::f, basic::options::OptionKeys::in::path::path, basic::options::OptionKeys::antibody::prefix, and split().

Referenced by binder::Context::generate().

Variable Documentation

const char* binder::main_module_header
Initial value:
= R"_(#include <map>
#include <memory>
#include <stdexcept>
#include <functional>
#include <pybind11/pybind11.h>
typedef std::function< pybind11::module & (std::string const &) > ModuleGetter;
{0}
PYBIND11_PLUGIN({1}) {{
std::map <std::string, std::shared_ptr<pybind11::module> > modules;
ModuleGetter M = [&](std::string const &namespace_) -> pybind11::module & {{
auto it = modules.find(namespace_);
if( it == modules.end() ) throw std::runtime_error("Attempt to access pybind11::module for namespace " + namespace_ + " before it was created!!!");
return * it->second;
}};
modules[""] = std::make_shared<pybind11::module>("{1}", "{1} module");
std::vector< std::pair<std::string, std::string> > sub_modules {{
{2} }};
for(auto &p : sub_modules ) modules[p.first.size() ? p.first+"::"+p.second : p.second] = std::make_shared<pybind11::module>( modules[p.first]->def_submodule(p.second.c_str(), ("Bindings for " + p.first + "::" + p.second + " namespace").c_str() ) );
{3}
return modules[""]->ptr();
}}
)_"

Referenced by binder::Context::generate().

const char* binder::module_function_suffix = "(std::function< pybind11::module &(std::string const &namespace_) > &M)"
const char* binder::module_header = "\n#include <pybind11/pybind11.h>\n//#include <pybind11/stl.h>\n\n"