]> git.tdb.fi Git - libs/core.git/log
libs/core.git
5 years agoAdd a class for monitoring changes in files
Mikko Rasa [Sat, 21 Sep 2019 15:25:59 +0000 (18:25 +0300)]
Add a class for monitoring changes in files

5 years agoAdd a facility to automatically create backtraces for exceptions
Mikko Rasa [Tue, 17 Sep 2019 14:22:55 +0000 (17:22 +0300)]
Add a facility to automatically create backtraces for exceptions

Obtaining a backtrace in the catch block won't show where the exception
happened.  Hooking into the exception handler internals is necessary.
Because this is somewhat disruptive to the language runtime, it is an
optional feature and disabled by default.

5 years agoInvent a value for argv[0] if not present
Mikko Rasa [Sun, 9 Jun 2019 11:35:27 +0000 (14:35 +0300)]
Invent a value for argv[0] if not present

Gdbserver seems to pass an empty argv[0], at least on Windows.  That
causes problems with the various get_*_dir functions.

5 years agoFix formatted output operator detection in lexicalcast.h
Mikko Rasa [Mon, 3 Jun 2019 11:50:39 +0000 (14:50 +0300)]
Fix formatted output operator detection in lexicalcast.h

Since it was using a default-constructed value as part of the test
expression, it would fail to detect the operator for classes that are
not default-constructable.

5 years agoFormatting fixes
Mikko Rasa [Mon, 3 Jun 2019 11:36:37 +0000 (14:36 +0300)]
Formatting fixes

5 years agoFix references to deprecated functions
Mikko Rasa [Mon, 3 Jun 2019 11:31:17 +0000 (14:31 +0300)]
Fix references to deprecated functions

5 years agoAnnotate deprecated functions as such
Mikko Rasa [Mon, 3 Jun 2019 11:31:03 +0000 (14:31 +0300)]
Annotate deprecated functions as such

5 years agoAllow std::vector to be used for GetOpt value lists
Mikko Rasa [Mon, 3 Jun 2019 10:24:11 +0000 (13:24 +0300)]
Allow std::vector to be used for GetOpt value lists

5 years agoAdd a version of get_item that dynamic_casts the result
Mikko Rasa [Fri, 24 May 2019 16:58:39 +0000 (19:58 +0300)]
Add a version of get_item that dynamic_casts the result

5 years agoSimplify the SFINAE construct a bit
Mikko Rasa [Fri, 24 May 2019 16:57:22 +0000 (19:57 +0300)]
Simplify the SFINAE construct a bit

More of the common stuff is now stored in the helper struct.

5 years agoAdd a main() function for Windows
Mikko Rasa [Wed, 26 Dec 2018 22:38:04 +0000 (00:38 +0200)]
Add a main() function for Windows

Console applications (at least those compiled with MinGW) use it as the
entry point.  MinGW has a support library to use WinMain as entry point,
but that requires a hack in builder that causes trouble with applications
that have a main() of their own.

6 years agoActually pass sec_attr to CreateFile
Mikko Rasa [Fri, 6 Jul 2018 17:59:32 +0000 (20:59 +0300)]
Actually pass sec_attr to CreateFile

6 years agoMake sure all classes have sensible copy semantics
Mikko Rasa [Wed, 25 Apr 2018 10:16:55 +0000 (13:16 +0300)]
Make sure all classes have sensible copy semantics

They must either support copying or be derived from NonCopyable.

6 years agoAdd a NonCopyable utility base class
Mikko Rasa [Wed, 25 Apr 2018 10:15:43 +0000 (13:15 +0300)]
Add a NonCopyable utility base class

6 years agoUse nicer formatting for string keys in key_error
Mikko Rasa [Wed, 25 Apr 2018 10:06:00 +0000 (13:06 +0300)]
Use nicer formatting for string keys in key_error

6 years agoAdd whole-container versions of sort and stable_sort
Mikko Rasa [Sun, 25 Mar 2018 11:28:10 +0000 (14:28 +0300)]
Add whole-container versions of sort and stable_sort

6 years agoMark the functions in algorithm.h as inline
Mikko Rasa [Sun, 25 Mar 2018 11:20:30 +0000 (14:20 +0300)]
Mark the functions in algorithm.h as inline

6 years agoAdd a method to set autobase in Fmt
Mikko Rasa [Wed, 21 Feb 2018 17:29:43 +0000 (19:29 +0200)]
Add a method to set autobase in Fmt

6 years agoAdd stub implementations of the pure virtual functions to Asset
Mikko Rasa [Mon, 4 Dec 2017 14:28:15 +0000 (16:28 +0200)]
Add stub implementations of the pure virtual functions to Asset

6 years agoRemove test case for invalid Path iterator
Mikko Rasa [Sat, 2 Dec 2017 20:23:13 +0000 (22:23 +0200)]
Remove test case for invalid Path iterator

Path::Iterator now caches the current component and no longer throws when
dereferencing end().

6 years agoFix incorrect function name in an exception
Mikko Rasa [Sat, 2 Dec 2017 15:05:54 +0000 (17:05 +0200)]
Fix incorrect function name in an exception

6 years agoFix basename and dirname on an empty Path
Mikko Rasa [Sat, 2 Dec 2017 15:04:00 +0000 (17:04 +0200)]
Fix basename and dirname on an empty Path

6 years agoImplement controls for file descriptor inheritance
Mikko Rasa [Sat, 2 Dec 2017 15:03:10 +0000 (17:03 +0200)]
Implement controls for file descriptor inheritance

6 years agoFix mismatched fcntls in sys_set_blocking on unix
Mikko Rasa [Sat, 2 Dec 2017 14:44:48 +0000 (16:44 +0200)]
Fix mismatched fcntls in sys_set_blocking on unix

6 years agoMake certain functions pure virtual so I won't forget to implement them
Mikko Rasa [Sat, 2 Dec 2017 14:41:22 +0000 (16:41 +0200)]
Make certain functions pure virtual so I won't forget to implement them

6 years agoAdd missing get_handle function to Serial
Mikko Rasa [Sat, 2 Dec 2017 14:33:44 +0000 (16:33 +0200)]
Add missing get_handle function to Serial

6 years agoAdd a missing mode flag adjustment to Console::set_block
Mikko Rasa [Sat, 2 Dec 2017 14:32:33 +0000 (16:32 +0200)]
Add a missing mode flag adjustment to Console::set_block

6 years agoAdd a helper function for adjusting mode flags
Mikko Rasa [Sat, 2 Dec 2017 14:32:13 +0000 (16:32 +0200)]
Add a helper function for adjusting mode flags

7 years agoGuard against badly behaving get functions in getline
Mikko Rasa [Sun, 8 Jan 2017 11:59:57 +0000 (13:59 +0200)]
Guard against badly behaving get functions in getline

7 years agoReturn -1 from Slice::get at eof
Mikko Rasa [Sun, 8 Jan 2017 11:59:41 +0000 (13:59 +0200)]
Return -1 from Slice::get at eof

7 years agoPthread_setname_np is a GNU extension
Mikko Rasa [Fri, 6 Jan 2017 02:54:14 +0000 (04:54 +0200)]
Pthread_setname_np is a GNU extension

8 years agoAdd implementations of find and find_if that take a container
Mikko Rasa [Sat, 5 Nov 2016 11:28:12 +0000 (13:28 +0200)]
Add implementations of find and find_if that take a container

Rather than an iterator pair.  Searching through an entire container is
a very common use case.

8 years agoAdd integration between EventDispatcher and Timer
Mikko Rasa [Sun, 30 Oct 2016 15:15:40 +0000 (17:15 +0200)]
Add integration between EventDispatcher and Timer

8 years agoAdd a class for loading and accessing modules at runtime
Mikko Rasa [Sat, 29 Oct 2016 16:43:42 +0000 (19:43 +0300)]
Add a class for loading and accessing modules at runtime

8 years agoAdd microsecond precision to RFC 3339 dates
Mikko Rasa [Fri, 28 Oct 2016 21:41:01 +0000 (00:41 +0300)]
Add microsecond precision to RFC 3339 dates

8 years agoAdd a construct to create conditional RAII objects
Mikko Rasa [Fri, 28 Oct 2016 11:24:40 +0000 (14:24 +0300)]
Add a construct to create conditional RAII objects

8 years agoUse the correct unit of time for WaitForSingleObject
Mikko Rasa [Tue, 20 Sep 2016 00:40:46 +0000 (03:40 +0300)]
Use the correct unit of time for WaitForSingleObject

8 years agoUse a different diagnostic pragma for recent GCC versions
Mikko Rasa [Fri, 2 Sep 2016 22:10:07 +0000 (01:10 +0300)]
Use a different diagnostic pragma for recent GCC versions

8 years agoFix an incorrect comparison
Mikko Rasa [Sun, 14 Aug 2016 18:46:42 +0000 (21:46 +0300)]
Fix an incorrect comparison

8 years agoUse variadic templates for format and print functions if available
Mikko Rasa [Tue, 2 Aug 2016 09:16:25 +0000 (12:16 +0300)]
Use variadic templates for format and print functions if available

8 years agoMerge agouti:prog/core
Mikko Rasa [Wed, 27 Jul 2016 15:49:16 +0000 (18:49 +0300)]
Merge agouti:prog/core

8 years agoAdd conversion from RFC3339 string to DateTime
Mikko Rasa [Sun, 24 Jul 2016 14:24:01 +0000 (17:24 +0300)]
Add conversion from RFC3339 string to DateTime

8 years agoRemove an outdated comment
Mikko Rasa [Wed, 20 Jul 2016 23:51:09 +0000 (02:51 +0300)]
Remove an outdated comment

8 years agoAdd an interface for naming threads
Mikko Rasa [Wed, 20 Jul 2016 23:50:56 +0000 (02:50 +0300)]
Add an interface for naming threads

8 years agoMake Mutex non-copyable
Mikko Rasa [Tue, 14 Jun 2016 05:13:20 +0000 (08:13 +0300)]
Make Mutex non-copyable

8 years agoUse #ifdef _WIN32 rather than WIN32
Mikko Rasa [Tue, 14 Jun 2016 05:04:42 +0000 (08:04 +0300)]
Use #ifdef _WIN32 rather than WIN32

It is the proper compiler-defined macro to use.  WIN32 is defined by SDK
headers and may not appear in all cases.

8 years agoUse Core Foundation to discover standard locations on OS X
Mikko Rasa [Sun, 31 Jan 2016 15:29:52 +0000 (17:29 +0200)]
Use Core Foundation to discover standard locations on OS X

8 years agoAdd a missing #include
Mikko Rasa [Sun, 31 Jan 2016 15:28:08 +0000 (17:28 +0200)]
Add a missing #include

8 years agoProvide access to the Java VM on Android
Mikko Rasa [Sun, 31 Jan 2016 15:20:54 +0000 (17:20 +0200)]
Provide access to the Java VM on Android

8 years agoDisallow negative timeouts for Timer::tick
Mikko Rasa [Sun, 31 Jan 2016 15:20:36 +0000 (17:20 +0200)]
Disallow negative timeouts for Timer::tick

8 years agoSplit Timer::tick into two overloads
Mikko Rasa [Fri, 25 Dec 2015 10:16:47 +0000 (12:16 +0200)]
Split Timer::tick into two overloads

This is in line with other similar interfaces, such as Poller and
Semaphore.  The old function still exists but is deprecated.

8 years agoRefactor Timer::tick
Mikko Rasa [Fri, 25 Dec 2015 10:13:57 +0000 (12:13 +0200)]
Refactor Timer::tick

The previous version had some bugs: the blocking flag was not reset and
it might have tried to execute a canceled (and thus deleted) slot.

9 years agoHack to make 64-bit seeks work on Android
Mikko Rasa [Thu, 19 Nov 2015 16:49:52 +0000 (18:49 +0200)]
Hack to make 64-bit seeks work on Android

9 years agoFix end-of-file detection in Slice
Mikko Rasa [Mon, 7 Sep 2015 09:25:48 +0000 (12:25 +0300)]
Fix end-of-file detection in Slice

Prepare_op was incorrectly adding start_offset to the remaining length.

9 years agoMake fix_case to work with relative paths
Mikko Rasa [Sun, 26 Jul 2015 16:58:38 +0000 (19:58 +0300)]
Make fix_case to work with relative paths

9 years agoAdd negation operator and abs function for TimeDelta
Mikko Rasa [Sun, 26 Jul 2015 16:57:58 +0000 (19:57 +0300)]
Add negation operator and abs function for TimeDelta

9 years agoInclude filename in errors from stat
Mikko Rasa [Tue, 7 Apr 2015 11:05:12 +0000 (14:05 +0300)]
Include filename in errors from stat

10 years agoExpose window flags and set fullscreen mode by default
Mikko Rasa [Thu, 13 Nov 2014 20:46:48 +0000 (22:46 +0200)]
Expose window flags and set fullscreen mode by default

I'll likely change the default once I figure out a good way to add
fullscreen support to libmspgui on Android.

10 years agoMove the generic file-based Asset implementation to a generic directory
Mikko Rasa [Thu, 13 Nov 2014 20:46:14 +0000 (22:46 +0200)]
Move the generic file-based Asset implementation to a generic directory

10 years agoTerminate the process when the application has finished running
Mikko Rasa [Thu, 13 Nov 2014 20:44:51 +0000 (22:44 +0200)]
Terminate the process when the application has finished running

Otherwise the OS may try to start the activity again in the same process,
which doesn't work because of Application::run semantics.

10 years agoChdir into a sensible location before starting the application
Mikko Rasa [Wed, 12 Nov 2014 20:22:15 +0000 (22:22 +0200)]
Chdir into a sensible location before starting the application

System location accessors will ultimately return this directory.  The
default is /, which can easily cause problems.  In particular, many of
my applications expect to have their data in get_sys_data_dir()/"data".
On Android /data exists but is not readable.

10 years agoHave get_user_data_dir return a proper location on Android
Mikko Rasa [Wed, 12 Nov 2014 20:21:36 +0000 (22:21 +0200)]
Have get_user_data_dir return a proper location on Android

10 years agoSplit getcwd and chdir to platform files
Mikko Rasa [Wed, 12 Nov 2014 20:10:25 +0000 (22:10 +0200)]
Split getcwd and chdir to platform files

10 years agoDeprecate the system directory accessors that take arguments
Mikko Rasa [Mon, 10 Nov 2014 17:32:54 +0000 (19:32 +0200)]
Deprecate the system directory accessors that take arguments

They are fundamentally broken due to their dependence on cwd and $PATH,
which may be changed after application startup.  Now that Application
stores an absolute argv0, the argument-less versions can provide a more
consistent answer.

Implementations for the functions are still the same, as they behave
correctly when an absolute argv0 is passed in.  At some point in the
future I'll remove the old versions completely.

10 years agoFix an infinite recursion bug
Mikko Rasa [Mon, 10 Nov 2014 17:32:41 +0000 (19:32 +0200)]
Fix an infinite recursion bug

10 years agoStore absolute path to argv[0] in Application
Mikko Rasa [Mon, 10 Nov 2014 17:29:11 +0000 (19:29 +0200)]
Store absolute path to argv[0] in Application

Working directory or $PATH may be changed by the program, so it may not
be possible to recover the executable later.  It's still not completely
reliable since the parent process can pass any value for argv[0] through
execve().

10 years agoAllow startup info to be set externally
Mikko Rasa [Mon, 10 Nov 2014 17:25:19 +0000 (19:25 +0200)]
Allow startup info to be set externally

... but only if startup didn't happen through Application::run().  Certain
facilities, like Graphics::Display on Windows, require startup info to be
set and would not work without this in a custom startup scenario.

10 years agoAdd a class for accessing applications assets
Mikko Rasa [Sun, 19 Oct 2014 22:34:17 +0000 (01:34 +0300)]
Add a class for accessing applications assets

10 years agoZero-arguments overloads and better error checking for get*dir functions
Mikko Rasa [Sun, 19 Oct 2014 22:27:10 +0000 (01:27 +0300)]
Zero-arguments overloads and better error checking for get*dir functions

10 years agoStore argv0 and application name in the Application class
Mikko Rasa [Sun, 19 Oct 2014 22:24:43 +0000 (01:24 +0300)]
Store argv0 and application name in the Application class

It can get quite annoying having to pass them around to be fed to the
standard path retrieval functions.

10 years agoExpose the asset manager from Android::MainThread
Mikko Rasa [Sun, 19 Oct 2014 17:23:02 +0000 (20:23 +0300)]
Expose the asset manager from Android::MainThread

AFAICT the asset manager is tied to the application and not the activity,
so this simple approach should be safe even if the activity gets destroyed
and recreated due to orientation change or whatever.

10 years agoSynchronize access to the underlying object of Slice
Mikko Rasa [Sun, 19 Oct 2014 13:33:01 +0000 (16:33 +0300)]
Synchronize access to the underlying object of Slice

This was prompted by the interactions between GL::ResourceManager and
some upcoming changes to DataFile::PackSource.  If a new Slice object is
created and tries to connect to signal_flush_required at the exact moment
another Slice is seeking and causing the signal to be emitted, the emit
and connect calls step on each others' toes and corrupt the heap.

10 years agoDerive Slice from sigc::trackable as it connects to external signals
Mikko Rasa [Sun, 19 Oct 2014 09:20:59 +0000 (12:20 +0300)]
Derive Slice from sigc::trackable as it connects to external signals

10 years agoDeal with the activity being recreated during process lifetime
Mikko Rasa [Sun, 12 Oct 2014 15:27:43 +0000 (18:27 +0300)]
Deal with the activity being recreated during process lifetime

This can happen if e.g. screen orientation changes.

10 years agoAdd window and input management signals for Android
Mikko Rasa [Sun, 12 Oct 2014 11:35:05 +0000 (14:35 +0300)]
Add window and input management signals for Android

The onCreate handler will now wait until either the main Application
object is constructed or the MainThread's resume_startup function is
called.  This ensures that the application (or a library such as mspgui)
can connect to the signals before they are emitted.

10 years agoMinimalistic port for Android
Mikko Rasa [Sat, 11 Oct 2014 10:32:23 +0000 (13:32 +0300)]
Minimalistic port for Android

Application startup through NativeActivity is provided and uncaught
exceptions are logged.  A number of things are still in need of proper
implementations.

10 years agoMove OS X main function to an overlay
Mikko Rasa [Fri, 10 Oct 2014 19:59:42 +0000 (22:59 +0300)]
Move OS X main function to an overlay

10 years agoSilence clang's complaints about unused private members
Mikko Rasa [Mon, 6 Oct 2014 22:30:39 +0000 (01:30 +0300)]
Silence clang's complaints about unused private members

10 years agoMake FS::Path::Iterator meet forward iterator requirements
Mikko Rasa [Sun, 5 Oct 2014 18:20:48 +0000 (21:20 +0300)]
Make FS::Path::Iterator meet forward iterator requirements

10 years agoUse direct constant values for non-POSIX baud rates
Mikko Rasa [Sun, 5 Oct 2014 10:48:57 +0000 (13:48 +0300)]
Use direct constant values for non-POSIX baud rates

Not all systems (particularly older ones) have #defines for the extended
baud rates, and the standard doesn't provide anything to check their
existence either.

10 years agoAdd a missing include
Mikko Rasa [Sun, 5 Oct 2014 10:48:15 +0000 (13:48 +0300)]
Add a missing include

10 years agoAdditional baud rates from termios.h
Mikko Rasa [Fri, 27 Jun 2014 16:02:13 +0000 (19:02 +0300)]
Additional baud rates from termios.h

10 years agoChange get_bin_dir logic to assume exe in cwd if not otherwise found
Mikko Rasa [Mon, 6 Jan 2014 19:55:30 +0000 (21:55 +0200)]
Change get_bin_dir logic to assume exe in cwd if not otherwise found

Windows has an implicit . component in $PATH, which can cause programs
started from command line to not find their executable in $PATH.  This
fixes the issue, and should not cause undue trouble on other systems.

10 years agoWindows uses ; as separator in $PATH
Mikko Rasa [Mon, 6 Jan 2014 19:53:25 +0000 (21:53 +0200)]
Windows uses ; as separator in $PATH

11 years agoAdd RAII class for atomic overwrites
Mikko Rasa [Mon, 18 Nov 2013 14:41:26 +0000 (16:41 +0200)]
Add RAII class for atomic overwrites

11 years agoRemove a useless const qualifier
Mikko Rasa [Wed, 6 Nov 2013 09:24:51 +0000 (11:24 +0200)]
Remove a useless const qualifier

11 years agoAdd a function to remove an item from a map, checking for existence
Mikko Rasa [Wed, 6 Nov 2013 09:23:31 +0000 (11:23 +0200)]
Add a function to remove an item from a map, checking for existence

11 years agoSet exists to true if the file was found
Mikko Rasa [Wed, 16 Oct 2013 18:13:16 +0000 (21:13 +0300)]
Set exists to true if the file was found

11 years agoMove Handle::operator void * to the common part
Mikko Rasa [Tue, 15 Oct 2013 12:46:38 +0000 (15:46 +0300)]
Move Handle::operator void * to the common part

11 years agoAvoid closing handles twice
Mikko Rasa [Tue, 15 Oct 2013 12:45:59 +0000 (15:45 +0300)]
Avoid closing handles twice

11 years agoAllow setting a pipe read-only or write-only after creation
Mikko Rasa [Tue, 15 Oct 2013 11:53:04 +0000 (14:53 +0300)]
Allow setting a pipe read-only or write-only after creation

This is useful for handing the pipe to a child process and then closing
the unused end so an end-of-file event can be properly received.

11 years agoInterpret POLLHUP as end-of-file
Mikko Rasa [Tue, 15 Oct 2013 11:51:52 +0000 (14:51 +0300)]
Interpret POLLHUP as end-of-file

11 years agoAdd a Process class for running and interfacing with other programs
Mikko Rasa [Mon, 14 Oct 2013 19:23:11 +0000 (22:23 +0300)]
Add a Process class for running and interfacing with other programs

11 years agoAdd get_handle to Console
Mikko Rasa [Mon, 14 Oct 2013 19:19:16 +0000 (22:19 +0300)]
Add get_handle to Console

This is needed to e.g. redirect cerr to cout.

11 years agoThrow an exception in list_files if the directory can't be opened
Mikko Rasa [Sun, 13 Oct 2013 22:06:03 +0000 (01:06 +0300)]
Throw an exception in list_files if the directory can't be opened

11 years agoRewrite BufferedFile as a standalone class
Mikko Rasa [Mon, 7 Oct 2013 16:36:04 +0000 (19:36 +0300)]
Rewrite BufferedFile as a standalone class

The generic Filtered template is unable to account for the complexities of
buffering a seekable object.  In particular, relative seeks were broken.

I may revisit the template form at a later date if I come up with a
workable design.  For now its use is discouraged.

11 years agoBetter method of preventing duplicate applications
Mikko Rasa [Sat, 5 Oct 2013 12:15:07 +0000 (15:15 +0300)]
Better method of preventing duplicate applications

Application::run can now be called multiple times, but not recursively.

11 years agoRedesign uncaught exception handling to allow external reporters
Mikko Rasa [Sat, 5 Oct 2013 12:12:35 +0000 (15:12 +0300)]
Redesign uncaught exception handling to allow external reporters

This helps keep UI code out of the core library.  It was becoming a
problem especially on OS X where including an Objective-C wrapper around
NSAlert would have broken Builder's bootstrap.  Libmspgui will acquire
a class that will present graphical error dialogs on each platform.

11 years agoUpdate .gitignore
Mikko Rasa [Fri, 4 Oct 2013 21:45:40 +0000 (00:45 +0300)]
Update .gitignore

11 years agoOS X tweaks
Mikko Rasa [Fri, 4 Oct 2013 21:44:41 +0000 (00:44 +0300)]
OS X tweaks