+ r->search_type = ill_get_Search_Type(gc, element, "search-type");
+ r->num_supply_medium_info_type = 0;
+ r->supply_medium_info_type = 0;
+
+ r->place_on_hold = ill_get_enumerated (
+ gc, element, "place-on-hold",
+ ILL_Place_On_Hold_Type_according_to_responder_policy);
+ r->client_id = ill_get_Client_Id (gc, element, "client-id");
+
+ r->item_id = ill_get_Item_Id (gc, element, "item-id");
+ r->supplemental_item_description = 0;
+ r->cost_info_type = 0;
+ r->copyright_compliance =
+ ill_get_ILL_String(gc, element, "copyright-complicance");
+ r->third_party_info_type = 0;
+ r->retry_flag = ill_get_bool (gc, element, "retry-flag", 0);
+ r->forward_flag = ill_get_bool (gc, element, "forward-flag", 0);
+ r->requester_note = ill_get_ILL_String(gc, element, "requester-note");
+ r->forward_note = ill_get_ILL_String(gc, element, "forward-note");
+ r->num_iLL_request_extensions = 0;
+ r->iLL_request_extensions = 0;
+ return r;
+}
+
+ILL_ItemRequest *ill_get_ItemRequest (
+ struct ill_get_ctl *gc, const char *name, const char *sub)
+{
+ ODR o = gc->odr;
+ ILL_ItemRequest *r = (ILL_ItemRequest *)odr_malloc(o, sizeof(*r));
+ char element[128];
+
+ strcpy(element, name);
+ if (sub)
+ {
+ strcat (element, ",");
+ strcat (element, sub);
+ }
+ r->protocol_version_num =
+ ill_get_enumerated (gc, element, "protocol-version-num",
+ ILL_Request_version_2);
+
+ r->transaction_id = ill_get_Transaction_Id (gc, element, "transaction-id");
+ r->service_date_time =
+ ill_get_Service_Date_Time (gc, element, "service-date-time");
+ r->requester_id = ill_get_System_Id (gc, element, "requester-id");
+ r->responder_id = ill_get_System_Id (gc, element, "responder-id");
+ r->transaction_type =
+ ill_get_enumerated(gc, element, "transaction-type", 1);
+
+ r->delivery_address =
+ ill_get_Delivery_Address (gc, element, "delivery-address");
+ r->delivery_service = 0; /* TODO */
+ /* ill_get_Delivery_Service (gc, element, "delivery-service"); */
+ r->billing_address =
+ ill_get_Delivery_Address (gc, element, "billing-address");
+
+ r->num_iLL_service_type = 1;
+ r->iLL_service_type = (ILL_Service_Type **)
+ odr_malloc (o, sizeof(*r->iLL_service_type));
+ *r->iLL_service_type =
+ ill_get_enumerated (gc, element, "ill-service-type",
+ ILL_Service_Type_copy_non_returnable);
+
+ r->responder_specific_service = 0;
+ r->requester_optional_messages =
+ ill_get_Requester_Optional_Messages_Type (
+ gc, element,"requester-optional-messages");
+ r->search_type = ill_get_Search_Type(gc, element, "search-type");