summaryrefslogtreecommitdiff
path: root/algo/blast/core/gapinfo.c
blob: 4397a56df8f3debac93f85719c18414f43ac61ff (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
/* $Id: gapinfo.c,v 1.7 2003/08/11 15:02:00 dondosha Exp $
* ===========================================================================
*
*                            PUBLIC DOMAIN NOTICE
*               National Center for Biotechnology Information
*
*  This software/database is a "United States Government Work" under the
*  terms of the United States Copyright Act.  It was written as part of
*  the author's offical duties as a United States Government employee and
*  thus cannot be copyrighted.  This software/database is freely available
*  to the public for use. The National Library of Medicine and the U.S.
*  Government have not placed any restriction on its use or reproduction.
*
*  Although all reasonable efforts have been taken to ensure the accuracy
*  and reliability of the software and data, the NLM and the U.S.
*  Government do not and cannot warrant the performance or results that
*  may be obtained by using this software or data. The NLM and the U.S.
*  Government disclaim all warranties, express or implied, including
*  warranties of performance, merchantability or fitness for any particular
*  purpose.
*
*  Please cite the author in any work or product based on this material.
*
* ===========================================================================*/

/*****************************************************************************

File name: gapinfo.c

Author: Ilya Dondoshansky

Contents: Initialization and freeing of structures for gapped alignment

******************************************************************************
 * $Revision: 1.7 $
 * */

static char const rcsid[] = "$Id: gapinfo.c,v 1.7 2003/08/11 15:02:00 dondosha Exp $";

#include <algo/blast/core/gapinfo.h>

GapStateArrayStruct* 
GapStateFree(GapStateArrayStruct* state_struct)

{
	GapStateArrayStruct* next;

	while (state_struct)
	{
		next = state_struct->next;
		sfree(state_struct->state_array);
		sfree(state_struct);
		state_struct = next;
		
	}

	return NULL;
}

/*
	Allocates an EditScriptPtr and puts it on the end of
	the chain of EditScriptPtr's.  Returns a pointer to the
	new one.

*/
GapEditScript* 
GapEditScriptNew(GapEditScript* old)

{
	GapEditScript* new;

	new = (GapEditScript*) calloc(1, sizeof(GapEditScript));

	if (old == NULL)
		return new;

	while (old->next != NULL)
	{
		old = old->next;
	}

	old->next = new;

	return new;
}

GapEditScript*
GapEditScriptDelete(GapEditScript* old)
{
	GapEditScript* next;

	while (old)
	{
		next = old->next;
		sfree(old);
		old = next;
	}
	return old;
}

GapEditBlock*
GapEditBlockNew(Int4 start1, Int4 start2)

{
	GapEditBlock* edit_block;

	edit_block = (GapEditBlock*) calloc(1, sizeof(GapEditBlock));
	edit_block->start1 = start1;
	edit_block->start2 = start2;

	return edit_block;
}

GapEditBlock*
GapEditBlockDelete(GapEditBlock* edit_block)

{
	if (edit_block == NULL)
		return NULL;

	edit_block->esp = GapEditScriptDelete(edit_block->esp);

	sfree(edit_block);

	return edit_block;
}