const char *getHeaderField(const char *key) { utString *val = header.get(key); if (val != NULL) { return val->c_str(); } else { return NULL; } }
static loom_asset_t *loom_asset_getAssetByName(const char *name, int create) { utHashedString key = platform_normalizePath(name); loom_asset_t **assetPtr = gAssetHash.get(key); loom_asset_t *asset = assetPtr ? *assetPtr : NULL; if ((asset == NULL) && create) { // Create one. asset = lmNew(gAssetAllocator) loom_asset_t; asset->name = strdup(name); gAssetHash.insert(key, asset); } return asset; }
static void regenerateSourceBreakpoints() { sourceBreakpoints.clear(); for (UTsize i = 0; i < breakpoints.size(); i++) { Breakpoint *bp = breakpoints.at(i); utFastStringHash fhash(bp->source); if (sourceBreakpoints.find(fhash) == UT_NPOS) { utArray<Breakpoint *> bps; sourceBreakpoints.insert(fhash, bps); } sourceBreakpoints.get(fhash)->push_back(bp); } }
// tests whether the given breakpoint exists static bool hasBreakpoint(const char *source, int line) { utArray<Breakpoint *> *bps = sourceBreakpoints.get(utFastStringHash(source)); if (!bps) { return false; } for (UTsize i = 0; i < bps->size(); i++) { if (bps->at(i)->line == line) { return true; } } return false; }
// Helper to deserialize an asset, routing to the right function by type. static void *loom_asset_deserializeAsset(const utString &path, int type, int size, void *ptr, LoomAssetCleanupCallback *dtor) { lmAssert(gAssetDeserializerMap.find(type) != UT_NPOS, "Can't deserialize asset, no deserializer was set for type %x!", type); LoomAssetDeserializeCallback ladc = *gAssetDeserializerMap.get(type); if (ladc == NULL) { lmLogError(gAssetLogGroup, "Failed deserialize asset '%s', deserializer was not found for type '%x'!", path.c_str(), type); return NULL; } void *assetBits = ladc(ptr, size, dtor); if (assetBits == NULL) { lmLogError(gAssetLogGroup, "Failed to deserialize asset '%s', deserializer returned NULL for type '%x'!", path.c_str(), type); return NULL; } return assetBits; }
static loom_asset_t *loom_asset_getAssetByName(const char *name, int create) { loom_mutex_lock(gAssetLock); static char normalized[4096]; strncpy(normalized, name, sizeof(normalized)); platform_normalizePath(normalized); utHashedString key = normalized; loom_mutex_unlock(gAssetLock); loom_asset_t **assetPtr = gAssetHash.get(key); loom_asset_t *asset = assetPtr ? *assetPtr : NULL; if ((asset == NULL) && create) { // Create one. asset = lmNew(gAssetAllocator) loom_asset_t; asset->name = name; gAssetHash.insert(key, asset); } return asset; }
static utString* optionGet(const char *key) { utFastStringHash hash = utFastStringHash(key); return gOptions.get(hash); }