aboutsummaryrefslogtreecommitdiff
path: root/c/common.cpp
AgeCommit message (Collapse)Author
2022-08-03Split common.h to util.h, wcharptr.h and win.h.John Ankarström
2022-08-03Minor improvements.John Ankarström
2022-08-02Improve wstring_owner, rename to wchar_ptr.John Ankarström
The user-defined conversion function makes the interface a lot simpler AND safer.
2022-08-02Replace maybe_make.John Ankarström
It seems unnecessary to throw exceptions when simply checking whether a library exists.
2022-08-02Implement draggable split.John Ankarström
Next step is to allow a double click to reset the split to be automatically resized.
2022-07-31Make WsoFromSz and WsoCopy static member functions of wstring_owner.John Ankarström
2022-07-31Limit use of Hungarian notation.John Ankarström
I don't hate Hungarian notation. It has some very nice qualities. But it also adds a lot of typing. That said, not using it feels a bit... unsafe. I might go back on this decision. We'll see.
2022-07-31Simplify exception handling.John Ankarström
2022-07-31Move EBMessageBox's CBTProc into lambda.John Ankarström
2022-07-30Add wstring_owner, replacing std::wstring.John Ankarström
std::basic_string is nice, but it is not very ergonomic if everything you really need is to automatically free C strings at end of scope. I suppose I could have used std::unique_ptr for this, but I suspect the ergonomics would be worse.
2022-07-26Use 's' instead of 'str' for as prefix for managed strings.John Ankarström
2022-07-26Remove ANSI compatibility.John Ankarström
Even though it is a fun challange in many ways, I think that, realistically, it is probably not worth the complexity. The Prolog backend isn't ANSI-compatible either.
2022-07-26Improve Win32Error, library handling code.John Ankarström
2022-07-23Fix display of Unicode text.John Ankarström
Turns out that SWI-Prolog's wide string functions, which I started using in 03fe361, do not convert between narrow Prolog atoms and wide C strings, as I mistakenly thought. Instead, they work with wide Prolog atoms. In hindsight, it is not surprising.
2022-07-20Simplify require, prefer.John Ankarström
2022-07-20Use GetLastError() as default for Win32Error.John Ankarström
2022-07-20Use template instead of Win32Error::twhat.John Ankarström
2022-07-20Fix bug in and rename throw_nil, warn_nil.John Ankarström
In warn_nil, the return value was undefined on exception -- I think. While informative, the names throw_nil and warn_nil don't work very well in conditionals: if (warn_nil<f>(...)) g(); sounds like g should be called if f returns nil and a warning is issued. But it is actually the other way around; g is called if f is successful. if (prefer<f>(...)) g(); sounds less like that.
2022-07-19Check Windows API calls for errors more consistently.John Ankarström
Some of the checks are likely redundant, but the Windows API documentation rarely makes it clear WHICH errors may be returned (and under which circumstances) rather than simply WHETHER errors may be returned (under any circumstances, including those that do not apply in the given case).
2022-07-19Formatting.John Ankarström
2022-07-19Add comments.John Ankarström
2022-07-19Remove EBMessageBoxA.John Ankarström
2022-07-19Implement centered message box.John Ankarström
2022-07-18Improve 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-18Solve compiler warnings.John Ankarström
2022-07-18Add Unicode support to Win32Error.John Ankarström
2022-07-17Prefer f() over f(void).John Ankarström
f(void) is a C-ism that is valid but unnecessary in C++.
2022-07-17Update type names and variable prefixes.John Ankarström
2022-07-17Add const to pointers, update spacing.John Ankarström
It seems that "right-spaced" pointers are more widely used among C++ programmers.
2022-07-17Add 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-17Remove TsmFromSz.John Ankarström
If needed in the future, it is possible to simply copy it from the Git history.
2022-07-16Rewrite TszFromSz as TsmFromSz.John Ankarström
I.e. using std::basic_string<TCHAR> instead of TCHAR *. This removes all unmanaged frees.
2022-07-15Split 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-15Add Win32Error exception class.John Ankarström
2022-07-15Add support for Prolog exceptions.John Ankarström
2022-07-15Replace Library::Load with try_make_unique template.John Ankarström
2022-07-15Change declaration style.John Ankarström
2022-07-15Add wrapper for LoadLibrary, FreeLibrary.John Ankarström
2022-07-10Convert to C++.John Ankarström
I already hit upon some object-oriented programming patterns in *listview.c, so I felt that it would be natural to use this as an opportunity to learn C++.