| 1 | |
|---|
| 2 | /* version 3.6. (c) Copyright 1993-2000 by the University of Washington. |
|---|
| 3 | Written by Joseph Felsenstein, Akiko Fuseki, Sean Lamont, and Andrew Keeffe. |
|---|
| 4 | Permission is granted to copy and use this program provided no fee is |
|---|
| 5 | charged for it and provided that this copyright notice is not removed. */ |
|---|
| 6 | |
|---|
| 7 | /* |
|---|
| 8 | disc.h: included in mix, move, penny, dollop, dolmove, dolpenny, |
|---|
| 9 | & clique |
|---|
| 10 | */ |
|---|
| 11 | |
|---|
| 12 | |
|---|
| 13 | /* node and pointptr used in Dollop, Dolmove, Dolpenny, Move, & Clique */ |
|---|
| 14 | |
|---|
| 15 | typedef node **pointptr; |
|---|
| 16 | |
|---|
| 17 | /* node and pointptr used in Mix & Penny */ |
|---|
| 18 | |
|---|
| 19 | typedef struct node2 { /* describes a tip species or an ancestor */ |
|---|
| 20 | struct node2 *next, *back; |
|---|
| 21 | long index; |
|---|
| 22 | boolean tip, bottom,visited;/* present species are tips of tree */ |
|---|
| 23 | bitptr fulstte1, fulstte0; /* see in PROCEDURE fillin */ |
|---|
| 24 | bitptr empstte1, empstte0; /* see in PROCEDURE fillin */ |
|---|
| 25 | bitptr fulsteps,empsteps; |
|---|
| 26 | long xcoord, ycoord, ymin; /* used by printree */ |
|---|
| 27 | long ymax; |
|---|
| 28 | } node2; |
|---|
| 29 | |
|---|
| 30 | typedef node2 **pointptr2; |
|---|
| 31 | |
|---|
| 32 | typedef struct gbit { |
|---|
| 33 | bitptr bits_; |
|---|
| 34 | struct gbit *next; |
|---|
| 35 | } gbit; |
|---|
| 36 | |
|---|
| 37 | typedef struct htrav_vars { |
|---|
| 38 | node *r; |
|---|
| 39 | boolean bottom, nonzero; |
|---|
| 40 | gbit *zerobelow, *onebelow; |
|---|
| 41 | } htrav_vars; |
|---|
| 42 | |
|---|
| 43 | typedef struct htrav_vars2 { |
|---|
| 44 | node2 *r; |
|---|
| 45 | boolean bottom, maybe, nonzero; |
|---|
| 46 | gbit *zerobelow, *onebelow; |
|---|
| 47 | } htrav_vars2; |
|---|
| 48 | |
|---|
| 49 | |
|---|
| 50 | extern long chars, nonodes, nextree, which; |
|---|
| 51 | /* nonodes = number of nodes in tree * |
|---|
| 52 | * chars = number of binary characters */ |
|---|
| 53 | extern steptr weight, extras; |
|---|
| 54 | extern boolean printdata; |
|---|
| 55 | |
|---|
| 56 | #ifndef OLDC |
|---|
| 57 | /*function prototypes*/ |
|---|
| 58 | void inputdata(pointptr, boolean, boolean, FILE *); |
|---|
| 59 | void inputdata2(pointptr2); |
|---|
| 60 | void alloctree(pointptr *); |
|---|
| 61 | void alloctree2(pointptr2 *); |
|---|
| 62 | void setuptree(pointptr); |
|---|
| 63 | void setuptree2(pointptr2); |
|---|
| 64 | void inputancestors(boolean *, boolean *); |
|---|
| 65 | void inputancestorsnew(boolean *, boolean *); |
|---|
| 66 | void printancestors(FILE *, boolean *, boolean *); |
|---|
| 67 | void add(node *, node *, node *, node **, pointptr); |
|---|
| 68 | void add2(node *, node *, node *, node **, boolean, boolean, pointptr); |
|---|
| 69 | |
|---|
| 70 | void add3(node2 *, node2 *, node2 *, node2 **, pointptr2); |
|---|
| 71 | void re_move(node **, node **, node **, pointptr); |
|---|
| 72 | void re_move2(node **, node **, node **, boolean *, pointptr); |
|---|
| 73 | void re_move3(node2 **, node2 **, node2 **, pointptr2); |
|---|
| 74 | void coordinates(node *, long *, double , long *); |
|---|
| 75 | void coordinates2(node2 *, long *); |
|---|
| 76 | void treeout(node *, long, long *, node *); |
|---|
| 77 | void treeout2(node2 *, long *, node2 *); |
|---|
| 78 | void standev(long, long, double, double *, double **, longer); |
|---|
| 79 | void guesstates(Char *); |
|---|
| 80 | |
|---|
| 81 | void freegarbage(gbit **); |
|---|
| 82 | void disc_gnu(gbit **, gbit **); |
|---|
| 83 | void disc_chuck(gbit *, gbit **); |
|---|
| 84 | /*function prototypes*/ |
|---|
| 85 | #endif |
|---|