// Returns a specific profile object in the list. The returned memory should be // encapsulated in a Ptr<> object or released after use. Returns NULL if the index // is invalid Profile* ProfileManager::LoadProfile(ProfileType device, unsigned int index) { Lock::Locker lockScope(&ProfileLock); if (CacheDevice == Profile_Unknown) LoadCache(device); if (index < ProfileCache.GetSize()) { Profile* profile = ProfileCache[index]; return profile->Clone(); } else { return NULL; } }
// Returns a profile object for a particular device and user name. The returned // memory should be encapsulated in a Ptr<> object or released after use. Returns // NULL if the profile is not found Profile* ProfileManager::LoadProfile(ProfileType device, const char* user) { if (user == NULL) return NULL; Lock::Locker lockScope(&ProfileLock); if (CacheDevice == Profile_Unknown) LoadCache(device); for (unsigned int i=0; i<ProfileCache.GetSize(); i++) { if (OVR_strcmp(user, ProfileCache[i]->Name) == 0) { // Found the requested user profile Profile* profile = ProfileCache[i]; return profile->Clone(); } } return NULL; }