Develop Biology
The language of life
bio::chemical::Atom Class Reference

#include <Atom.h>

+ Inheritance diagram for bio::chemical::Atom:
+ Collaboration diagram for bio::chemical::Atom:

Public Member Functions

 Atom (const Atom &other)
 
virtual ~Atom ()
 
template<typename T >
As ()
 
template<typename T >
const T As () const
 
template<typename T >
AsBonded ()
 
template<typename T >
const T AsBonded () const
 
template<typename T >
AsBondedQuantum ()
 
template<typename T >
const T AsBondedQuantum () const
 
virtual Code Attenuate (const Wave *other)
 
 BIO_DISAMBIGUATE_ALL_CLASS_METHODS (physical, Atom) explicit Atom()
 
template<typename T >
bool BreakBond (T toDisassociate, BondType type=bond_type::Unknown())
 
virtual Code Disattenuate (const Wave *other)
 
template<typename T >
bool FormBond (T toBond, BondType type=bond_type::Unknown())
 
BondsGetAllBonds ()
 
const BondsGetAllBonds () const
 
WaveGetBonded (Valence position)
 
const WaveGetBonded (Valence position) const
 
template<typename T >
Valence GetBondPosition () const
 
Valence GetBondPosition (AtomicNumber bondedId) const
 
Valence GetBondPosition (Name typeName) const
 
template<typename T >
BondType GetBondType () const
 
BondType GetBondType (Valence position) const
 
template<typename T >
 operator T ()
 
virtual Code Reify (physical::Symmetry *symmetry)
 
virtual physical::SymmetrySpin () const
 
- Public Member Functions inherited from bio::physical::Class< Atom >
 Class (Atom *object, Symmetry *symmetry=NULL)
 
virtual ~Class ()
 
virtual WaveAsWave ()
 
virtual const WaveAsWave () const
 
virtual WaveClone () const
 
Atom * Convert (Wave *wave)
 
virtual operator Atom * ()
 
virtual operator Wave * ()
 
- Public Member Functions inherited from bio::physical::Wave
 Wave (Symmetry *symmetry=NULL)
 
virtual ~Wave ()
 
virtual chemical::AtomAsAtom ()
 
virtual const chemical::AtomAsAtom () const
 
virtual WaveAsWave ()
 
virtual const WaveAsWave () const
 
virtual Code Attenuate (const Wave *other)
 
virtual WaveClone () const
 
virtual WaveDemodulate ()
 
virtual const WaveDemodulate () const
 
virtual Code Disattenuate (const Wave *other)
 
virtual Properties GetProperties () const
 
virtual WaveModulate (Wave *signal)
 
virtual Waveoperator* ()
 
virtual const Waveoperator* () const
 
virtual Waveoperator* (Wave *signal)
 
virtual void operator+ (const Wave *other)
 
virtual void operator- (const Wave *other)
 
virtual void operator| (Symmetry *symmetry)
 
virtual Code Reify (Symmetry *symmetry)
 
virtual SymmetrySpin () const
 

Protected Member Functions

virtual bool BreakBondImplementation (Wave *toDisassociate, AtomicNumber id, BondType type)
 
virtual bool FormBondImplementation (Wave *toBond, AtomicNumber id, BondType type)
 

Protected Attributes

Bonds m_bonds
 
- Protected Attributes inherited from bio::physical::Class< Atom >
Atom * m_object
 
- Protected Attributes inherited from bio::physical::Wave
Wavem_signal
 
Symmetrym_symmetry
 

Additional Inherited Members

- Static Public Member Functions inherited from bio::physical::Wave
static Properties GetResonanceBetween (const Wave *wave, const Properties &properties)
 
static Properties GetResonanceBetween (const Wave *wave1, const Wave *wave2)
 
static Properties GetResonanceBetween (ConstWaves waves)
 

Detailed Description

Atom MUST be virtually inherited! Atom is an interface for other implementations. Atom objects form Bonds with Waves (such as Quantum Waves, like real-life electrons). Counter to how atoms are often described, here, you can Bond things that are not Atoms (iff they are a Wave). This is similar to forming ionic bonds or radicals where the "bonded" target is a sub-atomic particle (also a shared resource). Waves have a unique class name to Id mapping that is stored in the PeriodicTable. Atom objects take advantage of this to store and retrieve pointers to any type. Bonds are arbitrarily flexible, so this system can be (ab)used in many ways. Unlike real chemistry, the actual valence of a Atom changes to accommodate new Bonds. NOTE: m_bonds[0] is always empty. This may change in a future release.

NOTE: iff using a C++ version below 11, only Quantum<> Bonds are supported. This is due to an inability to evaluate IsPrimitive<>() expressions at compile time and the compiler following all "possible" execution paths, which are necessarily incompatible.

Definition at line 50 of file Atom.h.

Constructor & Destructor Documentation

◆ Atom()

bio::chemical::Atom::Atom ( const Atom other)
explicit

We CANNOT copy Atoms contents at this time. m_bonds must contain uniquely bonded Waves.

Parameters
other

Definition at line 29 of file Atom.cpp.

30 :
31 physical::Class< Atom >(this),
32 m_bonds(4)
33{
34}

◆ ~Atom()

bio::chemical::Atom::~Atom ( )
virtual

Definition at line 44 of file Atom.cpp.

45{
46
47}

Member Function Documentation

◆ As() [1/2]

template<typename T >
T bio::chemical::Atom::As ( )
inline

This method is here so that we can add different As____ methods without changing the downstream interfaces.

Template Parameters
T
Returns
this as a T or NULL.

Definition at line 176 of file Atom.h.

177 {
178 #if BIO_CPP_VERSION < 11
179 return AsBondedQuantum< T >();
180 #else
181 if (IsPrimitive< T >())
182 {
183 return AsBondedQuantum< T >();
184 }
185 else
186 {
187 return AsBonded< T >();
188 }
189 #endif
190 }

Referenced by bio::chemical::LinearMotif< CONTENT_TYPE >::Attenuate(), bio::chemical::LinearMotif< CONTENT_TYPE >::Disattenuate(), and bio::chemical::LinearMotif< CONTENT_TYPE >::ForEachImplementation().

◆ As() [2/2]

template<typename T >
const T bio::chemical::Atom::As ( ) const
inline

Const version of As(). This method is here so that we can add different As____ methods without changing the downstream interfaces.

Template Parameters
T
Returns
this as a const T or NULL.

Definition at line 199 of file Atom.h.

200 {
201 #if BIO_CPP_VERSION < 11
202 return AsBondedQuantum< T >();
203 #else
204 if (IsPrimitive< T >())
205 {
206 return AsBondedQuantum< T >();
207 }
208 else
209 {
210 return AsBonded< T >();
211 }
212 #endif
213 }

◆ AsBonded() [1/2]

template<typename T >
T bio::chemical::Atom::AsBonded ( )
inline

Gets the bond to an bonded of type T from this, then casts the Bond()ed Wave to T.

Template Parameters
T
Returns
a T* that is Bond()ed with *this; else NULL.

Definition at line 125 of file Atom.h.

126 {
127 Valence position = GetBondPosition< T >();
128 BIO_SANITIZE(position, ,
129 return NULL);
130 return ForceCast< T >(m_bonds.OptimizedAccess(position)->GetBonded());
131 }
#define BIO_SANITIZE(test, success, failure)
virtual TYPE OptimizedAccess(Index index)
Definition: Arrangement.h:128
Index Valence
Definition: Types.h:65

References BIO_SANITIZE, m_bonds, and bio::physical::Arrangement< TYPE >::OptimizedAccess().

Referenced by AsBondedQuantum().

◆ AsBonded() [2/2]

template<typename T >
const T bio::chemical::Atom::AsBonded ( ) const
inline

Gets the bond to an bonded of type T from this, then casts the Bond()ed Wave to T.

Template Parameters
T
Returns
a const T* that is Bond()ed with *this; else NULL.

Definition at line 139 of file Atom.h.

140 {
141 Valence position = GetBondPosition< T >();
142
143 BIO_SANITIZE(position, ,
144 return NULL);
145 return ForceCast< const T >(m_bonds.OptimizedAccess(position)->GetBonded());
146 }

References BIO_SANITIZE, m_bonds, and bio::physical::Arrangement< TYPE >::OptimizedAccess().

◆ AsBondedQuantum() [1/2]

template<typename T >
T bio::chemical::Atom::AsBondedQuantum ( )
inline

If T IsPrimitive(), you can use *this to get the Bonded Quantum Wave for that primitive.

Template Parameters
T
Returns
this as a T, from a Bonded Quantum Wave, or NULL.

Definition at line 154 of file Atom.h.

155 {
156 return Cast< T >(AsBonded< physical::Quantum< T >* >());
157 }

References AsBonded().

◆ AsBondedQuantum() [2/2]

template<typename T >
const T bio::chemical::Atom::AsBondedQuantum ( ) const
inline

Const version of AsBondedQuantum().

Template Parameters
T
Returns
this as a const T, from a Bonded Quantum Wave.

Definition at line 165 of file Atom.h.

166 {
167 return *AsBonded< physical::Quantum< T >* >();
168 }

◆ Attenuate()

Code bio::chemical::Atom::Attenuate ( const Wave other)
virtual

If the given Wave Resonates with any Bonded Wave in *this, the given Wave will be Demodulated and Attenuated by the Bonded Wave. Attenuation here operates slightly differently from the real world concept. Because we have a continuous flow of electrons providing the power to run this code, doing work is essentially free (or at least abstracted and we don't HAVE to worry about it), Attenuation is more like amplification, where flux, in terms of work, is generated, rather than dispersed. However, if we treat some desired state as flux and any deviation from that state as offering resistance, "information flux" is lost as the desired state is approached, making Attenuation technically correct.

Parameters
other

Definition at line 49 of file Atom.cpp.

50{
51 BIO_SANITIZE(other, ,
52 return code::BadArgument1())
53
54 const physical::Wave* demodulated = other->Demodulate();
55 Code ret = code::Success();
56
57 Bond* bondBuffer;
58 for (
59 SmartIterator bnd = m_bonds.End();
60 !bnd.IsAtBeginning();
61 --bnd
62 )
63 {
64 bondBuffer = bnd;
65 if (bondBuffer->IsEmpty())
66 {
67 continue;
68 }
70 bondBuffer->GetBonded(),
71 other
72 ).size())
73 {
74 if (bondBuffer->GetBonded()->Attenuate(demodulated) != code::Success())
75 {
76 ret = code::UnknownError(); //user can debug from logs for now.
77 }
78 }
79 }
80 return ret;
81}
virtual Wave * Demodulate()
Definition: Wave.cpp:99
Wave(Symmetry *symmetry=NULL)
Definition: Wave.cpp:32
static Properties GetResonanceBetween(ConstWaves waves)
Definition: Wave.cpp:209
Code UnknownError()
Code BadArgument1()
Code Success()

References bio::physical::Wave::Attenuate(), bio::code::BadArgument1(), BIO_SANITIZE, bio::physical::Wave::Demodulate(), bio::Container::End(), bio::chemical::Bond::GetBonded(), bio::physical::Wave::GetResonanceBetween(), bio::SmartIterator::IsAtBeginning(), bio::chemical::Bond::IsEmpty(), m_bonds, bio::code::Success(), and bio::code::UnknownError().

◆ BIO_DISAMBIGUATE_ALL_CLASS_METHODS()

bio::chemical::Atom::BIO_DISAMBIGUATE_ALL_CLASS_METHODS ( physical  ,
Atom   
)

Ensure virtual methods point to Class implementations.

◆ BreakBond()

template<typename T >
bool bio::chemical::Atom::BreakBond ( toDisassociate,
BondType  type = bond_type::Unknown() 
)
inline

Breaking a Bond Break()s the associated position. Removal of the Bond object is done upon destruction. Updating a Bond requires both Breaking and Forming steps to be done manually.

Template Parameters
T
Parameters
toDisassociate
type
Returns
true if the Bond was Broken; false otherwise.

Definition at line 279 of file Atom.h.

282 {
283 #if BIO_CPP_VERSION < 11
284 return BreakBond< physical::Quantum< T >* >(
285 NULL,
286 type
287 );
288 #else
289 if (IsPrimitive< T >())
290 {
291 return BreakBond< physical::Quantum< T >* >(NULL, type); //T matters, toDisassociate does not.
292 }
293
294 AtomicNumber bondedId = PeriodicTable::Instance().GetIdFromType< T >();
296 toDisassociate,
297 bondedId,
298 type
299 );
300 #endif
301 }
virtual bool BreakBondImplementation(Wave *toDisassociate, AtomicNumber id, BondType type)
Definition: Atom.cpp:148
uint16_t AtomicNumber
Definition: Types.h:72

References BreakBondImplementation().

◆ BreakBondImplementation()

bool bio::chemical::Atom::BreakBondImplementation ( Wave toDisassociate,
AtomicNumber  id,
BondType  type 
)
protectedvirtual

Remove a Bond.

Parameters
toDisassociate
id
type
Returns

Definition at line 148 of file Atom.cpp.

153{
154 Valence position = GetBondPosition(id);
155
156 BIO_SANITIZE(id && position, ,
157 return false);
158 BIO_SANITIZE(m_bonds.IsAllocated(position), ,
159 return false);
160
161 m_bonds.OptimizedAccess(position)->Break();
162 //Let dtor cleanup.
163
164 return true;
165}
virtual bool IsAllocated(const Index index) const
Definition: Container.cpp:107
Valence GetBondPosition() const
Definition: Atom.h:326

References BIO_SANITIZE, GetBondPosition(), bio::Container::IsAllocated(), m_bonds, and bio::physical::Arrangement< TYPE >::OptimizedAccess().

Referenced by BreakBond().

◆ Disattenuate()

Code bio::chemical::Atom::Disattenuate ( const Wave other)
virtual

If the given Wave Resonates with any Bonded Wave in *this, the given Wave will be Demodulated and Disattenuated by the Bonded Wave. This is the opposite of Attenuation (above).

Parameters
other

Definition at line 83 of file Atom.cpp.

84{
85 BIO_SANITIZE(other, ,
86 return code::BadArgument1())
87
88 const physical::Wave* demodulated = other->Demodulate();
89 Code ret = code::Success();
90
91 Bond* bondBuffer;
92 for (
93 SmartIterator bnd = m_bonds.End();
94 !bnd.IsAtBeginning();
95 --bnd
96 )
97 {
98 bondBuffer = bnd;
99 if (bondBuffer->IsEmpty())
100 {
101 continue;
102 }
104 bondBuffer->GetBonded(),
105 other
106 ).size())
107 {
108 if (bondBuffer->GetBonded()->Disattenuate(demodulated) != code::Success())
109 {
110 ret = code::UnknownError(); //user can debug from logs for now.
111 }
112 }
113 }
114 return ret;
115}

References bio::code::BadArgument1(), BIO_SANITIZE, bio::physical::Wave::Demodulate(), bio::physical::Wave::Disattenuate(), bio::Container::End(), bio::chemical::Bond::GetBonded(), bio::physical::Wave::GetResonanceBetween(), bio::SmartIterator::IsAtBeginning(), bio::chemical::Bond::IsEmpty(), m_bonds, bio::code::Success(), and bio::code::UnknownError().

◆ FormBond()

template<typename T >
bool bio::chemical::Atom::FormBond ( toBond,
BondType  type = bond_type::Unknown() 
)
inline

Adds a new Bond to *this or updates an Empty Bond for T. Updating a Bond requires both Breaking and Forming steps to be done manually. You CANNOT bond the same T twice (without Breaking the initial Bond). See Molecule.h if you would like to Bond multiple Ts.

Template Parameters
TA pointer to an instance of a class deriving from Wave and which is not already Bonded.
Parameters
toBondwhat to Bond
Returns
true, if the Bond was created; false otherwise.

Definition at line 237 of file Atom.h.

240 {
241 #if BIO_CPP_VERSION < 11
242 AtomicNumber bondedId = PeriodicTable::Instance().GetIdFromType< physical::Quantum< T >* >();
243 return FormBondImplementation((new physical::Quantum< T >(toBond))->AsWave(),
244 bondedId,
245 type
246 );
247 #else
248 if (IsPrimitive< T >())
249 {
250 AtomicNumber bondedId = PeriodicTable::Instance().GetIdFromType< physical::Quantum< T >* >();
252 (new physical::Quantum< T >(toBond))->AsWave(),
253 bondedId,
254 type
255 );
256 }
257 else
258 {
259 AtomicNumber bondedId = PeriodicTable::Instance().GetIdFromType< T >();
261 toBond->AsWave(),
262 bondedId,
263 type
264 );
265 }
266 #endif
267 }
virtual bool FormBondImplementation(Wave *toBond, AtomicNumber id, BondType type)
Definition: Atom.cpp:117
virtual Wave * AsWave()
Definition: Class.h:99

References bio::physical::Class< Atom >::AsWave(), and FormBondImplementation().

Referenced by bio::molecular::Surface::Bind(), bio::molecular::Surface::Manage(), and bio::molecular::Surface::Use().

◆ FormBondImplementation()

bool bio::chemical::Atom::FormBondImplementation ( Wave toBond,
AtomicNumber  id,
BondType  type 
)
protectedvirtual

Create a Bond.

Parameters
toBond
id
type

Definition at line 117 of file Atom.cpp.

122{
123 BIO_SANITIZE(!toBond || !id, ,
124 return false);
125
126 Valence position = GetBondPosition(id);
127 Bond* bondBuffer;
128 if (m_bonds.IsAllocated(position))
129 {
130 bondBuffer = m_bonds.OptimizedAccess(position);
131 BIO_SANITIZE(!bondBuffer->IsEmpty(), ,
132 return false)
133 return bondBuffer->Form(
134 id,
135 toBond,
136 type
137 );
138 }
139 //implicitly cast the addition index to a bool.
140 return m_bonds.Add(
141 Bond(
142 id,
143 toBond,
144 type
145 ));
146}
Index Add(const ByteStream content)
Definition: Arrangement.h:60

References bio::physical::Arrangement< TYPE >::Add(), BIO_SANITIZE, bio::chemical::Bond::Form(), GetBondPosition(), bio::Container::IsAllocated(), bio::chemical::Bond::IsEmpty(), m_bonds, and bio::physical::Arrangement< TYPE >::OptimizedAccess().

Referenced by FormBond().

◆ GetAllBonds() [1/2]

Bonds * bio::chemical::Atom::GetAllBonds ( )

DANGEROUS!

Returns
a pointer to the Bonds in *this.

Definition at line 224 of file Atom.cpp.

225{
226 return &m_bonds;
227}

References m_bonds.

Referenced by bio::chemical::UnorderedStructureInterface::ImportAll().

◆ GetAllBonds() [2/2]

const Bonds * bio::chemical::Atom::GetAllBonds ( ) const

DANGEROUS! (but slightly less so).

Returns
a pointer to the Bonds in *this.

Definition at line 229 of file Atom.cpp.

230{
231 return &m_bonds;
232}

References m_bonds.

◆ GetBonded() [1/2]

physical::Wave * bio::chemical::Atom::GetBonded ( Valence  position)

Simply get a bond.

Parameters
position
Returns
the Bonded Wave*

Definition at line 210 of file Atom.cpp.

211{
212 BIO_SANITIZE(m_bonds.IsAllocated(position), ,
213 return NULL)
214 return m_bonds.OptimizedAccess(position)->GetBonded();
215}

References BIO_SANITIZE, bio::Container::IsAllocated(), m_bonds, and bio::physical::Arrangement< TYPE >::OptimizedAccess().

Referenced by bio::chemical::UnorderedStructureInterface::ImportAll(), and bio::chemical::LinearMotif< CONTENT_TYPE >::InsertImplementation().

◆ GetBonded() [2/2]

const physical::Wave * bio::chemical::Atom::GetBonded ( Valence  position) const

Simply get a bond.

Parameters
position
Returns
the Bonded Wave*

Definition at line 217 of file Atom.cpp.

218{
219 BIO_SANITIZE(m_bonds.IsAllocated(position), ,
220 return NULL)
221 return m_bonds.OptimizedAccess(position)->GetBonded();
222}

References BIO_SANITIZE, bio::Container::IsAllocated(), m_bonds, and bio::physical::Arrangement< TYPE >::OptimizedAccess().

◆ GetBondPosition() [1/3]

template<typename T >
Valence bio::chemical::Atom::GetBondPosition ( ) const
inline

GetBondPosition via a type, rather than an Wave Id.

Template Parameters
T
Returns
GetBondPosition() for the given type; else 0.

Definition at line 326 of file Atom.h.

327 {
328 #if BIO_CPP_VERSION < 11
329 return GetBondPosition(PeriodicTable::Instance().GetIdFromType< physical::Quantum< T >* >());
330 #else
331 if (IsPrimitive< T >())
332 {
333 return GetBondPosition(PeriodicTable::Instance().GetIdFromType< physical::Quantum< T >* >());
334 }
335 return GetBondPosition(PeriodicTable::Instance().GetIdFromType< T >());
336 #endif
337 }

References GetBondPosition().

Referenced by BreakBondImplementation(), FormBondImplementation(), GetBondPosition(), and GetBondType().

◆ GetBondPosition() [2/3]

Valence bio::chemical::Atom::GetBondPosition ( AtomicNumber  bondedId) const

Gives the array index of a Bond()ed Wave.

Parameters
bondedId
Returns
The position of the given Wave (Id) within *this; else 0.

Definition at line 168 of file Atom.cpp.

169{
170 BIO_SANITIZE(bondedId, ,
171 return 0);
172 for (
173 SmartIterator bnd = m_bonds.End();
174 !bnd.IsAtBeginning();
175 --bnd
176 )
177 {
178 if ((*bnd).template As< Bond >() == bondedId)
179 {
180 return bnd.GetIndex();
181 }
182 }
183 return 0;
184}
virtual SmartIterator End() const
Definition: Container.cpp:302
bool IsAtBeginning() const

References BIO_SANITIZE, bio::Container::End(), bio::SmartIterator::IsAtBeginning(), and m_bonds.

Referenced by bio::chemical::UnorderedStructureInterface::ImportAll(), and bio::chemical::Reactant::operator==().

◆ GetBondPosition() [3/3]

Valence bio::chemical::Atom::GetBondPosition ( Name  typeName) const

Converts the given typeName to and Id Gives the array index of a Bond()ed Wave.

Parameters
typeName
Returns
The position of the given Wave (Id) within *this; else 0.

Definition at line 186 of file Atom.cpp.

187{
188 return GetBondPosition(PeriodicTable::Instance().GetIdWithoutCreation(typeName));
189}

References GetBondPosition().

◆ GetBondType() [1/2]

template<typename T >
BondType bio::chemical::Atom::GetBondType ( ) const
inline

Get the type of a Bond.

Template Parameters
T
Returns
the BondType of the Bond for T or BondTypePerspective::InvalidId().

Definition at line 352 of file Atom.h.

353 {
354 #if BIO_CPP_VERSION < 11
355 return GetBondType(GetBondPosition< physical::Quantum< T > >());
356 #else
357 if (IsPrimitive< T >())
358 {
359 return GetBondType(GetBondPosition< physical::Quantum< T > >());
360 }
361 return GetBondType(GetBondPosition< T >());
362 #endif
363 }
BondType GetBondType() const
Definition: Atom.h:352

References GetBondPosition(), and GetBondType().

Referenced by GetBondType().

◆ GetBondType() [2/2]

BondType bio::chemical::Atom::GetBondType ( Valence  position) const

Get the type of a Bond.

Parameters
position
Returns
the BondType of the Bond at the given position or BondTypePerspective::InvalidId().

Definition at line 191 of file Atom.cpp.

192{
193 BIO_SANITIZE(m_bonds.IsAllocated(position), ,
194 return BondTypePerspective::InvalidId());
195 return m_bonds.OptimizedAccess(position)->GetId();
196}

References BIO_SANITIZE, bio::Container::IsAllocated(), m_bonds, and bio::physical::Arrangement< TYPE >::OptimizedAccess().

◆ operator T()

template<typename T >
bio::chemical::Atom::operator T ( )
inline

Atoms can be converted to anything they are bonded to.

Template Parameters
T
Returns
this as a T or NULL.

Definition at line 222 of file Atom.h.

223 {
224 return As< T >();
225 }

◆ Reify()

Code bio::chemical::Atom::Reify ( physical::Symmetry symmetry)
virtual

Required method from Wave. See that class for details. Reconstruct *this from the given Symmetry.

Parameters
symmetry

Reimplemented from bio::physical::Wave.

Reimplemented in bio::molecular::Molecule, and bio::molecular::Surface.

Definition at line 204 of file Atom.cpp.

205{
206 //TODO...
207 return Wave::Reify(symmetry);
208}

◆ Spin()

physical::Symmetry * bio::chemical::Atom::Spin ( ) const
virtual

Required method from Wave. See that class for details.

Returns
a Symmetrical image of *this

Reimplemented from bio::physical::Wave.

Reimplemented in bio::molecular::Molecule, and bio::molecular::Surface.

Definition at line 198 of file Atom.cpp.

199{
200 //TODO...
201 return Wave::Spin();
202}

Member Data Documentation

◆ m_bonds


The documentation for this class was generated from the following files: