Added missing API docu, improved existing API docu
[libfirm] / include / libfirm / firm.h
index b0361c7..bc15cb0 100644 (file)
@@ -1,5 +1,5 @@
 /*
- * Copyright (C) 1995-2008 University of Karlsruhe.  All right reserved.
+ * Copyright (C) 1995-2010 University of Karlsruhe.  All right reserved.
  *
  * This file is part of libFirm.
  *
  * @file
  * @brief     Central firm header.
  * @author    Martin Trapp, Christian Schaefer, Goetz Lindenmaier
- * @version   $Id$
- * @summary
- *  Central FIRM header.
+ * This header includes all other firm headers and can be included conveniently
+ * by users of the library.
+ */
+
+/** @mainpage
  *
  *  FIRM is a full graph based intermediate representation in SSA Form
  *  with a novel concept to model side effects.  It allows fast, aggressive
  *  optimizations.
  *
- *  This header is the central header of the library implementation of this
- *  IR.
- *
  *  The internal representation of a program in firm is separated into five
  *  different modules:
  *   - Firm Graphs representing the code of a program. (Subdirectory ir.)
  *
  *   Further this library supplies functionality to build and optimize FIRM graphs
  *   and further functionality needed in a compiler.  Finally there is more
- *   generic functionality to support implementations using firm.  (Code generation,
- *   further optimizations).
- */
-#ifndef FIRM_COMMON_FIRM_H
-#define FIRM_COMMON_FIRM_H
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-/* The representations */
-#include "firm_common.h"   /* common type tags. */
-#include "irprog.h"        /* control flow and data of a program */
-#include "irgraph.h"       /* graphs */
-#include "typerep.h"       /* type representation */
-#include "tv.h"            /* target values */
-#include "ident.h"         /* source code identificators */
-
-/* Functionality */
-#include "ircons.h"        /* construct ir */
-#include "ircgcons.h"      /* construct interprocedural graph */
-
-/* Optimizations */
-#include "irflag.h"         /* optimization flags */
-#include "irgopt.h"         /* optimize ir */
-#include "iroptimize.h"     /* optimize ir by reassociation */
-#include "ircgopt.h"        /* Optimizations based on interprocedural graph */
-
-/* Lowering */
-#include "lowering.h"         /* lowering of different calls parameters, intrinsic calls, double word types, high-level constructs */
-
-/* Analyses */
-#include "irouts.h"           /* Graph reversal / out edges. */
-#include "trouts.h"           /* Graph reversal / out edges for types. */
-#include "irdom.h"            /* Dominator analysis */
-#include "cgana.h"            /* Analysis to construct interprocedural graph */
-                              /* including some optimizations */
-#include "irloop.h"           /* loop and backedge analysis */
-#include "callgraph.h"        /* Callgraph construction */
-#include "irconsconfirm.h"    /* Confirm nodes */
-#include "analyze_irg_args.h" /* Simple pointer parameter analysis */
-#include "irtypeinfo.h"       /* type information for nodes */
-#include "irmemory.h"         /* memory disambiguation */
-#include "interval_analysis.h"
-#include "field_temperature.h"
-#include "execution_frequency.h"
-
-/* Support */
-#include "irgmod.h"         /* Support to modify ir */
-#include "irgwalk.h"        /* Support to walk ir */
-
-#include "irarch.h"        /* architecture dependent optimizations */
-
-#include "firmstat.h"      /* statistics */
-
-#include "dbginfo.h"       /* debug support */
-#include "seqnumbers.h"    /* debug support */
-#include "firm_ycomp.h"    /* ycomp debugging support */
-
-#include "irdump.h"
-#include "irprintf.h"
-#include "irvrfy.h"
-
-#include "irarch.h"
-
-#include "iredges.h"
-
-#include "be.h"
-
-/**
- * libFirm initialization parameters.
+ *   generic functionality to support implementations using firm.
+ *   (Code generation, further optimizations).
  */
-struct _firm_parameter_t {
-  /**
-   * The size of this structure. init_firm() will only initialize
-   * this amount of data. This allows to add more fields to this structure
-   * without breaking compatibility to older source.
-   */
-  unsigned int size;
-
-  /**
-   * Statistic options. If statistic function where enabled, these
-   * flags configure it, see enum firmstat_options_t.
-   */
-  unsigned enable_statistics;
-
-  /**
-   * This function is called, whenever a local variable is
-   * used before definition. The function should insert a default value,
-   * and/or raise a compiler error/warning. Note that returning
-   * an Unknown is allowed here.
-   */
-  uninitialized_local_variable_func_t *initialize_local_func;
 
-  /**
-   * The interface functions for the type identification module.
-   * If not set, the default implementation with compare_strict() and
-   * firm_hash_name() will be used.
-   */
-  type_identify_if_t *ti_if;
+/** @defgroup irana Analyses */
 
-  /**
-   * The interface for the ident module.
-   * If not set, the default libFirm ident module (using hash sets).
-   */
-  ident_if_t *id_if;
-
-  /**
-   * The default calling convention.
-   */
-  unsigned cc_mask;
-
-  /**
-   * The debug info that should be used for "builtin" objects.
-   */
-  dbg_info *builtin_dbg;
-};
-
-typedef struct _firm_parameter_t firm_parameter_t;
-
-/**
- * Initialize the firm library.
- *
- * Initializes the firm library.  Allocates default data structures.
- * Initializes configurable behavior of the library.
- *
- * @param params   A structure containing the parameters of the libFirm.
- *
- * The parameter struct may be NULL. In that case, the original FIRM behavior
- * is conserved.
+/** @defgroup adt Abstract Data Structures
+ * This module contains abstract datatypes. The firm API is fully functional
+ * without these abstract datatypes. They're provided as a convenience.
  */
-void ir_init(const firm_parameter_t *params);
 
-/**
- * Frees all memory occupied by the firm library.
+/** @defgroup algorithms Algorithms
+ * This module contains generic algorithms. The firm API is fully functional
+ * without them. They're provided as a convenience.
  */
-void ir_finish(void);
-
-/** returns the libFirm major version number */
-unsigned ir_get_version_major(void);
-/** returns libFirm minor version number */
-unsigned ir_get_version_minor(void);
-/** returns string describing libFirm revision */
-const char *ir_get_version_revision(void);
-/** returns string describing libFirm build */
-const char *ir_get_version_build(void);
+#ifndef FIRM_COMMON_FIRM_H
+#define FIRM_COMMON_FIRM_H
 
-#ifdef __cplusplus
-}
-#endif
+#include "analyze_irg_args.h"
+#include "be.h"
+#include "callgraph.h"
+#include "cdep.h"
+#include "cgana.h"
+#include "dbginfo.h"
+#include "execfreq.h"
+#include "firm_common.h"
+#include "firmstat.h"
+#include "firm_types.h"
+#include "heights.h"
+#include "ident.h"
+#include "irarch.h"
+#include "ircgopt.h"
+#include "irconsconfirm.h"
+#include "ircons.h"
+#include "irdom.h"
+#include "vrp.h"
+#include "irdump.h"
+#include "iredgekinds.h"
+#include "iredges.h"
+#include "irextbb.h"
+#include "irflag.h"
+#include "irgmod.h"
+#include "irgopt.h"
+#include "irgraph.h"
+#include "irgwalk.h"
+#include "irhooks.h"
+#include "irio.h"
+#include "irloop.h"
+#include "irmemory.h"
+#include "irmode.h"
+#include "irnode.h"
+#include "irop.h"
+#include "iropt.h"
+#include "iroptimize.h"
+#include "irouts.h"
+#include "irpass.h"
+#include "irprintf.h"
+#include "irprog.h"
+#include "irtypeinfo.h"
+#include "irverify.h"
+#include "lowering.h"
+#include "timing.h"
+#include "trouts.h"
+#include "tv.h"
+#include "typerep.h"
 
 #endif