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