class log.Log

class Log {
    // fields

    log.Writer* readonly m_writer;

    // properties

    size_t property m_leafLineCountLimit;
    size_t property m_cacheUpdateScrollRateLimit;
    ui.Icon* indexed property m_iconTable(size_t i);
    uint64_t const property m_syncId;
    uint64_t autoget property m_baseTimestamp;
    string_t const property m_recordFileName;

    // construction

    destruct();

    // methods

    void suspend();
    void resume();
    void rebuild();
    bool errorcode copyOriginalRecordFile(string_t fileName) const;
    bool errorcode copyFinalRecordFile(string_t fileName) const;

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

    void addConverter(
        log.Converter* converter,
        std.Guid const* auxClassGuid
    );

    void addConverter(log.Converter* converter);
    void removeAllConverters();
    void addFilter(log.Filter* filter);
    void removeAllFilters();
    void addFoldingFilter(log.FoldingFilter* filter);
    void removeAllFoldingFilters();
    void addObserver(log.ObserverFunc* observerFunc);
    void removeAllObservers();
    void addSelectionProcessor(log.RangeProcessorFactoryFunc* factoryFunc);
    void removeAllSelectionProcessors();
};