bandwidth.c \
bencode.c \
bitfield.c \
+ bitset.c \
blocklist.c \
cache.c \
clients.c \
return ret;
}
-
-/***
-****
-***/
-
-void
-tr_bitsetReserve( tr_bitset * b, size_t size )
-{
- if( b->bitfield.bitCount < size )
- {
- tr_bitfield * tmp = tr_bitfieldDup( &b->bitfield );
-
- tr_bitfieldDestruct( &b->bitfield );
- tr_bitfieldConstruct( &b->bitfield, size );
-
- if( ( tmp->bits != NULL ) && ( tmp->byteCount > 0 ) )
- memcpy( b->bitfield.bits, tmp->bits, tmp->byteCount );
-
- tr_bitfieldFree( tmp );
- }
-}
--- /dev/null
+/*
+ * This file Copyright (C) Mnemosyne LLC
+ *
+ * This file is licensed by the GPL version 2. Works owned by the
+ * Transmission project are granted a special exemption to clause 2(b)
+ * so that the bulk of its code can remain under the MIT license.
+ * This exemption does not extend to derived works not owned by
+ * the Transmission project.
+ *
+ * $Id$
+ */
+
+#include "transmission.h"
+#include "bitset.h"
+
+void
+tr_bitsetConstructor( tr_bitset * b, size_t size )
+{
+ tr_bitfieldConstruct( &b->bitfield, size );
+}
+
+void
+tr_bitsetDestructor( tr_bitset * b )
+{
+ tr_bitfieldDestruct( &b->bitfield );
+}
+
+void
+tr_bitsetReserve( tr_bitset * b, size_t size )
+{
+ if( b->bitfield.bitCount < size )
+ {
+ tr_bitfield * tmp = tr_bitfieldDup( &b->bitfield );
+
+ tr_bitfieldDestruct( &b->bitfield );
+ tr_bitfieldConstruct( &b->bitfield, size );
+
+ if( ( tmp->bits != NULL ) && ( tmp->byteCount > 0 ) )
+ memcpy( b->bitfield.bits, tmp->bits, tmp->byteCount );
+
+ tr_bitfieldFree( tmp );
+ }
+}
+
+tr_bool
+tr_bitsetHas( const tr_bitset * b, const size_t nth )
+{
+ if( b->haveAll ) return TRUE;
+ if( b->haveNone ) return FALSE;
+ if( nth >= b->bitfield.bitCount ) return FALSE;
+ return tr_bitfieldHas( &b->bitfield, nth );
+}
+
+void
+tr_bitsetOr( tr_bitfield * a, const tr_bitset * b )
+{
+ if( b->haveAll )
+ tr_bitfieldAddRange( a, 0, a->bitCount );
+ else if( !b->haveNone )
+ tr_bitfieldOr( a, &b->bitfield );
+}
+
+/* set 'a' to all the flags that were in 'a' but not 'b' */
+void
+tr_bitsetDifference( tr_bitfield * a, const tr_bitset * b )
+{
+ if( b->haveAll )
+ tr_bitfieldClear( a );
+ else if( !b->haveNone )
+ tr_bitfieldDifference( a, &b->bitfield );
+}
+
+double
+tr_bitsetPercent( const tr_bitset * b )
+{
+ if( b->haveAll ) return 1.0;
+ if( b->haveNone ) return 0.0;
+ if( b->bitfield.bitCount == 0 ) return 0.0;
+ return tr_bitfieldCountTrueBits( &b->bitfield ) / (double)b->bitfield.bitCount;
+}
+
+void
+tr_bitsetSetHaveAll( tr_bitset * b )
+{
+ b->haveAll = 1;
+ b->haveNone = 0;
+}
+
+void
+tr_bitsetSetHaveNone( tr_bitset * b )
+{
+ b->haveAll = 0;
+ b->haveNone = 1;
+}
+
+int
+tr_bitsetAdd( tr_bitset * b, size_t i )
+{
+ int ret = 0;
+ if( !b->haveAll ) {
+ b->haveNone = 0;
+ tr_bitsetReserve( b, i+1 );
+ ret = tr_bitfieldAdd( &b->bitfield, i );
+ }
+ return ret;
+}
}
tr_bitset;
-static inline void
-tr_bitsetConstructor( tr_bitset * b, size_t size )
-{
- tr_bitfieldConstruct( &b->bitfield, size );
-}
-
-static inline void
-tr_bitsetDestructor( tr_bitset * b )
-{
- tr_bitfieldDestruct( &b->bitfield );
-}
-
void tr_bitsetReserve( tr_bitset * b, size_t size );
+void tr_bitsetConstructor( tr_bitset * b, size_t size );
+void tr_bitsetDestructor( tr_bitset * b );
-static inline tr_bool
-tr_bitsetHasFast( const tr_bitset * b, const size_t nth )
-{
- if( b->haveAll ) return TRUE;
- if( b->haveNone ) return FALSE;
- if( nth >= b->bitfield.bitCount ) return FALSE;
- return tr_bitfieldHasFast( &b->bitfield, nth );
-}
+void tr_bitsetSetHaveAll( tr_bitset * b );
+void tr_bitsetSetHaveNone( tr_bitset * b );
-static inline tr_bool
-tr_bitsetHas( const tr_bitset * b, const size_t nth )
-{
- if( b->haveAll ) return TRUE;
- if( b->haveNone ) return FALSE;
- if( nth >= b->bitfield.bitCount ) return FALSE;
- return tr_bitfieldHas( &b->bitfield, nth );
-}
+int tr_bitsetAdd( tr_bitset * b, size_t i );
-static inline void
-tr_bitsetOr( tr_bitfield * a, const tr_bitset * b )
-{
- if( b->haveAll )
- tr_bitfieldAddRange( a, 0, a->bitCount );
- else if( !b->haveNone )
- tr_bitfieldOr( a, &b->bitfield );
-}
+/***
+****
+***/
-/* set 'a' to all the flags that were in 'a' but not 'b' */
-static inline void
-tr_bitsetDifference( tr_bitfield * a, const tr_bitset * b )
-{
- if( b->haveAll )
- tr_bitfieldClear( a );
- else if( !b->haveNone )
- tr_bitfieldDifference( a, &b->bitfield );
-}
-
-static inline double
-tr_bitsetPercent( const tr_bitset * b )
-{
- if( b->haveAll ) return 1.0;
- if( b->haveNone ) return 0.0;
- if( b->bitfield.bitCount == 0 ) return 0.0;
- return tr_bitfieldCountTrueBits( &b->bitfield ) / (double)b->bitfield.bitCount;
-}
+double tr_bitsetPercent( const tr_bitset * b );
-static inline void
-tr_bitsetSetHaveAll( tr_bitset * b )
-{
- b->haveAll = 1;
- b->haveNone = 0;
-}
+tr_bool tr_bitsetHas( const tr_bitset * b, const size_t nth );
-static inline void
-tr_bitsetSetHaveNone( tr_bitset * b )
-{
- b->haveAll = 0;
- b->haveNone = 1;
-}
+void tr_bitsetOr( tr_bitfield * a, const tr_bitset * b );
-static inline int
-tr_bitsetAdd( tr_bitset * b, size_t i )
-{
- int ret = 0;
- if( !b->haveAll ) {
- b->haveNone = 0;
- tr_bitsetReserve( b, i+1 );
- ret = tr_bitfieldAdd( &b->bitfield, i );
- }
- return ret;
-}
+/* set 'a' to all the flags that were in 'a' but not 'b' */
+void tr_bitsetDifference( tr_bitfield * a, const tr_bitset * b );
#endif
uint16_t r = 0;
for( peer_i=0; peer_i<peer_count; ++peer_i )
- if( tr_bitsetHasFast( &peers[peer_i]->have, piece_i ) )
+ if( tr_bitsetHas( &peers[peer_i]->have, piece_i ) )
++r;
t->pieceReplication[piece_i] = r;
uint16_t r = 0;
for( peer_i=0; peer_i<peer_count; ++peer_i )
- if( tr_bitsetHasFast( &peers[peer_i]->have, piece_i ) )
+ if( tr_bitsetHas( &peers[peer_i]->have, piece_i ) )
++r;
assert( rep[piece_i] == r );
struct weighted_piece * p = pieces + i;
/* if the peer has this piece that we want... */
- if( tr_bitsetHasFast( have, p->index ) )
+ if( tr_bitsetHas( have, p->index ) )
{
tr_block_index_t b = tr_torPieceFirstBlock( tor, p->index );
const tr_block_index_t e = b + tr_torPieceCountBlocks( tor, p->index );