54 lines
		
	
	
		
			1.9 KiB
		
	
	
	
		
			C++
		
	
	
			
		
		
	
	
			54 lines
		
	
	
		
			1.9 KiB
		
	
	
	
		
			C++
		
	
	
| /* ----------------------------------------------------------------------------
 | |
| 
 | |
|  * GTSAM Copyright 2010, Georgia Tech Research Corporation, 
 | |
|  * Atlanta, Georgia 30332-0415
 | |
|  * All Rights Reserved
 | |
|  * Authors: Frank Dellaert, et al. (see THANKS for the full author list)
 | |
| 
 | |
|  * See LICENSE for the license information
 | |
| 
 | |
|  * -------------------------------------------------------------------------- */
 | |
| 
 | |
| /**
 | |
|  * @file TemplateMethod.ccp
 | |
|  * @author Duy-Nguyen Ta
 | |
|  **/
 | |
| 
 | |
| #include "TemplateMethod.h"
 | |
| #include "Class.h"
 | |
|  
 | |
| using namespace std;
 | |
| using namespace wrap;
 | |
| 
 | |
| /* ************************************************************************* */
 | |
| void TemplateMethod::emit_cython_pxd(FileWriter& file, const Class& cls) const {
 | |
|   std::vector<std::string> templateArgs = cls.templateArgs;
 | |
|   templateArgs.push_back(argName);
 | |
|   for(size_t i = 0; i < nrOverloads(); ++i) {
 | |
|     file.oss << "        ";
 | |
|     returnVals_[i].emit_cython_pxd(file, cls.pxdClassName(), templateArgs);
 | |
|     file.oss << name_ << "[" << argName << "]" << "(";
 | |
|     argumentList(i).emit_cython_pxd(file, cls.pxdClassName(), templateArgs);
 | |
|     file.oss << ") except +\n";
 | |
|   }
 | |
| }
 | |
| 
 | |
| /* ************************************************************************* */
 | |
| bool TemplateMethod::addOverload(Str name, const ArgumentList& args,
 | |
|     const ReturnValue& retVal, bool is_const,
 | |
|     std::string _argName, bool verbose) {
 | |
|   argName = _argName;
 | |
|   bool first = MethodBase::addOverload(name, args, retVal, boost::none, verbose);
 | |
|   if (first)
 | |
|     is_const_ = is_const;
 | |
|   else if (is_const && !is_const_)
 | |
|     throw std::runtime_error(
 | |
|         "Method::addOverload now designated as const whereas before it was not");
 | |
|   else if (!is_const && is_const_)
 | |
|     throw std::runtime_error(
 | |
|         "Method::addOverload now designated as non-const whereas before it was");
 | |
|   return first;
 | |
| }
 | |
| 
 | |
| /* ************************************************************************* */
 |