Sorry, I closed this before reading your last comments. About your patches:
in filamap.h:
Your patches on InitDelete are incorrect. These are virtual functions that must have the same signature as the base class one.
in filamap.cpp:
If there is a problem when the function is still defined as InitDelete(PGLOBAL g, int fpos, int spos) I suggest the following patches:
Fpos = Memory + (uintptr_t)fpos;
|
Mempos = Memory + (uintptr_t)spos;
|
and the same casting in MPXFAM::InitDelete. This is not necessary with the MS or GCC compilers. Let me know whether it is with clang.
In array.cpp:
This patch is also incorrect and would make the program fail or even crash!
Indeed, the parmp->Value variable is a void pointer but to avoid having to allocate an integer and make it point on it I choosed to directly put the integer value in it. This is tricky and not really correct but was done to save memory allocation.
It works with MS and GCC that flag the casting (int)parmp->Value as a warning. With clang, the problem is to extract an integer from a pointer. Perhaps (int)(uintptr_t)parmp->Value would work? Let me know whether you have a solution for this. If not, I shall have to redesign the whole thing (perhaps using another stucture with a union in it)
Patches that enable build on FreeBSD 10.0 clang 3.3