libbio
Loading...
Searching...
No Matches
MoleculeMethods.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) 2022 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
24#define BIO_FINAL_MOLECULE_METHODS \
25 template < typename T > \
26 Id Use( \
27 Name varName, \
28 ::bio::Pointer< T > varPtr \
29) \
30{ \
31 return this->mT.template Use< T >( \
32 varName, \
33 varPtr \
34 ); \
35} \
36 \
37Id Define(const Name& varName) \
38{ \
39 return this->mT.Define(varName); \
40} \
41 \
42template < typename T > \
43Id Define(const Name& varName) \
44{ \
45 return this->mT.template Define< T >(varName); \
46} \
47 \
48template < typename T > \
49Id Define( \
50 Name varName, \
51 const T& assignment \
52) \
53{ \
54 return this->mT.template Define< T >( \
55 varName, \
56 assignment \
57 ); \
58} \
59 \
60 ::bio::Pointer< bio::molecular::Surface > RotateTo(const Id& surfaceId) \
61{ \
62 return this->mT.RotateTo(surfaceId); \
63} \
64 \
65 ::bio::Pointer< const bio::molecular::Surface > RotateTo(const Id& surfaceId) const \
66{ \
67 return this->mT.RotateTo(surfaceId); \
68} \
69 \
70 ::bio::Pointer< bio::molecular::Surface > RotateTo(const Name& surfaceName) \
71{ \
72 return this->mT.RotateTo(surfaceName); \
73} \
74 \
75 ::bio::Pointer< const bio::molecular::Surface > RotateTo(const Name& surfaceName) const \
76{ \
77 return this->mT.RotateTo(surfaceName); \
78} \
79 \
80bool DuplicateFrom( \
81 ::bio::Pointer< bio::molecular::Molecule > source, \
82 Name surface \
83) \
84{ \
85 return this->mT.DuplicateFrom( \
86 source, \
87 surface \
88 ); \
89} \
90 \
91bool TransferFrom( \
92 ::bio::Pointer< bio::molecular::Molecule > source, \
93 Name surface \
94) \
95{ \
96 return this->mT.TransferFrom( \
97 source, \
98 surface \
99 ); \
100} \
101 \
102 ::bio::Pointer< bio::molecular::Surface > operator()(const Id& surfaceId) \
103{ \
104 return this->mT.operator()(surfaceId); \
105} \
106 \
107 ::bio::Pointer< const bio::molecular::Surface > operator()(const Id& surfaceId) const \
108{ \
109 return this->mT.operator()(surfaceId); \
110} \
111 \
112template < typename T > \
113 ::bio::Pointer< bio::molecular::Surface > operator()(const Id& surfaceId) \
114{ \
115 return this->mT.operator()(surfaceId); \
116} \
117 \
118 ::bio::Pointer< bio::molecular::Surface > operator()(const Name& name) \
119{ \
120 return this->mT.operator()(name); \
121} \
122 \
123 ::bio::Pointer< const bio::molecular::Surface > operator()(const Name& name) const \
124{ \
125 return this->mT.operator()(name); \
126} \
127 \
128template < typename T > \
129 ::bio::Pointer< bio::molecular::Surface > operator()(const Name& surfaceName) \
130{ \
131 return this->mT.operator()(surfaceName); \
132} \
133 \
134 ::bio::Pointer< bio::molecular::Molecule > operator<<(::bio::Pointer< bio::molecular::Surface > source) \
135{ \
136 return this->mT.operator<<(source); \
137} \
138 \
139 ::bio::Pointer< bio::molecular::Surface > operator>>(::bio::Pointer< bio::molecular::Surface > target) \
140{ \
141 return this->mT.operator>>(target); \
142} \
143 \
144 ::bio::Pointer< bio::molecular::Molecule > operator<<(::bio::Pointer< bio::molecular::Molecule > source) \
145{ \
146 return this->mT.operator<<(source); \
147} \
148 \
149 ::bio::Pointer< bio::molecular::Molecule > operator>>(::bio::Pointer< bio::molecular::Molecule > target) \
150{ \
151 return this->mT.operator>>(target); \
152}