|
| | Metallic () |
| |
| | Metallic (const Metallic &other) |
| |
| virtual | ~Metallic () |
| |
| Metallic & | operator= (const Metallic &other) |
| |
| Pointer< T > | Object () |
| |
| Pointer< const T > | Object () const |
| |
| | Atom () |
| |
| | Atom (const Atom &other) |
| |
| virtual | ~Atom () |
| |
| void | CloneBondsFrom (const Atom &other, BondClonePolicy policy=&Atom::DefaultBondClonePolicy) |
| |
| virtual Pointer< const physical::Symmetry > | Spin () const |
| |
| virtual Code | Reify (Pointer< const physical::Symmetry > symmetry) |
| |
| virtual Code | Attenuate (Pointer< const physical::Wave > other) |
| |
| virtual Code | Disattenuate (Pointer< const physical::Wave > other) |
| |
| Pointer< physical::Wave > | GetBonded (Valence position) |
| |
| Pointer< const physical::Wave > | GetBonded (Valence position) const |
| |
| Pointer< const physical::Wave > | ResolveBondedForReadById (AtomicNumber bondId) const |
| |
| Pointer< physical::Wave > | ResolveBondedForWriteById (AtomicNumber bondId) |
| |
| template<typename T > |
| Cow< T > | AsBonded () const |
| |
| template<typename T > |
| Pointer< T > | AsBondedQuantum () const |
| |
| template<typename T > |
| atom_detail::AsResultType< T, type::IsWaveImplementation< typenametype::RemovePointer< T >::Type >::sValue >::Type | As () const |
| |
| template<typename T > |
| | operator T () const |
| |
| template<typename T > |
| Valence | FormBond (T toBond, BondType type=bond_type::Unknown()) |
| |
| template<typename T > |
| bool | BreakBond (T toDisassociate, BondType type=bond_type::Unknown()) |
| |
| Valence | GetBondPosition (AtomicNumber bondedId) const |
| |
| Valence | GetBondPosition (const Name &typeName) const |
| |
| Valence | GetBondPositionLocked (AtomicNumber bondedId) const |
| |
| template<typename T > |
| Valence | GetBondPosition () const |
| |
| BondType | GetBondType (Valence position) const |
| |
| template<typename T > |
| BondType | GetBondType () const |
| |
| Pointer< Bonds > | GetAllBonds () |
| |
| Pointer< const Bonds > | GetAllBonds () const |
| |
| void | ForEachBond (BondVisitor visitor, void *context=NULL) const |
| |
| void | ForEachBondMutable (BondMutator mutator, void *context=NULL) |
| |
| virtual Valence | FormBondImplementation (Pointer< physical::Wave > toBond, AtomicNumber id, BondType type) |
| |
| Valence | FormBondImplementation (Pointer< physical::Wave > toBond, AtomicNumber id, BondType type, bool ownsBonded) |
| |
| Valence | FormBondImplementationLocked (Pointer< physical::Wave > toBond, AtomicNumber id, BondType type, bool ownsBonded) |
| |
| virtual bool | BreakBondImplementation (AtomicNumber id, BondType type) |
| |
| bool | BreakBondImplementationLocked (AtomicNumber id, BondType type) |
| |
| | Class (Pointer< Atom > object, Pointer< Symmetry > symmetry=NULL) |
| |
| | Class (Pointer< Atom > object, SymmetryFactory symmetryFactory) |
| |
| | Class (const Class &other) |
| |
| virtual | ~Class () |
| |
| virtual Pointer< Atom > | GetWaveObject () |
| |
| virtual Pointer< const Atom > | GetWaveObject () const |
| |
| virtual | operator Atom & () |
| |
| virtual | operator const Atom & () const |
| |
| virtual Pointer< Wave > | Clone () const |
| |
| Pointer< Wave > | AsWave () |
| |
| Pointer< const Wave > | AsWave () const |
| |
| virtual | operator Pointer< Wave > () |
| |
| | Wave (Pointer< Symmetry > symmetry=NULL) |
| |
| | Wave (const Wave &other) |
| |
| Wave & | operator= (const Wave &other) |
| |
| virtual | ~Wave () |
| |
| virtual Properties | GetProperties () const |
| |
| Pointer< const Symmetry > | GetSymmetry () const |
| |
| virtual bool | Superpose (Pointer< const Wave > displacement, Pointer< Interference > pattern) |
| |
| virtual Pointer< Wave > | Superpose (const ConstWaves &displacement, Pointer< Interference > pattern) |
| |
| virtual Pointer< Wave > | Modulate (Pointer< Wave > signal) |
| |
| virtual Pointer< Wave > | Demodulate () |
| |
| virtual Pointer< const Wave > | Demodulate () const |
| |
| Pointer< Wave > | AsWave () |
| |
| Pointer< const Wave > | AsWave () const |
| |
| virtual Pointer< chemical::Atom > | AsAtom () |
| |
| virtual Pointer< const chemical::Atom > | AsAtom () const |
| |
| virtual void | operator| (Pointer< Symmetry > symmetry) |
| |
| virtual Pointer< Wave > | operator* (Pointer< Wave > signal) |
| |
| virtual Pointer< Wave > | operator* () |
| |
| virtual Pointer< const Wave > | operator* () const |
| |
| virtual void | operator+ (Pointer< const Wave > other) |
| |
| virtual void | operator- (Pointer< const Wave > other) |
| |
| uint16_t | GetTypeId () const |
| |
| void | SetTypeId (uint16_t typeId) |
| |
| | ThreadSafe () |
| |
| | ThreadSafe (const ThreadSafe &toCopy) |
| |
| ThreadSafe & | operator= (const ThreadSafe &toCopy) |
| |
| | ~ThreadSafe () |
| |
| void | LockThread () const |
| |
| void | UnlockThread () const |
| |
| void | LockMutexShared () const |
| |
| void | UnlockMutexShared () const |
| |
template<
class T>
class bio::Metallic< T >
Metallic bonds create a "horizontal inheritance" similar to Covalent bonds.
With Metallic bonds, all Bonds are shared between the Bonding objects.
This solves the problem of Bonding a child class but trying to use As< ParentClass >().
However, this introduces the limitation of not being able to Bond more than one object of the same type.
If both of the objects being Bonded have already Bonded to an object of the same type, the behavior is undefined (ideally neither class is affected & the result of As< SharedClass >() depends on which object you start with.
When instantiating a Metallic class, a new T will be created and Metallicly bonded to the child class of *this (through the shared Atom).
Each Metallic Bond has a distinct Type based on the template it is constructed with. This type helps to identify which Bonds have been shared.
You may get the BondType *this uses with GetBondType().
IMPORTANT NOTE: Metallic Bonds are only updated when a new Metallic Bond is created.
NOTE: atm, there is no way to provide arguments to the new Ts.
See Atom.h for more on Bonds.
- Template Parameters
-