static int port_seek (void *cookie, off64_t * pos, int whence) { SCM port = PTR2SCM (cookie); SCM new_pos; new_pos = scm_seek (port, scm_from_int64 (*pos), scm_from_int (whence)); *pos = scm_to_int64 (new_pos); return PORT_OK; }
SCM gnc_kvp_value_ptr_to_scm(KvpValue* val) { if (val == nullptr) return SCM_BOOL_F; switch (val->get_type()) { case KvpValue::Type::INT64: return scm_from_int64(val->get<int64_t>()); break; case KvpValue::Type::DOUBLE: return scm_from_double (val->get<double>()); break; case KvpValue::Type::NUMERIC: return gnc_numeric_to_scm(val->get<gnc_numeric>()); break; case KvpValue::Type::STRING: { auto string = val->get<const char*>(); return string ? scm_from_utf8_string(string) : SCM_BOOL_F; break; } case KvpValue::Type::GUID: { auto tempguid = val->get<GncGUID*>(); return gnc_guid2scm(*tempguid); } break; case KvpValue::Type::TIMESPEC: return gnc_timespec2timepair(val->get<Timespec>()); break; case KvpValue::Type::FRAME: { auto frame = val->get<KvpFrame*>(); if (frame != nullptr) return SWIG_NewPointerObj(frame, SWIG_TypeQuery("_p_KvpFrame"), 0); } break; case KvpValue::Type::GDATE: return gnc_timespec2timepair(gdate_to_timespec(val->get<GDate>())); /* FIXME: handle types below */ case KvpValue::Type::GLIST: default: break; } return SCM_BOOL_F; }