1 /* @include ensmiscellaneous **************************************************
2 **
3 ** Ensembl Miscellaneous functions
4 **
5 ** @author Copyright (C) 1999 Ensembl Developers
6 ** @author Copyright (C) 2006 Michael K. Schuster
7 ** @version $Revision: 1.24 $
8 ** @modified 2009 by Alan Bleasby for incorporation into EMBOSS core
9 ** @modified $Date: 2012/08/05 11:15:18 $ 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 ENSMISCELLANEOUS_H
30 #define ENSMISCELLANEOUS_H
31 
32 /* ========================================================================= */
33 /* ============================= include files ============================= */
34 /* ========================================================================= */
35 
36 #include "ensattribute.h"
37 #include "ensfeature.h"
38 
39 AJ_BEGIN_DECLS
40 
41 
42 
43 
44 /* ========================================================================= */
45 /* =============================== constants =============================== */
46 /* ========================================================================= */
47 
48 /* @const EnsPMiscellaneousfeatureadaptor *************************************
49 **
50 ** Ensembl Miscellaneous Feature Adaptor.
51 ** Defined as an alias in EnsPFeatureadaptor.
52 **
53 ** #alias EnsPFeatureadaptor
54 **
55 ** #cc Bio::EnsEMBL::DBSQL::MiscFeatureAdaptor
56 ** ##
57 ******************************************************************************/
58 
59 #define EnsPMiscellaneousfeatureadaptor EnsPFeatureadaptor
60 
61 
62 
63 
64 /* ========================================================================= */
65 /* ============================== public data ============================== */
66 /* ========================================================================= */
67 
68 /* @data EnsPMiscellaneoussetadaptor ******************************************
69 **
70 ** Ensembl Miscellaneous Set Adaptor.
71 **
72 ** @alias EnsSMiscellaneoussetadaptor
73 ** @alias EnsOMiscellaneoussetadaptor
74 **
75 ** @attr Adaptor [EnsPBaseadaptor] Ensembl Base Adaptor
76 ** @attr CacheByIdentifier [AjPTable] Identifier cache
77 ** @attr CacheByCode [AjPTable] Code cache
78 ** @@
79 ******************************************************************************/
80 
81 typedef struct EnsSMiscellaneoussetadaptor
82 {
83     EnsPBaseadaptor Adaptor;
84     AjPTable CacheByIdentifier;
85     AjPTable CacheByCode;
86 } EnsOMiscellaneoussetadaptor;
87 
88 #define EnsPMiscellaneoussetadaptor EnsOMiscellaneoussetadaptor*
89 
90 
91 
92 
93 /* @data EnsPMiscellaneousset *************************************************
94 **
95 ** Ensembl Miscellaneous Set.
96 **
97 ** @alias EnsSMiscellaneousset
98 ** @alias EnsOMiscellaneousset
99 **
100 ** @attr Use [ajuint] Use counter
101 ** @cc Bio::EnsEMBL::Storable
102 ** @attr Identifier [ajuint] SQL database-internal identifier
103 ** @attr Adaptor [EnsPMiscellaneoussetadaptor] Ensembl Miscellaneous
104 **                                             Set Adaptor
105 ** @cc Bio::EnsEMBL::MiscSet
106 ** @cc 'misc_set' SQL table
107 ** @attr Code [AjPStr] Code
108 ** @attr Name [AjPStr] Name
109 ** @attr Description [AjPStr] Description
110 ** @attr MaximumLength [ajuint] Maximum Feature length
111 ** @attr Padding [ajuint] Padding to alignment boundary
112 ** @@
113 ******************************************************************************/
114 
115 typedef struct EnsSMiscellaneousset
116 {
117     ajuint Use;
118     ajuint Identifier;
119     EnsPMiscellaneoussetadaptor Adaptor;
120     AjPStr Code;
121     AjPStr Name;
122     AjPStr Description;
123     ajuint MaximumLength;
124     ajuint Padding;
125 } EnsOMiscellaneousset;
126 
127 #define EnsPMiscellaneousset EnsOMiscellaneousset*
128 
129 
130 
131 
132 /* @data EnsPMiscellaneousfeature *********************************************
133 **
134 ** Ensembl Miscellaneous Feature.
135 **
136 ** @alias EnsSMiscellaneousfeature
137 ** @alias EnsOMiscellaneousfeature
138 **
139 ** @attr Use [ajuint] Use counter
140 ** @cc Bio::EnsEMBL::Storable
141 ** @attr Identifier [ajuint] SQL database-internal identifier
142 ** @attr Adaptor [EnsPMiscellaneousfeatureadaptor] Ensembl Miscellaneous
143 **                                                 Feature Adaptor
144 ** @cc Bio::EnsEMBL::Feature
145 ** @cc 'misc_feature' SQL table
146 ** @attr Feature [EnsPFeature] Ensembl Feature
147 ** @cc Bio::EnsEMBL::MiscFeature
148 ** @attr Attributes [AjPList] AJAX List of Ensembl Attribute objects
149 ** @attr Miscellaneoussets [AjPList] AJAX List of
150 ** Ensembl Miscellaneous Set objects
151 ** @@
152 ******************************************************************************/
153 
154 typedef struct EnsSMiscellaneousfeature
155 {
156     ajuint Use;
157     ajuint Identifier;
158     EnsPMiscellaneousfeatureadaptor Adaptor;
159     EnsPFeature Feature;
160     AjPList Attributes;
161     AjPList Miscellaneoussets;
162 } EnsOMiscellaneousfeature;
163 
164 #define EnsPMiscellaneousfeature EnsOMiscellaneousfeature*
165 
166 
167 
168 
169 /* ========================================================================= */
170 /* =========================== public functions ============================ */
171 /* ========================================================================= */
172 
173 /*
174 ** Prototype definitions
175 */
176 
177 /* Ensembl Miscellaneous Set */
178 
179 EnsPMiscellaneousset ensMiscellaneoussetNewCpy(
180     const EnsPMiscellaneousset ms);
181 
182 EnsPMiscellaneousset ensMiscellaneoussetNewIni(
183     EnsPMiscellaneoussetadaptor msa,
184     ajuint identifier,
185     AjPStr code,
186     AjPStr name,
187     AjPStr description,
188     ajuint maxlen);
189 
190 EnsPMiscellaneousset ensMiscellaneoussetNewRef(EnsPMiscellaneousset ms);
191 
192 void ensMiscellaneoussetDel(EnsPMiscellaneousset *Pms);
193 
194 EnsPMiscellaneoussetadaptor ensMiscellaneoussetGetAdaptor(
195     const EnsPMiscellaneousset ms);
196 
197 AjPStr ensMiscellaneoussetGetCode(const EnsPMiscellaneousset ms);
198 
199 AjPStr ensMiscellaneoussetGetDescription(const EnsPMiscellaneousset ms);
200 
201 ajuint ensMiscellaneoussetGetIdentifier(const EnsPMiscellaneousset ms);
202 
203 ajuint ensMiscellaneoussetGetMaximumlength(const EnsPMiscellaneousset ms);
204 
205 AjPStr ensMiscellaneoussetGetName(const EnsPMiscellaneousset ms);
206 
207 AjBool ensMiscellaneoussetSetAdaptor(EnsPMiscellaneousset ms,
208                                      EnsPMiscellaneoussetadaptor msa);
209 
210 AjBool ensMiscellaneoussetSetIdentifier(EnsPMiscellaneousset ms,
211                                         ajuint identifier);
212 
213 AjBool ensMiscellaneoussetSetCode(EnsPMiscellaneousset ms, AjPStr code);
214 
215 AjBool ensMiscellaneoussetSetName(EnsPMiscellaneousset ms, AjPStr name);
216 
217 AjBool ensMiscellaneoussetSetDescription(EnsPMiscellaneousset ms,
218                                          AjPStr description);
219 
220 AjBool ensMiscellaneoussetSetMaximumlength(EnsPMiscellaneousset ms,
221                                            ajuint maxlen);
222 
223 size_t ensMiscellaneoussetCalculateMemsize(const EnsPMiscellaneousset ms);
224 
225 AjBool ensMiscellaneoussetTrace(const EnsPMiscellaneousset ms, ajuint level);
226 
227 /* AJAX List of Ensembl Miscellaneous Set objects */
228 
229 AjBool ensListMiscellaneoussetSortIdentifierAscending(AjPList mss);
230 
231 AjBool ensListMiscellaneoussetSortIdentifierDescending(AjPList mss);
232 
233 /* Ensembl Miscellaneous Set Adaptor */
234 
235 EnsPMiscellaneoussetadaptor ensRegistryGetMiscellaneoussetadaptor(
236     EnsPDatabaseadaptor dba);
237 
238 EnsPMiscellaneoussetadaptor ensMiscellaneoussetadaptorNew(
239     EnsPDatabaseadaptor dba);
240 
241 void ensMiscellaneoussetadaptorDel(EnsPMiscellaneoussetadaptor *Pmsa);
242 
243 AjBool ensMiscellaneoussetadaptorCacheClear(
244     EnsPMiscellaneoussetadaptor msa);
245 
246 EnsPBaseadaptor ensMiscellaneoussetadaptorGetBaseadaptor(
247     EnsPMiscellaneoussetadaptor msa);
248 
249 EnsPDatabaseadaptor ensMiscellaneoussetadaptorGetDatabaseadaptor(
250     EnsPMiscellaneoussetadaptor msa);
251 
252 AjBool ensMiscellaneoussetadaptorFetchAll(
253     EnsPMiscellaneoussetadaptor msa,
254     AjPList mslist);
255 
256 AjBool ensMiscellaneoussetadaptorFetchByCode(
257     EnsPMiscellaneoussetadaptor msa,
258     const AjPStr code,
259     EnsPMiscellaneousset *Pms);
260 
261 AjBool ensMiscellaneoussetadaptorFetchByIdentifier(
262     EnsPMiscellaneoussetadaptor msa,
263     ajuint identifier,
264     EnsPMiscellaneousset *Pms);
265 
266 /* Ensembl Miscellaneous Feature */
267 
268 EnsPMiscellaneousfeature ensMiscellaneousfeatureNewCpy(
269     const EnsPMiscellaneousfeature mf);
270 
271 EnsPMiscellaneousfeature ensMiscellaneousfeatureNewIni(
272     EnsPMiscellaneousfeatureadaptor mfa,
273     ajuint identifier,
274     EnsPFeature feature);
275 
276 EnsPMiscellaneousfeature ensMiscellaneousfeatureNewRef(
277     EnsPMiscellaneousfeature mf);
278 
279 void ensMiscellaneousfeatureDel(EnsPMiscellaneousfeature *Pmf);
280 
281 EnsPMiscellaneousfeatureadaptor ensMiscellaneousfeatureGetAdaptor(
282     const EnsPMiscellaneousfeature mf);
283 
284 const AjPList ensMiscellaneousfeatureGetAttributes(
285     const EnsPMiscellaneousfeature mf);
286 
287 EnsPFeature ensMiscellaneousfeatureGetFeature(
288     const EnsPMiscellaneousfeature mf);
289 
290 ajuint ensMiscellaneousfeatureGetIdentifier(
291     const EnsPMiscellaneousfeature mf);
292 
293 const AjPList ensMiscellaneousfeatureGetMiscellaneoussets(
294     const EnsPMiscellaneousfeature mf);
295 
296 AjBool ensMiscellaneousfeatureSetAdaptor(
297     EnsPMiscellaneousfeature mf,
298     EnsPMiscellaneousfeatureadaptor mfa);
299 
300 AjBool ensMiscellaneousfeatureSetFeature(
301     EnsPMiscellaneousfeature mf,
302     EnsPFeature feature);
303 
304 AjBool ensMiscellaneousfeatureSetIdentifier(
305     EnsPMiscellaneousfeature mf,
306     ajuint identifier);
307 
308 AjBool ensMiscellaneousfeatureAddAttribute(
309     EnsPMiscellaneousfeature mf,
310     EnsPAttribute attribute);
311 
312 AjBool ensMiscellaneousfeatureAddMiscellaneousset(
313     EnsPMiscellaneousfeature mf,
314     EnsPMiscellaneousset ms);
315 
316 AjBool ensMiscellaneousfeatureTrace(const EnsPMiscellaneousfeature mf,
317                                     ajuint level);
318 
319 size_t ensMiscellaneousfeatureCalculateMemsize(
320     const EnsPMiscellaneousfeature mf);
321 
322 AjBool ensMiscellaneousfeatureFetchAllAttributes(
323     EnsPMiscellaneousfeature mf,
324     const AjPStr code,
325     AjPList attributes);
326 
327 AjBool ensMiscellaneousfeatureFetchAllMiscellaneoussets(
328     EnsPMiscellaneousfeature mf,
329     const AjPStr code,
330     AjPList mslist);
331 
332 /* AJAX List of Ensembl Miscellaneous Feature objects */
333 
334 AjBool ensListMiscellaneousfeatureSortEndAscending(AjPList mfs);
335 
336 AjBool ensListMiscellaneousfeatureSortEndDescending(AjPList mfs);
337 
338 AjBool ensListMiscellaneousfeatureSortIdentifierAscending(AjPList mfs);
339 
340 AjBool ensListMiscellaneousfeatureSortStartAscending(AjPList mfs);
341 
342 AjBool ensListMiscellaneousfeatureSortStartDescending(AjPList mfs);
343 
344 /* Ensembl Miscellaneous Feature Adaptor */
345 
346 EnsPMiscellaneousfeatureadaptor ensRegistryGetMiscellaneousfeatureadaptor(
347     EnsPDatabaseadaptor dba);
348 
349 EnsPMiscellaneousfeatureadaptor ensMiscellaneousfeatureadaptorNew(
350     EnsPDatabaseadaptor dba);
351 
352 void ensMiscellaneousfeatureadaptorDel(EnsPMiscellaneousfeatureadaptor *Pmfa);
353 
354 EnsPBaseadaptor ensMiscellaneousfeatureadaptorGetBaseadaptor(
355     EnsPMiscellaneousfeatureadaptor mfa);
356 
357 EnsPDatabaseadaptor ensMiscellaneousfeatureadaptorGetDatabaseadaptor(
358     EnsPMiscellaneousfeatureadaptor mfa);
359 
360 EnsPFeatureadaptor ensMiscellaneousfeatureadaptorGetFeatureadaptor(
361     EnsPMiscellaneousfeatureadaptor mfa);
362 
363 AjBool ensMiscellaneousfeatureadaptorFetchAllbySlicecodes(
364     EnsPMiscellaneousfeatureadaptor mfa,
365     EnsPSlice slice,
366     const AjPList codes,
367     AjPList mfs);
368 
369 AjBool ensMiscellaneousfeatureadaptorFetchAllbyAttributecodevalue(
370     EnsPMiscellaneousfeatureadaptor mfa,
371     const AjPStr code,
372     const AjPStr value,
373     AjPList mfs);
374 
375 AjBool ensMiscellaneousfeatureadaptorRetrieveAllIdentifiers(
376     EnsPMiscellaneousfeatureadaptor mfa,
377     AjPList identifiers);
378 
379 /*
380 ** End of prototype definitions
381 */
382 
383 
384 
385 
386 AJ_END_DECLS
387 
388 #endif /* !ENSMISCELLANEOUS_H */
389