40#define CISERR() VISERR(cm->v)
41#define CERR(e) VERR(cm->v, (e))
139 int middle = low + (high - low) / 2;
144 else if (
c > cmr->cmax)
202 else if (cm->
max < cm->
ncds - 1)
205 cd = &cm->
cd[cm->
max];
240 cd = &cm->
cd[cm->
max];
274 if ((
size_t) co == cm->
max)
279 while ((
size_t) cm->
free > cm->
max)
285 nco = cm->
cd[pco].
sub;
287 if ((
size_t) nco > cm->
max)
290 nco = cm->
cd[nco].
sub;
291 cm->
cd[pco].
sub = nco;
297 nco = cm->
cd[pco].
sub;
394 sco = cm->
cd[co].
sub;
406 cm->
cd[co].
sub = sco;
407 cm->
cd[sco].
sub = sco;
440 if (newarray == NULL)
483 if (newarray == NULL)
502 newrowptr[
c] = newrowptr2[
c] = co;
558 if (sco != lastsubcolor)
603 if (sco != lastsubcolor)
643 if (sco != *lastsubcolor)
657 if (newranges == NULL)
665 for (oldrange = cm->
cmranges, oldrangen = 0;
667 oldrange++, oldrangen++)
669 if (oldrange->
cmax >= ch)
671 newranges[numnewranges++] = *oldrange;
678 newranges[numnewranges].
cmin = ch;
679 newranges[numnewranges].
cmax = ch;
684 else if (oldrange->
cmin == oldrange->
cmax)
687 newranges[numnewranges++] = *oldrange;
688 newrow = oldrange->
rownum;
690 oldrange++, oldrangen++;
695 if (ch > oldrange->
cmin)
698 newranges[numnewranges].
cmin = oldrange->
cmin;
699 newranges[numnewranges].
cmax = ch - 1;
704 newranges[numnewranges].
cmin = ch;
705 newranges[numnewranges].
cmax = ch;
706 newranges[numnewranges].
rownum = newrow =
709 if (ch < oldrange->cmax)
712 newranges[numnewranges].
cmin = ch + 1;
713 newranges[numnewranges].
cmax = oldrange->
cmax;
715 newranges[numnewranges].
rownum =
721 oldrange++, oldrangen++;
728 for (; oldrangen < cm->
numcmranges; oldrange++, oldrangen++)
730 newranges[numnewranges++] = *oldrange;
771 if (newranges == NULL)
779 for (oldrange = cm->
cmranges, oldrangen = 0;
781 oldrange++, oldrangen++)
783 if (oldrange->
cmax >= from)
785 newranges[numnewranges++] = *oldrange;
795 if (from < oldrange->cmin)
798 newranges[numnewranges].
cmin = from;
799 newranges[numnewranges].
cmax = oldrange->
cmin - 1;
806 from = oldrange->
cmin;
809 if (from <= oldrange->cmin && to >= oldrange->
cmax)
812 newranges[numnewranges++] = *oldrange;
813 newrow = oldrange->
rownum;
814 from = oldrange->
cmax + 1;
819 if (from > oldrange->
cmin)
822 newranges[numnewranges].
cmin = oldrange->
cmin;
823 newranges[numnewranges].
cmax = from - 1;
828 newranges[numnewranges].
cmin = from;
829 newranges[numnewranges].
cmax =
830 (to < oldrange->
cmax) ? to : oldrange->
cmax;
831 newranges[numnewranges].
rownum = newrow =
834 if (to < oldrange->cmax)
837 newranges[numnewranges].
cmin = to + 1;
838 newranges[numnewranges].
cmax = oldrange->
cmax;
840 newranges[numnewranges].
rownum =
845 from = oldrange->
cmax + 1;
850 oldrange++, oldrangen++;
856 newranges[numnewranges].
cmin = from;
857 newranges[numnewranges].
cmax = to;
866 for (; oldrangen < cm->
numcmranges; oldrange++, oldrangen++)
868 newranges[numnewranges++] = *oldrange;
903 if (sco != *lastsubcolor)
926 for (cd = cm->
cd,
co = 0; cd < end; cd++,
co++)
954 while ((
a = cd->
arcs) != NULL)
971 for (
a = cd->
arcs;
a != NULL;
a =
a->colorchain)
990 if (cd->
arcs != NULL)
992 a->colorchain = cd->
arcs;
993 a->colorchainRev = NULL;
1005 struct arc *aa =
a->colorchainRev;
1011 cd->
arcs =
a->colorchain;
1018 if (
a->colorchain != NULL)
1019 a->colorchain->colorchainRev = aa;
1020 a->colorchain = NULL;
1021 a->colorchainRev = NULL;
1049 for (cd = cm->
cd, co = 0; cd < end && !
CISERR(); cd++, co++)
1093 for (
a = of->
outs;
a != NULL;
a =
a->outchain)
1098 cd = &cm->
cd[
a->co];
1111 for (cd = cm->
cd,
co = 0; cd < end && !
CISERR(); cd++,
co++)
1114 cd->
flags &= ~COLMARK;
1137 for (cd = cm->
cd + 1, co = 1; cd < end; cd++, co++)
1143 fprintf(f,
"#%2ld(ps): ", (
long) co);
1161 const color *rowptr;
1178 fprintf(f,
"\t%ld", (
long) rowptr[
c]);
1196 else if (
c >
' ' &&
c <=
'~')
#define fprintf(file, fmt, msg)
static void subcoloronechr(struct vars *v, chr ch, struct state *lp, struct state *rp, color *lastsubcolor)
static int newhicolorrow(struct colormap *cm, int oldrow)
static void subcolorcvec(struct vars *v, struct cvec *cv, struct state *lp, struct state *rp)
static void freecolor(struct colormap *cm, color co)
static void newhicolorcols(struct colormap *cm)
static color newcolor(struct colormap *cm)
static color subcolorhi(struct colormap *cm, color *pco)
static void colorchain(struct colormap *cm, struct arc *a)
static void freecm(struct colormap *cm)
static void uncolorchain(struct colormap *cm, struct arc *a)
static void okcolors(struct nfa *nfa, struct colormap *cm)
static color maxcolor(struct colormap *cm)
static void initcm(struct vars *v, struct colormap *cm)
static color pseudocolor(struct colormap *cm)
static color subcolor(struct colormap *cm, chr c)
static void rainbow(struct nfa *nfa, struct colormap *cm, int type, color but, struct state *from, struct state *to)
static void colorcomplement(struct nfa *nfa, struct colormap *cm, int type, struct state *of, struct state *from, struct state *to)
static void subcoloronerange(struct vars *v, chr from, chr to, struct state *lp, struct state *rp, color *lastsubcolor)
static void subcoloronerow(struct vars *v, int rownum, struct state *lp, struct state *rp, color *lastsubcolor)
static color newsub(struct colormap *cm, color co)
color pg_reg_getcolor(struct colormap *cm, chr c)
static int cclass_column_index(struct colormap *cm, chr c)
static struct arc * findarc(struct state *s, int type, color co)
static void newarc(struct nfa *nfa, int t, color co, struct state *from, struct state *to)
struct colormaprange colormaprange
struct arc * colorchainRev
int classbits[NUM_CCLASSES]
struct colordesc cdspace[NINLINECDS]