Add a class to handle dictzip files

Provides pseudo-random access to dictionary files compressed using dictzip.

It doesn't implement a cache, it just loads missing chunks until it has the
whole file.  I'm not sure if discarding not recently used chunks is really
a useful feature.  If there _was_ a way to get noticed when system memory
is low, I think the best way to handle that event would be to simply release
it all.

All in all, this is pretty useless.  But it was interesting to write.

This has yet to be integrated into the application proper.
This commit is contained in:
2013-07-14 20:40:58 +02:00
parent c2e8709372
commit 15f62b7054
6 changed files with 823 additions and 59 deletions

View File

@@ -22,10 +22,12 @@ include (CheckFunctionExists)
CHECK_FUNCTION_EXISTS ("wcwidth" HAVE_WCWIDTH)
# Dependecies
find_package (ZLIB REQUIRED)
find_package (PkgConfig REQUIRED)
pkg_check_modules (dependencies REQUIRED ncursesw glib-2.0 gio-2.0 pango)
include_directories (${dependencies_INCLUDE_DIRS})
include_directories (${ZLIB_INCLUDE_DIRS} ${dependencies_INCLUDE_DIRS})
# Localization
find_package (Gettext REQUIRED)
@@ -61,16 +63,20 @@ add_custom_target (docs ALL DEPENDS ${project_MAN_PAGES_OUTPUT})
# Project source files
set (project_common_sources
src/dictzip-input-stream.c
src/generator.c
src/stardict.c)
src/stardict.c
src/utils.c)
set (project_common_headers
${CMAKE_CURRENT_BINARY_DIR}/config.h
src/dictzip-input-stream.h
src/stardict.h
src/stardict-private.h
src/generator.h)
src/generator.h
src/utils.h)
# Project libraries
set (project_common_libraries ${dependencies_LIBRARIES})
set (project_common_libraries ${ZLIB_LIBRARIES} ${dependencies_LIBRARIES})
# Create a common project library so that source files are only compiled once
if (${CMAKE_VERSION} VERSION_GREATER "2.8.7")