SheafSystem  0.0.0.0
zone_nodes_block.cc
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 #include "SheafSystem/zone_nodes_block.h"
22 
23 #include "SheafSystem/assert_contract.h"
24 #include "SheafSystem/arg_list.h"
25 #include "SheafSystem/base_space_poset.h"
26 #include "SheafSystem/block_connectivity.h"
27 #include "SheafSystem/fiber_bundles_namespace.h"
28 #include "SheafSystem/index_space_iterator.h"
29 #include "SheafSystem/namespace_poset.h"
30 #include "SheafSystem/poset_path.h"
31 #include "SheafSystem/wsv_block.h"
32 
33 
34 using namespace fiber_bundle; // Workaround for MS C++ bug.
35 
36 // #define DIAGNOSTIC_OUTPUT
37 
38 
39 // ===========================================================
40 // HOST FACTORY FACET
41 // ===========================================================
42 
43 // PUBLIC MEMBER FUNCTIONS
44 
45 const sheaf::poset_path&
48 {
49  // Preconditions:
50 
51  // Body:
52 
53  static const poset_path
54  STATIC_PROTOTYPE_PATH(base_space_member::prototypes_poset_name(), "zone_nodes_block");
55 
56  const poset_path& result = STATIC_PROTOTYPE_PATH;
57 
58  // Postconditions:
59 
61  ensure(result.member_name() == "zone_nodes_block");
62 
63  // Exit
64 
65  return result;
66 }
67 
70 new_host(namespace_type& xns, const poset_path& xhost_path, const poset_path& xschema_path, int xmax_db, bool xauto_access)
71 {
72  // cout << endl << "Entering zone_nodes_block::new_host." << endl;
73 
74  // Preconditions:
75 
76  require(xns.state_is_auto_read_write_accessible(xauto_access));
77 
78  require(!xhost_path.empty());
79  require(!xns.contains_path(xhost_path, xauto_access));
80 
81  require(xschema_path.full());
82  require(xns.path_is_auto_read_accessible(xschema_path, xauto_access));
83  require(schema_poset_member::conforms_to(xns, xschema_path, standard_schema_path(), xauto_access));
84 
85  require(xmax_db >= 0);
86 
87  // Body:
88 
89  host_type& result =
90  host_type::new_table(xns, xhost_path, xschema_path, xmax_db, xauto_access);
91 
92  // Postconditions:
93 
94  ensure(xns.owns(result, xauto_access));
95  ensure(result.path(true) == xhost_path);
96  ensure(result.state_is_not_read_accessible());
97  ensure(result.schema(true).path(xauto_access) == xschema_path);
98 
99  ensure(result.max_db() == xmax_db);
100 
101  // Exit:
102 
103  // cout << "Leaving zone_nodes_block::new_host." << endl;
104  return result;
105 }
106 
109 standard_host(namespace_type& xns, const poset_path& xhost_path, int xmax_db, bool xauto_access)
110 {
111  // cout << endl << "Entering zone_nodes_block::standard_host." << endl;
112 
113  // Preconditions:
114 
115  require(xns.state_is_auto_read_write_accessible(xauto_access));
116 
117  require(poset_path::is_valid_name(xhost_path.poset_name()));
118  require(xns.path_is_auto_read_write_available<host_type>(xhost_path.poset_name(), xauto_access));
119 
120  require(xns.path_is_auto_read_accessible(standard_schema_path(), xauto_access));
121 
122  require(xmax_db >= 0);
123 
124  // Body:
125 
126  host_type* result_ptr;
127  if(xns.contains_path(xhost_path.poset_name(), xauto_access))
128  {
129  result_ptr = &xns.member_poset<host_type>(xhost_path, xauto_access);
130  }
131  else
132  {
133  result_ptr = &new_host(xns, xhost_path, standard_schema_path(), xmax_db, xauto_access);
134  }
135 
136  host_type& result = *result_ptr;
137 
138  // Postconditions:
139 
140  ensure(xns.owns(result, xauto_access));
141  ensure(result.path(true) == xhost_path);
142  ensure(result.state_is_not_read_accessible());
143  ensure(result.schema(true).path(xauto_access) == standard_schema_path());
144 
145  ensure(result.max_db() == xmax_db);
146 
147  // Exit:
148 
149  // cout << "Leaving zone_nodes_block::standard_host." << endl;
150  return result;
151 }
152 
153 // PROTECTED MEMBER FUNCTIONS
154 
155 // PRIVATE MEMBER FUNCTIONS
156 
157 
158 // ===========================================================
159 // ZONE_NODES_BLOCK FACET
160 // ===========================================================
161 
162 // PUBLIC DATA MEMBERS
163 
166 {
167  // Preconditions:
168 
169  // Body:
170 
171  // Postconditions:
172 
173  ensure(invariant());
174  ensure(! is_attached() );
175 }
176 
178 zone_nodes_block(const abstract_poset_member& xother, bool xnew_jem)
179 {
180  // Preconditions:
181 
182  require(xnew_jem ? xother.is_attached() : true);
183 
184  // Body:
185 
186  if(xnew_jem)
187  {
188  new_jem_state(const_cast<abstract_poset_member*>(&xother), true, true);
189  }
190  else
191  {
192  attach_to_state(&xother);
193  }
194 
195  // Postconditions:
196 
197  ensure(invariant());
198  ensure(is_attached() == xother.is_attached() );
199 }
200 
203 {
204  // Preconditions:
205 
206  // Body:
207 
208  // Exit
209 
210  return;
211 }
212 
213 // NEW HANDLE, NEW STATE CONSTRUCTORS
214 
216 zone_nodes_block(base_space_poset& xhost, const block_connectivity& xconn, bool xauto_access)
217 {
218  // Preconditions:
219 
220  require(precondition_of(new_state(xhost, xconn, xauto_access)));
221 
222  // Body:
223 
224  new_state(xhost, xconn, xauto_access);
225 
226  // Postconditions:
227 
228  ensure(postcondition_of(new_state(xhost, xconn, xauto_access)));
229 
230  // Exit
231 
232  return;
233 }
234 
235 // NEW HANDLE, EXISTING STATE CONSTRUCTORS
236 
239 {
240  // Preconditions:
241 
242  require(precondition_of(attach_to_state(xhost, xhub_id)));
243 
244  // Body:
245 
246  attach_to_state(&xhost, xhub_id);
247 
248  // Postconditions:
249 
250  ensure(postcondition_of(attach_to_state(xhost, xhub_id)));
251 }
252 
255 {
256  // Preconditions:
257 
258  require(precondition_of(attach_to_state(xhost, xid)));
259 
260  // Body:
261 
262  attach_to_state(&xhost, xid.hub_pod());
263 
264  // Postconditions:
265 
266  ensure(postcondition_of(attach_to_state(xhost, xid)));
267 }
268 
270 zone_nodes_block(const base_space_poset& xhost, const std::string& xname)
271 {
272  // Preconditions:
273 
274  require(precondition_of(attach_to_state(same args)));
275 
276  // Body:
277 
278  attach_to_state(&xhost, xname);
279 
280  // Postconditions:
281 
282  ensure(postcondition_of(attach_to_state(same args)));
283 }
284 
287  const poset_path& xpath,
288  bool xauto_access)
289 {
290  // Preconditions:
291 
293 
294  require(precondition_of(attach_to_state(same args)));
295 
296  // Body:
297 
298  attach_to_state(xnamespace, xpath, xauto_access);
299 
300  // Postconditions:
301 
302  ensure(postcondition_of(attach_to_state(same args)));
303 
304  // Exit:
305 
306  return;
307 }
308 
311  pod_index_type xposet_id,
312  pod_index_type xmember_id)
313 {
314  // Preconditions:
315 
317 
318  require(precondition_of(attach_to_state(same args)));
319 
320  // Body:
321 
322  attach_to_state(xnamespace, xposet_id, xmember_id);
323 
324  // Postconditions:
325 
326  ensure(postcondition_of(attach_to_state(same args)));
327 
328  // Exit:
329 
330  return;
331 }
332 
335  const scoped_index& xposet_id,
336  const scoped_index& xmember_id)
337 {
338  // Preconditions:
339 
341 
342  require(precondition_of(attach_to_state(same args)));
343 
344  // Body:
345 
346  attach_to_state(xnamespace, xposet_id.hub_pod(), xmember_id.hub_pod());
347 
348  // Postconditions:
349 
350  ensure(postcondition_of(attach_to_state(same args)));
351 
352  // Exit:
353 
354  return;
355 }
356 
357 // EXISTING HANDLE, NEW STATE "CONSTRUCTORS"
358 
359 void
361 new_state(const block_connectivity& xconn, bool xauto_access)
362 {
363  // Preconditions:
364 
365  require(is_attached());
366  require(dynamic_cast<base_space_poset*>(host()) != 0);
367  require(precondition_of(new_state(*host(), xconn, xauto_access)));
368 
369  // Body:
370 
371  base_space_poset& lhost = dynamic_cast<base_space_poset&>(*host());
372 
373  new_state(lhost, xconn, xauto_access);
374 
375  // Postconditions:
376 
377  ensure(postcondition_of(new_state(*host(), xconn, xauto_access)));
378 
379  // Exit
380 
381  return;
382 }
383 
384 void
386 new_state(base_space_poset& xhost, const block_connectivity& xconn, bool xauto_access)
387 {
388  // Preconditions:
389 
390  require(xauto_access ? xhost.is_attached() : xhost.in_jim_edit_mode());
391 
392  // Get access if auto access is requested. Need to do it here so the
393  // remaining preconditions can be executed.
394 
395  if(xauto_access)
396  {
397  xhost.begin_jim_edit_mode(true);
398  xhost.name_space()->get_read_access();
399  xhost.name_space()->member_poset(prototypes_poset_name(), false).get_read_access();
400  }
401 
402  require(namespace_is_ancestor_of(xhost.name_space()));
403  require(xhost.schema().row_conforms_to(standard_schema_path()));
404 
405  // Body:
406 
407  // Get the size for the interval.
408 
409  size_type lsize;
411 
412  // Get the dof tuple_ids.
413 
414  block<pod_index_type> ldof_tuple_ids;
415  zone_nodes_block_crg_interval::get_dof_tuple_ids(xhost, xconn, ldof_tuple_ids);
416 
417  // Get the private data for the interval
418 
419  block<pod_index_type> ldata;
421 
422  // Create the implicit crg interval for the block.
423 
424  pod_index_type lindex =
425  xhost.new_member_interval("zone_nodes_block_crg_interval", lsize, ldof_tuple_ids, ldata);
426 
427  // Attach this handle to it.
428 
429  attach_to_state(&xhost, lindex);
430 
431  // Block is linked to bottom via implicit lower cover of vertices,
432  // but not linked to top; link it now.
433 
434  xhost.top().create_cover_link(this);
435 
436  // Postconditions:
437 
438  ensure(size() == xconn.element_ct());
439  ensure(is_attached());
441 
442  // Release access if auto access was requested.
443 
444  if(xauto_access)
445  {
446  xhost.name_space()->member_poset(prototypes_poset_name(), false).release_access();
447  xhost.name_space()->release_access();
448 
449  // End jim edit mode without ensure_lattice_invariant;
450  // the check is unnecessary and expensive.
451 
452  xhost.end_jim_edit_mode(false, true);
453  }
454 
455  // Exit
456 
457  return;
458 }
459 
460 // PROTECTED DATA MEMBERS
461 
462 // PRIVATE DATA MEMBERS
463 
464 
465 // ===========================================================
466 // VERTEX CLIENT ID SPACE FACET
467 // ===========================================================
468 
469 // PUBLIC DATA MEMBERS
470 
471 bool
473 contains_vertex_client_id_space(bool xauto_access) const
474 {
475  // Preconditions:
476 
477  require(state_is_auto_read_accessible(xauto_access));
478 
479  // Body:
480 
483 
484  base_space_poset* lhost = reinterpret_cast<base_space_poset*>(host());
485 
486  bool result = lhost->contains_vertex_client_id_space(_index, xauto_access);
487 
488  // Postconditions:
489 
490  ensure(is_basic_query);
491 
492  // Exit:
493 
494  return result;
495 }
496 
499 get_vertex_client_id_space(bool xauto_access) const
500 {
501  // Preconditions:
502 
503  require(state_is_auto_read_accessible(xauto_access));
504  require(contains_vertex_client_id_space(xauto_access));
505 
506  // Body:
507 
510 
511  base_space_poset* lhost = reinterpret_cast<base_space_poset*>(host());
512 
513  index_space_handle& result = lhost->get_vertex_client_id_space(_index, xauto_access);
514 
515  // Postconditions:
516 
517  ensure(result.is_attached());
518  ensure(host()->member_id_spaces(xauto_access).allocated_id_space(result));
519 
520  // Exit:
521 
522  return result;
523 }
524 
525 void
527 release_vertex_client_id_space(index_space_handle& xid_space, bool xauto_access) const
528 {
529  // Preconditions:
530 
531  require(state_is_auto_read_accessible(xauto_access));
532  require(host()->member_id_spaces(xauto_access).allocated_id_space(xid_space));
533 
534  // Body:
535 
538 
539  base_space_poset* lhost = reinterpret_cast<base_space_poset*>(host());
540 
541  lhost->release_vertex_client_id_space(xid_space, xauto_access);
542 
543  // Postconditions:
544 
545  ensure(!xid_space.is_attached());
546 
547  // Exit:
548 
549  return;
550 }
551 
554 get_vertex_client_id_space_iterator(bool xauto_access) const
555 {
556  // Preconditions:
557 
558  require(state_is_auto_read_accessible(xauto_access));
559  require(contains_vertex_client_id_space(xauto_access));
560 
561  // Body:
562 
565 
566  base_space_poset* lhost = reinterpret_cast<base_space_poset*>(host());
567 
568  index_space_iterator& result = lhost->get_vertex_client_id_space_iterator(_index, xauto_access);
569 
570  // Postconditions:
571 
572  ensure(result.is_attached());
573  ensure(host()->member_id_spaces(xauto_access).allocated_id_space_iterator(result));
574 
575  // Exit:
576 
577  return result;
578 }
579 
580 void
583 {
584  // Preconditions:
585 
586  require(state_is_auto_read_accessible(xauto_access));
587  require(host()->member_id_spaces(xauto_access).allocated_id_space_iterator(xitr));
588 
589  // Body:
590 
593 
594  base_space_poset* lhost = reinterpret_cast<base_space_poset*>(host());
595 
596  lhost->release_vertex_client_id_space_iterator(xitr, xauto_access);
597 
598  // Postconditions:
599 
600  ensure(!xitr.is_attached());
601 
602  // Exit:
603 
604  return;
605 }
606 
607 // PROTECTED DATA MEMBERS
608 
609 // PRIVATE DATA MEMBERS
610 
611 
612 // ===========================================================
613 // HOMOGENEOUS_BLOCK FACET
614 // ===========================================================
615 
616 // PUBLIC DATA MEMBERS
617 
620 interval() const
621 {
622  return *reinterpret_cast<const zone_nodes_block_crg_interval*>(_interval);
623 }
624 
625 // PROTECTED DATA MEMBERS
626 
627 // PRIVATE DATA MEMBERS
628 
629 
630 // ===========================================================
631 // BASE_SPACE_MEMBER FACET
632 // ===========================================================
633 
634 // PUBLIC DATA MEMBERS
635 
636 // PROTECTED DATA MEMBERS
637 
638 // PRIVATE DATA MEMBERS
639 
640 
641 // ===========================================================
642 // TOTAL_POSET_MEMBER FACET
643 // ===========================================================
644 
645 // PUBLIC DATA MEMBERS
646 
647 // PROTECTED DATA MEMBERS
648 
649 // PRIVATE DATA MEMBERS
650 
651 
652 // ===========================================================
653 // ABSTRACT_POSET_MEMBER FACET
654 // ===========================================================
655 
656 // PUBLIC DATA MEMBERS
657 
661 {
662  // Preconditions:
663 
664  // Body:
665 
666  attach_to_state(&xother);
667 
668  // Postconditions:
669 
670  ensure(is_same_state(&xother));
671 
672  // Exit
673 
674  return *this;
675 }
676 
680 {
681 
682  // Preconditions:
683 
684  require(is_ancestor_of(&xother));
685 
686  // Body
687 
688  not_implemented();
689 
690  // Postconditions
691 
692  ensure(invariant());
693 
694  // Exit
695 
696  return *this;
697 
698 }
699 
700 // PROTECTED DATA MEMBERS
701 
702 // PRIVATE DATA MEMBERS
703 
704 
705 // ===========================================================
706 // ANY FACET
707 // ===========================================================
708 
709 // PUBLIC DATA MEMBERS
710 
711 bool
713 is_ancestor_of(const any* xother) const
714 {
715  bool result;
716 
717  // Preconditions:
718 
719  // Body:
720 
721  result = dynamic_cast<const zone_nodes_block*>(xother) != 0;
722 
723  // Postconditions:
724 
725  // Exit
726 
727  return result;
728 }
729 
732 clone() const
733 {
734  // Preconditions:
735 
736  // Body:
737 
738  // create new handle of the current class.
739 
740  zone_nodes_block *result = new zone_nodes_block();
741 
742  // Postconditions:
743 
744  ensure(result != 0);
745  ensure(result->invariant());
746 
747  // Exit:
748 
749  return result;
750 }
751 
754 clone(bool xnew_state, bool xauto_access) const
755 {
756  return reinterpret_cast<zone_nodes_block*>(homogeneous_block::clone(xnew_state, xauto_access));
757 }
758 
759 bool
761 invariant() const
762 {
763  // Preconditions:
764 
765  // Body:
766 
767  // Must satisfy base class invariant
768 
769  invariance(total_poset_member::invariant());
770 
771  if(invariant_check())
772  {
773  // Prevent recursive calls to invariant
774 
775  disable_invariant_check();
776 
777  // Invariants for this class:
778 
779  // Finished, turn invariant checking back on.
780 
781  enable_invariant_check();
782  }
783 
784  // Postconditions:
785 
786  // Exit
787 
788  return true;
789 }
790 
791 // PROTECTED DATA MEMBERS
792 
793 // PRIVATE DATA MEMBERS
794 
index_space_handle & get_vertex_client_id_space(bool xauto_access) const
Allocates a vertex client id space handle from the pool of handles.
virtual bool invariant() const
Class invariant.
virtual poset_path path(bool xauto_access=true) const
The path of this poset.
bool state_is_auto_read_write_accessible(bool xauto_access) const
True if state is auto accessible for read and write, that is, if the state is already accessible for ...
virtual zone_nodes_block & operator=(const abstract_poset_member &xother)
Assignment operator; attaches this to the same state as xother.
static const poset_path & static_prototype_path()
The path of the prototype required by this class.
bool path_is_auto_read_write_available(const poset_path &xpath, bool xauto_access) const
True if the state referred to xpath does not exist or exists and is auto read-write accessible...
virtual void create_cover_link(abstract_poset_member *xlesser)
Insert a link from this to lesser; make lesser <= this.
bool full() const
True if both poset name and member name are not empty.
Definition: poset_path.cc:311
abstract_poset_member & top()
The top member of the poset (mutable version)
void release_vertex_client_id_space(index_space_handle &xid_space, bool xauto_access) const
Returns the vertex client id space handle xid_space to the pool of handles.
An abstract iterator over the ids of an id space.
poset_path path(bool xauto_access=true) const
A path to this component.
bool conforms_to(const schema_poset_member &xother) const
True if the dofs defined by this agree in type and in order with the dofs defined by xother...
void new_state(const block_connectivity &xconn, bool xauto_access)
Creates a new unstructured block state in host() and attaches this to it.
The default name space; a poset which contains other posets as members.
bool contains_vertex_client_id_space(pod_index_type xmbr_id, bool xauto_access) const
True, if and only if the block containing the member with index xmbr_id has a vertex client id space...
bool path_is_auto_read_accessible(const poset_path &xpath, bool xauto_access) const
True if the state referred to xpath exists and is auto read accessible.
The standard fiber bundles name space; extends the standard sheaves namespace by defining base space...
virtual zone_nodes_block * clone() const
Make a new handle, no state instance of current.
A path defined by a poset name and a member name separated by a forward slash (&#39;/&#39;). For example: "cell_definitions/triangle".
Definition: poset_path.h:48
virtual homogeneous_block * clone() const =0
Make a new handle, no state instance of current.
index_space_iterator & get_vertex_client_id_space_iterator(bool xauto_access) const
Allocates a vertex client id space iterator from the pool of iterators.
An abstract handle to a space of alternate integer identifiers (aliases) for a subset of a hub set of...
Zone to node connectivity relation for a block of zones of a given type.
A homogeneous collection of zones with nodal connectivity.
poset_state_handle & member_poset(pod_index_type xhub_id, bool xauto_access=true) const
The poset_state_handle object referred to by hub id xhub_id.
static void get_size(const block_connectivity &xconn, size_type &result)
The size of the interval for block connectivity xconn.
virtual bool is_attached() const =0
True if this handle is attached to a state.
static const std::string & prototypes_poset_name()
The name of the prototypes poset.
static void get_private_data(const block_connectivity &xconn, block< pod_index_type > &result)
The private data for an instance with connectivity xconn.
index_space_iterator & get_vertex_client_id_space_iterator(pod_index_type xmbr_id, bool xauto_access) const
Allocates an vertex client id space iterator for the block containing the member with index xmbr_id f...
Abstract base class with useful features for all objects.
Definition: any.h:39
The lattice of closed cells of a cellular space; a lattice representation of a computational mesh...
static host_type & standard_host(namespace_type &xns, const poset_path &xhost_path, int xmax_db, bool xauto_access)
The host with path xhost_path. Returns the host if it already exists, otherwise, creates it in namesp...
virtual schema_poset_member & schema()
The schema for this poset (mutable version).
virtual const zone_nodes_block_crg_interval & interval() const
The implicit interval member for this block.
zone_nodes_block()
Default constructor; creates a new, unattached handle.
bool owns(const poset_state_handle &xposet, bool xauto_access) const
True if and only if this contains the poset xposet. synonym for contains_poset(xposet.poset_path(true), xauto_access)
An index within the external ("client") scope of a given id space.
Definition: scoped_index.h:116
virtual bool is_attached() const
True if this handle is attached to a non-void state.
void release_vertex_client_id_space_iterator(index_space_iterator &xitr, bool xauto_access) const
Returns the vertex client id space iterator xitr to the pool of iterators.
virtual void get_read_access() const
Get read access to the state associated with this.
unsigned long size_type
An unsigned integral type used to represent sizes and capacities.
Definition: sheaf.h:52
std::string poset_name() const
The poset name part of the path.
Definition: poset_path.cc:473
index_space_handle & get_vertex_client_id_space(pod_index_type xmbr_id, bool xauto_access) const
Allocates an vertex client id space handle for the block containing the member with index xmbr_id for...
bool contains_path(const poset_path &xpath, bool xauto_access=true) const
True if this contains the poset or poset member specified by xpath.
bool empty() const
True if both poset name and member name are empty.
Definition: poset_path.cc:291
static void get_dof_tuple_ids(poset_state_handle &xhost, const block_connectivity &xconn, block< pod_index_type > &result)
The dof tuple ids for an instance created with parameter xi_size.
virtual void release_access(bool xall=false) const
Release access. If xall is true, release all levels of access. Otherwise, release one level of access...
Emulator for a interval of implicit base space members representing an unstructured block...
void release_vertex_client_id_space(index_space_handle &xid_space, bool xauto_access) const
Returns the handle to the vertex client id space, xid_space to the pool of id space handles...
namespace_poset * name_space() const
The namespace this poset resides in.
virtual bool is_attached() const
True if this is attached to a state.
virtual bool is_ancestor_of(const any *other) const
True if other conforms to this.
virtual ~zone_nodes_block()
Destructor; deletes a poset member and its attached state, if any.
bool contains_vertex_client_id_space(bool xauto_access) const
True if and only if this block contains a vertex client id space.
virtual bool is_attached() const =0
True if this iterator is attached to a state.
size_type element_ct() const
The number of elements.
static host_type & new_host(namespace_type &xns, const poset_path &xhost_path, const poset_path &xschema_path, int xmax_db, bool xauto_access)
Creates a new host poset for members of this type. The poset is created in namespace xns with path xh...
int_type pod_index_type
The plain old data index type.
Definition: pod_types.h:49
std::string member_name() const
The member name part of the path.
Definition: poset_path.cc:511
virtual pod_index_type new_member_interval(const std::string &xinterval_type, size_type xsize, const block< pod_index_type > &xdof_tuple_ids, const block< pod_index_type > &xdata)
Create a disconnected member interval of type xinterval_type with size xsize, dof tuple ids xdof_tupl...
virtual void end_jim_edit_mode(bool xensure_lattice_invariant=true, bool xauto_access=true)
Prevent editing of jims and jim order relation.
Definition: poset.cc:253
static bool is_valid_name(const std::string &xname)
True if xname is not empty and contains only name legal characters.
Definition: poset_path.cc:331
virtual void get_read_access() const
Get read access to the state associated with this.
int max_db() const
The maximum dimension of the members of this base space.
An abstract client handle for a member of a poset.
bool row_conforms_to(const schema_poset_member &xother) const
True if the row dofs defined by this agree in type and in order with the dofs defined by xother...
bool in_jim_edit_mode() const
True if editing jims and jim order relation is allowed.
Namespace for the fiber_bundles component of the sheaf system.
void release_vertex_client_id_space_iterator(index_space_iterator &xitr, bool xauto_access) const
Returns the iterator to the vertex client id space, xitr to the pool of id space iterators.
bool state_is_not_read_accessible() const
True if this is attached and if the state is accessible for read or if access control is disabled...
virtual void release_access(bool xall=false) const
Release access. If xall is true, release all levels of access. Otherwise, release one level of access...
virtual bool invariant() const
Class invariant.
pod_type hub_pod() const
The pod value of this mapped to the unglued hub id space.
Definition: scoped_index.h:710
virtual void begin_jim_edit_mode(bool xauto_access=true)
Allow editing of jims and jim order relation.
Definition: poset.cc:230