[HB] Simplify indirect sanitize()
authorBehdad Esfahbod <behdad@behdad.org>
Tue, 4 Aug 2009 14:23:01 +0000 (10:23 -0400)
committerBehdad Esfahbod <behdad@behdad.org>
Mon, 2 Nov 2009 19:40:28 +0000 (14:40 -0500)
src/hb-open-types-private.hh
src/hb-ot-layout-common-private.hh

index b3d7541..198c0ad 100644 (file)
@@ -383,6 +383,13 @@ struct ArrayOf
         return false;
     */
   }
+  inline bool sanitize (SANITIZE_ARG_DEF, const char *base) {
+    if (!(SANITIZE (len) && SANITIZE_GET_SIZE())) return false;
+    unsigned int count = len;
+    for (unsigned int i = 0; i < count; i++)
+      if (!SANITIZE_THIS (array[i]))
+        return false;
+  }
 
   USHORT len;
   Type array[];
@@ -410,6 +417,13 @@ struct HeadlessArrayOf
         return false;
     */
   }
+  inline bool sanitize (SANITIZE_ARG_DEF, const char *base) {
+    if (!(SANITIZE (len) && SANITIZE_GET_SIZE())) return false;
+    unsigned int count = len;
+    for (unsigned int i = 0; i < count; i++)
+      if (!SANITIZE_THIS (array[i]))
+        return false;
+  }
 
   USHORT len;
   Type array[];
@@ -436,6 +450,13 @@ struct LongArrayOf
         return false;
     */
   }
+  inline bool sanitize (SANITIZE_ARG_DEF, const char *base) {
+    if (!(SANITIZE (len) && SANITIZE_GET_SIZE())) return false;
+    unsigned int count = len;
+    for (unsigned int i = 0; i < count; i++)
+      if (!SANITIZE_THIS (array[i]))
+        return false;
+  }
 
   ULONG len;
   Type array[];
@@ -443,39 +464,16 @@ struct LongArrayOf
 
 /* Array of Offset's */
 template <typename Type>
-struct OffsetArrayOf : ArrayOf<OffsetTo<Type> > {
-  inline bool sanitize (SANITIZE_ARG_DEF, const char *base) {
-    if (!(SANITIZE (this->len) && SANITIZE_GET_SIZE())) return false;
-    unsigned int count = this->len;
-    for (unsigned int i = 0; i < count; i++)
-      if (!this->array[i].sanitize (SANITIZE_ARG, base))
-        return false;
-  }
-};
+struct OffsetArrayOf : ArrayOf<OffsetTo<Type> > {};
 
 /* Array of LongOffset's */
 template <typename Type>
-struct LongOffsetArrayOf : ArrayOf<LongOffsetTo<Type> > {
-  inline bool sanitize (SANITIZE_ARG_DEF, const char *base) {
-    if (!(SANITIZE (this->len) && SANITIZE_GET_SIZE())) return false;
-    unsigned int count = this->len;
-    for (unsigned int i = 0; i < count; i++)
-      if (!this->array[i].sanitize (SANITIZE_ARG, base))
-        return false;
-  }
-};
+struct LongOffsetArrayOf : ArrayOf<LongOffsetTo<Type> > {};
 
 /* LongArray of LongOffset's */
 template <typename Type>
-struct LongOffsetLongArrayOf : LongArrayOf<LongOffsetTo<Type> > {
-  inline bool sanitize (SANITIZE_ARG_DEF, const char *base) {
-    if (!(SANITIZE (this->len) && SANITIZE_GET_SIZE())) return false;
-    unsigned int count = this->len;
-    for (unsigned int i = 0; i < count; i++)
-      if (!this->array[i].sanitize (SANITIZE_ARG, base))
-        return false;
-  }
-};
+struct LongOffsetLongArrayOf : LongArrayOf<LongOffsetTo<Type> > {};
+
 
 /* An array type is one that contains a variable number of objects
  * as its last item.  An array object is extended with get_len()
index 6cee085..dbea709 100644 (file)
@@ -61,16 +61,7 @@ struct Record
 };
 
 template <typename Type>
-struct RecordArrayOf : ArrayOf<Record<Type> >
-{
-  inline bool sanitize (SANITIZE_ARG_DEF, const char *base) {
-    if (!(SANITIZE (this->len) && SANITIZE_GET_SIZE())) return false;
-    unsigned int count = this->len;
-    for (unsigned int i = 0; i < count; i++)
-      if (!SANITIZE_THIS (this->array[i]))
-        return false;
-  }
-};
+struct RecordArrayOf : ArrayOf<Record<Type> > {};
 
 template <typename Type>
 struct RecordListOf : RecordArrayOf<Type>