1 //uchime by Robert C. Edgar http://drive5.com/uchime This code is donated to the public domain.
11 static float *g_DPBuffer1;
12 static float *g_DPBuffer2;
14 static unsigned g_CacheLB;
16 void AllocBit(unsigned LA, unsigned LB)
18 g_Mx_TBBit.Alloc("TBBit", LA+1, LB+1);
19 g_TBBit = g_Mx_TBBit.GetData();
22 MYFREE(g_DPBuffer1, g_CacheLB, AllocBit);
23 MYFREE(g_DPBuffer2, g_CacheLB, AllocBit);
28 //g_DPBuffer1 = myalloc<float>(g_CacheLB+3);
29 //g_DPBuffer2 = myalloc<float>(g_CacheLB+3);
30 g_DPBuffer1 = MYALLOC(float, g_CacheLB+3, AllocBit);
31 g_DPBuffer2 = MYALLOC(float, g_CacheLB+3, AllocBit);
32 g_DPRow1 = g_DPBuffer1 + 1;
33 g_DPRow2 = g_DPBuffer2 + 1;
37 void TraceBackBit(unsigned LA, unsigned LB, char State, PathData &PD)
41 StartTimer(TraceBackBit);
42 char *PathPtr = PD.Back;
49 Log("TraceBackBit\n");
57 Log("i=%3d j=%3d state=%c\n", (int) i, (int) j, State);
69 asserta(i > 0 && j > 0);
73 else if (t & TRACEBITS_IM)
101 Die("TraceBackBit, invalid state %c", State);
105 EndTimer(TraceBackBit);
108 void TraceBackBitSW(unsigned LA, unsigned LB, unsigned Besti, unsigned Bestj,
109 unsigned &Leni, unsigned &Lenj, PathData &PD)
113 StartTimer(TraceBackBitSW);
114 char *PathPtr = PD.Back;
121 Log("TraceBackBitSW\n");
130 Log("i=%3d j=%3d state=%c\n", (int) i, (int) j, State);
139 asserta(i > 0 && j > 0);
141 if (t & TRACEBITS_DM)
143 else if (t & TRACEBITS_IM)
145 else if (t & TRACEBITS_SM)
147 Leni = Besti - i + 1;
148 Lenj = Bestj - j + 1;
150 EndTimer(TraceBackBitSW);
161 if (t & TRACEBITS_MD)
171 if (t & TRACEBITS_MI)
179 Die("TraceBackBitSW, invalid state %c", State);