CLD2Owners / cld2

Compact Language Detector 2
Apache License 2.0
844 stars 128 forks source link

Support mmap-ing dynamic data on win32 #20

Open ghost opened 9 years ago

ghost commented 9 years ago

Originally reported on Google Code with ID 20

As described in issue 19, the current implementation of dynamic data won't work in windows
because it relies on:
 * from sys/mman.h: mmap(), munmap()
 * from unistd.h: close()

These header files don't exist in vanilla win32 build environments, so compatibility
is broken. The fix for close() is being implemented in issue 19, but the fix for mmap()
is less straightforward.

Reported by andrewhayden@google.com on 2014-08-13 11:40:10

ghost commented 9 years ago
For now, the answer is going to be that loading/unloading from a file is not going to
work. Instead, Windows support will have to be limited to the "raw" modes:

Instead of CLD2::loadDataFromFile, use CLD2::loadDataFromRawAddress. It is up to the
caller to figure out how to get that raw pointer to point to the correct thing, presumably
using CreateFileMapping and associate functions.

Internally, these methods will be disabled for win32:
CLD2DynamicDataLoader::loadDataFile
CLD2DynamicDataLoader::unloadDataFile

Instead, use these if needed:
CLD2DynamicDataLoader::loadDataRaw
CLD2DynamicDataLoader::unloadDataRaw

Reported by andrewhayden@google.com on 2014-08-13 12:00:05

ghost commented 9 years ago
We should really also have an MSVC project file for building CLD2 on Windows. Contributions
welcome, as I have no experience with MSVC.

Reported by andrewhayden@google.com on 2014-08-13 12:09:42

ghost commented 9 years ago
Windows support for data file disabled in r166. Use raw modes instead, as described
above. This should keep windows compilers happy.

Reported by andrewhayden@google.com on 2014-08-13 12:38:07

ghost commented 9 years ago
Clarifying subject, since raw mode SHOULD work on Windows. It's only file mode that
is disabled.

Reported by andrewhayden@google.com on 2014-08-13 12:50:30

ghost commented 9 years ago

Reported by andrewhayden@google.com on 2014-10-27 20:44:37