Changeset 3efb4a for molecuilder/src/molecule_template.hpp
- Timestamp:
- Oct 9, 2009, 11:57:41 AM (16 years ago)
- Children:
- e71890
- Parents:
- 17b3a5c
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
molecuilder/src/molecule_template.hpp
r17b3a5c r3efb4a 45 45 } 46 46 }; 47 template <typename res> void molecule::ActOnAllVectors( res (Vector::*f)() const ) const 48 { 49 atom *Walker = start; 50 while (Walker->next != end) { 51 Walker = Walker->next; 52 ((Walker->node)->*f)(); 53 } 54 }; 47 55 // one argument 48 56 template <typename res, typename T> void molecule::ActOnAllVectors( res (Vector::*f)(T), T t ) … … 70 78 } 71 79 }; 80 template <typename res, typename T> void molecule::ActOnAllVectors( res (Vector::*f)(T) const, T t ) const 81 { 82 atom *Walker = start; 83 while (Walker->next != end) { 84 Walker = Walker->next; 85 ((Walker->node)->*f)(t); 86 } 87 }; 72 88 // two arguments 73 89 template <typename res, typename T, typename U> void molecule::ActOnAllVectors( res (Vector::*f)(T, U), T t, U u ) … … 95 111 } 96 112 }; 113 template <typename res, typename T, typename U> void molecule::ActOnAllVectors( res (Vector::*f)(T, U) const, T t, U u ) const 114 { 115 atom *Walker = start; 116 while (Walker->next != end) { 117 Walker = Walker->next; 118 ((Walker->node)->*f)(t, u); 119 } 120 }; 97 121 // three arguments 98 122 template <typename res, typename T, typename U, typename V> void molecule::ActOnAllVectors( res (Vector::*f)(T, U, V), T t, U u, V v) … … 120 144 } 121 145 }; 146 template <typename res, typename T, typename U, typename V> void molecule::ActOnAllVectors( res (Vector::*f)(T, U, V) const, T t, U u, V v) const 147 { 148 atom *Walker = start; 149 while (Walker->next != end) { 150 Walker = Walker->next; 151 ((Walker->node)->*f)(t, u, v); 152 } 153 }; 122 154 123 155 // ================== Acting with each Atoms on same molecule ========================== // … … 148 180 } 149 181 }; 182 template <typename res> void molecule::ActWithEachAtom( res (molecule::*f)(atom *) const) const 183 { 184 atom *Walker = start; 185 while (Walker->next != end) { 186 Walker = Walker->next; 187 (*f)(Walker); 188 } 189 }; 150 190 151 191 // ================== Acting with each Atoms on copy molecule ========================== // … … 176 216 } 177 217 }; 218 template <typename res> void molecule::ActOnCopyWithEachAtom( res (molecule::*f)(atom *) const, molecule *copy) const 219 { 220 atom *Walker = start; 221 while (Walker->next != end) { 222 Walker = Walker->next; 223 (copy->*f)(Walker); 224 } 225 }; 178 226 179 227 // ================== Acting with each Atoms on copy molecule if true ========================== // … … 247 295 } 248 296 }; 297 template <typename res> void molecule::ActOnAllAtoms( res (atom::*f)() const) const 298 { 299 atom *Walker = start; 300 while (Walker->next != end) { 301 Walker = Walker->next; 302 (Walker->*f)(); 303 } 304 }; 249 305 // one argument 250 306 template <typename res, typename T> void molecule::ActOnAllAtoms( res (atom::*f)(T), T t ) … … 264 320 } 265 321 }; 322 template <typename res, typename T> void molecule::ActOnAllAtoms( res (atom::*f)(T), T t ) const 323 { 324 atom *Walker = start; 325 while (Walker->next != end) { 326 Walker = Walker->next; 327 (Walker->*f)(t); 328 } 329 }; 266 330 template <typename res, typename T> void molecule::ActOnAllAtoms( res (atom::*f)(T) const, T t ) const 267 331 { … … 297 361 } 298 362 }; 363 template <typename res, typename T, typename U> void molecule::ActOnAllAtoms( res (atom::*f)(T, U) const, T t, U u ) const 364 { 365 atom *Walker = start; 366 while (Walker->next != end) { 367 Walker = Walker->next; 368 (Walker->*f)(t, u); 369 } 370 }; 299 371 // three argument 300 372 template <typename res, typename T, typename U, typename V> void molecule::ActOnAllAtoms( res (atom::*f)(T, U, V), T t, U u, V v) … … 322 394 } 323 395 }; 396 template <typename res, typename T, typename U, typename V> void molecule::ActOnAllAtoms( res (atom::*f)(T, U, V) const, T t, U u, V v) const 397 { 398 atom *Walker = start; 399 while (Walker->next != end) { 400 Walker = Walker->next; 401 (Walker->*f)(t, u, v); 402 } 403 }; 324 404 // four arguments 325 405 template <typename res, typename T, typename U, typename V, typename W> void molecule::ActOnAllAtoms( res (atom::*f)(T, U, V, W), T t, U u, V v, W w) … … 347 427 } 348 428 }; 429 template <typename res, typename T, typename U, typename V, typename W> void molecule::ActOnAllAtoms( res (atom::*f)(T, U, V, W) const, T t, U u, V v, W w) const 430 { 431 atom *Walker = start; 432 while (Walker->next != end) { 433 Walker = Walker->next; 434 (Walker->*f)(t, u, v, w); 435 } 436 }; 349 437 350 438 // ===================== Accesssing arrays indexed by some integer for each atom ====================== 351 439 352 440 // for atom ints 353 template <typename T> void molecule::SetIndexedArrayForEachAtomTo ( T *array, int atom::*index, void (*Setor)(T *, T) )441 template <typename T> void molecule::SetIndexedArrayForEachAtomTo ( T *array, int TesselPoint::*index, void (*Setor)(T *, T) ) 354 442 { 355 443 atom *Walker = start; … … 359 447 } 360 448 }; 361 template <typename T> void molecule::SetIndexedArrayForEachAtomTo ( T *array, int atom::*index, void (*Setor)(T *, T), T value )449 template <typename T> void molecule::SetIndexedArrayForEachAtomTo ( T *array, int TesselPoint::*index, void (*Setor)(T *, T), T value ) 362 450 { 363 451 atom *Walker = start; … … 384 472 } 385 473 }; 474 template <typename T> void molecule::SetIndexedArrayForEachAtomTo ( T *array, int TesselPoint::*index, T (atom::*Setor)(Vector &), Vector atom::*value ) 475 { 476 atom *Walker = start; 477 while (Walker->next != end) { 478 Walker = Walker->next; 479 array[(Walker->*index)] = (Walker->*Setor) (Walker->*value); 480 } 481 }; 482 template <typename T> void molecule::SetIndexedArrayForEachAtomTo ( T *array, int TesselPoint::*index, T (atom::*Setor)(Vector &), Vector &vect ) 483 { 484 atom *Walker = start; 485 while (Walker->next != end) { 486 Walker = Walker->next; 487 array[(Walker->*index)] = (Walker->*Setor) (vect); 488 } 489 }; 386 490 387 491 #endif /* MOLECULE_TEMPLATE_HPP_ */
Note:
See TracChangeset
for help on using the changeset viewer.