diff options
Diffstat (limited to 'c/pl.cpp')
-rw-r--r-- | c/pl.cpp | 26 |
1 files changed, 15 insertions, 11 deletions
@@ -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<char>(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<wchar_t>(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<wchar_t>(sz); + return r; } |