SheafSystem  0.0.0.0
depth_bound_refinement_policy.h
Go to the documentation of this file.
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 
20 
21 #ifndef DEPTH_BOUND_REFINEMENT_POLICY_H
22 #define DEPTH_BOUND_REFINEMENT_POLICY_H
23 
24 #ifndef SHEAF_DLL_SPEC_H
25 #include "SheafSystem/sheaf_dll_spec.h"
26 #endif
27 
28 #ifndef FIELD_REFINEMENT_POLICY_H
29 #include "SheafSystem/field_refinement_policy.h"
30 #endif
31 
32 namespace fields
33 {
34 
41 {
42 
43  // ===========================================================
45  // ===========================================================
47 
48 public:
49 
53  depth_bound_refinement_policy(size_type xrefinement_level_ub = 2);
54 
60 
65 
66 private:
67 
72  static bool _has_prototype;
73 
77  static bool make_prototype();
78 
80 
81 
82  // ===========================================================
84  // ===========================================================
86 
87 public:
88 
92  virtual bool should_refine(field_refinement_buffer& xbuffer,
93  size_type xrefinement_depth) const;
97  virtual const std::string& class_name() const;
98 
102  static const std::string& static_class_name();
103 
105 
106 
107  // ===========================================================
109  // ===========================================================
111 
112 public:
113 
117  virtual bool is_ancestor_of(const any *other) const;
118 
123  virtual depth_bound_refinement_policy* clone() const;
124 
128  virtual depth_bound_refinement_policy& operator=(const field_refinement_policy& xother);
129 
135 
139  virtual bool invariant() const;
140 
142 
143 };
144 
145 // ===========================================================
146 // NON-MEMBER FUNCTIONS
147 // ===========================================================
148 
149 } // namespace fields
150 
151 #endif // ifndef DEPTH_BOUND_REFINEMENT_POLICY_H
A buffer for data which is used by both a local_field_refiner object and its associated field_refinem...
Namespace for fields component of sheaf system.
Abstract base class with useful features for all objects.
Definition: any.h:39
A policy that determines a zone should be refined if the refinement depth is less than a given upper ...
unsigned long size_type
An unsigned integral type used to represent sizes and capacities.
Definition: sheaf.h:52
An abstract policy that determines the conditions under which a zone should be refined.