mie: start implementing ir memory->text conversion
This commit is contained in:
80
mie/include/mie/convert.h
Normal file
80
mie/include/mie/convert.h
Normal file
@@ -0,0 +1,80 @@
|
||||
#ifndef MIE_CONVERT_H_
|
||||
#define MIE_CONVERT_H_
|
||||
|
||||
#include <blue/core/stringstream.h>
|
||||
#include <blue/object/bitbuffer.h>
|
||||
#include <blue/object/string.h>
|
||||
#include <mie/misc.h>
|
||||
#include <stdio.h>
|
||||
|
||||
struct mie_value;
|
||||
|
||||
enum mie_ir_format {
|
||||
MIE_IR_NONE = 0,
|
||||
MIE_IR_MEM,
|
||||
MIE_IR_BITCODE,
|
||||
MIE_IR_TEXT,
|
||||
};
|
||||
|
||||
enum mie_ir_converter_medium {
|
||||
MIE_IR_CONVERTER_NONE = 0,
|
||||
MIE_IR_CONVERTER_MIE_VALUE,
|
||||
MIE_IR_CONVERTER_BITSTREAM,
|
||||
MIE_IR_CONVERTER_BITBUFFER,
|
||||
MIE_IR_CONVERTER_STRINGSTREAM,
|
||||
MIE_IR_CONVERTER_STRING,
|
||||
MIE_IR_CONVERTER_FILE,
|
||||
};
|
||||
|
||||
struct mie_ir_converter {
|
||||
enum mie_ir_format c_src_format, c_dest_format;
|
||||
enum mie_ir_converter_medium c_src_medium, c_dest_medium;
|
||||
|
||||
union {
|
||||
/* TODO bitstream */
|
||||
struct mie_value *value;
|
||||
b_bitbuffer *bitbuffer;
|
||||
b_stringstream *stringstream;
|
||||
b_string *string;
|
||||
FILE *file;
|
||||
} c_src;
|
||||
|
||||
union {
|
||||
/* TODO bitstream */
|
||||
struct mie_value **value;
|
||||
b_bitbuffer *bitbuffer;
|
||||
b_stringstream *stringstream;
|
||||
b_string *string;
|
||||
FILE *file;
|
||||
} c_dest;
|
||||
};
|
||||
|
||||
MIE_API struct mie_ir_converter *mie_ir_converter_create(
|
||||
enum mie_ir_format src, enum mie_ir_format dest);
|
||||
MIE_API void mie_ir_converter_destroy(struct mie_ir_converter *converter);
|
||||
|
||||
MIE_API b_status mie_ir_converter_set_src_value(
|
||||
struct mie_ir_converter *converter, struct mie_value *value);
|
||||
MIE_API b_status mie_ir_converter_set_src_bitbuffer(
|
||||
struct mie_ir_converter *converter, b_bitbuffer *bitbuffer);
|
||||
MIE_API b_status mie_ir_converter_set_src_stringstream(
|
||||
struct mie_ir_converter *converter, b_stringstream *stringstream);
|
||||
MIE_API b_status mie_ir_converter_set_src_string(
|
||||
struct mie_ir_converter *converter, b_string *string);
|
||||
MIE_API b_status mie_ir_converter_set_src_file(
|
||||
struct mie_ir_converter *converter, FILE *file);
|
||||
|
||||
MIE_API b_status mie_ir_converter_set_dest_value(
|
||||
struct mie_ir_converter *converter, struct mie_value **value);
|
||||
MIE_API b_status mie_ir_converter_set_dest_bitbuffer(
|
||||
struct mie_ir_converter *converter, b_bitbuffer *bitbuffer);
|
||||
MIE_API b_status mie_ir_converter_set_dest_stringstream(
|
||||
struct mie_ir_converter *converter, b_stringstream *stringstream);
|
||||
MIE_API b_status mie_ir_converter_set_dest_string(
|
||||
struct mie_ir_converter *converter, b_string *string);
|
||||
MIE_API b_status mie_ir_converter_set_dest_file(
|
||||
struct mie_ir_converter *converter, FILE *file);
|
||||
|
||||
MIE_API b_status mie_ir_converter_process(struct mie_ir_converter *converter);
|
||||
|
||||
#endif
|
||||
Reference in New Issue
Block a user