gtsam/wrap/ReturnValue.h

63 lines
1.3 KiB
C
Raw Normal View History

/**
* @file ReturnValue.h
*
* @brief Encapsulates a return value from a method
* @date Dec 1, 2011
* @author Alex Cunningham
2012-07-13 06:28:28 +08:00
* @author Richard Roberts
*/
#include "ReturnType.h"
#include "TemplateSubstitution.h"
#include "FileWriter.h"
2012-07-13 06:28:28 +08:00
#include "TypeAttributesTable.h"
2014-11-12 21:37:08 +08:00
#include "utilities.h"
2014-05-26 01:29:06 +08:00
#pragma once
namespace wrap {
2014-05-26 02:40:39 +08:00
/**
* Encapsulates return type of a method or function, possibly a pair
2014-11-12 20:31:46 +08:00
*/
struct ReturnValue {
bool isPair;
ReturnType type1, type2;
2014-05-26 02:40:39 +08:00
/// Constructor
ReturnValue() :
isPair(false) {
2014-05-26 02:40:39 +08:00
}
2014-11-13 05:06:53 +08:00
/// Constructor
ReturnValue(const ReturnType& type) :
isPair(false), type1(type) {
}
2014-11-13 07:39:15 +08:00
/// Substitute template argument
ReturnValue expandTemplate(const TemplateSubstitution& ts) const;
2014-11-12 21:37:08 +08:00
std::string return_type(bool add_ptr) const;
std::string matlab_returnType() const;
2014-11-13 03:52:07 +08:00
void wrap_result(const std::string& result, FileWriter& wrapperFile,
2014-05-26 01:29:06 +08:00
const TypeAttributesTable& typeAttributes) const;
void wrapTypeUnwrap(FileWriter& wrapperFile) const;
2012-07-24 02:24:39 +08:00
2014-11-13 03:52:07 +08:00
void emit_matlab(FileWriter& proxyFile) const;
2014-11-13 07:39:15 +08:00
2014-11-14 04:11:29 +08:00
friend std::ostream& operator<<(std::ostream& os, const ReturnValue& r) {
if (!r.isPair && r.type1.category == ReturnType::VOID)
os << "void";
else
os << r.return_type(true);
return os;
}
};
} // \namespace wrap