fild and fist can handle 16bit source/destination.
[libfirm] / testprograms / inheritance_example.c
index 0e94907..c8d223d 100644 (file)
@@ -1,29 +1,31 @@
-/* Copyright (C) 2000 by Universitaet Karlsruhe
-* All rights reserved.
-*
-* Author: Goetz Lindenmaier
-*
-* testprogram.
-*/
+/*
+ * Project:     libFIRM
+ * File name:   testprograms/inheritance_example.c
+ * Purpose:     Shows ir_type graph with inheritance.
+ * Author:      Christian Schaefer, Goetz Lindenmaier
+ * Modified by:
+ * Created:
+ * CVS-ID:      $Id$
+ * Copyright:   (c) 1999-2003 Universität Karlsruhe
+ * Licence:     This file protected by GPL -  GNU GENERAL PUBLIC LICENSE.
+ */
 
-# include <stdio.h>
-# include <string.h>
+#include <stdio.h>
+#include <string.h>
 
-# include "irvrfy.h"
-# include "irdump.h"
-# include "firm.h"
+#include <libfirm/firm.h>
 
 /**
-*  This file constructs type information for the following pseudo-program.
+*  This file constructs ir_type information for the following pseudo-program.
 *  The procedure code is not constructed.
 *
 *  interface I {
-*    void m1 (void);
+*    void m1(void);
 *  }
 *
 *  class C implements I {
-*    void m1 (void) {return};
-*    void m2 (int)  {return 0};
+*    void m1(void) {return};
+*    void m2(int)  {return 0};
 *  }
 *
 *  class D {
 *  }
 *
 *  class E extends C, D {
-*    void m2 (int) {return 1};
+*    void m2(int) {return 1};
 *    int a;
 *  }
 *
 **/
 
-int main(int argc, char **argv)
+int main(void)
 {
   ident *ii, *ci, *di, *ei, *m1i, *m2i, *inti, *ai, *bi; /* suffix i names identifiers */
-  type  *it, *ct, *dt, *et;                              /*        t names types       */
-  type  *m1t, *m2t;
-  type  *intt;
-  entity *i_m1e, *c_m1e, *c_m2e, *e_m2e, *d_be, *e_ae;   /*        e names entities    */
+  ir_type  *it, *ct, *dt, *et;                              /*        t names types       */
+  ir_type  *m1t, *m2t;
+  ir_type  *intt;
+  ir_entity *i_m1e, *c_m1e, *c_m2e, *e_m2e, *d_be, *e_ae;   /*        e names entities    */
 
-  printf("\nCreating type information...\n");
+  printf("\nCreating ir_type information for INHERITANCE_EXAMPLE ...\n");
 
   /** init library */
-  init_firm (NULL);
+  init_firm(NULL);
 
   /** make idents for all used identifiers in the program. */
-  ii  = id_from_str("i",  strlen("i"));
-  ci  = id_from_str("c",  strlen("c"));
-  di  = id_from_str("d",  strlen("d"));
-  ei  = id_from_str("e",  strlen("e"));
-  m1i = id_from_str("m1", strlen("m1"));
-  m2i = id_from_str("m2", strlen("m2"));
-  inti= id_from_str("int",strlen("int"));
-  ai  = id_from_str("a",  strlen("a"));
-  bi  = id_from_str("b",  strlen("b"));
+  ii  = new_id_from_chars("i",  strlen("i"));
+  ci  = new_id_from_chars("c",  strlen("c"));
+  di  = new_id_from_chars("d",  strlen("d"));
+  ei  = new_id_from_chars("e",  strlen("e"));
+  m1i = new_id_from_chars("m1", strlen("m1"));
+  m2i = new_id_from_chars("m2", strlen("m2"));
+  inti= new_id_from_chars("int",strlen("int"));
+  ai  = new_id_from_chars("a",  strlen("a"));
+  bi  = new_id_from_chars("b",  strlen("b"));
 
-  /** make the type information needed */
+  /** make the ir_type information needed */
   /* Language defined types */
   intt = new_type_primitive(inti, mode_Iu);
   /* Program defined types */
@@ -72,12 +74,12 @@ int main(int argc, char **argv)
   ct = new_type_class(ci);
   dt = new_type_class(di);
   et = new_type_class(ei);
-                                     /* Methods with the same type should use the same
-                                       method type information! */
+                                     /* Methods with the same ir_type should use the same
+                                       method ir_type information! */
   m1t = new_type_method(m1i, 0, 0);  /* 0 parameters, 0 results */
   m2t = new_type_method(m2i, 1, 0);  /* 1 parameter, 0 results */
 
-  /** add structure to type graph **/
+  /** add structure to ir_type graph **/
   /* parameters of methods */
   set_method_param_type(m2t, 0, intt);
   /* inheritance. The other direction is added automatically. */
@@ -95,15 +97,15 @@ int main(int argc, char **argv)
 
   /** Add overwirtes relation **/
   /* How these edges are added depends on the source language. */
-  add_entity_overwrites (c_m1e, i_m1e);
-  add_entity_overwrites (e_m2e, c_m2e);
+  add_entity_overwrites(c_m1e, i_m1e);
+  add_entity_overwrites(e_m2e, c_m2e);
 
 
   printf("Done building the graph.  Dumping it.\n");
-  dump_all_types();
+  dump_all_types(0);
 
-  printf("use xvcg to view this graph:\n");
-  printf("/ben/goetz/bin/xvcg GRAPHNAME\n\n");
+  printf("Use ycomp to view this graph:\n");
+  printf("ycomp GRAPHNAME\n\n");
 
-  return (0);
+  return 0;
 }