summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBehdad Esfahbod <behdad@behdad.org>2010-04-23 16:22:54 -0400
committerBehdad Esfahbod <behdad@behdad.org>2010-04-23 16:28:27 -0400
commitefb324a46ff64adb4ec8612b4089e8daff1e6d8e (patch)
treeb8cac4710d3530a382465ca1a1f49100fc04710d
parentf1aaa2a43654c28405ffd393de2cb127437c99a5 (diff)
Remove GET_FOR_DATA macros
The major-version check is now handled by sanitize. If major doesn't match, we reject and fall back to the Null object.
-rw-r--r--src/hb-open-file-private.hh4
-rw-r--r--src/hb-open-type-private.hh23
-rw-r--r--src/hb-ot-layout-gdef-private.hh2
-rw-r--r--src/hb-ot-layout-gpos-private.hh3
-rw-r--r--src/hb-ot-layout-gsub-private.hh3
-rw-r--r--src/hb-ot-layout-gsubgpos-private.hh2
-rw-r--r--src/main.cc6
7 files changed, 5 insertions, 38 deletions
diff --git a/src/hb-open-file-private.hh b/src/hb-open-file-private.hh
index f45ba8f..a3efaf1 100644
--- a/src/hb-open-file-private.hh
+++ b/src/hb-open-file-private.hh
@@ -66,8 +66,6 @@ typedef struct OffsetTable
{
friend struct OpenTypeFontFile;
- STATIC_DEFINE_GET_FOR_DATA (OffsetTable);
-
inline unsigned int get_table_count (void) const
{ return numTables; }
inline const Tag& get_table_tag (unsigned int i) const
@@ -201,8 +199,6 @@ struct OpenTypeFontFile
static const hb_tag_t TrueTypeTag = HB_TAG ( 0 , 1 , 0 , 0 );
static const hb_tag_t TTCTag = HB_TAG ('t','t','c','f');
- STATIC_DEFINE_GET_FOR_DATA (OpenTypeFontFile);
-
inline hb_tag_t get_tag (void) const { return u.tag; }
inline unsigned int get_face_count (void) const
diff --git a/src/hb-open-type-private.hh b/src/hb-open-type-private.hh
index 1a11cd1..232a61e 100644
--- a/src/hb-open-type-private.hh
+++ b/src/hb-open-type-private.hh
@@ -107,25 +107,6 @@ ASSERT_STATIC (sizeof (Type) + 1 <= sizeof (_Null##Type))
#define Null(Type) Null<Type>()
-/* get_for_data() is a static class method returning a reference to an
- * instance of Type located at the input data location. It's just a
- * fancy, NULL-safe, cast! */
-#define STATIC_DEFINE_GET_FOR_DATA(Type) \
- static inline const Type& get_for_data (const char *data) \
- { \
- if (HB_UNLIKELY (data == NULL)) return Null(Type); \
- return Cast<Type> (*data); \
- }
-/* Like get_for_data(), but checks major version first. */
-#define STATIC_DEFINE_GET_FOR_DATA_CHECK_MAJOR_VERSION(Type, MajorMin, MajorMax) \
- static inline const Type& get_for_data (const char *data) \
- { \
- if (HB_UNLIKELY (data == NULL)) return Null(Type); \
- const Type& t = Cast<Type> (*data); \
- if (HB_UNLIKELY (t.version.major < MajorMin || t.version.major > MajorMax)) return Null(Type); \
- return t; \
- }
-
/*
* Sanitize
@@ -299,7 +280,7 @@ struct Sanitizer
_hb_sanitize_init (&context, blob);
- /* We drop const here */
+ /* Note: We drop const here */
Type *t = &Cast<Type> (* (char *) CharP(context.start));
sane = t->sanitize (SANITIZE_ARG_INIT);
@@ -345,7 +326,7 @@ struct Sanitizer
}
static const Type& lock_instance (hb_blob_t *blob) {
- return Type::get_for_data (hb_blob_lock (blob));
+ return Cast<Type> (* (const char *) hb_blob_lock (blob));
}
};
diff --git a/src/hb-ot-layout-gdef-private.hh b/src/hb-ot-layout-gdef-private.hh
index 4de5740..14bef8c 100644
--- a/src/hb-ot-layout-gdef-private.hh
+++ b/src/hb-ot-layout-gdef-private.hh
@@ -314,8 +314,6 @@ struct GDEF
ComponentGlyph = 4
};
- STATIC_DEFINE_GET_FOR_DATA_CHECK_MAJOR_VERSION (GDEF, 1, 1);
-
inline bool has_glyph_classes () const { return glyphClassDef != 0; }
inline hb_ot_layout_class_t get_glyph_class (hb_codepoint_t glyph) const
{ return (this+glyphClassDef).get_class (glyph); }
diff --git a/src/hb-ot-layout-gpos-private.hh b/src/hb-ot-layout-gpos-private.hh
index 65937fb..73ac56d 100644
--- a/src/hb-ot-layout-gpos-private.hh
+++ b/src/hb-ot-layout-gpos-private.hh
@@ -1520,9 +1520,6 @@ struct GPOS : GSUBGPOS
{
static const hb_tag_t Tag = HB_OT_TAG_GPOS;
- static inline const GPOS& get_for_data (const char *data)
- { return Cast<GPOS> (GSUBGPOS::get_for_data (data)); }
-
inline const PosLookup& get_lookup (unsigned int i) const
{ return Cast<PosLookup> (GSUBGPOS::get_lookup (i)); }
diff --git a/src/hb-ot-layout-gsub-private.hh b/src/hb-ot-layout-gsub-private.hh
index 0d6bbc9..fc3bb29 100644
--- a/src/hb-ot-layout-gsub-private.hh
+++ b/src/hb-ot-layout-gsub-private.hh
@@ -855,9 +855,6 @@ struct GSUB : GSUBGPOS
{
static const hb_tag_t Tag = HB_OT_TAG_GSUB;
- static inline const GSUB& get_for_data (const char *data)
- { return Cast<GSUB> (GSUBGPOS::get_for_data (data)); }
-
inline const SubstLookup& get_lookup (unsigned int i) const
{ return Cast<SubstLookup> (GSUBGPOS::get_lookup (i)); }
diff --git a/src/hb-ot-layout-gsubgpos-private.hh b/src/hb-ot-layout-gsubgpos-private.hh
index 74d9b04..73e6283 100644
--- a/src/hb-ot-layout-gsubgpos-private.hh
+++ b/src/hb-ot-layout-gsubgpos-private.hh
@@ -896,8 +896,6 @@ struct GSUBGPOS
static const hb_tag_t GSUBTag = HB_OT_TAG_GSUB;
static const hb_tag_t GPOSTag = HB_OT_TAG_GPOS;
- STATIC_DEFINE_GET_FOR_DATA_CHECK_MAJOR_VERSION (GSUBGPOS, 1, 1);
-
inline unsigned int get_script_count (void) const
{ return (this+scriptList).len; }
inline const Tag& get_script_tag (unsigned int i) const
diff --git a/src/main.cc b/src/main.cc
index b4123b5..badf91b 100644
--- a/src/main.cc
+++ b/src/main.cc
@@ -61,7 +61,7 @@ main (int argc, char **argv)
printf ("Opened font file %s: %d bytes long\n", argv[1], len);
- const OpenTypeFontFile &ot = OpenTypeFontFile::get_for_data (font_data);
+ const OpenTypeFontFile &ot = Cast<OpenTypeFontFile> (font_data);
switch (ot.get_tag ()) {
case OpenTypeFontFile::TrueTypeTag:
@@ -99,7 +99,7 @@ main (int argc, char **argv)
case GSUBGPOS::GPOSTag:
{
- const GSUBGPOS &g = GSUBGPOS::get_for_data ((const char *) &ot + table.offset);
+ const GSUBGPOS &g = Cast<GSUBGPOS> (font_data + table.offset);
int num_scripts = g.get_script_count ();
printf (" %d script(s) found in table\n", num_scripts);
@@ -162,7 +162,7 @@ main (int argc, char **argv)
case GDEF::Tag:
{
- const GDEF &gdef = GDEF::get_for_data ((const char *) &ot + table.offset);
+ const GDEF &gdef = Cast<GDEF> (font_data + table.offset);
printf (" Has %sglyph classes\n",
gdef.has_glyph_classes () ? "" : "no ");