IOSS 2.0
Loading...
Searching...
No Matches
Ios3_FieldSerialization.h
Go to the documentation of this file.
1// Copyright(C) 2025 National Technology & Engineering Solutions
2// of Sandia, LLC (NTESS). Under the terms of Contract DE-NA0003525 with
3// NTESS, the U.S. Government retains certain rights in this software.
4//
5// See packages/seacas/LICENSE for details
6
7#pragma once
8
9#include "ios3_export.h"
10
11#include "Ios3_Utils.h"
12
13#include "Ioss_CommSet.h"
14#include "Ioss_DatabaseIO.h"
15#include "Ioss_DatabaseIO.h" // for DatabaseIO
16#include "Ioss_EdgeBlock.h"
17#include "Ioss_EdgeSet.h"
18#include "Ioss_ElementBlock.h"
19#include "Ioss_ElementSet.h"
20#include "Ioss_FaceBlock.h"
21#include "Ioss_FaceSet.h"
22#include "Ioss_Field.h" // for Region
23#include "Ioss_GroupingEntity.h"
24#include "Ioss_IOFactory.h"
25#include "Ioss_NodeBlock.h"
26#include "Ioss_NodeSet.h"
27#include "Ioss_Property.h" // for Region
28#include "Ioss_Region.h"
29#include "Ioss_Region.h" // for Region
30#include "Ioss_SideBlock.h"
31#include "Ioss_SideSet.h"
32#include "Ioss_State.h" // for State
34
35#include <string>
36#include <vector>
37
38namespace Ios3 {
39
40 IOS3_EXPORT size_t data_size(const Ioss::Field &f);
41
42 // Caller should write their own version of this FieldFunction
43 // should return a function or a lamba that matches the signature
44 // below. The function it returns may or may not capture variables
45 // that are given to the user-defined function. Some examples are
46 // given in this file and are also useful
47 //
49 std::function<int(const Ioss::Region &, const Ioss::GroupingEntity &, const Ioss::Field &)>;
50
51 using PackedBytes = std::vector<unsigned char>;
52
53 // Applies FieldFunction 'op' to all fields encountered in the
54 // Ioss::Region and it's various Ioss::GroupingEntities
55 //
56 IOS3_EXPORT int map_fields(const Ioss::Region &region, FieldFunction op);
57
58 // Applies FieldFunction 'op' to all fields encountered in the
59 // Ioss::GroupingEntity
60 //
61 IOS3_EXPORT int map_fields(const Ioss::Region &region,
62 const Ioss::GroupingEntity &grouping_entity, FieldFunction op);
63
64 IOS3_EXPORT PackedBytes pack_field(const Ioss::Region &region, const Ioss::GroupingEntity &entity,
65 const Ioss::Field &field);
66
67 IOS3_EXPORT PackedBytes pack_field(const Ioss::Region &r, const Ioss::GroupingEntity &e,
68 const Ioss::Field &f, void *data, size_t data_size);
69
70 struct IOS3_EXPORT field_entry_t
71 {
74 bool is_implicit{false};
75 bool is_valid{false};
76 size_t raw_count{0};
77
78 value_entry_t name; // offset from data[0]
79 value_entry_t value; // offset from data[0]
80 value_entry_t storage; // offset from data[0]
81
82 size_t data_size{0}; // Total size of data stored in the value vector
83
84 char data[0];
85
86 explicit field_entry_t(const Ioss::Field &field, const size_t start = 0);
87 };
88
89} // namespace Ios3
Holds metadata for bulk data associated with a GroupingEntity.
Definition Ioss_Field.h:28
BasicType
The basic data type held in the field.
Definition Ioss_Field.h:32
RoleType
Definition Ioss_Field.h:72
Base class for all 'grouping' entities. The following derived classes are typical:
Definition Ioss_GroupingEntity.h:67
A grouping entity that contains other grouping entities.
Definition Ioss_Region.h:93
Definition Ios3_AwsHelpers.C:58
int map_fields(const Ioss::Region &region, const Ioss::GroupingEntity &entity, FieldFunction op)
Definition Ios3_FieldSerialization.C:14
size_t data_size(const Ioss::Field &f)
Definition Ios3_FieldSerialization.C:12
PackedBytes pack_field(const Ioss::Region &, const Ioss::GroupingEntity &entity, const Ioss::Field &field)
Definition Ios3_FieldSerialization.C:78
std::vector< unsigned char > PackedBytes
Definition Ios3_FieldSerialization.h:51
std::function< int(const Ioss::Region &, const Ioss::GroupingEntity &, const Ioss::Field &)> FieldFunction
Definition Ios3_FieldSerialization.h:48
value_entry_t storage
Definition Ios3_FieldSerialization.h:80
bool is_valid
Definition Ios3_FieldSerialization.h:75
value_entry_t value
Definition Ios3_FieldSerialization.h:79
field_entry_t(const Ioss::Field &field, const size_t start=0)
Definition Ios3_FieldSerialization.C:69
bool is_implicit
Definition Ios3_FieldSerialization.h:74
Ioss::Field::BasicType basic_type
Definition Ios3_FieldSerialization.h:72
Ioss::Field::RoleType role_type
Definition Ios3_FieldSerialization.h:73
size_t raw_count
Definition Ios3_FieldSerialization.h:76
char data[0]
Definition Ios3_FieldSerialization.h:84
value_entry_t name
Definition Ios3_FieldSerialization.h:78
size_t data_size
Definition Ios3_FieldSerialization.h:82
Definition Ios3_Utils.h:24