Files
UnrealEngineUWP/Engine/Source/Developer/MessageLog/Private/Model/MessageLogModel.h
2014-03-14 14:13:41 -04:00

47 lines
1.5 KiB
C++

// Copyright 1998-2014 Epic Games, Inc. All Rights Reserved.
#pragma once
/**
* Holds a series of message log listings that can be written to.
*/
class FMessageLogModel
{
public:
/** Destructor */
~FMessageLogModel();
/** Unregisters a log listing with the message log system, true if successful */
bool UnregisterLogListingModel( const FName& LogName );
/** Checks to see if a log listing is already registered with the system */
bool IsRegisteredLogListingModel( const FName& LogName ) const;
/** Gets a log listing, if it does not exist it is created. */
TSharedRef< class FMessageLogListingModel > GetLogListingModel( const FName& LogName );
/** Broadcasts whenever a message log listing is added or removed */
DECLARE_EVENT( FMessageLogModel, FChangedEvent )
FChangedEvent& OnChanged() { return ChangedEvent; }
protected:
/** Will broadcast to all registered observers informing them of a change */
virtual void Notify() { ChangedEvent.Broadcast(); }
private:
/** Registers a log listing with the message log system, true if successful */
TSharedRef< class FMessageLogListingModel > RegisterOrGetLogListingModel( const FName& LogName );
/** Finds the LogListing Model, given its name. Returns null if not found. */
TSharedPtr< class FMessageLogListingModel > FindLogListingModel( const FName& LogName ) const;
private:
/** A map from a log listings' Name->Model */
TMap< FName, TSharedPtr< class FMessageLogListingModel > > NameToModelMap;
/** The event that broadcasts whenever data is changed */
FChangedEvent ChangedEvent;
};