The Intrinsic Secondary Structure Classes are:
friend class IntrCompound;
friend class SStrucIter;
friend class SubEntityIter;
friend class LinearSSList;
protected:
void * _next;
void * _previous;
CompSubStruc * _compSubStrucSelf;
IntrCompSubStruc();
IntrCompSubStruc(const IntrCompSubStruc& );
#if NEED_OBJECTSTORE
// To satisfy OSCC compiler.
virtual void AddAfter(void*) {}
virtual void InsertBefore(void*) {}
#else
virtual void AddAfter(void*)=0;
virtual void InsertBefore(void*)=0;
#endif
SSTRUCTYPE _type;
char _name[4]; //use to be identifier.
public:
virtual ~IntrCompSubStruc(){delete _subEntityList;}
ListMgr *_subEntityList;
void * Next() const {return _next;}
void * Previous() const {return _previous;}
SSTRUCTYPE MyType() const {return _type;}
char * MyName() const {return (char*)_name;}
void SetName(char *name) {strcpy(_name,name);}
void DeleteMySubEntityList() {if (_subEntityList) {
delete _subEntityList;
_subEntityList=0;
} //purified
}
#if NEED_OBJECTSTORE
// To satisfy OSCC compiler.
virtual const Compound * MyCompound() const {return 0;}
virtual CompSubStruc* MyCompSubStruc() const {return 0;}
#else
virtual const Compound * MyCompound() const=0;
virtual CompSubStruc* MyCompSubStruc() const = 0;
#endif
};
public: IntrHelix(); IntrHelix(const IntrHelix&); int _helixClass; };
protected:
IntrTurn(){_type=TURN;}
IntrTurn(const IntrTurn& t) : SStrucSE(t){}
};
Compound * _compound;
public:
IntrMultiEntitySubStruc(){ _compound=NULL; _subEntityList=NULL;}
IntrMultiEntitySubStruc(const IntrMultiEntitySubStruc& m)
: CompSubStruc(m) { _compound=m._compound; }
const Compound * MyCompound() const {return _compound;}
MultiEntitySubStruc *NextMultiEntitySubStruc() const {
return (MultiEntitySubStruc*)_next;
}
MultiEntitySubStruc *PreviousMultiEntitySubStruc() const {
return (MultiEntitySubStruc*)_previous;
}
void AssignCompound(Compound& c){_compound=&c;}
CompSubStruc * MyCompSubStruc() const {return _compSubStrucSelf;}
};
protected:
IntrSStruc(){};
IntrSStruc(const IntrSStruc& s) : CompSubStruc(s){ }
virtual ~IntrSStruc();
public:
SStruc * NextSStruc() const {return (SStruc*)_next;}
SStruc * PreviousSStruc() const {return (SStruc*)_previous;}
CompSubStruc * MyCompSubStruc() const {return _compSubStrucSelf;}
};
//
// UniEntitySStruc
//
friend class IntrPdbFile;
friend class IntrEntity;
protected:
IntrSStrucSE();
IntrSStrucSE(const IntrSStrucSE&);
~IntrSStrucSE();
Entity *_entity;
char * _comment;
void AddAfter(void*);
void InsertBefore(void*);
int _serialNum;
public:
SubEntity * _beginSubEntity;
SubEntity * _endSubEntity;
Entity *MyEntity() const {return _entity;}
char *MyComment() const {return _comment;}
int MySerialNumber() const {return _serialNum;}
SubEntity * MyBeginSubEntity() const {return _beginSubEntity;}
SubEntity * MyEndSubEntity() const {return _endSubEntity;}
const Compound *MyCompound() const;
int AssignSubEntities(SubEntity& subentity1, SubEntity& subentity2);
void AddSStrucSEAfter(SStrucSE* s){AddAfter(s);}
void InsertSStrucSEBefore(SStrucSE* s){InsertBefore(s);}
SStrucSE *NextSStrucSE(){return (SStrucSE*)NextSStruc();}
};
protected:
void AddAfter(void*);
void InsertBefore(void*);
public:
LListOfSSConn *_ssConnectList;
IntrSheet(){
_ssConnectList=NEW_SEG(SECSTRUC_SEG,
LListOfSSConn::get_os_typespec(),1,LListOfSSConn)
_subEntityList=NEW_SEG(SECSTRUC_SEG,
MultiLinearListMgr::get_os_typespec(),1,
MultiLinearListMgr)
_type=SHEET;
}
IntrSheet(const IntrSheet & s) : SStruc(s), MultiEntitySubStruc(s)
{
_ssConnectList=NEW_SEG(SECSTRUC_SEG,
LListOfSSConn::get_os_typespec(),1,
LListOfSSConn(s._ssConnectList))
}
~IntrSheet() { delete _ssConnectList; }
void AddStrand(Strand *sp);
void AddConnection(SStrucSE* current,
SStrucSE* previous,
HydroBond* hb, PARALLELISM parallel){
_ssConnectList->AddConnection(current, previous, hb, parallel);
}
HydroBond * NewHydroBond(SubEntity*, SubEntity*, char*, char*);
SSConnectivity * SSConnectivityOf(Strand* s);
HydroBond * HydroBondBetween(Strand*, Strand*) const;
PARALLELISM ParallelismOf(Strand*, Strand*) const;
Sheet * NextSheet() const {return (Sheet*)_next;}
Sheet * PreviousSheet() const {return (Sheet*)_previous;}
Strand * FindStrand(Strand*) const;
Strand * FindStrand(char*) const;
void Merge(Sheet*);
void RemoveSelfFromList();
void AddSheetAfter(Sheet* s){AddAfter(s);}
void InsertSheetBefore(Sheet* s){InsertBefore(s);}
const Compound * MyCompound() const {
return MultiEntitySubStruc::MyCompound();
}
const SSList * MySSList() const {return _ssConnectList;}
CompSubStruc * MyCompSubStruc() const {return _compSubStrucSelf;}
#if NEED_OBJECTSTORE
static os_typespec *get_os_typespec();
#endif
};
protected:
void AddAfter(void*);
void InsertBefore(void*);
public:
IntrSite(){
_type=SITE;
}
IntrSite(const IntrSite& s) : MultiEntitySubStruc(s) {}
Site* NextSite() const {return (Site*)_next;}
Site* PreviousSite() const {return (Site*)_previous;}
void AddSiteAfter(Site* s){AddAfter(s);}
void InsertSiteBefore(Site* s){InsertBefore(s);}
void AddSubEntity(SubEntity*);
};
protected:
Sheet * _sheet;
IntrStrand();
IntrStrand(const IntrStrand&);
public:
Sheet *MySheet() const {return _sheet;}
};
Currently under Heavy Construction, please excuse the mess
jcooper@cuhhca.hhmi.columbia.edu