19 void SEC_bond_def::clear() {
28 int SEC_bond_def::get_index(
char base)
const {
29 if (base == 0)
return -1;
32 const char *found = strchr(allowed, toupper(base));
34 if (!found)
return -1;
36 int idx =
int(found-allowed);
41 GB_ERROR SEC_bond_def::insert(
const char *pairs,
char pair_char) {
44 if (pair_char==0) pair_char =
' ';
54 char c2 = pairs[idx++];
57 if (c1) error =
"Odd number of characters in pair definition";
60 if (c2 ==
' ')
continue;
61 if (c1==0) { c1 = c2;
continue; }
63 int i1 = get_index(c1);
64 int i2 = get_index(c2);
66 if (i1==-1 || i2==-1) {
67 char ic = i1==-1 ? c1 : c2;
72 bond[i1][i2] = pair_char;
73 bond[i2][i1] = pair_char;
78 if (error && pair_char !=
'@') {
84 char SEC_bond_def::get_bond(
char base1,
char base2)
const {
85 int i1 = get_index(base1);
86 int i2 = get_index(base2);
88 if (i1==-1 || i2==-1) {
94 char *SEC_bond_def::get_pair_string(
char pair_char) {
95 char *
str = ARB_alloc<char>(5*5*3+1);
100 if (bond[i][j] == pair_char) {
101 if (ins>str) *ins++ =
' ';
const char * GBS_global_string(const char *templat,...)
#define SEC_BOND_BASE_CHAR
#define SEC_BOND_PAIR_CHAR
static void error(const char *msg)
#define SEC_BOND_BASE_CHARS