21 #ifndef POSET_SCAFFOLD_H 22 #define POSET_SCAFFOLD_H 24 #ifndef SHEAF_DLL_SPEC_H 25 #include "SheafSystem/sheaf_dll_spec.h" 29 #include "SheafSystem/any.h" 33 #include "SheafSystem/arg_list.h" 37 #include "SheafSystem/auto_block.h" 40 #ifndef INTERVAL_INDEX_SPACE_HANDLE_H 41 #include "SheafSystem/interval_index_space_handle.h" 44 #ifndef NAME_MULTIMAP_H 45 #include "SheafSystem/name_multimap.h" 49 #include "SheafSystem/record_map.h" 52 #ifndef POSET_STATE_HANDLE_H 53 #include "SheafSystem/poset_state_handle.h" 56 #ifndef POSET_DATA_TYPE_MAP_H 57 #include "SheafSystem/poset_data_type_map.h" 60 #ifndef RECORD_QUEUE_H 61 #include "SheafSystem/record_queue.h" 64 #ifndef SCHEMA_POSET_MEMBER_H 65 #include "SheafSystem/schema_poset_member.h" 68 #ifndef STD_UNORDERED_MAP_H 69 #include "SheafSystem/std_unordered_map.h" 73 #include "SheafSystem/std_vector.h" 76 #ifndef STORAGE_AGENT_H 77 #include "SheafSystem/storage_agent.h" 85 class namespace_poset;
120 const std::string& xfile_id_space_name,
121 bool xis_write_transaction);
160 bool is_write_transaction()
const;
197 void evaluate_toc_alias();
217 bool structure_is_namespace()
const;
227 std::string name()
const;
272 const std::string& file_id_space_name()
const;
277 bool& is_versioned();
282 const bool& is_versioned()
const;
289 int xschema_version);
295 void initialize_transfer_schema_for_read(
const scoped_index& xindex);
305 void extract_id_name_pair(
pod_index_type& xid, std::string& xname,
char*& xbuf);
310 void get_member_names_from_poset();
316 void put_member_names_to_poset();
332 bool _is_write_transaction;
374 void initialize_schema_for_write();
384 std::string _file_id_space_name;
419 void put_member_record_type_aliases(
int xtoc_index,
420 int xdof_tuple_id_index,
426 void initialize_member_id_space();
431 bool member_id_space_initialized()
const;
446 member_index_space_type& member_id_space();
451 const member_index_space_type& member_id_space()
const;
456 member_name_map_type& member_name_map();
461 const member_name_map_type& member_name_map()
const;
471 member_class_names_type& member_class_names();
476 const member_class_names_type& member_class_names()
const;
482 void convert_member_id_to_record_id(
void *buf);
488 void convert_record_id_to_member_id(
void *buf);
497 member_index_space_type _member_id_space;
502 member_name_map_type _member_name_map;
507 member_class_names_type _member_class_names;
527 void initialize_subposet_id_space();
532 bool subposet_id_space_initialized()
const;
547 subposet_index_space_type& subposet_id_space();
552 const subposet_index_space_type& subposet_id_space()
const;
557 std::vector<subposet*>& subposets();
562 const std::vector<subposet*>& subposets()
const;
568 void convert_subposet_id_to_record_id(
void* xbuf);
574 void convert_record_id_to_subposet_id(
void* xbuf);
583 subposet_index_space_type _subposet_id_space;
588 std::vector<subposet*> _subposets;
593 void initialize_subposets();
613 void initialize_dof_tuple_id_space();
618 bool dof_tuple_id_space_initialized()
const;
633 dof_tuple_index_space_type& dof_tuple_id_space();
638 const dof_tuple_index_space_type& dof_tuple_id_space()
const;
658 dof_tuple_types_type& dof_tuple_types();
663 const dof_tuple_types_type& dof_tuple_types()
const;
673 dof_tuple_class_names_type& dof_tuple_class_names();
678 const dof_tuple_class_names_type& dof_tuple_class_names()
const;
688 dof_tuple_schema_versions_type& dof_tuple_schema_versions();
693 const dof_tuple_schema_versions_type& dof_tuple_schema_versions()
const;
699 bool dof_tuple_schema_versions_contains(
pod_index_type xdof_tuple_ext_id)
const;
715 dof_tuple_schema_ids_type& dof_tuple_schema_ids();
720 const dof_tuple_schema_ids_type& dof_tuple_schema_ids()
const;
726 bool dof_tuple_schema_ids_contains(
pod_index_type xdof_tuple_ext_id)
const;
741 typedef unordered::unordered_map<pod_index_type, poset_bounds_descriptor>
758 bool dof_tuple_col_bounds_contains(
pod_index_type xdof_tuple_ext_id)
const;
776 void translate_dof_tuple_col_bounds();
786 typedef std::map<std::pair<pod_index_type, pod_index_type>,
pod_index_type>
803 bool dof_tuple_domain_offsets_contains(
pod_index_type xdof_tuple_ext_id,
818 dof_tuple_index_space_type _dof_tuple_id_space;
828 dof_tuple_types_type _dof_tuple_types;
833 dof_tuple_class_names_type _dof_tuple_class_names;
838 dof_tuple_schema_versions_type _dof_tuple_schema_versions;
843 dof_tuple_schema_ids_type _dof_tuple_schema_ids;
878 id_spaces_type& id_spaces();
883 const id_spaces_type& id_spaces()
const;
892 id_spaces_type _id_spaces;
914 virtual bool invariant()
const;
919 virtual bool is_ancestor_of(
const any* other)
const;
931 #endif // ifndef POSET_SCAFFOLD_H An implementation of class scattered_insertion_index_space_handle that has a interval id space state...
A client handle for a subposet.
unordered::unordered_map< pod_index_type, int > dof_tuple_schema_versions_type
Type of dof tuple versions map.
interval_index_space_handle subposet_index_space_type
Type for subposet index space.
The default name space; a poset which contains other posets as members.
unordered::unordered_map< pod_index_type, std::string > dof_tuple_class_names_type
Type of dof tuple class names map.
A client handle for a general, abstract partially order set.
A partial multi-valued relation with total injective inverse between names and indices of type index_...
unordered::unordered_map< pod_index_type, poset_bounds_descriptor > dof_tuple_col_bounds_type
Type of dof tuple col bounds map.
A (lower, upper) bounds pair for a poset. Specifies a portion of a poset for a bounded i/o operation...
unordered::unordered_map< pod_index_type, pod_index_type > dof_tuple_schema_ids_type
Type of dof tuple schema ids map.
unordered::unordered_map< pod_index_type, dof_tuple_type > dof_tuple_types_type
Type of dof tuple types map.
A auto_block initialization policy that initializes the values to zero.
Abstract base class with useful features for all objects.
A poset specific collection of data converters, various buffers and other data used while transferrin...
An index within the external ("client") scope of a given id space.
A description of a (lower, upper) bounds pair for a poset. Specifies a portion of a poset for a bound...
name_multimap member_name_map_type
Type for member name map.
auto_block< scattered_insertion_index_space_handle *, init_type > id_spaces_type
The type of the id space block.
int_type pod_index_type
The plain old data index type.
Namespace for the sheaves component of the sheaf system.
A collection of data converters that map data types between internal and external representations...
A poset specific collection of data converters, various buffers and other data used while transferrin...
unordered::unordered_map< pod_index_type, std::pair< std::string, size_type > > member_class_names_type
Type of member class names map.
interval_index_space_handle dof_tuple_index_space_type
Type for dof tuple index space.
zero_block_initialization_policy< scattered_insertion_index_space_handle * > init_type
The initialization type of the id space block.
An auto_block with a no-initialization initialization policy.
The set of subsets of a poset.
A client handle for a poset member which has been prepared for use as a schema.
interval_index_space_handle member_index_space_type
Type for member index space.
The data structure representing the table containing the dof tuples of the members of a poset...
std::map< std::pair< pod_index_type, pod_index_type >, pod_index_type > dof_tuple_domain_offsets_type
Type of dof tuple domain offsets map.