Sync DrDump crash handler with TortoiseSVN codebase
[TortoiseGit.git] / ext / CrashServer / CrashHandler / SendRpt / Serializer.h
blob7c9756c1f794095237af6cd5dce8929ea31e7f01
1 // Copyright 2014 Idol Software, Inc.
2 //
3 // This file is part of Doctor Dump SDK.
4 //
5 // Doctor Dump SDK is free software: you can redistribute it and/or modify
6 // it under the terms of the GNU Lesser General Public License as published by
7 // the Free Software Foundation, either version 3 of the License, or
8 // (at your option) any later version.
9 //
10 // This program is distributed in the hope that it will be useful,
11 // but WITHOUT ANY WARRANTY; without even the implied warranty of
12 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 // GNU Lesser General Public License for more details.
15 // You should have received a copy of the GNU Lesser General Public License
16 // along with this program. If not, see <http://www.gnu.org/licenses/>.
18 #pragma once
20 #include "Config.h"
22 class Serializer
24 const BYTE* m_buf;
25 size_t m_size;
26 std::vector<BYTE> m_storage;
28 public:
30 Serializer();
31 Serializer(const CString& hex);
32 Serializer(const BYTE* buf, size_t size);
34 CString GetHex() const;
36 bool IsReading() const { return m_buf != nullptr; }
38 Serializer& SerSimpleType(BYTE* ptr, size_t size);
39 Serializer& operator << (BOOL& val) { return SerSimpleType((BYTE*)&val, sizeof(val)); }
40 Serializer& operator << (USHORT& val) { return SerSimpleType((BYTE*)&val, sizeof(val)); }
41 Serializer& operator << (DWORD& val) { return SerSimpleType((BYTE*)&val, sizeof(val)); }
42 Serializer& operator << (HANDLE& val) { return SerSimpleType((BYTE*)&val, sizeof(val)); }
43 Serializer& operator << (CStringA& val);
44 Serializer& operator << (CStringW& val);
47 Serializer& operator << (Serializer& ser, MINIDUMP_EXCEPTION_INFORMATION& val);
48 Serializer& operator << (Serializer& ser, Config& cfg);
49 Serializer& operator << (Serializer& ser, Params& param);