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 60 of file Molecule.C. 00060 { next = 0; firstResid = -1; lastResid = -1; }
|
|
|
Definition at line 61 of file Molecule.C. 00061 { delete next; }
|
|
||||||||||||||||
|
Definition at line 79 of file Molecule.C. References ResizeArray< Elem >::add(), atomIndex, firstResid, iout, iWARN(), lastResid, mySegid, and next. Referenced by Molecule::read_parm(). 00080 {
00081 ResidueLookupElem *rval = this;
00082 if ( firstResid == -1 ) { // nothing added yet
00083 strcpy(mySegid,segid);
00084 firstResid = resid;
00085 lastResid = resid;
00086 atomIndex.add(aid);
00087 atomIndex.add(aid+1);
00088 } else if ( ! strcasecmp(mySegid,segid) ) { // same segid
00089 if ( resid == lastResid ) { // same resid
00090 atomIndex[lastResid - firstResid + 1] = aid + 1;
00091 } else if ( resid < lastResid ) { // error
00092 // We can work around this by creating a new segment.
00093 iout << iWARN << "Residue " << resid <<
00094 " out of order in segment " << segid <<
00095 ", lookup for additional residues in this segment disabled.\n" << endi;
00096 rval = next = new ResidueLookupElem;
00097 next->append(segid,resid,aid);
00098 } else { // new resid
00099 for ( ; lastResid < resid; ++lastResid ) atomIndex.add(aid);
00100 atomIndex[lastResid - firstResid + 1] = aid + 1;
00101 }
00102 } else { // new segid
00103 rval = next = new ResidueLookupElem;
00104 next->append(segid,resid,aid);
00105 }
00106 return rval;
00107 }
|
|
||||||||||||||||||||
|
Definition at line 66 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(). 00067 {
00068 const ResidueLookupElem *elem = this;
00069 int rval = -1; // error
00070 while ( elem && strcasecmp(elem->mySegid,segid) ) elem = elem->next;
00071 if ( elem && (resid >= elem->firstResid) && (resid <= elem->lastResid) ) {
00072 *begin = elem->atomIndex[resid - elem->firstResid];
00073 *end = elem->atomIndex[resid - elem->firstResid + 1];
00074 rval = 0; // no error
00075 }
00076 return rval;
00077 }
|
|
|
Definition at line 58 of file Molecule.C. |
|
|
Definition at line 56 of file Molecule.C. |
|
|
Definition at line 57 of file Molecule.C. |
|
|
Definition at line 54 of file Molecule.C. |
|
|
Definition at line 55 of file Molecule.C. |
1.3.9.1