//..............................................................................
//
// Ninja log - main log engine api
//

import "ui_Icon.jnc"
import "log_Writer.jnc"
import "log_Converter.jnc"
import "log_Filter.jnc"
import "log_Listener.jnc"
import "log_RangeProcessor.jnc"

namespace log {

//! \addtogroup api-log
//! @{

//..............................................................................

opaque class Log
{
	size_t property m_leafLineCountLimit;
	size_t property m_cacheUpdateScrollRateLimit;

	ui.Icon* property m_iconTable(size_t i);

	Writer* readonly m_writer;
	uint64_t autoget property m_baseTimestamp;

	destruct();

	suspend();
	resume();

	addConverter(
		Converter* converter,
		std.Guid const* auxClassGuidArray,
		size_t auxClassCount
		);

	addConverter(Converter* converter)
	{
		addConverter(converter, null, 0);
	}

	addConverter(
		Converter* converter,
		std.Guid const* classGuid
		)
	{
		addConverter(converter, classGuid, 1);
	}

	removeAllConverters();

	addFilter(Filter* filter);
	removeAllFilters();

	addFoldingFilter(FoldingFilter* filter);
	removeAllFoldingFilters();

	addListener(ListenerFunc* listenerFunc);
	removeAllListeners();

	addSelectionProcessor(RangeProcessorFactoryFunc* factoryFunc);
	removeAllSelectionProcessors();
}

//..............................................................................

//! @}

} // namespace log
