00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012 #include "gn/gnCompare.h"
00013
00014
00015
00016 const gnCompare *gnCompare::ProteinSeqCompare(){
00017 const static gnCompare* t_comp = new gnCompare(ProteinSeqCompareType);
00018 return t_comp;
00019 }
00020 const gnCompare *gnCompare::DNASeqCompare(){
00021 const static gnCompare* t_comp = new gnCompare(DNASeqCompareType);
00022 return t_comp;
00023 }
00024 const gnCompare *gnCompare::RNASeqCompare(){
00025 const static gnCompare* t_comp = new gnCompare(RNASeqCompareType);
00026 return t_comp;
00027 }
00028
00029 gnCompare::gnCompare( const gnCompareType c_type ){
00030 for( gnSeqC i = 0; i < GNSEQC_MAX; ++i ){
00031 m_pairArray[i] = new gnSeqC[1];
00032 m_pairArray[i][0] = 0;
00033 m_containArray[i] = new gnSeqC[1];
00034 m_containArray[i][0] = 0;
00035 }
00036 switch(c_type){
00037 case ProteinSeqCompareType:
00038 CreateProteinComparator();
00039 break;
00040 case DNASeqCompareType:
00041 CreateDNAComparator();
00042 break;
00043 case RNASeqCompareType:
00044 CreateRNAComparator();
00045 break;
00046 }
00047 }
00048
00049 boolean gnCompare::Contains( gnSeqC ch, gnSeqC ch2, boolean case_sensitive) const
00050 {
00051 if(!case_sensitive){
00052 ch = toupper(ch);
00053 ch2 = toupper(ch2);
00054 }
00055 if(strchr(m_containArray[ch], ch2) == 0)
00056 return false;
00057 return true;
00058 }
00059
00060 boolean gnCompare::Contains( const gnSeqC* seq, const gnSeqC* seq2, const uint32 len, boolean case_sensitive ) const{
00061 for( uint32 i=0; i < len ; ++i )
00062 if(!Contains(seq[i], seq2[i], case_sensitive))
00063 return false;
00064 return true;
00065 }
00066
00067 boolean gnCompare::Contains( const string &seq, const string &seq2, boolean case_sensitive) const
00068 {
00069 gnSeqI shorter_len = seq.length() < seq2.length() ? seq.length() : seq2.length();
00070 return Contains( (gnSeqC*)seq.data(), (gnSeqC*)seq2.data(), shorter_len, case_sensitive );
00071 }
00072
00073 gnCompare::gnCompare()
00074 {
00075 for( gnSeqC i = 0; i < GNSEQC_MAX; ++i ){
00076 m_pairArray[i] = new gnSeqC[1];
00077 m_pairArray[i][0] = 0;
00078 m_containArray[i] = new gnSeqC[1];
00079 m_containArray[i][0] = 0;
00080 }
00081 }
00082
00083 gnCompare::gnCompare( const gnCompare &sf )
00084 {
00085 m_name = sf.m_name;
00086 for( gnSeqC i = 0; i < GNSEQC_MAX; ++i ){
00087 m_pairArray[i] = new gnSeqC[strlen(sf.m_pairArray[i])+1];
00088 strcpy(m_pairArray[i], sf.m_pairArray[i]);
00089 m_containArray[i] = new gnSeqC[strlen(sf.m_containArray[i])+1];
00090 strcpy(m_containArray[i], sf.m_containArray[i]);
00091 }
00092 }
00093 gnCompare::~gnCompare()
00094 {
00095 for( gnSeqC i = 0; i < GNSEQC_MAX; ++i ){
00096 delete[] m_pairArray[i];
00097 delete[] m_containArray[i];
00098 }
00099 }
00100
00101
00102 void gnCompare::AddArrayEntry( gnSeqC *array[GNSEQC_MAX], const gnSeqC ch, const gnSeqC ch2){
00103 uint32 curlen = strlen(array[ch]);
00104 gnSeqC* tmp = new gnSeqC[curlen + 2];
00105 strcpy(tmp, array[ch]);
00106 tmp[curlen] = ch2;
00107 tmp[curlen+1] = 0;
00108 delete[] array[ch];
00109 array[ch] = tmp;
00110 }
00111
00112 void gnCompare::DelArrayEntry( gnSeqC *array[GNSEQC_MAX], const gnSeqC ch, const gnSeqC ch2){
00113
00114 gnSeqC* loc = strchr(m_containArray[ch], ch2);
00115 uint32 count = 0;
00116 while(loc != NULL){
00117 count++;
00118 loc = strchr(loc+1, ch2);
00119 }
00120 if(count == 0)
00121 return;
00122
00123 uint32 curlen = strlen(array[ch]);
00124 gnSeqC* tmp = new gnSeqC[curlen - count];
00125 uint32 tmppos = 0;
00126 for(uint32 i=0; i < curlen; i++)
00127 if(m_containArray[ch][i] != ch2)
00128 tmp[tmppos++] = m_containArray[ch][i];
00129 tmp[tmppos] = 0;
00130 delete[] array[ch];
00131 array[ch] = tmp;
00132 }
00133
00134
00135 void gnCompare::CreateProteinComparator()
00136 {
00137 SetName( "Protein Comparator" );
00138 SetSingle( 'A' );
00139 SetSingle( 'R' );
00140 SetSingle( 'N' );
00141 SetSingle( 'D' );
00142 SetSingle( 'C' );
00143 SetSingle( 'Q' );
00144 SetSingle( 'E' );
00145 SetSingle( 'G' );
00146 SetSingle( 'H' );
00147 SetSingle( 'I' );
00148 SetSingle( 'L' );
00149 SetSingle( 'K' );
00150 SetSingle( 'M' );
00151 SetSingle( 'F' );
00152 SetSingle( 'P' );
00153 SetSingle( 'S' );
00154 SetSingle( 'T' );
00155 SetSingle( 'W' );
00156 SetSingle( 'Y' );
00157 SetSingle( 'V' );
00158 SetSingle( '.' );
00159
00160 SetSingle( 'a' );
00161 SetSingle( 'r' );
00162 SetSingle( 'n' );
00163 SetSingle( 'd' );
00164 SetSingle( 'c' );
00165 SetSingle( 'q' );
00166 SetSingle( 'e' );
00167 SetSingle( 'g' );
00168 SetSingle( 'h' );
00169 SetSingle( 'i' );
00170 SetSingle( 'l' );
00171 SetSingle( 'k' );
00172 SetSingle( 'm' );
00173 SetSingle( 'f' );
00174 SetSingle( 'p' );
00175 SetSingle( 's' );
00176 SetSingle( 't' );
00177 SetSingle( 'w' );
00178 SetSingle( 'y' );
00179 SetSingle( 'v' );
00180 }
00181
00182 void gnCompare::CreateDNAComparator()
00183 {
00184 SetName( "Full DNA Comparator" );
00185
00186 SetSingle( 'a' );
00187 SetSingle( 'c' );
00188 SetSingle( 'g' );
00189 SetSingle( 't' );
00190 SetSingle( 'r' );
00191 SetSingle( 'k' );
00192 SetSingle( 's' );
00193 SetSingle( 'm' );
00194 SetSingle( 'y' );
00195 SetSingle( 'w' );
00196 SetSingle( 'b' );
00197 SetSingle( 'v' );
00198 SetSingle( 'd' );
00199 SetSingle( 'h' );
00200 SetSingle( 'n' );
00201 SetSingle( 'x' );
00202
00203 SetSingle( 'A' );
00204 SetSingle( 'C' );
00205 SetSingle( 'G' );
00206 SetSingle( 'T' );
00207 SetSingle( 'R' );
00208 SetSingle( 'K' );
00209 SetSingle( 'S' );
00210 SetSingle( 'M' );
00211 SetSingle( 'Y' );
00212 SetSingle( 'W' );
00213 SetSingle( 'B' );
00214 SetSingle( 'V' );
00215 SetSingle( 'D' );
00216 SetSingle( 'H' );
00217 SetSingle( 'N' );
00218 SetSingle( 'X' );
00219
00220 SetPair( 'g', 'r' );
00221 SetPair( 'g', 'k' );
00222 SetPair( 'g', 's' );
00223 SetPair( 'g', 'd' );
00224 SetPair( 'g', 'v' );
00225 SetPair( 'g', 'b' );
00226 SetPair( 'g', 'x' );
00227 SetPair( 'G', 'R' );
00228 SetPair( 'G', 'K' );
00229 SetPair( 'G', 'S' );
00230 SetPair( 'G', 'D' );
00231 SetPair( 'G', 'V' );
00232 SetPair( 'G', 'B' );
00233 SetPair( 'G', 'X' );
00234 SetPair( 'a', 'r' );
00235 SetPair( 'a', 'w' );
00236 SetPair( 'a', 'm' );
00237 SetPair( 'a', 'd' );
00238 SetPair( 'a', 'v' );
00239 SetPair( 'a', 'h' );
00240 SetPair( 'a', 'x' );
00241 SetPair( 'A', 'R' );
00242 SetPair( 'A', 'W' );
00243 SetPair( 'A', 'M' );
00244 SetPair( 'A', 'D' );
00245 SetPair( 'A', 'V' );
00246 SetPair( 'A', 'H' );
00247 SetPair( 'A', 'B' );
00248 SetPair( 'A', 'X' );
00249 SetPair( 'c', 's' );
00250 SetPair( 'c', 'm' );
00251 SetPair( 'c', 'y' );
00252 SetPair( 'c', 'v' );
00253 SetPair( 'c', 'b' );
00254 SetPair( 'c', 'h' );
00255 SetPair( 'c', 'x' );
00256 SetPair( 'C', 'S' );
00257 SetPair( 'C', 'M' );
00258 SetPair( 'C', 'Y' );
00259 SetPair( 'C', 'V' );
00260 SetPair( 'C', 'B' );
00261 SetPair( 'C', 'H' );
00262 SetPair( 'C', 'X' );
00263 SetPair( 't', 'k' );
00264 SetPair( 't', 'w' );
00265 SetPair( 't', 'y' );
00266 SetPair( 't', 'd' );
00267 SetPair( 't', 'b' );
00268 SetPair( 't', 'h' );
00269 SetPair( 't', 'x' );
00270 SetPair( 'T', 'K' );
00271 SetPair( 'T', 'W' );
00272 SetPair( 'T', 'Y' );
00273 SetPair( 'T', 'D' );
00274 SetPair( 'T', 'B' );
00275 SetPair( 'T', 'H' );
00276 SetPair( 'T', 'X' );
00277
00278 SetPair( 'r', 'x' );
00279 SetPair( 'y', 'x' );
00280 SetPair( 'w', 'x' );
00281 SetPair( 's', 'x' );
00282 SetPair( 'k', 'x' );
00283 SetPair( 'm', 'x' );
00284 SetPair( 'b', 'x' );
00285 SetPair( 'd', 'x' );
00286 SetPair( 'h', 'x' );
00287 SetPair( 'v', 'x' );
00288 SetPair( 'n', 'x' );
00289
00290 SetPair( 'R', 'X' );
00291 SetPair( 'Y', 'X' );
00292 SetPair( 'W', 'X' );
00293 SetPair( 'S', 'X' );
00294 SetPair( 'K', 'X' );
00295 SetPair( 'M', 'X' );
00296 SetPair( 'B', 'X' );
00297 SetPair( 'D', 'X' );
00298 SetPair( 'H', 'X' );
00299 SetPair( 'V', 'X' );
00300 SetPair( 'N', 'X' );
00301
00302 SetPair( 'k', 'd' );
00303 SetPair( 'k', 'b' );
00304 SetPair( 'r', 'd' );
00305 SetPair( 'r', 'v' );
00306 SetPair( 's', 'v' );
00307 SetPair( 's', 'b' );
00308 SetPair( 'm', 'v' );
00309 SetPair( 'm', 'h' );
00310 SetPair( 'w', 'd' );
00311 SetPair( 'w', 'h' );
00312 SetPair( 'y', 'b' );
00313 SetPair( 'y', 'h' );
00314
00315 SetPair( 'K', 'D' );
00316 SetPair( 'K', 'B' );
00317 SetPair( 'R', 'D' );
00318 SetPair( 'R', 'V' );
00319 SetPair( 'S', 'V' );
00320 SetPair( 'S', 'B' );
00321 SetPair( 'M', 'V' );
00322 SetPair( 'M', 'H' );
00323 SetPair( 'W', 'D' );
00324 SetPair( 'W', 'H' );
00325 SetPair( 'Y', 'B' );
00326 SetPair( 'Y', 'H' );
00327
00328 SetContained( 'g', 'r' );
00329 SetContained( 'g', 'k' );
00330 SetContained( 'g', 's' );
00331 SetContained( 'g', 'd' );
00332 SetContained( 'g', 'v' );
00333 SetContained( 'g', 'b' );
00334 SetContained( 'g', 'x' );
00335 SetContained( 'G', 'R' );
00336 SetContained( 'G', 'K' );
00337 SetContained( 'G', 'S' );
00338 SetContained( 'G', 'D' );
00339 SetContained( 'G', 'V' );
00340 SetContained( 'G', 'B' );
00341 SetContained( 'G', 'X' );
00342 SetContained( 'a', 'r' );
00343 SetContained( 'a', 'w' );
00344 SetContained( 'a', 'm' );
00345 SetContained( 'a', 'd' );
00346 SetContained( 'a', 'v' );
00347 SetContained( 'a', 'h' );
00348 SetContained( 'a', 'x' );
00349 SetContained( 'A', 'R' );
00350 SetContained( 'A', 'W' );
00351 SetContained( 'A', 'M' );
00352 SetContained( 'A', 'D' );
00353 SetContained( 'A', 'V' );
00354 SetContained( 'A', 'H' );
00355 SetContained( 'A', 'B' );
00356 SetContained( 'A', 'X' );
00357 SetContained( 'c', 's' );
00358 SetContained( 'c', 'm' );
00359 SetContained( 'c', 'y' );
00360 SetContained( 'c', 'v' );
00361 SetContained( 'c', 'b' );
00362 SetContained( 'c', 'h' );
00363 SetContained( 'c', 'x' );
00364 SetContained( 'C', 'S' );
00365 SetContained( 'C', 'M' );
00366 SetContained( 'C', 'Y' );
00367 SetContained( 'C', 'V' );
00368 SetContained( 'C', 'B' );
00369 SetContained( 'C', 'H' );
00370 SetContained( 'C', 'X' );
00371 SetContained( 't', 'k' );
00372 SetContained( 't', 'w' );
00373 SetContained( 't', 'y' );
00374 SetContained( 't', 'd' );
00375 SetContained( 't', 'b' );
00376 SetContained( 't', 'h' );
00377 SetContained( 't', 'x' );
00378 SetContained( 'T', 'K' );
00379 SetContained( 'T', 'W' );
00380 SetContained( 'T', 'Y' );
00381 SetContained( 'T', 'D' );
00382 SetContained( 'T', 'B' );
00383 SetContained( 'T', 'H' );
00384 SetContained( 'T', 'X' );
00385
00386 SetContained( 'r', 'x' );
00387 SetContained( 'y', 'x' );
00388 SetContained( 'w', 'x' );
00389 SetContained( 's', 'x' );
00390 SetContained( 'k', 'x' );
00391 SetContained( 'm', 'x' );
00392 SetContained( 'b', 'x' );
00393 SetContained( 'd', 'x' );
00394 SetContained( 'h', 'x' );
00395 SetContained( 'v', 'x' );
00396 SetContained( 'n', 'x' );
00397
00398 SetContained( 'R', 'X' );
00399 SetContained( 'Y', 'X' );
00400 SetContained( 'W', 'X' );
00401 SetContained( 'S', 'X' );
00402 SetContained( 'K', 'X' );
00403 SetContained( 'M', 'X' );
00404 SetContained( 'B', 'X' );
00405 SetContained( 'D', 'X' );
00406 SetContained( 'H', 'X' );
00407 SetContained( 'V', 'X' );
00408 SetContained( 'N', 'X' );
00409
00410 SetContained( 'k', 'd' );
00411 SetContained( 'k', 'b' );
00412 SetContained( 'r', 'd' );
00413 SetContained( 'r', 'v' );
00414 SetContained( 's', 'v' );
00415 SetContained( 's', 'b' );
00416 SetContained( 'm', 'v' );
00417 SetContained( 'm', 'h' );
00418 SetContained( 'w', 'd' );
00419 SetContained( 'w', 'h' );
00420 SetContained( 'y', 'b' );
00421 SetContained( 'y', 'h' );
00422
00423 SetContained( 'K', 'D' );
00424 SetContained( 'K', 'B' );
00425 SetContained( 'R', 'D' );
00426 SetContained( 'R', 'V' );
00427 SetContained( 'S', 'V' );
00428 SetContained( 'S', 'B' );
00429 SetContained( 'M', 'V' );
00430 SetContained( 'M', 'H' );
00431 SetContained( 'W', 'D' );
00432 SetContained( 'W', 'H' );
00433 SetContained( 'Y', 'B' );
00434 SetContained( 'Y', 'H' );
00435
00436 }
00437
00438 void gnCompare::CreateRNAComparator()
00439 {
00440 SetName( "Full RNA Comparator" );
00441
00442 SetSingle( 'a' );
00443 SetSingle( 'c' );
00444 SetSingle( 'g' );
00445 SetSingle( 'u' );
00446 SetSingle( 'r' );
00447 SetSingle( 'k' );
00448 SetSingle( 's' );
00449 SetSingle( 'm' );
00450 SetSingle( 'y' );
00451 SetSingle( 'w' );
00452 SetSingle( 'b' );
00453 SetSingle( 'v' );
00454 SetSingle( 'd' );
00455 SetSingle( 'h' );
00456 SetSingle( 'n' );
00457 SetSingle( 'x' );
00458
00459 SetSingle( 'A' );
00460 SetSingle( 'C' );
00461 SetSingle( 'G' );
00462 SetSingle( 'U' );
00463 SetSingle( 'R' );
00464 SetSingle( 'K' );
00465 SetSingle( 'S' );
00466 SetSingle( 'M' );
00467 SetSingle( 'Y' );
00468 SetSingle( 'W' );
00469 SetSingle( 'B' );
00470 SetSingle( 'V' );
00471 SetSingle( 'D' );
00472 SetSingle( 'H' );
00473 SetSingle( 'N' );
00474 SetSingle( 'X' );
00475
00476 SetPair( 'g', 'r' );
00477 SetPair( 'g', 'k' );
00478 SetPair( 'g', 's' );
00479 SetPair( 'g', 'd' );
00480 SetPair( 'g', 'v' );
00481 SetPair( 'g', 'b' );
00482 SetPair( 'g', 'x' );
00483 SetPair( 'G', 'R' );
00484 SetPair( 'G', 'K' );
00485 SetPair( 'G', 'S' );
00486 SetPair( 'G', 'D' );
00487 SetPair( 'G', 'V' );
00488 SetPair( 'G', 'B' );
00489 SetPair( 'G', 'X' );
00490 SetPair( 'a', 'r' );
00491 SetPair( 'a', 'w' );
00492 SetPair( 'a', 'm' );
00493 SetPair( 'a', 'd' );
00494 SetPair( 'a', 'v' );
00495 SetPair( 'a', 'h' );
00496 SetPair( 'a', 'x' );
00497 SetPair( 'A', 'R' );
00498 SetPair( 'A', 'W' );
00499 SetPair( 'A', 'M' );
00500 SetPair( 'A', 'D' );
00501 SetPair( 'A', 'V' );
00502 SetPair( 'A', 'H' );
00503 SetPair( 'A', 'B' );
00504 SetPair( 'A', 'X' );
00505 SetPair( 'c', 's' );
00506 SetPair( 'c', 'm' );
00507 SetPair( 'c', 'y' );
00508 SetPair( 'c', 'v' );
00509 SetPair( 'c', 'b' );
00510 SetPair( 'c', 'h' );
00511 SetPair( 'c', 'x' );
00512 SetPair( 'C', 'S' );
00513 SetPair( 'C', 'M' );
00514 SetPair( 'C', 'Y' );
00515 SetPair( 'C', 'V' );
00516 SetPair( 'C', 'B' );
00517 SetPair( 'C', 'H' );
00518 SetPair( 'C', 'X' );
00519 SetPair( 'u', 'k' );
00520 SetPair( 'u', 'w' );
00521 SetPair( 'u', 'y' );
00522 SetPair( 'u', 'd' );
00523 SetPair( 'u', 'b' );
00524 SetPair( 'u', 'h' );
00525 SetPair( 'u', 'x' );
00526 SetPair( 'U', 'K' );
00527 SetPair( 'U', 'W' );
00528 SetPair( 'U', 'Y' );
00529 SetPair( 'U', 'D' );
00530 SetPair( 'U', 'B' );
00531 SetPair( 'U', 'H' );
00532 SetPair( 'U', 'X' );
00533
00534 SetPair( 'r', 'x' );
00535 SetPair( 'y', 'x' );
00536 SetPair( 'w', 'x' );
00537 SetPair( 's', 'x' );
00538 SetPair( 'k', 'x' );
00539 SetPair( 'm', 'x' );
00540 SetPair( 'b', 'x' );
00541 SetPair( 'd', 'x' );
00542 SetPair( 'h', 'x' );
00543 SetPair( 'v', 'x' );
00544 SetPair( 'n', 'x' );
00545
00546 SetPair( 'R', 'X' );
00547 SetPair( 'Y', 'X' );
00548 SetPair( 'W', 'X' );
00549 SetPair( 'S', 'X' );
00550 SetPair( 'K', 'X' );
00551 SetPair( 'M', 'X' );
00552 SetPair( 'B', 'X' );
00553 SetPair( 'D', 'X' );
00554 SetPair( 'H', 'X' );
00555 SetPair( 'V', 'X' );
00556 SetPair( 'N', 'X' );
00557
00558 SetPair( 'k', 'd' );
00559 SetPair( 'k', 'b' );
00560 SetPair( 'r', 'd' );
00561 SetPair( 'r', 'v' );
00562 SetPair( 's', 'v' );
00563 SetPair( 's', 'b' );
00564 SetPair( 'm', 'v' );
00565 SetPair( 'm', 'h' );
00566 SetPair( 'w', 'd' );
00567 SetPair( 'w', 'h' );
00568 SetPair( 'y', 'b' );
00569 SetPair( 'y', 'h' );
00570
00571 SetPair( 'K', 'D' );
00572 SetPair( 'K', 'B' );
00573 SetPair( 'R', 'D' );
00574 SetPair( 'R', 'V' );
00575 SetPair( 'S', 'V' );
00576 SetPair( 'S', 'B' );
00577 SetPair( 'M', 'V' );
00578 SetPair( 'M', 'H' );
00579 SetPair( 'W', 'D' );
00580 SetPair( 'W', 'H' );
00581 SetPair( 'Y', 'B' );
00582 SetPair( 'Y', 'H' );
00583
00584 SetContained( 'g', 'r' );
00585 SetContained( 'g', 'k' );
00586 SetContained( 'g', 's' );
00587 SetContained( 'g', 'd' );
00588 SetContained( 'g', 'v' );
00589 SetContained( 'g', 'b' );
00590 SetContained( 'g', 'x' );
00591 SetContained( 'G', 'R' );
00592 SetContained( 'G', 'K' );
00593 SetContained( 'G', 'S' );
00594 SetContained( 'G', 'D' );
00595 SetContained( 'G', 'V' );
00596 SetContained( 'G', 'B' );
00597 SetContained( 'G', 'X' );
00598 SetContained( 'a', 'r' );
00599 SetContained( 'a', 'w' );
00600 SetContained( 'a', 'm' );
00601 SetContained( 'a', 'd' );
00602 SetContained( 'a', 'v' );
00603 SetContained( 'a', 'h' );
00604 SetContained( 'a', 'x' );
00605 SetContained( 'A', 'R' );
00606 SetContained( 'A', 'W' );
00607 SetContained( 'A', 'M' );
00608 SetContained( 'A', 'D' );
00609 SetContained( 'A', 'V' );
00610 SetContained( 'A', 'H' );
00611 SetContained( 'A', 'B' );
00612 SetContained( 'A', 'X' );
00613 SetContained( 'c', 's' );
00614 SetContained( 'c', 'm' );
00615 SetContained( 'c', 'y' );
00616 SetContained( 'c', 'v' );
00617 SetContained( 'c', 'b' );
00618 SetContained( 'c', 'h' );
00619 SetContained( 'c', 'x' );
00620 SetContained( 'C', 'S' );
00621 SetContained( 'C', 'M' );
00622 SetContained( 'C', 'Y' );
00623 SetContained( 'C', 'V' );
00624 SetContained( 'C', 'B' );
00625 SetContained( 'C', 'H' );
00626 SetContained( 'C', 'X' );
00627 SetContained( 'u', 'k' );
00628 SetContained( 'u', 'w' );
00629 SetContained( 'u', 'y' );
00630 SetContained( 'u', 'd' );
00631 SetContained( 'u', 'b' );
00632 SetContained( 'u', 'h' );
00633 SetContained( 'u', 'x' );
00634 SetContained( 'U', 'K' );
00635 SetContained( 'U', 'W' );
00636 SetContained( 'U', 'Y' );
00637 SetContained( 'U', 'D' );
00638 SetContained( 'U', 'B' );
00639 SetContained( 'U', 'H' );
00640 SetContained( 'U', 'X' );
00641
00642 SetContained( 'r', 'x' );
00643 SetContained( 'y', 'x' );
00644 SetContained( 'w', 'x' );
00645 SetContained( 's', 'x' );
00646 SetContained( 'k', 'x' );
00647 SetContained( 'm', 'x' );
00648 SetContained( 'b', 'x' );
00649 SetContained( 'd', 'x' );
00650 SetContained( 'h', 'x' );
00651 SetContained( 'v', 'x' );
00652 SetContained( 'n', 'x' );
00653
00654 SetContained( 'R', 'X' );
00655 SetContained( 'Y', 'X' );
00656 SetContained( 'W', 'X' );
00657 SetContained( 'S', 'X' );
00658 SetContained( 'K', 'X' );
00659 SetContained( 'M', 'X' );
00660 SetContained( 'B', 'X' );
00661 SetContained( 'D', 'X' );
00662 SetContained( 'H', 'X' );
00663 SetContained( 'V', 'X' );
00664 SetContained( 'N', 'X' );
00665
00666 SetContained( 'k', 'd' );
00667 SetContained( 'k', 'b' );
00668 SetContained( 'r', 'd' );
00669 SetContained( 'r', 'v' );
00670 SetContained( 's', 'v' );
00671 SetContained( 's', 'b' );
00672 SetContained( 'm', 'v' );
00673 SetContained( 'm', 'h' );
00674 SetContained( 'w', 'd' );
00675 SetContained( 'w', 'h' );
00676 SetContained( 'y', 'b' );
00677 SetContained( 'y', 'h' );
00678
00679 SetContained( 'K', 'D' );
00680 SetContained( 'K', 'B' );
00681 SetContained( 'R', 'D' );
00682 SetContained( 'R', 'V' );
00683 SetContained( 'S', 'V' );
00684 SetContained( 'S', 'B' );
00685 SetContained( 'M', 'V' );
00686 SetContained( 'M', 'H' );
00687 SetContained( 'W', 'D' );
00688 SetContained( 'W', 'H' );
00689 SetContained( 'Y', 'B' );
00690 SetContained( 'Y', 'H' );
00691 }