From d1832e6f667f17b83378ddf9b51a30aa47c4b4df Mon Sep 17 00:00:00 2001 From: mcmartin Date: Mon, 24 Nov 2008 00:09:54 +0000 Subject: [PATCH] Added a routine to interrogate resource types. git-svn-id: svn://svn.code.sf.net/p/sc2/code/trunk@3099 8092fc87-c524-0410-9efc-e669fe64eaf9 --- sc2/src/sc2code/libs/reslib.h | 1 + sc2/src/sc2code/libs/resource/getres.c | 25 +++++++++++++++++++++++++ 2 files changed, 26 insertions(+) diff --git a/sc2/src/sc2code/libs/reslib.h b/sc2/src/sc2code/libs/reslib.h index ba235c033..0bb20b7a3 100644 --- a/sc2/src/sc2code/libs/reslib.h +++ b/sc2/src/sc2code/libs/reslib.h @@ -67,6 +67,7 @@ BOOLEAN FreeResource (RESOURCE res); COUNT CountResourceTypes (void); DWORD res_GetIntResource (RESOURCE res); BOOLEAN res_GetBooleanResource (RESOURCE res); +const char *res_GetResourceType (RESOURCE res); void LoadResourceIndex (uio_DirHandle *dir, const char *filename); diff --git a/sc2/src/sc2code/libs/resource/getres.c b/sc2/src/sc2code/libs/resource/getres.c index f735ed12f..f078a0d68 100644 --- a/sc2/src/sc2code/libs/resource/getres.c +++ b/sc2/src/sc2code/libs/resource/getres.c @@ -73,6 +73,31 @@ err: return NULL; } +const char * +res_GetResourceType (RESOURCE res) +{ + RESOURCE_INDEX resourceIndex; + ResourceDesc *desc; + + if (res == NULL_RESOURCE) + { + log_add (log_Warning, "Trying to get type of null resource"); + return NULL; + } + + resourceIndex = _get_current_index_header (); + desc = lookupResourceDesc (resourceIndex, res); + if (desc == NULL) + { + log_add (log_Warning, "Trying to get type of undefined resource '%s'", + res); + return NULL; + } + + return desc->vtable->resType; +} + + // Get a resource by its resource ID. void * res_GetResource (RESOURCE res)