SheafSystem  0.0.0.0
block_relation.h
1 
2 //
3 // Copyright (c) 2014 Limit Point Systems, Inc.
4 //
5 // Licensed under the Apache License, Version 2.0 (the "License");
6 // you may not use this file except in compliance with the License.
7 // You may obtain a copy of the License at
8 //
9 // http://www.apache.org/licenses/LICENSE-2.0
10 //
11 // Unless required by applicable law or agreed to in writing, software
12 // distributed under the License is distributed on an "AS IS" BASIS,
13 // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 // See the License for the specific language governing permissions and
15 // limitations under the License.
16 //
17 
18 // Interface for class block_relation
19 
20 #ifndef BLOCK_RELATION_H
21 #define BLOCK_RELATION_H
22 
23 #ifndef SHEAF_DLL_SPEC_H
24 #include "SheafSystem/sheaf_dll_spec.h"
25 #endif
26 
27 #ifndef ANY_H
28 #include "SheafSystem/any.h"
29 #endif
30 
31 #ifndef POD_TYPES_H
32 #include "SheafSystem/pod_types.h"
33 #endif
34 
35 #ifndef STD_IOSTREAM_H
36 #include "SheafSystem/std_iostream.h"
37 #endif
38 
39 namespace fiber_bundle
40 {
41 
42  using namespace sheaf;
43 
47 class SHEAF_DLL_SPEC block_relation : public any
48 {
49 public:
50 
51  // ===========================================================
52  // BLOCK_RELATION FACET
53  // ===========================================================
54 
62  enum cell_type
63  {
64  POINT,
65  LINE,
66  QUAD,
67  TRIANGLE,
68  HEX,
69  TETRA,
70  CELL_TYPE_END
71  };
72 
77 
81  virtual ~block_relation();
82 
86  virtual cell_type element_type() const = 0;
87 
88 protected:
89 private:
90 
91 
92  // ===========================================================
93  // ANY FACET
94  // ===========================================================
95 
96 public:
97 
102  virtual block_relation* clone() const = 0;
103 
107  virtual bool invariant() const;
108 
112  virtual bool is_ancestor_of(const any* other) const;
113 
114 protected:
115 private:
116 };
117 
118 } // namespace fiber_bundle
119 
120 #endif // ifndef BLOCK_RELATION_H
Abstract base class with useful features for all objects.
Definition: any.h:39
Abstract cell relation for a block of zones of a given type.
Namespace for the sheaves component of the sheaf system.
Namespace for the fiber_bundles component of the sheaf system.