13e176fd0SBen Skeggs /* SPDX-License-Identifier: MIT */
23e176fd0SBen Skeggs #ifndef __NVIF_PARENT_H__
33e176fd0SBen Skeggs #define __NVIF_PARENT_H__
43e176fd0SBen Skeggs #include <nvif/os.h>
53e176fd0SBen Skeggs struct nvif_object;
63e176fd0SBen Skeggs 
73e176fd0SBen Skeggs struct nvif_parent {
83e176fd0SBen Skeggs 	const struct nvif_parent_func {
93e176fd0SBen Skeggs 		void (*debugf)(struct nvif_object *, const char *fmt, ...) __printf(2, 3);
103e176fd0SBen Skeggs 		void (*errorf)(struct nvif_object *, const char *fmt, ...) __printf(2, 3);
113e176fd0SBen Skeggs 	} *func;
123e176fd0SBen Skeggs };
133e176fd0SBen Skeggs 
143e176fd0SBen Skeggs static inline void
nvif_parent_dtor(struct nvif_parent * parent)153e176fd0SBen Skeggs nvif_parent_dtor(struct nvif_parent *parent)
163e176fd0SBen Skeggs {
173e176fd0SBen Skeggs 	parent->func = NULL;
183e176fd0SBen Skeggs }
193e176fd0SBen Skeggs 
203e176fd0SBen Skeggs static inline void
nvif_parent_ctor(const struct nvif_parent_func * func,struct nvif_parent * parent)213e176fd0SBen Skeggs nvif_parent_ctor(const struct nvif_parent_func *func, struct nvif_parent *parent)
223e176fd0SBen Skeggs {
233e176fd0SBen Skeggs 	parent->func = func;
243e176fd0SBen Skeggs }
253e176fd0SBen Skeggs #endif
26