OpenTTD Source 20250312-master-gcdcc6b491d
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 = 0
 GRFID associated to this persistent storage. A value of zero means "default".
 
uint8_t feature = 0
 NOSAVE: Used to identify in the owner of the array in debug output.
 
TileIndex tile = INVALID_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 66 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 67 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 107 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 79 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 70 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: