[engine.i] VECTORREF_HELPER_INOUT to handle SplitsVec&

This commit is contained in:
Christopher Lam 2024-10-27 15:17:27 +08:00
parent c02152b34a
commit e2f5c74bb4
2 changed files with 10 additions and 0 deletions

View File

@ -86,6 +86,7 @@ GLIST_HELPER_INOUT(PriceList, SWIGTYPE_p_GNCPrice);
// TODO: free PriceList?
GLIST_HELPER_INOUT(CommodityList, SWIGTYPE_p_gnc_commodity);
VECTOR_HELPER_INOUT(SplitsVec, SWIGTYPE_p_Split, Split);
VECTORREF_HELPER_INOUT(SplitsVec&, SWIGTYPE_p_Split, Split);
VECTOR_HELPER_INOUT(AccountVec, SWIGTYPE_p_Account, Account);
%typemap(newfree) char * "g_free($1);"

View File

@ -185,6 +185,15 @@ typedef char gchar;
}
%enddef
%define VECTORREF_HELPER_INOUT(VectorType, ElemSwigType, ElemType)
%typemap(out) VectorType {
auto accum = [](SCM acc, auto n){ return scm_cons(SWIG_NewPointerObj(n, ElemSwigType, 0), acc); };
$result = std::accumulate ($1->rbegin(), $1->rend(), SCM_EOL, accum);
}
%enddef
#elif defined(SWIGPYTHON) /* Typemaps for Python */
%import "glib.h"