ccl_assert(p);
p->kind = kind;
- switch(kind)
+ switch (kind)
{
case CCL_RPN_TERM:
p->u.t.attr_list = 0;
static int is_term_ok(int look, int *list)
{
- for (;*list >= 0; list++)
+ for (; *list >= 0; list++)
if (look == *list)
return 1;
return 0;
static struct ccl_rpn_attr *add_attr_node(struct ccl_rpn_node *p,
const char *set, int type)
{
- struct ccl_rpn_attr *n;
-
- n = (struct ccl_rpn_attr *)xmalloc(sizeof(*n));
+ struct ccl_rpn_attr *n = (struct ccl_rpn_attr *) xmalloc(sizeof(*n));
ccl_assert(n);
if (set)
n->set = xstrdup(set);
n->type = type;
n->next = p->u.t.attr_list;
p->u.t.attr_list = n;
-
return n;
}
void ccl_add_attr_numeric(struct ccl_rpn_node *p, const char *set,
int type, int value)
{
- struct ccl_rpn_attr *n;
-
- n = add_attr_node(p, set, type);
+ struct ccl_rpn_attr *n = add_attr_node(p, set, type);
n->kind = CCL_RPN_ATTR_NUMERIC;
n->value.numeric = value;
}
void ccl_add_attr_string(struct ccl_rpn_node *p, const char *set,
int type, char *value)
{
- struct ccl_rpn_attr *n;
-
- n = add_attr_node(p, set, type);
+ struct ccl_rpn_attr *n = add_attr_node(p, set, type);
n->kind = CCL_RPN_ATTR_STRING;
n->value.str = xstrdup(value);
}
struct ccl_rpn_attr *attr_use,
ccl_qualifier_t *qa,
size_t no, int term_len,
- const char **truncation_aliases,
- const char **mask_aliases,
int is_phrase,
- int is_ccl_masked,
int auto_group)
{
struct ccl_rpn_node *p;
int right_trunc = 0;
int regex_trunc = 0;
int z3958_trunc = 0;
+ int is_ccl_masked = 0;
char *attset;
struct ccl_token *lookahead = cclp->look_token;
+ const char **truncation_aliases;
+ const char *t_default[2];
+ const char **mask_aliases;
+ const char *m_default[2];
+
+ truncation_aliases =
+ ccl_qual_search_special(cclp->bibset, "truncation");
+ if (!truncation_aliases)
+ {
+ truncation_aliases = t_default;
+ t_default[0] = "?";
+ t_default[1] = 0;
+ }
+ mask_aliases =
+ ccl_qual_search_special(cclp->bibset, "mask");
+ if (!mask_aliases)
+ {
+ mask_aliases = m_default;
+ m_default[0] = "#";
+ m_default[1] = 0;
+ }
+ for (i = 0; i < no; i++)
+ {
+ if (has_ccl_masking(lookahead->name, lookahead->len,
+ truncation_aliases,
+ mask_aliases))
+ is_ccl_masked = 1;
+ lookahead = lookahead->next;
+ }
+ lookahead = cclp->look_token;
p = ccl_rpn_node_create(CCL_RPN_TERM);
p->u.t.attr_list = NULL;
int and_list = 0;
int auto_group = 0;
int or_list = 0;
- const char **truncation_aliases;
- const char *t_default[2];
- const char **mask_aliases;
- const char *m_default[2];
-
- truncation_aliases =
- ccl_qual_search_special(cclp->bibset, "truncation");
- if (!truncation_aliases)
- {
- truncation_aliases = t_default;
- t_default[0] = "?";
- t_default[1] = 0;
- }
-
- mask_aliases =
- ccl_qual_search_special(cclp->bibset, "mask");
- if (!mask_aliases)
- {
- mask_aliases = m_default;
- m_default[0] = "#";
- m_default[1] = 0;
- }
-
if (qual_val_type(qa, CCL_BIB1_STR, CCL_BIB1_STR_AND_LIST, 0))
and_list = 1;
size_t no, i;
int len = 0;
int is_phrase = 0;
- int is_ccl_masked = 0;
size_t max = 200;
if (and_list || or_list || !multi)
max = 1;
for (i = 0; i<lookahead->len; i++)
if (lookahead->name[i] == ' ')
this_is_phrase = 1;
-
- if (has_ccl_masking(lookahead->name, lookahead->len,
- truncation_aliases,
- mask_aliases))
- is_ccl_masked = 1;
-
if (auto_group)
{
if (no > 0 && (is_phrase || is_phrase != this_is_phrase))
{
struct ccl_rpn_node *tmp2;
tmp2 = ccl_term_one_use(cclp, attr, qa, no, len,
- truncation_aliases, mask_aliases,
- is_phrase, is_ccl_masked,
- auto_group);
+ is_phrase, auto_group);
if (!tmp2)
{
ccl_rpn_delete(p);
}
}
if (!p)
- {
p = ccl_term_one_use(cclp, 0 /* attr: no use */, qa, no, len,
- truncation_aliases, mask_aliases,
- is_phrase, is_ccl_masked, auto_group);
- if (!p)
- return 0;
- }
+ is_phrase, auto_group);
for (i = 0; i < no; i++)
ADVANCE;
+ if (!p)
+ return 0;
/* make the top node point to us.. */
if (p_top)
{
}
-
static
struct ccl_rpn_node *qualifiers_order(CCL_parser cclp,
ccl_qualifier_t *ap, char *attset)