From a5bef8528509e705092cd767e0b65bf8da85ccad Mon Sep 17 00:00:00 2001 From: Adam Dickmeiss Date: Wed, 1 Mar 2000 13:46:23 +0000 Subject: [PATCH] Added ill decoders to CVS. --- ill/ill-core.c | 1754 ++++++++++++++++++++++++++++++++++++++++++++++++ ill/item-req.c | 66 ++ include/yaz/ill-core.h | 2 +- include/yaz/item-req.h | 2 +- 4 files changed, 1822 insertions(+), 2 deletions(-) create mode 100644 ill/ill-core.c create mode 100644 ill/item-req.c diff --git a/ill/ill-core.c b/ill/ill-core.c new file mode 100644 index 0000000..215874b --- /dev/null +++ b/ill/ill-core.c @@ -0,0 +1,1754 @@ +/* YC 0.2 Wed Mar 01 14:46:59 CET 2000 */ +/* Module-C: ISO-10161-ILL-1 */ + +#include + +int ill_APDU (ODR o, ILL_APDU **p, int opt, const char *name) +{ + static Odr_arm arm[] = { + {-1, -1, -1, ILL_APDU_ILL_Request, + (Odr_fun) ill_Request, "ILL_Request"}, + {-1, -1, -1, ILL_APDU_Forward_Notification, + (Odr_fun) ill_Forward_Notification, "Forward_Notification"}, + {-1, -1, -1, ILL_APDU_Shipped, + (Odr_fun) ill_Shipped, "Shipped"}, + {-1, -1, -1, ILL_APDU_ILL_Answer, + (Odr_fun) ill_Answer, "ILL_Answer"}, + {-1, -1, -1, ILL_APDU_Conditional_Reply, + (Odr_fun) ill_Conditional_Reply, "Conditional_Reply"}, + {-1, -1, -1, ILL_APDU_Cancel, + (Odr_fun) ill_Cancel, "Cancel"}, + {-1, -1, -1, ILL_APDU_Cancel_Reply, + (Odr_fun) ill_Cancel_Reply, "Cancel_Reply"}, + {-1, -1, -1, ILL_APDU_Received, + (Odr_fun) ill_Received, "Received"}, + {-1, -1, -1, ILL_APDU_Recall, + (Odr_fun) ill_Recall, "Recall"}, + {-1, -1, -1, ILL_APDU_Returned, + (Odr_fun) ill_Returned, "Returned"}, + {-1, -1, -1, ILL_APDU_Checked_In, + (Odr_fun) ill_Checked_In, "Checked_In"}, + {-1, -1, -1, ILL_APDU_Overdue, + (Odr_fun) ill_Overdue, "Overdue"}, + {-1, -1, -1, ILL_APDU_Renew, + (Odr_fun) ill_Renew, "Renew"}, + {-1, -1, -1, ILL_APDU_Renew_Answer, + (Odr_fun) ill_Renew_Answer, "Renew_Answer"}, + {-1, -1, -1, ILL_APDU_Lost, + (Odr_fun) ill_Lost, "Lost"}, + {-1, -1, -1, ILL_APDU_Damaged, + (Odr_fun) ill_Damaged, "Damaged"}, + {-1, -1, -1, ILL_APDU_Message, + (Odr_fun) ill_Message, "Message"}, + {-1, -1, -1, ILL_APDU_Status_Query, + (Odr_fun) ill_Status_Query, "Status_Query"}, + {-1, -1, -1, ILL_APDU_Status_Or_Error_Report, + (Odr_fun) ill_Status_Or_Error_Report, "Status_Or_Error_Report"}, + {-1, -1, -1, ILL_APDU_Expired, + (Odr_fun) ill_Expired, "Expired"}, + {-1, -1, -1, -1, (Odr_fun) 0, 0} + }; + if (!odr_initmember(o, p, sizeof(**p))) + return opt && odr_ok(o); + if (odr_choice(o, arm, &(*p)->u, &(*p)->which, name)) + return 1; + *p = 0; + return opt && odr_ok(o); +} + +int ill_Request (ODR o, ILL_Request **p, int opt, const char *name) +{ + if (!odr_constructed_begin (o, p, ODR_APPLICATION, 1, name)) + return opt && odr_ok(o); + if (o->direction == ODR_DECODE) + *p = odr_malloc (o, sizeof(**p)); + if (!odr_sequence_begin (o, p, sizeof(**p), 0)) + { + *p = 0; + return 0; + } + return + odr_implicit_tag (o, odr_integer, + &(*p)->protocol_version_num, ODR_CONTEXT, 0, 0, "protocol_version_num") && + odr_implicit_tag (o, ill_Transaction_Id, + &(*p)->transaction_id, ODR_CONTEXT, 1, 0, "transaction_id") && + odr_implicit_tag (o, ill_Service_Date_Time, + &(*p)->service_date_time, ODR_CONTEXT, 2, 0, "service_date_time") && + odr_implicit_tag (o, ill_System_Id, + &(*p)->requester_id, ODR_CONTEXT, 3, 1, "requester_id") && + odr_implicit_tag (o, ill_System_Id, + &(*p)->responder_id, ODR_CONTEXT, 4, 1, "responder_id") && + odr_implicit_tag (o, ill_Transaction_Type, + &(*p)->transaction_type, ODR_CONTEXT, 5, 0, "transaction_type") && + odr_implicit_tag (o, ill_Delivery_Address, + &(*p)->delivery_address, ODR_CONTEXT, 6, 1, "delivery_address") && + ill_Delivery_Service(o, &(*p)->delivery_service, 1, "delivery_service") && + odr_implicit_tag (o, ill_Delivery_Address, + &(*p)->billing_address, ODR_CONTEXT, 8, 1, "billing_address") && + odr_implicit_settag (o, ODR_CONTEXT, 9) && + odr_sequence_of(o, (Odr_fun) ill_Service_Type, &(*p)->iLL_service_type, + &(*p)->num_iLL_service_type, "iLL_service_type") && + odr_explicit_tag (o, odr_external, + &(*p)->responder_specific_service, ODR_CONTEXT, 10, 1, "responder_specific_service") && + odr_implicit_tag (o, ill_Requester_Optional_Messages_Type, + &(*p)->requester_optional_messages, ODR_CONTEXT, 11, 0, "requester_optional_messages") && + odr_implicit_tag (o, ill_Search_Type, + &(*p)->search_type, ODR_CONTEXT, 12, 1, "search_type") && + odr_implicit_settag (o, ODR_CONTEXT, 13) && + (odr_sequence_of(o, (Odr_fun) ill_Supply_Medium_Info_Type, &(*p)->supply_medium_info_type, + &(*p)->num_supply_medium_info_type, "supply_medium_info_type") || odr_ok(o)) && + odr_implicit_tag (o, ill_Place_On_Hold_Type, + &(*p)->place_on_hold, ODR_CONTEXT, 14, 0, "place_on_hold") && + odr_implicit_tag (o, ill_Client_Id, + &(*p)->client_id, ODR_CONTEXT, 15, 1, "client_id") && + odr_implicit_tag (o, ill_Item_Id, + &(*p)->item_id, ODR_CONTEXT, 16, 0, "item_id") && + odr_implicit_tag (o, ill_Supplemental_Item_Description, + &(*p)->supplemental_item_description, ODR_CONTEXT, 17, 1, "supplemental_item_description") && + odr_implicit_tag (o, ill_Cost_Info_Type, + &(*p)->cost_info_type, ODR_CONTEXT, 18, 1, "cost_info_type") && + odr_explicit_tag (o, ill_String, + &(*p)->copyright_compliance, ODR_CONTEXT, 19, 1, "copyright_compliance") && + odr_implicit_tag (o, ill_Third_Party_Info_Type, + &(*p)->third_party_info_type, ODR_CONTEXT, 20, 1, "third_party_info_type") && + odr_implicit_tag (o, odr_bool, + &(*p)->retry_flag, ODR_CONTEXT, 21, 0, "retry_flag") && + odr_implicit_tag (o, odr_bool, + &(*p)->forward_flag, ODR_CONTEXT, 22, 0, "forward_flag") && + odr_explicit_tag (o, ill_String, + &(*p)->requester_note, ODR_CONTEXT, 46, 1, "requester_note") && + odr_explicit_tag (o, ill_String, + &(*p)->forward_note, ODR_CONTEXT, 47, 1, "forward_note") && + odr_implicit_settag (o, ODR_CONTEXT, 49) && + (odr_sequence_of(o, (Odr_fun) ill_Extension, &(*p)->iLL_request_extensions, + &(*p)->num_iLL_request_extensions, "iLL_request_extensions") || odr_ok(o)) && + odr_sequence_end (o) && + odr_constructed_end (o); +} + +int ill_Forward_Notification (ODR o, ILL_Forward_Notification **p, int opt, const char *name) +{ + if (!odr_constructed_begin (o, p, ODR_APPLICATION, 2, name)) + return opt && odr_ok(o); + if (o->direction == ODR_DECODE) + *p = odr_malloc (o, sizeof(**p)); + if (!odr_sequence_begin (o, p, sizeof(**p), 0)) + { + *p = 0; + return 0; + } + return + odr_implicit_tag (o, odr_integer, + &(*p)->protocol_version_num, ODR_CONTEXT, 0, 0, "protocol_version_num") && + odr_implicit_tag (o, ill_Transaction_Id, + &(*p)->transaction_id, ODR_CONTEXT, 1, 0, "transaction_id") && + odr_implicit_tag (o, ill_Service_Date_Time, + &(*p)->service_date_time, ODR_CONTEXT, 2, 0, "service_date_time") && + odr_implicit_tag (o, ill_System_Id, + &(*p)->requester_id, ODR_CONTEXT, 3, 1, "requester_id") && + odr_implicit_tag (o, ill_System_Id, + &(*p)->responder_id, ODR_CONTEXT, 4, 0, "responder_id") && + odr_implicit_tag (o, ill_System_Address, + &(*p)->responder_address, ODR_CONTEXT, 24, 1, "responder_address") && + odr_implicit_tag (o, ill_System_Id, + &(*p)->intermediary_id, ODR_CONTEXT, 25, 0, "intermediary_id") && + odr_explicit_tag (o, ill_String, + &(*p)->notification_note, ODR_CONTEXT, 48, 1, "notification_note") && + odr_implicit_settag (o, ODR_CONTEXT, 49) && + (odr_sequence_of(o, (Odr_fun) ill_Extension, &(*p)->forward_notification_extensions, + &(*p)->num_forward_notification_extensions, "forward_notification_extensions") || odr_ok(o)) && + odr_sequence_end (o) && + odr_constructed_end (o); +} + +int ill_Shipped (ODR o, ILL_Shipped **p, int opt, const char *name) +{ + if (!odr_constructed_begin (o, p, ODR_APPLICATION, 3, name)) + return opt && odr_ok(o); + if (o->direction == ODR_DECODE) + *p = odr_malloc (o, sizeof(**p)); + if (!odr_sequence_begin (o, p, sizeof(**p), 0)) + { + *p = 0; + return 0; + } + return + odr_implicit_tag (o, odr_integer, + &(*p)->protocol_version_num, ODR_CONTEXT, 0, 0, "protocol_version_num") && + odr_implicit_tag (o, ill_Transaction_Id, + &(*p)->transaction_id, ODR_CONTEXT, 1, 0, "transaction_id") && + odr_implicit_tag (o, ill_Service_Date_Time, + &(*p)->service_date_time, ODR_CONTEXT, 2, 0, "service_date_time") && + odr_implicit_tag (o, ill_System_Id, + &(*p)->requester_id, ODR_CONTEXT, 3, 1, "requester_id") && + odr_implicit_tag (o, ill_System_Id, + &(*p)->responder_id, ODR_CONTEXT, 4, 1, "responder_id") && + odr_implicit_tag (o, ill_System_Address, + &(*p)->responder_address, ODR_CONTEXT, 24, 1, "responder_address") && + odr_implicit_tag (o, ill_System_Id, + &(*p)->intermediary_id, ODR_CONTEXT, 25, 1, "intermediary_id") && + odr_implicit_tag (o, ill_System_Id, + &(*p)->supplier_id, ODR_CONTEXT, 26, 1, "supplier_id") && + odr_implicit_tag (o, ill_Client_Id, + &(*p)->client_id, ODR_CONTEXT, 15, 1, "client_id") && + odr_implicit_tag (o, ill_Transaction_Type, + &(*p)->transaction_type, ODR_CONTEXT, 5, 0, "transaction_type") && + odr_implicit_tag (o, ill_Supplemental_Item_Description, + &(*p)->supplemental_item_description, ODR_CONTEXT, 17, 1, "supplemental_item_description") && + odr_implicit_tag (o, ill_Shipped_Service_Type, + &(*p)->shipped_service_type, ODR_CONTEXT, 27, 0, "shipped_service_type") && + odr_implicit_tag (o, ill_Responder_Optional_Messages_Type, + &(*p)->responder_optional_messages, ODR_CONTEXT, 28, 1, "responder_optional_messages") && + odr_implicit_tag (o, ill_Supply_Details, + &(*p)->supply_details, ODR_CONTEXT, 29, 0, "supply_details") && + odr_implicit_tag (o, ill_Postal_Address, + &(*p)->return_to_address, ODR_CONTEXT, 30, 1, "return_to_address") && + odr_explicit_tag (o, ill_String, + &(*p)->responder_note, ODR_CONTEXT, 46, 1, "responder_note") && + odr_implicit_settag (o, ODR_CONTEXT, 49) && + (odr_sequence_of(o, (Odr_fun) ill_Extension, &(*p)->shipped_extensions, + &(*p)->num_shipped_extensions, "shipped_extensions") || odr_ok(o)) && + odr_sequence_end (o) && + odr_constructed_end (o); +} + +int ill_Answer (ODR o, ILL_Answer **p, int opt, const char *name) +{ + static Odr_arm arm[] = { + {ODR_EXPLICIT, ODR_CONTEXT, 1, ILL_Answer_conditional_results, + (Odr_fun) ill_Conditional_Results, "conditional_results"}, + {ODR_EXPLICIT, ODR_CONTEXT, 2, ILL_Answer_retry_results, + (Odr_fun) ill_Retry_Results, "retry_results"}, + {ODR_EXPLICIT, ODR_CONTEXT, 3, ILL_Answer_unfilled_results, + (Odr_fun) ill_Unfilled_Results, "unfilled_results"}, + {ODR_EXPLICIT, ODR_CONTEXT, 4, ILL_Answer_locations_results, + (Odr_fun) ill_Locations_Results, "locations_results"}, + {ODR_EXPLICIT, ODR_CONTEXT, 5, ILL_Answer_will_supply_results, + (Odr_fun) ill_Will_Supply_Results, "will_supply_results"}, + {ODR_EXPLICIT, ODR_CONTEXT, 6, ILL_Answer_hold_placed_results, + (Odr_fun) ill_Hold_Placed_Results, "hold_placed_results"}, + {ODR_EXPLICIT, ODR_CONTEXT, 7, ILL_Answer_estimate_results, + (Odr_fun) ill_Estimate_Results, "estimate_results"}, + {-1, -1, -1, -1, (Odr_fun) 0, 0} + }; + if (!odr_constructed_begin (o, p, ODR_APPLICATION, 4, name)) + return opt && odr_ok(o); + if (o->direction == ODR_DECODE) + *p = odr_malloc (o, sizeof(**p)); + if (!odr_sequence_begin (o, p, sizeof(**p), 0)) + { + *p = 0; + return 0; + } + return + odr_implicit_tag (o, odr_integer, + &(*p)->protocol_version_num, ODR_CONTEXT, 0, 0, "protocol_version_num") && + odr_implicit_tag (o, ill_Transaction_Id, + &(*p)->transaction_id, ODR_CONTEXT, 1, 0, "transaction_id") && + odr_implicit_tag (o, ill_Service_Date_Time, + &(*p)->service_date_time, ODR_CONTEXT, 2, 0, "service_date_time") && + odr_implicit_tag (o, ill_System_Id, + &(*p)->requester_id, ODR_CONTEXT, 3, 1, "requester_id") && + odr_implicit_tag (o, ill_System_Id, + &(*p)->responder_id, ODR_CONTEXT, 4, 1, "responder_id") && + odr_implicit_tag (o, ill_Transaction_Results, + &(*p)->transaction_results, ODR_CONTEXT, 31, 0, "transaction_results") && + ((odr_constructed_begin (o, &(*p)->u, ODR_CONTEXT, 32, "results_explanation") && + odr_choice (o, arm, &(*p)->u, &(*p)->which, 0) && + odr_constructed_end (o)) || odr_ok(o)) && + odr_explicit_tag (o, odr_external, + &(*p)->responder_specific_results, ODR_CONTEXT, 33, 1, "responder_specific_results") && + odr_implicit_tag (o, ill_Supplemental_Item_Description, + &(*p)->supplemental_item_description, ODR_CONTEXT, 17, 1, "supplemental_item_description") && + odr_implicit_tag (o, ill_Send_To_List_Type, + &(*p)->send_to_list, ODR_CONTEXT, 23, 1, "send_to_list") && + odr_implicit_tag (o, ill_Already_Tried_List_Type, + &(*p)->already_tried_list, ODR_CONTEXT, 34, 1, "already_tried_list") && + odr_implicit_tag (o, ill_Responder_Optional_Messages_Type, + &(*p)->responder_optional_messages, ODR_CONTEXT, 28, 1, "responder_optional_messages") && + odr_explicit_tag (o, ill_String, + &(*p)->responder_note, ODR_CONTEXT, 46, 1, "responder_note") && + odr_implicit_settag (o, ODR_CONTEXT, 49) && + (odr_sequence_of(o, (Odr_fun) ill_Extension, &(*p)->ill_answer_extensions, + &(*p)->num_ill_answer_extensions, "ill_answer_extensions") || odr_ok(o)) && + odr_sequence_end (o) && + odr_constructed_end (o); +} + +int ill_Conditional_Reply (ODR o, ILL_Conditional_Reply **p, int opt, const char *name) +{ + if (!odr_constructed_begin (o, p, ODR_APPLICATION, 5, name)) + return opt && odr_ok(o); + if (o->direction == ODR_DECODE) + *p = odr_malloc (o, sizeof(**p)); + if (!odr_sequence_begin (o, p, sizeof(**p), 0)) + { + *p = 0; + return 0; + } + return + odr_implicit_tag (o, odr_integer, + &(*p)->protocol_version_num, ODR_CONTEXT, 0, 0, "protocol_version_num") && + odr_implicit_tag (o, ill_Transaction_Id, + &(*p)->transaction_id, ODR_CONTEXT, 1, 0, "transaction_id") && + odr_implicit_tag (o, ill_Service_Date_Time, + &(*p)->service_date_time, ODR_CONTEXT, 2, 0, "service_date_time") && + odr_implicit_tag (o, ill_System_Id, + &(*p)->requester_id, ODR_CONTEXT, 3, 1, "requester_id") && + odr_implicit_tag (o, ill_System_Id, + &(*p)->responder_id, ODR_CONTEXT, 4, 1, "responder_id") && + odr_implicit_tag (o, odr_bool, + &(*p)->answer, ODR_CONTEXT, 35, 0, "answer") && + odr_explicit_tag (o, ill_String, + &(*p)->requester_note, ODR_CONTEXT, 46, 1, "requester_note") && + odr_implicit_settag (o, ODR_CONTEXT, 49) && + (odr_sequence_of(o, (Odr_fun) ill_Extension, &(*p)->conditional_reply_extensions, + &(*p)->num_conditional_reply_extensions, "conditional_reply_extensions") || odr_ok(o)) && + odr_sequence_end (o) && + odr_constructed_end (o); +} + +int ill_Cancel (ODR o, ILL_Cancel **p, int opt, const char *name) +{ + if (!odr_constructed_begin (o, p, ODR_APPLICATION, 6, name)) + return opt && odr_ok(o); + if (o->direction == ODR_DECODE) + *p = odr_malloc (o, sizeof(**p)); + if (!odr_sequence_begin (o, p, sizeof(**p), 0)) + { + *p = 0; + return 0; + } + return + odr_implicit_tag (o, odr_integer, + &(*p)->protocol_version_num, ODR_CONTEXT, 0, 0, "protocol_version_num") && + odr_implicit_tag (o, ill_Transaction_Id, + &(*p)->transaction_id, ODR_CONTEXT, 1, 0, "transaction_id") && + odr_implicit_tag (o, ill_Service_Date_Time, + &(*p)->service_date_time, ODR_CONTEXT, 2, 0, "service_date_time") && + odr_implicit_tag (o, ill_System_Id, + &(*p)->requester_id, ODR_CONTEXT, 3, 1, "requester_id") && + odr_implicit_tag (o, ill_System_Id, + &(*p)->responder_id, ODR_CONTEXT, 4, 1, "responder_id") && + odr_explicit_tag (o, ill_String, + &(*p)->requester_note, ODR_CONTEXT, 46, 1, "requester_note") && + odr_implicit_settag (o, ODR_CONTEXT, 49) && + (odr_sequence_of(o, (Odr_fun) ill_Extension, &(*p)->cancel_extensions, + &(*p)->num_cancel_extensions, "cancel_extensions") || odr_ok(o)) && + odr_sequence_end (o) && + odr_constructed_end (o); +} + +int ill_Cancel_Reply (ODR o, ILL_Cancel_Reply **p, int opt, const char *name) +{ + if (!odr_constructed_begin (o, p, ODR_APPLICATION, 7, name)) + return opt && odr_ok(o); + if (o->direction == ODR_DECODE) + *p = odr_malloc (o, sizeof(**p)); + if (!odr_sequence_begin (o, p, sizeof(**p), 0)) + { + *p = 0; + return 0; + } + return + odr_implicit_tag (o, odr_integer, + &(*p)->protocol_version_num, ODR_CONTEXT, 0, 0, "protocol_version_num") && + odr_implicit_tag (o, ill_Transaction_Id, + &(*p)->transaction_id, ODR_CONTEXT, 1, 0, "transaction_id") && + odr_implicit_tag (o, ill_Service_Date_Time, + &(*p)->service_date_time, ODR_CONTEXT, 2, 0, "service_date_time") && + odr_implicit_tag (o, ill_System_Id, + &(*p)->requester_id, ODR_CONTEXT, 3, 1, "requester_id") && + odr_implicit_tag (o, ill_System_Id, + &(*p)->responder_id, ODR_CONTEXT, 4, 1, "responder_id") && + odr_implicit_tag (o, odr_bool, + &(*p)->answer, ODR_CONTEXT, 35, 0, "answer") && + odr_explicit_tag (o, ill_String, + &(*p)->responder_note, ODR_CONTEXT, 46, 1, "responder_note") && + odr_implicit_settag (o, ODR_CONTEXT, 49) && + (odr_sequence_of(o, (Odr_fun) ill_Extension, &(*p)->cancel_reply_extensions, + &(*p)->num_cancel_reply_extensions, "cancel_reply_extensions") || odr_ok(o)) && + odr_sequence_end (o) && + odr_constructed_end (o); +} + +int ill_Received (ODR o, ILL_Received **p, int opt, const char *name) +{ + if (!odr_constructed_begin (o, p, ODR_APPLICATION, 8, name)) + return opt && odr_ok(o); + if (o->direction == ODR_DECODE) + *p = odr_malloc (o, sizeof(**p)); + if (!odr_sequence_begin (o, p, sizeof(**p), 0)) + { + *p = 0; + return 0; + } + return + odr_implicit_tag (o, odr_integer, + &(*p)->protocol_version_num, ODR_CONTEXT, 0, 0, "protocol_version_num") && + odr_implicit_tag (o, ill_Transaction_Id, + &(*p)->transaction_id, ODR_CONTEXT, 1, 0, "transaction_id") && + odr_implicit_tag (o, ill_Service_Date_Time, + &(*p)->service_date_time, ODR_CONTEXT, 2, 0, "service_date_time") && + odr_implicit_tag (o, ill_System_Id, + &(*p)->requester_id, ODR_CONTEXT, 3, 1, "requester_id") && + odr_implicit_tag (o, ill_System_Id, + &(*p)->responder_id, ODR_CONTEXT, 4, 1, "responder_id") && + odr_implicit_tag (o, ill_System_Id, + &(*p)->supplier_id, ODR_CONTEXT, 26, 1, "supplier_id") && + odr_implicit_tag (o, ill_Supplemental_Item_Description, + &(*p)->supplemental_item_description, ODR_CONTEXT, 17, 1, "supplemental_item_description") && + odr_implicit_tag (o, ill_ISO_Date, + &(*p)->date_received, ODR_CONTEXT, 36, 0, "date_received") && + odr_implicit_tag (o, ill_Shipped_Service_Type, + &(*p)->shipped_service_type, ODR_CONTEXT, 27, 0, "shipped_service_type") && + odr_explicit_tag (o, ill_String, + &(*p)->requester_note, ODR_CONTEXT, 46, 1, "requester_note") && + odr_implicit_settag (o, ODR_CONTEXT, 49) && + (odr_sequence_of(o, (Odr_fun) ill_Extension, &(*p)->received_extensions, + &(*p)->num_received_extensions, "received_extensions") || odr_ok(o)) && + odr_sequence_end (o) && + odr_constructed_end (o); +} + +int ill_Recall (ODR o, ILL_Recall **p, int opt, const char *name) +{ + if (!odr_constructed_begin (o, p, ODR_APPLICATION, 9, name)) + return opt && odr_ok(o); + if (o->direction == ODR_DECODE) + *p = odr_malloc (o, sizeof(**p)); + if (!odr_sequence_begin (o, p, sizeof(**p), 0)) + { + *p = 0; + return 0; + } + return + odr_implicit_tag (o, odr_integer, + &(*p)->protocol_version_num, ODR_CONTEXT, 0, 0, "protocol_version_num") && + odr_implicit_tag (o, ill_Transaction_Id, + &(*p)->transaction_id, ODR_CONTEXT, 1, 0, "transaction_id") && + odr_implicit_tag (o, ill_Service_Date_Time, + &(*p)->service_date_time, ODR_CONTEXT, 2, 0, "service_date_time") && + odr_implicit_tag (o, ill_System_Id, + &(*p)->requester_id, ODR_CONTEXT, 3, 1, "requester_id") && + odr_implicit_tag (o, ill_System_Id, + &(*p)->responder_id, ODR_CONTEXT, 4, 1, "responder_id") && + odr_explicit_tag (o, ill_String, + &(*p)->responder_note, ODR_CONTEXT, 46, 1, "responder_note") && + odr_implicit_settag (o, ODR_CONTEXT, 49) && + (odr_sequence_of(o, (Odr_fun) ill_Extension, &(*p)->recall_extensions, + &(*p)->num_recall_extensions, "recall_extensions") || odr_ok(o)) && + odr_sequence_end (o) && + odr_constructed_end (o); +} + +int ill_Returned (ODR o, ILL_Returned **p, int opt, const char *name) +{ + if (!odr_constructed_begin (o, p, ODR_APPLICATION, 10, name)) + return opt && odr_ok(o); + if (o->direction == ODR_DECODE) + *p = odr_malloc (o, sizeof(**p)); + if (!odr_sequence_begin (o, p, sizeof(**p), 0)) + { + *p = 0; + return 0; + } + return + odr_implicit_tag (o, odr_integer, + &(*p)->protocol_version_num, ODR_CONTEXT, 0, 0, "protocol_version_num") && + odr_implicit_tag (o, ill_Transaction_Id, + &(*p)->transaction_id, ODR_CONTEXT, 1, 0, "transaction_id") && + odr_implicit_tag (o, ill_Service_Date_Time, + &(*p)->service_date_time, ODR_CONTEXT, 2, 0, "service_date_time") && + odr_implicit_tag (o, ill_System_Id, + &(*p)->requester_id, ODR_CONTEXT, 3, 1, "requester_id") && + odr_implicit_tag (o, ill_System_Id, + &(*p)->responder_id, ODR_CONTEXT, 4, 1, "responder_id") && + odr_implicit_tag (o, ill_Supplemental_Item_Description, + &(*p)->supplemental_item_description, ODR_CONTEXT, 17, 1, "supplemental_item_description") && + odr_implicit_tag (o, ill_ISO_Date, + &(*p)->date_returned, ODR_CONTEXT, 37, 0, "date_returned") && + odr_explicit_tag (o, ill_Transportation_Mode, + &(*p)->returned_via, ODR_CONTEXT, 38, 1, "returned_via") && + odr_implicit_tag (o, ill_Amount, + &(*p)->insured_for, ODR_CONTEXT, 39, 1, "insured_for") && + odr_explicit_tag (o, ill_String, + &(*p)->requester_note, ODR_CONTEXT, 46, 1, "requester_note") && + odr_implicit_settag (o, ODR_CONTEXT, 49) && + (odr_sequence_of(o, (Odr_fun) ill_Extension, &(*p)->returned_extensions, + &(*p)->num_returned_extensions, "returned_extensions") || odr_ok(o)) && + odr_sequence_end (o) && + odr_constructed_end (o); +} + +int ill_Checked_In (ODR o, ILL_Checked_In **p, int opt, const char *name) +{ + if (!odr_constructed_begin (o, p, ODR_APPLICATION, 11, name)) + return opt && odr_ok(o); + if (o->direction == ODR_DECODE) + *p = odr_malloc (o, sizeof(**p)); + if (!odr_sequence_begin (o, p, sizeof(**p), 0)) + { + *p = 0; + return 0; + } + return + odr_implicit_tag (o, odr_integer, + &(*p)->protocol_version_num, ODR_CONTEXT, 0, 0, "protocol_version_num") && + odr_implicit_tag (o, ill_Transaction_Id, + &(*p)->transaction_id, ODR_CONTEXT, 1, 0, "transaction_id") && + odr_implicit_tag (o, ill_Service_Date_Time, + &(*p)->service_date_time, ODR_CONTEXT, 2, 0, "service_date_time") && + odr_implicit_tag (o, ill_System_Id, + &(*p)->requester_id, ODR_CONTEXT, 3, 1, "requester_id") && + odr_implicit_tag (o, ill_System_Id, + &(*p)->responder_id, ODR_CONTEXT, 4, 1, "responder_id") && + odr_implicit_tag (o, ill_ISO_Date, + &(*p)->date_checked_in, ODR_CONTEXT, 40, 0, "date_checked_in") && + odr_explicit_tag (o, ill_String, + &(*p)->responder_note, ODR_CONTEXT, 46, 1, "responder_note") && + odr_implicit_settag (o, ODR_CONTEXT, 49) && + (odr_sequence_of(o, (Odr_fun) ill_Extension, &(*p)->checked_in_extensions, + &(*p)->num_checked_in_extensions, "checked_in_extensions") || odr_ok(o)) && + odr_sequence_end (o) && + odr_constructed_end (o); +} + +int ill_Overdue_Extension (ODR o, ILL_Overdue_Extension **p, int opt, const char *name) +{ + if (!odr_initmember (o, p, sizeof(**p))) + return opt && odr_ok(o); + if (odr_sequence_of (o, (Odr_fun) ill_Extension, &(*p)->elements, + &(*p)->num, name)) + return 1; + *p = 0; + return opt && odr_ok(o); +} + +int ill_Overdue (ODR o, ILL_Overdue **p, int opt, const char *name) +{ + if (!odr_constructed_begin (o, p, ODR_APPLICATION, 12, name)) + return opt && odr_ok(o); + if (o->direction == ODR_DECODE) + *p = odr_malloc (o, sizeof(**p)); + if (!odr_sequence_begin (o, p, sizeof(**p), 0)) + { + *p = 0; + return 0; + } + return + odr_implicit_tag (o, odr_integer, + &(*p)->protocol_version_num, ODR_CONTEXT, 0, 0, "protocol_version_num") && + odr_implicit_tag (o, ill_Transaction_Id, + &(*p)->transaction_id, ODR_CONTEXT, 1, 0, "transaction_id") && + odr_implicit_tag (o, ill_Service_Date_Time, + &(*p)->service_date_time, ODR_CONTEXT, 2, 0, "service_date_time") && + odr_implicit_tag (o, ill_System_Id, + &(*p)->requester_id, ODR_CONTEXT, 3, 1, "requester_id") && + odr_implicit_tag (o, ill_System_Id, + &(*p)->responder_id, ODR_CONTEXT, 4, 1, "responder_id") && + odr_implicit_tag (o, ill_Date_Due, + &(*p)->date_due, ODR_CONTEXT, 41, 0, "date_due") && + odr_explicit_tag (o, ill_String, + &(*p)->responder_note, ODR_CONTEXT, 46, 1, "responder_note") && + odr_explicit_tag (o, ill_Overdue_Extension, + &(*p)->overdue_extensions, ODR_CONTEXT, 49, 1, "overdue_extensions") && + odr_sequence_end (o) && + odr_constructed_end (o); +} + +int ill_Renew (ODR o, ILL_Renew **p, int opt, const char *name) +{ + if (!odr_constructed_begin (o, p, ODR_APPLICATION, 13, name)) + return opt && odr_ok(o); + if (o->direction == ODR_DECODE) + *p = odr_malloc (o, sizeof(**p)); + if (!odr_sequence_begin (o, p, sizeof(**p), 0)) + { + *p = 0; + return 0; + } + return + odr_implicit_tag (o, odr_integer, + &(*p)->protocol_version_num, ODR_CONTEXT, 0, 0, "protocol_version_num") && + odr_implicit_tag (o, ill_Transaction_Id, + &(*p)->transaction_id, ODR_CONTEXT, 1, 0, "transaction_id") && + odr_implicit_tag (o, ill_Service_Date_Time, + &(*p)->service_date_time, ODR_CONTEXT, 2, 0, "service_date_time") && + odr_implicit_tag (o, ill_System_Id, + &(*p)->requester_id, ODR_CONTEXT, 3, 1, "requester_id") && + odr_implicit_tag (o, ill_System_Id, + &(*p)->responder_id, ODR_CONTEXT, 4, 1, "responder_id") && + odr_implicit_tag (o, ill_ISO_Date, + &(*p)->desired_due_date, ODR_CONTEXT, 42, 1, "desired_due_date") && + odr_explicit_tag (o, ill_String, + &(*p)->requester_note, ODR_CONTEXT, 46, 1, "requester_note") && + odr_implicit_settag (o, ODR_CONTEXT, 49) && + (odr_sequence_of(o, (Odr_fun) ill_Extension, &(*p)->renew_extensions, + &(*p)->num_renew_extensions, "renew_extensions") || odr_ok(o)) && + odr_sequence_end (o) && + odr_constructed_end (o); +} + +int ill_Renew_Answer (ODR o, ILL_Renew_Answer **p, int opt, const char *name) +{ + if (!odr_constructed_begin (o, p, ODR_APPLICATION, 14, name)) + return opt && odr_ok(o); + if (o->direction == ODR_DECODE) + *p = odr_malloc (o, sizeof(**p)); + if (!odr_sequence_begin (o, p, sizeof(**p), 0)) + { + *p = 0; + return 0; + } + return + odr_implicit_tag (o, odr_integer, + &(*p)->protocol_version_num, ODR_CONTEXT, 0, 0, "protocol_version_num") && + odr_implicit_tag (o, ill_Transaction_Id, + &(*p)->transaction_id, ODR_CONTEXT, 1, 0, "transaction_id") && + odr_implicit_tag (o, ill_Service_Date_Time, + &(*p)->service_date_time, ODR_CONTEXT, 2, 0, "service_date_time") && + odr_implicit_tag (o, ill_System_Id, + &(*p)->requester_id, ODR_CONTEXT, 3, 1, "requester_id") && + odr_implicit_tag (o, ill_System_Id, + &(*p)->responder_id, ODR_CONTEXT, 4, 1, "responder_id") && + odr_implicit_tag (o, odr_bool, + &(*p)->answer, ODR_CONTEXT, 35, 0, "answer") && + odr_implicit_tag (o, ill_Date_Due, + &(*p)->date_due, ODR_CONTEXT, 41, 1, "date_due") && + odr_explicit_tag (o, ill_String, + &(*p)->responder_note, ODR_CONTEXT, 46, 1, "responder_note") && + odr_implicit_settag (o, ODR_CONTEXT, 49) && + (odr_sequence_of(o, (Odr_fun) ill_Extension, &(*p)->renew_answer_extensions, + &(*p)->num_renew_answer_extensions, "renew_answer_extensions") || odr_ok(o)) && + odr_sequence_end (o) && + odr_constructed_end (o); +} + +int ill_Lost (ODR o, ILL_Lost **p, int opt, const char *name) +{ + if (!odr_constructed_begin (o, p, ODR_APPLICATION, 15, name)) + return opt && odr_ok(o); + if (o->direction == ODR_DECODE) + *p = odr_malloc (o, sizeof(**p)); + if (!odr_sequence_begin (o, p, sizeof(**p), 0)) + { + *p = 0; + return 0; + } + return + odr_implicit_tag (o, odr_integer, + &(*p)->protocol_version_num, ODR_CONTEXT, 0, 0, "protocol_version_num") && + odr_implicit_tag (o, ill_Transaction_Id, + &(*p)->transaction_id, ODR_CONTEXT, 1, 0, "transaction_id") && + odr_implicit_tag (o, ill_Service_Date_Time, + &(*p)->service_date_time, ODR_CONTEXT, 2, 0, "service_date_time") && + odr_implicit_tag (o, ill_System_Id, + &(*p)->requester_id, ODR_CONTEXT, 3, 1, "requester_id") && + odr_implicit_tag (o, ill_System_Id, + &(*p)->responder_id, ODR_CONTEXT, 4, 1, "responder_id") && + odr_explicit_tag (o, ill_String, + &(*p)->note, ODR_CONTEXT, 46, 1, "note") && + odr_implicit_settag (o, ODR_CONTEXT, 49) && + (odr_sequence_of(o, (Odr_fun) ill_Extension, &(*p)->lost_extensions, + &(*p)->num_lost_extensions, "lost_extensions") || odr_ok(o)) && + odr_sequence_end (o) && + odr_constructed_end (o); +} + +int ill_Damaged (ODR o, ILL_Damaged **p, int opt, const char *name) +{ + if (!odr_constructed_begin (o, p, ODR_APPLICATION, 16, name)) + return opt && odr_ok(o); + if (o->direction == ODR_DECODE) + *p = odr_malloc (o, sizeof(**p)); + if (!odr_sequence_begin (o, p, sizeof(**p), 0)) + { + *p = 0; + return 0; + } + return + odr_implicit_tag (o, odr_integer, + &(*p)->protocol_version_num, ODR_CONTEXT, 0, 0, "protocol_version_num") && + odr_implicit_tag (o, ill_Transaction_Id, + &(*p)->transaction_id, ODR_CONTEXT, 1, 0, "transaction_id") && + odr_implicit_tag (o, ill_Service_Date_Time, + &(*p)->service_date_time, ODR_CONTEXT, 2, 0, "service_date_time") && + odr_implicit_tag (o, ill_System_Id, + &(*p)->requester_id, ODR_CONTEXT, 3, 1, "requester_id") && + odr_implicit_tag (o, ill_System_Id, + &(*p)->responder_id, ODR_CONTEXT, 4, 1, "responder_id") && + odr_implicit_tag (o, ill_Damaged_Details, + &(*p)->damaged_details, ODR_CONTEXT, 5, 1, "damaged_details") && + odr_explicit_tag (o, ill_String, + &(*p)->note, ODR_CONTEXT, 46, 1, "note") && + odr_implicit_settag (o, ODR_CONTEXT, 49) && + (odr_sequence_of(o, (Odr_fun) ill_Extension, &(*p)->damaged_extensions, + &(*p)->num_damaged_extensions, "damaged_extensions") || odr_ok(o)) && + odr_sequence_end (o) && + odr_constructed_end (o); +} + +int ill_Message (ODR o, ILL_Message **p, int opt, const char *name) +{ + if (!odr_constructed_begin (o, p, ODR_APPLICATION, 17, name)) + return opt && odr_ok(o); + if (o->direction == ODR_DECODE) + *p = odr_malloc (o, sizeof(**p)); + if (!odr_sequence_begin (o, p, sizeof(**p), 0)) + { + *p = 0; + return 0; + } + return + odr_implicit_tag (o, odr_integer, + &(*p)->protocol_version_num, ODR_CONTEXT, 0, 0, "protocol_version_num") && + odr_implicit_tag (o, ill_Transaction_Id, + &(*p)->transaction_id, ODR_CONTEXT, 1, 0, "transaction_id") && + odr_implicit_tag (o, ill_Service_Date_Time, + &(*p)->service_date_time, ODR_CONTEXT, 2, 0, "service_date_time") && + odr_implicit_tag (o, ill_System_Id, + &(*p)->requester_id, ODR_CONTEXT, 3, 1, "requester_id") && + odr_implicit_tag (o, ill_System_Id, + &(*p)->responder_id, ODR_CONTEXT, 4, 1, "responder_id") && + odr_explicit_tag (o, ill_String, + &(*p)->note, ODR_CONTEXT, 46, 0, "note") && + odr_implicit_settag (o, ODR_CONTEXT, 49) && + (odr_sequence_of(o, (Odr_fun) ill_Extension, &(*p)->message_extensions, + &(*p)->num_message_extensions, "message_extensions") || odr_ok(o)) && + odr_sequence_end (o) && + odr_constructed_end (o); +} + +int ill_Status_Query (ODR o, ILL_Status_Query **p, int opt, const char *name) +{ + if (!odr_constructed_begin (o, p, ODR_APPLICATION, 18, name)) + return opt && odr_ok(o); + if (o->direction == ODR_DECODE) + *p = odr_malloc (o, sizeof(**p)); + if (!odr_sequence_begin (o, p, sizeof(**p), 0)) + { + *p = 0; + return 0; + } + return + odr_implicit_tag (o, odr_integer, + &(*p)->protocol_version_num, ODR_CONTEXT, 0, 0, "protocol_version_num") && + odr_implicit_tag (o, ill_Transaction_Id, + &(*p)->transaction_id, ODR_CONTEXT, 1, 0, "transaction_id") && + odr_implicit_tag (o, ill_Service_Date_Time, + &(*p)->service_date_time, ODR_CONTEXT, 2, 0, "service_date_time") && + odr_implicit_tag (o, ill_System_Id, + &(*p)->requester_id, ODR_CONTEXT, 3, 1, "requester_id") && + odr_implicit_tag (o, ill_System_Id, + &(*p)->responder_id, ODR_CONTEXT, 4, 1, "responder_id") && + odr_explicit_tag (o, ill_String, + &(*p)->note, ODR_CONTEXT, 46, 1, "note") && + odr_implicit_settag (o, ODR_CONTEXT, 49) && + (odr_sequence_of(o, (Odr_fun) ill_Extension, &(*p)->status_query_extensions, + &(*p)->num_status_query_extensions, "status_query_extensions") || odr_ok(o)) && + odr_sequence_end (o) && + odr_constructed_end (o); +} + +int ill_Status_Or_Error_Report (ODR o, ILL_Status_Or_Error_Report **p, int opt, const char *name) +{ + if (!odr_constructed_begin (o, p, ODR_APPLICATION, 19, name)) + return opt && odr_ok(o); + if (o->direction == ODR_DECODE) + *p = odr_malloc (o, sizeof(**p)); + if (!odr_sequence_begin (o, p, sizeof(**p), 0)) + { + *p = 0; + return 0; + } + return + odr_implicit_tag (o, odr_integer, + &(*p)->protocol_version_num, ODR_CONTEXT, 0, 0, "protocol_version_num") && + odr_implicit_tag (o, ill_Transaction_Id, + &(*p)->transaction_id, ODR_CONTEXT, 1, 0, "transaction_id") && + odr_implicit_tag (o, ill_Service_Date_Time, + &(*p)->service_date_time, ODR_CONTEXT, 2, 0, "service_date_time") && + odr_implicit_tag (o, ill_System_Id, + &(*p)->requester_id, ODR_CONTEXT, 3, 1, "requester_id") && + odr_implicit_tag (o, ill_System_Id, + &(*p)->responder_id, ODR_CONTEXT, 4, 1, "responder_id") && + odr_implicit_tag (o, ill_Reason_No_Report, + &(*p)->reason_no_report, ODR_CONTEXT, 43, 1, "reason_no_report") && + odr_implicit_tag (o, ill_Status_Report, + &(*p)->status_report, ODR_CONTEXT, 44, 1, "status_report") && + odr_implicit_tag (o, ill_Error_Report, + &(*p)->error_report, ODR_CONTEXT, 45, 1, "error_report") && + odr_explicit_tag (o, ill_String, + &(*p)->note, ODR_CONTEXT, 46, 1, "note") && + odr_implicit_settag (o, ODR_CONTEXT, 49) && + (odr_sequence_of(o, (Odr_fun) ill_Extension, &(*p)->status_or_error_report_extensions, + &(*p)->num_status_or_error_report_extensions, "status_or_error_report_extensions") || odr_ok(o)) && + odr_sequence_end (o) && + odr_constructed_end (o); +} + +int ill_Expired (ODR o, ILL_Expired **p, int opt, const char *name) +{ + if (!odr_constructed_begin (o, p, ODR_APPLICATION, 20, name)) + return opt && odr_ok(o); + if (o->direction == ODR_DECODE) + *p = odr_malloc (o, sizeof(**p)); + if (!odr_sequence_begin (o, p, sizeof(**p), 0)) + { + *p = 0; + return 0; + } + return + odr_implicit_tag (o, odr_integer, + &(*p)->protocol_version_num, ODR_CONTEXT, 0, 0, "protocol_version_num") && + odr_implicit_tag (o, ill_Transaction_Id, + &(*p)->transaction_id, ODR_CONTEXT, 1, 0, "transaction_id") && + odr_implicit_tag (o, ill_Service_Date_Time, + &(*p)->service_date_time, ODR_CONTEXT, 2, 0, "service_date_time") && + odr_implicit_tag (o, ill_System_Id, + &(*p)->requester_id, ODR_CONTEXT, 3, 1, "requester_id") && + odr_implicit_tag (o, ill_System_Id, + &(*p)->responder_id, ODR_CONTEXT, 4, 1, "responder_id") && + odr_implicit_settag (o, ODR_CONTEXT, 49) && + (odr_sequence_of(o, (Odr_fun) ill_Extension, &(*p)->expired_extensions, + &(*p)->num_expired_extensions, "expired_extensions") || odr_ok(o)) && + odr_sequence_end (o) && + odr_constructed_end (o); +} + +int ill_Account_Number (ODR o, ILL_Account_Number **p, int opt, const char *name) +{ + return ill_String (o, p, opt, name); +} + +int ill_Already_Forwarded (ODR o, ILL_Already_Forwarded **p, int opt, const char *name) +{ + if (!odr_sequence_begin (o, p, sizeof(**p), name)) + return opt && odr_ok (o); + return + odr_implicit_tag (o, ill_System_Id, + &(*p)->responder_id, ODR_CONTEXT, 0, 0, "responder_id") && + odr_implicit_tag (o, ill_System_Address, + &(*p)->responder_address, ODR_CONTEXT, 1, 1, "responder_address") && + odr_sequence_end (o); +} + +int ill_Already_Tried_List_Type (ODR o, ILL_Already_Tried_List_Type **p, int opt, const char *name) +{ + if (!odr_initmember (o, p, sizeof(**p))) + return opt && odr_ok(o); + if (odr_sequence_of (o, (Odr_fun) ill_System_Id, &(*p)->elements, + &(*p)->num, name)) + return 1; + *p = 0; + return opt && odr_ok(o); +} + +int ill_Amount (ODR o, ILL_Amount **p, int opt, const char *name) +{ + if (!odr_sequence_begin (o, p, sizeof(**p), name)) + return opt && odr_ok (o); + return + odr_implicit_tag (o, odr_visiblestring, + &(*p)->currency_code, ODR_CONTEXT, 0, 1, "currency_code") && + odr_implicit_tag (o, ill_AmountString, + &(*p)->monetary_value, ODR_CONTEXT, 1, 0, "monetary_value") && + odr_sequence_end (o); +} + +int ill_AmountString (ODR o, ILL_AmountString **p, int opt, const char *name) +{ + return odr_visiblestring (o, p, opt, name); +} + +int ill_Client_Id (ODR o, ILL_Client_Id **p, int opt, const char *name) +{ + if (!odr_sequence_begin (o, p, sizeof(**p), name)) + return opt && odr_ok (o); + return + odr_explicit_tag (o, ill_String, + &(*p)->client_name, ODR_CONTEXT, 0, 1, "client_name") && + odr_explicit_tag (o, ill_String, + &(*p)->client_status, ODR_CONTEXT, 1, 1, "client_status") && + odr_explicit_tag (o, ill_String, + &(*p)->client_identifier, ODR_CONTEXT, 2, 1, "client_identifier") && + odr_sequence_end (o); +} + +int ill_Conditional_Results (ODR o, ILL_Conditional_Results **p, int opt, const char *name) +{ + if (!odr_sequence_begin (o, p, sizeof(**p), name)) + return opt && odr_ok (o); + return + odr_implicit_tag (o, odr_enum, + &(*p)->conditions, ODR_CONTEXT, 0, 0, "conditions") && + odr_implicit_tag (o, ill_ISO_Date, + &(*p)->date_for_reply, ODR_CONTEXT, 1, 1, "date_for_reply") && + odr_implicit_settag (o, ODR_CONTEXT, 2) && + (odr_sequence_of(o, (Odr_fun) ill_Location_Info, &(*p)->locations, + &(*p)->num_locations, "locations") || odr_ok(o)) && + ill_Delivery_Service(o, &(*p)->proposed_delivery_service, 1, "proposed_delivery_service") && + odr_sequence_end (o); +} + +int ill_Cost_Info_Type (ODR o, ILL_Cost_Info_Type **p, int opt, const char *name) +{ + if (!odr_sequence_begin (o, p, sizeof(**p), name)) + return opt && odr_ok (o); + return + odr_explicit_tag (o, ill_Account_Number, + &(*p)->account_number, ODR_CONTEXT, 0, 1, "account_number") && + odr_implicit_tag (o, ill_Amount, + &(*p)->maximum_cost, ODR_CONTEXT, 1, 1, "maximum_cost") && + odr_implicit_tag (o, odr_bool, + &(*p)->reciprocal_agreement, ODR_CONTEXT, 2, 0, "reciprocal_agreement") && + odr_implicit_tag (o, odr_bool, + &(*p)->will_pay_fee, ODR_CONTEXT, 3, 0, "will_pay_fee") && + odr_implicit_tag (o, odr_bool, + &(*p)->payment_provided, ODR_CONTEXT, 4, 0, "payment_provided") && + odr_sequence_end (o); +} + +int ill_Current_State (ODR o, ILL_Current_State **p, int opt, const char *name) +{ + return odr_enum (o, p, opt, name); +} + +int ill_Damaged_DetailsSpecific_units (ODR o, ILL_Damaged_DetailsSpecific_units **p, int opt, const char *name) +{ + if (!odr_initmember (o, p, sizeof(**p))) + return opt && odr_ok(o); + if (odr_sequence_of (o, (Odr_fun) odr_integer, &(*p)->elements, + &(*p)->num, name)) + return 1; + *p = 0; + return opt && odr_ok(o); +} + +int ill_Damaged_Details (ODR o, ILL_Damaged_Details **p, int opt, const char *name) +{ + static Odr_arm arm[] = { + {ODR_IMPLICIT, ODR_CONTEXT, 1, ILL_Damaged_Details_complete_document, + (Odr_fun) odr_null, "complete_document"}, + {ODR_IMPLICIT, ODR_CONTEXT, 2, ILL_Damaged_Details_specific_units, + (Odr_fun) ill_Damaged_DetailsSpecific_units, "specific_units"}, + {-1, -1, -1, -1, (Odr_fun) 0, 0} + }; + if (!odr_sequence_begin (o, p, sizeof(**p), name)) + return opt && odr_ok (o); + return + odr_implicit_tag (o, odr_oid, + &(*p)->document_type_id, ODR_CONTEXT, 0, 1, "document_type_id") && + odr_choice (o, arm, &(*p)->u, &(*p)->which, 0) && + odr_sequence_end (o); +} + +int ill_Date_Due (ODR o, ILL_Date_Due **p, int opt, const char *name) +{ + if (!odr_sequence_begin (o, p, sizeof(**p), name)) + return opt && odr_ok (o); + return + odr_implicit_tag (o, ill_ISO_Date, + &(*p)->date_due_field, ODR_CONTEXT, 0, 0, "date_due_field") && + odr_implicit_tag (o, odr_bool, + &(*p)->renewable, ODR_CONTEXT, 1, 0, "renewable") && + odr_sequence_end (o); +} + +int ill_Delivery_Address (ODR o, ILL_Delivery_Address **p, int opt, const char *name) +{ + if (!odr_sequence_begin (o, p, sizeof(**p), name)) + return opt && odr_ok (o); + return + odr_implicit_tag (o, ill_Postal_Address, + &(*p)->postal_address, ODR_CONTEXT, 0, 1, "postal_address") && + odr_implicit_tag (o, ill_System_Address, + &(*p)->electronic_address, ODR_CONTEXT, 1, 1, "electronic_address") && + odr_sequence_end (o); +} + +int ill_Delivery_ServiceElectronic_delivery (ODR o, ILL_Delivery_ServiceElectronic_delivery **p, int opt, const char *name) +{ + if (!odr_initmember (o, p, sizeof(**p))) + return opt && odr_ok(o); + if (odr_sequence_of (o, (Odr_fun) ill_Electronic_Delivery_Service, &(*p)->elements, + &(*p)->num, name)) + return 1; + *p = 0; + return opt && odr_ok(o); +} + +int ill_Delivery_Service (ODR o, ILL_Delivery_Service **p, int opt, const char *name) +{ + static Odr_arm arm[] = { + {ODR_EXPLICIT, ODR_CONTEXT, 7, ILL_Delivery_Service_physical_delivery, + (Odr_fun) ill_Transportation_Mode, "physical_delivery"}, + {ODR_IMPLICIT, ODR_CONTEXT, 50, ILL_Delivery_Service_electronic_delivery, + (Odr_fun) ill_Delivery_ServiceElectronic_delivery, "electronic_delivery"}, + {-1, -1, -1, -1, (Odr_fun) 0, 0} + }; + if (!odr_initmember(o, p, sizeof(**p))) + return opt && odr_ok(o); + if (odr_choice(o, arm, &(*p)->u, &(*p)->which, name)) + return 1; + *p = 0; + return opt && odr_ok(o); +} + +int ill_Electronic_Delivery_Service_0 (ODR o, ILL_Electronic_Delivery_Service_0 **p, int opt, const char *name) +{ + if (!odr_sequence_begin (o, p, sizeof(**p), name)) + return opt && odr_ok (o); + return + odr_implicit_tag (o, odr_oid, + &(*p)->e_delivery_mode, ODR_CONTEXT, 0, 0, "e_delivery_mode") && + odr_explicit_tag (o, odr_any, + &(*p)->e_delivery_parameters, ODR_CONTEXT, 1, 0, "e_delivery_parameters") && + odr_sequence_end (o); +} + +int ill_Electronic_Delivery_Service_1 (ODR o, ILL_Electronic_Delivery_Service_1 **p, int opt, const char *name) +{ + if (!odr_sequence_begin (o, p, sizeof(**p), name)) + return opt && odr_ok (o); + return + odr_implicit_tag (o, odr_oid, + &(*p)->document_type_id, ODR_CONTEXT, 2, 0, "document_type_id") && + odr_explicit_tag (o, odr_any, + &(*p)->document_type_parameters, ODR_CONTEXT, 3, 0, "document_type_parameters") && + odr_sequence_end (o); +} + +int ill_Electronic_Delivery_Service (ODR o, ILL_Electronic_Delivery_Service **p, int opt, const char *name) +{ + static Odr_arm arm[] = { + {ODR_IMPLICIT, ODR_CONTEXT, 0, ILL_Electronic_Delivery_Service_e_delivery_address, + (Odr_fun) ill_System_Address, "e_delivery_address"}, + {ODR_IMPLICIT, ODR_CONTEXT, 1, ILL_Electronic_Delivery_Service_e_delivery_id, + (Odr_fun) ill_System_Id, "e_delivery_id"}, + {-1, -1, -1, -1, (Odr_fun) 0, 0} + }; + if (!odr_sequence_begin (o, p, sizeof(**p), name)) + return opt && odr_ok (o); + return + odr_implicit_tag (o, ill_Electronic_Delivery_Service_0, + &(*p)->e_delivery_service, ODR_CONTEXT, 0, 1, "e_delivery_service") && + odr_implicit_tag (o, ill_Electronic_Delivery_Service_1, + &(*p)->document_type, ODR_CONTEXT, 1, 1, "document_type") && + odr_explicit_tag (o, ill_String, + &(*p)->e_delivery_description, ODR_CONTEXT, 4, 1, "e_delivery_description") && + odr_constructed_begin (o, &(*p)->u, ODR_CONTEXT, 5, "e_delivery_details") && + odr_choice (o, arm, &(*p)->u, &(*p)->which, 0) && + odr_constructed_end (o) && + odr_explicit_tag (o, ill_String, + &(*p)->name_or_code, ODR_CONTEXT, 6, 1, "name_or_code") && + odr_implicit_tag (o, ill_ISO_Time, + &(*p)->delivery_time, ODR_CONTEXT, 7, 1, "delivery_time") && + odr_sequence_end (o); +} + +int ill_Error_Report (ODR o, ILL_Error_Report **p, int opt, const char *name) +{ + if (!odr_sequence_begin (o, p, sizeof(**p), name)) + return opt && odr_ok (o); + return + odr_explicit_tag (o, ill_String, + &(*p)->correlation_information, ODR_CONTEXT, 0, 0, "correlation_information") && + odr_implicit_tag (o, ill_Report_Source, + &(*p)->report_source, ODR_CONTEXT, 1, 0, "report_source") && + odr_explicit_tag (o, ill_User_Error_Report, + &(*p)->user_error_report, ODR_CONTEXT, 2, 1, "user_error_report") && + odr_explicit_tag (o, ill_Provider_Error_Report, + &(*p)->provider_error_report, ODR_CONTEXT, 3, 1, "provider_error_report") && + odr_sequence_end (o); +} + +int ill_Estimate_Results (ODR o, ILL_Estimate_Results **p, int opt, const char *name) +{ + if (!odr_sequence_begin (o, p, sizeof(**p), name)) + return opt && odr_ok (o); + return + odr_explicit_tag (o, ill_String, + &(*p)->cost_estimate, ODR_CONTEXT, 0, 0, "cost_estimate") && + odr_implicit_settag (o, ODR_CONTEXT, 1) && + (odr_sequence_of(o, (Odr_fun) ill_Location_Info, &(*p)->locations, + &(*p)->num_locations, "locations") || odr_ok(o)) && + odr_sequence_end (o); +} + +int ill_Extension (ODR o, ILL_Extension **p, int opt, const char *name) +{ + if (!odr_sequence_begin (o, p, sizeof(**p), name)) + return opt && odr_ok (o); + return + odr_implicit_tag (o, odr_integer, + &(*p)->identifier, ODR_CONTEXT, 0, 0, "identifier") && + odr_implicit_tag (o, odr_bool, + &(*p)->critical, ODR_CONTEXT, 1, 0, "critical") && + odr_explicit_tag (o, odr_any, + &(*p)->item, ODR_CONTEXT, 2, 0, "item") && + odr_sequence_end (o); +} + +int ill_General_Problem (ODR o, ILL_General_Problem **p, int opt, const char *name) +{ + return odr_enum (o, p, opt, name); +} + +int ill_History_Report (ODR o, ILL_History_Report **p, int opt, const char *name) +{ + if (!odr_sequence_begin (o, p, sizeof(**p), name)) + return opt && odr_ok (o); + return + odr_implicit_tag (o, ill_ISO_Date, + &(*p)->date_requested, ODR_CONTEXT, 0, 1, "date_requested") && + odr_explicit_tag (o, ill_String, + &(*p)->author, ODR_CONTEXT, 1, 1, "author") && + odr_explicit_tag (o, ill_String, + &(*p)->title, ODR_CONTEXT, 2, 1, "title") && + odr_explicit_tag (o, ill_String, + &(*p)->author_of_article, ODR_CONTEXT, 3, 1, "author_of_article") && + odr_explicit_tag (o, ill_String, + &(*p)->title_of_article, ODR_CONTEXT, 4, 1, "title_of_article") && + odr_implicit_tag (o, ill_ISO_Date, + &(*p)->date_of_last_transition, ODR_CONTEXT, 5, 0, "date_of_last_transition") && + odr_implicit_tag (o, odr_enum, + &(*p)->most_recent_service, ODR_CONTEXT, 6, 0, "most_recent_service") && + odr_implicit_tag (o, ill_ISO_Date, + &(*p)->date_of_most_recent_service, ODR_CONTEXT, 7, 0, "date_of_most_recent_service") && + odr_implicit_tag (o, ill_System_Id, + &(*p)->initiator_of_most_recent_service, ODR_CONTEXT, 8, 0, "initiator_of_most_recent_service") && + odr_implicit_tag (o, ill_Shipped_Service_Type, + &(*p)->shipped_service_type, ODR_CONTEXT, 9, 1, "shipped_service_type") && + odr_implicit_tag (o, ill_Transaction_Results, + &(*p)->transaction_results, ODR_CONTEXT, 10, 1, "transaction_results") && + odr_explicit_tag (o, ill_String, + &(*p)->most_recent_service_note, ODR_CONTEXT, 11, 1, "most_recent_service_note") && + odr_sequence_end (o); +} + +int ill_Hold_Placed_Results (ODR o, ILL_Hold_Placed_Results **p, int opt, const char *name) +{ + if (!odr_sequence_begin (o, p, sizeof(**p), name)) + return opt && odr_ok (o); + return + odr_implicit_tag (o, ill_ISO_Date, + &(*p)->estimated_date_available, ODR_CONTEXT, 0, 0, "estimated_date_available") && + odr_implicit_tag (o, ill_Medium_Type, + &(*p)->hold_placed_medium_type, ODR_CONTEXT, 1, 1, "hold_placed_medium_type") && + odr_implicit_settag (o, ODR_CONTEXT, 2) && + (odr_sequence_of(o, (Odr_fun) ill_Location_Info, &(*p)->locations, + &(*p)->num_locations, "locations") || odr_ok(o)) && + odr_sequence_end (o); +} + +int ill_APDU_Type (ODR o, ILL_APDU_Type **p, int opt, const char *name) +{ + return odr_enum (o, p, opt, name); +} + +int ill_Service_Type (ODR o, ILL_Service_Type **p, int opt, const char *name) +{ + return odr_enum (o, p, opt, name); +} + +int ill_String (ODR o, ILL_String **p, int opt, const char *name) +{ + static Odr_arm arm[] = { + {-1, -1, -1, ILL_String_GeneralString, + (Odr_fun) odr_generalstring, "GeneralString"}, + {-1, -1, -1, ILL_String_EDIFACTString, + (Odr_fun) ill_EDIFACTString, "EDIFACTString"}, + {-1, -1, -1, -1, (Odr_fun) 0, 0} + }; + if (!odr_initmember(o, p, sizeof(**p))) + return opt && odr_ok(o); + if (odr_choice(o, arm, &(*p)->u, &(*p)->which, name)) + return 1; + *p = 0; + return opt && odr_ok(o); +} + +int ill_Intermediary_Problem (ODR o, ILL_Intermediary_Problem **p, int opt, const char *name) +{ + return odr_enum (o, p, opt, name); +} + +int ill_ISO_Date (ODR o, ILL_ISO_Date **p, int opt, const char *name) +{ + return odr_visiblestring (o, p, opt, name); +} + +int ill_ISO_Time (ODR o, ILL_ISO_Time **p, int opt, const char *name) +{ + return odr_visiblestring (o, p, opt, name); +} + +int ill_Item_Id (ODR o, ILL_Item_Id **p, int opt, const char *name) +{ + if (!odr_sequence_begin (o, p, sizeof(**p), name)) + return opt && odr_ok (o); + return + odr_implicit_tag (o, odr_enum, + &(*p)->item_type, ODR_CONTEXT, 0, 1, "item_type") && + odr_implicit_tag (o, ill_Medium_Type, + &(*p)->held_medium_type, ODR_CONTEXT, 1, 1, "held_medium_type") && + odr_explicit_tag (o, ill_String, + &(*p)->call_number, ODR_CONTEXT, 2, 1, "call_number") && + odr_explicit_tag (o, ill_String, + &(*p)->author, ODR_CONTEXT, 3, 1, "author") && + odr_explicit_tag (o, ill_String, + &(*p)->title, ODR_CONTEXT, 4, 1, "title") && + odr_explicit_tag (o, ill_String, + &(*p)->sub_title, ODR_CONTEXT, 5, 1, "sub_title") && + odr_explicit_tag (o, ill_String, + &(*p)->sponsoring_body, ODR_CONTEXT, 6, 1, "sponsoring_body") && + odr_explicit_tag (o, ill_String, + &(*p)->place_of_publication, ODR_CONTEXT, 7, 1, "place_of_publication") && + odr_explicit_tag (o, ill_String, + &(*p)->publisher, ODR_CONTEXT, 8, 1, "publisher") && + odr_explicit_tag (o, ill_String, + &(*p)->series_title_number, ODR_CONTEXT, 9, 1, "series_title_number") && + odr_explicit_tag (o, ill_String, + &(*p)->volume_issue, ODR_CONTEXT, 10, 1, "volume_issue") && + odr_explicit_tag (o, ill_String, + &(*p)->edition, ODR_CONTEXT, 11, 1, "edition") && + odr_explicit_tag (o, ill_String, + &(*p)->publication_date, ODR_CONTEXT, 12, 1, "publication_date") && + odr_explicit_tag (o, ill_String, + &(*p)->publication_date_of_component, ODR_CONTEXT, 13, 1, "publication_date_of_component") && + odr_explicit_tag (o, ill_String, + &(*p)->author_of_article, ODR_CONTEXT, 14, 1, "author_of_article") && + odr_explicit_tag (o, ill_String, + &(*p)->title_of_article, ODR_CONTEXT, 15, 1, "title_of_article") && + odr_explicit_tag (o, ill_String, + &(*p)->pagination, ODR_CONTEXT, 16, 1, "pagination") && + odr_explicit_tag (o, odr_external, + &(*p)->national_bibliography_no, ODR_CONTEXT, 17, 1, "national_bibliography_no") && + odr_explicit_tag (o, ill_String, + &(*p)->iSBN, ODR_CONTEXT, 18, 1, "iSBN") && + odr_explicit_tag (o, ill_String, + &(*p)->iSSN, ODR_CONTEXT, 19, 1, "iSSN") && + odr_explicit_tag (o, odr_external, + &(*p)->system_no, ODR_CONTEXT, 20, 1, "system_no") && + odr_explicit_tag (o, ill_String, + &(*p)->additional_no_letters, ODR_CONTEXT, 21, 1, "additional_no_letters") && + odr_explicit_tag (o, ill_String, + &(*p)->verification_reference_source, ODR_CONTEXT, 22, 1, "verification_reference_source") && + odr_sequence_end (o); +} + +int ill_Location_Info (ODR o, ILL_Location_Info **p, int opt, const char *name) +{ + if (!odr_sequence_begin (o, p, sizeof(**p), name)) + return opt && odr_ok (o); + return + odr_implicit_tag (o, ill_System_Id, + &(*p)->location_id, ODR_CONTEXT, 0, 0, "location_id") && + odr_implicit_tag (o, ill_System_Address, + &(*p)->location_address, ODR_CONTEXT, 1, 1, "location_address") && + odr_explicit_tag (o, ill_String, + &(*p)->location_note, ODR_CONTEXT, 2, 1, "location_note") && + odr_sequence_end (o); +} + +int ill_Locations_Results (ODR o, ILL_Locations_Results **p, int opt, const char *name) +{ + if (!odr_sequence_begin (o, p, sizeof(**p), name)) + return opt && odr_ok (o); + return + odr_implicit_tag (o, ill_Reason_Locs_Provided, + &(*p)->reason_locs_provided, ODR_CONTEXT, 0, 1, "reason_locs_provided") && + odr_implicit_settag (o, ODR_CONTEXT, 1) && + odr_sequence_of(o, (Odr_fun) ill_Location_Info, &(*p)->locations, + &(*p)->num_locations, "locations") && + odr_sequence_end (o); +} + +int ill_Medium_Type (ODR o, ILL_Medium_Type **p, int opt, const char *name) +{ + return odr_enum (o, p, opt, name); +} + +int ill_Name_Of_Person_Or_Institution (ODR o, ILL_Name_Of_Person_Or_Institution **p, int opt, const char *name) +{ + static Odr_arm arm[] = { + {ODR_EXPLICIT, ODR_CONTEXT, 0, ILL_Name_Of_Person_Or_Institution_name_of_person, + (Odr_fun) ill_String, "name_of_person"}, + {ODR_EXPLICIT, ODR_CONTEXT, 1, ILL_Name_Of_Person_Or_Institution_name_of_institution, + (Odr_fun) ill_String, "name_of_institution"}, + {-1, -1, -1, -1, (Odr_fun) 0, 0} + }; + if (!odr_initmember(o, p, sizeof(**p))) + return opt && odr_ok(o); + if (odr_choice(o, arm, &(*p)->u, &(*p)->which, name)) + return 1; + *p = 0; + return opt && odr_ok(o); +} + +int ill_Person_Or_Institution_Symbol (ODR o, ILL_Person_Or_Institution_Symbol **p, int opt, const char *name) +{ + static Odr_arm arm[] = { + {ODR_EXPLICIT, ODR_CONTEXT, 0, ILL_Person_Or_Institution_Symbol_person_symbol, + (Odr_fun) ill_String, "person_symbol"}, + {ODR_EXPLICIT, ODR_CONTEXT, 1, ILL_Person_Or_Institution_Symbol_institution_symbol, + (Odr_fun) ill_String, "institution_symbol"}, + {-1, -1, -1, -1, (Odr_fun) 0, 0} + }; + if (!odr_initmember(o, p, sizeof(**p))) + return opt && odr_ok(o); + if (odr_choice(o, arm, &(*p)->u, &(*p)->which, name)) + return 1; + *p = 0; + return opt && odr_ok(o); +} + +int ill_Place_On_Hold_Type (ODR o, ILL_Place_On_Hold_Type **p, int opt, const char *name) +{ + return odr_enum (o, p, opt, name); +} + +int ill_Postal_Address (ODR o, ILL_Postal_Address **p, int opt, const char *name) +{ + if (!odr_sequence_begin (o, p, sizeof(**p), name)) + return opt && odr_ok (o); + return + odr_explicit_tag (o, ill_Name_Of_Person_Or_Institution, + &(*p)->name_of_person_or_institution, ODR_CONTEXT, 0, 1, "name_of_person_or_institution") && + odr_explicit_tag (o, ill_String, + &(*p)->extended_postal_delivery_address, ODR_CONTEXT, 1, 1, "extended_postal_delivery_address") && + odr_explicit_tag (o, ill_String, + &(*p)->street_and_number, ODR_CONTEXT, 2, 1, "street_and_number") && + odr_explicit_tag (o, ill_String, + &(*p)->post_office_box, ODR_CONTEXT, 3, 1, "post_office_box") && + odr_explicit_tag (o, ill_String, + &(*p)->city, ODR_CONTEXT, 4, 1, "city") && + odr_explicit_tag (o, ill_String, + &(*p)->region, ODR_CONTEXT, 5, 1, "region") && + odr_explicit_tag (o, ill_String, + &(*p)->country, ODR_CONTEXT, 6, 1, "country") && + odr_explicit_tag (o, ill_String, + &(*p)->postal_code, ODR_CONTEXT, 7, 1, "postal_code") && + odr_sequence_end (o); +} + +int ill_Provider_Error_Report (ODR o, ILL_Provider_Error_Report **p, int opt, const char *name) +{ + static Odr_arm arm[] = { + {ODR_IMPLICIT, ODR_CONTEXT, 0, ILL_Provider_Error_Report_general_problem, + (Odr_fun) ill_General_Problem, "general_problem"}, + {ODR_IMPLICIT, ODR_CONTEXT, 1, ILL_Provider_Error_Report_transaction_id_problem, + (Odr_fun) ill_Transaction_Id_Problem, "transaction_id_problem"}, + {ODR_IMPLICIT, ODR_CONTEXT, 2, ILL_Provider_Error_Report_state_transition_prohibited, + (Odr_fun) ill_State_Transition_Prohibited, "state_transition_prohibited"}, + {-1, -1, -1, -1, (Odr_fun) 0, 0} + }; + if (!odr_initmember(o, p, sizeof(**p))) + return opt && odr_ok(o); + if (odr_choice(o, arm, &(*p)->u, &(*p)->which, name)) + return 1; + *p = 0; + return opt && odr_ok(o); +} + +int ill_Reason_Locs_Provided (ODR o, ILL_Reason_Locs_Provided **p, int opt, const char *name) +{ + return odr_enum (o, p, opt, name); +} + +int ill_Reason_No_Report (ODR o, ILL_Reason_No_Report **p, int opt, const char *name) +{ + return odr_enum (o, p, opt, name); +} + +int ill_Reason_Unfilled (ODR o, ILL_Reason_Unfilled **p, int opt, const char *name) +{ + return odr_enum (o, p, opt, name); +} + +int ill_Report_Source (ODR o, ILL_Report_Source **p, int opt, const char *name) +{ + return odr_enum (o, p, opt, name); +} + +int ill_Requester_Optional_Messages_Type (ODR o, ILL_Requester_Optional_Messages_Type **p, int opt, const char *name) +{ + if (!odr_sequence_begin (o, p, sizeof(**p), name)) + return opt && odr_ok (o); + return + odr_implicit_tag (o, odr_bool, + &(*p)->can_send_RECEIVED, ODR_CONTEXT, 0, 0, "can_send_RECEIVED") && + odr_implicit_tag (o, odr_bool, + &(*p)->can_send_RETURNED, ODR_CONTEXT, 1, 0, "can_send_RETURNED") && + odr_implicit_tag (o, odr_enum, + &(*p)->requester_SHIPPED, ODR_CONTEXT, 2, 0, "requester_SHIPPED") && + odr_implicit_tag (o, odr_enum, + &(*p)->requester_CHECKED_IN, ODR_CONTEXT, 3, 0, "requester_CHECKED_IN") && + odr_sequence_end (o); +} + +int ill_Responder_Optional_Messages_Type (ODR o, ILL_Responder_Optional_Messages_Type **p, int opt, const char *name) +{ + if (!odr_sequence_begin (o, p, sizeof(**p), name)) + return opt && odr_ok (o); + return + odr_implicit_tag (o, odr_bool, + &(*p)->can_send_SHIPPED, ODR_CONTEXT, 0, 0, "can_send_SHIPPED") && + odr_implicit_tag (o, odr_bool, + &(*p)->can_send_CHECKED_IN, ODR_CONTEXT, 1, 0, "can_send_CHECKED_IN") && + odr_implicit_tag (o, odr_enum, + &(*p)->responder_RECEIVED, ODR_CONTEXT, 2, 0, "responder_RECEIVED") && + odr_implicit_tag (o, odr_enum, + &(*p)->responder_RETURNED, ODR_CONTEXT, 3, 0, "responder_RETURNED") && + odr_sequence_end (o); +} + +int ill_Retry_Results (ODR o, ILL_Retry_Results **p, int opt, const char *name) +{ + if (!odr_sequence_begin (o, p, sizeof(**p), name)) + return opt && odr_ok (o); + return + odr_implicit_tag (o, odr_enum, + &(*p)->reason_not_available, ODR_CONTEXT, 0, 1, "reason_not_available") && + odr_implicit_tag (o, ill_ISO_Date, + &(*p)->retry_date, ODR_CONTEXT, 1, 1, "retry_date") && + odr_implicit_settag (o, ODR_CONTEXT, 2) && + (odr_sequence_of(o, (Odr_fun) ill_Location_Info, &(*p)->locations, + &(*p)->num_locations, "locations") || odr_ok(o)) && + odr_sequence_end (o); +} + +int ill_Search_Type (ODR o, ILL_Search_Type **p, int opt, const char *name) +{ + if (!odr_sequence_begin (o, p, sizeof(**p), name)) + return opt && odr_ok (o); + return + odr_explicit_tag (o, ill_String, + &(*p)->level_of_service, ODR_CONTEXT, 0, 1, "level_of_service") && + odr_implicit_tag (o, ill_ISO_Date, + &(*p)->need_before_date, ODR_CONTEXT, 1, 1, "need_before_date") && + odr_implicit_tag (o, odr_enum, + &(*p)->expiry_flag, ODR_CONTEXT, 2, 0, "expiry_flag") && + odr_implicit_tag (o, ill_ISO_Date, + &(*p)->expiry_date, ODR_CONTEXT, 3, 1, "expiry_date") && + odr_sequence_end (o); +} + +int ill_Security_Problem (ODR o, ILL_Security_Problem **p, int opt, const char *name) +{ + return ill_String (o, p, opt, name); +} + +int ill_Send_To_List_Type_s (ODR o, ILL_Send_To_List_Type_s **p, int opt, const char *name) +{ + if (!odr_sequence_begin (o, p, sizeof(**p), name)) + return opt && odr_ok (o); + return + odr_implicit_tag (o, ill_System_Id, + &(*p)->system_id, ODR_CONTEXT, 0, 0, "system_id") && + odr_explicit_tag (o, ill_Account_Number, + &(*p)->account_number, ODR_CONTEXT, 1, 1, "account_number") && + odr_implicit_tag (o, ill_System_Address, + &(*p)->system_address, ODR_CONTEXT, 2, 1, "system_address") && + odr_sequence_end (o); +} + +int ill_Send_To_List_Type (ODR o, ILL_Send_To_List_Type **p, int opt, const char *name) +{ + if (!odr_initmember (o, p, sizeof(**p))) + return opt && odr_ok(o); + if (odr_sequence_of (o, (Odr_fun) ill_Send_To_List_Type_s, &(*p)->elements, + &(*p)->num, name)) + return 1; + *p = 0; + return opt && odr_ok(o); +} + +int ill_Service_Date_this (ODR o, ILL_Service_Date_this **p, int opt, const char *name) +{ + if (!odr_sequence_begin (o, p, sizeof(**p), name)) + return opt && odr_ok (o); + return + odr_implicit_tag (o, ill_ISO_Date, + &(*p)->date, ODR_CONTEXT, 0, 0, "date") && + odr_implicit_tag (o, ill_ISO_Time, + &(*p)->time, ODR_CONTEXT, 1, 1, "time") && + odr_sequence_end (o); +} + +int ill_Service_Date_original (ODR o, ILL_Service_Date_original **p, int opt, const char *name) +{ + if (!odr_sequence_begin (o, p, sizeof(**p), name)) + return opt && odr_ok (o); + return + odr_implicit_tag (o, ill_ISO_Date, + &(*p)->date, ODR_CONTEXT, 0, 0, "date") && + odr_implicit_tag (o, ill_ISO_Time, + &(*p)->time, ODR_CONTEXT, 1, 1, "time") && + odr_sequence_end (o); +} + +int ill_Service_Date_Time (ODR o, ILL_Service_Date_Time **p, int opt, const char *name) +{ + if (!odr_sequence_begin (o, p, sizeof(**p), name)) + return opt && odr_ok (o); + return + odr_implicit_tag (o, ill_Service_Date_this, + &(*p)->date_time_of_this_service, ODR_CONTEXT, 0, 0, "date_time_of_this_service") && + odr_implicit_tag (o, ill_Service_Date_original, + &(*p)->date_time_of_original_service, ODR_CONTEXT, 1, 1, "date_time_of_original_service") && + odr_sequence_end (o); +} + +int ill_Shipped_Service_Type (ODR o, ILL_Shipped_Service_Type **p, int opt, const char *name) +{ + return ill_Service_Type (o, p, opt, name); +} + +int ill_State_Transition_Prohibited (ODR o, ILL_State_Transition_Prohibited **p, int opt, const char *name) +{ + if (!odr_sequence_begin (o, p, sizeof(**p), name)) + return opt && odr_ok (o); + return + odr_implicit_tag (o, ill_APDU_Type, + &(*p)->aPDU_type, ODR_CONTEXT, 0, 0, "aPDU_type") && + odr_implicit_tag (o, ill_Current_State, + &(*p)->current_state, ODR_CONTEXT, 1, 0, "current_state") && + odr_sequence_end (o); +} + +int ill_Status_Report (ODR o, ILL_Status_Report **p, int opt, const char *name) +{ + if (!odr_sequence_begin (o, p, sizeof(**p), name)) + return opt && odr_ok (o); + return + odr_implicit_tag (o, ill_History_Report, + &(*p)->user_status_report, ODR_CONTEXT, 0, 0, "user_status_report") && + odr_implicit_tag (o, ill_Current_State, + &(*p)->provider_status_report, ODR_CONTEXT, 1, 0, "provider_status_report") && + odr_sequence_end (o); +} + +int ill_Supplemental_Item_Description (ODR o, ILL_Supplemental_Item_Description **p, int opt, const char *name) +{ + if (!odr_initmember (o, p, sizeof(**p))) + return opt && odr_ok(o); + if (odr_sequence_of (o, (Odr_fun) odr_external, &(*p)->elements, + &(*p)->num, name)) + return 1; + *p = 0; + return opt && odr_ok(o); +} + +int ill_Supply_Details (ODR o, ILL_Supply_Details **p, int opt, const char *name) +{ + static Odr_arm arm[] = { + {ODR_EXPLICIT, ODR_CONTEXT, 5, ILL_Supply_Details_physical_delivery, + (Odr_fun) ill_Transportation_Mode, "physical_delivery"}, + {ODR_IMPLICIT, ODR_CONTEXT, 50, ILL_Supply_Details_electronic_delivery, + (Odr_fun) ill_Electronic_Delivery_Service, "electronic_delivery"}, + {-1, -1, -1, -1, (Odr_fun) 0, 0} + }; + if (!odr_sequence_begin (o, p, sizeof(**p), name)) + return opt && odr_ok (o); + return + odr_implicit_tag (o, ill_ISO_Date, + &(*p)->date_shipped, ODR_CONTEXT, 0, 1, "date_shipped") && + odr_implicit_tag (o, ill_Date_Due, + &(*p)->date_due, ODR_CONTEXT, 1, 1, "date_due") && + odr_implicit_tag (o, odr_integer, + &(*p)->chargeable_units, ODR_CONTEXT, 2, 1, "chargeable_units") && + odr_implicit_tag (o, ill_Amount, + &(*p)->cost, ODR_CONTEXT, 3, 1, "cost") && + odr_implicit_tag (o, odr_enum, + &(*p)->shipped_conditions, ODR_CONTEXT, 4, 1, "shipped_conditions") && + (odr_choice (o, arm, &(*p)->u, &(*p)->which, 0) || odr_ok(o)) && + odr_implicit_tag (o, ill_Amount, + &(*p)->insured_for, ODR_CONTEXT, 6, 1, "insured_for") && + odr_implicit_tag (o, ill_Amount, + &(*p)->return_insurance_require, ODR_CONTEXT, 7, 1, "return_insurance_require") && + odr_implicit_settag (o, ODR_CONTEXT, 8) && + (odr_sequence_of(o, (Odr_fun) ill_Units_Per_Medium_Type, &(*p)->no_of_units_per_medium, + &(*p)->num_no_of_units_per_medium, "no_of_units_per_medium") || odr_ok(o)) && + odr_sequence_end (o); +} + +int ill_Supply_Medium_Info_Type (ODR o, ILL_Supply_Medium_Info_Type **p, int opt, const char *name) +{ + if (!odr_sequence_begin (o, p, sizeof(**p), name)) + return opt && odr_ok (o); + return + odr_implicit_tag (o, ill_Supply_Medium_Type, + &(*p)->supply_medium_type, ODR_CONTEXT, 0, 0, "supply_medium_type") && + odr_explicit_tag (o, ill_String, + &(*p)->medium_characteristics, ODR_CONTEXT, 1, 1, "medium_characteristics") && + odr_sequence_end (o); +} + +int ill_Supply_Medium_Type (ODR o, ILL_Supply_Medium_Type **p, int opt, const char *name) +{ + return odr_enum (o, p, opt, name); +} + +int ill_System_Address (ODR o, ILL_System_Address **p, int opt, const char *name) +{ + if (!odr_sequence_begin (o, p, sizeof(**p), name)) + return opt && odr_ok (o); + return + odr_explicit_tag (o, ill_String, + &(*p)->telecom_service_identifier, ODR_CONTEXT, 0, 1, "telecom_service_identifier") && + odr_explicit_tag (o, ill_String, + &(*p)->telecom_service_address, ODR_CONTEXT, 1, 1, "telecom_service_address") && + odr_sequence_end (o); +} + +int ill_System_Id (ODR o, ILL_System_Id **p, int opt, const char *name) +{ + if (!odr_sequence_begin (o, p, sizeof(**p), name)) + return opt && odr_ok (o); + return + odr_explicit_tag (o, ill_Person_Or_Institution_Symbol, + &(*p)->person_or_institution_symbol, ODR_CONTEXT, 0, 1, "person_or_institution_symbol") && + odr_explicit_tag (o, ill_Name_Of_Person_Or_Institution, + &(*p)->name_of_person_or_institution, ODR_CONTEXT, 1, 1, "name_of_person_or_institution") && + odr_sequence_end (o); +} + +int ill_Third_Party_Info_Type (ODR o, ILL_Third_Party_Info_Type **p, int opt, const char *name) +{ + if (!odr_sequence_begin (o, p, sizeof(**p), name)) + return opt && odr_ok (o); + return + odr_implicit_tag (o, odr_bool, + &(*p)->permission_to_forward, ODR_CONTEXT, 0, 0, "permission_to_forward") && + odr_implicit_tag (o, odr_bool, + &(*p)->permission_to_chain, ODR_CONTEXT, 1, 0, "permission_to_chain") && + odr_implicit_tag (o, odr_bool, + &(*p)->permission_to_partition, ODR_CONTEXT, 2, 0, "permission_to_partition") && + odr_implicit_tag (o, odr_bool, + &(*p)->permission_to_change_send_to_list, ODR_CONTEXT, 3, 0, "permission_to_change_send_to_list") && + odr_implicit_tag (o, ill_System_Address, + &(*p)->initial_requester_address, ODR_CONTEXT, 4, 1, "initial_requester_address") && + odr_implicit_tag (o, odr_enum, + &(*p)->preference, ODR_CONTEXT, 5, 0, "preference") && + odr_implicit_tag (o, ill_Send_To_List_Type, + &(*p)->send_to_list, ODR_CONTEXT, 6, 1, "send_to_list") && + odr_implicit_tag (o, ill_Already_Tried_List_Type, + &(*p)->already_tried_list, ODR_CONTEXT, 7, 1, "already_tried_list") && + odr_sequence_end (o); +} + +int ill_Transaction_Id (ODR o, ILL_Transaction_Id **p, int opt, const char *name) +{ + if (!odr_sequence_begin (o, p, sizeof(**p), name)) + return opt && odr_ok (o); + return + odr_implicit_tag (o, ill_System_Id, + &(*p)->initial_requester_id, ODR_CONTEXT, 0, 1, "initial_requester_id") && + odr_explicit_tag (o, ill_String, + &(*p)->transaction_group_qualifier, ODR_CONTEXT, 1, 0, "transaction_group_qualifier") && + odr_explicit_tag (o, ill_String, + &(*p)->transaction_qualifier, ODR_CONTEXT, 2, 0, "transaction_qualifier") && + odr_explicit_tag (o, ill_String, + &(*p)->sub_transaction_qualifier, ODR_CONTEXT, 3, 1, "sub_transaction_qualifier") && + odr_sequence_end (o); +} + +int ill_Transaction_Id_Problem (ODR o, ILL_Transaction_Id_Problem **p, int opt, const char *name) +{ + return odr_enum (o, p, opt, name); +} + +int ill_Transaction_Results (ODR o, ILL_Transaction_Results **p, int opt, const char *name) +{ + return odr_enum (o, p, opt, name); +} + +int ill_Transaction_Type (ODR o, ILL_Transaction_Type **p, int opt, const char *name) +{ + return odr_enum (o, p, opt, name); +} + +int ill_Transportation_Mode (ODR o, ILL_Transportation_Mode **p, int opt, const char *name) +{ + return ill_String (o, p, opt, name); +} + +int ill_Unable_To_Perform (ODR o, ILL_Unable_To_Perform **p, int opt, const char *name) +{ + return odr_enum (o, p, opt, name); +} + +int ill_Unfilled_Results (ODR o, ILL_Unfilled_Results **p, int opt, const char *name) +{ + if (!odr_sequence_begin (o, p, sizeof(**p), name)) + return opt && odr_ok (o); + return + odr_implicit_tag (o, ill_Reason_Unfilled, + &(*p)->reason_unfilled, ODR_CONTEXT, 0, 0, "reason_unfilled") && + odr_implicit_settag (o, ODR_CONTEXT, 1) && + (odr_sequence_of(o, (Odr_fun) ill_Location_Info, &(*p)->locations, + &(*p)->num_locations, "locations") || odr_ok(o)) && + odr_sequence_end (o); +} + +int ill_Units_Per_Medium_Type (ODR o, ILL_Units_Per_Medium_Type **p, int opt, const char *name) +{ + if (!odr_sequence_begin (o, p, sizeof(**p), name)) + return opt && odr_ok (o); + return + odr_explicit_tag (o, ill_Supply_Medium_Type, + &(*p)->medium, ODR_CONTEXT, 0, 0, "medium") && + odr_explicit_tag (o, odr_integer, + &(*p)->no_of_units, ODR_CONTEXT, 1, 0, "no_of_units") && + odr_sequence_end (o); +} + +int ill_User_Error_Report (ODR o, ILL_User_Error_Report **p, int opt, const char *name) +{ + static Odr_arm arm[] = { + {ODR_IMPLICIT, ODR_CONTEXT, 0, ILL_User_Error_Report_already_forwarded, + (Odr_fun) ill_Already_Forwarded, "already_forwarded"}, + {ODR_IMPLICIT, ODR_CONTEXT, 1, ILL_User_Error_Report_intermediary_problem, + (Odr_fun) ill_Intermediary_Problem, "intermediary_problem"}, + {ODR_EXPLICIT, ODR_CONTEXT, 2, ILL_User_Error_Report_security_problem, + (Odr_fun) ill_Security_Problem, "security_problem"}, + {ODR_IMPLICIT, ODR_CONTEXT, 3, ILL_User_Error_Report_unable_to_perform, + (Odr_fun) ill_Unable_To_Perform, "unable_to_perform"}, + {-1, -1, -1, -1, (Odr_fun) 0, 0} + }; + if (!odr_initmember(o, p, sizeof(**p))) + return opt && odr_ok(o); + if (odr_choice(o, arm, &(*p)->u, &(*p)->which, name)) + return 1; + *p = 0; + return opt && odr_ok(o); +} + +int ill_Will_Supply_Results (ODR o, ILL_Will_Supply_Results **p, int opt, const char *name) +{ + if (!odr_sequence_begin (o, p, sizeof(**p), name)) + return opt && odr_ok (o); + return + odr_explicit_tag (o, odr_enum, + &(*p)->reason_will_supply, ODR_CONTEXT, 0, 0, "reason_will_supply") && + odr_explicit_tag (o, ill_ISO_Date, + &(*p)->supply_date, ODR_CONTEXT, 1, 1, "supply_date") && + odr_explicit_tag (o, ill_Postal_Address, + &(*p)->return_to_address, ODR_CONTEXT, 2, 1, "return_to_address") && + odr_implicit_settag (o, ODR_CONTEXT, 3) && + (odr_sequence_of(o, (Odr_fun) ill_Location_Info, &(*p)->locations, + &(*p)->num_locations, "locations") || odr_ok(o)) && + odr_explicit_tag (o, ill_Electronic_Delivery_Service, + &(*p)->electronic_delivery_service, ODR_CONTEXT, 4, 1, "electronic_delivery_service") && + odr_sequence_end (o); +} + +int ill_EDIFACTString (ODR o, ILL_EDIFACTString **p, int opt, const char *name) +{ + return odr_visiblestring (o, p, opt, name); +} + + diff --git a/ill/item-req.c b/ill/item-req.c new file mode 100644 index 0000000..56f62ec --- /dev/null +++ b/ill/item-req.c @@ -0,0 +1,66 @@ +/* YC 0.2 Wed Mar 01 14:47:01 CET 2000 */ +/* Module-C: Z39.50-extendedService-ItemOrder-ItemRequest-1 */ + +#include + +int ill_ItemRequest (ODR o, ILL_ItemRequest **p, int opt, const char *name) +{ + if (!odr_sequence_begin (o, p, sizeof(**p), name)) + return opt && odr_ok (o); + return + odr_implicit_tag (o, odr_integer, + &(*p)->protocol_version_num, ODR_CONTEXT, 0, 0, "protocol_version_num") && + odr_implicit_tag (o, ill_Transaction_Id, + &(*p)->transaction_id, ODR_CONTEXT, 1, 1, "transaction_id") && + odr_implicit_tag (o, ill_Service_Date_Time, + &(*p)->service_date_time, ODR_CONTEXT, 2, 1, "service_date_time") && + odr_implicit_tag (o, ill_System_Id, + &(*p)->requester_id, ODR_CONTEXT, 3, 1, "requester_id") && + odr_implicit_tag (o, ill_System_Id, + &(*p)->responder_id, ODR_CONTEXT, 4, 1, "responder_id") && + odr_implicit_tag (o, ill_Transaction_Type, + &(*p)->transaction_type, ODR_CONTEXT, 5, 0, "transaction_type") && + odr_implicit_tag (o, ill_Delivery_Address, + &(*p)->delivery_address, ODR_CONTEXT, 6, 1, "delivery_address") && + ill_Delivery_Service(o, &(*p)->delivery_service, 1, "delivery_service") && + odr_implicit_tag (o, ill_Delivery_Address, + &(*p)->billing_address, ODR_CONTEXT, 8, 1, "billing_address") && + odr_implicit_settag (o, ODR_CONTEXT, 9) && + (odr_sequence_of(o, (Odr_fun) ill_Service_Type, &(*p)->iLL_service_type, + &(*p)->num_iLL_service_type, "iLL_service_type") || odr_ok(o)) && + odr_explicit_tag (o, odr_external, + &(*p)->responder_specific_service, ODR_CONTEXT, 10, 1, "responder_specific_service") && + odr_implicit_tag (o, ill_Requester_Optional_Messages_Type, + &(*p)->requester_optional_messages, ODR_CONTEXT, 11, 1, "requester_optional_messages") && + odr_implicit_tag (o, ill_Search_Type, + &(*p)->search_type, ODR_CONTEXT, 12, 1, "search_type") && + odr_implicit_settag (o, ODR_CONTEXT, 13) && + (odr_sequence_of(o, (Odr_fun) ill_Supply_Medium_Info_Type, &(*p)->supply_medium_info_type, + &(*p)->num_supply_medium_info_type, "supply_medium_info_type") || odr_ok(o)) && + odr_implicit_tag (o, ill_Place_On_Hold_Type, + &(*p)->place_on_hold, ODR_CONTEXT, 14, 0, "place_on_hold") && + odr_implicit_tag (o, ill_Client_Id, + &(*p)->client_id, ODR_CONTEXT, 15, 1, "client_id") && + odr_implicit_tag (o, ill_Item_Id, + &(*p)->item_id, ODR_CONTEXT, 16, 1, "item_id") && + odr_implicit_tag (o, ill_Supplemental_Item_Description, + &(*p)->supplemental_item_description, ODR_CONTEXT, 17, 1, "supplemental_item_description") && + odr_implicit_tag (o, ill_Cost_Info_Type, + &(*p)->cost_info_type, ODR_CONTEXT, 18, 1, "cost_info_type") && + odr_explicit_tag (o, ill_String, + &(*p)->copyright_compliance, ODR_CONTEXT, 19, 1, "copyright_compliance") && + odr_implicit_tag (o, ill_Third_Party_Info_Type, + &(*p)->third_party_info_type, ODR_CONTEXT, 20, 1, "third_party_info_type") && + odr_implicit_tag (o, odr_bool, + &(*p)->retry_flag, ODR_CONTEXT, 21, 0, "retry_flag") && + odr_implicit_tag (o, odr_bool, + &(*p)->forward_flag, ODR_CONTEXT, 22, 0, "forward_flag") && + odr_explicit_tag (o, ill_String, + &(*p)->requester_note, ODR_CONTEXT, 46, 1, "requester_note") && + odr_explicit_tag (o, ill_String, + &(*p)->forward_note, ODR_CONTEXT, 47, 1, "forward_note") && + odr_implicit_settag (o, ODR_CONTEXT, 49) && + (odr_sequence_of(o, (Odr_fun) ill_Extension, &(*p)->iLL_request_extensions, + &(*p)->num_iLL_request_extensions, "iLL_request_extensions") || odr_ok(o)) && + odr_sequence_end (o); +} diff --git a/include/yaz/ill-core.h b/include/yaz/ill-core.h index a42c586..7431532 100644 --- a/include/yaz/ill-core.h +++ b/include/yaz/ill-core.h @@ -1,4 +1,4 @@ -/* YC 0.2: Wed Mar 01 10:28:16 CET 2000 */ +/* YC 0.2: Wed Mar 01 14:46:59 CET 2000 */ /* Module-H ISO-10161-ILL-1 */ #ifndef ill_core_H diff --git a/include/yaz/item-req.h b/include/yaz/item-req.h index 683e81b..7e5d702 100644 --- a/include/yaz/item-req.h +++ b/include/yaz/item-req.h @@ -1,4 +1,4 @@ -/* YC 0.2: Wed Mar 01 10:28:17 CET 2000 */ +/* YC 0.2: Wed Mar 01 14:47:01 CET 2000 */ /* Module-H Z39.50-extendedService-ItemOrder-ItemRequest-1 */ #ifndef item_req_H -- 1.7.10.4