Public Member Functions | |
| ResidueLookupElem (void) | |
| ~ResidueLookupElem (void) | |
| int | lookup (const char *segid, int resid, int *begin, int *end) const |
| ResidueLookupElem * | append (const char *segid, int resid, int aid) |
Public Attributes | |
| char | mySegid [11] |
| ResidueLookupElem * | next |
| int | firstResid |
| int | lastResid |
| ResizeArray< int > | atomIndex |
|
|
Definition at line 67 of file Molecule.C. 00067 { next = 0; firstResid = -1; lastResid = -1; }
|
|
|
Definition at line 68 of file Molecule.C. 00068 { delete next; }
|
|
||||||||||||||||
|
Definition at line 93 of file Molecule.C. References ResizeArray< Elem >::add(), atomIndex, firstResid, iout, iWARN(), lastResid, mySegid, and next. 00094 {
00095 ResidueLookupElem *rval = this;
00096 if ( firstResid == -1 ) { // nothing added yet
00097 strcpy(mySegid,segid);
00098 firstResid = resid;
00099 lastResid = resid;
00100 atomIndex.add(aid);
00101 atomIndex.add(aid+1);
00102 } else if ( ! strcasecmp(mySegid,segid) ) { // same segid
00103 if ( resid == lastResid ) { // same resid
00104 atomIndex[lastResid - firstResid + 1] = aid + 1;
00105 } else if ( resid < lastResid ) { // error
00106 // We can work around this by creating a new segment.
00107 iout << iWARN << "Residue " << resid <<
00108 " out of order in segment " << segid <<
00109 ", lookup for additional residues in this segment disabled.\n" << endi;
00110 rval = next = new ResidueLookupElem;
00111 next->append(segid,resid,aid);
00112 } else { // new resid
00113 for ( ; lastResid < resid; ++lastResid ) atomIndex.add(aid);
00114 atomIndex[lastResid - firstResid + 1] = aid + 1;
00115 }
00116 } else { // new segid
00117 rval = next = new ResidueLookupElem;
00118 next->append(segid,resid,aid);
00119 }
00120 return rval;
00121 }
|
|
||||||||||||||||||||
|
Definition at line 80 of file Molecule.C. References atomIndex, firstResid, lastResid, mySegid, and next. Referenced by Molecule::get_atom_from_index_in_residue(), Molecule::get_atom_from_name(), and Molecule::get_residue_size(). 00081 {
00082 const ResidueLookupElem *elem = this;
00083 int rval = -1; // error
00084 while ( elem && strcasecmp(elem->mySegid,segid) ) elem = elem->next;
00085 if ( elem && (resid >= elem->firstResid) && (resid <= elem->lastResid) ) {
00086 *begin = elem->atomIndex[resid - elem->firstResid];
00087 *end = elem->atomIndex[resid - elem->firstResid + 1];
00088 rval = 0; // no error
00089 }
00090 return rval;
00091 }
|
|
|
Definition at line 65 of file Molecule.C. |
|
|
Definition at line 63 of file Molecule.C. |
|
|
Definition at line 64 of file Molecule.C. |
|
|
Definition at line 61 of file Molecule.C. |
|
|
Definition at line 62 of file Molecule.C. |
1.3.9.1