Age | Commit message (Collapse) | Author | |
---|---|---|---|
2022-07-19 | Fix Prolog memory leaks. | John Ankarström | |
Apparently foreign frames ARE needed when calling Prolog from C. The official documentation is very terse and could make this clearer. To summarize, whenever a term is created (e.g., PL_new_term_refs), its reference count is increased by one. It is garbage-collected when its reference count hits zero. But the reference count is never decreased unless (a) control returns to Prolog after executing a foreign predicate -- which does not happen in my application -- or (b) the foreign frame in which the term was created is closed. In other words, terms must be created within a foreign frame. This is achieved by initializing a Frame object before creating the term and destroying it once the term has served its purpose. The destructor for Frame does not DISCARD the frame, only CLOSE it. The former would also invalidate all data bound by the terms, which is usually undesirable. | |||
2022-07-19 | Implement centered message box. | John Ankarström | |
2022-07-18 | Improve Library::GetProcAddress. | John Ankarström | |
It isn't really more safe, but it removes the need for a confusing function pointer cast, which is easy to get wrong. As far as the compiler is concerned, the result is literally the same, but it does force the caller to (indirectly, via the template parameter) cast the return value, which may be a good thing. | |||
2022-07-18 | Solve compiler warnings. | John Ankarström | |
2022-07-18 | Add Unicode support to Win32Error. | John Ankarström | |
2022-07-18 | Improve exception message. | John Ankarström | |
2022-07-18 | Fix typo. | John Ankarström | |
2022-07-18 | Formatting. | John Ankarström | |
2022-07-18 | Avoid leak in Prolog interface. | John Ankarström | |
PL_new_atom(_wchars) creates an atom with a reference count of one, which is never decreased, and the atom is thus never garbage collected. | |||
2022-07-18 | Fix 26bc4109. | John Ankarström | |
Apparently, = {0} does not zero a structure in C++. | |||
2022-07-18 | Ensure that CBT hook is set and unset correctly. | John Ankarström | |
2022-07-18 | Use -O2 instead of -O. | John Ankarström | |
2022-07-18 | Makefile: Add assembly target. | John Ankarström | |
2022-07-17 | Prefer f() over f(void). | John Ankarström | |
f(void) is a C-ism that is valid but unnecessary in C++. | |||
2022-07-17 | Make ListView hWnd public. | John Ankarström | |
A getter offers encapsulation, but it is also less transparent in a sense. Thinking of ListView as a struct, it is natural to expose hWnd as a public member variable. | |||
2022-07-17 | Update type names and variable prefixes. | John Ankarström | |
2022-07-17 | Name function arguments in headers. | John Ankarström | |
This is obviously a lot less obtuse. | |||
2022-07-17 | Add const to pointers, update spacing. | John Ankarström | |
It seems that "right-spaced" pointers are more widely used among C++ programmers. | |||
2022-07-17 | Add const to places. | John Ankarström | |
Note that I did NOT add const to non-pointer/non-reference arguments in function declarations (without a following definition), as they do not mean anything there. | |||
2022-07-17 | Remove TsmFromSz. | John Ankarström | |
If needed in the future, it is possible to simply copy it from the Git history. | |||
2022-07-17 | Use SWI-Prolog's wide-character functions. | John Ankarström | |
This avoids the use of TsmFromSz. | |||
2022-07-17 | makedeps: Fix regular expression. | John Ankarström | |
2022-07-16 | Formatting. | John Ankarström | |
2022-07-16 | README: Add information about Hungarian notation. | John Ankarström | |
2022-07-16 | Rewrite TszFromSz as TsmFromSz. | John Ankarström | |
I.e. using std::basic_string<TCHAR> instead of TCHAR *. This removes all unmanaged frees. | |||
2022-07-16 | Add m_hWndParent to ListView. | John Ankarström | |
This avoids g_hWnd. | |||
2022-07-16 | Ensure c++-mode is used in header files. | John Ankarström | |
2022-07-15 | Makefile: Make deps.mk silently. | John Ankarström | |
2022-07-15 | Add showdeps script. | John Ankarström | |
2022-07-15 | Split defs.h into separate header files. | John Ankarström | |
This is feasible now that the makedeps script exists to automatically manage build dependencies (see 6034fe2, d00f8b3). | |||
2022-07-15 | README: Add build instructions. | John Ankarström | |
2022-07-15 | Fix typo. | John Ankarström | |
2022-07-15 | Improve makedeps script. | John Ankarström | |
2022-07-15 | Add Win32Error exception class. | John Ankarström | |
2022-07-15 | Update README. | John Ankarström | |
2022-07-15 | Add makedeps.pl. | John Ankarström | |
2022-07-15 | Show error and exit gracefully on uncaught exception. | John Ankarström | |
2022-07-15 | Add support for Prolog exceptions. | John Ankarström | |
2022-07-15 | Use C++17 for Flycheck. | John Ankarström | |
2022-07-15 | Use std::optional instead of std::unique_ptr for try_make. | John Ankarström | |
This requires C++17. | |||
2022-07-15 | Replace Library::Load with try_make_unique template. | John Ankarström | |
2022-07-15 | Don't crash on Prolog exceptions. | John Ankarström | |
In the future, it may be desirable to convert Prolog exceptions to C++ exceptions. | |||
2022-07-15 | Reimplement Pl with variadic templates | John Ankarström | |
This is a bit safer and about as complex. | |||
2022-07-15 | Change declaration style. | John Ankarström | |
2022-07-15 | Add wrapper for LoadLibrary, FreeLibrary. | John Ankarström | |
2022-07-14 | Add pl.cpp to README. | John Ankarström | |
2022-07-14 | Makefile: Fix main target. | John Ankarström | |
2022-07-14 | Code style. | John Ankarström | |
2022-07-14 | Pass WM_DESTROY to ListView::WndProc. | John Ankarström | |
On WM_DESTROY, the "this" property was removed before it could be retrieved and dereferenced, making it impossible for WM_DESTROY messages to be passed to the WndProc method. | |||
2022-07-14 | Prevent rating column from being invisible. | John Ankarström | |
Bug introduced in 26f70ab. DataListView was initialized with g_iDPI set to -1, which is obviously incorrect. The default value of -1 is a remnant of earlier code and is no longer necessary. |