- When new indices are added to a BOM, the extra spaces are now zero'd out instead of left as
junk memory. The space after the index table seems to be hidden metadata about a freelist, so
having this data randomized is not good.
- Add support for inserting freelist data at the end of the index table.
- Sorted entries added to a BOM tree, which appears expected by apps searching through BOM trees.
- Set to use static or dynamic libraries at top level.
- Compiler configuration for MSVC and MinGW.
- Copy rather than create symlink for aliases on Windows.
Do pointer arithmetic only happen on typed pointers or integer
representations of pointers, not void pointers. Cast integer and
floating point types explicitly when reducing precision.
Use a single reserve method to reserve space in BOM indexes or in a
BOM tree's entry index, rather than specifying on initialization.
This better supports reserving additional space after allocation,
which is needed in any case, without sacrificing performance.
* Support faster writes by preallocating indexes
* Allow reading and writing raw key value pairs in libcar
* Remove bom_alloc_empty and bom_tree_alloc_empty
* Keep space for two extra indexes for compatibility
* Include struct bom_variables when checking minimum size of BOM memory
* Remove preallocated_index_count
* Refactor resizing code
* Add API to increase the size of the BOM index free list
* Optimize CAR write by pre-allocting BOM indexes
Instead of checking if strings are empty, use optionals to store if
the arguments were passed at all. Additionally, add a few utility
methods to the option parser to simplify various tool option classes.
* Add minimum size for BOM file when creating
* Add serialization and tests for AttributeList
* Optimize load time for Reader
Save pointers to construct Facets and Rendition objects on demand
* Add serialization and tests for Facet
* More complete Rendition object
Add methods for more properties, including:
width, height, is_opaque, is_vector,
is_resizable, resize_mode, uti
Add serialization code and unit test
* Add CAR file Writer object and unit test
Support for writing a CAR/BOM file with:
- CAR header
- keyfmt
- facets
- renditions
* A faster dump_car tool
* Avoid using string_view
* Clean up after test_car_Writer
* Clean up libcar
Covert tabs to spaces
Camel case for properties
Make most use of Rendition const again
Use reinterpret_cast
remove iterators from Writer
Check CAR header magic, and write it using strncpy
conform to for loop style
* Fix Linux compile errors
* Ensure attributes in Facet Value are ordered
Sort the attribute pairs in car_facet_value by identifier.
- Use add_compile_options() in CMake to avoid duplicate lines.
- Add missing includes as needed for Linux compilation.
- Add required macro to access ftruncate() on Linux in C99 mode.
- Switch to C++11 random numbers instead of arc4random for portability.
- Workaround GCC issue with references to packed struct fields.
- Fix missing default case required by GCC.
Rathern than loop to find the index, directly load the index from
the BOM. This changes bom_index_get() from O(N) to O(1), which also
speeds up operations for BOM trees which heavily use bom_index_get().