diff options
author | Cyrille Bagard <nocbos@gmail.com> | 2012-10-16 16:03:28 (GMT) |
---|---|---|
committer | Cyrille Bagard <nocbos@gmail.com> | 2012-10-16 16:03:28 (GMT) |
commit | 6f9563a0184e36fab8d0c2c38d151827784e331e (patch) | |
tree | 2d0e13667bc9efcc0f26c17572c9d38dabd89db7 /src/decomp | |
parent | c7a14e50bd002e3922969e9bae7816753aefb073 (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.c | 32 | ||||
-rw-r--r-- | src/decomp/lang/java.c | 1 | ||||
-rw-r--r-- | src/decomp/output-int.h | 7 | ||||
-rw-r--r-- | src/decomp/output.c | 34 | ||||
-rw-r--r-- | src/decomp/output.h | 8 |
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 *); |