1 #ifndef DYNAMITEdisplayHEADERFILE 2 #define DYNAMITEdisplayHEADERFILE 3 #ifdef _cplusplus 4 extern "C" { 5 #endif 6 7 #include "wisebase.h" 8 #include "dynfile.h" 9 10 11 /********************************************************/ 12 /* Wisetools version 3 file */ 13 /* */ 14 /* this file is copyright (c) Ewan Birney 1996 */ 15 /* this file is part of the wisetools sequence analysis */ 16 /* package */ 17 /********************************************************/ 18 19 /********************************************************/ 20 /* Display is an internal module for dynamite itself */ 21 /* to manage the display tag found in dynamite files */ 22 /* */ 23 /* */ 24 /********************************************************/ 25 26 /***** RCS Info *****************************************/ 27 /* 28 $Id: 29 30 $Log: 31 */ 32 /*********************************************************/ 33 34 35 36 #define Label2DisplayLISTLENGTH 32 37 #define Sequence2DisplayLISTLENGTH 32 38 #define Aln2DisplayLISTLENGTH 32 39 40 #define ALL_OTHER_NUMBER (-10) 41 42 struct Aln2DisplayField { 43 int dynamite_hard_link; 44 #ifdef PTHREAD 45 pthread_mutex_t dynamite_mutex; 46 #endif 47 char * string; 48 char * length; 49 char * direction; 50 char * convert; 51 boolean is_static; 52 boolean is_string; 53 boolean is_single; 54 boolean is_sub; 55 } ; 56 /* Aln2DisplayField defined */ 57 #ifndef DYNAMITE_DEFINED_Aln2DisplayField 58 typedef struct Aln2DisplayField Aln2DisplayField; 59 #define DYNAMITE_DEFINED_Aln2DisplayField 60 #endif 61 62 63 struct Index2Display { 64 int dynamite_hard_link; 65 #ifdef PTHREAD 66 pthread_mutex_t dynamite_mutex; 67 #endif 68 char * name; 69 char * eval; 70 boolean is_start; 71 int number; 72 } ; 73 /* Index2Display defined */ 74 #ifndef DYNAMITE_DEFINED_Index2Display 75 typedef struct Index2Display Index2Display; 76 #define DYNAMITE_DEFINED_Index2Display 77 #endif 78 79 80 struct Label2Display { 81 int dynamite_hard_link; 82 #ifdef PTHREAD 83 pthread_mutex_t dynamite_mutex; 84 #endif 85 char * label; 86 char * direction; 87 Aln2DisplayField ** a2df; 88 int len;/* len for above a2df */ 89 int maxlen; /* maxlen for above a2df */ 90 Index2Display ** i2d; 91 int ind_len;/* len for above i2d */ 92 int ind_maxlen; /* maxlen for above i2d */ 93 boolean is_lone; 94 } ; 95 /* Label2Display defined */ 96 #ifndef DYNAMITE_DEFINED_Label2Display 97 typedef struct Label2Display Label2Display; 98 #define DYNAMITE_DEFINED_Label2Display 99 #endif 100 101 102 struct Sequence2Display { 103 int dynamite_hard_link; 104 #ifdef PTHREAD 105 pthread_mutex_t dynamite_mutex; 106 #endif 107 int number; 108 Label2Display ** l2d; 109 int len;/* len for above l2d */ 110 int maxlen; /* maxlen for above l2d */ 111 Index2Display ** i2d; 112 int ind_len;/* len for above i2d */ 113 int ind_maxlen; /* maxlen for above i2d */ 114 char * name_str; 115 int length; /* of name */ 116 boolean is_static; 117 char * direction; 118 } ; 119 /* Sequence2Display defined */ 120 #ifndef DYNAMITE_DEFINED_Sequence2Display 121 typedef struct Sequence2Display Sequence2Display; 122 #define DYNAMITE_DEFINED_Sequence2Display 123 #endif 124 125 126 struct Aln2DisplayResource { 127 int dynamite_hard_link; 128 #ifdef PTHREAD 129 pthread_mutex_t dynamite_mutex; 130 #endif 131 char * type; 132 char * name; 133 char * arg; 134 } ; 135 /* Aln2DisplayResource defined */ 136 #ifndef DYNAMITE_DEFINED_Aln2DisplayResource 137 typedef struct Aln2DisplayResource Aln2DisplayResource; 138 #define DYNAMITE_DEFINED_Aln2DisplayResource 139 #endif 140 141 142 struct Aln2Display { 143 int dynamite_hard_link; 144 #ifdef PTHREAD 145 pthread_mutex_t dynamite_mutex; 146 #endif 147 char * name; 148 Aln2DisplayResource ** a2dr; 149 int res_len;/* len for above a2dr */ 150 int res_maxlen; /* maxlen for above a2dr */ 151 Sequence2Display ** s2d; 152 int len;/* len for above s2d */ 153 int maxlen; /* maxlen for above s2d */ 154 Sequence2Display * other; 155 } ; 156 /* Aln2Display defined */ 157 #ifndef DYNAMITE_DEFINED_Aln2Display 158 typedef struct Aln2Display Aln2Display; 159 #define DYNAMITE_DEFINED_Aln2Display 160 #endif 161 162 163 164 165 /***************************************************/ 166 /* Callable functions */ 167 /* These are the functions you are expected to use */ 168 /***************************************************/ 169 170 171 172 /* Function: hard_link_Aln2DisplayField(obj) 173 * 174 * Descrip: Bumps up the reference count of the object 175 * Meaning that multiple pointers can 'own' it 176 * 177 * 178 * Arg: obj [UNKN ] Object to be hard linked [Aln2DisplayField *] 179 * 180 * Return [UNKN ] Undocumented return value [Aln2DisplayField *] 181 * 182 */ 183 Aln2DisplayField * hard_link_Aln2DisplayField(Aln2DisplayField * obj); 184 185 186 /* Function: Aln2DisplayField_alloc(void) 187 * 188 * Descrip: Allocates structure: assigns defaults if given 189 * 190 * 191 * 192 * Return [UNKN ] Undocumented return value [Aln2DisplayField *] 193 * 194 */ 195 Aln2DisplayField * Aln2DisplayField_alloc(void); 196 197 198 /* Function: free_Aln2DisplayField(obj) 199 * 200 * Descrip: Free Function: removes the memory held by obj 201 * Will chain up to owned members and clear all lists 202 * 203 * 204 * Arg: obj [UNKN ] Object that is free'd [Aln2DisplayField *] 205 * 206 * Return [UNKN ] Undocumented return value [Aln2DisplayField *] 207 * 208 */ 209 Aln2DisplayField * free_Aln2DisplayField(Aln2DisplayField * obj); 210 211 212 /* Function: hard_link_Index2Display(obj) 213 * 214 * Descrip: Bumps up the reference count of the object 215 * Meaning that multiple pointers can 'own' it 216 * 217 * 218 * Arg: obj [UNKN ] Object to be hard linked [Index2Display *] 219 * 220 * Return [UNKN ] Undocumented return value [Index2Display *] 221 * 222 */ 223 Index2Display * hard_link_Index2Display(Index2Display * obj); 224 225 226 /* Function: Index2Display_alloc(void) 227 * 228 * Descrip: Allocates structure: assigns defaults if given 229 * 230 * 231 * 232 * Return [UNKN ] Undocumented return value [Index2Display *] 233 * 234 */ 235 Index2Display * Index2Display_alloc(void); 236 237 238 /* Function: free_Index2Display(obj) 239 * 240 * Descrip: Free Function: removes the memory held by obj 241 * Will chain up to owned members and clear all lists 242 * 243 * 244 * Arg: obj [UNKN ] Object that is free'd [Index2Display *] 245 * 246 * Return [UNKN ] Undocumented return value [Index2Display *] 247 * 248 */ 249 Index2Display * free_Index2Display(Index2Display * obj); 250 251 252 /* Function: add_Label2Display(obj,add) 253 * 254 * Descrip: Adds another object to the list. It will expand the list if necessary 255 * 256 * 257 * Arg: obj [UNKN ] Object which contains the list [Label2Display *] 258 * Arg: add [OWNER] Object to add to the list [Aln2DisplayField *] 259 * 260 * Return [UNKN ] Undocumented return value [boolean] 261 * 262 */ 263 boolean add_Label2Display(Label2Display * obj,Aln2DisplayField * add); 264 265 266 /* Function: flush_Label2Display(obj) 267 * 268 * Descrip: Frees the list elements, sets length to 0 269 * If you want to save some elements, use hard_link_xxx 270 * to protect them from being actually destroyed in the free 271 * 272 * 273 * Arg: obj [UNKN ] Object which contains the list [Label2Display *] 274 * 275 * Return [UNKN ] Undocumented return value [int] 276 * 277 */ 278 int flush_Label2Display(Label2Display * obj); 279 280 281 /* Function: add_ind_Label2Display(obj,add) 282 * 283 * Descrip: Adds another object to the list. It will expand the list if necessary 284 * 285 * 286 * Arg: obj [UNKN ] Object which contains the list [Label2Display *] 287 * Arg: add [OWNER] Object to add to the list [Index2Display *] 288 * 289 * Return [UNKN ] Undocumented return value [boolean] 290 * 291 */ 292 boolean add_ind_Label2Display(Label2Display * obj,Index2Display * add); 293 294 295 /* Function: flush_ind_Label2Display(obj) 296 * 297 * Descrip: Frees the list elements, sets length to 0 298 * If you want to save some elements, use hard_link_xxx 299 * to protect them from being actually destroyed in the free 300 * 301 * 302 * Arg: obj [UNKN ] Object which contains the list [Label2Display *] 303 * 304 * Return [UNKN ] Undocumented return value [int] 305 * 306 */ 307 int flush_ind_Label2Display(Label2Display * obj); 308 309 310 /* Function: Label2Display_alloc_std(void) 311 * 312 * Descrip: Equivalent to Label2Display_alloc_len(Label2DisplayLISTLENGTH) 313 * 314 * 315 * 316 * Return [UNKN ] Undocumented return value [Label2Display *] 317 * 318 */ 319 Label2Display * Label2Display_alloc_std(void); 320 321 322 /* Function: Label2Display_alloc_len(len) 323 * 324 * Descrip: Allocates len length to all lists 325 * 326 * 327 * Arg: len [UNKN ] Length of lists to allocate [int] 328 * 329 * Return [UNKN ] Undocumented return value [Label2Display *] 330 * 331 */ 332 Label2Display * Label2Display_alloc_len(int len); 333 334 335 /* Function: hard_link_Label2Display(obj) 336 * 337 * Descrip: Bumps up the reference count of the object 338 * Meaning that multiple pointers can 'own' it 339 * 340 * 341 * Arg: obj [UNKN ] Object to be hard linked [Label2Display *] 342 * 343 * Return [UNKN ] Undocumented return value [Label2Display *] 344 * 345 */ 346 Label2Display * hard_link_Label2Display(Label2Display * obj); 347 348 349 /* Function: Label2Display_alloc(void) 350 * 351 * Descrip: Allocates structure: assigns defaults if given 352 * 353 * 354 * 355 * Return [UNKN ] Undocumented return value [Label2Display *] 356 * 357 */ 358 Label2Display * Label2Display_alloc(void); 359 360 361 /* Function: free_Label2Display(obj) 362 * 363 * Descrip: Free Function: removes the memory held by obj 364 * Will chain up to owned members and clear all lists 365 * 366 * 367 * Arg: obj [UNKN ] Object that is free'd [Label2Display *] 368 * 369 * Return [UNKN ] Undocumented return value [Label2Display *] 370 * 371 */ 372 Label2Display * free_Label2Display(Label2Display * obj); 373 374 375 /* Function: add_Sequence2Display(obj,add) 376 * 377 * Descrip: Adds another object to the list. It will expand the list if necessary 378 * 379 * 380 * Arg: obj [UNKN ] Object which contains the list [Sequence2Display *] 381 * Arg: add [OWNER] Object to add to the list [Label2Display *] 382 * 383 * Return [UNKN ] Undocumented return value [boolean] 384 * 385 */ 386 boolean add_Sequence2Display(Sequence2Display * obj,Label2Display * add); 387 388 389 /* Function: flush_Sequence2Display(obj) 390 * 391 * Descrip: Frees the list elements, sets length to 0 392 * If you want to save some elements, use hard_link_xxx 393 * to protect them from being actually destroyed in the free 394 * 395 * 396 * Arg: obj [UNKN ] Object which contains the list [Sequence2Display *] 397 * 398 * Return [UNKN ] Undocumented return value [int] 399 * 400 */ 401 int flush_Sequence2Display(Sequence2Display * obj); 402 403 404 /* Function: add_ind_Sequence2Display(obj,add) 405 * 406 * Descrip: Adds another object to the list. It will expand the list if necessary 407 * 408 * 409 * Arg: obj [UNKN ] Object which contains the list [Sequence2Display *] 410 * Arg: add [OWNER] Object to add to the list [Index2Display *] 411 * 412 * Return [UNKN ] Undocumented return value [boolean] 413 * 414 */ 415 boolean add_ind_Sequence2Display(Sequence2Display * obj,Index2Display * add); 416 417 418 /* Function: flush_ind_Sequence2Display(obj) 419 * 420 * Descrip: Frees the list elements, sets length to 0 421 * If you want to save some elements, use hard_link_xxx 422 * to protect them from being actually destroyed in the free 423 * 424 * 425 * Arg: obj [UNKN ] Object which contains the list [Sequence2Display *] 426 * 427 * Return [UNKN ] Undocumented return value [int] 428 * 429 */ 430 int flush_ind_Sequence2Display(Sequence2Display * obj); 431 432 433 /* Function: Sequence2Display_alloc_std(void) 434 * 435 * Descrip: Equivalent to Sequence2Display_alloc_len(Sequence2DisplayLISTLENGTH) 436 * 437 * 438 * 439 * Return [UNKN ] Undocumented return value [Sequence2Display *] 440 * 441 */ 442 Sequence2Display * Sequence2Display_alloc_std(void); 443 444 445 /* Function: Sequence2Display_alloc_len(len) 446 * 447 * Descrip: Allocates len length to all lists 448 * 449 * 450 * Arg: len [UNKN ] Length of lists to allocate [int] 451 * 452 * Return [UNKN ] Undocumented return value [Sequence2Display *] 453 * 454 */ 455 Sequence2Display * Sequence2Display_alloc_len(int len); 456 457 458 /* Function: hard_link_Sequence2Display(obj) 459 * 460 * Descrip: Bumps up the reference count of the object 461 * Meaning that multiple pointers can 'own' it 462 * 463 * 464 * Arg: obj [UNKN ] Object to be hard linked [Sequence2Display *] 465 * 466 * Return [UNKN ] Undocumented return value [Sequence2Display *] 467 * 468 */ 469 Sequence2Display * hard_link_Sequence2Display(Sequence2Display * obj); 470 471 472 /* Function: Sequence2Display_alloc(void) 473 * 474 * Descrip: Allocates structure: assigns defaults if given 475 * 476 * 477 * 478 * Return [UNKN ] Undocumented return value [Sequence2Display *] 479 * 480 */ 481 Sequence2Display * Sequence2Display_alloc(void); 482 483 484 /* Function: free_Sequence2Display(obj) 485 * 486 * Descrip: Free Function: removes the memory held by obj 487 * Will chain up to owned members and clear all lists 488 * 489 * 490 * Arg: obj [UNKN ] Object that is free'd [Sequence2Display *] 491 * 492 * Return [UNKN ] Undocumented return value [Sequence2Display *] 493 * 494 */ 495 Sequence2Display * free_Sequence2Display(Sequence2Display * obj); 496 497 498 /* Function: hard_link_Aln2DisplayResource(obj) 499 * 500 * Descrip: Bumps up the reference count of the object 501 * Meaning that multiple pointers can 'own' it 502 * 503 * 504 * Arg: obj [UNKN ] Object to be hard linked [Aln2DisplayResource *] 505 * 506 * Return [UNKN ] Undocumented return value [Aln2DisplayResource *] 507 * 508 */ 509 Aln2DisplayResource * hard_link_Aln2DisplayResource(Aln2DisplayResource * obj); 510 511 512 /* Function: Aln2DisplayResource_alloc(void) 513 * 514 * Descrip: Allocates structure: assigns defaults if given 515 * 516 * 517 * 518 * Return [UNKN ] Undocumented return value [Aln2DisplayResource *] 519 * 520 */ 521 Aln2DisplayResource * Aln2DisplayResource_alloc(void); 522 523 524 /* Function: free_Aln2DisplayResource(obj) 525 * 526 * Descrip: Free Function: removes the memory held by obj 527 * Will chain up to owned members and clear all lists 528 * 529 * 530 * Arg: obj [UNKN ] Object that is free'd [Aln2DisplayResource *] 531 * 532 * Return [UNKN ] Undocumented return value [Aln2DisplayResource *] 533 * 534 */ 535 Aln2DisplayResource * free_Aln2DisplayResource(Aln2DisplayResource * obj); 536 537 538 /* Function: add_res_Aln2Display(obj,add) 539 * 540 * Descrip: Adds another object to the list. It will expand the list if necessary 541 * 542 * 543 * Arg: obj [UNKN ] Object which contains the list [Aln2Display *] 544 * Arg: add [OWNER] Object to add to the list [Aln2DisplayResource *] 545 * 546 * Return [UNKN ] Undocumented return value [boolean] 547 * 548 */ 549 boolean add_res_Aln2Display(Aln2Display * obj,Aln2DisplayResource * add); 550 551 552 /* Function: flush_res_Aln2Display(obj) 553 * 554 * Descrip: Frees the list elements, sets length to 0 555 * If you want to save some elements, use hard_link_xxx 556 * to protect them from being actually destroyed in the free 557 * 558 * 559 * Arg: obj [UNKN ] Object which contains the list [Aln2Display *] 560 * 561 * Return [UNKN ] Undocumented return value [int] 562 * 563 */ 564 int flush_res_Aln2Display(Aln2Display * obj); 565 566 567 /* Function: add_Aln2Display(obj,add) 568 * 569 * Descrip: Adds another object to the list. It will expand the list if necessary 570 * 571 * 572 * Arg: obj [UNKN ] Object which contains the list [Aln2Display *] 573 * Arg: add [OWNER] Object to add to the list [Sequence2Display *] 574 * 575 * Return [UNKN ] Undocumented return value [boolean] 576 * 577 */ 578 boolean add_Aln2Display(Aln2Display * obj,Sequence2Display * add); 579 580 581 /* Function: flush_Aln2Display(obj) 582 * 583 * Descrip: Frees the list elements, sets length to 0 584 * If you want to save some elements, use hard_link_xxx 585 * to protect them from being actually destroyed in the free 586 * 587 * 588 * Arg: obj [UNKN ] Object which contains the list [Aln2Display *] 589 * 590 * Return [UNKN ] Undocumented return value [int] 591 * 592 */ 593 int flush_Aln2Display(Aln2Display * obj); 594 595 596 /* Function: Aln2Display_alloc_std(void) 597 * 598 * Descrip: Equivalent to Aln2Display_alloc_len(Aln2DisplayLISTLENGTH) 599 * 600 * 601 * 602 * Return [UNKN ] Undocumented return value [Aln2Display *] 603 * 604 */ 605 Aln2Display * Aln2Display_alloc_std(void); 606 607 608 /* Function: Aln2Display_alloc_len(len) 609 * 610 * Descrip: Allocates len length to all lists 611 * 612 * 613 * Arg: len [UNKN ] Length of lists to allocate [int] 614 * 615 * Return [UNKN ] Undocumented return value [Aln2Display *] 616 * 617 */ 618 Aln2Display * Aln2Display_alloc_len(int len); 619 620 621 /* Function: hard_link_Aln2Display(obj) 622 * 623 * Descrip: Bumps up the reference count of the object 624 * Meaning that multiple pointers can 'own' it 625 * 626 * 627 * Arg: obj [UNKN ] Object to be hard linked [Aln2Display *] 628 * 629 * Return [UNKN ] Undocumented return value [Aln2Display *] 630 * 631 */ 632 Aln2Display * hard_link_Aln2Display(Aln2Display * obj); 633 634 635 /* Function: Aln2Display_alloc(void) 636 * 637 * Descrip: Allocates structure: assigns defaults if given 638 * 639 * 640 * 641 * Return [UNKN ] Undocumented return value [Aln2Display *] 642 * 643 */ 644 Aln2Display * Aln2Display_alloc(void); 645 646 647 /* Function: free_Aln2Display(obj) 648 * 649 * Descrip: Free Function: removes the memory held by obj 650 * Will chain up to owned members and clear all lists 651 * 652 * 653 * Arg: obj [UNKN ] Object that is free'd [Aln2Display *] 654 * 655 * Return [UNKN ] Undocumented return value [Aln2Display *] 656 * 657 */ 658 Aln2Display * free_Aln2Display(Aln2Display * obj); 659 660 661 /* Unplaced functions */ 662 /* There has been no indication of the use of these functions */ 663 void write_Aln2Display_header(DYNFILE * dfp,Aln2Display * a2d); 664 void write_Aln2Display_function(DYNFILE * dfp,Aln2Display * a2d); 665 void write_Aln2Display_convert_func(DYNFILE * dfp,Aln2Display * a2d); 666 boolean prepare_Aln2Display(Aln2Display * a2d); 667 void number_up_Sequence_Index2Display(Aln2Display * a2d); 668 boolean crosslink_Index(Aln2Display * a2d); 669 boolean crosslink_Label2Display_Index(Label2Display * l2d,Sequence2Display * s2d); 670 Index2Display * Index2Display_from_name(Sequence2Display * s2d,char * name); 671 Aln2Display * read_Aln2Display_line(char * line,FILE * ifp); 672 Sequence2Display * read_Sequence2Display_line(char * line,FILE * ifp); 673 Label2Display * read_Label2Display_line(char * line,FILE * ifp); 674 Aln2DisplayField * read_Aln2DisplayField_line(char * line,FILE * ifp); 675 boolean read_name_line(Sequence2Display * s2d,char * name_line); 676 boolean put_away_Aln2DisplayField_strpair(Aln2DisplayField * a2df,char * pair); 677 Aln2DisplayResource * read_Aln2DisplayResource_line(char * line); 678 Index2Display * read_Index2Display_line(char * line); 679 void show_Aln2Display(Aln2Display * a2d,FILE * ofp); 680 void show_Aln2DisplayResource(Aln2DisplayResource * a2dr,FILE * ofp); 681 void show_Sequence2Display(Sequence2Display * s2d,FILE * ofp); 682 void show_Label2Display(Label2Display * l2d,FILE * ofp); 683 void show_Aln2DisplayField(Aln2DisplayField * a2df,FILE * ofp); 684 685 686 /***************************************************/ 687 /* Internal functions */ 688 /* you are not expected to have to call these */ 689 /***************************************************/ 690 void swap_Label2Display(Aln2DisplayField ** list,int i,int j) ; 691 void qsort_Label2Display(Aln2DisplayField ** list,int left,int right,int (*comp)(Aln2DisplayField * ,Aln2DisplayField * )); 692 void sort_Label2Display(Label2Display * obj,int (*comp)(Aln2DisplayField *, Aln2DisplayField *)); 693 boolean expand_Label2Display(Label2Display * obj,int len); 694 void swap_ind_Label2Display(Index2Display ** list,int i,int j) ; 695 void qsort_ind_Label2Display(Index2Display ** list,int left,int right,int (*comp)(Index2Display * ,Index2Display * )); 696 void sort_ind_Label2Display(Label2Display * obj,int (*comp)(Index2Display *, Index2Display *)); 697 boolean expand_ind_Label2Display(Label2Display * obj,int len); 698 void swap_Sequence2Display(Label2Display ** list,int i,int j) ; 699 void qsort_Sequence2Display(Label2Display ** list,int left,int right,int (*comp)(Label2Display * ,Label2Display * )); 700 void sort_Sequence2Display(Sequence2Display * obj,int (*comp)(Label2Display *, Label2Display *)); 701 boolean expand_Sequence2Display(Sequence2Display * obj,int len); 702 void swap_ind_Sequence2Display(Index2Display ** list,int i,int j) ; 703 void qsort_ind_Sequence2Display(Index2Display ** list,int left,int right,int (*comp)(Index2Display * ,Index2Display * )); 704 void sort_ind_Sequence2Display(Sequence2Display * obj,int (*comp)(Index2Display *, Index2Display *)); 705 boolean expand_ind_Sequence2Display(Sequence2Display * obj,int len); 706 void swap_res_Aln2Display(Aln2DisplayResource ** list,int i,int j) ; 707 void qsort_res_Aln2Display(Aln2DisplayResource ** list,int left,int right,int (*comp)(Aln2DisplayResource * ,Aln2DisplayResource * )); 708 void sort_res_Aln2Display(Aln2Display * obj,int (*comp)(Aln2DisplayResource *, Aln2DisplayResource *)); 709 boolean expand_res_Aln2Display(Aln2Display * obj,int len); 710 void swap_Aln2Display(Sequence2Display ** list,int i,int j) ; 711 void qsort_Aln2Display(Sequence2Display ** list,int left,int right,int (*comp)(Sequence2Display * ,Sequence2Display * )); 712 void sort_Aln2Display(Aln2Display * obj,int (*comp)(Sequence2Display *, Sequence2Display *)); 713 boolean expand_Aln2Display(Aln2Display * obj,int len); 714 715 #ifdef _cplusplus 716 } 717 #endif 718 719 #endif 720