From 26e14f4143ec690a120e197a3adf547145e4ce59 Mon Sep 17 00:00:00 2001 From: midipix Date: Tue, 20 Dec 2016 20:53:41 +0000 Subject: create free-standing, libpsxscl-based project skeleton. --- include/ntux/ntux.h | 84 +++++++++++++++++++++++++++++++++++++++++++++++++ include/ntux/ntux_api.h | 33 +++++++++++++++++++ 2 files changed, 117 insertions(+) create mode 100644 include/ntux/ntux.h create mode 100644 include/ntux/ntux_api.h (limited to 'include/ntux') diff --git a/include/ntux/ntux.h b/include/ntux/ntux.h new file mode 100644 index 0000000..896f301 --- /dev/null +++ b/include/ntux/ntux.h @@ -0,0 +1,84 @@ +#ifndef NTUX_H +#define NTUX_H + +#include + +#include "ntux_api.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* pre-alpha */ +#ifndef NTUX_APP +#ifndef NTUX_PRE_ALPHA +#error libntux: pre-alpha: ABI is not final! +#error to use the library, please pass -DNTUX_PRE_ALPHA to the compiler. +#endif +#endif + +/* status codes */ +#define NTUX_OK 0x00 +#define NTUX_USAGE 0x01 +#define NTUX_ERROR 0x02 + +/* driver flags */ +#define NTUX_DRIVER_VERBOSITY_NONE 0x0000 +#define NTUX_DRIVER_VERBOSITY_ERRORS 0x0001 +#define NTUX_DRIVER_VERBOSITY_STATUS 0x0002 +#define NTUX_DRIVER_VERBOSITY_USAGE 0x0004 +#define NTUX_DRIVER_CLONE_VECTOR 0x0008 + +#define NTUX_DRIVER_VERSION 0x0010 +#define NTUX_DRIVER_DRY_RUN 0x0020 + +struct ntux_source_version { + int major; + int minor; + int revision; + const char * commit; +}; + +struct ntux_error_info { + const struct ntux_driver_ctx * edctx; + const struct ntux_unit_ctx * euctx; + const char * eunit; + int esyscode; + int elibcode; + const char * efunction; + int eline; + unsigned eflags; + void * eany; +}; + +struct ntux_common_ctx { + uint64_t drvflags; + uint64_t actflags; + uint64_t fmtflags; +}; + +struct ntux_driver_ctx { + const char ** units; + const char * program; + const char * module; + const struct ntux_common_ctx * cctx; + struct ntux_error_info ** errv; + void * any; +}; + +/* package info */ +ntux_api const struct ntux_source_version * ntux_source_version(void); + +/* driver api */ +ntux_api int ntux_get_driver_ctx (char ** argv, char ** envp, uint32_t flags, struct ntux_driver_ctx **); +ntux_api int ntux_create_driver_ctx (const struct ntux_common_ctx *, struct ntux_driver_ctx **); +ntux_api void ntux_free_driver_ctx (struct ntux_driver_ctx *); + +/* utility api */ +ntux_api int ntux_main (int, char **, char **); + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/include/ntux/ntux_api.h b/include/ntux/ntux_api.h new file mode 100644 index 0000000..5a5767f --- /dev/null +++ b/include/ntux/ntux_api.h @@ -0,0 +1,33 @@ +#ifndef NTUX_API_H +#define NTUX_API_H + +/* ntux_export */ +#if defined(__dllexport) +#define ntux_export __dllexport +#else +#define ntux_export +#endif + +/* ntux_import */ +#if defined(__dllimport) +#define ntux_import __dllimport +#else +#define ntux_import +#endif + +/* ntux_api */ +#ifndef NTUX_APP +#if defined (NTUX_EXPORT) +#define ntux_api ntux_export +#elif defined (NTUX_IMPORT) +#define ntux_api ntux_import +#elif defined (NTUX_STATIC) +#define ntux_api +#else +#define ntux_api +#endif +#else +#define ntux_api +#endif + +#endif -- cgit v1.2.3