Project SkyFire Core
SkyFire 5.4.8 server core API documentation
Loading...
Searching...
No Matches
loadlib.h
Go to the documentation of this file.
1/*
2* This file is part of Project SkyFire https://www.projectskyfire.org.
3* See LICENSE.md file for Copyright information
4*/
5
6#ifndef LOAD_LIB_H
7#define LOAD_LIB_H
8
9#include "StormLib.h"
10#include <map>
11#include <string>
12
13#ifdef _WIN32
14typedef __int64 int64;
15typedef __int32 int32;
16typedef __int16 int16;
17typedef __int8 int8;
18typedef unsigned __int64 uint64;
19typedef unsigned __int32 uint32;
20typedef unsigned __int16 uint16;
21typedef unsigned __int8 uint8;
22#else
23#include <stdint.h>
24#ifndef uint64_t
25#ifdef __linux__
26#include <linux/types.h>
27#endif
28#endif
29typedef int64_t int64;
30typedef int32_t int32;
31typedef int16_t int16;
32typedef int8_t int8;
33typedef uint64_t uint64;
34typedef uint32_t uint32;
35typedef uint16_t uint16;
36typedef uint8_t uint8;
37#endif
38
39#define FILE_FORMAT_VERSION 18
40
41#pragma pack(push, 1)
42
44{
45 char fcc_txt[4];
47};
48
49//
50// File version chunk
51//
53{
54 union{
56 char fcc_txt[4];
57 };
60};
61
63{
64public:
65 ~FileChunk();
66
69
70 template<class T>
71 T* As() { return (T*)data; }
72 void parseSubChunks();
73 std::multimap<std::string, FileChunk*> subchunks;
74 FileChunk* GetSubChunk(std::string const& name);
75};
76
78public:
81 uint8 *GetData() {return data;}
83
85 virtual ~ChunkedFile();
86 bool prepareLoadedData();
87 bool loadFile(HANDLE mpq, char *filename, bool log = true);
88 void free();
89
90 void parseChunks();
91 std::multimap<std::string, FileChunk*> chunks;
92 FileChunk* GetChunk(std::string const& name);
93};
94
95#pragma pack(pop)
96
97#endif
std::int32_t int32
Definition Define.h:73
std::uint8_t uint8
Definition Define.h:79
std::uint32_t uint32
Definition Define.h:77
std::int8_t int8
Definition Define.h:75
std::uint64_t uint64
Definition Define.h:76
std::int64_t int64
Definition Define.h:72
std::uint16_t uint16
Definition Define.h:78
std::int16_t int16
Definition Define.h:74
void free()
Definition loadlib.cpp:66
bool loadFile(HANDLE mpq, char *filename, bool log=true)
Definition loadlib.cpp:24
virtual ~ChunkedFile()
Definition loadlib.cpp:19
FileChunk * GetChunk(std::string const &name)
Definition loadlib.cpp:122
uint8 * data
Definition loadlib.h:79
void parseChunks()
Definition loadlib.cpp:96
std::multimap< std::string, FileChunk * > chunks
Definition loadlib.h:91
uint32 GetDataSize()
Definition loadlib.h:82
uint8 * GetData()
Definition loadlib.h:81
bool prepareLoadedData()
Definition loadlib.cpp:51
uint32 data_size
Definition loadlib.h:80
uint32 size
Definition loadlib.h:68
void parseSubChunks()
Definition loadlib.cpp:139
uint8 * data
Definition loadlib.h:67
T * As()
Definition loadlib.h:71
std::multimap< std::string, FileChunk * > subchunks
Definition loadlib.h:73
FileChunk * GetSubChunk(std::string const &name)
Definition loadlib.cpp:165
uint8_t uint8
Definition loadlib.h:36
uint32_t uint32
Definition loadlib.h:34
uint32 size
Definition loadlib.h:58
char fcc_txt[4]
Definition loadlib.h:56
uint32 ver
Definition loadlib.h:59
uint32 fcc
Definition loadlib.h:55
uint32 fcc
Definition loadlib.h:46
char fcc_txt[4]
Definition loadlib.h:45