@@ -90,21 +90,28 @@ struct CeedWorkVectors_private {
9090 CeedVector * vecs ;
9191};
9292
93+ typedef struct CeedObject_private {
94+ Ceed ceed ;
95+ int (* ViewFunction )(CeedObject , FILE * );
96+ int ref_count ;
97+ } CeedObject_private ;
98+
9399struct Ceed_private {
94- const char * resource ;
95- Ceed delegate ;
96- Ceed parent ;
97- ObjDelegate * obj_delegates ;
98- int obj_delegate_count ;
99- Ceed op_fallback_ceed ;
100- char * * jit_source_roots ;
101- char * * rust_source_roots ;
102- CeedInt num_rust_source_roots , max_rust_source_roots , num_rust_source_roots_readers ;
103- CeedInt num_jit_source_roots , max_jit_source_roots , num_jit_source_roots_readers ;
104- bool cuda_compile_with_clang ;
105- char * * jit_defines ;
106- CeedInt num_jit_defines , max_jit_defines , num_jit_defines_readers ;
107- CeedInt num_tabs ; /* Viewing offset */
100+ CeedObject_private obj ;
101+ const char * resource ;
102+ Ceed delegate ;
103+ Ceed parent ;
104+ ObjDelegate * obj_delegates ;
105+ int obj_delegate_count ;
106+ Ceed op_fallback_ceed ;
107+ char * * jit_source_roots ;
108+ char * * rust_source_roots ;
109+ CeedInt num_rust_source_roots , max_rust_source_roots , num_rust_source_roots_readers ;
110+ CeedInt num_jit_source_roots , max_jit_source_roots , num_jit_source_roots_readers ;
111+ bool cuda_compile_with_clang ;
112+ char * * jit_defines ;
113+ CeedInt num_jit_defines , max_jit_defines , num_jit_defines_readers ;
114+ CeedInt num_tabs ; /* Viewing offset */
108115 int (* Error )(Ceed , const char * , int , const char * , int , const char * , va_list * );
109116 int (* SetStream )(Ceed , void * );
110117 int (* GetPreferredMemType )(CeedMemType * );
@@ -126,7 +133,6 @@ struct Ceed_private {
126133 int (* OperatorCreate )(CeedOperator );
127134 int (* OperatorCreateAtPoints )(CeedOperator );
128135 int (* CompositeOperatorCreate )(CeedOperator );
129- int ref_count ;
130136 void * data ;
131137 bool is_debug ;
132138 bool is_deterministic ;
@@ -136,7 +142,7 @@ struct Ceed_private {
136142};
137143
138144struct CeedVector_private {
139- Ceed ceed ;
145+ CeedObject_private obj ;
140146 int (* HasValidArray )(CeedVector , bool * );
141147 int (* HasBorrowedArrayOfType )(CeedVector , CeedMemType , bool * );
142148 int (* CopyStrided )(CeedVector , CeedSize , CeedSize , CeedSize , CeedVector );
@@ -157,7 +163,6 @@ struct CeedVector_private {
157163 int (* PointwiseMult )(CeedVector , CeedVector , CeedVector );
158164 int (* Reciprocal )(CeedVector );
159165 int (* Destroy )(CeedVector );
160- int ref_count ;
161166 CeedSize length ;
162167 uint64_t state ;
163168 uint64_t num_readers ;
@@ -166,7 +171,7 @@ struct CeedVector_private {
166171};
167172
168173struct CeedElemRestriction_private {
169- Ceed ceed ;
174+ CeedObject_private obj ;
170175 CeedElemRestriction rstr_base ;
171176 int (* Apply )(CeedElemRestriction , CeedTransposeMode , CeedVector , CeedVector , CeedRequest * );
172177 int (* ApplyUnsigned )(CeedElemRestriction , CeedTransposeMode , CeedVector , CeedVector , CeedRequest * );
@@ -178,7 +183,6 @@ struct CeedElemRestriction_private {
178183 int (* GetOrientations )(CeedElemRestriction , CeedMemType , const bool * * );
179184 int (* GetCurlOrientations )(CeedElemRestriction , CeedMemType , const CeedInt8 * * );
180185 int (* Destroy )(CeedElemRestriction );
181- int ref_count ;
182186 CeedInt num_elem ; /* number of elements */
183187 CeedInt elem_size ; /* number of nodes per element */
184188 CeedInt num_points ; /* number of points, for points restriction */
@@ -199,13 +203,12 @@ struct CeedElemRestriction_private {
199203};
200204
201205struct CeedBasis_private {
202- Ceed ceed ;
206+ CeedObject_private obj ;
203207 int (* Apply )(CeedBasis , CeedInt , CeedTransposeMode , CeedEvalMode , CeedVector , CeedVector );
204208 int (* ApplyAdd )(CeedBasis , CeedInt , CeedTransposeMode , CeedEvalMode , CeedVector , CeedVector );
205209 int (* ApplyAtPoints )(CeedBasis , CeedInt , const CeedInt * , CeedTransposeMode , CeedEvalMode , CeedVector , CeedVector , CeedVector );
206210 int (* ApplyAddAtPoints )(CeedBasis , CeedInt , const CeedInt * , CeedTransposeMode , CeedEvalMode , CeedVector , CeedVector , CeedVector );
207211 int (* Destroy )(CeedBasis );
208- int ref_count ;
209212 bool is_tensor_basis ; /* flag for tensor basis */
210213 CeedInt dim ; /* topological dimension */
211214 CeedElemTopology topo ; /* element topology */
@@ -233,11 +236,10 @@ struct CeedBasis_private {
233236};
234237
235238struct CeedTensorContract_private {
236- Ceed ceed ;
239+ CeedObject_private obj ;
237240 int (* Apply )(CeedTensorContract , CeedInt , CeedInt , CeedInt , CeedInt , const CeedScalar * restrict, CeedTransposeMode , const CeedInt ,
238241 const CeedScalar * restrict, CeedScalar * restrict);
239242 int (* Destroy )(CeedTensorContract );
240- int ref_count ;
241243 void * data ;
242244};
243245
@@ -248,12 +250,11 @@ struct CeedQFunctionField_private {
248250};
249251
250252struct CeedQFunction_private {
251- Ceed ceed ;
253+ CeedObject_private obj ;
252254 int (* Apply )(CeedQFunction , CeedInt , CeedVector * , CeedVector * );
253255 int (* SetCUDAUserFunction )(CeedQFunction , void * );
254256 int (* SetHIPUserFunction )(CeedQFunction , void * );
255257 int (* Destroy )(CeedQFunction );
256- int ref_count ;
257258 CeedInt vec_length ; /* Number of quadrature points must be padded to a multiple of vec_length */
258259 CeedInt num_tabs ; /* Viewing offset */
259260 CeedQFunctionField * input_fields ;
@@ -275,8 +276,7 @@ struct CeedQFunction_private {
275276};
276277
277278struct CeedQFunctionContext_private {
278- Ceed ceed ;
279- int ref_count ;
279+ CeedObject_private obj ;
280280 int (* HasValidData )(CeedQFunctionContext , bool * );
281281 int (* HasBorrowedDataOfType )(CeedQFunctionContext , CeedMemType , bool * );
282282 int (* SetData )(CeedQFunctionContext , CeedMemType , CeedCopyMode , void * );
@@ -352,9 +352,8 @@ struct CeedOperatorAssemblyData_private {
352352};
353353
354354struct CeedOperator_private {
355- Ceed ceed ;
356- CeedOperator op_fallback , op_fallback_parent ;
357- int ref_count ;
355+ CeedObject_private obj ;
356+ CeedOperator op_fallback , op_fallback_parent ;
358357 int (* LinearAssembleQFunction )(CeedOperator , CeedVector * , CeedElemRestriction * , CeedRequest * );
359358 int (* LinearAssembleQFunctionUpdate )(CeedOperator , CeedVector , CeedElemRestriction , CeedRequest * );
360359 int (* LinearAssembleDiagonal )(CeedOperator , CeedVector , CeedRequest * );
0 commit comments