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 {
|
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);
|
verifyReturnTypes<Method>(validTypes, cls.methods);
|
||||||
}
|
}
|
||||||
|
|
||||||
// Generate all includes
|
// Generate includes while avoiding redundant includes
|
||||||
BOOST_FOREACH(const Class& cls, classes) {
|
generateIncludes(wrapperFile);
|
||||||
generateIncludes(wrapperFile, cls.name, cls.includes);
|
|
||||||
}
|
|
||||||
wrapperFile.oss << "\n";
|
|
||||||
|
|
||||||
// Generate all collectors
|
// Generate all collectors
|
||||||
BOOST_FOREACH(const Class& cls, classes) {
|
BOOST_FOREACH(const Class& cls, classes) {
|
||||||
|
|
|
@ -53,6 +53,8 @@ struct Module {
|
||||||
const std::string& headerPath) const;
|
const std::string& headerPath) const;
|
||||||
|
|
||||||
void finish_wrapper(FileWriter& file, const std::vector<std::string>& functionNames) const;
|
void finish_wrapper(FileWriter& file, const std::vector<std::string>& functionNames) const;
|
||||||
|
|
||||||
|
void generateIncludes(FileWriter& file) const;
|
||||||
};
|
};
|
||||||
|
|
||||||
} // \namespace wrap
|
} // \namespace wrap
|
||||||
|
|
|
@ -3,15 +3,15 @@
|
||||||
#include <map>
|
#include <map>
|
||||||
#include <boost/foreach.hpp>
|
#include <boost/foreach.hpp>
|
||||||
|
|
||||||
#include <path/to/ns1.h>
|
#include <ClassD.h>
|
||||||
#include <path/to/ns1.h>
|
#include <path/to/ns1.h>
|
||||||
#include <path/to/ns1/ClassB.h>
|
#include <path/to/ns1/ClassB.h>
|
||||||
#include <path/to/ns2.h>
|
#include <path/to/ns2.h>
|
||||||
#include <path/to/ns2/ClassA.h>
|
#include <path/to/ns2/ClassA.h>
|
||||||
#include <path/to/ns2.h>
|
|
||||||
#include <path/to/ns3.h>
|
#include <path/to/ns3.h>
|
||||||
#include <path/to/ns2.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;
|
typedef std::set<boost::shared_ptr<ns1::ClassA>*> Collector_ns1ClassA;
|
||||||
static Collector_ns1ClassA 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;
|
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 qualifiedName(const string& separator, const vector<string>& names, const string& finalName) {
|
||||||
string result;
|
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);
|
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
|
* 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).
|
* be used (i.e. there won't be a trailing separator on the qualified name).
|
||||||
|
|
Loading…
Reference in New Issue