48 lines
		
	
	
		
			1.5 KiB
		
	
	
	
		
			C++
		
	
	
		
		
			
		
	
	
			48 lines
		
	
	
		
			1.5 KiB
		
	
	
	
		
			C++
		
	
	
| 
								 | 
							
								/**
							 | 
						||
| 
								 | 
							
								 * file: wrap.ccp
							 | 
						||
| 
								 | 
							
								 * brief: wraps functions
							 | 
						||
| 
								 | 
							
								 * Author: Frank Dellaert
							 | 
						||
| 
								 | 
							
								 **/
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								#include <stdio.h>
							 | 
						||
| 
								 | 
							
								#include <iostream>
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								#include "Module.h"
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								using namespace std;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								/* ************************************************************************* */
							 | 
						||
| 
								 | 
							
								/**
							 | 
						||
| 
								 | 
							
								 * main function to wrap a module
							 | 
						||
| 
								 | 
							
								 */
							 | 
						||
| 
								 | 
							
								void generate_matlab_toolbox(const string& interfacePath,
							 | 
						||
| 
								 | 
							
											     const string& moduleName,
							 | 
						||
| 
								 | 
							
											     const string& toolboxPath,
							 | 
						||
| 
								 | 
							
											     const string& nameSpace,
							 | 
						||
| 
								 | 
							
											     const string& mexFlags) 
							 | 
						||
| 
								 | 
							
								{
							 | 
						||
| 
								 | 
							
								  // Parse into class object
							 | 
						||
| 
								 | 
							
								  Module module(interfacePath, moduleName);
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  // emit MATLAB code
							 | 
						||
| 
								 | 
							
								  module.matlab_code(toolboxPath,nameSpace,mexFlags);
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								/* ************************************************************************* */
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								int main(int argc, const char* argv[]) {
							 | 
						||
| 
								 | 
							
								  if (argc<5 || argc>6) {
							 | 
						||
| 
								 | 
							
								    cerr << "wrap parses an interface file and produces a MATLAB toolbox" << endl;
							 | 
						||
| 
								 | 
							
								    cerr << "usage: wrap interfacePath moduleName toolboxPath" << endl;
							 | 
						||
| 
								 | 
							
								    cerr << "  interfacePath : *absolute* path to directory of module interface file" << endl;
							 | 
						||
| 
								 | 
							
								    cerr << "  moduleName    : the name of the module, interface file must be called moduleName.h" << endl;
							 | 
						||
| 
								 | 
							
								    cerr << "  toolboxPath   : the directory in which to generate the wrappers" << endl;
							 | 
						||
| 
								 | 
							
								    cerr << "  nameSpace     : namespace to use, pass empty string if none" << endl;
							 | 
						||
| 
								 | 
							
								    cerr << "  [mexFlags]    : extra flags for the mex command" << endl;
							 | 
						||
| 
								 | 
							
								  }
							 | 
						||
| 
								 | 
							
								  else
							 | 
						||
| 
								 | 
							
								    generate_matlab_toolbox(argv[1],argv[2],argv[3],argv[4],argc==5 ? " " : argv[5]);
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								/* ************************************************************************* */
							 |