note description: "Summary description for {TARGET}." author: "" date: "$Date$" revision: "$Revision$" class TARGET inherit ANY undefine default_create end create make_from_pointer, default_create feature {NONE} make_from_pointer (item_a: POINTER) do item := item_a end default_create do item := ctor_external end feature get_name: STRING local name_pointer: POINTER name_c_string: C_STRING do name_pointer := get_name_external (item) create name_c_string.make_shared_from_pointer (name_pointer) Result := name_c_string.string end create_target_machine (triple: STRING; features: STRING): TARGET_MACHINE local triple_c_string: C_STRING features_c_string: C_STRING do create triple_c_string.make (triple) create features_c_string.make (features) create Result.make_from_pointer (create_target_machine_external (item, triple_c_string.item, features_c_string.item)) end create_asm_info (triple: STRING): MC_ASM_INFO local triple_c_string: C_STRING do create triple_c_string.make (triple) create Result.make_from_pointer (create_asm_info_external (item, triple_c_string.item)); end create_code_emitter (tm: TARGET_MACHINE; ctx: MC_CONTEXT): MC_CODE_EMITTER do create Result.make_from_pointer (create_code_emitter_external (item, tm.item, ctx.item)) end -- create_asm_backend (triple: STRING): TARGET_ASM_BACKEND -- local -- triple_c_string: C_STRING -- do -- create triple_c_string.make (triple) -- create Result.make_from_pointer (create_asm_backend_external (item, triple_c_string.item)) -- end -- create_object_streamer (tt: STRING; ctx: MC_CONTEXT; tab: TARGET_ASM_BACKEND; os: RAW_OSTREAM; emitter: MC_CODE_EMITTER; relax_all: BOOLEAN): MC_STREAMER -- local -- triple_c_string: C_STRING -- do -- create triple_c_string.make (tt) -- create Result.make_from_pointer (create_object_streamer_external (item, triple_c_string.item, ctx.item, tab.item, os.item, emitter.item, relax_all)) -- end create_asm_parser (parser: MC_ASM_PARSER): TARGET_ASM_PARSER do create Result.make_from_pointer (create_asm_parser_external (item, parser.item)) end feature {NONE} -- Externals create_asm_parser_external (item_a: POINTER; parser: POINTER): POINTER external "C++ inline use %"llvm/Target/TargetRegistry.h%"" alias "[ return ((llvm::Target *)$item_a)->createAsmParser (*((llvm::MCAsmParser *)$parser)); ]" end -- create_object_streamer_external (item_a: POINTER; tt: POINTER; ctx: POINTER; tab: POINTER; os: POINTER; emitter: POINTER; relax_all: BOOLEAN): POINTER -- external -- "C++ inline use %"llvm/Target/TargetRegistry.h%"" -- alias -- "[ -- std::string tt ((const char *)$tt); -- -- return ((llvm::Target *)$item_a)->createObjectStreamer (tt, *((llvm::MCContext *)$ctx), *((llvm::TargetAsmBackend *)$tab), *((llvm::raw_ostream *)$os), ((llvm::MCCodeEmitter *)$emitter), (bool)$relax_all); -- ]" -- end -- create_asm_backend_external (item_a: POINTER; triple: POINTER): POINTER -- external -- "C++ inline use %"llvm/Target/TargetRegistry.h%"" -- alias -- "[ -- std::string triple ((const char *)$triple); -- -- return ((llvm::Target *)$item_a)->createAsmBackend (triple); -- ]" -- end create_code_emitter_external (item_a: POINTER; tm: POINTER; ctx: POINTER): POINTER external "C++ inline use %"llvm/Target/TargetRegistry.h%"" alias "[ return ((llvm::Target *)$item_a)->createCodeEmitter (*((llvm::TargetMachine *)$tm), *((llvm::MCContext *)$ctx)); ]" end create_asm_info_external (item_a: POINTER; triple: POINTER): POINTER external "C++ inline use %"llvm/Target/TargetRegistry.h%"" alias "[ std::string triple ((const char *)$triple); return (EIF_POINTER)((llvm::Target *)$item_a)->createAsmInfo (triple); ]" end create_target_machine_external (item_a: POINTER; triple: POINTER; features: POINTER): POINTER external "C++ inline use %"llvm/Target/TargetRegistry.h%"" alias "[ std::string triple ((const char *)$triple); std::string features ((const char *)$features); return ((llvm::Target *)$item_a)->createTargetMachine (triple, features); ]" end ctor_external: POINTER external "C++ inline use %"llvm/Target/TargetRegistry.h%"" alias "[ return new llvm::Target; ]" end get_name_external (item_a: POINTER): POINTER external "C++ inline use %"llvm/Target/TargetRegistry.h%"" alias "[ return (EIF_POINTER)((llvm::Target *)$item_a)->getName (); ]" end feature -- Implementation item: POINTER end