1 /* @include ajrange *********************************************************** 2 ** 3 ** AJAX range functions 4 ** 5 ** @author Copyright (C) 1999 Alan Bleasby 6 ** @version $Revision: 1.24 $ 7 ** @modified Aug 21 ajb First version 8 ** @modified 7 Sept 1999 GWW - String range edit functions added 9 ** @modified 5 Nov 1999 GWW - store text after pairs of numbers 10 ** @modified $Date: 2011/10/18 14:23:40 $ by $Author: rice $ 11 ** @@ 12 ** 13 ** This library is free software; you can redistribute it and/or 14 ** modify it under the terms of the GNU Lesser General Public 15 ** License as published by the Free Software Foundation; either 16 ** version 2.1 of the License, or (at your option) any later version. 17 ** 18 ** This library is distributed in the hope that it will be useful, 19 ** but WITHOUT ANY WARRANTY; without even the implied warranty of 20 ** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 21 ** Lesser General Public License for more details. 22 ** 23 ** You should have received a copy of the GNU Lesser General Public 24 ** License along with this library; if not, write to the Free Software 25 ** Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, 26 ** MA 02110-1301, USA. 27 ** 28 ******************************************************************************/ 29 30 #ifndef AJRANGE_H 31 #define AJRANGE_H 32 33 /* ========================================================================= */ 34 /* ============================= include files ============================= */ 35 /* ========================================================================= */ 36 37 #include "ajdefine.h" 38 #include "ajseqdata.h" 39 #include "ajlist.h" 40 #include "ajtranslate.h" 41 42 AJ_BEGIN_DECLS 43 44 45 46 47 /* ========================================================================= */ 48 /* =============================== constants =============================== */ 49 /* ========================================================================= */ 50 51 52 53 54 /* ========================================================================= */ 55 /* ============================== public data ============================== */ 56 /* ========================================================================= */ 57 58 59 60 61 /* @data AjPRange ************************************************************* 62 ** 63 ** Data structure for AJAX sequence range specifications 64 ** 65 ** @alias AjORange 66 ** @alias AjSRange 67 ** 68 ** @attr start [ajuint*] From positions 69 ** @attr end [ajuint*] End positions 70 ** @attr text [AjPStr*] Associated text for each range 71 ** @attr n [ajuint] Number of ranges 72 ** @attr Padding [char[4]] Padding to alignment boundary 73 ** @@ 74 ******************************************************************************/ 75 76 typedef struct AjSRange 77 { 78 ajuint *start; 79 ajuint *end; 80 AjPStr *text; 81 ajuint n; 82 char Padding[4]; 83 } AjORange; 84 85 #define AjPRange AjORange* 86 87 88 89 90 /* ========================================================================= */ 91 /* =========================== public functions ============================ */ 92 /* ========================================================================= */ 93 94 95 96 97 /* 98 ** Prototype definitions 99 */ 100 101 AjBool ajRangeSetOffset(AjPRange thys, ajuint begin); 102 AjBool ajRangeElementSet(AjPRange thys, ajuint element, 103 ajuint start, ajuint end); 104 AjBool ajRangeIsWhole(const AjPRange thys, const AjPSeq s); 105 void ajRangeDel(AjPRange *thys); 106 AjPRange ajRangeNewI(ajuint n); 107 AjPRange ajRangeNewFilename(const AjPStr name); 108 AjPRange ajRangeNewFilenameLimits(const AjPStr name, 109 ajuint imin, ajuint imax, 110 ajuint minsize, ajuint size); 111 AjPRange ajRangeNewRange(const AjPRange src); 112 AjPRange ajRangeNewString(const AjPStr s); 113 AjPRange ajRangeNewStringLimits(const AjPStr str, ajuint imin, ajuint imax, 114 ajuint minsize, ajuint size); 115 ajuint ajRangeGetSize(const AjPRange thys); 116 AjBool ajRangeIsOrdered(const AjPRange thys); 117 ajuint ajRangeCountOverlaps(const AjPRange thys, ajuint pos, ajuint length); 118 ajuint ajRangeElementTypeOverlap(const AjPRange thys, ajuint element, 119 ajuint pos, ajuint length); 120 AjBool ajRangeSeqExtract(const AjPRange thys, AjPSeq seq); 121 AjPSeq ajRangeSeqExtractPep(const AjPRange thys, AjPSeq seq, 122 const AjPTrn trntable, ajint frame); 123 AjBool ajRangeSeqExtractList(const AjPRange thys, 124 const AjPSeq seq, AjPList outliststr); 125 AjBool ajRangeSeqMask(const AjPRange thys, 126 const AjPStr maskchar, AjPSeq seq); 127 AjBool ajRangeSeqStuff(const AjPRange thys, AjPSeq seq); 128 AjBool ajRangeSeqStuffPep(const AjPRange thys, AjPSeq seq, 129 ajint frame); 130 AjBool ajRangeSeqToLower(const AjPRange thys, AjPSeq seq); 131 AjBool ajRangeStrExtract(const AjPRange thys, 132 const AjPStr instr, AjPStr *outstr); 133 AjBool ajRangeStrExtractList(const AjPRange thys, 134 const AjPStr instr, AjPList outliststr); 135 AjBool ajRangeStrMask(const AjPRange thys, 136 const AjPStr maskchar, AjPStr *str); 137 AjBool ajRangeStrStuff(const AjPRange thys, 138 const AjPStr instr, AjPStr *outstr); 139 AjBool ajRangeStrToLower(const AjPRange thys, AjPStr *str); 140 AjBool ajRangeElementGetText(const AjPRange thys, ajuint element, 141 AjPStr * text); 142 AjBool ajRangeElementGetValues(const AjPRange thys, ajuint element, 143 ajuint *start, ajuint *end); 144 145 /* 146 ** End of prototype definitions 147 */ 148 149 150 151 152 #ifdef AJ_COMPILE_DEPRECATED_BOOK 153 #endif /* AJ_COMPILE_DEPRECATED_BOOK */ 154 155 #ifdef AJ_COMPILE_DEPRECATED 156 157 __deprecated AjPRange ajRangeCopy(const AjPRange src); 158 __deprecated AjPRange ajRangeGet(const AjPStr s); 159 __deprecated AjPRange ajRangeGetLimits(const AjPStr str, 160 ajuint imin, ajuint imax, 161 ajuint minsize, ajuint size); 162 __deprecated AjPRange ajRangeFile(const AjPStr name); 163 __deprecated AjPRange ajRangeFileLimits(const AjPStr name, 164 ajuint imin, ajuint imax, 165 ajuint minsize, ajuint size); 166 __deprecated ajuint ajRangeNumber(const AjPRange thys); 167 __deprecated AjBool ajRangeValues(const AjPRange thys, ajuint element, 168 ajuint *start, ajuint *end); 169 __deprecated AjBool ajRangeBegin(AjPRange thys, ajuint begin); 170 __deprecated AjBool ajRangeChange(AjPRange thys, ajuint element, 171 ajuint start, ajuint end); 172 __deprecated AjBool ajRangeText(const AjPRange thys, ajuint element, 173 AjPStr * text); 174 __deprecated ajuint ajRangeOverlaps(const AjPRange thys, 175 ajuint pos, ajuint length); 176 __deprecated ajuint ajRangeOverlapSingle(ajuint start, ajuint end, 177 ajuint pos, ajuint length); 178 __deprecated AjBool ajRangeOrdered(const AjPRange thys); 179 __deprecated AjBool ajRangeDefault(const AjPRange thys, const AjPSeq s); 180 181 #endif /* AJ_COMPILE_DEPRECATED */ 182 183 184 185 186 AJ_END_DECLS 187 188 #endif /* !AJRANGE_H */ 189