wrap pair. Improve return.
parent
b91a7d368d
commit
63a5d1e15a
|
@ -111,18 +111,23 @@ void Method::emit_cython_pyx(FileWriter& file, const Class& cls) const {
|
||||||
|
|
||||||
/// Return part
|
/// Return part
|
||||||
file.oss << "\t\t";
|
file.oss << "\t\t";
|
||||||
if (!returnVals_[i].isVoid()) file.oss << "return ";
|
if (!returnVals_[i].isVoid()) {
|
||||||
// ... casting return value
|
file.oss << "cdef ";
|
||||||
returnVals_[i].emit_cython_pyx_casting(file);
|
returnVals_[i].emit_cython_pyx_return_type(file);
|
||||||
if (!returnVals_[i].isVoid()) file.oss << "(";
|
file.oss << " ret = ";
|
||||||
|
}
|
||||||
|
//... function call
|
||||||
file.oss << "self." << cls.pyxCythonObj() << ".get()." << funcName;
|
file.oss << "self." << cls.pyxCythonObj() << ".get()." << funcName;
|
||||||
if (templateArgValue_) file.oss << "[" << templateArgValue_->pyxCythonClass() << "]";
|
if (templateArgValue_) file.oss << "[" << templateArgValue_->pyxCythonClass() << "]";
|
||||||
|
|
||||||
// ... argument list
|
|
||||||
file.oss << "(";
|
file.oss << "(";
|
||||||
argumentList(i).emit_cython_pyx_asParams(file);
|
argumentList(i).emit_cython_pyx_asParams(file);
|
||||||
if (!returnVals_[i].isVoid()) file.oss << ")";
|
|
||||||
file.oss << ")\n";
|
file.oss << ")\n";
|
||||||
|
|
||||||
|
file.oss << "\t\t";
|
||||||
|
if (!returnVals_[i].isVoid()) file.oss << "return ";
|
||||||
|
// ... casting return value
|
||||||
|
returnVals_[i].emit_cython_pyx_casting(file, "ret");
|
||||||
|
file.oss << "\n";
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
/* ************************************************************************* */
|
/* ************************************************************************* */
|
||||||
|
|
|
@ -76,7 +76,14 @@ void ReturnType::emit_cython_pxd(FileWriter& file) const {
|
||||||
}
|
}
|
||||||
|
|
||||||
/* ************************************************************************* */
|
/* ************************************************************************* */
|
||||||
void ReturnType::emit_cython_pyx_casting(FileWriter& file) const {
|
void ReturnType::emit_cython_pyx_return_type(FileWriter& file) const {
|
||||||
|
string retType = pyxCythonClass();
|
||||||
|
if (isPtr) retType = "shared_ptr[" + retType + "]";
|
||||||
|
file.oss << retType;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* ************************************************************************* */
|
||||||
|
void ReturnType::emit_cython_pyx_casting(FileWriter& file, const std::string& var) const {
|
||||||
if (isEigen())
|
if (isEigen())
|
||||||
file.oss << "ndarray_copy";
|
file.oss << "ndarray_copy";
|
||||||
else if (isNonBasicType()){
|
else if (isNonBasicType()){
|
||||||
|
@ -88,6 +95,7 @@ void ReturnType::emit_cython_pyx_casting(FileWriter& file) const {
|
||||||
file.oss << pythonClassName() << ".cyCreateFromValue";
|
file.oss << pythonClassName() << ".cyCreateFromValue";
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
file.oss << "(" << var << ")";
|
||||||
}
|
}
|
||||||
|
|
||||||
/* ************************************************************************* */
|
/* ************************************************************************* */
|
||||||
|
|
|
@ -48,7 +48,8 @@ struct ReturnType: public Qualified {
|
||||||
}
|
}
|
||||||
|
|
||||||
void emit_cython_pxd(FileWriter& file) const;
|
void emit_cython_pxd(FileWriter& file) const;
|
||||||
void emit_cython_pyx_casting(FileWriter& file) const;
|
void emit_cython_pyx_return_type(FileWriter& file) const;
|
||||||
|
void emit_cython_pyx_casting(FileWriter& file, const std::string& var) const;
|
||||||
|
|
||||||
private:
|
private:
|
||||||
|
|
||||||
|
|
|
@ -83,22 +83,30 @@ void ReturnValue::emit_cython_pxd(FileWriter& file) const {
|
||||||
}
|
}
|
||||||
|
|
||||||
/* ************************************************************************* */
|
/* ************************************************************************* */
|
||||||
void ReturnValue::emit_cython_pyx_casting(FileWriter& file) const {
|
void ReturnValue::emit_cython_pyx_return_type(FileWriter& file) const {
|
||||||
if (isVoid()) return;
|
if (isVoid()) return;
|
||||||
if (isPair) {
|
if (isPair) {
|
||||||
// file.oss << "cdef pair[" << type1.pyxCythonClass() << "," << type2.pyxCythonClass() << "]"
|
file.oss << "pair [";
|
||||||
// << "ret = ";
|
type1.emit_cython_pyx_return_type(file);
|
||||||
// file.oss << "(";
|
file.oss << ",";
|
||||||
// type1.emit_cython_pyx_casting(file);
|
type2.emit_cython_pyx_return_type(file);
|
||||||
// file.oss << "(";
|
file.oss << "]";
|
||||||
// file.oss << type1.pyxCythonClass();
|
|
||||||
// file.oss << "),";
|
|
||||||
// type2.emit_cython_pyx_casting(file);
|
|
||||||
// file.oss << "(";
|
|
||||||
// file.oss << type2.pyxCythonClass();
|
|
||||||
// file.oss << "))";
|
|
||||||
} else {
|
} else {
|
||||||
type1.emit_cython_pyx_casting(file);
|
type1.emit_cython_pyx_return_type(file);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/* ************************************************************************* */
|
||||||
|
void ReturnValue::emit_cython_pyx_casting(FileWriter& file, const std::string& var) const {
|
||||||
|
if (isVoid()) return;
|
||||||
|
if (isPair) {
|
||||||
|
file.oss << "(";
|
||||||
|
type1.emit_cython_pyx_casting(file, var + ".first");
|
||||||
|
file.oss << ",";
|
||||||
|
type2.emit_cython_pyx_casting(file, var + ".second");
|
||||||
|
file.oss << ")";
|
||||||
|
} else {
|
||||||
|
type1.emit_cython_pyx_casting(file, var);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -72,7 +72,8 @@ struct ReturnValue {
|
||||||
void emit_matlab(FileWriter& proxyFile) const;
|
void emit_matlab(FileWriter& proxyFile) const;
|
||||||
|
|
||||||
void emit_cython_pxd(FileWriter& file) const;
|
void emit_cython_pxd(FileWriter& file) const;
|
||||||
void emit_cython_pyx_casting(FileWriter& file) const;
|
void emit_cython_pyx_return_type(FileWriter& file) const;
|
||||||
|
void emit_cython_pyx_casting(FileWriter& file, const std::string& var) const;
|
||||||
|
|
||||||
friend std::ostream& operator<<(std::ostream& os, const ReturnValue& r) {
|
friend std::ostream& operator<<(std::ostream& os, const ReturnValue& r) {
|
||||||
if (!r.isPair && r.type1.category == ReturnType::VOID)
|
if (!r.isPair && r.type1.category == ReturnType::VOID)
|
||||||
|
|
|
@ -81,18 +81,21 @@ void StaticMethod::emit_cython_pyx(FileWriter& file, const Class& cls) const {
|
||||||
argumentList(i).emit_cython_pyx(file);
|
argumentList(i).emit_cython_pyx(file);
|
||||||
file.oss << "):\n";
|
file.oss << "):\n";
|
||||||
file.oss << "\t\t";
|
file.oss << "\t\t";
|
||||||
if (!returnVals_[i].isVoid()) file.oss << "return ";
|
//... function call
|
||||||
//... casting return value
|
if (!returnVals_[i].isVoid()) file.oss << "ret = ";
|
||||||
returnVals_[i].emit_cython_pyx_casting(file);
|
|
||||||
if (!returnVals_[i].isVoid()) file.oss << "(";
|
|
||||||
|
|
||||||
file.oss << cls.pyxCythonClass() << "."
|
file.oss << cls.pyxCythonClass() << "."
|
||||||
<< name_ << ((i>0)? "_" + to_string(i):"");
|
<< name_ << ((i>0)? "_" + to_string(i):"");
|
||||||
if (templateArgValue_) file.oss << "[" << templateArgValue_->pyxCythonClass() << "]";
|
if (templateArgValue_) file.oss << "[" << templateArgValue_->pyxCythonClass() << "]";
|
||||||
file.oss << "(";
|
file.oss << "(";
|
||||||
argumentList(i).emit_cython_pyx_asParams(file);
|
argumentList(i).emit_cython_pyx_asParams(file);
|
||||||
if (!returnVals_[i].isVoid()) file.oss << ")";
|
|
||||||
file.oss << ")\n";
|
file.oss << ")\n";
|
||||||
|
|
||||||
|
//... casting return value
|
||||||
|
if (!returnVals_[i].isVoid()) {
|
||||||
|
file.oss << "\t\treturn ";
|
||||||
|
returnVals_[i].emit_cython_pyx_casting(file, "ret");
|
||||||
|
}
|
||||||
|
file.oss << "\n";
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -380,7 +380,7 @@ virtual class GaussianFactor {
|
||||||
Matrix augmentedInformation() const;
|
Matrix augmentedInformation() const;
|
||||||
Matrix information() const;
|
Matrix information() const;
|
||||||
Matrix augmentedJacobian() const;
|
Matrix augmentedJacobian() const;
|
||||||
// pair<Matrix, Vector> jacobian() const;
|
pair<Matrix, Vector> jacobian() const;
|
||||||
size_t size() const;
|
size_t size() const;
|
||||||
bool empty() const;
|
bool empty() const;
|
||||||
};
|
};
|
||||||
|
|
Loading…
Reference in New Issue