This class stores and manages tabulator positions and field sizes. The class supports a simple session handling, by storing each value once for the actual output session and a second time for a future session. The motivation for writing this class came from the requirements of logging library ALox . The goals here are:
If used correctly, this class helps to achieve the following:
This approach very well guarantees stable log output widths across sessions. Only if the execution path of a software changes (or logging verbosity setting is changed), adjustments are performed.
To preserve the information across sessions, this class provides methods to transform it's information from and to string representations which can be stored in configuration files.
As the use case of this class is not restricted to log output, this class is exposed as a general utility class of ALib Strings .
Definition at line 58 of file autosizes.hpp.
#include <autosizes.hpp>
Inner Type Index: | |
struct | Entry |
Public Type Index: | |
enum class | Types { Tabstop , Field } |
Public Field Index: | |
size_t | ActualIndex |
Public Method Index: | |
ALIB_API integer | Actual (Types type, integer requestedSize, integer growthPadding) |
ALIB_API void | Consolidate () |
ALIB_API void | Export (AString &target) |
ALIB_API void | Import (const String &source, lang::CurrentData session=lang::CurrentData::Clear) |
integer | Next (Types type, integer requestedSize, integer growthPadding) |
void | Reset () |
void | Start () |
|
strong |
The entry type, tab stop or field width.
Enumerator | |
---|---|
Tabstop | denotes a tab stop entry. |
Field | denotes a field width entry. |
Definition at line 66 of file autosizes.hpp.
size_t ActualIndex |
The actual index requested by Next. This field is reset to 0 with every invocation of Start. The field is public and may be read and manipulated, which is considered "expert use".
Definition at line 77 of file autosizes.hpp.
|
protected |
The current and measured sizes.
Definition at line 104 of file autosizes.hpp.
Returns the actual auto value stored, respectively, if the given requested size is higher than what is stored, stores and returns the requested size.
In the latter case, the given extra growth is added to the requested size, but only if the value was set at least once before. In other words, the extra size is added only with the second growth and each subsequent one.
The requested size in addition replaces the current "session" value if it is higher than the currently stored value. To this value, the growth padding is not added.
type | The type of entry. |
requestedSize | The minimum size that is requested. |
growthPadding | Added to the new size, if the requested size is greater than the stored size and if the stored size does not equal -1 . |
Definition at line 29 of file autosizes.cpp.
void Consolidate | ( | ) |
Consolidates the values. This method is usually not invoked directly. Instead, it is invoked with method Import.
The method loops through all values and copies the session values to the actual ones. The difference of both values is summed up during the loop and entries of type Types::Tabstop are adjusted by that difference. As a result, the new values represent the smallest output format that fits all rows, if the same output is performed as in the previous "session".
Definition at line 134 of file autosizes.cpp.
void Export | ( | AString & | target | ) |
Exports the current session values by converting the stored values to a string representation and appending them to the given AString object.
The format of the entries written into the string is "(T|F,Actual,Measured)
which should be self-explanatory.
target | The AString to receive the our values |
Definition at line 55 of file autosizes.cpp.
void Import | ( | const String & | source, |
lang::CurrentData | session = lang::CurrentData::Clear ) |
Imports values from the given String by parsing it. Usually, string data are used for importing values was previously generated with method Export.
If parameter session equals Clear (which is the default), then after the import, method Consolidate is invoked.
source | The String that is parsed for the exported data. |
session | Denotes if Consolidate is to be invoked after import. Defaults to Clear . |
Definition at line 69 of file autosizes.cpp.
Invokes Actual and then increases the internal position counter.
type | The type of entry. |
requestedSize | The minimum size that is requested. |
growthPadding | Added to the new size if the requested size is greater than the stored size and if the stored size does not equal -1 . |
Definition at line 164 of file autosizes.hpp.
|
inline |
Resets the all values, current ones and the once of the currently measured session.
Definition at line 113 of file autosizes.hpp.
|
inline |
Initializes a new query sequence, which is a series of invocations of method Next.
Definition at line 131 of file autosizes.hpp.