Small change to wrap to avoid redundant includes in cpp file
parent
2e6de9e9a1
commit
f3406f3bc9
|
@ -315,6 +315,35 @@ void verifyReturnTypes(const vector<string>& validtypes, const map<string,T>& vt
|
|||
}
|
||||
}
|
||||
|
||||
/* ************************************************************************* */
|
||||
void Module::generateIncludes(FileWriter& file) const {
|
||||
|
||||
// collect includes
|
||||
vector<string> all_includes;
|
||||
BOOST_FOREACH(const Class& cls, classes) {
|
||||
// generateIncludes(wrapperFile, cls.name, cls.includes);
|
||||
bool added_include = false;
|
||||
BOOST_FOREACH(const string& s, cls.includes) {
|
||||
if (!s.empty()) {
|
||||
all_includes.push_back(s);
|
||||
added_include = true;
|
||||
}
|
||||
}
|
||||
if (!added_include) // add default include
|
||||
all_includes.push_back(cls.name + ".h");
|
||||
}
|
||||
|
||||
// sort and remove duplicates
|
||||
sort(all_includes.begin(), all_includes.end());
|
||||
unique(all_includes.begin(), all_includes.end());
|
||||
|
||||
// add includes to file
|
||||
BOOST_FOREACH(const string& include, all_includes) {
|
||||
file.oss << "#include <" << include << ">" << endl;
|
||||
}
|
||||
file.oss << "\n";
|
||||
}
|
||||
|
||||
/* ************************************************************************* */
|
||||
void Module::matlab_code(const string& toolboxPath, const string& headerPath) const {
|
||||
|
||||
|
@ -383,11 +412,8 @@ void Module::matlab_code(const string& toolboxPath, const string& headerPath) co
|
|||
verifyReturnTypes<Method>(validTypes, cls.methods);
|
||||
}
|
||||
|
||||
// Generate all includes
|
||||
BOOST_FOREACH(const Class& cls, classes) {
|
||||
generateIncludes(wrapperFile, cls.name, cls.includes);
|
||||
}
|
||||
wrapperFile.oss << "\n";
|
||||
// Generate includes while avoiding redundant includes
|
||||
generateIncludes(wrapperFile);
|
||||
|
||||
// Generate all collectors
|
||||
BOOST_FOREACH(const Class& cls, classes) {
|
||||
|
|
|
@ -53,6 +53,8 @@ struct Module {
|
|||
const std::string& headerPath) const;
|
||||
|
||||
void finish_wrapper(FileWriter& file, const std::vector<std::string>& functionNames) const;
|
||||
|
||||
void generateIncludes(FileWriter& file) const;
|
||||
};
|
||||
|
||||
} // \namespace wrap
|
||||
|
|
|
@ -3,15 +3,15 @@
|
|||
#include <map>
|
||||
#include <boost/foreach.hpp>
|
||||
|
||||
#include <path/to/ns1.h>
|
||||
#include <ClassD.h>
|
||||
#include <path/to/ns1.h>
|
||||
#include <path/to/ns1/ClassB.h>
|
||||
#include <path/to/ns2.h>
|
||||
#include <path/to/ns2/ClassA.h>
|
||||
#include <path/to/ns2.h>
|
||||
#include <path/to/ns3.h>
|
||||
#include <path/to/ns2.h>
|
||||
#include <ClassD.h>
|
||||
#include <path/to/ns2/ClassA.h>
|
||||
#include <path/to/ns3.h>
|
||||
|
||||
typedef std::set<boost::shared_ptr<ns1::ClassA>*> Collector_ns1ClassA;
|
||||
static Collector_ns1ClassA collector_ns1ClassA;
|
||||
|
|
|
@ -120,20 +120,6 @@ void generateUsingNamespace(FileWriter& file, const vector<string>& using_namesp
|
|||
file.oss << "using namespace " << s << ";" << endl;
|
||||
}
|
||||
|
||||
/* ************************************************************************* */
|
||||
void generateIncludes(FileWriter& file, const string& class_name,
|
||||
const vector<string>& includes) {
|
||||
bool added_include = false;
|
||||
BOOST_FOREACH(const string& s, includes) {
|
||||
if (!s.empty()) {
|
||||
file.oss << "#include <" << s << ">" << endl;
|
||||
added_include = true;
|
||||
}
|
||||
}
|
||||
if (!added_include) // add default include
|
||||
file.oss << "#include <" << class_name << ".h>" << endl;
|
||||
}
|
||||
|
||||
/* ************************************************************************* */
|
||||
string qualifiedName(const string& separator, const vector<string>& names, const string& finalName) {
|
||||
string result;
|
||||
|
|
|
@ -117,12 +117,6 @@ std::string maybe_shared_ptr(bool add, const std::string& qtype, const std::stri
|
|||
*/
|
||||
void generateUsingNamespace(FileWriter& file, const std::vector<std::string>& using_namespaces);
|
||||
|
||||
/**
|
||||
* Creates the #include statements
|
||||
*/
|
||||
void generateIncludes(FileWriter& file, const std::string& class_name,
|
||||
const std::vector<std::string>& includes);
|
||||
|
||||
/**
|
||||
* Return a qualified name, if finalName is empty, only the names vector will
|
||||
* be used (i.e. there won't be a trailing separator on the qualified name).
|
||||
|
|
Loading…
Reference in New Issue