Develop Biology
The language of life
bio::chemical::ExcitationWithArgument< WAVE, RETURN, ARGUMENT > Class Template Reference

#include <Excitation.h>

+ Inheritance diagram for bio::chemical::ExcitationWithArgument< WAVE, RETURN, ARGUMENT >:
+ Collaboration diagram for bio::chemical::ExcitationWithArgument< WAVE, RETURN, ARGUMENT >:

Public Member Functions

virtual ~ExcitationWithArgument ()
 
 BIO_DISAMBIGUATE_ALL_CLASS_METHODS (physical, BIO_SINGLE_ARG(ExcitationWithArgument< WAVE, RETURN, ARGUMENT >)) ExcitationWithArgument(RETURN(WAVE
 
virtual void CallDown (physical::Wave *wave, ByteStream *ret) const
 
virtual void EditArg (uint8_t position, ByteStream &newVal)
 
virtual Properties GetProperties () const
 
RETURN operator() (WAVE *wave) const
 
- Public Member Functions inherited from bio::chemical::ExcitationBase
virtual ~ExcitationBase ()
 
 BIO_DISAMBIGUATE_ALL_CLASS_METHODS (physical, ExcitationBase) ExcitationBase()
 
virtual void CallDown (physical::Wave *wave, ByteStream *ret) const
 
virtual void EditArg (uint8_t position, ByteStream &newVal)
 
virtual Properties GetProperties () const
 
- Public Member Functions inherited from bio::physical::Class< ExcitationBase >
 Class (ExcitationBase *object, Symmetry *symmetry=NULL)
 
virtual ~Class ()
 
virtual WaveAsWave ()
 
virtual const WaveAsWave () const
 
virtual WaveClone () const
 
ExcitationBase * Convert (Wave *wave)
 
virtual operator ExcitationBase * ()
 
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
 
- Public Member Functions inherited from bio::physical::Class< ExcitationWithArgument< WAVE, RETURN, ARGUMENT > >
 Class (ExcitationWithArgument< WAVE, RETURN, ARGUMENT > *object, Symmetry *symmetry=NULL)
 
virtual ~Class ()
 
virtual WaveAsWave ()
 
virtual const WaveAsWave () const
 
virtual WaveClone () const
 
ExcitationWithArgument< WAVE, RETURN, ARGUMENT > * Convert (Wave *wave)
 
virtual operator ExcitationWithArgument< WAVE, RETURN, ARGUMENT > * ()
 
virtual operator Wave * ()
 

Protected Attributes

ARGUMENT m_arg
 
RETURN(WAVE::* m_function )(ARGUMENT)
 
- Protected Attributes inherited from bio::physical::Class< ExcitationBase >
ExcitationBase * m_object
 
- Protected Attributes inherited from bio::physical::Wave
Wavem_signal
 
Symmetrym_symmetry
 
- Protected Attributes inherited from bio::physical::Class< ExcitationWithArgument< WAVE, RETURN, ARGUMENT > >
ExcitationWithArgument< WAVE, RETURN, ARGUMENT > * m_object
 

Additional Inherited Members

- Static Public Member Functions inherited from bio::chemical::ExcitationBase
static Properties GetClassProperties ()
 
- 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

template<class WAVE, typename RETURN, typename ARGUMENT>
class bio::chemical::ExcitationWithArgument< WAVE, RETURN, ARGUMENT >

See ExcitationBase for docs

Template Parameters
WAVE
RETURN
ARGUMENT

Definition at line 291 of file Excitation.h.

Constructor & Destructor Documentation

◆ ~ExcitationWithArgument()

template<class WAVE , typename RETURN , typename ARGUMENT >
virtual bio::chemical::ExcitationWithArgument< WAVE, RETURN, ARGUMENT >::~ExcitationWithArgument ( )
inlinevirtual

Definition at line 321 of file Excitation.h.

322 {
323
324 }

Member Function Documentation

◆ BIO_DISAMBIGUATE_ALL_CLASS_METHODS()

template<class WAVE , typename RETURN , typename ARGUMENT >
bio::chemical::ExcitationWithArgument< WAVE, RETURN, ARGUMENT >::BIO_DISAMBIGUATE_ALL_CLASS_METHODS ( physical  ,
BIO_SINGLE_ARG(ExcitationWithArgument< WAVE, RETURN, ARGUMENT >)   
)
inline

Ensure virtual methods point to Class implementations.

Definition at line 300 of file Excitation.h.

311 :
312 physical::Class< ExcitationWithArgument< WAVE, RETURN, ARGUMENT > >(this),
313 m_function(function),
314 m_arg(arg)
315 {
316 }
RETURN(WAVE::* m_function)(ARGUMENT)
Definition: Excitation.h:377

◆ CallDown()

template<class WAVE , typename RETURN , typename ARGUMENT >
virtual void bio::chemical::ExcitationWithArgument< WAVE, RETURN, ARGUMENT >::CallDown ( physical::Wave wave,
ByteStream ret 
) const
inlinevirtual

Override of ExcitationBase; see above.

Reimplemented from bio::chemical::ExcitationBase.

Definition at line 368 of file Excitation.h.

372 {
373 ret->Set(this->operator()(ForceCast< WAVE* >(wave)));
374 }

References bio::ByteStream::Set().

◆ EditArg()

template<class WAVE , typename RETURN , typename ARGUMENT >
virtual void bio::chemical::ExcitationWithArgument< WAVE, RETURN, ARGUMENT >::EditArg ( uint8_t  position,
ByteStream newVal 
)
inlinevirtual

Creating a new and proper Excitation is preferred to Editing Arguments; however, we support the latter nonetheless.

Parameters
position
newVal

Reimplemented from bio::chemical::ExcitationBase.

Definition at line 346 of file Excitation.h.

350 {
351 BIO_SANITIZE(position,
352 return,);
353 m_arg = newVal;
354 }
#define BIO_SANITIZE(test, success, failure)

References BIO_SANITIZE, and bio::chemical::ExcitationWithArgument< WAVE, RETURN, ARGUMENT >::m_arg.

◆ GetProperties()

template<class WAVE , typename RETURN , typename ARGUMENT >
virtual Properties bio::chemical::ExcitationWithArgument< WAVE, RETURN, ARGUMENT >::GetProperties ( ) const
inlinevirtual

Override of Wave method. See that class for details. Ensures *this will Resonate with WAVEs by stealing their Properties from the PeriodicTable.

Returns
{whatever Properties WAVE has, property::Excitatory()}

Reimplemented from bio::chemical::ExcitationBase.

Definition at line 331 of file Excitation.h.

332 {
333 Properties ret = PeriodicTable::Instance().GetPropertiesOf< WAVE >();
334 ret.insert(
335 ret.end(),
338 return ret;
339 }
static Properties GetClassProperties()
Definition: Excitation.h:73
uint8_t Properties
Definition: Types.h:58

References bio::chemical::ExcitationBase::GetClassProperties(), and bio::Properties.

◆ operator()()

template<class WAVE , typename RETURN , typename ARGUMENT >
RETURN bio::chemical::ExcitationWithArgument< WAVE, RETURN, ARGUMENT >::operator() ( WAVE *  wave) const
inline
Parameters
wavethe caller of m_function.
Returns
RETURN, whatever that is for *this; the result of calling m_function from wave.

Definition at line 360 of file Excitation.h.

361 {
362 return (wave->*m_function)(m_arg);
363 }

References bio::chemical::ExcitationWithArgument< WAVE, RETURN, ARGUMENT >::m_arg, and bio::chemical::ExcitationWithArgument< WAVE, RETURN, ARGUMENT >::m_function.

Member Data Documentation

◆ m_arg

template<class WAVE , typename RETURN , typename ARGUMENT >
ARGUMENT bio::chemical::ExcitationWithArgument< WAVE, RETURN, ARGUMENT >::m_arg
protected

◆ m_function

template<class WAVE , typename RETURN , typename ARGUMENT >
RETURN(WAVE::* bio::chemical::ExcitationWithArgument< WAVE, RETURN, ARGUMENT >::m_function) (ARGUMENT)
protected

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