mirror of https://github.com/aria2/aria2
2010-03-25 Tatsuhiro Tsujikawa <t-tujikawa@users.sourceforge.net>
Removed arrayLength. Defined A2_ARRAY_LEN as macro to calculate size of array at compile time. * src/array_fun.h * test/BitfieldManTest.cc * test/BtPortMessageTest.cc * test/DHTRoutingTableDeserializerTest.cc * test/DHTRoutingTableSerializerTest.cc * test/DownloadHelperTest.cc * test/LongestSequencePieceSelectorTest.cc * test/MultiDiskAdaptorTest.cc * test/OptionParserTest.cc * test/PriorityPieceSelectorTest.cc * test/array_funTest.ccpull/1/head
parent
f15d22b619
commit
886f8ee58e
16
ChangeLog
16
ChangeLog
|
@ -1,3 +1,19 @@
|
||||||
|
2010-03-25 Tatsuhiro Tsujikawa <t-tujikawa@users.sourceforge.net>
|
||||||
|
|
||||||
|
Removed arrayLength. Defined A2_ARRAY_LEN as macro to calculate
|
||||||
|
size of array at compile time.
|
||||||
|
* src/array_fun.h
|
||||||
|
* test/BitfieldManTest.cc
|
||||||
|
* test/BtPortMessageTest.cc
|
||||||
|
* test/DHTRoutingTableDeserializerTest.cc
|
||||||
|
* test/DHTRoutingTableSerializerTest.cc
|
||||||
|
* test/DownloadHelperTest.cc
|
||||||
|
* test/LongestSequencePieceSelectorTest.cc
|
||||||
|
* test/MultiDiskAdaptorTest.cc
|
||||||
|
* test/OptionParserTest.cc
|
||||||
|
* test/PriorityPieceSelectorTest.cc
|
||||||
|
* test/array_funTest.cc
|
||||||
|
|
||||||
2010-03-25 Tatsuhiro Tsujikawa <t-tujikawa@users.sourceforge.net>
|
2010-03-25 Tatsuhiro Tsujikawa <t-tujikawa@users.sourceforge.net>
|
||||||
|
|
||||||
Added vbegin() and vend() for fixed sized array.
|
Added vbegin() and vend() for fixed sized array.
|
||||||
|
|
|
@ -41,21 +41,15 @@
|
||||||
namespace aria2 {
|
namespace aria2 {
|
||||||
|
|
||||||
// calculate length of array
|
// calculate length of array
|
||||||
|
|
||||||
template<typename T, size_t N>
|
template<typename T, size_t N>
|
||||||
char (&char_array_ref(T (&)[N]))[N];
|
char (&char_array_ref_fun(T (&)[N]))[N];
|
||||||
|
|
||||||
template<typename T, size_t N>
|
|
||||||
size_t arrayLength(T (&a)[N])
|
|
||||||
{
|
|
||||||
return sizeof(char_array_ref(a));
|
|
||||||
}
|
|
||||||
|
|
||||||
|
// For 0 length array
|
||||||
template<typename T>
|
template<typename T>
|
||||||
size_t arrayLength(T (&a)[0u])
|
char (&char_array_ref_fun(T (&)[0u]))[0u];
|
||||||
{
|
|
||||||
return 0;
|
// To calculate size of array at compile time, we use macro here.
|
||||||
}
|
#define A2_ARRAY_LEN(X) sizeof(char_array_ref_fun(X))
|
||||||
|
|
||||||
template<typename T, size_t N>
|
template<typename T, size_t N>
|
||||||
T* vbegin(T (&a)[N])
|
T* vbegin(T (&a)[N])
|
||||||
|
@ -66,7 +60,7 @@ T* vbegin(T (&a)[N])
|
||||||
template<typename T, size_t N>
|
template<typename T, size_t N>
|
||||||
T* vend(T (&a)[N])
|
T* vend(T (&a)[N])
|
||||||
{
|
{
|
||||||
return a+arrayLength(a);
|
return a+N;
|
||||||
}
|
}
|
||||||
|
|
||||||
template<typename T>
|
template<typename T>
|
||||||
|
|
|
@ -210,7 +210,7 @@ void BitfieldManTest::testFilter()
|
||||||
std::vector<size_t> out;
|
std::vector<size_t> out;
|
||||||
CPPUNIT_ASSERT_EQUAL((size_t)6, btman.getFirstNMissingUnusedIndex(out, 32));
|
CPPUNIT_ASSERT_EQUAL((size_t)6, btman.getFirstNMissingUnusedIndex(out, 32));
|
||||||
const size_t ans[] = { 2, 3, 4, 5, 6, 7 };
|
const size_t ans[] = { 2, 3, 4, 5, 6, 7 };
|
||||||
for(size_t i = 0; i < arrayLength(ans); ++i) {
|
for(size_t i = 0; i < A2_ARRAY_LEN(ans); ++i) {
|
||||||
CPPUNIT_ASSERT_EQUAL(ans[i], out[i]);
|
CPPUNIT_ASSERT_EQUAL(ans[i], out[i]);
|
||||||
}
|
}
|
||||||
CPPUNIT_ASSERT_EQUAL((uint64_t)12ULL, btman.getFilteredTotalLength());
|
CPPUNIT_ASSERT_EQUAL((uint64_t)12ULL, btman.getFilteredTotalLength());
|
||||||
|
|
|
@ -107,14 +107,14 @@ void BtPortMessageTest::testDoReceivedAction()
|
||||||
|
|
||||||
// 9 nodes to create at least 2 buckets.
|
// 9 nodes to create at least 2 buckets.
|
||||||
SharedHandle<DHTNode> nodes[9];
|
SharedHandle<DHTNode> nodes[9];
|
||||||
for(size_t i = 0; i < arrayLength(nodes); ++i) {
|
for(size_t i = 0; i < A2_ARRAY_LEN(nodes); ++i) {
|
||||||
memset(nodeID, 0, DHT_ID_LENGTH);
|
memset(nodeID, 0, DHT_ID_LENGTH);
|
||||||
nodeID[DHT_ID_LENGTH-1] = i+1;
|
nodeID[DHT_ID_LENGTH-1] = i+1;
|
||||||
nodes[i].reset(new DHTNode(nodeID));
|
nodes[i].reset(new DHTNode(nodeID));
|
||||||
}
|
}
|
||||||
|
|
||||||
DHTRoutingTable routingTable(localNode);
|
DHTRoutingTable routingTable(localNode);
|
||||||
for(size_t i = 0; i < arrayLength(nodes); ++i) {
|
for(size_t i = 0; i < A2_ARRAY_LEN(nodes); ++i) {
|
||||||
routingTable.addNode(nodes[i]);
|
routingTable.addNode(nodes[i]);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -37,7 +37,7 @@ void DHTRoutingTableDeserializerTest::testDeserialize()
|
||||||
SharedHandle<DHTNode> localNode(new DHTNode());
|
SharedHandle<DHTNode> localNode(new DHTNode());
|
||||||
|
|
||||||
SharedHandle<DHTNode> nodesSrc[3];
|
SharedHandle<DHTNode> nodesSrc[3];
|
||||||
for(size_t i = 0; i < arrayLength(nodesSrc); ++i) {
|
for(size_t i = 0; i < A2_ARRAY_LEN(nodesSrc); ++i) {
|
||||||
nodesSrc[i].reset(new DHTNode());
|
nodesSrc[i].reset(new DHTNode());
|
||||||
nodesSrc[i]->setIPAddress("192.168.0."+util::uitos(i+1));
|
nodesSrc[i]->setIPAddress("192.168.0."+util::uitos(i+1));
|
||||||
nodesSrc[i]->setPort(6881+i);
|
nodesSrc[i]->setPort(6881+i);
|
||||||
|
|
|
@ -37,7 +37,7 @@ void DHTRoutingTableSerializerTest::testSerialize()
|
||||||
SharedHandle<DHTNode> localNode(new DHTNode());
|
SharedHandle<DHTNode> localNode(new DHTNode());
|
||||||
|
|
||||||
SharedHandle<DHTNode> nodesSrc[3];
|
SharedHandle<DHTNode> nodesSrc[3];
|
||||||
for(size_t i = 0; i < arrayLength(nodesSrc); ++i) {
|
for(size_t i = 0; i < A2_ARRAY_LEN(nodesSrc); ++i) {
|
||||||
nodesSrc[i].reset(new DHTNode());
|
nodesSrc[i].reset(new DHTNode());
|
||||||
nodesSrc[i]->setIPAddress("192.168.0."+util::uitos(i+1));
|
nodesSrc[i]->setIPAddress("192.168.0."+util::uitos(i+1));
|
||||||
nodesSrc[i]->setPort(6881+i);
|
nodesSrc[i]->setPort(6881+i);
|
||||||
|
|
|
@ -83,7 +83,7 @@ void DownloadHelperTest::testCreateRequestGroupForUri()
|
||||||
std::vector<std::string> uris;
|
std::vector<std::string> uris;
|
||||||
group->getDownloadContext()->getFirstFileEntry()->getUris(uris);
|
group->getDownloadContext()->getFirstFileEntry()->getUris(uris);
|
||||||
CPPUNIT_ASSERT_EQUAL((size_t)3, uris.size());
|
CPPUNIT_ASSERT_EQUAL((size_t)3, uris.size());
|
||||||
for(size_t i = 0; i < arrayLength(array); ++i) {
|
for(size_t i = 0; i < A2_ARRAY_LEN(array); ++i) {
|
||||||
CPPUNIT_ASSERT_EQUAL(array[i], uris[i]);
|
CPPUNIT_ASSERT_EQUAL(array[i], uris[i]);
|
||||||
}
|
}
|
||||||
CPPUNIT_ASSERT_EQUAL((unsigned int)3, group->getNumConcurrentCommand());
|
CPPUNIT_ASSERT_EQUAL((unsigned int)3, group->getNumConcurrentCommand());
|
||||||
|
@ -102,11 +102,11 @@ void DownloadHelperTest::testCreateRequestGroupForUri()
|
||||||
std::vector<std::string> uris;
|
std::vector<std::string> uris;
|
||||||
group->getDownloadContext()->getFirstFileEntry()->getUris(uris);
|
group->getDownloadContext()->getFirstFileEntry()->getUris(uris);
|
||||||
CPPUNIT_ASSERT_EQUAL((size_t)5, uris.size());
|
CPPUNIT_ASSERT_EQUAL((size_t)5, uris.size());
|
||||||
for(size_t i = 0; i < arrayLength(array); ++i) {
|
for(size_t i = 0; i < A2_ARRAY_LEN(array); ++i) {
|
||||||
CPPUNIT_ASSERT_EQUAL(array[i], uris[i]);
|
CPPUNIT_ASSERT_EQUAL(array[i], uris[i]);
|
||||||
}
|
}
|
||||||
for(size_t i = 0; i < 5-arrayLength(array); ++i) {
|
for(size_t i = 0; i < 5-A2_ARRAY_LEN(array); ++i) {
|
||||||
CPPUNIT_ASSERT_EQUAL(array[i], uris[i+arrayLength(array)]);
|
CPPUNIT_ASSERT_EQUAL(array[i], uris[i+A2_ARRAY_LEN(array)]);
|
||||||
}
|
}
|
||||||
CPPUNIT_ASSERT_EQUAL((unsigned int)5, group->getNumConcurrentCommand());
|
CPPUNIT_ASSERT_EQUAL((unsigned int)5, group->getNumConcurrentCommand());
|
||||||
}
|
}
|
||||||
|
@ -121,7 +121,7 @@ void DownloadHelperTest::testCreateRequestGroupForUri()
|
||||||
std::vector<std::string> uris;
|
std::vector<std::string> uris;
|
||||||
group->getDownloadContext()->getFirstFileEntry()->getUris(uris);
|
group->getDownloadContext()->getFirstFileEntry()->getUris(uris);
|
||||||
CPPUNIT_ASSERT_EQUAL((size_t)3, uris.size());
|
CPPUNIT_ASSERT_EQUAL((size_t)3, uris.size());
|
||||||
for(size_t i = 0; i < arrayLength(array); ++i) {
|
for(size_t i = 0; i < A2_ARRAY_LEN(array); ++i) {
|
||||||
CPPUNIT_ASSERT_EQUAL(array[i], uris[i]);
|
CPPUNIT_ASSERT_EQUAL(array[i], uris[i]);
|
||||||
}
|
}
|
||||||
CPPUNIT_ASSERT_EQUAL((unsigned int)2, group->getNumConcurrentCommand());
|
CPPUNIT_ASSERT_EQUAL((unsigned int)2, group->getNumConcurrentCommand());
|
||||||
|
@ -346,7 +346,7 @@ void DownloadHelperTest::testCreateRequestGroupForBitTorrent()
|
||||||
group->getDownloadContext()->getFirstFileEntry()->getUris(uris);
|
group->getDownloadContext()->getFirstFileEntry()->getUris(uris);
|
||||||
// See -s option is ignored
|
// See -s option is ignored
|
||||||
CPPUNIT_ASSERT_EQUAL((size_t)3, uris.size());
|
CPPUNIT_ASSERT_EQUAL((size_t)3, uris.size());
|
||||||
for(size_t i = 0; i < arrayLength(array); ++i) {
|
for(size_t i = 0; i < A2_ARRAY_LEN(array); ++i) {
|
||||||
CPPUNIT_ASSERT_EQUAL(array[i]+"/aria2-test/aria2/src/aria2c", uris[i]);
|
CPPUNIT_ASSERT_EQUAL(array[i]+"/aria2-test/aria2/src/aria2c", uris[i]);
|
||||||
}
|
}
|
||||||
CPPUNIT_ASSERT_EQUAL((unsigned int)5, group->getNumConcurrentCommand());
|
CPPUNIT_ASSERT_EQUAL((unsigned int)5, group->getNumConcurrentCommand());
|
||||||
|
|
|
@ -27,7 +27,7 @@ void LongestSequencePieceSelectorTest::testSelect()
|
||||||
{
|
{
|
||||||
size_t A[] = { 1,2,3,4,7,10,11,12,13,14,15,100,112,113,114 };
|
size_t A[] = { 1,2,3,4,7,10,11,12,13,14,15,100,112,113,114 };
|
||||||
BitfieldMan bf(1024, 1024*256);
|
BitfieldMan bf(1024, 1024*256);
|
||||||
for(size_t i = 0; i < arrayLength(A); ++i) {
|
for(size_t i = 0; i < A2_ARRAY_LEN(A); ++i) {
|
||||||
bf.setBit(A[i]);
|
bf.setBit(A[i]);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -371,7 +371,7 @@ void MultiDiskAdaptorTest::testCutTrailingGarbage()
|
||||||
SharedHandle<FileEntry>(new FileEntry(dir+"/"+prefix+"1", 256, 0)),
|
SharedHandle<FileEntry>(new FileEntry(dir+"/"+prefix+"1", 256, 0)),
|
||||||
SharedHandle<FileEntry>(new FileEntry(dir+"/"+prefix+"2", 512, 256))
|
SharedHandle<FileEntry>(new FileEntry(dir+"/"+prefix+"2", 512, 256))
|
||||||
};
|
};
|
||||||
for(size_t i = 0; i < arrayLength(entries); ++i) {
|
for(size_t i = 0; i < A2_ARRAY_LEN(entries); ++i) {
|
||||||
createFile(entries[i]->getPath(), entries[i]->getLength()+100);
|
createFile(entries[i]->getPath(), entries[i]->getLength()+100);
|
||||||
}
|
}
|
||||||
std::vector<SharedHandle<FileEntry> > fileEntries
|
std::vector<SharedHandle<FileEntry> > fileEntries
|
||||||
|
@ -400,7 +400,7 @@ void MultiDiskAdaptorTest::testSize()
|
||||||
SharedHandle<FileEntry>(new FileEntry(dir+"/"+prefix+"1", 1, 0)),
|
SharedHandle<FileEntry>(new FileEntry(dir+"/"+prefix+"1", 1, 0)),
|
||||||
SharedHandle<FileEntry>(new FileEntry(dir+"/"+prefix+"2", 1, 1))
|
SharedHandle<FileEntry>(new FileEntry(dir+"/"+prefix+"2", 1, 1))
|
||||||
};
|
};
|
||||||
for(size_t i = 0; i < arrayLength(entries); ++i) {
|
for(size_t i = 0; i < A2_ARRAY_LEN(entries); ++i) {
|
||||||
createFile(entries[i]->getPath(), entries[i]->getLength());
|
createFile(entries[i]->getPath(), entries[i]->getLength());
|
||||||
}
|
}
|
||||||
std::vector<SharedHandle<FileEntry> > fileEntries
|
std::vector<SharedHandle<FileEntry> > fileEntries
|
||||||
|
|
|
@ -164,7 +164,7 @@ void OptionParserTest::testParseArg()
|
||||||
|
|
||||||
char* const argv[] = { prog, optionAlpha, argAlpha, optionBravo, argBravo,
|
char* const argv[] = { prog, optionAlpha, argAlpha, optionBravo, argBravo,
|
||||||
nonopt1, nonopt2 };
|
nonopt1, nonopt2 };
|
||||||
int argc = arrayLength(argv);
|
int argc = A2_ARRAY_LEN(argv);
|
||||||
|
|
||||||
std::stringstream s;
|
std::stringstream s;
|
||||||
std::vector<std::string> nonopts;
|
std::vector<std::string> nonopts;
|
||||||
|
|
|
@ -25,7 +25,7 @@ void PriorityPieceSelectorTest::testSelect()
|
||||||
size_t pieceLength = 1024;
|
size_t pieceLength = 1024;
|
||||||
size_t A[] = { 1,200};
|
size_t A[] = { 1,200};
|
||||||
BitfieldMan bf(pieceLength, pieceLength*256);
|
BitfieldMan bf(pieceLength, pieceLength*256);
|
||||||
for(size_t i = 0; i < arrayLength(A); ++i) {
|
for(size_t i = 0; i < A2_ARRAY_LEN(A); ++i) {
|
||||||
bf.setBit(A[i]);
|
bf.setBit(A[i]);
|
||||||
}
|
}
|
||||||
PriorityPieceSelector selector
|
PriorityPieceSelector selector
|
||||||
|
|
|
@ -67,8 +67,8 @@ void array_funTest::testArrayLength()
|
||||||
int64_t ia[] = { 1, 2, 3, 4, 5 };
|
int64_t ia[] = { 1, 2, 3, 4, 5 };
|
||||||
int64_t zeroLengthArray[] = {};
|
int64_t zeroLengthArray[] = {};
|
||||||
|
|
||||||
CPPUNIT_ASSERT_EQUAL((size_t)5, arrayLength(ia));
|
CPPUNIT_ASSERT_EQUAL((size_t)5, A2_ARRAY_LEN(ia));
|
||||||
CPPUNIT_ASSERT_EQUAL((size_t)0, arrayLength(zeroLengthArray));
|
CPPUNIT_ASSERT_EQUAL((size_t)0, A2_ARRAY_LEN(zeroLengthArray));
|
||||||
}
|
}
|
||||||
|
|
||||||
// Check operator[] in const context.
|
// Check operator[] in const context.
|
||||||
|
|
Loading…
Reference in New Issue