1 #pragma once
2 
3 
4 #define OVER_C             8
5 #define ADJACENT_PAIRS    1
6 #define CORR_IN_1_AND_2   2
7 #define ALL_IN_1_AND_2    3
8 #define NO_PAIRING        4
9 #define ALL_IN_FIRST      5
10 #define TREE1             8
11 #define TREE2             9
12 
13 #define FULL_MATRIX       11
14 #define VERBOSE           22
15 #define SPARSE            33
16 
17 /* Number of columns per block in a matrix output */
18 #define COLUMNS_PER_BLOCK 10
19     extern int tree_pairing;
20 
21     extern Phylip_Char outfilename[FNMLNGTH], intreename[FNMLNGTH], intree2name[FNMLNGTH], outtreename[FNMLNGTH];
22     extern node *root;
23 
24     extern long numopts, outgrno_cons, col, setsz;
25     extern long maxgrp;               /* max. no. of groups in all trees found  */
26 
27     extern boolean trout, firsttree, noroot, outgropt_cons, didreroot, prntsets,
28         treeprint_cons, goteof, strict, mr, mre,
29         ml; /* initialized all false for Treedist */
30     extern boolean progress;
31     extern pointarray nodep_cons;
32     extern pointarray treenode;
33     extern group_type **grouping, **grping2, **group2;/* to store groups found  */
34     extern double *lengths, *lengths2;
35     extern long **order, **order2, lasti;
36     extern group_type *fullset;
37     extern node *grbg;
38     extern long tipy;
39 
40     extern double **timesseen, **tmseen2, **times2 ;
41     extern double *tchange2;
42     extern double trweight, ntrees, mlfrac;
43 
44 typedef struct pattern_elm {
45   group_type *apattern;
46   long *patternsize;
47   double *length;
48 } pattern_elm;
49 
50 #define NUM_BUCKETS 100
51 
52 typedef struct namenode {
53     struct namenode *next;
54     plotstring naym;
55     int hitCount;
56 } namenode;
57 
58 typedef namenode **hashtype;
59 
60 extern hashtype hashp;
61 
62 
63 
64 long namesGetBucket(plotstring);
65 void namesAdd(plotstring);
66 boolean namesSearch(plotstring);
67 void namesDelete(plotstring);
68 void namesClearTable(void);
69 void namesCheckTable(void);
70 void missingnameRecurs(node *p);
71 
72 
73 #ifndef OLDC
74 /* function prototypes */
75 void consens_starter(const char* filename, double fraction, bool _strict, bool _mre, bool _mr, bool _m1);
76 void consens_free_res();
77 
78 void initconsnode(node **, node **, node *, long, long, long *, long *,
79                   initops, pointarray, pointarray, Phylip_Char *, Phylip_Char *, FILE *);
80 void   compress(long *);
81 void   sort(long);
82 void   eliminate(long *, long *);
83 void   printset(long);
84 void   bigsubset(group_type *, long);
85 void   recontraverse(node **, group_type *, long, long *);
86 void   reconstruct(long);
87 void   coordinates(node *, long *);
88 void   drawline(long i);
89 
90 void   printree(void);
91 void   consensus(pattern_elm ***, long);
92 void   rehash(void);
93 void   enternodeset(node *r);
94 void   accumulate(node *);
95 void   dupname2(Phylip_Char *, node *, node *);
96 void   dupname(node *);
97 void   missingname(node *);
98 void   gdispose(node *);
99 void   initreenode(node *);
100 void   reroot(node *, long *);
101 
102 void   store_pattern (pattern_elm ***, int);
103 boolean samename(naym, plotstring);
104 void   reordertips(void);
105 void   read_groups (pattern_elm ****, long, long, FILE *);
106 void   clean_up_final(void);
107 /* function prototypes */
108 #endif
109 
110 extern long setsz;
111 
112 
113