mirror of
git://xwords.git.sourceforge.net/gitroot/xwords/xwords
synced 2025-01-22 07:28:16 +01:00
remove redundant list length variable
This commit is contained in:
parent
9437cc4ef9
commit
cbae3665ca
3 changed files with 28 additions and 15 deletions
|
@ -71,6 +71,24 @@ dll_remove( DLHead* list, DLHead* node )
|
|||
return newHead;
|
||||
}
|
||||
|
||||
static ForEachAct
|
||||
lengthProc(const DLHead* XP_UNUSED(dl1), void* closure)
|
||||
{
|
||||
XP_U16* count = (XP_U16*)closure;
|
||||
++*count;
|
||||
return FEA_OK;
|
||||
}
|
||||
|
||||
XP_U16
|
||||
dll_length( const DLHead* list )
|
||||
{
|
||||
XP_U16 result = 0;
|
||||
if ( !!list ) {
|
||||
dll_map( (DLHead*)list, lengthProc, NULL, &result );
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
DLHead*
|
||||
dll_map( DLHead* list, DLMapProc mapProc, DLDisposeProc dispProc,
|
||||
void* closure )
|
||||
|
|
|
@ -24,6 +24,8 @@
|
|||
extern "C" {
|
||||
#endif
|
||||
|
||||
#include "xptypes.h"
|
||||
|
||||
typedef struct DLHead {
|
||||
struct DLHead* _next;
|
||||
struct DLHead* _prev;
|
||||
|
@ -35,6 +37,7 @@ typedef int (*DLCompProc)(const DLHead* dl1, const DLHead* dl2);
|
|||
|
||||
DLHead* dll_insert( DLHead* list, DLHead* node, DLCompProc proc );
|
||||
DLHead* dll_remove( DLHead* list, DLHead* node );
|
||||
XP_U16 dll_length( const DLHead* list );
|
||||
DLHead* dll_sort( DLHead* list, DLCompProc proc );
|
||||
|
||||
typedef ForEachAct (*DLMapProc)(const DLHead* dl1, void* closure);
|
||||
|
|
|
@ -35,7 +35,7 @@ typedef struct _KnownPlayer {
|
|||
|
||||
typedef struct _KPState {
|
||||
KnownPlayer* players;
|
||||
XP_U16 nPlayers;
|
||||
// XP_U16 nPlayers;
|
||||
XP_Bool dirty;
|
||||
XP_Bool inUse;
|
||||
} KPState;
|
||||
|
@ -51,7 +51,6 @@ loadFromStream( XW_DUtilCtxt* dutil, KPState* state, XWStreamCtxt* stream )
|
|||
{
|
||||
while ( 0 < stream_getSize( stream ) ) {
|
||||
XP_U32 newestMod = stream_getU32( stream );
|
||||
XP_LOGFF( "read newestMod: %d", newestMod );
|
||||
XP_UCHAR buf[64];
|
||||
stringFromStreamHere( stream, buf, VSIZE(buf) );
|
||||
|
||||
|
@ -148,10 +147,9 @@ static void
|
|||
makeUniqueName( const KPState* state, const XP_UCHAR* name,
|
||||
XP_UCHAR newName[], XP_U16 len )
|
||||
{
|
||||
XP_U16 nPlayers = state->nPlayers;
|
||||
XP_U16 nPlayers = dll_length( &state->players->links );
|
||||
const XP_UCHAR* names[nPlayers];
|
||||
getPlayersImpl( state, names, &nPlayers );
|
||||
XP_ASSERT( nPlayers == state->nPlayers );
|
||||
for ( int ii = 2; ; ++ii ) {
|
||||
XP_SNPRINTF( newName, len, "%s %d", name, ii );
|
||||
XP_Bool found = XP_FALSE;
|
||||
|
@ -230,9 +228,6 @@ addPlayer( XW_DUtilCtxt* XP_UNUSED_DBG(dutil), KPState* state,
|
|||
AddData ad = {.name = name, .addr = addr, };
|
||||
dll_map( &state->players->links, addProc, NULL, &ad );
|
||||
|
||||
XP_LOGFF( "withSameDevID: %p; withSameName: %p",
|
||||
ad.withSameDevID, ad.withSameName );
|
||||
|
||||
XP_UCHAR tmpName[64];
|
||||
if ( !!ad.withSameDevID ) { /* only one allowed */
|
||||
XP_Bool isNewer = newestMod > ad.withSameDevID->newestMod;
|
||||
|
@ -243,8 +238,6 @@ addPlayer( XW_DUtilCtxt* XP_UNUSED_DBG(dutil), KPState* state,
|
|||
ad.withSameDevID->newestMod, newestMod );
|
||||
ad.withSameDevID->newestMod = newestMod;
|
||||
changed = XP_TRUE;
|
||||
} else {
|
||||
XP_LOGFF( "not newer" );
|
||||
}
|
||||
state->dirty = changed || state->dirty;
|
||||
} else {
|
||||
|
@ -262,9 +255,8 @@ addPlayer( XW_DUtilCtxt* XP_UNUSED_DBG(dutil), KPState* state,
|
|||
= (KnownPlayer*)dll_insert( &state->players->links,
|
||||
&newPlayer->links, compByName );
|
||||
state->dirty = XP_TRUE;
|
||||
++state->nPlayers;
|
||||
}
|
||||
XP_LOGFF( "nPlayers now: %d", state->nPlayers );
|
||||
XP_LOGFF( "nPlayers now: %d", dll_length( &state->players->links ) );
|
||||
}
|
||||
|
||||
XP_Bool
|
||||
|
@ -302,7 +294,7 @@ XP_Bool
|
|||
kplr_havePlayers( XW_DUtilCtxt* dutil, XWEnv xwe )
|
||||
{
|
||||
KPState* state = loadState( dutil, xwe );
|
||||
XP_Bool result = 0 < state->nPlayers;
|
||||
XP_Bool result = 0 < dll_length( &state->players->links );
|
||||
releaseState( dutil, xwe, state );
|
||||
LOG_RETURNF( "%s", boolToStr(result) );
|
||||
return result;
|
||||
|
@ -327,12 +319,13 @@ static void
|
|||
getPlayersImpl( const KPState* state, const XP_UCHAR** players,
|
||||
XP_U16* nFound )
|
||||
{
|
||||
if ( state->nPlayers <= *nFound && !!players ) {
|
||||
XP_U16 nPlayers = dll_length( &state->players->links );
|
||||
if ( nPlayers <= *nFound && !!players ) {
|
||||
GetState gs = { .players = players, .indx = 0, };
|
||||
DLHead* head = dll_map( &state->players->links, getProc, NULL, &gs );
|
||||
XP_ASSERT( head == &state->players->links );
|
||||
}
|
||||
*nFound = state->nPlayers;
|
||||
*nFound = nPlayers;
|
||||
}
|
||||
|
||||
void
|
||||
|
@ -479,7 +472,6 @@ delMapProc( const DLHead* dl, void* closure )
|
|||
DelState* dsp = (DelState*)closure;
|
||||
if ( 0 == XP_STRCMP( kp->name, dsp->name ) ) {
|
||||
result = FEA_REMOVE | FEA_EXIT;
|
||||
--dsp->state->nPlayers;
|
||||
dsp->state->dirty = XP_TRUE;
|
||||
}
|
||||
return result;
|
||||
|
|
Loading…
Reference in a new issue