Develop Biology
The language of life
Vesicle.h
Go to the documentation of this file.
1/*
2 * This file is a part of the Biology project by eons LLC.
3 * Biology (aka Develop Biology) is a framework for approaching software
4 * development from a natural sciences perspective.
5 *
6 * Copyright (C) 2021 Séon O'Shannon & eons LLC
7 *
8 * This program is free software: you can redistribute it and/or modify
9 * it under the terms of the GNU Affero General Public License as
10 * published by the Free Software Foundation, either version 3 of the
11 * License, or (at your option) any later version.
12 *
13 * This program is distributed in the hope that it will be useful,
14 * but WITHOUT ANY WARRANTY; without even the implied warranty of
15 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
16 * GNU Affero General Public License for more details.
17 *
18 * You should have received a copy of the GNU Affero General Public License
19 * along with this program. If not, see <https://www.gnu.org/licenses/>.
20 */
21
22#pragma once
23
25#include "Molecule.h"
27
28namespace bio {
29namespace molecular {
30
36class Vesicle :
37 virtual public Molecule,
38 public Class< Vesicle >,
39 public chemical::LinearMotif< Molecule* >
40{
41public:
42
47 Vesicle)
48
53 &VesiclePerspective::Instance(),
55
56
59 Vesicle(const Vesicle& toCopy);
60
64 virtual ~Vesicle();
65
72 virtual Molecule* operator[](StandardDimension moleculeId);
73
74 virtual const Molecule* operator[](StandardDimension moleculeId) const;
75
76 template < typename T >
77 Molecule* operator[](StandardDimension moleculeId)
78 {
79 return ChemicalCast< T >(GetById< Molecule* >(moleculeId));
80 }
81
82 virtual Molecule* operator[](Name moleculeName);
83
84 virtual const Molecule* operator[](Name moleculeName) const;
85
86 template < typename T >
87 Molecule* operator[](Name moleculeName)
88 {
89 return ChemicalCast< T >(GetByName< Molecule* >(moleculeName));
90 }
99 virtual Vesicle* operator<<=(Vesicle* source);
100
108 virtual Vesicle* operator>>=(Vesicle* target);
109};
110
111} //molecular namespace
112} //bio namespace
#define BIO_DEFAULT_IDENTIFIABLE_CONSTRUCTORS(ns, class,...)
BIO_DISAMBIGUATE_ALL_CLASS_METHODS(molecular, Vesicle) BIO_DEFAULT_IDENTIFIABLE_CONSTRUCTORS(molecular
virtual Vesicle * operator<<=(Vesicle *source)
Definition: Vesicle.cpp:59
virtual Vesicle * operator>>=(Vesicle *target)
Definition: Vesicle.cpp:66
virtual Molecule * operator[](StandardDimension moleculeId)
Definition: Vesicle.cpp:39
Molecule * operator[](Name moleculeName)
Definition: Vesicle.h:87
Filter Molecular()
Definition: Cell.h:31
const char * Name
Definition: Types.h:46