get_Call_n_params: use int for consistency
[libfirm] / include / libfirm / dbginfo.h
index 479ae8f..9778aea 100644 (file)
  * @brief     Implements the Firm interface to debug information.
  * @author    Goetz Lindenmaier, Michael Beck
  * @date      2001
- * @version   $Id$
- * @brief
- *  Firm requires a debugging module fulfilling this interface, else no
- *  debugging information is passed to the backend.
- *  The interface requires a datatype representing the debugging
- *  information.  Firm supports administrating a reference to the debug
- *  information in every Firm node.  Further Firm optimizations call
- *  routines to propagate debug information from old nodes to new nodes
- *  if the optimization replaces the old ones by the new ones.
  */
 #ifndef FIRM_DEBUG_DBGINFO_H
 #define FIRM_DEBUG_DBGINFO_H
 #include "begin.h"
 
 /**
- * @defgroup debug    The Firm interface to debugging support.
- *
+ * @defgroup dbg_info    Source References
+ *  Firm requires a debugging module fulfilling this interface, else no
+ *  debugging information is passed to the backend.
+ *  The interface requires a datatype representing the debugging
+ *  information.  Firm supports administrating a reference to the debug
+ *  information in every Firm node.  Further Firm optimizations call
+ *  routines to propagate debug information from old nodes to new nodes
+ *  if the optimization replaces the old ones by the new ones.
  * @{
  */
 
@@ -81,7 +78,7 @@ typedef enum {
        dbg_read_a_const,             /**< A Firm subgraph was replaced because of a read
                                           a constant optimization. */
        dbg_rem_poly_call,            /**< Remove polymorphic call. */
-       dbg_dead_code,                /**< Removing unreachable code, I.e. blocks that are never executed. */
+       dbg_dead_code,                /**< Removing unreachable code, i.e. blocks that are never executed. */
        dbg_opt_confirm,              /**< A Firm subgraph was replace because of a Confirmation. */
        dbg_gvn_pre,                  /**< A Firm node was replace because of the GVN-PRE algorithm. */
        dbg_combo,                    /**< A Firm node was replace because of the combo algorithm. */
@@ -147,15 +144,21 @@ typedef void merge_sets_func(ir_node **new_node_array, int new_num_entries, ir_n
 FIRM_API void dbg_init(merge_pair_func *dbg_info_merge_pair,
                        merge_sets_func *dbg_info_merge_sets);
 
-/** @} */
+/** A sourcecode location */
+typedef struct src_loc_t {
+       char const *file;    /**< the name of the source (usually a file) */
+       unsigned    line;    /**< line number (starting at 1; 0 if unknown) */
+       unsigned    column;  /**< column number (starting at 1; 0 if unknown) */
+} src_loc_t;
 
 /**
  * The type of the debug info retriever function.
- *  When given a dbg_info returns the name (usually the filename) of the
- *  compilation unit defining it. @p line is set to the line number of the
- *  definition.
+ *  When given a dbg_info returns the name (usually the filename), line number
+ *  and column number of the definition.
+ *  Any part of the returned information may be NULL/0, which means it is not
+ *  available.
  */
-typedef const char *(*retrieve_dbg_func)(const dbg_info *dbg, unsigned *line);
+typedef src_loc_t (*retrieve_dbg_func)(dbg_info const *dbg);
 
 /**
  * Sets a debug info retriever.
@@ -173,14 +176,14 @@ typedef void (*retrieve_type_dbg_func)(char *buffer, size_t buffer_size,
                                        const type_dbg_info *tdbgi);
 
 /**
- * Set global print_type_dbg_info function in firm
+ * Sets global print_type_dbg_info function in firm
  */
 FIRM_API void ir_set_type_debug_retrieve(retrieve_type_dbg_func func);
 
 /**
  * Retrieve the debug info.
  */
-FIRM_API const char *ir_retrieve_dbg_info(const dbg_info *dbg, unsigned *line);
+FIRM_API src_loc_t ir_retrieve_dbg_info(dbg_info const *dbg);
 
 /**
  * Retrieve type debug info
@@ -188,6 +191,8 @@ FIRM_API const char *ir_retrieve_dbg_info(const dbg_info *dbg, unsigned *line);
 FIRM_API void ir_retrieve_type_dbg_info(char *buffer, size_t buffer_size,
                                         const type_dbg_info *tdbgi);
 
+/** @} */
+
 #include "end.h"
 
 #endif