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
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
|
/*
* $Id: string.h,v 1.5 2004/12/08 18:47:37 lordjaxom Exp $
*/
#ifndef VDR_TEXT2SKIN_XML_STRING_H
#define VDR_TEXT2SKIN_XML_STRING_H
#include "xml/type.h"
#include <string>
#include <vector>
enum exToken {
tDateTime,
// Channel Display
tChannelNumber,
tChannelName,
tChannelShortName,
tChannelBouquet,
// next 8 also in Menu
tPresentStartDateTime,
tPresentVPSDateTime,
tPresentEndDateTime,
tPresentDuration,
tPresentProgress,
tPresentTitle,
tPresentShortText,
tPresentDescription,
tFollowingStartDateTime,
tFollowingVPSDateTime,
tFollowingEndDateTime,
tFollowingDuration,
tFollowingTitle,
tFollowingShortText,
tFollowingDescription,
tLanguage,
tHasTeletext,
tHasMultilang,
tHasDolby,
tIsEncrypted,
tIsRadio,
tIsRecording,
// next 3 also in Menu
tHasVPS,
tHasTimer,
tIsRunning,
// VolumeDisplay
tVolumeCurrent,
tVolumeTotal,
tIsMute,
// Message Display
tMessage,
tMessageStatus,
tMessageInfo,
tMessageWarning,
tMessageError,
// Replay Display
tReplayTitle,
tReplayPositionIndex,
tReplayDurationIndex,
tReplayPrompt,
tIsPlaying,
tIsFastForward,
tIsFastRewind,
tIsSlowForward,
tIsSlowRewind,
tIsPausing,
tReplayPosition,
tReplayDuration,
tReplayMode,
// Menu Page
tMenuTitle,
tMenuGroup,
tIsMenuGroup,
tMenuItem,
tIsMenuItem,
tMenuCurrent,
tIsMenuCurrent,
tMenuText,
tButtonRed,
tButtonGreen,
tButtonYellow,
tButtonBlue,
tCanScrollUp,
tCanScrollDown,
#define __COUNT_TOKEN__ (tCanScrollDown + 1)
};
struct txToken {
exToken Type;
uint Offset;
std::string Attrib;
int Index;
int Tab;
txToken(void): Index(-1), Tab(-1) {}
txToken(exToken t, uint o, const std::string &a): Type(t), Offset(o), Attrib(a), Index(-1), Tab(-1) {}
static std::string Token(const txToken &Token);
};
class cxString {
private:
std::string mText;
std::vector<txToken> mTokens;
public:
cxString(void);
bool Parse(const std::string &Text);
cxType Evaluate(void) const;
void SetIndex(uint Index, int Tab);
};
inline void cxString::SetIndex(uint Index, int Tab)
{
for (uint i = 0; i < mTokens.size(); ++i) {
mTokens[i].Index = Index;
mTokens[i].Tab = Tab;
}
}
#endif // VDR_TEXT2SKIN_XML_STRING_H
|