From e1ebba4d248637c7e90ac2ebe2c977e0c72bdf0c Mon Sep 17 00:00:00 2001 From: Eric House Date: Mon, 2 Dec 2024 14:44:50 -0800 Subject: [PATCH] simplify macros I'd love to generate the damned things but can't justify the time. --- xwords4/common/dutil.h | 111 +++++++++++++--------------- xwords4/common/util.h | 160 +++++++++++++++++++---------------------- 2 files changed, 124 insertions(+), 147 deletions(-) diff --git a/xwords4/common/dutil.h b/xwords4/common/dutil.h index 6664257fc..04afea687 100644 --- a/xwords4/common/dutil.h +++ b/xwords4/common/dutil.h @@ -140,77 +140,66 @@ void dutil_super_cleanup( XW_DUtilCtxt* dutil, XWEnv xwe ); /* This one cheats: direct access */ #define dutil_getVTManager(duc) (duc)->vtMgr -#define dutil_getCurSeconds(duc, e) \ - (duc)->vtable.m_dutil_getCurSeconds((duc), (e)) -#define dutil_getUserString( duc, e, c ) \ - (duc)->vtable.m_dutil_getUserString((duc),(e), (c)) -#define dutil_getUserQuantityString( duc, e, c, q ) \ - (duc)->vtable.m_dutil_getUserQuantityString((duc),(e), (c),(q)) +#define dutil_getCurSeconds(duc, ...) \ + (duc)->vtable.m_dutil_getCurSeconds((duc), __VA_ARGS__) +#define dutil_getUserString( duc, ... ) \ + (duc)->vtable.m_dutil_getUserString((duc), __VA_ARGS__) +#define dutil_getUserQuantityString( duc, ... ) \ + (duc)->vtable.m_dutil_getUserQuantityString((duc), __VA_ARGS__) -#define dutil_storeStream(duc, e, k, s) \ - (duc)->vtable.m_dutil_storeStream((duc), (e), (k), (s)); -#define dutil_storePtr(duc, e, k, p, l) \ - (duc)->vtable.m_dutil_storePtr((duc), (e), (k), (p), (l)) -#define dutil_loadStream(duc, e, k, s) \ - (duc)->vtable.m_dutil_loadStream((duc), (e), (k), (s)) -#define dutil_loadPtr(duc, e, k, p, l) \ - (duc)->vtable.m_dutil_loadPtr((duc), (e), (k), (p), (l)) -# define dutil_forEach( duc, xwe, keys, proc, closure ) \ - (duc)->vtable.m_dutil_forEach((duc), (xwe), (keys), (proc), (closure) ) -#define dutil_remove(duc, keys) \ - (duc)->vtable.m_dutil_remove((duc), (keys)) +#define dutil_storeStream(duc, ...) \ + (duc)->vtable.m_dutil_storeStream((duc), __VA_ARGS__) +#define dutil_storePtr(duc, ...) \ + (duc)->vtable.m_dutil_storePtr((duc), __VA_ARGS__) +#define dutil_loadStream(duc, ...) \ + (duc)->vtable.m_dutil_loadStream((duc), __VA_ARGS__) +#define dutil_loadPtr(duc, ...) \ + (duc)->vtable.m_dutil_loadPtr((duc), __VA_ARGS__) +# define dutil_forEach( duc, ... ) \ + (duc)->vtable.m_dutil_forEach((duc), __VA_ARGS__ ) +#define dutil_remove(duc, ...) \ + (duc)->vtable.m_dutil_remove((duc), __VA_ARGS__) #ifdef XWFEATURE_SMS -# define dutil_phoneNumbersSame(duc,e,p1,p2) \ - (duc)->vtable.m_dutil_phoneNumbersSame( (duc), (e), (p1), (p2) ) -#endif - -#if defined XWFEATURE_DEVID && defined XWFEATURE_RELAY -# define dutil_getDevID( duc, e, t ) \ - (duc)->vtable.m_dutil_getDevID((duc), (e),(t)) -# define dutil_deviceRegistered( duc, e, typ, id ) \ - (duc)->vtable.m_dutil_deviceRegistered( (duc), (e), (typ), (id) ) +# define dutil_phoneNumbersSame(duc, ...) \ + (duc)->vtable.m_dutil_phoneNumbersSame( (duc), __VA_ARGS__) #endif #ifdef DUTIL_TIMERS -# define dutil_setTimer( duc, xwe, when, key ) \ - (duc)->vtable.m_dutil_setTimer((duc), (xwe), (when), (key)) -# define dutil_clearTimer( duc, xwe, key ) \ - (duc)->vtable.m_dutil_clearTimer((duc), (xwe), (key) ) +# define dutil_setTimer( duc, ... ) \ + (duc)->vtable.m_dutil_setTimer((duc), __VA_ARGS__) +# define dutil_clearTimer( duc, ... ) \ + (duc)->vtable.m_dutil_clearTimer((duc), __VA_ARGS__) #endif -# define dutil_md5sum( duc, e, p, l, b ) \ - (duc)->vtable.m_dutil_md5sum((duc), (e), (p), (l), (b)) +# define dutil_md5sum( duc, ... ) \ + (duc)->vtable.m_dutil_md5sum((duc), __VA_ARGS__) +#define dutil_getUsername(duc, ...) \ + (duc)->vtable.m_dutil_getUsername((duc), __VA_ARGS__) +#define dutil_notifyPause( duc, ... ) \ + (duc)->vtable.m_dutil_notifyPause( (duc), __VA_ARGS__) -#define dutil_getUsername(duc, xwe, num, isLocal, isRobot, buf, lenp) \ - (duc)->vtable.m_dutil_getUsername((duc), (xwe), (num), (isLocal), \ - (isRobot), (buf), (lenp)) +#define dutil_haveGame( duc, ... ) \ + (duc)->vtable.m_dutil_haveGame( (duc), __VA_ARGS__) -#define dutil_notifyPause( duc, e, id, ip, p, n, m ) \ - (duc)->vtable.m_dutil_notifyPause( (duc), (e), (id), (ip), (p), (n), (m) ) +#define dutil_onDupTimerChanged(duc, ...) \ + (duc)->vtable.m_dutil_onDupTimerChanged( (duc), __VA_ARGS__) +#define dutil_onInviteReceived(duc, ...) \ + (duc)->vtable.m_dutil_onInviteReceived( (duc), __VA_ARGS__) +#define dutil_onMessageReceived(duc, ...) \ + (duc)->vtable.m_dutil_onMessageReceived((duc), __VA_ARGS__) +#define dutil_onCtrlReceived(duc, ... ) \ + (duc)->vtable.m_dutil_onCtrlReceived((duc), __VA_ARGS__ ) +#define dutil_onGameGoneReceived(duc, ...) \ + (duc)->vtable.m_dutil_onGameGoneReceived((duc), __VA_ARGS__) +#define dutil_sendViaWeb( duc, ... ) \ + (duc)->vtable.m_dutil_sendViaWeb((duc), __VA_ARGS__) +#define dutil_makeEmptyDict(duc, ...) \ + (duc)->vtable.m_dutil_makeEmptyDict((duc), __VA_ARGS__) +#define dutil_getDict(duc, ...) \ + (duc)->vtable.m_dutil_getDict((duc), __VA_ARGS__) -#define dutil_haveGame( duc, xwe, gameID, channel ) \ - (duc)->vtable.m_dutil_haveGame( (duc), (xwe), (gameID), (channel) ) - -#define dutil_onDupTimerChanged(duc, e, id, ov, nv) \ - (duc)->vtable.m_dutil_onDupTimerChanged( (duc), (e), (id), (ov), (nv)) - -#define dutil_onInviteReceived(duc, xwe, nli) \ - (duc)->vtable.m_dutil_onInviteReceived( (duc), (xwe), (nli) ) -#define dutil_onMessageReceived(duc, xwe, gameID, from, buf, len) \ - (duc)->vtable.m_dutil_onMessageReceived((duc),(xwe),(gameID),(from),(buf),(len)) -#define dutil_onCtrlReceived(duc, xwe, buf, len ) \ - (duc)->vtable.m_dutil_onCtrlReceived((duc),(xwe),(buf),(len)) -#define dutil_onGameGoneReceived(duc, xwe, gameID, from) \ - (duc)->vtable.m_dutil_onGameGoneReceived((duc),(xwe),(gameID),(from)) -#define dutil_sendViaWeb( duc, xwe, resultKey, api, params ) \ - (duc)->vtable.m_dutil_sendViaWeb((duc), (xwe), (resultKey), (api), (params)) -#define dutil_makeEmptyDict(duc, xwe) \ - (duc)->vtable.m_dutil_makeEmptyDict((duc), (xwe)) -#define dutil_getDict(duc, xwe, isoCode, dictName) \ - (duc)->vtable.m_dutil_getDict((duc), (xwe), (isoCode), (dictName)) - -#define dutil_getRegValues( duc, xwe ) \ - (duc)->vtable.m_dutil_getRegValues( (duc), (xwe) ) +#define dutil_getRegValues( duc, ... ) \ + (duc)->vtable.m_dutil_getRegValues( (duc), __VA_ARGS__) #endif diff --git a/xwords4/common/util.h b/xwords4/common/util.h index ddde473bc..de26b6436 100644 --- a/xwords4/common/util.h +++ b/xwords4/common/util.h @@ -199,124 +199,112 @@ struct XW_UtilCtxt { MPSLOT }; -#define util_makeStreamFromAddr(uc,e,a) \ - (uc)->vtable->m_util_makeStreamFromAddr((uc), (e),(a)) +#define util_makeStreamFromAddr(uc,...) \ + (uc)->vtable->m_util_makeStreamFromAddr((uc), __VA_ARGS__) +#define util_userError(uc,...) \ + (uc)->vtable->m_util_userError((uc), __VA_ARGS__) +#define util_notifyMove(uc,...) \ + (uc)->vtable->m_util_notifyMove((uc), __VA_ARGS__) +#define util_notifyTrade(uc,...) \ + (uc)->vtable->m_util_notifyTrade((uc), __VA_ARGS__) +#define util_notifyPickTileBlank( uc,...) \ + (uc)->vtable->m_util_notifyPickTileBlank( (uc), __VA_ARGS__ ) -#define util_userError(uc,e,err) \ - (uc)->vtable->m_util_userError((uc),(e),(err)) +#define util_informNeedPickTiles( uc, ...) \ + (uc)->vtable->m_util_informNeedPickTiles( (uc), __VA_ARGS__ ) -#define util_notifyMove(uc,e, str) \ - (uc)->vtable->m_util_notifyMove((uc), (e), (str)) +#define util_informNeedPassword( uc, ... ) \ + (uc)->vtable->m_util_informNeedPassword( (uc), __VA_ARGS__ ) -#define util_notifyTrade(uc,e, tx, nt) \ - (uc)->vtable->m_util_notifyTrade((uc), (e), (tx), (nt)) +#define util_trayHiddenChange( uc, ...) \ + (uc)->vtable->m_util_trayHiddenChange((uc), __VA_ARGS__) -#define util_notifyPickTileBlank( uc,e, c, r, n, tx, nt ) \ - (uc)->vtable->m_util_notifyPickTileBlank( (uc), (e), (c), (r), (n), (tx), (nt) ) - -#define util_informNeedPickTiles( uc,e, ii, pl, np, nt, fc, cn ) \ - (uc)->vtable->m_util_informNeedPickTiles( (uc), (e), (ii), (pl), (np), (nt), (fc), (cn) ) - -#define util_informNeedPassword( uc,e, pn, n ) \ - (uc)->vtable->m_util_informNeedPassword( (uc), (e), (pn), (n) ) - -#define util_trayHiddenChange( uc,e, b, n ) \ - (uc)->vtable->m_util_trayHiddenChange((uc), (e), (b), (n)) - -#define util_yOffsetChange( uc,e, m, o, n ) \ - (uc)->vtable->m_util_yOffsetChange((uc), (e), (m), (o), (n) ) +#define util_yOffsetChange( uc, ...) \ + (uc)->vtable->m_util_yOffsetChange((uc), __VA_ARGS__) #ifdef XWFEATURE_TURNCHANGENOTIFY -# define util_turnChanged( uc,e, t ) \ - (uc)->vtable->m_util_turnChanged( (uc), (e), (t) ) +# define util_turnChanged( uc, ... ) \ + (uc)->vtable->m_util_turnChanged( (uc), __VA_ARGS__) #else -# define util_turnChanged( uc,e, t ) +# define util_turnChanged( uc, ... ) #endif -#define util_notifyDupStatus(uc,e, h, m) \ - (uc)->vtable->m_util_notifyDupStatus( (uc), (e), (h), (m) ) -#define util_informMove(uc,e,t,ex,w) \ - (uc)->vtable->m_util_informMove( (uc), (e), (t), (ex), (w)) -#define util_informUndo(uc,e) \ - (uc)->vtable->m_util_informUndo( (uc), (e)) -#define util_informNetDict(uc,e, cd, on, nn, ns, pa ) \ - (uc)->vtable->m_util_informNetDict( (uc), (e), (cd), (on), (nn), (ns), \ - (pa) ) -#define util_notifyGameOver( uc,e, q ) \ - (uc)->vtable->m_util_notifyGameOver((uc), (e), (q)) +#define util_notifyDupStatus(uc,...) \ + (uc)->vtable->m_util_notifyDupStatus( (uc), __VA_ARGS__ ) +#define util_informMove(uc,...) \ + (uc)->vtable->m_util_informMove( (uc), __VA_ARGS__) +#define util_informUndo(uc,...) \ + (uc)->vtable->m_util_informUndo( (uc), __VA_ARGS__) +#define util_informNetDict(uc, ... ) \ + (uc)->vtable->m_util_informNetDict( (uc), __VA_ARGS__) +#define util_notifyGameOver( uc, ... ) \ + (uc)->vtable->m_util_notifyGameOver((uc), __VA_ARGS__) #ifdef XWFEATURE_HILITECELL -# define util_hiliteCell( uc,e, c, r ) \ - (uc)->vtable->m_util_hiliteCell((uc), (e), (c), (r)) +# define util_hiliteCell( uc, ... ) \ + (uc)->vtable->m_util_hiliteCell((uc), __VA_ARGS__) #endif -#define util_engineProgressCallback( uc,e ) \ - (uc)->vtable->m_util_engineProgressCallback((uc), (e)) +#define util_engineProgressCallback( uc, ... ) \ + (uc)->vtable->m_util_engineProgressCallback((uc), __VA_ARGS__) -#define util_setTimer( uc,e, why, when, proc, clos ) \ - (uc)->vtable->m_util_setTimer((uc), (e),(why),(when),(proc),(clos)) -#define util_clearTimer( uc,e, why ) \ - (uc)->vtable->m_util_clearTimer((uc), (e),(why)) +#define util_setTimer( uc, ... ) \ + (uc)->vtable->m_util_setTimer((uc), __VA_ARGS__ ) +#define util_clearTimer( uc, ... ) \ + (uc)->vtable->m_util_clearTimer((uc), __VA_ARGS__) +#define util_requestTime( uc, ... ) \ + (uc)->vtable->m_util_requestTime((uc), __VA_ARGS__) -#define util_requestTime( uc,e ) \ - (uc)->vtable->m_util_requestTime((uc), (e)) +#define util_altKeyDown( uc, ... ) \ + (uc)->vtable->m_util_altKeyDown((uc), __VA_ARGS__) +#define util_notifyIllegalWords( uc, ... ) \ + (uc)->vtable->m_util_notifyIllegalWords((uc), __VA_ARGS__) +#define util_remSelected( uc,... ) \ + (uc)->vtable->m_util_remSelected((uc), __VA_ARGS__) -#define util_altKeyDown( uc,e ) \ - (uc)->vtable->m_util_altKeyDown((uc),(e)) - -#define util_notifyIllegalWords( uc,e, w, d, p, b, k ) \ - (uc)->vtable->m_util_notifyIllegalWords((uc), (e), (w), (d), (p), (b), (k)) - -#define util_remSelected( uc,e ) \ - (uc)->vtable->m_util_remSelected((uc), (e)) - -#define util_timerSelected( uc,e, dm, cp ) \ - (uc)->vtable->m_util_timerSelected((uc), (e), (dm), (cp)) - -#define util_formatPauseHistory( uc,e, s, typ, turn, secsPrev, secsCur, msg ) \ - (uc)->vtable->m_util_formatPauseHistory( (uc), (e), (s), (typ), (turn), \ - (secsPrev), (secsCur), (msg) ) +#define util_timerSelected( uc, ... ) \ + (uc)->vtable->m_util_timerSelected((uc), __VA_ARGS__) +#define util_formatPauseHistory( uc, ...) \ + (uc)->vtable->m_util_formatPauseHistory( (uc), __VA_ARGS__) #ifndef XWFEATURE_MINIWIN -# define util_bonusSquareHeld( uc,e, b ) \ - (uc)->vtable->m_util_bonusSquareHeld( (uc), (e), (b) ) -# define util_playerScoreHeld( uc,e, player ) \ - (uc)->vtable->m_util_playerScoreHeld( (uc), (e), (player) ) +# define util_bonusSquareHeld( uc, ... ) \ + (uc)->vtable->m_util_bonusSquareHeld( (uc), __VA_ARGS__ ) +# define util_playerScoreHeld( uc, ... ) \ + (uc)->vtable->m_util_playerScoreHeld( (uc), __VA_ARGS__ ) #endif #ifdef XWFEATURE_BOARDWORDS -#define util_cellSquareHeld(uc,e, s) \ - (uc)->vtable->m_util_cellSquareHeld( (uc), (e), (s) ) +#define util_cellSquareHeld(uc, ...) \ + (uc)->vtable->m_util_cellSquareHeld( (uc), __VA_ARGS__) #endif -#define util_informMissing( uc, e, is, ha, sa, nd, nm, ni, fr ) \ - (uc)->vtable->m_util_informMissing((uc), (e), (is), (ha), (sa), \ - (nd), (nm), (ni), (fr) ) - -#define util_informWordsBlocked(uc,e, c, w, d) \ - (uc)->vtable->m_util_informWordsBlocked( (uc), (e), (c), (w), (d) ) -#define util_getInviteeName(uc, xwe, plyrNum, buf, len ) \ - (uc)->vtable->m_util_getInviteeName( (uc), (xwe), (plyrNum), (buf), (len) ) +#define util_informMissing( uc, ...) \ + (uc)->vtable->m_util_informMissing((uc), __VA_ARGS__) +#define util_informWordsBlocked(uc, ...) \ + (uc)->vtable->m_util_informWordsBlocked( (uc), __VA_ARGS__) +#define util_getInviteeName(uc, ... ) \ + (uc)->vtable->m_util_getInviteeName( (uc), __VA_ARGS__ ) #ifdef XWFEATURE_SEARCHLIMIT -#define util_getTraySearchLimits(uc,e,min,max) \ - (uc)->vtable->m_util_getTraySearchLimits((uc), (e), (min), (max)) +#define util_getTraySearchLimits(uc, ...) \ + (uc)->vtable->m_util_getTraySearchLimits((uc), __VA_ARGS__) #endif #ifdef XWFEATURE_CHAT -# define util_showChat( uc,e, m, f, ts ) (uc)->vtable->m_util_showChat((uc), (e),(m),(f), (ts)) +# define util_showChat( uc, ... ) (uc)->vtable->m_util_showChat((uc), __VA_ARGS__) #endif # ifdef SHOW_PROGRESS -# define util_engineStarting( uc,e, nb ) \ - (uc)->vtable->m_util_engineStarting((uc), (e),(nb)) -# define util_engineStopping( uc,e ) \ - (uc)->vtable->m_util_engineStopping((uc), (e)) +# define util_engineStarting( uc, ... ) \ + (uc)->vtable->m_util_engineStarting((uc), __VA_ARGS__) +# define util_engineStopping( uc, ... ) \ + (uc)->vtable->m_util_engineStopping((uc), __VA_ARGS__) # else -# define util_engineStarting( uc,e, nb ) -# define util_engineStopping( uc,e ) +# define util_engineStarting( uc, ... ) +# define util_engineStopping( uc, ... ) # endif -# define util_getDevUtilCtxt(uc,e) \ - (uc)->vtable->m_util_getDevUtilCtxt( (uc), (e) ) +# define util_getDevUtilCtxt(uc, ...) \ + (uc)->vtable->m_util_getDevUtilCtxt( (uc), __VA_ARGS__) #endif