1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
|
#ifndef DATA_H
#define DATA_H
#include "pl.h"
#include "util.h"
#include "wcharptr.h"
struct ElvData
{
int rating = 0;
bool bWatched = false;
bool bTVOriginal = false;
wchar_t sRating[3] = {0};
wchar_t siEp[5] = {0};
wchar_t title[128] = {0};
};
struct DlvData
{
wchar_t date[64] = {0};
wchar_t source[64] = {0};
wchar_t screenwriter[64] = {0};
wchar_t hint[128] = {0};
wchar_t wiki[128] = {0};
};
constexpr size_t CB_SERIALIZE_ELVDATA = 1+sizeof(ElvData);
unsigned char* Serialize(const ElvData& e, unsigned char* buf);
unsigned char* Unserialize(ElvData& e, unsigned char* buf);
inline int FromWeb(const int iEp, ElvData& e, DlvData& d) noexcept
{
WcharPtr title, wiki, date, source, hint;
const int r = Pl("episode_data","fetch_episode_data",iEp,&title,&wiki,&date,&source,&hint);
if (title) Wcscpy(e.title, title);
if (wiki) Wcscpy(d.wiki, wiki);
if (date) Wcscpy(d.date, date);
if (source) Wcscpy(d.source, source);
if (hint) Wcscpy(d.hint, hint);
return r;
}
inline bool FromProlog(const int iEp, ElvData& e) noexcept
{
if (WcharPtr title; Pl("episode_data","episode_title",iEp,&title))
Wcscpy(e.title, title);
else
return false;
if (Pl("episode_data","episode_rating",iEp,&e.rating))
Swprintf(e.sRating, L"%d", e.rating);
if (Pl("episode_data","tv_original",iEp))
e.bTVOriginal = true;
if (Pl("track_episodes","watched",iEp))
e.bWatched = true;
Swprintf(e.siEp, L"%d", iEp);
return true;
}
inline void FromProlog(const int iEp, DlvData& d) noexcept
{
if (WcharPtr wiki; Pl("episode_data","episode_wiki",iEp,&wiki))
Wcscpy(d.wiki, wiki);
if (WcharPtr screenwriter; Pl("episode_data","episode_datum",iEp,"Screenwriter",&screenwriter))
Wcscpy(d.screenwriter, screenwriter);
if (WcharPtr date; Pl("episode_data","episode_datum",iEp,"Date",&date))
Wcscpy(d.date, date);
if (WcharPtr source; Pl("episode_data","episode_datum",iEp,"Source",&source))
Wcscpy(d.source, source);
if (WcharPtr hint; Pl("episode_data","episode_datum",iEp,"Hint",&hint))
Wcscpy(d.hint, hint);
}
#endif
|