16#error double must not be redefined!
20#define new(type, size) (type*)calloc(size, sizeof(type))
21#define delete(ptr) if (ptr) free(ptr)
28 id = H5Tcreate(H5T_COMPOUND, 3);
29 H5Tinsert(
id,
"r", 0, H5T_NATIVE_UCHAR);
30 H5Tinsert(
id,
"g", 1, H5T_NATIVE_UCHAR);
31 H5Tinsert(
id,
"b", 2, H5T_NATIVE_UCHAR);
41 id = H5Tcreate(H5T_COMPOUND, 4);
42 H5Tinsert(
id,
"r", 0, H5T_NATIVE_UCHAR);
43 H5Tinsert(
id,
"g", 1, H5T_NATIVE_UCHAR);
44 H5Tinsert(
id,
"b", 2, H5T_NATIVE_UCHAR);
45 H5Tinsert(
id,
"a", 3, H5T_NATIVE_UCHAR);
55 id = H5Tcreate(H5T_COMPOUND, 3);
56 H5Tinsert(
id,
"b", 0, H5T_NATIVE_UCHAR);
57 H5Tinsert(
id,
"g", 1, H5T_NATIVE_UCHAR);
58 H5Tinsert(
id,
"r", 2, H5T_NATIVE_UCHAR);
69 id = H5Tcreate(H5T_COMPOUND, 6);
70 H5Tinsert(
id,
"r", 0, H5T_NATIVE_USHORT);
71 H5Tinsert(
id,
"g", 2, H5T_NATIVE_USHORT);
72 H5Tinsert(
id,
"b", 4, H5T_NATIVE_USHORT);
83 id = H5Tcreate(H5T_COMPOUND, 4*2);
84 H5Tinsert(
id,
"r", 0, H5T_NATIVE_USHORT);
85 H5Tinsert(
id,
"g", 2, H5T_NATIVE_USHORT);
86 H5Tinsert(
id,
"b", 4, H5T_NATIVE_USHORT);
87 H5Tinsert(
id,
"a", 6, H5T_NATIVE_USHORT);
97 id = H5Tcreate(H5T_COMPOUND, 12);
98 H5Tinsert(
id,
"r", 0, H5T_NATIVE_FLOAT);
99 H5Tinsert(
id,
"g", 4, H5T_NATIVE_FLOAT);
100 H5Tinsert(
id,
"b", 8, H5T_NATIVE_FLOAT);
110 id = H5Tcreate(H5T_COMPOUND, 4*
sizeof(
float) );
111 H5Tinsert(
id,
"r", 0, H5T_NATIVE_FLOAT);
112 H5Tinsert(
id,
"g", 4, H5T_NATIVE_FLOAT);
113 H5Tinsert(
id,
"b", 8, H5T_NATIVE_FLOAT);
114 H5Tinsert(
id,
"a",12, H5T_NATIVE_FLOAT);
155 id = H5Tcreate(H5T_COMPOUND, 24);
156 H5Tinsert(
id,
"Dx", 0, H5T_NATIVE_DOUBLE);
157 H5Tinsert(
id,
"Dy",
sizeof(
double), H5T_NATIVE_DOUBLE);
158 H5Tinsert(
id,
"Dz",2*
sizeof(
double), H5T_NATIVE_DOUBLE);
168 id = H5Tcreate(H5T_COMPOUND, 24);
169 H5Tinsert(
id,
"dx", 0, H5T_NATIVE_DOUBLE);
170 H5Tinsert(
id,
"dy",
sizeof(
double), H5T_NATIVE_DOUBLE);
171 H5Tinsert(
id,
"dz",2*
sizeof(
double), H5T_NATIVE_DOUBLE);
181 id = H5Tcreate(H5T_COMPOUND, 24);
182 H5Tinsert(
id,
"x", 0, H5T_NATIVE_DOUBLE);
183 H5Tinsert(
id,
"y",
sizeof(
double), H5T_NATIVE_DOUBLE);
184 H5Tinsert(
id,
"z",2*
sizeof(
double), H5T_NATIVE_DOUBLE);
194static hid_t type_id = -1;
197 if (type_id>0)
return type_id;
199 type_id = H5Tenum_create(H5T_NATIVE_INT);
200#define InsertEnum(type_id, enum_member) enum_value=enum_member; \
201 H5Tenum_insert(type_id, #enum_member, &enum_value);
243 F5printf(30,
"F5Tsave_F5field_enum() Warning: No version check implemented yet!");
270hid_t space_id = H5Screate(H5S_SCALAR);
276 F5printf(30,
"F5Tset_field_enum(%lli,%d): Called with invalid location ID!", loc_id, what);
281 F5printf(30,
"F5Tset_field_enum(%lli,%d)", loc_id, what);
284 attr_id = H5Acreate2(loc_id,
FIBER_ARRAY_TYPE_ENUM, enum_type_id, space_id, H5P_DEFAULT, H5P_DEFAULT);
289 F5printf(30,
"F5Tset_field_enum(): Overwriting Field Typeinfo (last one counts!)");
292 attr_id = H5Acreate2(loc_id,
FIBER_ARRAY_TYPE_ENUM, enum_type_id, space_id, H5P_DEFAULT, H5P_DEFAULT);
295 err = H5Awrite(attr_id, enum_type_id, &what);
298 F5printf(30,
"F5Tset_field_enum(%lli)::H5Awrite() returned %d\n", loc_id, err);
306 int*major_version,
int*minor_version,
int*release_version)
313 if (major_version) *major_version = 0;
314 if (minor_version) *minor_version = 0;
315 if (release_version) *release_version = 0;
320 F5printf(10,
"F5Tget_field_Array_enum(): No type enum attribute.");
322#ifdef F5_BACKWARD_COMPATIBILITY
330 H5I_type_t ObjectType = H5Iget_type(loc_id);
345 type_id = H5Aget_type(attr_id);
347 if (H5Tcommitted(type_id)<=0)
353 F5Aget_version(type_id, major_version, minor_version, release_version);
373 H5I_type_t ObjectType = H5Iget_type(loc_id);
404static hid_t type_id = -1;
407 if (type_id>0)
return type_id;
409 type_id = H5Tenum_create(H5T_NATIVE_INT);
431 F5printf(50,
"F5Tsave_ProcArray_enum(): Try to open existing procfield enum id %s\n", vbuf );
433 type_id = H5Topen2(loc_id, vbuf, H5P_DEFAULT);
440 F5printf(50,
"F5Tsave_ProcArray_enum(): Saving type as %s\n", vbuf );
441 H5Tcommit2(loc_id, vbuf, type_id, H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT );
448 F5printf(30,
"F5Tsave_ProcArray_enum() Warning: No version check implemented yet!");
457hid_t space_id = H5Screate(H5S_SCALAR);
462 F5printf(30,
"F5Tset_field_ProcArray_enum(%d,%d)", loc_id, what);
467 attr_id = H5Acreate2(loc_id,
FIBER_ARRAY_TYPE_ENUM, enum_type_id, space_id, H5P_DEFAULT, H5P_DEFAULT);
472 F5printf(30,
"F5Tset_field_ProcArray_enum(): Overwriting Field Typeinfo (last one counts!)");
475 attr_id = H5Acreate2(loc_id,
FIBER_ARRAY_TYPE_ENUM, enum_type_id, space_id, H5P_DEFAULT, H5P_DEFAULT);
478 err = H5Awrite(attr_id, enum_type_id, &what);
481 F5printf(30,
"F5Tset_field_ProcArray_enum(%d)::H5Awrite() returned %d\n", loc_id, err);
492 int*major_version,
int*minor_version,
int*release_version)
498 type_id = H5Aget_type(attr_id);
500 if (H5Tcommitted(type_id)<=0)
502 F5printf(-1,
"F5Tget_field_enum(): Not a named type, cannot retrieve versioning information.");
510 F5Aget_version(type_id, major_version, minor_version, release_version);
538 int *reverse_indexing;
542 char *transformation_rule;
555int i, total_components;
563 total_components = dimension;
564 for(i=1; i<rank; i++)
565 total_components *= dimension;
568 This->
indexing =
new(int, total_components);
569 This->
parity =
new(int, total_components);
582 assert(This->
rank==2);
589 for(nj=0, j=0; j<i; j++ )
647 F5printf(200,
"F5Tis_convertible(%d,%d)", src_id, dst_id);
649 class_src_id = H5Tget_class(src_id);
650 class_dst_id = H5Tget_class(dst_id);
656 if (class_src_id == H5T_COMPOUND && class_dst_id == H5T_COMPOUND)
658 int src_n = H5Tget_nmembers(src_id),
659 dst_n = H5Tget_nmembers(dst_id);
666 for(i=0; i<src_n; i++)
668 char * src_name = H5Tget_member_name(src_id, i ),
669 * dst_name = H5Tget_member_name(dst_id, i );
671 int ok = strcmp(src_name, dst_name)==0;
675 H5free_memory(src_name);
676 H5free_memory(dst_name);
684 c = H5Tfind(src_id, dst_id, &pcdata );
690#define IFITEM(x,type)\
691 if (H5Tequal(x,type))\
697 printf(
"F5Tprint started\n");
699 IFITEM(H5T_NATIVE_CHAR,type)
700 IFITEM(H5T_NATIVE_SHORT,type)
701 IFITEM(H5T_NATIVE_INT ,type)
702 IFITEM(H5T_NATIVE_LONG ,type)
703 IFITEM(H5T_NATIVE_LLONG ,type)
704 IFITEM(H5T_NATIVE_USHORT ,type)
705 IFITEM(H5T_NATIVE_UINT ,type)
706 IFITEM(H5T_NATIVE_ULONG ,type)
707 IFITEM(H5T_NATIVE_ULLONG ,type)
708 IFITEM(H5T_NATIVE_FLOAT ,type)
709 IFITEM(H5T_NATIVE_DOUBLE ,type)
710 IFITEM(H5T_NATIVE_LDOUBLE ,type)
711 IFITEM(H5T_NATIVE_INT8 ,type)
712 IFITEM(H5T_NATIVE_INT16 ,type)
713 IFITEM(H5T_NATIVE_INT32 ,type)
714 IFITEM(H5T_NATIVE_INT64 ,type)
715 IFITEM(H5T_NATIVE_UCHAR ,type)
719 printf(
"F5Tprint(): UNKNOWN TYPE\n");
hid_t F5Atry_to_open(hid_t location, const char *name)
int F5Asave_string(hid_t loc_id, const char *name, const char *buf)
herr_t F5Asave_version(hid_t loc_id, int major, int minor, int release)
herr_t F5Aget_version(hid_t loc_id, int *major, int *minor, int *release)
#define FIBER_RELEASE_VERSION
@ FragmentedUniformSampling
@ FragmentedSeparatedCompound
#define FIBER_UNIFORMARRAY_BASE_ATTRIBUTE
#define FIBER_VERSION_URL
#define FIBER_MAJOR_VERSION
#define FIBER_MINOR_VERSION
#define FIBER_VERSION_URL_LOCATION
#define FIBER_ARRAY_TYPE_ENUM
herr_t F_H5Aread(hid_t attr_id, hid_t mem_type_id, void *buf, const char *name)
#define F5check(HDF5call)
#define F5printf(verbosity,...)
F5_API F5Ttensor_t * F5Ttensor_commit(hid_t loc_id, F5Ttensor_t *)
herr_t F5Tset_field_ProcArray_enum(hid_t loc_id, ProceduralArrayType what, hid_t ProcTypeIdLocation)
int F5Tis_convertible(hid_t src_id, hid_t dst_id)
hid_t F5Tsave_F5field_enum(hid_t loc_id)
hid_t F5Ttransient_F5field_Array_enum()
F5_API int deleteF5Ttensor(F5Ttensor_t *This)
#define InsertEnum(type_id, enum_member)
F5_API void F5Tprint(hid_t type)
F5Ttensor_t * newF5Ttensor(const char *name, int rank, int dimension, int components)
hid_t F5T_cartesianpoint3_double_g()
ProceduralArrayType F5Tget_field_ProcArray_enum(hid_t loc_id, hid_t enum_type, int *major_version, int *minor_version, int *release_version)
void F5Tcreate_symmetric_rank2_covariant_tensor(F5Ttensor_t *This)
herr_t F5Tset_field_enum(hid_t loc_id, hid_t enum_type_id, ArrayType what)
hid_t F5T_vec3_double_g()
ArrayType F5Tget_field_Array_enum(hid_t loc_id, int *major_version, int *minor_version, int *release_version)
hid_t F5T_covec3_double_g()
const char * F5Tget_field_description(ArrayType what)
hid_t F5Ttransient_ProcArray_enum()
hid_t F5Tsave_ProcArray_enum(hid_t loc_id)
hid_t F5Aopen_name(hid_t location, const char *name)
char * transformation_rule