static Z_ResourceControlResponse *zget_ResourceControlResponse(ODR o) { Z_ResourceControlResponse *r = (Z_ResourceControlResponse *) odr_malloc(o, sizeof(*r)); r->referenceId = 0; r->continueFlag = odr_booldup(o, 1); r->resultSetWanted = 0; r->otherInfo = 0; return r; }
static Z_ResourceControlRequest *zget_ResourceControlRequest(ODR o) { Z_ResourceControlRequest *r = (Z_ResourceControlRequest *) odr_malloc(o, sizeof(*r)); r->referenceId = 0; r->suspendedFlag = 0; r->resourceReport = 0; r->partialResultsAvailable = 0; r->responseRequired = odr_booldup(o, 0); r->triggeredRequestFlag = 0; r->otherInfo = 0; return r; }
static Z_SearchResponse *zget_SearchResponse(ODR o) { Z_SearchResponse *r = (Z_SearchResponse *)odr_malloc(o, sizeof(*r)); r->referenceId = 0; r->resultCount = odr_intdup(o, 0); r->numberOfRecordsReturned = odr_intdup(o, 0); r->nextResultSetPosition = odr_intdup(o, 0); r->searchStatus = odr_booldup(o, 1); r->resultSetStatus = 0; r->presentStatus = 0; r->records = 0; r->additionalSearchInfo = 0; r->otherInfo = 0; return r; }
static Z_SearchRequest *zget_SearchRequest(ODR o) { Z_SearchRequest *r = (Z_SearchRequest *)odr_malloc(o, sizeof(*r)); r->referenceId = 0; r->smallSetUpperBound = odr_intdup(o, 0); r->largeSetLowerBound = odr_intdup(o, 1); r->mediumSetPresentNumber = odr_intdup(o, 0); r->replaceIndicator = odr_booldup(o, 1); r->resultSetName = "default"; r->num_databaseNames = 0; r->databaseNames = 0; r->smallSetElementSetNames = 0; r->mediumSetElementSetNames = 0; r->preferredRecordSyntax = 0; r->query = 0; r->additionalSearchInfo = 0; r->otherInfo = 0; return r; }
static Z_InitResponse *zget_InitResponse(ODR o) { Z_InitResponse *r = (Z_InitResponse *)odr_malloc(o, sizeof(*r)); r->referenceId = 0; r->options = (Odr_bitmask *)odr_malloc(o, sizeof(*r->options)); ODR_MASK_ZERO(r->options); r->protocolVersion = (Odr_bitmask *)odr_malloc(o, sizeof(*r->protocolVersion)); ODR_MASK_ZERO(r->protocolVersion); r->preferredMessageSize = odr_intdup(o, 30*1024); r->maximumRecordSize = odr_intdup(o, 30*1024); r->result = odr_booldup(o, 1); r->implementationId = "81"; r->implementationName = "YAZ"; r->implementationVersion = YAZ_VERSION #ifdef YAZ_VERSION_SHA1 " " YAZ_VERSION_SHA1 #endif ; r->userInformationField = 0; r->otherInfo = 0; return r; }
static void yaz_xml2query_operator(const xmlNode *ptr, Z_Operator **op, ODR odr, int *error_code, const char **addinfo) { const char *type = yaz_xml_get_prop((xmlNodePtr) ptr, "type"); if (!type) { *error_code = 1; *addinfo = "no operator type"; return; } *op = (Z_Operator*) odr_malloc(odr, sizeof(Z_Operator)); if (!strcmp(type, "and")) { (*op)->which = Z_Operator_and; (*op)->u.op_and = odr_nullval(); } else if (!strcmp(type, "or")) { (*op)->which = Z_Operator_or; (*op)->u.op_or = odr_nullval(); } else if (!strcmp(type, "not")) { (*op)->which = Z_Operator_and_not; (*op)->u.and_not = odr_nullval(); } else if (!strcmp(type, "prox")) { struct _xmlAttr *attr; Z_ProximityOperator *pop = (Z_ProximityOperator *) odr_malloc(odr, sizeof(*pop)); (*op)->which = Z_Operator_prox; (*op)->u.prox = pop; /* default values */ pop->exclusion = 0; pop->ordered = odr_booldup(odr, 1); pop->relationType = odr_intdup(odr, Z_ProximityOperator_Prox_lessThanOrEqual); pop->which = Z_ProximityOperator_known; pop->u.known = odr_intdup(odr, Z_ProxUnit_word); pop->distance = odr_intdup(odr, 1); for (attr = ptr->properties; attr; attr = attr->next) { const char *value = (const char *) attr->children->content; if (!xmlStrcmp(attr->name, BAD_CAST "type")) ; else if (!xmlStrcmp(attr->name, BAD_CAST "exclusion")) pop->exclusion = boolVal(odr, value); else if (!xmlStrcmp(attr->name, BAD_CAST "distance")) pop->distance = intVal(odr, value); else if (!xmlStrcmp(attr->name, BAD_CAST "ordered")) pop->ordered = boolVal(odr, value); else if (!xmlStrcmp(attr->name, BAD_CAST "relationType")) pop->relationType = intVal(odr, value); else if (!xmlStrcmp(attr->name, BAD_CAST "knownProximityUnit")) { pop->which = Z_ProximityOperator_known; pop->u.known = intVal(odr, value); } else if (!xmlStrcmp(attr->name, BAD_CAST "privateProximityUnit")) { pop->which = Z_ProximityOperator_private; pop->u.known = intVal(odr, value); } else { *error_code = 1; *addinfo = "bad proximity attribute"; break; } } } else { *error_code = 1; *addinfo = "bad operator type"; } }
static bool_t *boolVal(ODR odr, const char *str) { if (*str == '\0' || strchr("0fF", *str)) return odr_booldup(odr, 0); return odr_booldup(odr, 1); }
static Z_ProximityOperator *rpn_proximity (struct yaz_pqf_parser *li, ODR o) { Z_ProximityOperator *p = (Z_ProximityOperator *)odr_malloc (o, sizeof(*p)); if (!lex (li)) { li->error = YAZ_PQF_ERROR_MISSING; return NULL; } if (*li->lex_buf == '1') p->exclusion = odr_booldup(o, 1); else if (*li->lex_buf == '0') p->exclusion = odr_booldup(o, 0); else if (*li->lex_buf == 'v' || *li->lex_buf == 'n') p->exclusion = NULL; else { li->error = YAZ_PQF_ERROR_PROXIMITY; return NULL; } if (!lex (li)) { li->error = YAZ_PQF_ERROR_MISSING; return NULL; } if (*li->lex_buf >= '0' && *li->lex_buf <= '9') p->distance = odr_intdup (o, atoi (li->lex_buf)); else { li->error = YAZ_PQF_ERROR_BAD_INTEGER; return NULL; } if (!lex (li)) { li->error = YAZ_PQF_ERROR_MISSING; return NULL; } if (*li->lex_buf == '1') p->ordered = odr_booldup(o, 1); else if (*li->lex_buf == '0') p->ordered = odr_booldup(o, 0); else { li->error = YAZ_PQF_ERROR_PROXIMITY; return NULL; } if (!lex (li)) { li->error = YAZ_PQF_ERROR_MISSING; return NULL; } if (*li->lex_buf >= '0' && *li->lex_buf <= '9') p->relationType = odr_intdup (o, atoi (li->lex_buf)); else { li->error = YAZ_PQF_ERROR_BAD_INTEGER; return NULL; } if (!lex (li)) { li->error = YAZ_PQF_ERROR_MISSING; return NULL; } if (*li->lex_buf == 'k') p->which = Z_ProximityOperator_known; else if (*li->lex_buf == 'p') p->which = Z_ProximityOperator_private; else p->which = atoi (li->lex_buf); if (p->which != Z_ProximityOperator_known && p->which != Z_ProximityOperator_private) { li->error = YAZ_PQF_ERROR_PROXIMITY; return NULL; } if (!lex (li)) { li->error = YAZ_PQF_ERROR_MISSING; return NULL; } if (*li->lex_buf >= '0' && *li->lex_buf <= '9') p->u.known = odr_intdup (o, atoi(li->lex_buf)); else { li->error = YAZ_PQF_ERROR_BAD_INTEGER; return NULL; } return p; }