TODO
* hide cache in fdata structures do not pass to callback?
  - pass value and free function instead?
* add specialize btree node cache/pool?
* vector: fail on segments that are not multitudes of element size
* change "at offset" into hexadecimal value
* list and write - set is also used by read callback
  have flag that tells function to initiate write callback ?
* rewrite
  - update libfdata_tree_initialize
* add callback to calculate cache index ?
  - allow to be NULL by default and fallback to default behavior
  - separate set function
* add/improve tests
  - area
  - btree (init)
  - list (init, read)
  - range list (init)
  - tree
  - vector (init, read)
* add generic type for ESEDB page, REGF hive bin, CREG data block, etc

Types:
* merge segment handling into single source file?
* area
  - add mapped offset support ?
  - add mapped size write support ?
* list
  - reimplement libfdata_list_get_element_index_at_value_index ?
  - prepend: optimize recalculation of element index ?
  - add stream like read/write buffer ?
  - add libfdata_list_set_element_by_index_with_mapped_size
  - add libfdata_list_prepend_element_with_mapped_size
  - add libfdata_list_set_element_at_offset
  - write on set value ? what about create ?
  - add calculate_cache_entry_index support
  - implement libfdata_list_read_buffer and libfdata_list_seek_offset ?
  - add a function to look for data range offset instead of relative list offset
    libfdata_list_get_element_value_at_offset ?
  - rename element_offset and equiv to element_data_offset
* range list
  - work in progress
* stream
  - add mapped offset support ?
  - add mapped size write support ?
* tree
  - refactor
  - add mapped offset support ?
  - unload parts of the tree if it becomes too large
* tree node
  - refactor
  - add mapped offset support ?
  - allow to invalidate sub nodes data range?
* vector
  - add mapped offset support ?
  - refactor
  - write on set value ? what about create ?
  - rename element_offset and equiv to element_data_offset

Optimizations:
* mapped ranges
  - optimize calculations by adding flag to mapped range ?
    LIBFDATA_MAPPED_RANGE_FLAG_IS_INVALID

20160829
* worked on tests

20160427
* worked on tests

20160403
* worked on tests
* code clean up

20160325
* worked on list

20160116
* worked on area
* worked on merging segment handling code

20160106
* 2016 update

20151226
* updated dependencies
* code clean up

20150825
* worked on stream
  - added get mapped range function

20150819
* worked on stream
  - added mapped size

20150412
* worked on btree search flags

20150409
* worked on btree search flags

20150405
* added support for less equal and greater equal for compare functions
  in libfdata_btree_node_get_sub_node_data_range_by_key

20150104
* 2015 update

20141018
* changes for deployment

20141012
* worked on utility scripts

20140920
* changes for project site move

20140915
* worked on btree

20140914
* worked on btree
* worked on tests

20140913
* worked on btree

20140912
* worked on btree
* worked on tests
* worked on fcache integration

20140911
* worked on btree
* worked on tests

20140826
* bug fixes in include header

20140817
* worked on btree

20140809
* worked on vector

20140601
* updated dependencies

20140421
* worked on list

20140206
* changes in vector

20140205
* added libfdata_list_get_element_index_at_offset
* added libfdata_stream_get_segment_at_offset

20140130
* small fix in stream header file

20140126
* list fixed multi file caching issue

20140105
* 2014 update
* updated dependencies

20130929
* worked on tree and tree node
* updated dependencies

20130922
* worked on tree and tree node

20130915
* worked on tree and tree node

20130908
* updated dependencies
* fixed memory leak in error path
* updated msvscpp files
* added libcthreads build support

20130718
* remove unnecessary restriction in library include headers

20130616
* worked on reference

20130501
* worked on vector

20130427
* worked on vector

20130424
* worked on vector

20130422
* worked on vector

20130420
* fix for stream size calculation

20130411
* worked on range list

20130410
* worked on range list

20130409
* worked on range list
* optimized and fixed append list

20130408
* worked on range list
* list initial work on calculate_cache_entry_index callback

20130407
* worked on refactor to combine fdata and mfdata
* worked on range list

20130406
* worked on refactor to combine fdata and mfdata
* worked on range list

20130405
* worked on refactor to combine fdata and mfdata

20130404
* updated dependencies
* fixes for local library Makefiles
* worked on refactor to combine fdata and mfdata
* updated include header and man page

20130403
* worked on refactor to combine fdata and mfdata
* worked on list
* worked on stream

20130402
* worked on refactor to combine fdata and mfdata
* worked on list
* worked on stream

20130401
* worked on refactor to combine fdata and mfdata
* stream rewrite
  - removed list
  - removed caching
  - removed segment data functions
  - added write support

20130320
* worked on refactor to combine fdata and mfdata
* worked on stream
* removed stream reference

20130319
* worked on refactor to combine fdata and mfdata

20130303
* worked on refactor to combine fdata and mfdata

20130224
* 2013 update
* code clean up

20121216
* worked on refactor to combine fdata and mfdata

20121215
* worked on refactor to combine fdata and mfdata

20121212
* worked on refactor to combine fdata and mfdata

20121211
* created stand-alone version based on libfguid

