From ceddf77c0829bd8189d1c01648343f002af8c46c Mon Sep 17 00:00:00 2001 From: Oliver Hamlet Date: Mon, 16 Oct 2017 08:21:56 +0100 Subject: [PATCH] Update docs --- docs/api/changelog.rst | 42 ++++++++++++++++++++++++++++++++++++++ docs/api/miscellaneous.rst | 25 ++++++++--------------- docs/api/reference.rst | 6 ++---- 3 files changed, 52 insertions(+), 21 deletions(-) diff --git a/docs/api/changelog.rst b/docs/api/changelog.rst index da98bd12..32ace212 100644 --- a/docs/api/changelog.rst +++ b/docs/api/changelog.rst @@ -2,6 +2,48 @@ Version History *************** +0.12.0 - Unreleased +=================== + +Added +----- + +- Support for light master (``.esl``) plugins. +- :cpp:any:`LoadCurrentLoadOrderState()` in :cpp:any:`loot::GameInterface` to + expose load order cache management to clients, as libloadorder no longer + internally manages it. +- :cpp:any:`loot::SetLoggingCallback()` to allow clients to handle the LOOT + API's logging statements themselves. +- Logging of libloadorder error details. + +Changed +------- + +- :cpp:any:`LoadPlugins()` now loads the current load order + state before loading plugins. +- Replaced libespm dependency with esplugin v1.0.5. This significantly improves + safety and sorting performance, especially for large load orders. +- Updated libloadorder to v10.0.0. This significantly improves safety and the + performance of load order operations, at the expense of exposing cache + management to the client. +- Updated libgit2 to v0.26.0. + +Removed +------- + +- ``DatabaseInterface::EvalLists()`` as it was superseded in v0.11.0 by the + ability to evaluate conditions when getting general messages and individual + plugins' metadata, which is more efficient. +- ``SetLoggingVerbosity()`` and ``SetLogFile()`` as they have been superseded + by the new :cpp:any:`loot::SetLoggingCallback()` function. + +Fixed +----- + +- Formatting in metadata documentation. +- Saving metadata wrote entries in an inconsistent order. +- Clang build errors. + 0.11.1 - 2017-06-19 =================== diff --git a/docs/api/miscellaneous.rst b/docs/api/miscellaneous.rst index 34e4b315..167d9250 100644 --- a/docs/api/miscellaneous.rst +++ b/docs/api/miscellaneous.rst @@ -39,36 +39,22 @@ metadata files into memory, but does not evaluate these conditions, so the loaded metadata may contain metadata that is invalid for the installed game that the :cpp:class:`loot::DatabaseInterface` object being operated on was created for. -The :cpp:func:`EvalLists` must be called to evaluate any conditions in the -loaded metadata. In doing so it discards any metadata with a condition that -evaluates to false, but the pre-evaluation metadata is cached internally so that -re-evaluation does not require the lists to be reloaded. - Caching ======= All unevaluated metadata is cached between calls to :cpp:func:`LoadLists`. -Evaluated metadata is cached between calls to :cpp:func:`EvalLists`. Metadata -conditions and their results are cached between calls to :cpp:func:`EvalLists`, -so that every call to :cpp:func:`EvalLists` re-evaluates all conditions, but -conditions that are used more than once in the loaded metadata are only -evaluated once. Plugin content is cached between calls to :cpp:func:`LoadPlugins` and :cpp:func:`SortPlugins`. -Load order is cached on creation of a game using :cpp:func:`CreateGameHandle` -and when :cpp:func:`SetLoadOrder` is called, and plugins' active states are -cached between calls to :cpp:func:`LoadPlugins` and :cpp:func:`SortPlugins`. +Load order is cached between calls to :cpp:func:`LoadPlugins`, +:cpp:func:`SortPlugins` and :cpp:func:`LoadCurrentLoadOrderState`. Performance =========== Loading metadata lists is a relatively costly operation, as is updating the -masterlist (which involves loading it). Evaluating the loaded metadata lists is -not very costly relative to loading them, though is performance depends on the -type and number of conditions used in the loaded metadata, and all the -conditions involve filesystem access. +masterlist (which involves loading it). Sorting plugins is expensive, as it involves loading all the FormIDs for all the plugins, apart from the game's main master file, which is skipped as an @@ -77,3 +63,8 @@ other plugin, so is unnecessary and slow to load). Getting plugin metadata once loaded is cheap, as is getting a masterlist's revision. + +Loading the current load order state is relatively cheap and can take < 1 ms +depending on hardware and the size of the load order, but involves filesystem +access and should not be done more often than necessary to avoid a performance +impact. diff --git a/docs/api/reference.rst b/docs/api/reference.rst index 1a9566d7..171fb182 100644 --- a/docs/api/reference.rst +++ b/docs/api/reference.rst @@ -9,7 +9,7 @@ Enumerations .. doxygenenum:: loot::GameType -.. doxygenenum:: loot::LogVerbosity +.. doxygenenum:: loot::LogLevel .. doxygenenum:: loot::MessageType @@ -25,9 +25,7 @@ Public-Field Data Structures Functions ========= -.. doxygenfunction:: loot::SetLoggingVerbosity - -.. doxygenfunction:: loot::SetLogFile +.. doxygenfunction:: loot::SetLoggingCallback .. doxygenfunction:: loot::IsCompatible