We use UTF8 everywhere. When you enter a feature name or value in the LimeLM dashboard it is stored in UTF8. In Windows TurboActivate converts this UTF8 to the Windows Wide Char (UTF16). In Linux/Mac OS X TurboActivate leaves the UTF8 feature names/values untouched.
For non Windows, GetFeatureValue() returns the feature string as a const char * but the comment in TurboActivate.h say that this function is using wide characters.
The comment is wrong. We'll fix that. For Windows it's wide chars. For Unix it's just plain old chars.
GetFeatureValue( , , 0) says that a feature has a size but you don't know until you call again with the given size that in fact the feature was not set. Is that correct ? If yes, then it's a bit annoying IMHO.
Yes, that's true. But there's no good way around that (short of adding another function "FeatureExists()"). The good news is that you can use a buffer sufficiently large and you don't need to get the required buffer size by calling GetFeatureValue("feature name", 0, 0);
Does this make sense?