SheafSystem  0.0.0.0
stp.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/stp.h"
22 
23 #include "SheafSystem/abstract_poset_member.impl.h"
24 #include "SheafSystem/assert_contract.h"
25 #include "SheafSystem/at1.h"
26 #include "SheafSystem/at1_space.h"
27 #include "SheafSystem/fiber_bundles_namespace.h"
28 #include "SheafSystem/schema_poset_member.h"
29 #include "SheafSystem/stp_space.h"
30 #include "SheafSystem/wsv_block.h"
31 
32 
33 using namespace std;
34 using namespace fiber_bundle; // Workaround for MS C++ bug.
35 using namespace fiber_bundle::vd_algebra;
36 
37 //==============================================================================
38 // CLASS STP_LITE
39 //==============================================================================
40 
41 //==============================================================================
42 // INTERIOR ALGEBRA (STP) FACET OF CLASS STP_LITE
43 //==============================================================================
44 
45 // PUBLIC MEMBER FUNCTIONS
46 
49 {
50 
51  // Preconditions:
52 
53  // Body:
54 
55  // Postconditions:
56 
57  ensure(invariant());
58 
59  // Exit:
60 }
61 
63 stp_lite(const stp_lite& xother)
64 {
65  // Preconditions:
66 
67  // Body:
68 
69  *this = xother;
70 
71  // Postconditions:
72 
73  ensure(invariant());
74 
75  // Exit:
76 }
77 
80 operator=(const stp_lite& xother)
81 {
82 
83  // Preconditions:
84 
85  // Body:
86 
87  // Postconditions:
88 
89  ensure(invariant());
90 
91  // Exit:
92 
93  return *this;
94 }
95 
98 {
99  // Preconditions:
100 
101  // Body:
102 
103  // Postconditions:
104 
105  // Exit:
106 
107 }
108 
110 stp_lite(const row_dofs_type& xrow_dofs)
111 {
112  // Preconditions:
113 
114  // Body:
115 
116  *this = xrow_dofs;
117 
118  // Postconditions:
119 
120  ensure(invariant());
121 
122  // Exit:
123 }
124 
127 operator=(const row_dofs_type& xrow_dofs)
128 {
129  // Preconditions:
130 
131  // Body:
132 
133  vd_lite::operator=(xrow_dofs);
134 
135  // Postconditions:
136 
137  postcondition_of(vd_lite::operator=(xrow_dofs));
138 
139  // Exit:
140 
141  return *this;
142 
143 }
144 
145 // PROTECTED MEMBER FUNCTIONS
146 
147 // PRIVATE MEMBER FUNCTIONS
148 
149 
150 //==============================================================================
151 // TENSOR ALGEBRA (TP) FACET OF CLASS STP_LITE
152 //==============================================================================
153 
154 // PUBLIC MEMBER FUNCTIONS
155 
156 int
158 d() const
159 {
160  // Preconditions:
161 
162  //require(dd()+p()-1 >= p() && p() >= 0);
163 
164  // Body:
165 
166  //$$SCRIBBLE: Don't know what the correct value is here when
167  // dd() == p() == 0. For now just return 0.
168 
169  int result = 0;
170  if(dd()+p()-1 >= p())
171  {
172  result = static_cast<int>(binomial_coefficient(dd()+p()-1, p()));
173  }
174 
175  // Postconditions:
176 
177  ensure(invariant());
178  //ensure(result == static_cast<int>(binomial_coefficient(dd()+p()-1, p())));
179 
180  // Exit:
181 
182  return result;
183 }
184 
185 // PROTECTED MEMBER FUNCTIONS
186 
187 // PRIVATE MEMBER FUNCTIONS
188 
189 
190 //==============================================================================
191 // VECTOR ALGEBRA (VD) FACET OF CLASS STP_LITE
192 //==============================================================================
193 
194 // PUBLIC MEMBER FUNCTIONS
195 
196 // PROTECTED MEMBER FUNCTIONS
197 
198 // PRIVATE MEMBER FUNCTIONS
199 
200 
201 //==============================================================================
202 // CARTESIAN ALGEBRA (TUPLE) FACET OF CLASS STP_LITE
203 //==============================================================================
204 
205 // PUBLIC MEMBER FUNCTIONS
206 
207 // PROTECTED MEMBER FUNCTIONS
208 
209 // PRIVATE MEMBER FUNCTIONS
210 
211 
212 //==============================================================================
213 // ABSTRACT POSET MEMBER FACET OF CLASS STP_LITE
214 //==============================================================================
215 
216 // PUBLIC MEMBER FUNCTIONS
217 
218 const std::string&
220 class_name() const
221 {
222  // Preconditions:
223 
224  // Body:
225 
226  const string& result = static_class_name();
227 
228  // Postconditions:
229 
230  ensure(!result.empty());
231 
232  // Exit:
233 
234  return result;
235 }
236 
237 const std::string&
240 {
241  // Preconditions:
242 
243  // Body:
244 
245  static const string result("stp_lite");
246 
247  // Postconditions:
248 
249  ensure(!result.empty());
250 
251  // Exit:
252 
253  return result;
254 }
255 
258 clone() const
259 {
260  stp_lite* result = 0;
261 
262  // Preconditions:
263 
264  // Body:
265 
266  result = new stp_lite();
267 
268  // Postconditions:
269 
270  ensure(result != 0);
271  ensure(is_same_type(*result));
272 
273  // Exit:
274 
275  return result;
276 }
277 
278 // PROTECTED MEMBER FUNCTIONS
279 
280 // PRIVATE MEMBER FUNCTIONS
281 
282 
283 //==============================================================================
284 // ANY FACET OF CLASS STP_LITE
285 //==============================================================================
286 
287 // PUBLIC MEMBER FUNCTIONS
288 
289 bool
291 is_ancestor_of(const any_lite& xother) const
292 {
293  // Preconditions:
294 
295  require(&xother != 0);
296 
297  // Body:
298 
299  // True if other conforms to this.
300 
301  bool result = dynamic_cast<const stp_lite*>(&xother) != 0;
302 
303  // Postconditions:
304 
305  return result;
306 }
307 
308 bool
310 invariant() const
311 {
312  bool result = true;
313 
314  if(invariant_check())
315  {
316  // Prevent recursive calls to invariant.
317 
318  disable_invariant_check();
319 
320  // Must satisfy base class invariant.
321 
322  invariance(tp_lite::invariant());
323 
324  // Invariances for this class:
325 
326  // Finished, turn invariant checking back on.
327 
328  enable_invariant_check();
329  }
330 
331  // Exit
332 
333  return result;
334 }
335 
336 // PROTECTED MEMBER FUNCTIONS
337 
338 // PRIVATE MEMBER FUNCTIONS
339 
340 
341 //==============================================================================
342 // CLASS STP
343 //==============================================================================
344 
345 // ===========================================================
346 // HOST FACTORY FACET
347 // ===========================================================
348 
349 // PUBLIC MEMBER FUNCTIONS
350 
351 
352 const sheaf::poset_path&
355 {
356  // Preconditions:
357 
358 
359  // Body:
360 
361  static const poset_path result(standard_schema_poset_name(), "stp_schema");
362 
363  // Postconditions:
364 
365  ensure(result.full());
366  ensure(result.poset_name() == standard_schema_poset_name());
367 
368  // Exit:
369 
370  return result;
371 }
372 
373 void
376 {
377  // Preconditions:
378 
379  require(xns.state_is_read_write_accessible());
380  require(xns.contains_poset(standard_schema_poset_name()));
381  require(!xns.contains_poset_member(standard_schema_path()));
382 
383  // Body:
384 
385  schema_poset_member lschema(xns,
386  standard_schema_path().member_name(),
387  tp::standard_schema_path(),
388  "",
389  false);
390 
391  lschema.detach_from_state();
392 
393  // Postconditions:
394 
395  ensure(xns.contains_poset_member(standard_schema_path()));
396 
397  // Exit:
398 
399  return;
400 }
401 
405  const poset_path& xhost_path,
406  const poset_path& xschema_path,
407  int xp,
408  const poset_path& xvector_space_path,
409  bool xauto_access)
410 {
411  // cout << endl << "Entering stp::new_host." << endl;
412 
413  // Preconditions:
414 
415  require(xns.state_is_auto_read_write_accessible(xauto_access));
416 
417  require(!xhost_path.empty());
418  require(!xns.contains_path(xhost_path, xauto_access));
419 
420  require(xschema_path.full());
421  require(xns.path_is_auto_read_accessible(xschema_path, xauto_access));
422  require(schema_poset_member::conforms_to(xns, xschema_path, standard_schema_path()));
423 
424  require(xns.path_is_auto_read_accessible(xvector_space_path, xauto_access));
425  require(xns.contains_poset<vector_space_type::host_type>(xvector_space_path, xauto_access));
426 
427  require(host_type::d(xns, xschema_path, xauto_access) == host_type::d(xns, xp, xvector_space_path, xauto_access));
428 
429  // Body:
430 
431  host_type& result =
432  host_type::new_table(xns, xhost_path, xschema_path, xp, xvector_space_path, xauto_access);
433 
434  // Postconditions:
435 
436  ensure(xns.owns(result, xauto_access));
437  ensure(result.path(true) == xhost_path);
438  ensure(result.state_is_not_read_accessible());
439  ensure(result.schema(true).path(xauto_access) == xschema_path);
440 
441  ensure(result.factor_ct(true) == result.d(true));
442  ensure(result.d(true) == host_type::d(xns, xschema_path, xauto_access));
443  ensure(result.scalar_space_path(true) == xns.member_poset<vector_space_type::host_type>(xvector_space_path, xauto_access).scalar_space_path());
444  ensure(result.p(true) == xp);
445  ensure(result.dd(true) == xns.member_poset<vector_space_type::host_type>(xvector_space_path, xauto_access).d());
446  ensure(result.vector_space_path(true) == xvector_space_path );
447 
448  // Exit:
449 
450  // cout << "Leaving stp::new_host." << endl;
451  return result;
452 }
453 
454 // PROTECTED MEMBER FUNCTIONS
455 
456 // PRIVATE MEMBER FUNCTIONS
457 
458 //==============================================================================
459 // INTERIOR ALGEBRA (STP) FACET OF CLASS STP
460 //==============================================================================
461 
462 // PUBLIC MEMBER FUNCTIONS
463 
466 {
467 
468  // Preconditions:
469 
470  // Body:
471 
472  // Postconditions:
473 
474  ensure(invariant());
475 }
476 
478 stp(const poset_state_handle* xhost, pod_index_type xhub_id)
479 {
480  // Preconditions:
481 
482  require(xhost != 0);
483  require(xhost->state_is_read_accessible());
484  require(xhost->contains_member(xhub_id));
485 
486  // Body:
487 
488  attach_to_state(xhost, xhub_id);
489 
490  // Postconditions:
491 
492  ensure(invariant());
493  // ensure(host() == xhost);
494  ensure(index() == xhub_id);
495  ensure(is_attached());
496 }
497 
499 stp(const poset_state_handle* xhost, const scoped_index& xid)
500 {
501  // Preconditions:
502 
503  require(xhost != 0);
504  require(xhost->state_is_read_accessible());
505  require(xhost->contains_member(xid));
506 
507  // Body:
508 
509  attach_to_state(xhost, xid.hub_pod());
510 
511  // Postconditions:
512 
513  ensure(invariant());
514  // ensure(host() == xhost);
515  ensure(index() ==~ xid);
516  ensure(is_attached());
517 }
518 
520 stp(const poset_state_handle* xhost, const std::string& xname)
521 {
522 
523  // Preconditions:
524 
525  require(xhost != 0);
526  require(xhost->state_is_read_accessible());
527  require(!xname.empty());
528  require(xhost->contains_member(xname));
529 
530  // Body:
531 
532  attach_to_state(xhost, xname);
533 
534  // Postconditions:
535 
536  ensure(invariant());
537  // ensure(host() == xhost);
538  ensure(name() == xname);
539  ensure(is_attached());
540 
541 }
542 
545 {
546 
547  // Preconditions:
548 
549  require(xother != 0);
550 
551  // Body:
552 
553  attach_to_state(xother);
554 
555  // Postconditions:
556 
557  ensure(invariant());
558  ensure(is_attached());
559  ensure(is_same_state(xother));
560 
561 }
562 
564 stp(poset_state_handle* xhost, bool xauto_access)
565 {
566 
567  // Preconditions:
568 
569  require(precondition_of(new_jim_state(xhost, 0, false, xauto_access)));
570 
571  // Body:
572 
573  new_jim_state(xhost, 0, false, xauto_access);
574 
575  // Postconditions:
576 
577  ensure(postcondition_of(new_jim_state(xhost, 0, false, xauto_access)));
578 
579  // Exit:
580 
581  return;
582 }
583 
588 {
589  // Preconditions:
590 
591  require(is_ancestor_of(&xother));
592  require(precondition_of(attach_to_state(&xother)));
593 
594  // Body:
595 
596  attach_to_state(&xother);
597 
598  // Postconditions:
599 
600  ensure(postcondition_of(attach_to_state(&xother)));
601 
602  // Exit:
603 
604  return *this;
605 }
606 
610 operator=(const stp& xother)
611 {
612  // Preconditions:
613 
614  require(precondition_of(attach_to_state(&xother)));
615 
616  // Body:
617 
618  attach_to_state(&xother);
619 
620  // Postconditions:
621 
622  ensure(postcondition_of(attach_to_state(&xother)));
623 
624  // Exit:
625 
626  return *this;
627 }
628 
631 {
632 
633  // Preconditions:
634 
635 
636  // Body:
637 
638 
639  // Postconditions:
640 
641 }
642 
646 {
647  // Preconditions:
648 
649  // Body:
650 
651  static const volatile_type result;
652 
653  // Postconditions:
654 
655  // Exit:
656 
657  return result;
658 }
659 
663 lite_type() const
664 {
665  // Preconditions:
666 
667  // Body:
668 
669  volatile_type* result = new volatile_type(sheaf::row_dofs(*this));
670 
671  // Postconditions:
672 
673  // Exit:
674 
675  return result;
676 }
677 
678 // PROTECTED MEMBER FUNCTIONS
679 
680 // PRIVATE MEMBER FUNCTIONS
681 
682 
683 //==============================================================================
684 // TENSOR ALGEBRA (TP) FACET OF CLASS STP
685 //==============================================================================
686 
687 // PUBLIC MEMBER FUNCTIONS
688 
689 // PROTECTED MEMBER FUNCTIONS
690 
691 // PRIVATE MEMBER FUNCTIONS
692 
693 
694 //==============================================================================
695 // VECTOR ALGEBRA (VD) FACET OF CLASS STP
696 //==============================================================================
697 
698 // PUBLIC MEMBER FUNCTIONS
699 
700 // PROTECTED MEMBER FUNCTIONS
701 
702 // PRIVATE MEMBER FUNCTIONS
703 
704 
705 //==============================================================================
706 // CARTESIAN ALGEBRA (TUPLE) FACET OF CLASS STP
707 //==============================================================================
708 
709 // PUBLIC MEMBER FUNCTIONS
710 
711 // PROTECTED MEMBER FUNCTIONS
712 
713 // PRIVATE MEMBER FUNCTIONS
714 
715 
716 //==============================================================================
717 // ABSTRACT POSET MEMBER FACET OF CLASS STP
718 //==============================================================================
719 
720 // PUBLIC MEMBER FUNCTIONS
721 
722 const std::string&
724 class_name() const
725 {
726  // Preconditions:
727 
728  // Body:
729 
730  const string& result = static_class_name();
731 
732  // Postconditions:
733 
734  ensure(!result.empty());
735 
736  // Exit:
737 
738  return result;
739 }
740 
741 const std::string&
744 {
745  // Preconditions:
746 
747  // Body:
748 
749  static const string result("stp");
750 
751  // Postconditions:
752 
753  ensure(!result.empty());
754 
755  // Exit:
756 
757  return result;
758 }
759 
760 // PROTECTED MEMBER FUNCTIONS
761 
762 // PRIVATE MEMBER FUNCTIONS
763 
764 
765 // ===========================================================
766 // POSET_COMPONENT FACET
767 // ===========================================================
768 
769 
772 host() const
773 {
774  return reinterpret_cast<host_type*>(_host);
775 }
776 
777 bool
780 {
781  return dynamic_cast<const host_type*>(xother) != 0;
782 }
783 
784 // PROTECTED MEMBER FUNCTIONS
785 
786 // PRIVATE MEMBER FUNCTIONS
787 
788 
789 //==============================================================================
790 // ANY FACET OF CLASS STP
791 //==============================================================================
792 
793 // PUBLIC MEMBER FUNCTIONS
794 
795 bool
797 is_ancestor_of(const any* xother) const
798 {
799 
800  // Preconditions:
801 
802  require(xother != 0);
803 
804  // Body:
805 
806  // If xother may be dynamically cast to the type of this then this is an
807  // ancestor of other.
808 
809  bool result = dynamic_cast<const stp*>(xother) != 0;
810 
811  // Postconditions:
812 
813  ensure(invariant());
814 
815  // Exit:
816 
817  return result;
818 
819 }
820 
823 clone() const
824 {
825 
826  // Preconditions:
827 
828  // Body:
829 
830  // Create new handle of the current class.
831 
832  stp* result = new stp();
833 
834  // Postconditions:
835 
836  ensure(result != 0);
837  ensure(result->invariant());
838 
839  // Exit:
840 
841  return result;
842 
843 }
844 
845 bool
847 invariant() const
848 {
849  bool result = true;
850 
851  // Preconditions:
852 
853  // Body:
854 
855  // Must satisfy base class invariant.
856 
857  invariance(tp::invariant());
858 
859  if(invariant_check())
860  {
861  // Prevent recursive calls to invariant.
862 
863  disable_invariant_check();
864 
865  // Invariants for this class:
866 
867  invariance(state_is_read_accessible() ? is_covariant(false) || is_contravariant(false) : true);
868 
869  // Finished, turn invariant checking back on.
870 
871  enable_invariant_check();
872  }
873 
874  // Postconditions:
875 
876  ensure(is_derived_query);
877 
878  // Exit:
879 
880  return result;
881 }
882 
883 // PROTECTED MEMBER FUNCTIONS
884 
885 // PRIVATE MEMBER FUNCTIONS
886 
887 
888 //==============================================================================
889 // NON-MEMBER FUNCTIONS
890 //==============================================================================
891 
892 //==============================================================================
893 // STP FACET
894 //==============================================================================
895 
896 void
898 symmetric_product(const stp_lite& x0, const stp_lite& x1, stp_lite& xresult)
899 {
900  // Preconditions:
901 
902  require(x1.dd() == x0.dd());
903  require(xresult.dd() == x0.dd());
904  require(xresult.p() == x0.p() + x1.p());
905 
906  // Body:
907 
908  not_implemented();
909 
910  // Postconditions:
911 
912  //ensure();
913 
914  // Exit:
915 
916  return;
917 }
918 
919 void
921 symmetric_product(const stp& x0, const stp& x1, stp& xresult, bool xauto_access)
922 {
923  // Preconditions:
924 
925  require(x0.state_is_auto_read_accessible(xauto_access));
926  require(x1.state_is_auto_read_accessible(xauto_access));
927  require(xresult.state_is_auto_read_accessible(xauto_access));
928  require(xresult.p(xauto_access) == x0.p(xauto_access) + x1.p(xauto_access));
929 
930  // Body:
931 
932  not_implemented();
933 
934  // Postconditions:
935 
936  //ensure(xresult.variance(xauto_access) == \
937  // (x0.variance(xauto_access) | x1.variance(xauto_access)));
938 
939  // Exit:
940 
941  return;
942 }
943 
virtual int dd() const
Dimension of the underlying vector space.
Definition: tp.cc:166
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 ...
static const std::string & static_class_name()
The name of this class.
Definition: stp.cc:239
A symmetric tensor of degree p over an abstract vector space.
Definition: stp.h:190
bool full() const
True if both poset name and member name are not empty.
Definition: poset_path.cc:311
virtual int p() const
The degree of the tensors in host(); the sum of the contravariant and covariant degrees.
Definition: tp.cc:735
virtual const volatile_type & lite_prototype() const
Virtual constructor for the associated volatile type.
Definition: stp.cc:645
poset_path path(bool xauto_access=true) const
A path to this component.
The default name space; a poset which contains other posets as members.
bool state_is_read_accessible() const
True if this is attached and if the state is accessible for read or access control is disabled...
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...
poset_path vector_space_path() const
The path of the underlying vector space.
Definition: tp_space.cc:365
bool contains_poset_member(pod_index_type xposet_hub_id, pod_index_type xmember_hub_id, bool xauto_access=true) const
True if this contains a poset with hub id xposet_hub_id which contains a member with hub id xmember_h...
bool state_is_auto_read_accessible(bool xauto_access) const
True if the state is auto accessible for read, that is, if the state is already accessible for read o...
A client handle for a general, abstract partially order set.
virtual ~stp_lite()
Destructor.
Definition: stp.cc:97
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 stp & operator=(const abstract_poset_member &xother)
Assignment operator; synonym for attach_to_state(&xother).
Definition: stp.cc:587
SHEAF_DLL_SPEC void symmetric_product(const stp_lite &x0, const stp_lite &x1, stp_lite &xresult)
Symmetric product (pre-allocated version for volatile types).
Definition: stp.cc:898
STL namespace.
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.
SHEAF_DLL_SPEC unsigned int binomial_coefficient(unsigned int xi, unsigned int xj)
Binomial coefficient (xi, xj).
Definition: vd.cc:2673
virtual bool host_is_ancestor_of(const poset_state_handle *other) const
True if other conforms to host.
Definition: stp.cc:779
stp_lite()
Default constructor.
Definition: stp.cc:48
T::row_dofs_type & row_dofs(T &x0)
The row dofs pod type for x0 (mutable version).
virtual int p() const
The degree of the tensor; the sum of the contravariant and covariant degrees.
Definition: tp.cc:146
static int d(const namespace_poset &xns, int xp, const poset_path &xvector_space_path, bool xauto_access)
The tensor dimension implied by tensor degree xp and the dimension of the domain vector space specifi...
Definition: stp_space.cc:86
bool is_ancestor_of(const any *xother) const
True if xother conforms to current.
Definition: stp.cc:797
virtual int d() const
Dimension of this as a vector space.
Definition: stp.cc:158
Abstract base class with useful features for all volatile objects.
Definition: any_lite.h:48
Abstract base class with useful features for all objects.
Definition: any.h:39
virtual schema_poset_member & schema()
The schema for this poset (mutable version).
virtual const std::string & class_name() const
The name of this class.
Definition: stp.cc:220
virtual stp_lite * clone() const
Virtual constructor, makes a new instance of the same type as this.
Definition: stp.cc:258
bool state_is_read_write_accessible() const
True if this is attached and if the state is accessible for read and write or access control is disab...
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)
host_type * host() const
The poset this is a member of.
Definition: stp.cc:772
An index within the external ("client") scope of a given id space.
Definition: scoped_index.h:116
virtual bool is_ancestor_of(const any_lite &xother) const
Conformance test; true if other conforms to this.
Definition: stp.cc:291
std::string poset_name() const
The poset name part of the path.
Definition: poset_path.cc:473
bool contains_path(const poset_path &xpath, bool xauto_access=true) const
True if this contains the poset or poset member specified by xpath.
virtual bool contains_member(pod_index_type xmbr_hub_id, bool xauto_access=true) const
True if some version of this poset contains poset member with hub id xmbr_hub_id. ...
int p(int xd, int xdd) const
Tensor degree as a function of tensor dimension xd and domain dimension xdd.
Definition: tp_space.cc:235
virtual stp * clone() const
Make a new handle, no state instance of current.
Definition: stp.cc:823
static void make_standard_schema(namespace_poset &xns)
Creates the standard schema for this class in namespace xns.
Definition: stp.cc:375
bool empty() const
True if both poset name and member name are empty.
Definition: poset_path.cc:291
static host_type & new_host(namespace_type &xns, const poset_path &xhost_path, const poset_path &xschema_path, int xp, const poset_path &xvector_space_path, bool xauto_access)
Creates a new host table for members of this type. The poset is created in namespace xns with path xh...
Definition: stp.cc:404
bool contains_poset(pod_index_type xhub_id, bool xauto_access=true) const
True if this contains a poset with hub id xhub_id..
stp()
Default constructor.
Definition: stp.cc:465
poset_path scalar_space_path() const
The path of the underlying space of scalars.
Definition: vd_space.cc:250
An abstract vector space viewed as an antisymmetric tensor space of degree 1.
Definition: at1_space.h:42
stp_lite & operator=(const stp_lite &xother)
Assignment operator.
Definition: stp.cc:80
virtual const std::string & class_name() const
The name of this class.
Definition: stp.cc:724
static const poset_path & standard_schema_path()
The path to the standard schema for this class.
Definition: stp.cc:354
static int factor_ct(int xd)
Factor_ct() as a function of dimension xd.
Definition: vd_space.cc:167
int_type pod_index_type
The plain old data index type.
Definition: pod_types.h:49
int dd() const
The dimension of the underlying ("domain") vector space.
Definition: tp_space.cc:317
An abstract client handle for a member of a poset.
~stp()
Destructor.
Definition: stp.cc:630
static const std::string & static_class_name()
The name of this class.
Definition: stp.cc:743
bool invariant() const
Class invariant.
Definition: stp.cc:310
Namespace containing the vector algrebra functions for the fiber_bundles component of the sheaf syste...
Definition: e3.h:1135
A symmetric tensor of degree p over an abstract vector space (volatile version).
Definition: stp.h:44
An abstract symmetric tensor space of degree p.
Definition: stp_space.h:42
Namespace for the fiber_bundles component of the sheaf system.
bool invariant() const
Class invariant.
Definition: stp.cc:847
Row dofs type for class vd.
Definition: vd.h:61
virtual volatile_type * lite_type() const
Virtual conversion to the associated volatile type.
Definition: stp.cc:663
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...
A client handle for a poset member which has been prepared for use as a schema.
pod_type hub_pod() const
The pod value of this mapped to the unglued hub id space.
Definition: scoped_index.h:710