Add different casts from pointer and ref to avoid bugs
diff --git a/src/main.cc b/src/main.cc
index badf91b..2e0927a 100644
--- a/src/main.cc
+++ b/src/main.cc
@@ -61,7 +61,7 @@
 
   printf ("Opened font file %s: %d bytes long\n", argv[1], len);
 
-  const OpenTypeFontFile &ot = Cast<OpenTypeFontFile> (font_data);
+  const OpenTypeFontFile &ot = *CastP<OpenTypeFontFile> (font_data);
 
   switch (ot.get_tag ()) {
   case OpenTypeFontFile::TrueTypeTag:
@@ -99,7 +99,7 @@
       case GSUBGPOS::GPOSTag:
 	{
 
-	const GSUBGPOS &g = Cast<GSUBGPOS> (font_data + table.offset);
+	const GSUBGPOS &g = *CastP<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 @@
       case GDEF::Tag:
 	{
 
-	const GDEF &gdef = Cast<GDEF> (font_data + table.offset);
+	const GDEF &gdef = *CastP<GDEF> (font_data + table.offset);
 
 	printf ("    Has %sglyph classes\n",
 		  gdef.has_glyph_classes () ? "" : "no ");