]>
git.tdb.fi Git - libs/datafile.git/log
Mikko Rasa [Mon, 7 Dec 2015 19:01:13 +0000 (21:01 +0200)]
Store offsets and sizes in PackSource as 64-bit ints
Mikko Rasa [Tue, 24 Nov 2015 20:19:06 +0000 (22:19 +0200)]
Add a getter for fallback in Collection
Mikko Rasa [Wed, 18 Nov 2015 20:45:18 +0000 (22:45 +0200)]
Use const sources in Collection
The CollectionSource interface is entirely const anyway.
Mikko Rasa [Sat, 14 Nov 2015 17:05:03 +0000 (19:05 +0200)]
Chain get_status to fallback collection if one is defined
Mikko Rasa [Fri, 13 Nov 2015 08:53:35 +0000 (10:53 +0200)]
Remove the loaded flag from PackSource files
It seems to be a relic from ancient times. It also causes problems in
certain situations where it's desirable to remove and reload items.
Mikko Rasa [Mon, 7 Sep 2015 09:26:58 +0000 (12:26 +0300)]
Add an unpack option to the data tool
Mikko Rasa [Sat, 7 Mar 2015 02:07:09 +0000 (04:07 +0200)]
Plug a memory leak
Mikko Rasa [Fri, 19 Dec 2014 03:34:44 +0000 (05:34 +0200)]
Accept int-to-float conversion in array signature
Mikko Rasa [Mon, 10 Nov 2014 17:47:56 +0000 (19:47 +0200)]
Add version of add_pack_io with filter
Mikko Rasa [Sun, 19 Oct 2014 17:33:05 +0000 (20:33 +0300)]
Support adding packs from IO::Seekable objects
This allows using any seekable objects as packs, such as Android assets.
Mikko Rasa [Sun, 19 Oct 2014 13:00:27 +0000 (16:00 +0300)]
Provide help for datatool's command line options
Also use add_argument instead of the deprecated get_args.
Mikko Rasa [Sun, 19 Oct 2014 08:58:00 +0000 (11:58 +0300)]
More resiliece against certain corner cases when direct loading
An empty binary file terminated with __end was causing problems as the
very first peek call would return null, causing Loader to fall back to
indirect loading. However, the __end was already processed by peek, so
the parse call would fail.
Mikko Rasa [Wed, 15 Oct 2014 18:22:07 +0000 (21:22 +0300)]
Make Loader a virtual base of ObjectLoader to permit diamond inheritance
Useful when creating loader classes through composition.
Mikko Rasa [Sun, 5 Oct 2014 18:21:51 +0000 (21:21 +0300)]
Fix a class/struct inconsistency
Mikko Rasa [Sun, 5 Oct 2014 11:54:14 +0000 (14:54 +0300)]
Require sigc++-2.0 since PackSource uses it
The signal connection may be refactored into libmspcore in the future,
but it's required here for now.
Mikko Rasa [Sun, 5 Oct 2014 01:50:48 +0000 (04:50 +0300)]
Add a flag to control replacement of DirectorySource entries
Mikko Rasa [Sun, 20 Apr 2014 09:53:33 +0000 (12:53 +0300)]
Use dynamic_cast to support Collection as virtual base class
Mikko Rasa [Thu, 19 Dec 2013 21:58:53 +0000 (23:58 +0200)]
Fix logic problems when ignoring a statement in the middle of direct load
Each recursive call to parse() was subtracting one from sub_remaining,
causing it to get out of sync with the actual statement hierarchy.
Mikko Rasa [Tue, 17 Dec 2013 01:01:06 +0000 (03:01 +0200)]
Detect eof from the parser, not input file
Some files have an embedded logical eof, so waiting for the end of the
physical file would (and did) cause an infinite loop.
Mikko Rasa [Sat, 12 Oct 2013 17:10:45 +0000 (20:10 +0300)]
Expose raw open functionality from Collection
There are several scenarios where streaming or asynchronous loading is
useful.
Mikko Rasa [Sat, 12 Oct 2013 15:55:33 +0000 (18:55 +0300)]
Invoke creators from get_list
Mikko Rasa [Sat, 12 Oct 2013 15:21:30 +0000 (18:21 +0300)]
Avoid duplicate names if an item is available from multiple sources
Mikko Rasa [Thu, 5 Sep 2013 14:53:35 +0000 (17:53 +0300)]
Export file metadata from PackSource
Mikko Rasa [Mon, 19 Aug 2013 14:00:11 +0000 (17:00 +0300)]
Don't forget to initialize the control statement flag
Mikko Rasa [Mon, 5 Aug 2013 11:56:26 +0000 (14:56 +0300)]
More efficient way of loading binary files
The Variant array for storing arguments in Statement is too slow. Bypass
it by passing args directly to the action in a sort of ad-hoc struct.
Mikko Rasa [Mon, 5 Aug 2013 09:32:43 +0000 (12:32 +0300)]
Move newline eating out of BinaryParser
It's really a feature of the mode change logic, not the binary mode
itself.
Mikko Rasa [Mon, 5 Aug 2013 09:19:31 +0000 (12:19 +0300)]
Restructure control statement processing
Binary format control statements can no longer occur as substatements, but
that was an accidental feature at best.
Mikko Rasa [Sat, 3 Aug 2013 12:24:01 +0000 (15:24 +0300)]
Replace local RAII set utility with one from mspcore
Mikko Rasa [Sat, 3 Aug 2013 12:14:11 +0000 (15:14 +0300)]
Use a common StatementKey structure for Loader and BinaryParser/Writer
Mikko Rasa [Sun, 16 Jun 2013 08:25:58 +0000 (11:25 +0300)]
Consider full statement signature when dealing with auxiliary loaders
Mikko Rasa [Sat, 15 Jun 2013 20:22:23 +0000 (23:22 +0300)]
Add a way to combine multiple loaders
Mikko Rasa [Sat, 15 Jun 2013 20:10:12 +0000 (23:10 +0300)]
Add a two-argument constructor to DerivedObjectLoader
Mikko Rasa [Fri, 24 May 2013 14:47:03 +0000 (17:47 +0300)]
Use correct keyword in forward declaration
clang isn't happy if a struct is forward declared as a class, even though
they are semantically equivalent in that context.
Mikko Rasa [Fri, 24 May 2013 14:46:20 +0000 (17:46 +0300)]
Add accessors for data_error members
Mikko Rasa [Sat, 13 Apr 2013 12:57:11 +0000 (15:57 +0300)]
Add ability to put raw files in a pack
Mikko Rasa [Tue, 26 Mar 2013 20:37:37 +0000 (22:37 +0200)]
Miscellaneous cleanups
Mikko Rasa [Tue, 26 Mar 2013 20:37:08 +0000 (22:37 +0200)]
Use the Sfinae helper struct from mspcore
Mikko Rasa [Tue, 26 Mar 2013 20:36:17 +0000 (22:36 +0200)]
Comment improvements
Mikko Rasa [Tue, 26 Mar 2013 20:15:19 +0000 (22:15 +0200)]
Return null instead of throwing if a file is not found in sources
The primary use case for open_from_sources is for creator functions to
open raw files. This change makes it easier to gracefully skip a non-
existent file and carry on with other ways of loading the item.
Mikko Rasa [Wed, 16 Jan 2013 14:05:38 +0000 (16:05 +0200)]
Add a virtual destructor to CollectionSource
Mikko Rasa [Wed, 16 Jan 2013 14:01:28 +0000 (16:01 +0200)]
Add an API to open files from a collection's sources
Mikko Rasa [Sat, 5 Jan 2013 11:03:59 +0000 (13:03 +0200)]
Use IO::Slice to constrain access to logical files
Mikko Rasa [Sat, 5 Jan 2013 09:40:42 +0000 (11:40 +0200)]
Pass mode to ZlibCompressed
This makes creating compressed packs work. The temporary file is opened
with M_RDWR because we want to read the data back from the same handle, so
ZlibCompressed can't autodetect the mode.
Mikko Rasa [Fri, 4 Jan 2013 17:29:58 +0000 (19:29 +0200)]
Add a method to filter the files loaded from a pack
Mikko Rasa [Fri, 7 Dec 2012 10:28:15 +0000 (12:28 +0200)]
Add support for fallback collections
Mikko Rasa [Thu, 6 Dec 2012 21:44:11 +0000 (23:44 +0200)]
Some minor fixes in Collection
Move RemoveConst invovations close to the public interface to reduce the
number of template function instantiations.
Correct access specifiers.
Mikko Rasa [Wed, 5 Dec 2012 19:16:00 +0000 (21:16 +0200)]
Rework the list and containment queries
Most of the implementations are now in .cpp, and they should deal better
with base classes.
Mikko Rasa [Wed, 5 Dec 2012 16:57:28 +0000 (18:57 +0200)]
Add some new test cases for Collection
Failures will be fixed a bit later.
Mikko Rasa [Tue, 4 Dec 2012 10:28:24 +0000 (12:28 +0200)]
Restore the check to avoid deletion if an add call fails
It was lost to a careless rewrite in
b1bc256 .
Mikko Rasa [Tue, 4 Dec 2012 09:08:11 +0000 (11:08 +0200)]
Update Collection test cases with source and base class changes
Mikko Rasa [Tue, 4 Dec 2012 08:32:43 +0000 (10:32 +0200)]
More flexible system for handling base classes in Collection
Items are now stored with their original type, but can be retrieved with
a base class as well.
Mikko Rasa [Mon, 3 Dec 2012 21:58:06 +0000 (23:58 +0200)]
Turn internal type helpers into structs
Eliminating access specifiers and dummy constructors reduces clutter, and
in most cases pure virtual functions prevent instantiation anyway. Since
these reside in private or protected sections of other classes, risk of
misuse is negligible.
Mikko Rasa [Mon, 3 Dec 2012 21:20:02 +0000 (23:20 +0200)]
Move most of Collection::get implementation to collection.cpp
Mikko Rasa [Sat, 1 Dec 2012 09:45:04 +0000 (11:45 +0200)]
Use an Fmt object to store the float format
Mikko Rasa [Sat, 1 Dec 2012 09:32:19 +0000 (11:32 +0200)]
Add the target type to lexical_cast invocations
Mikko Rasa [Thu, 15 Nov 2012 21:25:59 +0000 (23:25 +0200)]
Cache filenames in DirectorySource
Mikko Rasa [Thu, 15 Nov 2012 21:03:43 +0000 (23:03 +0200)]
Simplify DirectorySource path management
Mikko Rasa [Thu, 15 Nov 2012 19:04:09 +0000 (21:04 +0200)]
Redesign automatic object loading
Replace the Collection subclasses with a new concept of CollectionSources.
This permits more than one way of loading objects.
Mikko Rasa [Sun, 4 Nov 2012 19:15:40 +0000 (21:15 +0200)]
Fix comment handling
A comment start sequence inside another comment should not change the
comment type.
Mikko Rasa [Sun, 4 Nov 2012 19:15:02 +0000 (21:15 +0200)]
Add a test case for comments
Mikko Rasa [Fri, 28 Sep 2012 23:34:47 +0000 (02:34 +0300)]
Add an intelligent packed collection class
Mikko Rasa [Fri, 28 Sep 2012 23:01:34 +0000 (02:01 +0300)]
Throw an exception if a future object couldn't be created
Mikko Rasa [Fri, 28 Sep 2012 22:55:03 +0000 (01:55 +0300)]
Preserve source declarations when transferring a collection
Optionally print all internal statements (useful to see what's happening
inside a binary datafile).
Mikko Rasa [Fri, 28 Sep 2012 22:54:06 +0000 (01:54 +0300)]
Add a flag to return also internal statements
Mikko Rasa [Fri, 28 Sep 2012 09:11:58 +0000 (12:11 +0300)]
Add a special keyword to terminate parsing
Mikko Rasa [Fri, 28 Sep 2012 09:10:23 +0000 (12:10 +0300)]
Improve the API for future objects
add_future is now documented as ignoring names that don't match any type,
and there's a new function to add future objects with a keyword.
Mikko Rasa [Fri, 28 Sep 2012 09:04:38 +0000 (12:04 +0300)]
Remove the outdated except.h
Mikko Rasa [Thu, 27 Sep 2012 22:31:37 +0000 (01:31 +0300)]
Add a shortcut for wrapping data for a collection file
Collections are part of the library itself, so there's no reason to
require users to write all the boilerplate to do the wrapping.
Mikko Rasa [Thu, 27 Sep 2012 22:24:13 +0000 (01:24 +0300)]
Create writers dynamically and delete them before deleting output
This ensures that the IO objects are destroyed in the correct order, and
filters won't try to access deleted objects.
Mikko Rasa [Thu, 27 Sep 2012 22:15:32 +0000 (01:15 +0300)]
Recognize char pointers as strings
statement.append("literal") was creating a symbol value, which was not
following the principle of least surprise.
Mikko Rasa [Thu, 27 Sep 2012 16:23:58 +0000 (19:23 +0300)]
Restructure the tool and make it able to handle multiple input files
Mikko Rasa [Thu, 27 Sep 2012 13:11:56 +0000 (16:11 +0300)]
Simplify loading collection items
The ItemLoader wrapper from DirectoryCollection can be used in the base
Collection::Loader as well. This removes the need for the kludgy struct
Add and the need for two separate loader functions. As an added bonus,
the ItemLoader can still be used in DirectoryCollection and future derived
classes as well, further reducing duplication.
Mikko Rasa [Wed, 26 Sep 2012 20:29:57 +0000 (23:29 +0300)]
More unit tests for Collection, including contains and future objects
Mikko Rasa [Wed, 26 Sep 2012 20:26:54 +0000 (23:26 +0300)]
Fix some minor mistakes
Mikko Rasa [Wed, 26 Sep 2012 19:18:24 +0000 (22:18 +0300)]
Give DirectoryCollection the ability to add files as future objects
Mikko Rasa [Wed, 26 Sep 2012 18:49:22 +0000 (21:49 +0300)]
Minor reorganization
Mikko Rasa [Wed, 26 Sep 2012 18:36:28 +0000 (21:36 +0300)]
Introduce the concept of future objects
Mikko Rasa [Wed, 26 Sep 2012 16:04:33 +0000 (19:04 +0300)]
Make Collection::contains check for type
Checking item existence without type information is not particularly
useful, since there's no guarantee that the object can be used for its
intended purpose.
Mikko Rasa [Wed, 26 Sep 2012 07:43:01 +0000 (10:43 +0300)]
Improve the documentation of Collection
Mikko Rasa [Thu, 30 Aug 2012 08:35:53 +0000 (11:35 +0300)]
Revert "Convenience function for reporting errors in loaded data"
This reverts commit
b0b9af7216560da2a46ea38fe2df959f4dfb126f .
Why did I even add this function. The Loader catches any exceptions and
rethrows them as data_errors with the correct line number information.
Mikko Rasa [Thu, 30 Aug 2012 08:35:37 +0000 (11:35 +0300)]
Fix some whitespace errors
Mikko Rasa [Tue, 21 Aug 2012 23:15:41 +0000 (02:15 +0300)]
Change DerivedObjectLoader to take the base loader as template argument
This makes it much more versatile, as it can now be used to derive from
a protected loader or one with a nonstandard name.
Mikko Rasa [Sat, 18 Aug 2012 21:16:50 +0000 (00:16 +0300)]
Proper loading of collection-enabled objects in DirectoryCollection
Mikko Rasa [Sat, 18 Aug 2012 21:16:13 +0000 (00:16 +0300)]
Make DirectoryCollection::lookup_file available to derived classes
Mikko Rasa [Fri, 3 Aug 2012 10:06:13 +0000 (13:06 +0300)]
Add support for compressed datafiles
Mikko Rasa [Fri, 3 Aug 2012 09:55:03 +0000 (12:55 +0300)]
Add an abstraction layer for output
Mikko Rasa [Thu, 2 Aug 2012 14:45:00 +0000 (17:45 +0300)]
More senseful validity checks for keyword and string definitions
I don't see how the original conditions could ever have been triggered,
given that arguments are parsed based on the signature, and those of the
built-in statements are fixed.
Mikko Rasa [Thu, 2 Aug 2012 08:11:40 +0000 (11:11 +0300)]
Use custom encoding for floats in binary format
This makes the binary format fully machine-independent, and provides
control over the precision of floating point values.
Mikko Rasa [Wed, 1 Aug 2012 15:52:25 +0000 (18:52 +0300)]
Use negative integers for built-in statements for better extensibility
Mikko Rasa [Wed, 1 Aug 2012 15:46:49 +0000 (18:46 +0300)]
Use Int64 from inttypes.h, and proper defines
Mikko Rasa [Wed, 1 Aug 2012 15:06:31 +0000 (18:06 +0300)]
Recognize floating-point literals with an exponent but no decimal point
Mikko Rasa [Wed, 1 Aug 2012 08:54:14 +0000 (11:54 +0300)]
Update .gitignore
Mikko Rasa [Wed, 1 Aug 2012 08:47:11 +0000 (11:47 +0300)]
Bump version to 2.0 due to incompatible changes
Mikko Rasa [Wed, 1 Aug 2012 08:08:08 +0000 (11:08 +0300)]
Update the Build file with new Builder features
Mikko Rasa [Fri, 20 Jul 2012 20:55:26 +0000 (23:55 +0300)]
Fix tests/Build
Mikko Rasa [Wed, 18 Jul 2012 14:43:19 +0000 (17:43 +0300)]
Add facility for classes to specify what type they should be loaded as
Mikko Rasa [Wed, 18 Jul 2012 13:01:50 +0000 (16:01 +0300)]
Don't use long long on MSVC
Mikko Rasa [Wed, 18 Jul 2012 12:56:42 +0000 (15:56 +0300)]
Use the metadata for type.h in binary write/parse functions
Mikko Rasa [Wed, 18 Jul 2012 12:00:36 +0000 (15:00 +0300)]
Refactor symbol handling in binary format
Mikko Rasa [Wed, 18 Jul 2012 10:09:37 +0000 (13:09 +0300)]
Convenience function for reporting errors in loaded data