diff --git a/ds_generator.anubis b/ds_generator.anubis index f31cc74..f891719 100644 --- a/ds_generator.anubis +++ b/ds_generator.anubis @@ -12,7 +12,7 @@ transmit types/densaku.anubis public type DS_Generator_API: ds_api( - ((List(DS_Type), String) -> Maybe(One)) generate_type_files). + ((List(DS_Type), List(DS_Message), String) -> Maybe(One)) generate_type_files). public define Maybe(DS_Generator_API) load_ds_generator diff --git a/types/ds_message.anubis b/types/ds_message.anubis index 8dbb2aa..56d9dae 100644 --- a/types/ds_message.anubis +++ b/types/ds_message.anubis @@ -7,23 +7,78 @@ */ transmit densaku_lib/types/ds_types.anubis - +read system/string.anubis +read tools/list.anubis +read tools/basis.anubis +read system/lists.anubis public type DS_Field: field( String field_name, + Bool_List list, //'list' if the component is a list, otherwise 'none' DS_Anubis_Type field_type, DS_Comment comment ). public type DS_Message: ds_message( - Word32 what_code, //if what_code is not provided, it's considered as value 0 - String message_name, //if message_name is not provided, it's consired as empty "" + String message_name, + String what_code, //if what_code is not provided, it's considered as value 0 List(DS_Field) fields - ), + ). + + /****************** ********************/ + +public define DS_Field + field + ( + String field_name, + DS_Anubis_Type field_type, + DS_Comment comment + )= + field(field_name, none, field_type, comment) +. + + /****************** ********************/ + +define List(Extern_type) + extract_extern_type + ( + List(DS_Field) field, + List(Extern_type) so_far + )= + if field is + { + [] then so_far, + [h . t] then + since h is field(_, _, _anb_type, _), + + if _anb_type is ds_type(_type_name) then + extract_extern_type( + t, append_once(so_far, extern(_type_name, "types/generated/"+to_lower(_type_name)+".anubis"))) + + else if _anb_type is extern_type(_type_name, read_file) then + extract_extern_type( + t, append_once(so_far, extern(_type_name, read_file))) + else + extract_extern_type(t, so_far) + } +. + +public define List(Extern_type) + get_all_extern_type + ( + DS_Message ds_message + )= + since ds_message is ds_message(_, _, fields_list), + extract_extern_type(fields_list, []) +. + + /*********************************************************************************************/ ds_message( - Word32 what_code, + String name, + String what_code, + //Word32 what_code, String message_name, DS_Anubis_Type from_type ). @@ -38,8 +93,15 @@ public type DS_Message: field(field_name("tables"), field_type(ds_type("HK_Table")), list, comment("List of tables of that application contained in message id _HK_TABLE")) ]). -public define List(DS_Message) the_message_list = + + ds_message("Get_Domain_Name", what(_CXM_DOMAIN_GET_NAME), [ - ds_message((Word32)0, "_HK_APP", ds_type("HK_App")) - ]. + field(field_name("SERIAL"), field_type(string), comment("MF Serial number")), + field(field_name("CXM_Key"), field_type(ds_type("HK_Icon")), comment("Calexium Key provided during the order process")), + ] + + Message msg_set_Get_Domain_Name(String serial, String cxm_key), + (String serial, String cxm_key) msg_getGet_Domain_Name(Message msg) + net_service + _CXM_DOMAIN_GET_NAME, toto(String serial, String cxm_key) -- libgit2 0.21.4