فهرست منبع

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
Tatsuhiro Tsujikawa 15 سال پیش
والد
کامیت
886f8ee58e

+ 16 - 0
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>
 
 	Added vbegin() and vend() for fixed sized array.

+ 7 - 13
src/array_fun.h

@@ -41,21 +41,15 @@
 namespace aria2 {
 
 // calculate length of array
-
-template<typename T, size_t N>
-char (&char_array_ref(T (&)[N]))[N];
-
 template<typename T, size_t N>
-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<typename T>
-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<typename T, size_t N>
 T* vbegin(T (&a)[N])
@@ -66,7 +60,7 @@ T* vbegin(T (&a)[N])
 template<typename T, size_t N>
 T* vend(T (&a)[N])
 {
-  return a+arrayLength(a);
+  return a+N;
 }
 
 template<typename T>

+ 1 - 1
test/BitfieldManTest.cc

@@ -210,7 +210,7 @@ void BitfieldManTest::testFilter()
   std::vector<size_t> 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());

+ 2 - 2
test/BtPortMessageTest.cc

@@ -107,14 +107,14 @@ void BtPortMessageTest::testDoReceivedAction()
 
   // 9 nodes to create at least 2 buckets.
   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);
     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]);
   }
 

+ 1 - 1
test/DHTRoutingTableDeserializerTest.cc

@@ -37,7 +37,7 @@ void DHTRoutingTableDeserializerTest::testDeserialize()
   SharedHandle<DHTNode> localNode(new DHTNode());
 
   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]->setIPAddress("192.168.0."+util::uitos(i+1));
     nodesSrc[i]->setPort(6881+i);

+ 1 - 1
test/DHTRoutingTableSerializerTest.cc

@@ -37,7 +37,7 @@ void DHTRoutingTableSerializerTest::testSerialize()
   SharedHandle<DHTNode> localNode(new DHTNode());
 
   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]->setIPAddress("192.168.0."+util::uitos(i+1));
     nodesSrc[i]->setPort(6881+i);

+ 6 - 6
test/DownloadHelperTest.cc

@@ -83,7 +83,7 @@ void DownloadHelperTest::testCreateRequestGroupForUri()
     std::vector<std::string> 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<std::string> 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<std::string> 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());

+ 1 - 1
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]);
   }
 

+ 2 - 2
test/MultiDiskAdaptorTest.cc

@@ -371,7 +371,7 @@ void MultiDiskAdaptorTest::testCutTrailingGarbage()
     SharedHandle<FileEntry>(new FileEntry(dir+"/"+prefix+"1", 256, 0)),
     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);
   }
   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+"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<SharedHandle<FileEntry> > fileEntries

+ 1 - 1
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<std::string> nonopts;

+ 1 - 1
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

+ 2 - 2
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.