2014-12-30 14:14:41 +01:00
|
|
|
|
|
|
|
|
#include "systemstate.h"
|
2018-01-29 21:55:48 +01:00
|
|
|
|
2014-12-30 14:14:41 +01:00
|
|
|
#include "../clib/stlutil.h"
|
|
|
|
|
#include "pkg.h"
|
2018-12-21 20:27:05 +01:00
|
|
|
#include "tiles.h"
|
2014-12-30 14:14:41 +01:00
|
|
|
|
2016-02-19 19:26:35 +01:00
|
|
|
namespace Pol
|
|
|
|
|
{
|
|
|
|
|
namespace Plib
|
|
|
|
|
{
|
|
|
|
|
SystemState systemstate;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
SystemState::SystemState()
|
|
|
|
|
: packages(),
|
|
|
|
|
packages_byname(),
|
|
|
|
|
accounts_txt_dirty( false ),
|
|
|
|
|
accounts_txt_stat(),
|
|
|
|
|
config(),
|
|
|
|
|
tile( nullptr ),
|
|
|
|
|
tiles_loaded( false )
|
|
|
|
|
{
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
void SystemState::deinitialize()
|
|
|
|
|
{
|
|
|
|
|
Clib::delete_all( packages );
|
|
|
|
|
packages_byname.clear();
|
|
|
|
|
if ( tile != nullptr )
|
|
|
|
|
delete[] tile;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
size_t SystemState::estimatedSize() const
|
|
|
|
|
{
|
|
|
|
|
size_t size = sizeof( SystemState );
|
2018-12-22 00:32:47 +01:00
|
|
|
size += ( config.max_tile_id + 1 ) * sizeof( Tile );
|
2016-02-19 19:26:35 +01:00
|
|
|
|
|
|
|
|
size += 3 * sizeof( Package** ) + packages.capacity() * sizeof( Package* );
|
|
|
|
|
for ( const auto& pkg : packages )
|
|
|
|
|
if ( pkg != nullptr )
|
|
|
|
|
size += pkg->estimateSize();
|
|
|
|
|
|
|
|
|
|
for ( const auto& pkg_pair : packages_byname )
|
|
|
|
|
size += pkg_pair.first.capacity() + sizeof( Package* ) + ( sizeof( void* ) * 3 + 1 ) / 2;
|
|
|
|
|
return size;
|
|
|
|
|
}
|
2018-12-21 20:27:05 +01:00
|
|
|
} // namespace Plib
|
|
|
|
|
} // namespace Pol
|