virtual TStatId GetHighPerformanceEnableForStat(FName StatShortName, const char* InGroup, const char* InCategory, bool bDefaultEnable, bool bShouldClearEveryFrame, EStatDataType::Type InStatType, TCHAR const* InDescription, bool bCycleStat, FPlatformMemory::EMemoryCounterRegion MemoryRegion = FPlatformMemory::MCR_Invalid) override { FScopeLock ScopeLock(&SynchronizationObject); FStatNameAndInfo LongName(StatShortName, InGroup, InCategory, InDescription, InStatType, bShouldClearEveryFrame, bCycleStat, MemoryRegion); FName Stat = LongName.GetEncodedName(); FName Group(InGroup); FGroupEnable* Found = HighPerformanceEnable.Find(Group); if (Found) { if (Found->DefaultEnable != bDefaultEnable) { UE_LOG(LogStatGroupEnableManager, Fatal, TEXT("Stat group %s was was defined both on and off by default."), *Group.ToString()); } TStatIdData** StatFound = Found->NamesInThisGroup.Find( Stat ); TStatIdData** StatFoundAlways = Found->AlwaysEnabledNamesInThisGroup.Find( Stat ); if( StatFound ) { if( StatFoundAlways ) { UE_LOG( LogStatGroupEnableManager, Fatal, TEXT( "Stat %s is both always enabled and not always enabled, so it was used for two different things." ), *Stat.ToString() ); } return TStatId( *StatFound ); } else if( StatFoundAlways ) { return TStatId( *StatFoundAlways ); } } else { Found = &HighPerformanceEnable.Add( Group, FGroupEnable( bDefaultEnable || !bShouldClearEveryFrame ) ); // this was set up before we saw the group, so set the enable now if (EnableForNewGroup.Contains(Group)) { Found->CurrentEnable = EnableForNewGroup.FindChecked(Group); EnableForNewGroup.Remove(Group); // by definition, we will never need this again } else if (UseEnableForNewGroups) { Found->CurrentEnable = EnableForNewGroups; } } if (PendingCount < 1) { PendingStatIds = new TStatIdData[NUM_PER_BLOCK]; FMemory::Memzero( PendingStatIds, NUM_PER_BLOCK * sizeof( TStatIdData ) ); PendingCount = NUM_PER_BLOCK; } --PendingCount; TStatIdData* Result = PendingStatIds; const FString StatDescription = InDescription ? InDescription : StatShortName.GetPlainNameString(); // Get the wide stat description. const int32 StatDescLen = StatDescription.Len() + 1; // We are leaking this. @see STAT_StatDescMemory WIDECHAR* StatDescWide = new WIDECHAR[StatDescLen]; TCString<WIDECHAR>::Strcpy( StatDescWide, StatDescLen, StringCast<WIDECHAR>( *StatDescription ).Get() ); Result->WideString = reinterpret_cast<uint64>(StatDescWide); // Get the ansi stat description. // We are leaking this. @see STAT_StatDescMemory ANSICHAR* StatDescAnsi = new ANSICHAR[StatDescLen]; TCString<ANSICHAR>::Strcpy( StatDescAnsi, StatDescLen, StringCast<ANSICHAR>( *StatDescription ).Get() ); Result->AnsiString = reinterpret_cast<uint64>(StatDescAnsi); MemoryCounter.Add( StatDescLen*(sizeof( ANSICHAR ) + sizeof( WIDECHAR )) ); ++PendingStatIds; if( Found->CurrentEnable ) { EnableStat( Stat, Result ); } if( bShouldClearEveryFrame ) { Found->NamesInThisGroup.Add( Stat, Result ); } else { Found->AlwaysEnabledNamesInThisGroup.Add( Stat, Result ); } return TStatId(Result); }
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // GNU General Public License for more details. // // You should have received a copy of the GNU General Public License // along with this program. If not, see <http://www.gnu.org/licenses/>. //////////////////////////////////////////////////////////////////////// #include "otpch.h" #include <iostream> #include <libxml/xmlmemory.h> #include <libxml/parser.h> #include "group.h" #include "tools.h" Group Groups::defGroup = Group(); void Groups::clear() { for(GroupsMap::iterator it = groupsMap.begin(); it != groupsMap.end(); ++it) delete it->second; groupsMap.clear(); } bool Groups::reload() { clear(); return loadFromXml(); }
/*! do an MPI_Comm_dup, and return duplicated communicator */ Group Group::dup() const { MPI_Comm duped; MPI_CALL(Comm_dup(comm,&duped)); return Group(duped); }
void GroupMgr::createGroup(const GroupID &id) { groups[id] = Group(); }
void OBJModel::new_group(std::string const& name) { _groups.push_back(Group()); _groups.back().name = name; }