From 98f28569b631d36a6f129a17ea7589b48884c1eb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?John=20Ankarstr=C3=B6m?= Date: Sun, 24 Jul 2022 02:05:30 +0200 Subject: Fix PL_get_tchars. See c6cd2f1. --- c/pl.cpp | 26 +++++++++++++++----------- 1 file changed, 15 insertions(+), 11 deletions(-) (limited to 'c/pl.cpp') diff --git a/c/pl.cpp b/c/pl.cpp index 46ed717..a1849db 100644 --- a/c/pl.cpp +++ b/c/pl.cpp @@ -78,16 +78,20 @@ int Query::NextSolution() } /* Convert Prolog term to normal or wide characters. */ -int PL_get_tchars(const term_t t, TCHAR** const pTsz, const int iFlags) +template <> +int PlString(const term_t t, std::string* const pStr, const int iFlags) { -#ifdef UNICODE - size_t len; - if (!PL_get_wchars(t, &len, pTsz, iFlags)) - return 0; - return len; -#else - if (!PL_get_chars(t, pTsz, iFlags)) - return 0; - return -1; -#endif + char* sz; + int r = PL_get_chars(t, &sz, iFlags); + if (r) *pStr = sz; + return r; +} + +template <> +int PlString(const term_t t, std::wstring* const pWstr, const int iFlags) +{ + char* sz; + int r = PL_get_chars(t, &sz, iFlags); + if (r) *pWstr = BstrFromSz(sz); + return r; } -- cgit v1.2.3