There are many useful functors already defined in OEChem. These can be used by programmers with little or no understanding of the details of how functors work. A programmer can simply pass them to one of the many OEChem functions which take predicates as arguments with the expectation that they will behave as described in the api manual.
The predefined functors in OEChem include:
OEAtomBase Functors
OEHasAtomIdx(int) OEHasAtomName(string) OEHasMapIdx(int=0) OEHasAtomicNum(int) OEIsRGroup(int=0) OENthAtom(int,int) OEMatchFunc(string) OEAtomIsInRing OEIsChiralAtom OEHasStereoSpecified OEHasAlphaBetaUnsat OEAtomIsInResidue OEIsHydrogen OEIsHeavy OEIsPolar OEIsPolarHydrogen OEIsCarbon OEIsNitrogen OEIsOxygen OEIsHalogen OEIsSulfur OEIsPhosphorus OEIsAromaticAtom
Residue data Functors in OEAtomBases
OEHasChainID(string) OEHasResidueNumber(int) OEHasFragmentNumber(int)
OEBondBase Functors
OEHasBondIdx(int) OEHasOrder(int) OEBondIsInRing OEIsRotor OEIsChiralBond OEHasBondStereoSpecified OEIsAromaticBond
OEConfBase Functors
OEHasConfIdx(int)