codac 1.5.6
Loading...
Searching...
No Matches
codac2_SlicedTubeBase.h
Go to the documentation of this file.
1
9
10#pragma once
11
12#include "codac2_TDomain.h"
13#include "codac2_Slice.h"
14#include "codac2_TubeBase.h"
15
16namespace codac2
17{
18 class SlicedTubeBase : public TubeBase
19 {
20 public:
21
22 SlicedTubeBase(const std::shared_ptr<TDomain>& tdomain)
23 : TubeBase(tdomain)
24 { }
25
26 inline ~SlicedTubeBase()
27 {
28 for(auto& s : *_tdomain)
29 s._slices.erase(this);
30 }
31
32 inline size_t nb_slices() const
33 {
34 return _tdomain->nb_tslices();
35 }
36
37 inline std::shared_ptr<const SliceBase> first_slice() const
38 {
39 const auto& slices = _tdomain->front().slices();
40 assert(slices.find(this) != slices.end());
41 return slices.at(this);
42 }
43
44 inline std::shared_ptr<const SliceBase> last_slice() const
45 {
46 const auto& slices = _tdomain->back().slices();
47 assert(slices.find(this) != slices.end());
48 return slices.at(this);
49 }
50 };
51}