diff options
| author | Paul Gilbert | 2010-08-05 10:16:21 +0000 |
|---|---|---|
| committer | Eugene Sandulenko | 2010-10-12 22:23:24 +0000 |
| commit | 49ea23c532cb0d8ab6e27d290484a1e2daadb347 (patch) | |
| tree | 97dff77ee4deeb81f600288d30abb3413300180f /engines/sword25/kernel | |
| parent | 1e3b3af5c09ef5b9168436b2276bce612f74c0d2 (diff) | |
| download | scummvm-rg350-49ea23c532cb0d8ab6e27d290484a1e2daadb347.tar.gz scummvm-rg350-49ea23c532cb0d8ab6e27d290484a1e2daadb347.tar.bz2 scummvm-rg350-49ea23c532cb0d8ab6e27d290484a1e2daadb347.zip | |
SWORD25: Fix for void * conversion errors
It turns out that strict C++ doesn't allow function pointers to be converted to void pointers and vice versa. Since there are two callback function pointer types - one with a KEY_COMMANDS enum parameter, and the other with an unsigned char type, I changed all void * occurances to a function pointer type with an 'int' parameter, and changed all implementation methods to take in an int parameter.
svn-id: r53208
Diffstat (limited to 'engines/sword25/kernel')
| -rw-r--r-- | engines/sword25/kernel/callbackregistry.cpp | 14 | ||||
| -rw-r--r-- | engines/sword25/kernel/callbackregistry.h | 18 |
2 files changed, 17 insertions, 15 deletions
diff --git a/engines/sword25/kernel/callbackregistry.cpp b/engines/sword25/kernel/callbackregistry.cpp index 821da1b80c..5c2f9f9119 100644 --- a/engines/sword25/kernel/callbackregistry.cpp +++ b/engines/sword25/kernel/callbackregistry.cpp @@ -60,7 +60,7 @@ namespace Sword25 { // ----------------------------------------------------------------------------- -bool BS_CallbackRegistry::RegisterCallbackFunction(const Common::String &Name, void *Ptr) { +bool BS_CallbackRegistry::RegisterCallbackFunction(const Common::String &Name, CallbackPtr Ptr) { if (Name == "") { BS_LOG_ERRORLN("The empty string is not allowed as a callback function name."); return false; @@ -82,8 +82,8 @@ bool BS_CallbackRegistry::RegisterCallbackFunction(const Common::String &Name, v // ----------------------------------------------------------------------------- -void * BS_CallbackRegistry::ResolveCallbackFunction(const Common::String & Name) const { - void * Result = FindPtrByName(Name); +CallbackPtr BS_CallbackRegistry::ResolveCallbackFunction(const Common::String &Name) const { + CallbackPtr Result = FindPtrByName(Name); if (!Result) { BS_LOG_ERRORLN("There is no callback function with the name \"%s\".", Name.c_str()); @@ -94,7 +94,7 @@ void * BS_CallbackRegistry::ResolveCallbackFunction(const Common::String & Name) // ----------------------------------------------------------------------------- -Common::String BS_CallbackRegistry::ResolveCallbackPointer(void *Ptr) const { +Common::String BS_CallbackRegistry::ResolveCallbackPointer(CallbackPtr Ptr) const { const Common::String &Result = FindNameByPtr(Ptr); if (Result == "") { @@ -106,7 +106,7 @@ Common::String BS_CallbackRegistry::ResolveCallbackPointer(void *Ptr) const { // ----------------------------------------------------------------------------- -void * BS_CallbackRegistry::FindPtrByName(const Common::String &Name) const { +CallbackPtr BS_CallbackRegistry::FindPtrByName(const Common::String &Name) const { // Eintrag in der Map finden und den Pointer zurückgeben. NameToPtrMap::const_iterator It = m_NameToPtrMap.find(Name); return It == m_NameToPtrMap.end() ? 0 : It->_value; @@ -114,7 +114,7 @@ void * BS_CallbackRegistry::FindPtrByName(const Common::String &Name) const { // ----------------------------------------------------------------------------- -Common::String BS_CallbackRegistry::FindNameByPtr(void *Ptr) const { +Common::String BS_CallbackRegistry::FindNameByPtr(CallbackPtr Ptr) const { // Eintrag in der Map finden und den Namen zurückgeben. PtrToNameMap::const_iterator It = m_PtrToNameMap.find(Ptr); return It == m_PtrToNameMap.end() ? "" : It->second; @@ -122,7 +122,7 @@ Common::String BS_CallbackRegistry::FindNameByPtr(void *Ptr) const { // ----------------------------------------------------------------------------- -void BS_CallbackRegistry::StoreCallbackFunction(const Common::String &Name, void *Ptr) { +void BS_CallbackRegistry::StoreCallbackFunction(const Common::String &Name, CallbackPtr Ptr) { // Callback-Funktion in beide Maps eintragen. m_NameToPtrMap[Name] = Ptr; m_PtrToNameMap[Ptr] = Name; diff --git a/engines/sword25/kernel/callbackregistry.h b/engines/sword25/kernel/callbackregistry.h index 4197930ae0..38e917cf15 100644 --- a/engines/sword25/kernel/callbackregistry.h +++ b/engines/sword25/kernel/callbackregistry.h @@ -51,6 +51,8 @@ namespace Sword25 { // Klassendeklaration // ----------------------------------------------------------------------------- +typedef void (*CallbackPtr)(int Command); + class BS_CallbackRegistry { public: static BS_CallbackRegistry & GetInstance() { @@ -58,19 +60,19 @@ public: return Instance; } - bool RegisterCallbackFunction(const Common::String &Name, void * Ptr); - void * ResolveCallbackFunction(const Common::String &Name) const; - Common::String ResolveCallbackPointer(void *Ptr) const; + bool RegisterCallbackFunction(const Common::String &Name, CallbackPtr Ptr); + CallbackPtr ResolveCallbackFunction(const Common::String &Name) const; + Common::String ResolveCallbackPointer(CallbackPtr Ptr) const; private: - typedef Common::HashMap<Common::String, void *, Common::CaseSensitiveString_Hash, Common::CaseSensitiveString_EqualTo> NameToPtrMap; + typedef Common::HashMap<Common::String, CallbackPtr, Common::CaseSensitiveString_Hash, Common::CaseSensitiveString_EqualTo> NameToPtrMap; NameToPtrMap m_NameToPtrMap; - typedef Common::HashMap<void *, Common::String, Common::CaseSensitiveString_Hash, Common::CaseSensitiveString_EqualTo> PtrToNameMap; + typedef Common::HashMap<CallbackPtr, Common::String, Common::CaseSensitiveString_Hash, Common::CaseSensitiveString_EqualTo> PtrToNameMap; PtrToNameMap m_PtrToNameMap; - void * FindPtrByName(const Common::String &Name) const; - Common::String FindNameByPtr(void * Ptr) const; - void StoreCallbackFunction(const Common::String & Name, void * Ptr); + CallbackPtr FindPtrByName(const Common::String &Name) const; + Common::String FindNameByPtr(CallbackPtr Ptr) const; + void StoreCallbackFunction(const Common::String &Name, CallbackPtr Ptr); }; } // End of namespace Sword25 |
