32#if BIO_CPP_VERSION >= 11
33 #include <type_traits>
53template <
typename CONTENT_TYPE >
55 public Elementary< LinearMotif< CONTENT_TYPE > >,
172 return ChemicalCast< CONTENT_TYPE >(Cast< physical::Line* >(this->
m_contents)->LinearAccess(this->
m_contents->
Add(content)));
191 const StandardDimension optionalPositionArg = 0,
192 const bool transferSubContents =
false
211 if (cnt.template As< CONTENT_TYPE >()->IsId(toAdd->GetId()))
221 CONTENT_TYPE addition = CloneAndCast< CONTENT_TYPE >(toAdd);
227 if (transferSubContents)
233 CONTENT_TYPE toReplaceCasted = toReplace.template As< CONTENT_TYPE >();
238 SmartIterator bnd = addition->AsAtom()->GetAllBonds()->End();
255 Cast< AbstractMotif* >(bondBuffer->
GetBonded())->ImportImplementation(otherBond);
272 Index placement = Cast< physical::Line* >(this->
m_contents)->SeekToId(optionalPositionArg);
288 Index placement = Cast< physical::Line* >(this->
m_contents)->SeekToId(optionalPositionArg);
332 return ChemicalCast< CONTENT_TYPE >(Cast< physical::Line* >(this->
m_contents)->LinearAccess(ret));
348 return ChemicalCast< CONTENT_TYPE >(Cast< physical::Line* >(this->
m_contents)->LinearAccess(ret));
361 Index ret = Cast< physical::Line* >(this->
m_contents)->SeekToName(name);
365 return ChemicalCast< CONTENT_TYPE >(Cast< physical::Line* >(this->
m_contents)->LinearAccess(ret));
377 Index ret = Cast< physical::Line* >(this->
m_contents)->SeekToName(name);
381 return ChemicalCast< CONTENT_TYPE >(Cast< physical::Line* >(this->
m_contents)->LinearAccess(ret));
485 !cnt.IsAtBeginning();
507 !cnt.IsAtBeginning();
531 !cnt.IsAtBeginning();
540 ret.push_back(result);
552 std::string ret =
"";
562 ret += cnt.template As< physical::Identifiable< StandardDimension >* >()->GetName();
563 if (cnt.GetIndex() != this->m_contents->GetEndIndex() - 1)
588 #if BIO_CPP_VERSION >= 11
589 BIO_ASSERT(std::is_base_of<Substance, CONTENT_TYPE>::value);
#define BIO_DISAMBIGUATE_OPTIONAL_CLASS_METHODS(ns, caller)
#define BIO_SANITIZE_AT_SAFETY_LEVEL_2(test, success, failure)
#define BIO_SANITIZE(test, success, failure)
virtual SmartIterator End() const
virtual Index Insert(const ByteStream content, const Index index)
virtual bool IsAllocated(const Index index) const
virtual Index GetBeginIndex() const
virtual void Import(const Container *other)
bool Has(const ByteStream content) const
virtual Index Add(const ByteStream content)
virtual bool Erase(Index index)
virtual Index GetEndIndex() const
bool IsAtBeginning() const
static Properties GetClassProperties()
virtual Container * GetAllImplementation()
Wave * GetBonded(Valence position)
AtomicNumber GetId() const
physical::Wave * GetBonded()
physical::Perspective< StandardDimension > * perspective
virtual void CallDown(physical::Wave *wave, ByteStream *ret) const
static Properties GetClassProperties()
virtual CONTENT_TYPE AddImplementation(CONTENT_TYPE content)
virtual Code Attenuate(const physical::Wave *other)
static LinearMotif< CONTENT_TYPE > Properties GetClassProperties()
const physical::Perspective< StandardDimension > * GetStructuralPerspective() const
virtual CONTENT_TYPE GetByNameImplementation(Name name)
virtual CONTENT_TYPE GetByIdImplementation(StandardDimension id)
virtual void ClearImplementation()
LinearMotif(const LinearMotif< CONTENT_TYPE > &toCopy)
LinearMotif(physical::Perspective< StandardDimension > *perspective=NULL)
virtual bool HasImplementation(const CONTENT_TYPE &content) const
virtual Code InsertImplementation(CONTENT_TYPE toAdd, const Position position=BOTTOM, const StandardDimension optionalPositionArg=0, const bool transferSubContents=false)
virtual std::string GetStringFromImplementation(std::string separator=", ")
virtual void ImportImplementation(const LinearMotif< CONTENT_TYPE > *other)
virtual CONTENT_TYPE GetOrCreateByIdImplementation(StandardDimension id)
virtual CONTENT_TYPE GetOrCreateByNameImplementation(Name name)
virtual const CONTENT_TYPE GetByIdImplementation(StandardDimension id) const
virtual Emission ForEachImplementation(ExcitationBase *excitation)
virtual CONTENT_TYPE CreateImplementation(StandardDimension id)
physical::Perspective< StandardDimension > * GetStructuralPerspective()
BIO_DISAMBIGUATE_REQUIRED_CLASS_METHODS(chemical, LinearMotif< CONTENT_TYPE >) BIO_DISAMBIGUATE_OPTIONAL_CLASS_METHODS(physical
virtual const CONTENT_TYPE GetByNameImplementation(Name name) const
virtual Code Disattenuate(const physical::Wave *other)
physical::Perspective< StandardDimension > * m_perspective
LinearMotif(const Contents *contents, physical::Perspective< StandardDimension > *perspective=NULL)
virtual Perspective * GetPerspective() const
virtual Id GetIdFromName(Name name)
virtual Code Attenuate(const Wave *other)
virtual Code Disattenuate(const Wave *other)
virtual chemical::Atom * AsAtom()
static Properties GetResonanceBetween(ConstWaves waves)
Code SuccessfullyReplaced()
const Index InvalidIndex()