1 /* @include ensprojectionsegment **********************************************
2 **
3 ** Ensembl Projection Segment functions
4 **
5 ** @author Copyright (C) 1999 Ensembl Developers
6 ** @author Copyright (C) 2006 Michael K. Schuster
7 ** @version $Revision: 1.9 $
8 ** @modified 2009 by Alan Bleasby for incorporation into EMBOSS core
9 ** @modified $Date: 2012/02/04 10:30:24 $ by $Author: mks $
10 ** @@
11 **
12 ** This library is free software; you can redistribute it and/or
13 ** modify it under the terms of the GNU Lesser General Public
14 ** License as published by the Free Software Foundation; either
15 ** version 2.1 of the License, or (at your option) any later version.
16 **
17 ** This library is distributed in the hope that it will be useful,
18 ** but WITHOUT ANY WARRANTY; without even the implied warranty of
19 ** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
20 ** Lesser General Public License for more details.
21 **
22 ** You should have received a copy of the GNU Lesser General Public
23 ** License along with this library; if not, write to the Free Software
24 ** Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
25 ** MA  02110-1301,  USA.
26 **
27 ******************************************************************************/
28 
29 #ifndef ENSPROJECTIONSEGMENT_H
30 #define ENSPROJECTIONSEGMENT_H
31 
32 /* ========================================================================= */
33 /* ============================= include files ============================= */
34 /* ========================================================================= */
35 
36 #include "ensslice.h"
37 
38 AJ_BEGIN_DECLS
39 
40 
41 
42 
43 /* ========================================================================= */
44 /* =============================== constants =============================== */
45 /* ========================================================================= */
46 
47 
48 
49 
50 /* ========================================================================= */
51 /* ============================== public data ============================== */
52 /* ========================================================================= */
53 
54 /* @data EnsPProjectionsegment ************************************************
55 **
56 ** Ensembl Projection Segment
57 **
58 ** @alias EnsSProjectionsegment
59 ** @alias EnsOProjectionsegment
60 **
61 ** @attr SourceStart [ajuint] Source start coordinate
62 ** @attr SourceEnd [ajuint] Source end coordinate
63 ** @attr TargetSlice [EnsPSlice] Target Ensembl Slice
64 ** @attr Use [ajuint] Use counter
65 ** @attr Padding [ajuint] Padding to alignment boundary
66 ** @@
67 ******************************************************************************/
68 
69 typedef struct EnsSProjectionsegment
70 {
71     ajuint SourceStart;
72     ajuint SourceEnd;
73     EnsPSlice TargetSlice;
74     ajuint Use;
75     ajuint Padding;
76 } EnsOProjectionsegment;
77 
78 #define EnsPProjectionsegment EnsOProjectionsegment*
79 
80 
81 
82 
83 /* ========================================================================= */
84 /* =========================== public functions ============================ */
85 /* ========================================================================= */
86 
87 /*
88 ** Prototype definitions
89 */
90 
91 EnsPProjectionsegment ensProjectionsegmentNewCpy(
92     const EnsPProjectionsegment ps);
93 
94 EnsPProjectionsegment ensProjectionsegmentNewIni(ajuint srcstart,
95                                                  ajuint srcend,
96                                                  EnsPSlice trgslice);
97 
98 EnsPProjectionsegment ensProjectionsegmentNewRef(EnsPProjectionsegment ps);
99 
100 void ensProjectionsegmentDel(EnsPProjectionsegment *Pps);
101 
102 ajuint ensProjectionsegmentGetSourceStart(const EnsPProjectionsegment ps);
103 
104 ajuint ensProjectionsegmentGetSourceEnd(const EnsPProjectionsegment ps);
105 
106 EnsPSlice ensProjectionsegmentGetTargetSlice(const EnsPProjectionsegment ps);
107 
108 AjBool ensProjectionsegmentTrace(const EnsPProjectionsegment ps, ajuint level);
109 
110 size_t ensProjectionsegmentCalculateMemsize(const EnsPProjectionsegment ps);
111 
112 /*
113 ** End of prototype definitions
114 */
115 
116 
117 
118 
119 AJ_END_DECLS
120 
121 #endif /* !ENSPROJECTIONSEGMENT_H */
122