From 886f8ee58e1630f8abb1a1e57c6fbd5e9349d7e2 Mon Sep 17 00:00:00 2001 From: Tatsuhiro Tsujikawa Date: Thu, 25 Mar 2010 14:22:43 +0000 Subject: [PATCH] 2010-03-25 Tatsuhiro Tsujikawa 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 --- ChangeLog | 16 ++++++++++++++++ src/array_fun.h | 20 +++++++------------- test/BitfieldManTest.cc | 2 +- test/BtPortMessageTest.cc | 4 ++-- test/DHTRoutingTableDeserializerTest.cc | 2 +- test/DHTRoutingTableSerializerTest.cc | 2 +- test/DownloadHelperTest.cc | 12 ++++++------ test/LongestSequencePieceSelectorTest.cc | 2 +- test/MultiDiskAdaptorTest.cc | 4 ++-- test/OptionParserTest.cc | 2 +- test/PriorityPieceSelectorTest.cc | 2 +- test/array_funTest.cc | 4 ++-- 12 files changed, 41 insertions(+), 31 deletions(-) diff --git a/ChangeLog b/ChangeLog index fbd68f1c..587cfbf8 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,19 @@ +2010-03-25 Tatsuhiro Tsujikawa + + 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 Added vbegin() and vend() for fixed sized array. diff --git a/src/array_fun.h b/src/array_fun.h index 7b047a19..87d14430 100644 --- a/src/array_fun.h +++ b/src/array_fun.h @@ -41,21 +41,15 @@ namespace aria2 { // calculate length of array - template -char (&char_array_ref(T (&)[N]))[N]; - -template -size_t arrayLength(T (&a)[N]) -{ - return sizeof(char_array_ref(a)); -} +char (&char_array_ref_fun(T (&)[N]))[N]; +// For 0 length array template -size_t arrayLength(T (&a)[0u]) -{ - return 0; -} +char (&char_array_ref_fun(T (&)[0u]))[0u]; + +// To calculate size of array at compile time, we use macro here. +#define A2_ARRAY_LEN(X) sizeof(char_array_ref_fun(X)) template T* vbegin(T (&a)[N]) @@ -66,7 +60,7 @@ T* vbegin(T (&a)[N]) template T* vend(T (&a)[N]) { - return a+arrayLength(a); + return a+N; } template diff --git a/test/BitfieldManTest.cc b/test/BitfieldManTest.cc index f7bcd76a..915310fe 100644 --- a/test/BitfieldManTest.cc +++ b/test/BitfieldManTest.cc @@ -210,7 +210,7 @@ void BitfieldManTest::testFilter() std::vector out; CPPUNIT_ASSERT_EQUAL((size_t)6, btman.getFirstNMissingUnusedIndex(out, 32)); 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((uint64_t)12ULL, btman.getFilteredTotalLength()); diff --git a/test/BtPortMessageTest.cc b/test/BtPortMessageTest.cc index 6cfee19b..1cff5a32 100644 --- a/test/BtPortMessageTest.cc +++ b/test/BtPortMessageTest.cc @@ -107,14 +107,14 @@ void BtPortMessageTest::testDoReceivedAction() // 9 nodes to create at least 2 buckets. SharedHandle 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); nodeID[DHT_ID_LENGTH-1] = i+1; nodes[i].reset(new DHTNode(nodeID)); } 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]); } diff --git a/test/DHTRoutingTableDeserializerTest.cc b/test/DHTRoutingTableDeserializerTest.cc index 211800c6..7f2c8d7e 100644 --- a/test/DHTRoutingTableDeserializerTest.cc +++ b/test/DHTRoutingTableDeserializerTest.cc @@ -37,7 +37,7 @@ void DHTRoutingTableDeserializerTest::testDeserialize() SharedHandle localNode(new DHTNode()); SharedHandle 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]->setIPAddress("192.168.0."+util::uitos(i+1)); nodesSrc[i]->setPort(6881+i); diff --git a/test/DHTRoutingTableSerializerTest.cc b/test/DHTRoutingTableSerializerTest.cc index 4ca188a0..4b069819 100644 --- a/test/DHTRoutingTableSerializerTest.cc +++ b/test/DHTRoutingTableSerializerTest.cc @@ -37,7 +37,7 @@ void DHTRoutingTableSerializerTest::testSerialize() SharedHandle localNode(new DHTNode()); SharedHandle 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]->setIPAddress("192.168.0."+util::uitos(i+1)); nodesSrc[i]->setPort(6881+i); diff --git a/test/DownloadHelperTest.cc b/test/DownloadHelperTest.cc index 1384c0fd..79524371 100644 --- a/test/DownloadHelperTest.cc +++ b/test/DownloadHelperTest.cc @@ -83,7 +83,7 @@ void DownloadHelperTest::testCreateRequestGroupForUri() std::vector uris; group->getDownloadContext()->getFirstFileEntry()->getUris(uris); 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((unsigned int)3, group->getNumConcurrentCommand()); @@ -102,11 +102,11 @@ void DownloadHelperTest::testCreateRequestGroupForUri() std::vector uris; group->getDownloadContext()->getFirstFileEntry()->getUris(uris); 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]); } - for(size_t i = 0; i < 5-arrayLength(array); ++i) { - CPPUNIT_ASSERT_EQUAL(array[i], uris[i+arrayLength(array)]); + for(size_t i = 0; i < 5-A2_ARRAY_LEN(array); ++i) { + CPPUNIT_ASSERT_EQUAL(array[i], uris[i+A2_ARRAY_LEN(array)]); } CPPUNIT_ASSERT_EQUAL((unsigned int)5, group->getNumConcurrentCommand()); } @@ -121,7 +121,7 @@ void DownloadHelperTest::testCreateRequestGroupForUri() std::vector uris; group->getDownloadContext()->getFirstFileEntry()->getUris(uris); 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((unsigned int)2, group->getNumConcurrentCommand()); @@ -346,7 +346,7 @@ void DownloadHelperTest::testCreateRequestGroupForBitTorrent() group->getDownloadContext()->getFirstFileEntry()->getUris(uris); // See -s option is ignored 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((unsigned int)5, group->getNumConcurrentCommand()); diff --git a/test/LongestSequencePieceSelectorTest.cc b/test/LongestSequencePieceSelectorTest.cc index 23739a42..58c7dfcb 100644 --- a/test/LongestSequencePieceSelectorTest.cc +++ b/test/LongestSequencePieceSelectorTest.cc @@ -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 }; 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]); } diff --git a/test/MultiDiskAdaptorTest.cc b/test/MultiDiskAdaptorTest.cc index 4aa10a4e..509a524a 100644 --- a/test/MultiDiskAdaptorTest.cc +++ b/test/MultiDiskAdaptorTest.cc @@ -371,7 +371,7 @@ void MultiDiskAdaptorTest::testCutTrailingGarbage() SharedHandle(new FileEntry(dir+"/"+prefix+"1", 256, 0)), SharedHandle(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); } std::vector > fileEntries @@ -400,7 +400,7 @@ void MultiDiskAdaptorTest::testSize() SharedHandle(new FileEntry(dir+"/"+prefix+"1", 1, 0)), SharedHandle(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()); } std::vector > fileEntries diff --git a/test/OptionParserTest.cc b/test/OptionParserTest.cc index d282980e..ff8958bf 100644 --- a/test/OptionParserTest.cc +++ b/test/OptionParserTest.cc @@ -164,7 +164,7 @@ void OptionParserTest::testParseArg() char* const argv[] = { prog, optionAlpha, argAlpha, optionBravo, argBravo, nonopt1, nonopt2 }; - int argc = arrayLength(argv); + int argc = A2_ARRAY_LEN(argv); std::stringstream s; std::vector nonopts; diff --git a/test/PriorityPieceSelectorTest.cc b/test/PriorityPieceSelectorTest.cc index 0bd7eda4..5ebb90ff 100644 --- a/test/PriorityPieceSelectorTest.cc +++ b/test/PriorityPieceSelectorTest.cc @@ -25,7 +25,7 @@ void PriorityPieceSelectorTest::testSelect() size_t pieceLength = 1024; size_t A[] = { 1,200}; 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]); } PriorityPieceSelector selector diff --git a/test/array_funTest.cc b/test/array_funTest.cc index 7497b311..ed8c2579 100644 --- a/test/array_funTest.cc +++ b/test/array_funTest.cc @@ -67,8 +67,8 @@ void array_funTest::testArrayLength() int64_t ia[] = { 1, 2, 3, 4, 5 }; int64_t zeroLengthArray[] = {}; - CPPUNIT_ASSERT_EQUAL((size_t)5, arrayLength(ia)); - CPPUNIT_ASSERT_EQUAL((size_t)0, arrayLength(zeroLengthArray)); + CPPUNIT_ASSERT_EQUAL((size_t)5, A2_ARRAY_LEN(ia)); + CPPUNIT_ASSERT_EQUAL((size_t)0, A2_ARRAY_LEN(zeroLengthArray)); } // Check operator[] in const context.