aboutsummaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorGravatar Szymon Tomasz Stefanek2010-06-13 15:21:29 +0000
committerGravatar Szymon Tomasz Stefanek2010-06-13 15:21:29 +0000
commitcfcfaded711c1a51ddc160b02c377b3fc65456cb (patch)
treec51cf57dca6665b8966c281f4a7be58250d73a6b /src
parentFix for a crash in the objects module (diff)
downloadKVIrc-cfcfaded711c1a51ddc160b02c377b3fc65456cb.tar.gz
KVIrc-cfcfaded711c1a51ddc160b02c377b3fc65456cb.tar.bz2
KVIrc-cfcfaded711c1a51ddc160b02c377b3fc65456cb.zip
Make the KVS parameter specification a bit more typesafe. Fix some mismatched types detected with the new method.
git-svn-id: https://svn.kvirc.de/svn/trunk/kvirc@4457 17fca916-40b9-46aa-a4ea-0a15b648b75c
Diffstat (limited to 'src')
-rw-r--r--src/kvirc/kernel/kvi_options.cpp4
-rw-r--r--src/kvirc/kvs/kvi_kvs_parameterprocessor.h90
-rw-r--r--src/modules/mediaplayer/libkvimediaplayer.cpp10
-rw-r--r--src/modules/mediaplayer/mp_interface.cpp8
-rw-r--r--src/modules/mediaplayer/mp_interface.h8
-rw-r--r--src/modules/mediaplayer/mp_mprisinterface.cpp4
-rw-r--r--src/modules/mediaplayer/mp_mprisinterface.h2
-rw-r--r--src/modules/mediaplayer/mp_winampinterface.cpp6
-rw-r--r--src/modules/mediaplayer/mp_winampinterface.h6
-rw-r--r--src/modules/mediaplayer/mp_xmmsinterface.cpp2
-rw-r--r--src/modules/mediaplayer/mp_xmmsinterface.h2
-rw-r--r--src/modules/upnp/libkviupnp.cpp5
12 files changed, 109 insertions, 38 deletions
diff --git a/src/kvirc/kernel/kvi_options.cpp b/src/kvirc/kernel/kvi_options.cpp
index 01841dbc2..faa0111b2 100644
--- a/src/kvirc/kernel/kvi_options.cpp
+++ b/src/kvirc/kernel/kvi_options.cpp
@@ -642,8 +642,8 @@ KviUIntOption g_uintOptionsTable[KVI_NUM_UINT_OPTIONS]=
UINT_OPTION("IdentdOutputMode",KviIdentdOutputMode::Quiet,KviOption_sectFlagConnection),
UINT_OPTION("ScaleAvatarsOnLoadHeight",640,KviOption_sectFlagAvatar),
UINT_OPTION("ScaleAvatarsOnLoadWidth",480,KviOption_sectFlagAvatar),
- UINT_OPTION("NotifierActiveTransparency",90,KviOption_sectFlagNotifier | KviOption_groupTheme),
- UINT_OPTION("NotifierInactiveTransparency",60,KviOption_sectFlagNotifier | KviOption_groupTheme),
+ UINT_OPTION("NotifierActiveTransparency",100,KviOption_sectFlagNotifier | KviOption_groupTheme),
+ UINT_OPTION("NotifierInactiveTransparency",80,KviOption_sectFlagNotifier | KviOption_groupTheme), // this may be cool but it confuses the user
UINT_OPTION("IrcViewMarkerStyle",0,KviOption_sectFlagIrcView | KviOption_groupTheme),
UINT_OPTION("IrcViewMarkerSize",1,KviOption_sectFlagIrcView | KviOption_groupTheme),
UINT_OPTION("UrlMouseClickNum",2,KviOption_sectFlagUrl),
diff --git a/src/kvirc/kvs/kvi_kvs_parameterprocessor.h b/src/kvirc/kvs/kvi_kvs_parameterprocessor.h
index 18d0e28b3..7411d716e 100644
--- a/src/kvirc/kvs/kvi_kvs_parameterprocessor.h
+++ b/src/kvirc/kvs/kvi_kvs_parameterprocessor.h
@@ -25,7 +25,15 @@
//=============================================================================
#include "kvi_settings.h"
+#include "kvi_kvs_types.h"
+class KviKvsHash;
+class KviKvsArray;
+class KviKvsArrayCast;
+class KviKvsVariant;
+class QStringList;
+class QByteArray;
+class QString;
// Data type: QString
// Default: QString()
@@ -67,11 +75,11 @@
// default: 0
#define KVS_PT_VARIANT 8
-// Data type: QCString
+// Data type: QByteArray
// default null string (0)
#define KVS_PT_CSTRING 9
-// Data type: QCString
+// Data type: QByteArray
// default null string (0)
#define KVS_PT_NONEMPTYCSTRING 10
@@ -86,7 +94,7 @@
// The list has autodelete set to off since the copies are SHALLOW!
#define KVS_PT_VARIANTLIST 12
-// Data type: kvs_hobjec_t
+// Data type: kvs_hobject_t
// default: (kvs_hobject_t)0
#define KVS_PT_HOBJECT 13
@@ -105,6 +113,7 @@
class KviKvsVariantList;
class KviKvsRunTimeContext;
+
namespace KviKvsParameterProcessor
{
class KVIRC_API ParameterFormat
@@ -115,8 +124,68 @@ namespace KviKvsParameterProcessor
const unsigned char uFlags;
void * pContainer;
public:
- ParameterFormat(const char * n,const unsigned char t,const unsigned char f,void * p)
- : szName(n), uType(t), uFlags(f), pContainer(p) {};
+ // KVS_PT_STRING, KVS_PT_NONEMPTYSTRING
+ ParameterFormat(const char * name,const unsigned char type,const unsigned char flags,QString &szBuffer)
+ : szName(name), uType(type), uFlags(flags), pContainer((void *)(&szBuffer)) {};
+
+ // KVS_PT_INTEGER (KVS_PT_INT)
+ ParameterFormat(const char * name,const unsigned char type,const unsigned char flags,kvs_int_t &iBuffer)
+ : szName(name), uType(type), uFlags(flags), pContainer((void *)(&iBuffer)) {};
+
+ // KVS_PT_UNSIGNEDINTEGER (KVS_PT_UINT)
+ ParameterFormat(const char * name,const unsigned char type,const unsigned char flags,kvs_uint_t &uBuffer)
+ : szName(name), uType(type), uFlags(flags), pContainer((void *)(&uBuffer)) {};
+
+ // KVS_PT_DOUBLE (KVS_PT_REAL)
+ ParameterFormat(const char * name,const unsigned char type,const unsigned char flags,kvs_real_t &dBuffer)
+ : szName(name), uType(type), uFlags(flags), pContainer((void *)(&dBuffer)) {};
+
+ // KVS_PT_BOOL (KVS_PT_BOOLEAN)
+ ParameterFormat(const char * name,const unsigned char type,const unsigned char flags,bool &bBuffer)
+ : szName(name), uType(type), uFlags(flags), pContainer((void *)(&bBuffer)) {};
+
+ // KVS_PT_HASH
+ ParameterFormat(const char * name,const unsigned char type,const unsigned char flags,KviKvsHash * &pBuffer)
+ : szName(name), uType(type), uFlags(flags), pContainer((void *)(&pBuffer)) {};
+
+ // KVS_PT_ARRAYCAST
+ ParameterFormat(const char * name,const unsigned char type,const unsigned char flags,KviKvsArrayCast &oBuffer)
+ : szName(name), uType(type), uFlags(flags), pContainer((void *)(&oBuffer)) {};
+
+ // KVS_PT_VARIANT
+ ParameterFormat(const char * name,const unsigned char type,const unsigned char flags,KviKvsVariant * &pBuffer)
+ : szName(name), uType(type), uFlags(flags), pContainer((void *)(&pBuffer)) {};
+
+ // KVS_PT_CSTRING, KVS_PT_NONEMPTYCSTRING
+ ParameterFormat(const char * name,const unsigned char type,const unsigned char flags,QByteArray &szBuffer)
+ : szName(name), uType(type), uFlags(flags), pContainer((void *)(&szBuffer)) {};
+
+ // KVS_PT_STRINGLIST
+ ParameterFormat(const char * name,const unsigned char type,const unsigned char flags,QStringList &lBuffer)
+ : szName(name), uType(type), uFlags(flags), pContainer((void *)(&lBuffer)) {};
+
+ // KVS_PT_VARIANTLIST
+ ParameterFormat(const char * name,const unsigned char type,const unsigned char flags,KviKvsVariantList &lBuffer)
+ : szName(name), uType(type), uFlags(flags), pContainer((void *)(&lBuffer)) {};
+
+ // KVS_PT_HOBJECT
+ ParameterFormat(const char * name,const unsigned char type,const unsigned char flags,kvs_hobject_t &hBuffer)
+ : szName(name), uType(type), uFlags(flags), pContainer((void *)(&hBuffer)) {};
+
+ // KVS_PT_ARRAY
+ ParameterFormat(const char * name,const unsigned char type,const unsigned char flags,KviKvsArray * &pBuffer)
+ : szName(name), uType(type), uFlags(flags), pContainer((void *)(&pBuffer)) {};
+
+ // KVS_PT_IGNORE
+ ParameterFormat(const char * name)
+ : szName(name), uType(KVS_PT_IGNORE), uFlags(0), pContainer(NULL) {}
+
+ // terminator
+ ParameterFormat()
+ : szName(NULL), uType(KVS_PT_IGNORE), uFlags(0), pContainer(NULL) {};
+
+ //ParameterFormat(const char * n,const unsigned char t,const unsigned char f,void * p)
+ //: szName(n), uType(t), uFlags(f), pContainer(p) {};
};
KVIRC_API bool process(KviKvsVariantList * pVariantList,KviKvsRunTimeContext * pContext,KviKvsParameterProcessor::ParameterFormat * pFmtArray);
@@ -128,13 +197,16 @@ namespace KviKvsParameterProcessor
{
#define KVS_PARAMETERS_END \
- KviKvsParameterProcessor::ParameterFormat(0,0,0,0) \
+ KviKvsParameterProcessor::ParameterFormat(0) \
};
-#define KVS_PARAMETER(__name,__type,__flags,__void) \
- KviKvsParameterProcessor::ParameterFormat(__name,__type,__flags,((void *)(&(__void)))),
+//#define KVS_PARAMETER(__name,__type,__flags,__void)
+// KviKvsParameterProcessor::ParameterFormat(__name,__type,__flags,((void *)(&(__void)))),
+
+#define KVS_PARAMETER(__name,__type,__flags,__param) \
+ KviKvsParameterProcessor::ParameterFormat(__name,__type,__flags,__param),
#define KVS_PARAMETER_IGNORED(__name) \
- KviKvsParameterProcessor::ParameterFormat(__name,KVS_PT_IGNORE,0,0),
+ KviKvsParameterProcessor::ParameterFormat(__name),
#endif //!_KVI_KVS_PARAMETERPROCESSOR_H_
diff --git a/src/modules/mediaplayer/libkvimediaplayer.cpp b/src/modules/mediaplayer/libkvimediaplayer.cpp
index 3867c3461..7490c0215 100644
--- a/src/modules/mediaplayer/libkvimediaplayer.cpp
+++ b/src/modules/mediaplayer/libkvimediaplayer.cpp
@@ -621,7 +621,7 @@ MP_KVS_COMMAND(amipExec)
MP_KVS_COMMAND(jumpTo)
{
- int iPos;
+ kvs_int_t iPos;
KVSM_PARAMETERS_BEGIN(c)
KVSM_PARAMETER("position",KVS_PT_INT,0,iPos)
@@ -1168,7 +1168,7 @@ MP_KVS_SIMPLE_INT_FUNCTION(channels,channels)
MP_KVS_COMMAND(setPlayListPos)
{
- int iPos;
+ kvs_int_t iPos;
KVSM_PARAMETERS_BEGIN(c)
KVSM_PARAMETER("position",KVS_PT_INT,0,iPos)
@@ -1299,7 +1299,7 @@ MP_KVS_SIMPLE_BOOL_FUNCTION(getShuffle,getShuffle)
MP_KVS_FUNCTION(getEqData)
{
- int iValue;
+ kvs_int_t iValue;
QString szOptions;
KVSM_PARAMETERS_BEGIN(c)
@@ -1346,8 +1346,8 @@ MP_KVS_FUNCTION(getEqData)
MP_KVS_COMMAND(setEqData)
{
- int iPos;
- int iValue;
+ kvs_int_t iPos;
+ kvs_int_t iValue;
KVSM_PARAMETERS_BEGIN(c)
KVSM_PARAMETER("item",KVS_PT_INT,0,iPos)
diff --git a/src/modules/mediaplayer/mp_interface.cpp b/src/modules/mediaplayer/mp_interface.cpp
index fb108ee49..12d0fcf44 100644
--- a/src/modules/mediaplayer/mp_interface.cpp
+++ b/src/modules/mediaplayer/mp_interface.cpp
@@ -177,7 +177,7 @@ bool KviMediaPlayerInterface::mute()
return false;
}
-bool KviMediaPlayerInterface::jumpTo(int &)
+bool KviMediaPlayerInterface::jumpTo(kvs_int_t &)
{
notImplemented();
return false;
@@ -213,7 +213,7 @@ int KviMediaPlayerInterface::getPlayListPos()
return -1;
}
-bool KviMediaPlayerInterface::setPlayListPos(int &)
+bool KviMediaPlayerInterface::setPlayListPos(kvs_int_t &)
{
notImplemented();
return false;
@@ -225,13 +225,13 @@ int KviMediaPlayerInterface::getListLength()
return -1;
}
-int KviMediaPlayerInterface::getEqData(int &)
+int KviMediaPlayerInterface::getEqData(kvs_int_t &)
{
notImplemented();
return -1;
}
-bool KviMediaPlayerInterface::setEqData(int &, int &)
+bool KviMediaPlayerInterface::setEqData(kvs_int_t &, kvs_int_t &)
{
notImplemented();
return false;
diff --git a/src/modules/mediaplayer/mp_interface.h b/src/modules/mediaplayer/mp_interface.h
index c26b5d0ee..f095dab59 100644
--- a/src/modules/mediaplayer/mp_interface.h
+++ b/src/modules/mediaplayer/mp_interface.h
@@ -117,7 +117,7 @@ public:
// 0 if the player isn't playing anyting and -1 if unknown (e.g. a stream)
virtual int length();
// jump to position
- virtual bool jumpTo(int &iPos);
+ virtual bool jumpTo(kvs_int_t &iPos);
// interface with a default implementation for certain types of media (read for mp3)
// reimplement only if the player knows better
@@ -156,13 +156,13 @@ public:
// get the position in the playlist
virtual int getPlayListPos();
// set the position in the playlist
- virtual bool setPlayListPos(int &iPos);
+ virtual bool setPlayListPos(kvs_int_t &iPos);
// return the list's length
virtual int getListLength();
// return the Eq(number) value
- virtual int getEqData(int &i_val);
+ virtual int getEqData(kvs_int_t &i_val);
// set the Eq(iPos) to Eq(iVal) value
- virtual bool setEqData(int &iPos, int &iVal);
+ virtual bool setEqData(kvs_int_t &iPos, kvs_int_t &iVal);
// get the Repeat bool value
virtual bool getRepeat();
// get the shuffle bool value
diff --git a/src/modules/mediaplayer/mp_mprisinterface.cpp b/src/modules/mediaplayer/mp_mprisinterface.cpp
index 58eb09a26..aff41f5f1 100644
--- a/src/modules/mediaplayer/mp_mprisinterface.cpp
+++ b/src/modules/mediaplayer/mp_mprisinterface.cpp
@@ -306,9 +306,9 @@ int KviMPRISInterface::length()
return -1;
}
-bool KviMPRISInterface::jumpTo(int &iPos)
+bool KviMPRISInterface::jumpTo(kvs_int_t &iPos)
{
- MPRIS_CALL_METHOD_WITH_ARG("PositionSet", QVariant(iPos), false)
+ MPRIS_CALL_METHOD_WITH_ARG("PositionSet", QVariant((int)iPos), false)
return true;
}
diff --git a/src/modules/mediaplayer/mp_mprisinterface.h b/src/modules/mediaplayer/mp_mprisinterface.h
index 0e4723901..4c8e9267f 100644
--- a/src/modules/mediaplayer/mp_mprisinterface.h
+++ b/src/modules/mediaplayer/mp_mprisinterface.h
@@ -60,7 +60,7 @@
virtual int getVol();
virtual int position();
virtual int length();
- virtual bool jumpTo(int &iPos);
+ virtual bool jumpTo(kvs_int_t &iPos);
};
class KviAudaciousInterface : public KviMPRISInterface
diff --git a/src/modules/mediaplayer/mp_winampinterface.cpp b/src/modules/mediaplayer/mp_winampinterface.cpp
index 4cafce127..3cafbe471 100644
--- a/src/modules/mediaplayer/mp_winampinterface.cpp
+++ b/src/modules/mediaplayer/mp_winampinterface.cpp
@@ -473,7 +473,7 @@ bool KviWinampInterface::minimize()
return false;
}
-bool KviWinampInterface::setPlayListPos(int &iPos)
+bool KviWinampInterface::setPlayListPos(kvs_int_t &iPos)
{
HWND hWinamp = find_winamp(this);
if(hWinamp)
@@ -500,7 +500,7 @@ int KviWinampInterface::getListLength()
return ret;
}
-bool KviWinampInterface::setEqData(int &iPos, int &iVal)
+bool KviWinampInterface::setEqData(kvs_int_t &iPos, kvs_int_t &iVal)
{
HWND hWinamp = find_winamp(this);
if(hWinamp)
@@ -512,7 +512,7 @@ bool KviWinampInterface::setEqData(int &iPos, int &iVal)
return false;
}
-int KviWinampInterface::getEqData(int &ival)
+int KviWinampInterface::getEqData(kvs_int_t &ival)
{
HWND hWinamp = find_winamp(this);
int ret = -1;
diff --git a/src/modules/mediaplayer/mp_winampinterface.h b/src/modules/mediaplayer/mp_winampinterface.h
index 1b3fb2403..5c4e75cce 100644
--- a/src/modules/mediaplayer/mp_winampinterface.h
+++ b/src/modules/mediaplayer/mp_winampinterface.h
@@ -58,10 +58,10 @@
virtual bool show();
virtual bool minimize();
virtual int getPlayListPos();
- virtual bool setPlayListPos(int &iPos);
+ virtual bool setPlayListPos(kvs_int_t &iPos);
virtual int getListLength();
- virtual int getEqData(int &ival);
- virtual bool setEqData(int &iPos, int &iVal);
+ virtual int getEqData(kvs_int_t &ival);
+ virtual bool setEqData(kvs_int_t &iPos, kvs_int_t &iVal);
virtual bool getRepeat();
virtual bool getShuffle();
virtual bool setRepeat(bool &bVal);
diff --git a/src/modules/mediaplayer/mp_xmmsinterface.cpp b/src/modules/mediaplayer/mp_xmmsinterface.cpp
index 37d13f1b2..ce0bdea4d 100644
--- a/src/modules/mediaplayer/mp_xmmsinterface.cpp
+++ b/src/modules/mediaplayer/mp_xmmsinterface.cpp
@@ -191,7 +191,7 @@ bool KviXmmsInterface::quit()
XMMS_SIMPLE_CALL("xmms_remote_quit")
}
-bool KviXmmsInterface::jumpTo(int &iPos)
+bool KviXmmsInterface::jumpTo(kvs_int_t &iPos)
{
void (*sym)(int,int) = (void (*)(int,int))lookupSymbol("xmms_remote_jump_to_time");
if(!sym)return false;
diff --git a/src/modules/mediaplayer/mp_xmmsinterface.h b/src/modules/mediaplayer/mp_xmmsinterface.h
index 70fa6895e..0cb2ef2c2 100644
--- a/src/modules/mediaplayer/mp_xmmsinterface.h
+++ b/src/modules/mediaplayer/mp_xmmsinterface.h
@@ -51,7 +51,7 @@
virtual bool stop();
virtual bool pause();
virtual bool quit();
- virtual bool jumpTo(int &iPos);
+ virtual bool jumpTo(kvs_int_t &iPos);
virtual bool setVol(kvs_int_t &iVol);
virtual int getVol();
virtual KviMediaPlayerInterface::PlayerStatus status();
diff --git a/src/modules/upnp/libkviupnp.cpp b/src/modules/upnp/libkviupnp.cpp
index c22159995..865192d4a 100644
--- a/src/modules/upnp/libkviupnp.cpp
+++ b/src/modules/upnp/libkviupnp.cpp
@@ -109,7 +109,7 @@ static bool upnp_kvs_fnc_isGatewayAvailable(KviKvsModuleFunctionCall * c)
*/
static bool upnp_kvs_cmd_addPortMapping(KviKvsModuleCommandCall * c)
{
- int iPort;
+ kvs_int_t iPort;
QString szLocalIp;
KviKvsVariant * pSw;
@@ -148,8 +148,7 @@ static bool upnp_kvs_cmd_addPortMapping(KviKvsModuleCommandCall * c)
*/
static bool upnp_kvs_cmd_delPortMapping(KviKvsModuleCommandCall * c)
{
- int iPort;
-
+ kvs_int_t iPort;
KVSM_PARAMETERS_BEGIN(c)
KVSM_PARAMETER("port",KVS_PT_INT,0,iPort)
KVSM_PARAMETERS_END(c)