vdr 2.8.4
channels.h
Go to the documentation of this file.
1/*
2 * channels.h: Channel handling
3 *
4 * See the main source file 'vdr.c' for copyright information and
5 * how to reach the author.
6 *
7 * $Id: channels.h 5.4 2026/07/19 16:41:47 kls Exp $
8 */
9
10#ifndef __CHANNELS_H
11#define __CHANNELS_H
12
13#include "config.h"
14#include "sources.h"
15#include "thread.h"
16#include "tools.h"
17
18#define ISTRANSPONDER(f1, f2) (abs((f1) - (f2)) < 4) //XXX
19
20#define CHANNELMOD_NONE 0x00
21#define CHANNELMOD_ALL 0xFF
22#define CHANNELMOD_NAME 0x01
23#define CHANNELMOD_PIDS 0x02
24#define CHANNELMOD_ID 0x04
25#define CHANNELMOD_AUX 0x08
26#define CHANNELMOD_CA 0x10
27#define CHANNELMOD_TRANSP 0x20
28#define CHANNELMOD_LANGS 0x40
29#define CHANNELMOD_RETUNE (CHANNELMOD_PIDS | CHANNELMOD_CA | CHANNELMOD_TRANSP)
30
31#define MAXAPIDS 32 // audio
32#define MAXDPIDS 16 // dolby (AC3 + DTS)
33#define MAXSPIDS 32 // subtitles
34#define MAXCAIDS 12 // conditional access
35
36#define MAXLANGCODE1 4 // a 3 letter language code, zero terminated
37#define MAXLANGCODE2 8 // up to two 3 letter language codes, separated by '+' and zero terminated
38
39#define CA_FTA 0x0000
40#define CA_DVB_MIN 0x0001
41#define CA_DVB_MAX 0x000F
42#define CA_USER_MIN 0x0010
43#define CA_USER_MAX 0x00FF
44#define CA_ENCRYPTED_MIN 0x0100
45#define CA_ENCRYPTED_MAX 0xFFFF
46
47struct tChannelID {
48private:
49 int source;
50 int nid;
51 int tid;
52 int sid;
53 int rid;
54public:
55 tChannelID(void) { source = nid = tid = sid = rid = 0; }
56 tChannelID(int Source, int Nid, int Tid, int Sid, int Rid = 0) { source = Source; nid = Nid; tid = Tid; sid = Sid; rid = Rid; }
57 bool operator== (const tChannelID &arg) const { return source == arg.source && nid == arg.nid && tid == arg.tid && sid == arg.sid && rid == arg.rid; }
58 bool Valid(void) const { return (nid || tid) && sid; } // rid is optional and source may be 0//XXX source may not be 0???
59 tChannelID &ClrRid(void) { rid = 0; return *this; }
61 int Source(void) const { return source; }
62 int Nid(void) const { return nid; }
63 int Tid(void) const { return tid; }
64 int Sid(void) const { return sid; }
65 int Rid(void) const { return rid; }
66 static tChannelID FromString(const char *s);
67 cString ToString(void) const;
68 static const tChannelID InvalidID;
69 };
70
71class cChannel;
72
73class cLinkChannel : public cListObject {
74private:
76public:
78 cChannel *Channel(void) { return channel; }
79 };
80
81class cLinkChannels : public cList<cLinkChannel> {
82 };
83
84class cSchedule;
85class cChannels;
86
87class cChannel : public cListObject {
88 friend class cSchedules;
89 friend class cMenuEditChannel;
90 friend class cMenuSetupMisc;
91 friend class cDvbSourceParam;
92 friend class cChannels; // MarkObsoleteChannels() renames with the plain names
93private:
94 static cString ToText(const cChannel *Channel);
95 char *name;
96 char *shortName;
97 char *provider;
100 int frequency; // MHz
101 mutable int transponder; // cached value
103 int srate;
104 int vpid;
105 int ppid;
106 int vtype;
107 int apids[MAXAPIDS + 1]; // list is zero-terminated
108 int atypes[MAXAPIDS + 1]; // list is zero-terminated
110 int dpids[MAXDPIDS + 1]; // list is zero-terminated
111 int dtypes[MAXDPIDS + 1]; // list is zero-terminated
113 int spids[MAXSPIDS + 1]; // list is zero-terminated
118 int tpid;
119 int caids[MAXCAIDS + 1]; // list is zero-terminated
120 int nid;
121 int tid;
122 int sid;
123 int rid;
124 int lcn; // Logical channel number assigned by data stream (or -1 if not available)
125 int number; // Sequence number assigned on load
131 mutable int modification;
132 time_t seen; // When this channel was last seen in the SDT of its transponder
133 mutable const cSchedule *schedule;
137 void UpdateNameSource(void);
138public:
139 cChannel(void);
140 cChannel(const cChannel &Channel);
141 ~cChannel();
142 cChannel& operator= (const cChannel &Channel);
143 cString ToText(void) const;
144 bool Parse(const char *s);
145 bool Save(FILE *f);
146 const char *Name(void) const;
147 const char *ShortName(bool OrName = false) const;
148 const char *Provider(void) const { return provider; }
149 const char *PortalName(void) const { return portalName; }
150 int Frequency(void) const { return frequency; }
151 int Transponder(void) const;
152 static int Transponder(int Frequency, char Polarization);
153 int Source(void) const { return source; }
154 int Srate(void) const { return srate; }
155 int Vpid(void) const { return vpid; }
156 int Ppid(void) const { return ppid; }
157 int Vtype(void) const { return vtype; }
158 const int *Apids(void) const { return apids; }
159 const int *Dpids(void) const { return dpids; }
160 const int *Spids(void) const { return spids; }
161 int Apid(int i) const { return (0 <= i && i < MAXAPIDS) ? apids[i] : 0; }
162 int Dpid(int i) const { return (0 <= i && i < MAXDPIDS) ? dpids[i] : 0; }
163 int Spid(int i) const { return (0 <= i && i < MAXSPIDS) ? spids[i] : 0; }
164 const char (*Alangs() const)[MAXLANGCODE2] { return alangs; }
165 const char (*Dlangs() const)[MAXLANGCODE2] { return dlangs; }
166 const char (*Slangs() const)[MAXLANGCODE2] { return slangs; }
167 const char *Alang(int i) const { return (0 <= i && i < MAXAPIDS) ? alangs[i] : ""; }
168 const char *Dlang(int i) const { return (0 <= i && i < MAXDPIDS) ? dlangs[i] : ""; }
169 const char *Slang(int i) const { return (0 <= i && i < MAXSPIDS) ? slangs[i] : ""; }
170 const int *Atypes(void) const { return atypes; }
171 const int *Dtypes(void) const { return dtypes; }
172 const uchar *Stypes(void) const { return subtitlingTypes; }
173 int Atype(int i) const { return (0 <= i && i < MAXAPIDS) ? atypes[i] : 0; }
174 int Dtype(int i) const { return (0 <= i && i < MAXDPIDS) ? dtypes[i] : 0; }
175 uchar SubtitlingType(int i) const { return (0 <= i && i < MAXSPIDS) ? subtitlingTypes[i] : uchar(0); }
176 uint16_t CompositionPageId(int i) const { return (0 <= i && i < MAXSPIDS) ? compositionPageIds[i] : uint16_t(0); }
177 uint16_t AncillaryPageId(int i) const { return (0 <= i && i < MAXSPIDS) ? ancillaryPageIds[i] : uint16_t(0); }
178 const uint16_t *CompositionPageIds(void) const { return compositionPageIds; }
179 const uint16_t *AncillaryPageIds(void) const { return ancillaryPageIds; }
180 int Tpid(void) const { return tpid; }
181 const int *Caids(void) const { return caids; }
182 int Ca(int Index = 0) const { return Index < MAXCAIDS ? caids[Index] : 0; }
183 int Nid(void) const { return nid; }
184 int Tid(void) const { return tid; }
185 int Sid(void) const { return sid; }
186 int Rid(void) const { return rid; }
187 int Lcn(void) const { return lcn; }
188 int Number(void) const { return number; }
189 void SetNumber(int Number) { number = Number; }
190 bool GroupSep(void) const { return groupSep; }
191 const char *Parameters(void) const { return parameters; }
192 const cSchedule *Schedule(void) const { return schedule; }
193 const cLinkChannels* LinkChannels(void) const { return linkChannels; }
194 const cChannel *RefChannel(void) const { return refChannel; }
195 bool IsAtsc(void) const { return cSource::IsAtsc(source); }
196 bool IsCable(void) const { return cSource::IsCable(source); }
197 bool IsSat(void) const { return cSource::IsSat(source); }
198 bool IsTerr(void) const { return cSource::IsTerr(source); }
199 bool IsSourceType(char Source) const { return cSource::IsType(source, Source); }
200 tChannelID GetChannelID(void) const { return tChannelID(source, nid, (nid || tid) ? tid : Transponder(), sid, rid); }
201 int Modification(int Mask = CHANNELMOD_ALL) const;
202 time_t Seen(void) const { return seen; }
203 void CopyTransponderData(const cChannel *Channel);
204 bool SetTransponderData(int Source, int Frequency, int Srate, const char *Parameters, bool Quiet = false);
205 bool SetSource(int Source);
206 bool SetId(cChannels *Channels, int Nid, int Tid, int Sid, int Rid = 0);
207 bool SetLcn(int Lcn);
208 bool SetName(const char *Name, const char *ShortName, const char *Provider);
209 bool SetPortalName(const char *PortalName);
210 bool SetPids(int Vpid, int Ppid, int Vtype, int *Apids, int *Atypes, char ALangs[][MAXLANGCODE2], int *Dpids, int *Dtypes, char DLangs[][MAXLANGCODE2], int *Spids, char SLangs[][MAXLANGCODE2], int Tpid);
211 bool SetCaIds(const int *CaIds); // list must be zero-terminated
212 bool SetCaDescriptors(int Level);
215 bool SetSubtitlingDescriptors(uchar *SubtitlingTypes, uint16_t *CompositionPageIds, uint16_t *AncillaryPageIds);
216 void SetSeen(void);
217 void DelLinkChannel(cChannel *LinkChannel);
218 };
219
220class cChannels : public cConfig<cChannel> {
221private:
223 static int maxNumber;
228 void DeleteDuplicateChannels(void);
229public:
230 cChannels(void);
231 static const cChannels *GetChannelsRead(cStateKey &StateKey, int TimeoutMs = 0);
234 static cChannels *GetChannelsWrite(cStateKey &StateKey, int TimeoutMs = 0);
237 static bool Load(const char *FileName, bool AllowComments = false, bool MustExist = false);
238 void HashChannel(cChannel *Channel);
239 void UnhashChannel(cChannel *Channel);
240 int GetNextGroup(int Idx) const;
241 int GetPrevGroup(int Idx) const;
242 int GetNextNormal(int Idx) const;
243 int GetPrevNormal(int Idx) const;
244 void ReNumber(void);
245 bool MoveNeedsDecrement(cChannel *From, cChannel *To); // Detect special case when moving a channel (closely related to Renumber())
246 void Del(cChannel *Channel);
247 const cChannel *GetByNumber(int Number, int SkipGap = 0) const;
248 cChannel *GetByNumber(int Number, int SkipGap = 0) { return const_cast<cChannel *>(static_cast<const cChannels *>(this)->GetByNumber(Number, SkipGap)); }
249 const cChannel *GetByServiceID(int Source, int Transponder, unsigned short ServiceID) const;
250 cChannel *GetByServiceID(int Source, int Transponder, unsigned short ServiceID) { return const_cast<cChannel *>(static_cast<const cChannels *>(this)->GetByServiceID(Source, Transponder, ServiceID)); }
251 const cChannel *GetByChannelID(tChannelID ChannelID, bool TryWithoutRid = false, bool TryWithoutPolarization = false) const;
252 cChannel *GetByChannelID(tChannelID ChannelID, bool TryWithoutRid = false, bool TryWithoutPolarization = false) { return const_cast<cChannel *>(static_cast<const cChannels *>(this)->GetByChannelID(ChannelID, TryWithoutRid, TryWithoutPolarization)); }
253 const cChannel *GetByTransponderID(tChannelID ChannelID) const;
254 cChannel *GetByTransponderID(tChannelID ChannelID) { return const_cast<cChannel *>(static_cast<const cChannels *>(this)->GetByTransponderID(ChannelID)); }
255 bool HasUniqueChannelID(const cChannel *NewChannel, const cChannel *OldChannel = NULL) const;
256 bool SwitchTo(int Number) const;
257 static int MaxNumber(void) { return maxNumber; }
258 static int MaxChannelNameLength(void);
259 static int MaxShortChannelNameLength(void);
260 void SetModifiedByUser(void);
261 bool ModifiedByUser(int &State) const;
266 cChannel *NewChannel(const cChannel *Transponder, const char *Name, const char *ShortName, const char *Provider, int Nid, int Tid, int Sid, int Rid = 0);
267 bool MarkObsoleteChannels(int Source, int Nid, int Tid);
268 };
269
270// Provide lock controlled access to the list:
271
273
274// These macros provide a convenient way of locking the global channels list
275// and making sure the lock is released as soon as the current scope is left
276// (note that these macros wait forever to obtain the lock!):
277
278#define LOCK_CHANNELS_READ USE_LIST_LOCK_READ(Channels)
279#define LOCK_CHANNELS_WRITE USE_LIST_LOCK_WRITE(Channels)
280
281cString ChannelString(const cChannel *Channel, int Number);
282
283#endif //__CHANNELS_H
cString ChannelString(const cChannel *Channel, int Number)
Definition channels.c:1135
#define MAXLANGCODE2
Definition channels.h:37
#define MAXDPIDS
Definition channels.h:32
#define CHANNELMOD_ALL
Definition channels.h:21
#define MAXAPIDS
Definition channels.h:31
#define MAXSPIDS
Definition channels.h:33
#define MAXCAIDS
Definition channels.h:34
int ppid
Definition channels.h:105
time_t Seen(void) const
Definition channels.h:202
const int * Dpids(void) const
Definition channels.h:159
const char(* Alangs() const)[MAXLANGCODE2]
Definition channels.h:164
int transponder
Definition channels.h:101
const uchar * Stypes(void) const
Definition channels.h:172
const cChannel * RefChannel(void) const
Definition channels.h:194
bool Parse(const char *s)
Definition channels.c:614
const cSchedule * Schedule(void) const
Definition channels.h:192
int tpid
Definition channels.h:118
int source
Definition channels.h:102
char * shortName
Definition channels.h:96
int number
Definition channels.h:125
int vpid
Definition channels.h:104
int frequency
Definition channels.h:100
const int * Atypes(void) const
Definition channels.h:170
int rid
Definition channels.h:123
int Nid(void) const
Definition channels.h:183
int Lcn(void) const
Definition channels.h:187
uint16_t AncillaryPageId(int i) const
Definition channels.h:177
static cString ToText(const cChannel *Channel)
Definition channels.c:552
uint16_t CompositionPageId(int i) const
Definition channels.h:176
friend class cDvbSourceParam
Definition channels.h:91
const char(* Slangs() const)[MAXLANGCODE2]
Definition channels.h:166
int Tpid(void) const
Definition channels.h:180
const char * Slang(int i) const
Definition channels.h:169
int caids[MAXCAIDS+1]
Definition channels.h:119
void SetNumber(int Number)
Definition channels.h:189
int nid
Definition channels.h:120
cString parameters
Definition channels.h:130
int Vpid(void) const
Definition channels.h:155
cChannel * refChannel
Definition channels.h:135
cString TransponderDataToString(void) const
Definition channels.c:545
friend class cChannels
Definition channels.h:92
bool SetCaIds(const int *CaIds)
Definition channels.c:459
friend class cSchedules
Definition channels.h:88
cString nameSource
Definition channels.h:128
bool SetName(const char *Name, const char *ShortName, const char *Provider)
Definition channels.c:266
int __BeginData__
Definition channels.h:99
const uint16_t * CompositionPageIds(void) const
Definition channels.h:178
int Atype(int i) const
Definition channels.h:173
int Tid(void) const
Definition channels.h:184
bool SetPortalName(const char *PortalName)
Definition channels.c:291
bool SetLinkChannels(cLinkChannels *LinkChannels)
Definition channels.c:492
int Source(void) const
Definition channels.h:153
int Number(void) const
Definition channels.h:188
int Dtype(int i) const
Definition channels.h:174
const char * Name(void) const
Definition channels.c:119
int Dpid(int i) const
Definition channels.h:162
char * name
Definition channels.h:95
int Vtype(void) const
Definition channels.h:157
int srate
Definition channels.h:103
int Apid(int i) const
Definition channels.h:161
tChannelID GetChannelID(void) const
Definition channels.h:200
int Rid(void) const
Definition channels.h:186
bool SetPids(int Vpid, int Ppid, int Vtype, int *Apids, int *Atypes, char ALangs[][MAXLANGCODE2], int *Dpids, int *Dtypes, char DLangs[][MAXLANGCODE2], int *Spids, char SLangs[][MAXLANGCODE2], int Tpid)
Definition channels.c:346
int sid
Definition channels.h:122
int lcn
Definition channels.h:124
const cSchedule * schedule
Definition channels.h:133
char alangs[MAXAPIDS][MAXLANGCODE2]
Definition channels.h:109
char dlangs[MAXDPIDS][MAXLANGCODE2]
Definition channels.h:112
bool GroupSep(void) const
Definition channels.h:190
int Ppid(void) const
Definition channels.h:156
const char * Parameters(void) const
Definition channels.h:191
bool SetLcn(int Lcn)
Definition channels.c:255
const int * Dtypes(void) const
Definition channels.h:171
friend class cMenuEditChannel
Definition channels.h:89
void CopyTransponderData(const cChannel *Channel)
Definition channels.c:175
time_t seen
Definition channels.h:132
uchar SubtitlingType(int i) const
Definition channels.h:175
int Ca(int Index=0) const
Definition channels.h:182
const char * Dlang(int i) const
Definition channels.h:168
int dpids[MAXDPIDS+1]
Definition channels.h:110
friend class cMenuSetupMisc
Definition channels.h:90
const int * Caids(void) const
Definition channels.h:181
int Frequency(void) const
Returns the actual frequency, as given in 'channels.conf'.
Definition channels.h:150
bool IsSat(void) const
Definition channels.h:197
bool IsCable(void) const
Definition channels.h:196
void SetRefChannel(cChannel *RefChannel)
Definition channels.c:540
const char * ShortName(bool OrName=false) const
Definition channels.c:128
bool SetTransponderData(int Source, int Frequency, int Srate, const char *Parameters, bool Quiet=false)
Definition channels.c:186
int tid
Definition channels.h:121
bool Save(FILE *f)
Definition channels.c:820
char slangs[MAXSPIDS][MAXLANGCODE2]
Definition channels.h:114
int spids[MAXSPIDS+1]
Definition channels.h:113
cString shortNameSource
Definition channels.h:129
const char * PortalName(void) const
Definition channels.h:149
int dtypes[MAXDPIDS+1]
Definition channels.h:111
uchar subtitlingTypes[MAXSPIDS]
Definition channels.h:115
int atypes[MAXAPIDS+1]
Definition channels.h:108
int Spid(int i) const
Definition channels.h:163
int apids[MAXAPIDS+1]
Definition channels.h:107
bool SetSource(int Source)
Definition channels.c:222
const int * Apids(void) const
Definition channels.h:158
void SetSeen(void)
Definition channels.c:438
const char(* Dlangs() const)[MAXLANGCODE2]
Definition channels.h:165
bool IsSourceType(char Source) const
Definition channels.h:199
bool SetId(cChannels *Channels, int Nid, int Tid, int Sid, int Rid=0)
Definition channels.c:235
int Modification(int Mask=CHANNELMOD_ALL) const
Definition channels.c:168
bool IsTerr(void) const
Definition channels.h:198
const char * Alang(int i) const
Definition channels.h:167
bool SetCaDescriptors(int Level)
Definition channels.c:481
cLinkChannels * linkChannels
Definition channels.h:134
int Transponder(void) const
Returns the transponder frequency in MHz, plus the polarization in case of sat.
Definition channels.c:152
uint16_t ancillaryPageIds[MAXSPIDS]
Definition channels.h:117
int __EndData__
Definition channels.h:127
int Srate(void) const
Definition channels.h:154
const uint16_t * AncillaryPageIds(void) const
Definition channels.h:179
int Sid(void) const
Definition channels.h:185
void DelLinkChannel(cChannel *LinkChannel)
Definition channels.c:443
bool groupSep
Definition channels.h:126
bool IsAtsc(void) const
Definition channels.h:195
char * portalName
Definition channels.h:98
const char * Provider(void) const
Definition channels.h:148
bool SetSubtitlingDescriptors(uchar *SubtitlingTypes, uint16_t *CompositionPageIds, uint16_t *AncillaryPageIds)
Definition channels.c:414
const cLinkChannels * LinkChannels(void) const
Definition channels.h:193
int vtype
Definition channels.h:106
int modification
Definition channels.h:131
void UpdateNameSource(void)
Definition channels.c:103
const int * Spids(void) const
Definition channels.h:160
cChannel(void)
Definition channels.c:54
uint16_t compositionPageIds[MAXSPIDS]
Definition channels.h:116
char * provider
Definition channels.h:97
cChannel & operator=(const cChannel &Channel)
Definition channels.c:91
static cChannels * GetChannelsWrite(cStateKey &StateKey, int TimeoutMs=0)
Gets the list of channels for write access.
Definition channels.c:859
void UnhashChannel(cChannel *Channel)
Definition channels.c:899
cChannel * GetByChannelID(tChannelID ChannelID, bool TryWithoutRid=false, bool TryWithoutPolarization=false)
Definition channels.h:252
static int MaxChannelNameLength(void)
Definition channels.c:1067
int GetNextGroup(int Idx) const
Get next channel group.
Definition channels.c:904
bool HasUniqueChannelID(const cChannel *NewChannel, const cChannel *OldChannel=NULL) const
Definition channels.c:1051
static int MaxNumber(void)
Definition channels.h:257
cChannels(void)
Definition channels.c:848
bool MoveNeedsDecrement(cChannel *From, cChannel *To)
Definition channels.c:954
int GetPrevNormal(int Idx) const
Get previous normal channel (not group).
Definition channels.c:928
static int maxChannelNameLength
Definition channels.h:224
const cChannel * GetByServiceID(int Source, int Transponder, unsigned short ServiceID) const
Definition channels.c:996
cChannel * GetByNumber(int Number, int SkipGap=0)
Definition channels.h:248
bool ModifiedByUser(int &State) const
Returns true if the channels have been modified by the user since the last call to this function with...
Definition channels.c:1097
static int MaxShortChannelNameLength(void)
Definition channels.c:1079
static int maxNumber
Definition channels.h:223
static int maxShortChannelNameLength
Definition channels.h:225
void HashChannel(cChannel *Channel)
Definition channels.c:894
static const cChannels * GetChannelsRead(cStateKey &StateKey, int TimeoutMs=0)
Gets the list of channels for read access.
Definition channels.c:854
cHash< cChannel > channelsHashSid
Definition channels.h:227
void ReNumber(void)
Recalculate 'number' based on channel type.
Definition channels.c:936
const cChannel * GetByNumber(int Number, int SkipGap=0) const
Definition channels.c:981
void SetModifiedByUser(void)
Definition channels.c:1091
static cChannels channels
Definition channels.h:222
cChannel * NewChannel(const cChannel *Transponder, const char *Name, const char *ShortName, const char *Provider, int Nid, int Tid, int Sid, int Rid=0)
Definition channels.c:1104
const cChannel * GetByTransponderID(tChannelID ChannelID) const
Definition channels.c:1039
bool MarkObsoleteChannels(int Source, int Nid, int Tid)
Definition channels.c:1123
const cChannel * GetByChannelID(tChannelID ChannelID, bool TryWithoutRid=false, bool TryWithoutPolarization=false) const
Definition channels.c:1009
bool SwitchTo(int Number) const
Definition channels.c:1061
void DeleteDuplicateChannels(void)
Definition channels.c:864
int GetPrevGroup(int Idx) const
Get previous channel group.
Definition channels.c:912
cChannel * GetByServiceID(int Source, int Transponder, unsigned short ServiceID)
Definition channels.h:250
static bool Load(const char *FileName, bool AllowComments=false, bool MustExist=false)
Definition channels.c:883
cChannel * GetByTransponderID(tChannelID ChannelID)
Definition channels.h:254
void Del(cChannel *Channel)
Delete the given Channel from the list.
Definition channels.c:973
int GetNextNormal(int Idx) const
Get next normal channel (not group).
Definition channels.c:920
int modifiedByUser
Definition channels.h:226
cConfig(const char *NeedsLocking=NULL)
Definition config.h:129
const char * FileName(void)
Definition config.h:131
Definition tools.h:939
cChannel * channel
Definition channels.h:75
cLinkChannel(cChannel *Channel)
Definition channels.h:77
cChannel * Channel(void)
Definition channels.h:78
cListObject(const cListObject &ListObject)
Definition tools.h:553
int Index(void) const
Definition tools.c:2148
cList(const char *NeedsLocking=NULL)
Definition tools.h:652
static bool IsType(int Code, char Source)
Definition sources.h:59
static bool IsAtsc(int Code)
Definition sources.h:55
static bool IsTerr(int Code)
Definition sources.h:58
static bool IsCable(int Code)
Definition sources.h:56
static bool IsSat(int Code)
Definition sources.h:57
tChannelID(void)
Definition channels.h:55
tChannelID(int Source, int Nid, int Tid, int Sid, int Rid=0)
Definition channels.h:56
tChannelID & ClrRid(void)
Definition channels.h:59
static const tChannelID InvalidID
Definition channels.h:68
int Sid(void) const
Definition channels.h:64
bool Valid(void) const
Definition channels.h:58
int nid
actually the "original" network id
Definition channels.h:50
int Nid(void) const
Definition channels.h:62
static tChannelID FromString(const char *s)
Definition channels.c:23
cString ToString(void) const
Definition channels.c:38
int Source(void) const
Definition channels.h:61
int source
Definition channels.h:49
int Rid(void) const
Definition channels.h:65
tChannelID & ClrPolarization(void)
Definition channels.c:45
int Tid(void) const
Definition channels.h:63
bool operator==(const tChannelID &arg) const
Definition channels.h:57
#define DEF_LIST_LOCK(Class)
Definition tools.h:705
unsigned char uchar
Definition tools.h:31