BALL
1.4.1
|
00001 // -*- Mode: C++; tab-width: 2; -*- 00002 // vi: set ts=2: 00003 // 00004 // $Id: forEach.h,v 1.16 2004/02/18 23:24:04 oliver Exp $ 00005 // 00006 00007 #ifndef BALL_KERNEL_FOREACH_H 00008 #define BALL_KERNEL_FOREACH_H 00009 00010 // This is mostly to allow Doxygen to put the macros to where they belong 00011 namespace BALL 00012 { 00013 00019 00027 #define BALL_FOREACH_MOLECULE(molecule_container, molecule_iterator) \ 00028 for (molecule_iterator = (molecule_container).beginMolecule(); \ 00029 !molecule_iterator.isEnd(); ++molecule_iterator) 00030 00031 00039 #define BALL_FOREACH_FRAGMENT(fragment_container, fragment_iterator) \ 00040 for (fragment_iterator = (fragment_container).beginFragment(); \ 00041 !fragment_iterator.isEnd(); ++fragment_iterator) 00042 00043 00051 #define BALL_FOREACH_ATOMCONTAINER(atom_containers, atom_container_iterator) \ 00052 for (atom_container_iterator = (atom_containers).beginAtomContainer(); \ 00053 !atom_container_iterator.isEnd(); ++atom_container_iterator) 00054 00055 00063 #define BALL_FOREACH_ATOM(atom_container, atom_iterator) \ 00064 for (atom_iterator = (atom_container).beginAtom(); \ 00065 !atom_iterator.isEnd(); ++atom_iterator) 00066 00067 00076 #define BALL_FOREACH_ATOM_BOND(bond_container, bond_iterator) \ 00077 for (bond_iterator = (bond_container).beginBond(); \ 00078 !bond_iterator.isEnd(); ++bond_iterator) 00079 00080 00089 #define BALL_FOREACH_ATOM_PAIR(atom_container, first_atom_iterator, second_atom_iterator) \ 00090 for (first_atom_iterator = (atom_container).beginAtom(); \ 00091 !first_atom_iterator.isEnd(); ++first_atom_iterator) \ 00092 for (second_atom_iterator = (atom_container).beginAtom(); \ 00093 !second_atom_iterator.isEnd(); ++second_atom_iterator) \ 00094 if ((*first_atom_iterator) < (*second_atom_iterator)) 00095 00096 00107 #define BALL_FOREACH_BOND(atom_container, atom_iterator, bond_iterator) \ 00108 for (atom_iterator = (atom_container).beginAtom(); \ 00109 !atom_iterator.isEnd(); ++atom_iterator) \ 00110 for (bond_iterator = (*atom_iterator).beginBond(); \ 00111 !bond_iterator.isEnd(); ++bond_iterator) \ 00112 if ((*bond_iterator).getFirstAtom() == &(*atom_iterator) \ 00113 || !(atom_container).isAncestorOf(*(*bond_iterator).getFirstAtom())) 00114 00115 00123 #define BALL_FOREACH_INTERBOND(atom_container, atom_iterator, bond_iterator) \ 00124 for (atom_iterator = (atom_container).beginAtom(); \ 00125 !atom_iterator.isEnd(); ++atom_iterator) \ 00126 for (bond_iterator = (*atom_iterator).beginBond(); \ 00127 !bond_iterator.isEnd(); ++bond_iterator) \ 00128 if (((*bond_iterator).getFirstAtom() == &(*atom_iterator) \ 00129 && !(atom_container).isAncestorOf(*(*bond_iterator).getSecondAtom())) \ 00130 || !(atom_container).isAncestorOf(*(*bond_iterator).getFirstAtom())) 00131 00132 00140 #define BALL_FOREACH_INTRABOND(atom_container, atom_iterator, bond_iterator) \ 00141 for (atom_iterator = (atom_container).beginAtom(); \ 00142 !atom_iterator.isEnd(); ++atom_iterator) \ 00143 for (bond_iterator = (*atom_iterator).beginBond(); \ 00144 !bond_iterator.isEnd(); ++bond_iterator) \ 00145 if ((*bond_iterator).getFirstAtom() == &(*atom_iterator) \ 00146 && (atom_container).isAncestorOf(*(*bond_iterator).getSecondAtom())) 00147 00148 00155 #define BALL_FOREACH_PROTEIN(protein_container, protein_iterator) \ 00156 for (protein_iterator = (protein_container).beginProtein(); \ 00157 !protein_iterator.isEnd(); ++protein_iterator) 00158 00159 00165 #define BALL_FOREACH_CHAIN(chain_container, chain_iterator) \ 00166 for (chain_iterator = (chain_container).beginChain(); \ 00167 !chain_iterator.isEnd(); ++chain_iterator) 00168 00169 00176 #define BALL_FOREACH_SECONDARYSTRUCTURE(secondary_structure_container, secondary_structure_iterator) \ 00177 for (secondary_structure_iterator = (secondary_structure_container).beginSecondaryStructure(); \ 00178 !secondary_structure_iterator.isEnd(); ++secondary_structure_iterator) 00179 00180 00186 #define BALL_FOREACH_RESIDUE(residue_container, residue_iterator) \ 00187 for (residue_iterator = (residue_container).beginResidue(); \ 00188 !residue_iterator.isEnd(); \ 00189 ++residue_iterator) 00190 00191 00197 #define BALL_FOREACH_PDBATOM(pdb_atom_container, pdb_atom_iterator) \ 00198 for (pdb_atom_iterator = (pdb_atom_container).beginPDBAtom(); \ 00199 !pdb_atom_iterator.isEnd(); ++pdb_atom_iterator) 00200 00202 00203 } // namespace BALL 00204 00205 #endif // BALL_KERNEL_FOREACH_H