diff options
Diffstat (limited to 'c/common.c')
-rw-r--r-- | c/common.c | 45 |
1 files changed, 45 insertions, 0 deletions
diff --git a/c/common.c b/c/common.c new file mode 100644 index 0000000..c1f9614 --- /dev/null +++ b/c/common.c @@ -0,0 +1,45 @@ +#include <windows.h> +#include <SWI-Prolog.h> + +#include "resource.h" + +/* Convert zero-terminated non-wide (multi-byte) string to + * zero-terminated wide/non-wide string depending on UNICODE. */ +TCHAR * +TSZFromSZ(char *sz, int iCp) +{ + TCHAR *tsz; + +#ifdef UNICODE + int cbMultiByte, cchWideChar; + + cbMultiByte = strlen(sz)+1; + cchWideChar = MultiByteToWideChar(iCp, 0, sz, cbMultiByte, NULL, 0); + tsz = malloc(cchWideChar*sizeof(WCHAR)); + if (!tsz) + return NULL; + if (!MultiByteToWideChar(iCp, 0, sz, cbMultiByte, tsz, cchWideChar)) + return NULL; +#else + tsz = malloc(strlen(sz)+1); + if (!tsz) + return NULL; + strcpy(tsz, sz); +#endif + + return tsz; +} + +int +Watched(int iEpisode) +{ + term_t t; + + t = PL_new_term_refs(1); + if (!PL_put_integer(t+0, iEpisode)) + return 0; + + return PL_call_predicate(NULL, PL_Q_NORMAL, + PL_predicate("watched", 1, "track_episodes"), + t); +} |