X-Git-Url: http://git.indexdata.com/?a=blobdiff_plain;f=z39.50%2Fzes-expi.c;fp=z39.50%2Fzes-expi.c;h=430f909084264f7acfd140f9f09bc5a4a48f4630;hb=51ce48f9d3319a9f8952c4c6deb2c39692403376;hp=0000000000000000000000000000000000000000;hpb=ee5338c518eced23556105b4b2ad3cd850fd79ea;p=yaz-moved-to-github.git diff --git a/z39.50/zes-expi.c b/z39.50/zes-expi.c new file mode 100644 index 0000000..430f909 --- /dev/null +++ b/z39.50/zes-expi.c @@ -0,0 +1,124 @@ +/* YC 0.2 Tue Feb 29 16:45:07 CET 2000 */ +/* Module-C: ESFormat-ExportInvocation */ + +#include + +int z_EIExportInvocationEsRequest (ODR o, Z_EIExportInvocationEsRequest **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, z_EIOriginPartToKeep, + &(*p)->toKeep, ODR_CONTEXT, 1, 0, "toKeep") && + odr_explicit_tag (o, z_EIOriginPartNotToKeep, + &(*p)->notToKeep, ODR_CONTEXT, 2, 0, "notToKeep") && + odr_sequence_end (o); +} + +int z_EIExportInvocationTaskPackage (ODR o, Z_EIExportInvocationTaskPackage **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, z_EIOriginPartToKeep, + &(*p)->originPart, ODR_CONTEXT, 1, 0, "originPart") && + odr_explicit_tag (o, z_EITargetPart, + &(*p)->targetPart, ODR_CONTEXT, 2, 1, "targetPart") && + odr_sequence_end (o); +} + +int z_EIExportInvocation (ODR o, Z_EIExportInvocation **p, int opt, const char *name) +{ + static Odr_arm arm[] = { + {ODR_IMPLICIT, ODR_CONTEXT, 1, Z_EIExportInvocation_esRequest, + (Odr_fun) z_EIExportInvocationEsRequest, "esRequest"}, + {ODR_IMPLICIT, ODR_CONTEXT, 2, Z_EIExportInvocation_taskPackage, + (Odr_fun) z_EIExportInvocationTaskPackage, "taskPackage"}, + {-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 z_EIOriginPartToKeep (ODR o, Z_EIOriginPartToKeep **p, int opt, const char *name) +{ + static Odr_arm arm[] = { + {ODR_IMPLICIT, ODR_CONTEXT, 1, Z_EIOriginPartToKeep_packageName, + (Odr_fun) z_InternationalString, "packageName"}, + {ODR_EXPLICIT, ODR_CONTEXT, 2, Z_EIOriginPartToKeep_packageSpec, + (Odr_fun) z_ESExportSpecification, "packageSpec"}, + {-1, -1, -1, -1, (Odr_fun) 0, 0} + }; + if (!odr_sequence_begin (o, p, sizeof(**p), name)) + return opt && odr_ok (o); + return + odr_constructed_begin (o, &(*p)->u, ODR_CONTEXT, 1, "exportSpec") && + odr_choice (o, arm, &(*p)->u, &(*p)->which, 0) && + odr_constructed_end (o) && + odr_implicit_tag (o, odr_integer, + &(*p)->numberOfCopies, ODR_CONTEXT, 2, 0, "numberOfCopies") && + odr_sequence_end (o); +} + +int z_EIOriginPartNotToKeepRanges_s (ODR o, Z_EIOriginPartNotToKeepRanges_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, odr_integer, + &(*p)->start, ODR_CONTEXT, 1, 0, "start") && + odr_implicit_tag (o, odr_integer, + &(*p)->count, ODR_CONTEXT, 2, 1, "count") && + odr_sequence_end (o); +} + +int z_EIOriginPartNotToKeepRanges (ODR o, Z_EIOriginPartNotToKeepRanges **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) z_EIOriginPartNotToKeepRanges_s, &(*p)->elements, + &(*p)->num, name)) + return 1; + *p = 0; + return opt && odr_ok(o); +} + +int z_EIOriginPartNotToKeep (ODR o, Z_EIOriginPartNotToKeep **p, int opt, const char *name) +{ + static Odr_arm arm[] = { + {ODR_IMPLICIT, ODR_CONTEXT, 1, Z_EIOriginPartNotToKeep_all, + (Odr_fun) odr_null, "all"}, + {ODR_IMPLICIT, ODR_CONTEXT, 2, Z_EIOriginPartNotToKeep_ranges, + (Odr_fun) z_EIOriginPartNotToKeepRanges, "ranges"}, + {-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, z_InternationalString, + &(*p)->resultSetId, ODR_CONTEXT, 1, 0, "resultSetId") && + odr_constructed_begin (o, &(*p)->u, ODR_CONTEXT, 2, "records") && + odr_choice (o, arm, &(*p)->u, &(*p)->which, 0) && + odr_constructed_end (o) && + odr_sequence_end (o); +} + +int z_EITargetPart (ODR o, Z_EITargetPart **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, z_IntUnit, + &(*p)->estimatedQuantity, ODR_CONTEXT, 1, 1, "estimatedQuantity") && + odr_implicit_tag (o, z_IntUnit, + &(*p)->quantitySoFar, ODR_CONTEXT, 2, 1, "quantitySoFar") && + odr_implicit_tag (o, z_IntUnit, + &(*p)->estimatedCost, ODR_CONTEXT, 3, 1, "estimatedCost") && + odr_implicit_tag (o, z_IntUnit, + &(*p)->costSoFar, ODR_CONTEXT, 4, 1, "costSoFar") && + odr_sequence_end (o); +}