GranOO  3.0
A robust and versatile workbench to build 3D dynamic simulations based on the Discrete Element Method
Prop.hpp
Go to the documentation of this file.
1 // This file is part of GranOO, a workbench for DEM simulation.
2 //
3 // Author(s) : - Damien Andre IRCER/UNILIM, Limoges France
4 // <damien.andre@unilim.fr>
5 // - Jean-luc Charles Arts et Metiers ParisTech, CNRS, I2M, Bordeaux France
6 // <jean-luc.charles@ensam.eu>
7 // - Jeremie Girardot Arts et Metiers ParisTech, CNRS, I2M, Bordeaux France
8 // <jeremie.girardot@ensam.eu>
9 // - Cedric Hubert LAMIH/UPHF, Valenciennes France
10 // <cedric.hubert@uphf.fr>
11 // - Ivan Iordanoff Arts et Metiers ParisTech, CNRS, I2M, Bordeaux France
12 // <ivan.iordanoff@ensam.eu>
13 //
14 // Copyright (C) 2008-2019 D. Andre, JL. Charles, J. Girardot, C. Hubert, I. Iordanoff
15 //
16 // This program is free software: you can redistribute it and/or modify
17 // it under the terms of the GNU General Public License as published by
18 // the Free Software Foundation, either version 3 of the License, or
19 // (at your option) any later version.
20 //
21 // This program is distributed in the hope that it will be useful,
22 // but WITHOUT ANY WARRANTY; without even the implied warranty of
23 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
24 // GNU General Public License for more details.
25 //
26 // You should have received a copy of the GNU General Public License
27 // along with this program. If not, see <http://www.gnu.org/licenses/>.
28 
29 
30 #ifndef _libCore_Prop_hpp_
31 #define _libCore_Prop_hpp_
32 
33 
34 #include "GranOO3/Core/Base.hpp"
35 
36 
37 namespace GranOO3
38 {
39  namespace Core
40  {
41 
42  template <class T> class PropClass;
43 
44 
45  template <class T>
46  class Prop : public Base,
47  public Register<Prop<T> >
48  {
49  GRANOO_CLASS_BASE_T(Core::Prop, T, Base);
50 
51  public:
52  typedef T Owner;
53 
54  public:
55  // Constructors and destructor
56  Prop();
57  virtual ~Prop();
58 
59  // Usefull
60  T& item();
61  const T& item() const;
62  void set_item(T&);
63  virtual std::string info() const;
64 
65  // For GddViewer compatibility
66  virtual void set_color(const Core::Color&);
68  float& get_line_width();
69 
70  virtual void add(SetOf<Prop<T> >*);
71  virtual void erase(SetOf<Prop<T> >*);
72 
73  // IO
74  virtual std::ostream& write_ascii (std::ostream& out) const;
75  virtual std::istream& read_ascii (std::istream& in);
76 
77  protected:
78  virtual Base& base_item();
79  virtual const Base& base_item() const;
80 
81  protected:
83  template<class Archive>
84  void serialize(Archive& ar, const unsigned int);
85 
86  private:
87  T* _item;
88  };
89 
90 
91 
92 
93 
94  }
95 }
96 
97 
98 #include "GranOO3/Core/Prop.tpp"
99 
100 
101 
102 #endif
Definition: Base.hpp:61
Definition: Color.hpp:44
Definition: Prop.hpp:48
virtual const Base & base_item() const
virtual std::istream & read_ascii(std::istream &in)
virtual void set_color(const Core::Color &)
float & get_line_width()
Core::Color & get_color()
virtual Base & base_item()
virtual std::string info() const
virtual void add(SetOf< Prop< T > > *)
virtual std::ostream & write_ascii(std::ostream &out) const
virtual void erase(SetOf< Prop< T > > *)
T * _item
Definition: Prop.hpp:87
friend class boost::serialization::access
Definition: Prop.hpp:82
void serialize(Archive &ar, const unsigned int)
const T & item() const
T Owner
Definition: Prop.hpp:52
Definition: SetOf.hpp:346
Definition: SetOf.hpp:236
Definition: Common.hpp:198