Blame src/internal/ntux_driver_impl.h

26e14f
#ifndef NTUX_DRIVER_IMPL_H
26e14f
#define NTUX_DRIVER_IMPL_H
26e14f
26e14f
#include <ntapi/ntapi.h>
26e14f
#include <psxscl/psxscl.h>
26e14f
#include <stdint.h>
26e14f
#include <stdio.h>
26e14f
26e14f
#include <ntux/ntux.h>
26e14f
#include "argv/argv.h"
26e14f
2404cd
#define NTUX_OPTV_ELEMENTS 64
2404cd
26e14f
extern   const struct argv_option ntux_default_options[];
26e14f
extern   const ntapi_vtbl * ntux_ntapi;
26e14f
26e14f
#define  ntapi ntux_ntapi
26e14f
26e14f
enum app_tags {
26e14f
	TAG_HELP,
26e14f
	TAG_VERSION,
6a7c02
	TAG_CMD,
26e14f
};
26e14f
26e14f
struct ntux_driver_ctx_impl {
26e14f
	struct ntux_common_ctx      cctx;
26e14f
	struct ntux_driver_ctx      ctx;
26e14f
	struct __psx_context        xctx;
da20d8
	const struct ntux_unit_ctx *euctx;
26e14f
	const char *                eunit;
26e14f
	struct ntux_error_info **   errinfp;
26e14f
	struct ntux_error_info **   erricap;
26e14f
	struct ntux_error_info *    erriptr[64];
26e14f
	struct ntux_error_info      erribuf[64];
da20d8
	char                        errsbuf[28];
da20d8
	int                         errcode;
26e14f
};
26e14f
da20d8
da20d8
static inline struct ntux_driver_ctx_impl * ntux_get_driver_ictx(const struct ntux_driver_ctx * dctx)
da20d8
{
da20d8
	uintptr_t addr;
da20d8
da20d8
	if (dctx) {
da20d8
		addr = (uintptr_t)dctx - offsetof(struct ntux_driver_ctx_impl,ctx);
da20d8
		return (struct ntux_driver_ctx_impl *)addr;
da20d8
	}
da20d8
da20d8
	return 0;
da20d8
}
da20d8
da20d8
static inline void ntux_driver_set_ectx(
da20d8
	const struct ntux_driver_ctx * dctx,
da20d8
	const struct ntux_unit_ctx *   uctx,
da20d8
	const char *                   unit)
da20d8
{
da20d8
	struct ntux_driver_ctx_impl *  ictx;
da20d8
da20d8
	ictx        = ntux_get_driver_ictx(dctx);
da20d8
	ictx->euctx = uctx;
da20d8
	ictx->eunit = unit;
da20d8
}
da20d8
26e14f
#endif