summaryrefslogtreecommitdiff
path: root/src/decomp
diff options
context:
space:
mode:
authorCyrille Bagard <nocbos@gmail.com>2012-10-16 16:03:28 (GMT)
committerCyrille Bagard <nocbos@gmail.com>2012-10-16 16:03:28 (GMT)
commit6f9563a0184e36fab8d0c2c38d151827784e331e (patch)
tree2d0e13667bc9efcc0f26c17572c9d38dabd89db7 /src/decomp
parentc7a14e50bd002e3922969e9bae7816753aefb073 (diff)
Properly output routines documentation.
git-svn-id: svn://svn.gna.org/svn/chrysalide/trunk@268 abbe820e-26c8-41b2-8c08-b7b2b41f8b0a
Diffstat (limited to 'src/decomp')
-rw-r--r--src/decomp/lang/asm.c32
-rw-r--r--src/decomp/lang/java.c1
-rw-r--r--src/decomp/output-int.h7
-rw-r--r--src/decomp/output.c34
-rw-r--r--src/decomp/output.h8
5 files changed, 75 insertions, 7 deletions
diff --git a/src/decomp/lang/asm.c b/src/decomp/lang/asm.c
index 30c56cc..1767706 100644
--- a/src/decomp/lang/asm.c
+++ b/src/decomp/lang/asm.c
@@ -25,6 +25,7 @@
#include "../output-int.h"
+#include "../../analysis/type.h" /* TODO : remme */
@@ -56,6 +57,9 @@ static GBufferLine *g_asm_output_write_comments(GAsmOutput *, GCodeBuffer *, con
/* Imprime dans un tampon donné une méthode de comparaison. */
static void g_asm_output_write_comp_sign(GAsmOutput *, GBufferLine *, CompSignType);
+/* Débute la documentation d'une routine. */
+static GBufferLine *g_asm_output_start_routine_info(const GAsmOutput *, GCodeBuffer *);
+
/* Débute la définition d'une routine. */
static GBufferLine *g_asm_output_start_routine_prototype(GAsmOutput *, GCodeBuffer *, const GDataType *);
@@ -109,6 +113,8 @@ static void g_asm_output_init(GAsmOutput *output)
lang->comp_sign = (write_comp_sign_fc)g_asm_output_write_comp_sign;
+ lang->start_info = (start_rtn_info_fc)g_asm_output_start_routine_info;
+
lang->start_routine_proto = (rlgbuftp_fc)g_asm_output_start_routine_prototype;
lang->end_routine_proto = (lgbufln_fc)g_asm_output_end_routine_prototype;
@@ -221,6 +227,32 @@ static void g_asm_output_write_comp_sign(GAsmOutput *output, GBufferLine *line,
* *
* Paramètres : output = encadrant de l'impression en langage de prog. *
* buffer = tampon de sortie à disposition. *
+* *
+* Description : Débute la documentation d'une routine. *
+* *
+* Retour : Ligne nouvellement créée. *
+* *
+* Remarques : - *
+* *
+******************************************************************************/
+
+static GBufferLine *g_asm_output_start_routine_info(const GAsmOutput *output, GCodeBuffer *buffer)
+{
+ GBufferLine *result; /* Adresse nouvelle à remonter */
+
+ result = g_code_buffer_append_new_line_fixme(buffer);
+
+ g_buffer_line_insert_text(result, BLC_ASSEMBLY_HEAD, "; ", 2, RTT_COMMENT);
+
+ return result;
+
+}
+
+
+/******************************************************************************
+* *
+* Paramètres : output = encadrant de l'impression en langage de prog. *
+* buffer = tampon de sortie à disposition. *
* ret = type de retour de la routine traitée. *
* *
* Description : Débute la définition d'une routine. *
diff --git a/src/decomp/lang/java.c b/src/decomp/lang/java.c
index 5092f32..ae7fb70 100644
--- a/src/decomp/lang/java.c
+++ b/src/decomp/lang/java.c
@@ -25,6 +25,7 @@
#include "../output-int.h"
+#include "../../analysis/type.h" /* TODO : remme */
diff --git a/src/decomp/output-int.h b/src/decomp/output-int.h
index be057af..6c5f588 100644
--- a/src/decomp/output-int.h
+++ b/src/decomp/output-int.h
@@ -38,8 +38,11 @@ typedef GBufferLine * (* write_comments_fc) (GLangOutput *, GCodeBuffer *, const
/* Imprime dans un tampon donné une méthode de comparaison. */
typedef void (* write_comp_sign_fc) (GLangOutput *, GBufferLine *, CompSignType);
+/* Débute la documentation d'une routine. */
+typedef GBufferLine * (* start_rtn_info_fc) (const GLangOutput *, GCodeBuffer *);
+
/* Xxx. */
-typedef GBufferLine * (* rlgbuftp_fc) (GLangOutput *, GCodeBuffer *, const GDataType *);
+typedef GBufferLine * (* rlgbuftp_fc) (GLangOutput *, GCodeBuffer *, const void /*GDataType*/ *);
/* Xxx. */
typedef void (* lgbuf_fc) (GLangOutput *, GCodeBuffer *);
@@ -64,6 +67,8 @@ struct _GLangOutput
rlgbuftp_fc start_class; /* Début de définition */
lgbuf_fc end_class; /* Fin de définition de classe */
+ start_rtn_info_fc start_info; /* Début de documentation */
+
rlgbuftp_fc start_routine_proto; /* Début de prototype */
lgbufln_fc end_routine_proto; /* Fin de prototype */
lgbufln_fc start_routine_body; /* Début de définition */
diff --git a/src/decomp/output.c b/src/decomp/output.c
index 698ce0d..20e18a9 100644
--- a/src/decomp/output.c
+++ b/src/decomp/output.c
@@ -25,6 +25,7 @@
#include "output-int.h"
+#include "../analysis/type.h" /* TODO : remme */
@@ -216,12 +217,12 @@ void g_lang_output_write_comp_sign(GLangOutput *output, GBufferLine *line, CompS
* *
******************************************************************************/
-GBufferLine *g_lang_output_start_class(GLangOutput *output, GCodeBuffer *buffer, const GDataType *type)
+GBufferLine *g_lang_output_start_class(GLangOutput *output, GCodeBuffer *buffer, const void *type)
{
GBufferLine *result; /* Adresse nouvelle à remonter */
if (output->start_class != NULL)
- result = output->start_class(output, buffer, type);
+ result = output->start_class(output, buffer, (const GDataType *)type);
else result = NULL;
@@ -255,6 +256,33 @@ void g_lang_output_end_class(GLangOutput *output, GCodeBuffer *buffer)
* *
* Paramètres : output = encadrant de l'impression en langage de prog. *
* buffer = tampon de sortie à disposition. *
+* *
+* Description : Débute la documentation d'une routine. *
+* *
+* Retour : Ligne nouvellement créée. *
+* *
+* Remarques : - *
+* *
+******************************************************************************/
+
+GBufferLine *g_lang_output_start_routine_info(const GLangOutput *output, GCodeBuffer *buffer)
+{
+ GBufferLine *result; /* Adresse nouvelle à remonter */
+
+ if (output->start_routine_proto != NULL)
+ result = output->start_info(output, buffer);
+
+ else result = NULL;
+
+ return result;
+
+}
+
+
+/******************************************************************************
+* *
+* Paramètres : output = encadrant de l'impression en langage de prog. *
+* buffer = tampon de sortie à disposition. *
* ret = type de retour de la routine traitée. *
* *
* Description : Débute la définition d'une routine. *
@@ -265,7 +293,7 @@ void g_lang_output_end_class(GLangOutput *output, GCodeBuffer *buffer)
* *
******************************************************************************/
-GBufferLine *g_lang_output_start_routine_prototype(GLangOutput *output, GCodeBuffer *buffer, const GDataType *ret)
+GBufferLine *g_lang_output_start_routine_prototype(GLangOutput *output, GCodeBuffer *buffer, const void *ret)
{
GBufferLine *result; /* Adresse nouvelle à remonter */
diff --git a/src/decomp/output.h b/src/decomp/output.h
index 7eac6d8..f9ccd1d 100644
--- a/src/decomp/output.h
+++ b/src/decomp/output.h
@@ -25,7 +25,6 @@
#define _DECOMP_OUTPUT_H
-#include "../analysis/type.h"
#include "../glibext/gcodebuffer.h"
@@ -80,13 +79,16 @@ void g_lang_output_write_comp_sign(GLangOutput *, GBufferLine *, CompSignType);
/* Débute la définition d'une classe. */
-GBufferLine *g_lang_output_start_class(GLangOutput *, GCodeBuffer *, const GDataType *);
+GBufferLine *g_lang_output_start_class(GLangOutput *, GCodeBuffer *, const void *);
/* Termine la définition d'une classe. */
void g_lang_output_end_class(GLangOutput *, GCodeBuffer *);
+/* Débute la documentation d'une routine. */
+GBufferLine *g_lang_output_start_routine_info(const GLangOutput *, GCodeBuffer *);
+
/* Définit le prototype d'une routine. */
-GBufferLine *g_lang_output_start_routine_prototype(GLangOutput *, GCodeBuffer *, const GDataType *);
+GBufferLine *g_lang_output_start_routine_prototype(GLangOutput *, GCodeBuffer *, const void *);
/* Marque la fin du prototype d'une routine. */
void g_lang_output_end_routine_prototype(GLangOutput *, GCodeBuffer *, GBufferLine *);