YAC 3.20.0
Yet Another Coupler
Loading...
Searching...
No Matches
field_data.c
Go to the documentation of this file.
1// Copyright (c) 2024 The YAC Authors
2//
3// SPDX-License-Identifier: BSD-3-Clause
4
5#include <stdlib.h>
6
7#include "field_data.h"
8#include "utils_common.h"
9
11 struct {
12 char * name;
13 int * data;
14 } * masks;
18};
19
21
22 struct yac_field_data * field_data = xmalloc(1 * sizeof(*field_data));
23 field_data->masks_count = 0;
24 field_data->masks = NULL;
25 field_data->coordinates_count = 0;
26 field_data->coordinates = NULL;
27 return field_data;
28}
29
31 struct yac_field_data * field_data, int const * mask,
32 char const * mask_name) {
33
34 size_t masks_idx = field_data->masks_count++;
35 field_data->masks =
36 xrealloc(field_data->masks,
37 field_data->masks_count * sizeof(*(field_data->masks)));
38 field_data->masks[masks_idx].name = (char *)mask_name;
39 field_data->masks[masks_idx].data = (int*)mask;
40
41 return masks_idx;
42}
43
46
47 size_t coordinates_idx = field_data->coordinates_count++;
48 field_data->coordinates =
50 field_data->coordinates,
51 field_data->coordinates_count * sizeof(*(field_data->coordinates)));
52 field_data->coordinates[coordinates_idx] = coordinates;
53
54 return coordinates_idx;
55}
56
58
59 return field_data->masks_count;
60}
61
63 struct yac_field_data * field_data, size_t mask_idx) {
64
65 YAC_ASSERT(mask_idx < field_data->masks_count, "invalid mask index");
66
67 return field_data->masks[mask_idx].data;
68}
69
71 struct yac_field_data * field_data, size_t mask_idx, int * mask_data) {
72
73 YAC_ASSERT(mask_idx < field_data->masks_count, "invalid mask index");
74
75 field_data->masks[mask_idx].data = mask_data;
76}
77
79 struct yac_field_data * field_data, size_t mask_idx) {
80
81 YAC_ASSERT(mask_idx < field_data->masks_count, "invalid mask index");
82
83 return field_data->masks[mask_idx].name;
84}
85
87
88 return field_data->coordinates_count;
89}
90
92 struct yac_field_data * field_data, size_t coordinates_idx) {
93
95 coordinates_idx < field_data->coordinates_count,
96 "invalid coordinates index");
97
98 return
99 (yac_const_coordinate_pointer)(field_data->coordinates[coordinates_idx]);
100}
101
103 struct yac_field_data * field_data, size_t coordinates_idx,
104 yac_coordinate_pointer coordinates_data) {
105
107 coordinates_idx < field_data->coordinates_count,
108 "invalid coordinates index");
109
110 field_data->coordinates[coordinates_idx] = coordinates_data;
111}
112
113void yac_field_data_delete(struct yac_field_data * field_data) {
114
115 for (size_t i = 0; i < field_data->masks_count; ++i) {
116 free(field_data->masks[i].name);
117 free(field_data->masks[i].data);
118 }
119 free(field_data->masks);
120 for (size_t i = 0; i < field_data->coordinates_count; ++i)
121 free(field_data->coordinates[i]);
122 free(field_data->coordinates);
123 free(field_data);
124}
#define YAC_ASSERT(exp, msg)
size_t yac_field_data_get_masks_count(struct yac_field_data *field_data)
Definition field_data.c:57
void yac_field_data_delete(struct yac_field_data *field_data)
Definition field_data.c:113
void yac_field_data_set_mask_data(struct yac_field_data *field_data, size_t mask_idx, int *mask_data)
Definition field_data.c:70
size_t yac_field_data_get_coordinates_count(struct yac_field_data *field_data)
Definition field_data.c:86
yac_const_coordinate_pointer yac_field_data_get_coordinates_data(struct yac_field_data *field_data, size_t coordinates_idx)
Definition field_data.c:91
int const * yac_field_data_get_mask_data(struct yac_field_data *field_data, size_t mask_idx)
Definition field_data.c:62
char const * yac_field_data_get_mask_name(struct yac_field_data *field_data, size_t mask_idx)
Definition field_data.c:78
void yac_field_data_set_coordinates_data(struct yac_field_data *field_data, size_t coordinates_idx, yac_coordinate_pointer coordinates_data)
Definition field_data.c:102
size_t yac_field_data_add_mask_nocpy(struct yac_field_data *field_data, int const *mask, char const *mask_name)
Definition field_data.c:30
struct yac_field_data * yac_field_data_empty_new()
Definition field_data.c:20
size_t yac_field_data_add_coordinates_nocpy(struct yac_field_data *field_data, yac_coordinate_pointer coordinates)
Definition field_data.c:44
#define xrealloc(ptr, size)
Definition ppm_xfuncs.h:67
#define xmalloc(size)
Definition ppm_xfuncs.h:66
struct yac_field_data::@7 * masks
size_t masks_count
Definition field_data.c:15
yac_coordinate_pointer * coordinates
Definition field_data.c:16
size_t coordinates_count
Definition field_data.c:17
static int mask[16]
double const (* yac_const_coordinate_pointer)[3]
Definition yac_types.h:22
double(* yac_coordinate_pointer)[3]
Definition yac_types.h:21