source: branches/port5/PRIMER_DESIGN/PRD_Pair.cxx

Last change on this file was 566, checked in by westram, 23 years ago

Most changes are made due to activating more warnings for the c++ compiler (linux)

  • Property svn:eol-style set to native
  • Property svn:keywords set to Author Date Id Revision
File size: 2.1 KB
Line 
1#include "PRD_Pair.hxx"
2#include <stdlib.h>
3
4using namespace std;
5
6//
7// Constructors
8//
9Pair::Pair ( Item *one_, Item *two_, double rating_ )
10{
11  one    = one_;
12  two    = two_;
13  rating = rating_;
14}
15
16Pair::Pair ()
17{
18  one    = NULL;
19  two    = NULL;
20  rating = -1.0;
21}
22
23const char * Pair::get_primers ( const char *sequence_ )
24{
25  if ( !one || !two ) return 0;
26
27  static char *result     = 0;
28  static int   result_len = 0;
29
30  int max_result = ( one ? one->length : 6 ) + ( two ? two->length : 6 ) + 2;
31  if ( max_result > result_len ) {
32    free( result );
33    result = 0;
34  }
35
36  if ( !result ) {
37    result     = (char*)malloc( max_result+1 );
38    result_len = max_result;
39  }
40
41  char *pone = one->getPrimerSequence( sequence_ );
42  char *ptwo = two->getPrimerSequence( sequence_ );
43
44  sprintf( result, "%s\n%s", pone, ptwo );
45
46  free( ptwo );
47  free( pone );
48
49  return result;
50}
51
52
53const char * Pair::get_result ( const char *sequence_ , int max_primer_length, int max_position_length, int max_length_length )
54{
55  static char *result     = 0;
56  static int   result_len = 0;
57  char        *primer;
58
59  int max_result = ( one ? one->length : 6 ) + ( two ? two->length : 6 ) + 200;
60  if ( max_result>result_len ) {
61    free(result);
62    result = 0;
63  }
64
65  if ( !result ) {
66    result     = (char*)malloc( max_result+1 );
67    result_len = max_result;
68  }
69
70  char *r = result;
71
72  r += sprintf( r,  "%7.3f ", rating );
73
74  if ( one ) {
75    primer  = one->getPrimerSequence( sequence_ );
76    r      += one->sprint( r,  primer," ", max_primer_length, max_position_length , max_length_length );
77    free( primer );
78  }
79  else {
80    r += sprintf( r, "(error)," );
81  }
82
83  if ( two ) {
84    primer  = two->getPrimerSequence( sequence_ );
85    r      += two->sprint( r, primer, "", max_primer_length, max_position_length , max_length_length );
86    free( primer );
87  }
88  else {
89    r += sprintf( r, "(error)" );
90  }
91
92  return result;
93}
94
95
96//
97// print pair with the values of the items
98//
99void Pair::print ( const char *prefix_, const char *suffix_, const char *sequence_ )
100{
101    const char *result = get_result(sequence_, 0, 0, 0);
102    printf("%s[%s]%s", prefix_, result, suffix_);
103}
Note: See TracBrowser for help on using the repository browser.