X-Git-Url: https://git.stderr.nl/gitweb?a=blobdiff_plain;f=libchimara%2Fchimara-if.h;h=f8ec757dfd3948676bd15db0d2e84959698f794d;hb=aa30979369091c96bca34499c28cb01bc16efb1d;hp=f081aaf3e7392687b3e1e5dcc65cad57394a8d9e;hpb=0121bfb334acf7756e068776bf40890c6fe14e13;p=projects%2Fchimara%2Fchimara.git diff --git a/libchimara/chimara-if.h b/libchimara/chimara-if.h index f081aaf..f8ec757 100644 --- a/libchimara/chimara-if.h +++ b/libchimara/chimara-if.h @@ -13,29 +13,102 @@ G_BEGIN_DECLS #define CHIMARA_IS_IF_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE((klass), CHIMARA_TYPE_IF)) #define CHIMARA_IF_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS((obj), CHIMARA_TYPE_IF, ChimaraIFClass)) -typedef enum _ChimaraIFFormat { +/** + * ChimaraIFFormat: + * @CHIMARA_IF_FORMAT_Z5: Z-code version 5 + * @CHIMARA_IF_FORMAT_Z6: Z-code version 6 + * @CHIMARA_IF_FORMAT_Z8: Z-code version 8 + * @CHIMARA_IF_FORMAT_Z_BLORB: Blorbed Z-code + * @CHIMARA_IF_FORMAT_GLULX: Glulx + * @CHIMARA_IF_FORMAT_GLULX_BLORB: Blorbed Glulx + * + * Constants representing all game formats supported by the Chimara system. + */ +typedef enum { + /*< private >*/ + CHIMARA_IF_FORMAT_NONE = -1, + /*< public >*/ CHIMARA_IF_FORMAT_Z5, CHIMARA_IF_FORMAT_Z6, CHIMARA_IF_FORMAT_Z8, CHIMARA_IF_FORMAT_Z_BLORB, CHIMARA_IF_FORMAT_GLULX, CHIMARA_IF_FORMAT_GLULX_BLORB, + /*< private >*/ CHIMARA_IF_NUM_FORMATS } ChimaraIFFormat; -typedef enum _ChimaraIFInterpreter { +/** + * ChimaraIFInterpreter: + * @CHIMARA_IF_INTERPRETER_FROTZ: Frotz + * @CHIMARA_IF_INTERPRETER_NITFOL: Nitfol + * @CHIMARA_IF_INTERPRETER_GLULXE: Glulxe + * @CHIMARA_IF_INTERPRETER_GIT: Git + * @CHIMARA_IF_INTERPRETER_BOCFEL: Bocfel + * + * Constants representing the available interpreter plugins. + */ +typedef enum { + /*< private >*/ + CHIMARA_IF_INTERPRETER_NONE = -1, + /*< public >*/ CHIMARA_IF_INTERPRETER_FROTZ, CHIMARA_IF_INTERPRETER_NITFOL, CHIMARA_IF_INTERPRETER_GLULXE, CHIMARA_IF_INTERPRETER_GIT, + CHIMARA_IF_INTERPRETER_BOCFEL, + /*< private >*/ CHIMARA_IF_NUM_INTERPRETERS } ChimaraIFInterpreter; -typedef struct _ChimaraIF { +/** + * ChimaraIFZmachineVersion: + * @CHIMARA_IF_ZMACHINE_DEFAULT: Use the interpreter's default interpreter + * number. + * @CHIMARA_IF_ZMACHINE_DECSYSTEM_20: DEC System 20 + * @CHIMARA_IF_ZMACHINE_APPLE_IIE: Apple IIe + * @CHIMARA_IF_ZMACHINE_MACINTOSH: Apple Macintosh + * @CHIMARA_IF_ZMACHINE_AMIGA: Commodore Amiga + * @CHIMARA_IF_ZMACHINE_ATARI_ST: Atari ST + * @CHIMARA_IF_ZMACHINE_IBM_PC: IBM PC + * @CHIMARA_IF_ZMACHINE_COMMODORE_128: Commodore 128 + * @CHIMARA_IF_ZMACHINE_COMMODORE_64: Commodore 64 + * @CHIMARA_IF_ZMACHINE_APPLE_IIC: Apple IIc + * @CHIMARA_IF_ZMACHINE_APPLE_IIGS: Apple IIgs + * @CHIMARA_IF_ZMACHINE_TANDY_COLOR: Tandy Color Computer + * + * Allowed values for the #ChimaraIF:interpreter-number property. All trademarks + * are the property of their respective owners. + */ +typedef enum { + CHIMARA_IF_ZMACHINE_DEFAULT = 0, + CHIMARA_IF_ZMACHINE_DECSYSTEM_20, + CHIMARA_IF_ZMACHINE_APPLE_IIE, + CHIMARA_IF_ZMACHINE_MACINTOSH, + CHIMARA_IF_ZMACHINE_AMIGA, + CHIMARA_IF_ZMACHINE_ATARI_ST, + CHIMARA_IF_ZMACHINE_IBM_PC, + CHIMARA_IF_ZMACHINE_COMMODORE_128, + CHIMARA_IF_ZMACHINE_COMMODORE_64, + CHIMARA_IF_ZMACHINE_APPLE_IIC, + CHIMARA_IF_ZMACHINE_APPLE_IIGS, + CHIMARA_IF_ZMACHINE_TANDY_COLOR, + /*< private >*/ + CHIMARA_IF_ZMACHINE_MAXVAL = CHIMARA_IF_ZMACHINE_TANDY_COLOR +} ChimaraIFZmachineVersion; + +/** + * ChimaraIF: + * + * This structure contains no public members. + */ +typedef struct { ChimaraGlk parent_instance; + + /*< public >*/ } ChimaraIF; -typedef struct _ChimaraIFClass { +typedef struct { ChimaraGlkClass parent_class; /* Signals */ void(* command) (ChimaraIF *self, gchar *input, gchar *response); @@ -45,7 +118,10 @@ GType chimara_if_get_type(void) G_GNUC_CONST; GtkWidget *chimara_if_new(void); void chimara_if_set_preferred_interpreter(ChimaraIF *self, ChimaraIFFormat format, ChimaraIFInterpreter interpreter); ChimaraIFInterpreter chimara_if_get_preferred_interpreter(ChimaraIF *self, ChimaraIFFormat format); -gboolean chimara_if_run_game(ChimaraIF *self, gchar *gamefile, GError **error); +gboolean chimara_if_run_game(ChimaraIF *self, const char *game_path, GError **error); +gboolean chimara_if_run_game_file(ChimaraIF *self, GFile *game_file, GError **error); +ChimaraIFFormat chimara_if_get_format(ChimaraIF *self); +ChimaraIFInterpreter chimara_if_get_interpreter(ChimaraIF *self); G_END_DECLS