OpenTTD Source 20241224-master-gee860a5c8e
PersistentStorageArray< TYPE, SIZE > Struct Template Reference

Class for persistent storage of data. More...

#include <newgrf_storage.h>

Inheritance diagram for PersistentStorageArray< TYPE, SIZE >:
BasePersistentStorageArray

Public Types

using StorageType = std::array< TYPE, SIZE >
 

Public Member Functions

void StoreValue (uint pos, int32_t value)
 Stores some value at a given position.
 
TYPE GetValue (uint pos) const
 Gets the value from a given position.
 
void ClearChanges () override
 Discard temporary changes.
 
- Public Member Functions inherited from BasePersistentStorageArray
virtual ~BasePersistentStorageArray ()
 Remove references to use.
 

Data Fields

StorageType storage {}
 Memory for the storage array.
 
std::unique_ptr< StorageType > prev_storage {}
 Temporary memory to store previous state so it can be reverted, e.g. for command tests.
 
- Data Fields inherited from BasePersistentStorageArray
uint32_t grfid
 GRFID associated to this persistent storage. A value of zero means "default".
 
uint8_t feature
 NOSAVE: Used to identify in the owner of the array in debug output.
 
TileIndex tile
 NOSAVE: Used to identify in the owner of the array in debug output.
 

Additional Inherited Members

- Static Public Member Functions inherited from BasePersistentStorageArray
static void SwitchMode (PersistentStorageMode mode, bool ignore_prev_mode=false)
 Clear temporary changes made since the last call to SwitchMode, and set whether subsequent changes shall be persistent or temporary.
 
- Static Protected Member Functions inherited from BasePersistentStorageArray
static bool AreChangesPersistent ()
 Check whether currently changes to the storage shall be persistent or temporary till the next call to ClearChanges().
 

Detailed Description

template<typename TYPE, uint SIZE>
struct PersistentStorageArray< TYPE, SIZE >

Class for persistent storage of data.

On ClearChanges that data is either reverted or saved.

Template Parameters
TYPEthe type of variable to store.
SIZEthe size of the array.

Definition at line 67 of file newgrf_storage.h.

Member Typedef Documentation

◆ StorageType

template<typename TYPE , uint SIZE>
using PersistentStorageArray< TYPE, SIZE >::StorageType = std::array<TYPE, SIZE>

Definition at line 68 of file newgrf_storage.h.

Member Function Documentation

◆ ClearChanges()

template<typename TYPE , uint SIZE>
void PersistentStorageArray< TYPE, SIZE >::ClearChanges ( )
inlineoverridevirtual

◆ GetValue()

template<typename TYPE , uint SIZE>
TYPE PersistentStorageArray< TYPE, SIZE >::GetValue ( uint  pos) const
inline

Gets the value from a given position.

Parameters
posthe position to get the data from
Returns
the data from that position

Definition at line 108 of file newgrf_storage.h.

References PersistentStorageArray< TYPE, SIZE >::storage.

Referenced by AirportScopeResolver::GetVariable(), and IndustriesScopeResolver::GetVariable().

◆ StoreValue()

template<typename TYPE , uint SIZE>
void PersistentStorageArray< TYPE, SIZE >::StoreValue ( uint  pos,
int32_t  value 
)
inline

Stores some value at a given position.

If there is no backup of the data that backup is made and then we write the data.

Parameters
posthe position to write at
valuethe value to write

Definition at line 80 of file newgrf_storage.h.

References AddChangedPersistentStorage(), BasePersistentStorageArray::AreChangesPersistent(), PersistentStorageArray< TYPE, SIZE >::prev_storage, and PersistentStorageArray< TYPE, SIZE >::storage.

Referenced by AirportScopeResolver::StorePSA(), IndustriesScopeResolver::StorePSA(), and TownScopeResolver::StorePSA().

Field Documentation

◆ prev_storage

template<typename TYPE , uint SIZE>
std::unique_ptr<StorageType> PersistentStorageArray< TYPE, SIZE >::prev_storage {}

Temporary memory to store previous state so it can be reverted, e.g. for command tests.

Definition at line 71 of file newgrf_storage.h.

Referenced by PersistentStorageArray< TYPE, SIZE >::ClearChanges(), and PersistentStorageArray< TYPE, SIZE >::StoreValue().

◆ storage


The documentation for this struct was generated from the following file: