#pragma once #include "util.h" #include "position.h" class Level; template class PositionMap { public: PositionMap(const T& defaultVal = T()); const T& get(Position) const; T& getOrInit(Position); T& getOrFail(Position); void set(Position, const T&); void limitToModel(const WModel); template void serialize(Archive& ar, const unsigned int version); private: Table& getTable(Position); map> SERIAL(tables); map> SERIAL(outliers); T SERIAL(defaultVal); };