mirror of
https://github.com/vcmi/vcmi.git
synced 2024-12-20 20:23:03 +02:00
Use std::byte in serializer
This commit is contained in:
parent
29c0989849
commit
03fcfe3392
@ -35,7 +35,7 @@ GlobalLobbyLoginWindow::GlobalLobbyLoginWindow()
|
||||
pos.w = 200;
|
||||
pos.h = 200;
|
||||
|
||||
background = std::make_shared<FilledTexturePlayerColored>(ImagePath::builtin("DiBoxBck"), Rect(0, 0, pos.w, pos.h));
|
||||
filledBackground = std::make_shared<FilledTexturePlayerColored>(ImagePath::builtin("DiBoxBck"), Rect(0, 0, pos.w, pos.h));
|
||||
labelTitle = std::make_shared<CLabel>( pos.w / 2, 20, FONT_BIG, ETextAlignment::CENTER, Colors::YELLOW, CGI->generaltexth->translate("vcmi.lobby.login.title"));
|
||||
labelUsername = std::make_shared<CLabel>( 10, 45, FONT_MEDIUM, ETextAlignment::TOPLEFT, Colors::WHITE, CGI->generaltexth->translate("vcmi.lobby.login.username"));
|
||||
backgroundUsername = std::make_shared<TransparentFilledRectangle>(Rect(10, 70, 180, 20), ColorRGBA(0,0,0,128), ColorRGBA(64,64,64,64));
|
||||
@ -44,7 +44,7 @@ GlobalLobbyLoginWindow::GlobalLobbyLoginWindow()
|
||||
buttonClose = std::make_shared<CButton>(Point(126, 160), AnimationPath::builtin("MuBcanc"), CButton::tooltip(), [this](){ onClose(); });
|
||||
labelStatus = std::make_shared<CTextBox>( "", Rect(15, 95, 175, 60), 1, FONT_SMALL, ETextAlignment::TOPLEFT, Colors::WHITE);
|
||||
|
||||
background->playerColored(PlayerColor(1));
|
||||
filledBackground->playerColored(PlayerColor(1));
|
||||
inputUsername->setText(settings["lobby"]["displayName"].String());
|
||||
inputUsername->cb += [this](const std::string & text)
|
||||
{
|
||||
|
@ -20,7 +20,7 @@ class CButton;
|
||||
|
||||
class GlobalLobbyLoginWindow : public CWindowObject
|
||||
{
|
||||
std::shared_ptr<FilledTexturePlayerColored> background;
|
||||
std::shared_ptr<FilledTexturePlayerColored> filledBackground;
|
||||
std::shared_ptr<CLabel> labelTitle;
|
||||
std::shared_ptr<CLabel> labelUsername;
|
||||
std::shared_ptr<CTextBox> labelStatus;
|
||||
|
@ -31,7 +31,7 @@ GlobalLobbyServerSetup::GlobalLobbyServerSetup()
|
||||
pos.w = 284;
|
||||
pos.h = 340;
|
||||
|
||||
background = std::make_shared<FilledTexturePlayerColored>(ImagePath::builtin("DiBoxBck"), Rect(0, 0, pos.w, pos.h));
|
||||
filledBackground = std::make_shared<FilledTexturePlayerColored>(ImagePath::builtin("DiBoxBck"), Rect(0, 0, pos.w, pos.h));
|
||||
labelTitle = std::make_shared<CLabel>( pos.w / 2, 20, FONT_BIG, ETextAlignment::CENTER, Colors::YELLOW, CGI->generaltexth->translate("vcmi.lobby.room.create"));
|
||||
labelPlayerLimit = std::make_shared<CLabel>( pos.w / 2, 48, FONT_MEDIUM, ETextAlignment::CENTER, Colors::YELLOW, CGI->generaltexth->translate("vcmi.lobby.room.players.limit"));
|
||||
labelRoomType = std::make_shared<CLabel>( pos.w / 2, 108, FONT_MEDIUM, ETextAlignment::CENTER, Colors::YELLOW, CGI->generaltexth->translate("vcmi.lobby.room.type"));
|
||||
@ -75,7 +75,7 @@ GlobalLobbyServerSetup::GlobalLobbyServerSetup()
|
||||
buttonCreate = std::make_shared<CButton>(Point(10, 300), AnimationPath::builtin("MuBchck"), CButton::tooltip(), [this](){ onCreate(); });
|
||||
buttonClose = std::make_shared<CButton>(Point(210, 300), AnimationPath::builtin("MuBcanc"), CButton::tooltip(), [this](){ onClose(); });
|
||||
|
||||
background->playerColored(PlayerColor(1));
|
||||
filledBackground->playerColored(PlayerColor(1));
|
||||
|
||||
updateDescription();
|
||||
center();
|
||||
|
@ -19,7 +19,7 @@ class CToggleGroup;
|
||||
|
||||
class GlobalLobbyServerSetup : public CWindowObject
|
||||
{
|
||||
std::shared_ptr<FilledTexturePlayerColored> background;
|
||||
std::shared_ptr<FilledTexturePlayerColored> filledBackground;
|
||||
std::shared_ptr<CLabel> labelTitle;
|
||||
|
||||
std::shared_ptr<CLabel> labelPlayerLimit;
|
||||
|
@ -24,7 +24,7 @@ class GlobalLobbyWidget : public InterfaceObjectConfigurable
|
||||
std::shared_ptr<CIntObject> buildRoomList(const JsonNode &) const;
|
||||
|
||||
public:
|
||||
GlobalLobbyWidget(GlobalLobbyWindow * window);
|
||||
explicit GlobalLobbyWidget(GlobalLobbyWindow * window);
|
||||
|
||||
std::shared_ptr<CLabel> getAccountNameLabel();
|
||||
std::shared_ptr<CTextInput> getMessageInput();
|
||||
|
@ -72,10 +72,6 @@ JsonNode::JsonNode(JsonType Type)
|
||||
setType(Type);
|
||||
}
|
||||
|
||||
JsonNode::JsonNode(const uint8_t *data, size_t datasize)
|
||||
:JsonNode(reinterpret_cast<const char*>(data), datasize)
|
||||
{}
|
||||
|
||||
JsonNode::JsonNode(const std::byte *data, size_t datasize)
|
||||
:JsonNode(reinterpret_cast<const char*>(data), datasize)
|
||||
{}
|
||||
|
@ -51,7 +51,6 @@ public:
|
||||
JsonNode(JsonType Type = JsonType::DATA_NULL);
|
||||
//Create tree from Json-formatted input
|
||||
explicit JsonNode(const char * data, size_t datasize);
|
||||
explicit JsonNode(const uint8_t * data, size_t datasize);
|
||||
explicit JsonNode(const std::byte * data, size_t datasize);
|
||||
//Create tree from JSON file
|
||||
explicit JsonNode(const JsonPath & fileURI);
|
||||
|
@ -23,9 +23,13 @@ protected:
|
||||
public:
|
||||
CLoaderBase(IBinaryReader * r): reader(r){};
|
||||
|
||||
inline int read(void * data, unsigned size)
|
||||
inline void read(void * data, unsigned size, bool reverseEndianess)
|
||||
{
|
||||
return reader->read(data, size);
|
||||
auto bytePtr = reinterpret_cast<std::byte*>(data);
|
||||
|
||||
reader->read(bytePtr, size);
|
||||
if(reverseEndianess)
|
||||
std::reverse(bytePtr, bytePtr + size);
|
||||
};
|
||||
};
|
||||
|
||||
@ -170,11 +174,7 @@ public:
|
||||
template < class T, typename std::enable_if < std::is_fundamental<T>::value && !std::is_same<T, bool>::value, int >::type = 0 >
|
||||
void load(T &data)
|
||||
{
|
||||
unsigned length = sizeof(data);
|
||||
char * dataPtr = reinterpret_cast<char *>(&data);
|
||||
this->read(dataPtr,length);
|
||||
if(reverseEndianess)
|
||||
std::reverse(dataPtr, dataPtr + length);
|
||||
this->read(static_cast<void *>(&data), sizeof(data), reverseEndianess);
|
||||
}
|
||||
|
||||
template < typename T, typename std::enable_if < is_serializeable<BinaryDeserializer, T>::value, int >::type = 0 >
|
||||
@ -439,7 +439,7 @@ public:
|
||||
{
|
||||
ui32 length = readAndCheckLength();
|
||||
data.resize(length);
|
||||
this->read((void*)data.c_str(),length);
|
||||
this->read(static_cast<void *>(data.data()), length, false);
|
||||
}
|
||||
|
||||
template<typename... TN>
|
||||
|
@ -23,9 +23,9 @@ protected:
|
||||
public:
|
||||
CSaverBase(IBinaryWriter * w): writer(w){};
|
||||
|
||||
inline int write(const void * data, unsigned size)
|
||||
inline void write(const void * data, unsigned size)
|
||||
{
|
||||
return writer->write(data, size);
|
||||
writer->write(reinterpret_cast<const std::byte*>(data), size);
|
||||
};
|
||||
};
|
||||
|
||||
@ -145,7 +145,7 @@ public:
|
||||
void save(const T &data)
|
||||
{
|
||||
// save primitive - simply dump binary data to output
|
||||
this->write(&data,sizeof(data));
|
||||
this->write(static_cast<const void *>(&data), sizeof(data));
|
||||
}
|
||||
|
||||
template < typename T, typename std::enable_if < std::is_enum<T>::value, int >::type = 0 >
|
||||
@ -312,7 +312,7 @@ public:
|
||||
void save(const std::string &data)
|
||||
{
|
||||
save(ui32(data.length()));
|
||||
this->write(data.c_str(),(unsigned int)data.size());
|
||||
this->write(static_cast<const void *>(data.data()), data.size());
|
||||
}
|
||||
template <typename T1, typename T2>
|
||||
void save(const std::pair<T1,T2> &data)
|
||||
|
@ -21,7 +21,7 @@ CLoadFile::CLoadFile(const boost::filesystem::path & fname, ESerializationVersio
|
||||
//must be instantiated in .cpp file for access to complete types of all member fields
|
||||
CLoadFile::~CLoadFile() = default;
|
||||
|
||||
int CLoadFile::read(void * data, unsigned size)
|
||||
int CLoadFile::read(std::byte * data, unsigned size)
|
||||
{
|
||||
sfile->read(reinterpret_cast<char *>(data), size);
|
||||
return size;
|
||||
@ -92,7 +92,7 @@ void CLoadFile::clear()
|
||||
void CLoadFile::checkMagicBytes(const std::string &text)
|
||||
{
|
||||
std::string loaded = text;
|
||||
read((void *)loaded.data(), static_cast<unsigned int>(text.length()));
|
||||
read(reinterpret_cast<std::byte*>(loaded.data()), text.length());
|
||||
if(loaded != text)
|
||||
throw std::runtime_error("Magic bytes doesn't match!");
|
||||
}
|
||||
|
@ -23,7 +23,7 @@ public:
|
||||
|
||||
CLoadFile(const boost::filesystem::path & fname, ESerializationVersion minimalVersion = ESerializationVersion::CURRENT); //throws!
|
||||
virtual ~CLoadFile();
|
||||
int read(void * data, unsigned size) override; //throws!
|
||||
int read(std::byte * data, unsigned size) override; //throws!
|
||||
|
||||
void openNextFile(const boost::filesystem::path & fname, ESerializationVersion minimalVersion); //throws!
|
||||
void clear();
|
||||
|
@ -12,7 +12,7 @@
|
||||
|
||||
VCMI_LIB_NAMESPACE_BEGIN
|
||||
|
||||
int CMemorySerializer::read(void * data, unsigned size)
|
||||
int CMemorySerializer::read(std::byte * data, unsigned size)
|
||||
{
|
||||
if(buffer.size() < readPos + size)
|
||||
throw std::runtime_error(boost::str(boost::format("Cannot read past the buffer (accessing index %d, while size is %d)!") % (readPos + size - 1) % buffer.size()));
|
||||
@ -22,7 +22,7 @@ int CMemorySerializer::read(void * data, unsigned size)
|
||||
return size;
|
||||
}
|
||||
|
||||
int CMemorySerializer::write(const void * data, unsigned size)
|
||||
int CMemorySerializer::write(const std::byte * data, unsigned size)
|
||||
{
|
||||
auto oldSize = buffer.size(); //and the pos to write from
|
||||
buffer.resize(oldSize + size);
|
||||
|
@ -25,8 +25,8 @@ public:
|
||||
BinaryDeserializer iser;
|
||||
BinarySerializer oser;
|
||||
|
||||
int read(void * data, unsigned size) override; //throws!
|
||||
int write(const void * data, unsigned size) override;
|
||||
int read(std::byte * data, unsigned size) override; //throws!
|
||||
int write(const std::byte * data, unsigned size) override;
|
||||
|
||||
CMemorySerializer();
|
||||
|
||||
|
@ -21,9 +21,9 @@ CSaveFile::CSaveFile(const boost::filesystem::path &fname)
|
||||
//must be instantiated in .cpp file for access to complete types of all member fields
|
||||
CSaveFile::~CSaveFile() = default;
|
||||
|
||||
int CSaveFile::write(const void * data, unsigned size)
|
||||
int CSaveFile::write(const std::byte * data, unsigned size)
|
||||
{
|
||||
sfile->write((char *)data,size);
|
||||
sfile->write(reinterpret_cast<const char *>(data), size);
|
||||
return size;
|
||||
}
|
||||
|
||||
@ -66,7 +66,7 @@ void CSaveFile::clear()
|
||||
|
||||
void CSaveFile::putMagicBytes(const std::string &text)
|
||||
{
|
||||
write(text.c_str(), static_cast<unsigned int>(text.length()));
|
||||
write(reinterpret_cast<const std::byte*>(text.c_str()), text.length());
|
||||
}
|
||||
|
||||
VCMI_LIB_NAMESPACE_END
|
||||
|
@ -23,7 +23,7 @@ public:
|
||||
|
||||
CSaveFile(const boost::filesystem::path &fname); //throws!
|
||||
~CSaveFile();
|
||||
int write(const void * data, unsigned size) override;
|
||||
int write(const std::byte * data, unsigned size) override;
|
||||
|
||||
void openNextFile(const boost::filesystem::path &fname); //throws!
|
||||
void clear();
|
||||
|
@ -175,14 +175,14 @@ struct VectorizedIDType<CGHeroInstance>
|
||||
class DLL_LINKAGE IBinaryReader : public virtual CSerializer
|
||||
{
|
||||
public:
|
||||
virtual int read(void * data, unsigned size) = 0;
|
||||
virtual int read(std::byte * data, unsigned size) = 0;
|
||||
};
|
||||
|
||||
/// Base class for serializers
|
||||
class DLL_LINKAGE IBinaryWriter : public virtual CSerializer
|
||||
{
|
||||
public:
|
||||
virtual int write(const void * data, unsigned size) = 0;
|
||||
virtual int write(const std::byte * data, unsigned size) = 0;
|
||||
};
|
||||
|
||||
VCMI_LIB_NAMESPACE_END
|
||||
|
@ -24,7 +24,7 @@ class DLL_LINKAGE ConnectionPackWriter final : public IBinaryWriter
|
||||
public:
|
||||
std::vector<std::byte> buffer;
|
||||
|
||||
int write(const void * data, unsigned size) final;
|
||||
int write(const std::byte * data, unsigned size) final;
|
||||
};
|
||||
|
||||
class DLL_LINKAGE ConnectionPackReader final : public IBinaryReader
|
||||
@ -33,25 +33,21 @@ public:
|
||||
const std::vector<std::byte> * buffer;
|
||||
size_t position;
|
||||
|
||||
int read(void * data, unsigned size) final;
|
||||
int read(std::byte * data, unsigned size) final;
|
||||
};
|
||||
|
||||
int ConnectionPackWriter::write(const void * data, unsigned size)
|
||||
int ConnectionPackWriter::write(const std::byte * data, unsigned size)
|
||||
{
|
||||
const std::byte * begin_ptr = static_cast<const std::byte *>(data);
|
||||
const std::byte * end_ptr = begin_ptr + size;
|
||||
buffer.insert(buffer.end(), begin_ptr, end_ptr);
|
||||
buffer.insert(buffer.end(), data, data + size);
|
||||
return size;
|
||||
}
|
||||
|
||||
int ConnectionPackReader::read(void * data, unsigned size)
|
||||
int ConnectionPackReader::read(std::byte * data, unsigned size)
|
||||
{
|
||||
if (position + size > buffer->size())
|
||||
throw std::runtime_error("End of file reached when reading received network pack!");
|
||||
|
||||
std::byte * begin_ptr = static_cast<std::byte *>(data);
|
||||
|
||||
std::copy_n(buffer->begin() + position, size, begin_ptr);
|
||||
std::copy_n(buffer->begin() + position, size, data);
|
||||
position += size;
|
||||
return size;
|
||||
}
|
||||
|
@ -46,7 +46,7 @@ public:
|
||||
std::string uuid;
|
||||
int connectionID;
|
||||
|
||||
CConnection(std::weak_ptr<INetworkConnection> networkConnection);
|
||||
explicit CConnection(std::weak_ptr<INetworkConnection> networkConnection);
|
||||
~CConnection();
|
||||
|
||||
void sendPack(const CPack * pack);
|
||||
|
@ -205,10 +205,10 @@ void LobbyServer::onNewConnection(const NetworkConnectionPtr & connection)
|
||||
|
||||
void LobbyServer::onDisconnected(const NetworkConnectionPtr & connection, const std::string & errorMessage)
|
||||
{
|
||||
if (activeAccounts.count(connection))
|
||||
if(activeAccounts.count(connection))
|
||||
database->setAccountOnline(activeAccounts.at(connection), false);
|
||||
|
||||
if (activeGameRooms.count(connection))
|
||||
if(activeGameRooms.count(connection))
|
||||
database->setGameRoomStatus(activeGameRooms.at(connection), LobbyRoomState::CLOSED);
|
||||
|
||||
// NOTE: lost connection can be in only one of these lists (or in none of them)
|
||||
|
Loading…
Reference in New Issue
Block a user