/* Copyright (C) 2006, Index Data ApS
* See the file LICENSE for details.
*
- * $Id: nfa.c,v 1.9 2006-05-10 13:58:46 heikki Exp $
+ * $Id: nfa.c,v 1.12 2006-07-14 13:06:38 heikki Exp $
*/
/**
}
void yaz_nfa_destroy(yaz_nfa *n) {
- nmem_destroy(n->nmem);
+ if (n && n->nmem)
+ nmem_destroy(n->nmem);
}
yaz_nfa_char *string,
size_t length){
yaz_nfa_converter *c;
- int i;
+ size_t i;
c=create_null_converter(n);
c->type=conv_string;
c->string=nmem_malloc(n->nmem, length*sizeof(yaz_nfa_char));
nmem_malloc(n->nmem, from_len*sizeof(yaz_nfa_char));
yaz_nfa_char *to_buf=
nmem_malloc(n->nmem, to_len*sizeof(yaz_nfa_char));
- int i;
+ size_t i;
for (i=0;i<from_len;i++)
from_buf[i]=from_string[i];
for (i=0;i<to_len;i++)
}
}
+static char buf[5000]="";
+char *yaz_nfa_dump_converter(void *conv)
+{
+ char onebuf[500]="";
+ yaz_nfa_converter *c=conv;
+ yaz_nfa_char *cp;
+ size_t len;
+ *buf=0;
+ while (c) {
+ switch(c->type) {
+ case conv_none:
+ sprintf(onebuf,"(none)" );
+ break;
+ case conv_string:
+ sprintf(onebuf,"(string '" );
+ strcat(buf,onebuf);
+ cp=c->string;
+ len=c->strlen;
+ while (len--) {
+ onebuf[0]=*cp++;
+ onebuf[1]=0;
+ strcat(buf,onebuf);
+ }
+ strcat(buf,"')");
+ onebuf[0]=0;
+ break;
+ case conv_backref:
+ sprintf(onebuf,"(backref %d) ",c->backref_no);
+ break;
+ case conv_range:
+ sprintf(onebuf,"(range %d) ",c->char_diff);
+ break;
+ }
+ strcat(buf,onebuf);
+ c=c->next;
+ } /* while */
+ return buf;
+}
+
/*
* Local variables: