391 WRBUF w = wrbuf_alloc();
392 yaz_facet_list_to_wrbuf(w, *flp);
403 size_t num_facets = ZOOM_resultset_facets_size(
m_resultset);
407 Z_FacetList *fl = (Z_FacetList *) odr_malloc(odr,
sizeof(*fl));
408 fl->elements = (Z_FacetField **)
409 odr_malloc(odr, num_facets *
sizeof(*fl->elements));
410 for (i = 0; i < num_facets; i++)
412 ZOOM_facet_field ff =
413 ZOOM_resultset_get_facet_field_by_index(
m_resultset, i);
416 Z_AttributeList *al = (Z_AttributeList *)
417 odr_malloc(odr,
sizeof(*al));
418 al->num_attributes = 1;
419 al->attributes = (Z_AttributeElement **)
420 odr_malloc(odr,
sizeof(*al->attributes));
421 Z_AttributeElement *ae = al->attributes[0] = (Z_AttributeElement *)
422 odr_malloc(odr,
sizeof(**al->attributes));
423 ae->attributeSet = 0;
424 ae->attributeType = odr_intdup(odr, 1);
425 ae->which = Z_AttributeValue_complex;
426 ae->value.complex = (Z_ComplexAttribute *)
427 odr_malloc(odr,
sizeof(*ae->value.complex));
428 ae->value.complex->num_list = 1;
429 ae->value.complex->list = (Z_StringOrNumeric **)
430 odr_malloc(odr,
sizeof(**ae->value.complex->list));
431 ae->value.complex->list[0] = (Z_StringOrNumeric *)
432 odr_malloc(odr,
sizeof(**ae->value.complex->list));
433 ae->value.complex->list[0]->which = Z_StringOrNumeric_string;
434 ae->value.complex->list[0]->u.string =
435 odr_strdup(odr, ZOOM_facet_field_name(ff));
436 ae->value.complex->num_semanticAction = 0;
437 ae->value.complex->semanticAction = 0;
439 int num_terms = ZOOM_facet_field_term_count(ff);
440 fl->elements[i] = (Z_FacetField *)
441 odr_malloc(odr,
sizeof(Z_FacetField));
442 fl->elements[i]->attributes = al;
443 fl->elements[i]->num_terms = num_terms;
444 fl->elements[i]->terms = (Z_FacetTerm **)
445 odr_malloc(odr, num_terms *
sizeof(Z_FacetTerm *));
447 for (j = 0; j < num_terms; j++)
450 const char *a_term = ZOOM_facet_field_get_term(ff, j, &freq);
451 Z_FacetTerm *ft = (Z_FacetTerm *) odr_malloc(odr,
sizeof(*ft));
452 ft->term = z_Term_create(odr, Z_Term_general, a_term,
454 ft->count = odr_intdup(odr, freq);
456 fl->elements[i]->terms[j] = ft;