KVIrc 5.2.4
Developer APIs
KviKvsParameterProcessor.h
Go to the documentation of this file.
1#ifndef _KVI_KVS_PARAMETERPROCESSOR_H_
2#define _KVI_KVS_PARAMETERPROCESSOR_H_
3//=============================================================================
4//
5// File : KviKvsParameterProcessor.h
6// Creation date : Sun 17 Apr 2005 16:47:09 by Szymon Stefanek
7//
8// This file is part of the KVIrc IRC client distribution
9// Copyright (C) 2005-2010 Szymon Stefanek <pragma at kvirc dot net>
10//
11// This program is FREE software. You can redistribute it and/or
12// modify it under the terms of the GNU General Public License
13// as published by the Free Software Foundation; either version 2
14// of the License, or (at your option) any later version.
15//
16// This program is distributed in the HOPE that it will be USEFUL,
17// but WITHOUT ANY WARRANTY; without even the implied warranty of
18// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
19// See the GNU General Public License for more details.
20//
21// You should have received a copy of the GNU General Public License
22// along with this program. If not, write to the Free Software Foundation,
23// Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
24//
25//=============================================================================
26
27#include "kvi_settings.h"
28#include "KviKvsTypes.h"
29
30class KviKvsHash;
31class KviKvsArray;
32class KviKvsArrayCast;
33class KviKvsVariant;
34#include <QStringList>
35class QByteArray;
36class QString;
37
38// Data type: QString
39// Default: QString()
45
46// Data type: kvs_int_t
47// Default: 0
53
54// Data type: kvs_uint_t
55// Default: 0
61
62// Data type: kvs_real_t
63// default: 0.0
69
70// Data type: bool
71// default: false
77
78// Data type: KviKvsHash *
79// default: 0
84
85// Data type: KviKvsArrayCast
86// default empty cast
91
92// Data type: KviKvsVariant *
93// default: 0
98
99// Data type: QByteArray
100// default null string (0)
106
107// Data type: QStringList
108// default: list cleared
109// This eats all the remaining params in the list!
114
115// Data type: KviKvsVariantList
116// default: list cleared
117// This eats all the remaining params in the list!
118// The list has autodelete set to off since the copies are SHALLOW (as opposed to deep)!
123
124// Data type: kvs_hobject_t
125// default: (kvs_hobject_t)0
130
131// Data type: KviKvsArray *
132// default 0
137
138// Data type: ignored
139#define KVS_PT_IGNORE 15
140
141// If omitted, set to default
142#define KVS_PF_OPTIONAL 1
143// Valid only for string types: it's the last parameter that eats all the remaining ones
144#define KVS_PF_APPENDREMAINING 2
145
148
150{
152 {
153 public:
154 const char * szName;
155 unsigned char uType;
156 unsigned char uFlags;
158
159 public:
160 // KVS_PT_STRING, KVS_PT_NONEMPTYSTRING
161 ParameterFormat(const char * name, KviKvsParameterTypeQString type, unsigned char flags, QString & szBuffer)
162 : szName(name), uType((unsigned char)type), uFlags(flags), pContainer((void *)(&szBuffer)){};
163
164 // KVS_PT_INTEGER (KVS_PT_INT)
165 ParameterFormat(const char * name, KviKvsParameterTypeKvsIntT type, unsigned char flags, kvs_int_t & iBuffer)
166 : szName(name), uType((unsigned char)type), uFlags(flags), pContainer((void *)(&iBuffer)){};
167
168 // KVS_PT_UNSIGNEDINTEGER (KVS_PT_UINT)
169 ParameterFormat(const char * name, KviKvsParameterTypeKvsUIntT type, unsigned char flags, kvs_uint_t & uBuffer)
170 : szName(name), uType((unsigned char)type), uFlags(flags), pContainer((void *)(&uBuffer)){};
171
172 // KVS_PT_DOUBLE (KVS_PT_REAL)
173 ParameterFormat(const char * name, KviKvsParameterTypeKvsRealT type, unsigned char flags, kvs_real_t & dBuffer)
174 : szName(name), uType((unsigned char)type), uFlags(flags), pContainer((void *)(&dBuffer)){};
175
176 // KVS_PT_BOOL (KVS_PT_BOOLEAN)
177 ParameterFormat(const char * name, KviKvsParameterTypeBool type, unsigned char flags, bool & bBuffer)
178 : szName(name), uType((unsigned char)type), uFlags(flags), pContainer((void *)(&bBuffer)){};
179
180 // KVS_PT_HASH
181 ParameterFormat(const char * name, KviKvsParameterTypeKviKvsHashPointer type, unsigned char flags, KviKvsHash *& pBuffer)
182 : szName(name), uType((unsigned char)type), uFlags(flags), pContainer((void *)(&pBuffer)){};
183
184 // KVS_PT_ARRAYCAST
185 ParameterFormat(const char * name, KviKvsParameterTypeKviKvsArrayCast type, unsigned char flags, KviKvsArrayCast & oBuffer)
186 : szName(name), uType((unsigned char)type), uFlags(flags), pContainer((void *)(&oBuffer)){};
187
188 // KVS_PT_VARIANT
189 ParameterFormat(const char * name, KviKvsParameterTypeKviKvsVariantPointer type, unsigned char flags, KviKvsVariant *& pBuffer)
190 : szName(name), uType((unsigned char)type), uFlags(flags), pContainer((void *)(&pBuffer)){};
191
192 // KVS_PT_CSTRING, KVS_PT_NONEMPTYCSTRING
193 ParameterFormat(const char * name, KviKvsParameterTypeQByteArray type, unsigned char flags, QByteArray & szBuffer)
194 : szName(name), uType((unsigned char)type), uFlags(flags), pContainer((void *)(&szBuffer)){};
195
196 // KVS_PT_STRINGLIST
197 ParameterFormat(const char * name, KviKvsParameterTypeQStringList type, unsigned char flags, QStringList & lBuffer)
198 : szName(name), uType((unsigned char)type), uFlags(flags), pContainer((void *)(&lBuffer)){};
199
200 // KVS_PT_VARIANTLIST
201 ParameterFormat(const char * name, KviKvsParameterTypeKviKvsVariantList type, unsigned char flags, KviKvsVariantList & lBuffer)
202 : szName(name), uType((unsigned char)type), uFlags(flags), pContainer((void *)(&lBuffer)){};
203
204 // KVS_PT_HOBJECT
205 ParameterFormat(const char * name, KviKvsParameterTypeKvsHObjectT type, unsigned char flags, kvs_hobject_t & hBuffer)
206 : szName(name), uType((unsigned char)type), uFlags(flags), pContainer((void *)(&hBuffer)){};
207
208 // KVS_PT_ARRAY
209 ParameterFormat(const char * name, KviKvsParameterTypeKviKvsArrayPointer type, unsigned char flags, KviKvsArray *& pBuffer)
210 : szName(name), uType((unsigned char)type), uFlags(flags), pContainer((void *)(&pBuffer)){};
211
212 // KVS_PT_IGNORE
213 ParameterFormat(const char * name)
214 : szName(name), uType(KVS_PT_IGNORE), uFlags(0), pContainer(nullptr) {}
215
216 // terminator
218 : szName(nullptr), uType(KVS_PT_IGNORE), uFlags(0), pContainer(nullptr){};
219
220 //ParameterFormat(const char * n,unsigned char t,unsigned char f,void * p)
221 //: szName(n), uType(t), uFlags(f), pContainer(p) {};
222 };
223
225}
226
227#define KVS_PARAMETERS_BEGIN(__name) \
228 KviKvsParameterProcessor::ParameterFormat __name[] = {
229
230#define KVS_PARAMETERS_END \
231 KviKvsParameterProcessor::ParameterFormat(nullptr) \
232 } \
233 ;
234
235//#define KVS_PARAMETER(__name,__type,__flags,__void)
236// KviKvsParameterProcessor::ParameterFormat(__name,__type,__flags,((void *)(&(__void)))),
237
238#define KVS_PARAMETER(__name, __type, __flags, __param) \
239 KviKvsParameterProcessor::ParameterFormat(__name, __type, __flags, __param),
240
241#define KVS_PARAMETER_IGNORED(__name) \
242 KviKvsParameterProcessor::ParameterFormat(__name),
243
244#endif
KviKvsParameterTypeKviKvsVariantList
Definition KviKvsParameterProcessor.h:120
@ KVS_PT_VARIANTLIST
Definition KviKvsParameterProcessor.h:121
KviKvsParameterTypeKviKvsArrayPointer
Definition KviKvsParameterProcessor.h:134
@ KVS_PT_ARRAY
Definition KviKvsParameterProcessor.h:135
KviKvsParameterTypeQString
Definition KviKvsParameterProcessor.h:41
@ KVS_PT_NONEMPTYSTRING
Definition KviKvsParameterProcessor.h:43
@ KVS_PT_STRING
Definition KviKvsParameterProcessor.h:42
KviKvsParameterTypeKviKvsArrayCast
Definition KviKvsParameterProcessor.h:88
@ KVS_PT_ARRAYCAST
Definition KviKvsParameterProcessor.h:89
KviKvsParameterTypeKviKvsVariantPointer
Definition KviKvsParameterProcessor.h:95
@ KVS_PT_VARIANT
Definition KviKvsParameterProcessor.h:96
KviKvsParameterTypeKvsHObjectT
Definition KviKvsParameterProcessor.h:127
@ KVS_PT_HOBJECT
Definition KviKvsParameterProcessor.h:128
KviKvsParameterTypeQStringList
Definition KviKvsParameterProcessor.h:111
@ KVS_PT_STRINGLIST
Definition KviKvsParameterProcessor.h:112
KviKvsParameterTypeQByteArray
Definition KviKvsParameterProcessor.h:102
@ KVS_PT_NONEMPTYCSTRING
Definition KviKvsParameterProcessor.h:104
@ KVS_PT_CSTRING
Definition KviKvsParameterProcessor.h:103
KviKvsParameterTypeKvsUIntT
Definition KviKvsParameterProcessor.h:57
@ KVS_PT_UNSIGNEDINTEGER
Definition KviKvsParameterProcessor.h:59
@ KVS_PT_UINT
Definition KviKvsParameterProcessor.h:58
KviKvsParameterTypeKvsRealT
Definition KviKvsParameterProcessor.h:65
@ KVS_PT_REAL
Definition KviKvsParameterProcessor.h:67
@ KVS_PT_DOUBLE
Definition KviKvsParameterProcessor.h:66
KviKvsParameterTypeKviKvsHashPointer
Definition KviKvsParameterProcessor.h:81
@ KVS_PT_HASH
Definition KviKvsParameterProcessor.h:82
KviKvsParameterTypeKvsIntT
Definition KviKvsParameterProcessor.h:49
@ KVS_PT_INTEGER
Definition KviKvsParameterProcessor.h:51
@ KVS_PT_INT
Definition KviKvsParameterProcessor.h:50
#define KVS_PT_IGNORE
Definition KviKvsParameterProcessor.h:139
KviKvsParameterTypeBool
Definition KviKvsParameterProcessor.h:73
@ KVS_PT_BOOLEAN
Definition KviKvsParameterProcessor.h:75
@ KVS_PT_BOOL
Definition KviKvsParameterProcessor.h:74
return nullptr
Definition KviKvsParser.cpp:3318
void * kvs_hobject_t
Definition KviKvsTypes.h:32
kvi_u64_t kvs_uint_t
Definition KviKvsTypes.h:34
double kvs_real_t
Definition KviKvsTypes.h:35
kvi_i64_t kvs_int_t
Definition KviKvsTypes.h:33
Definition KviKvsArrayCast.h:31
This class defines a new data type which contains array data.
Definition KviKvsArray.h:44
This class defines a new data type which contains hash data.
Definition KviKvsHash.h:48
Definition KviKvsParameterProcessor.h:152
unsigned char uType
Definition KviKvsParameterProcessor.h:155
unsigned char uFlags
Definition KviKvsParameterProcessor.h:156
ParameterFormat(const char *name, KviKvsParameterTypeBool type, unsigned char flags, bool &bBuffer)
Definition KviKvsParameterProcessor.h:177
ParameterFormat(const char *name, KviKvsParameterTypeKviKvsArrayPointer type, unsigned char flags, KviKvsArray *&pBuffer)
Definition KviKvsParameterProcessor.h:209
ParameterFormat(const char *name, KviKvsParameterTypeKviKvsHashPointer type, unsigned char flags, KviKvsHash *&pBuffer)
Definition KviKvsParameterProcessor.h:181
ParameterFormat(const char *name, KviKvsParameterTypeKvsRealT type, unsigned char flags, kvs_real_t &dBuffer)
Definition KviKvsParameterProcessor.h:173
ParameterFormat(const char *name, KviKvsParameterTypeKviKvsArrayCast type, unsigned char flags, KviKvsArrayCast &oBuffer)
Definition KviKvsParameterProcessor.h:185
ParameterFormat(const char *name, KviKvsParameterTypeKviKvsVariantList type, unsigned char flags, KviKvsVariantList &lBuffer)
Definition KviKvsParameterProcessor.h:201
void * pContainer
Definition KviKvsParameterProcessor.h:157
ParameterFormat(const char *name, KviKvsParameterTypeQByteArray type, unsigned char flags, QByteArray &szBuffer)
Definition KviKvsParameterProcessor.h:193
ParameterFormat(const char *name, KviKvsParameterTypeKvsHObjectT type, unsigned char flags, kvs_hobject_t &hBuffer)
Definition KviKvsParameterProcessor.h:205
ParameterFormat()
Definition KviKvsParameterProcessor.h:217
ParameterFormat(const char *name, KviKvsParameterTypeKvsIntT type, unsigned char flags, kvs_int_t &iBuffer)
Definition KviKvsParameterProcessor.h:165
ParameterFormat(const char *name)
Definition KviKvsParameterProcessor.h:213
ParameterFormat(const char *name, KviKvsParameterTypeKvsUIntT type, unsigned char flags, kvs_uint_t &uBuffer)
Definition KviKvsParameterProcessor.h:169
ParameterFormat(const char *name, KviKvsParameterTypeKviKvsVariantPointer type, unsigned char flags, KviKvsVariant *&pBuffer)
Definition KviKvsParameterProcessor.h:189
const char * szName
Definition KviKvsParameterProcessor.h:154
ParameterFormat(const char *name, KviKvsParameterTypeQStringList type, unsigned char flags, QStringList &lBuffer)
Definition KviKvsParameterProcessor.h:197
ParameterFormat(const char *name, KviKvsParameterTypeQString type, unsigned char flags, QString &szBuffer)
Definition KviKvsParameterProcessor.h:161
Definition KviKvsRunTimeContext.h:104
Class to handle variant variables lists.
Definition KviKvsVariantList.h:42
This class defines a new data type which contains variant data.
Definition KviKvsVariant.h:352
This file contains compile time settings.
#define KVIRC_API
Definition kvi_settings.h:127
Definition KviKvsParameterProcessor.cpp:39
bool process(KviKvsVariantList *pVariantList, KviKvsRunTimeContext *pContext, KviKvsParameterProcessor::ParameterFormat *pFmtArray)
Definition KviKvsParameterProcessor.cpp:136
char szBuffer[4096]
Definition winamp.cpp:77