finished the inital sio routines
This commit is contained in:
parent
d3adc09e7e
commit
0dfb5239d1
@ -23,7 +23,7 @@ enum ase_fio_open_flag_t
|
|||||||
|
|
||||||
/* for ms windows only */
|
/* for ms windows only */
|
||||||
ASE_FIO_NOSHRD = (1 << 16),
|
ASE_FIO_NOSHRD = (1 << 16),
|
||||||
ASE_FIO_NOSHWR = (1 << 17),
|
ASE_FIO_NOSHWR = (1 << 17)
|
||||||
};
|
};
|
||||||
|
|
||||||
/* seek origin */
|
/* seek origin */
|
||||||
@ -53,6 +53,9 @@ struct ase_fio_t
|
|||||||
ase_fio_hnd_t handle;
|
ase_fio_hnd_t handle;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
#define ASE_FIO_MMGR(fio) ((fio)->mmgr)
|
||||||
|
#define ASE_FIO_HANDLE(fio) ((fio)->handle)
|
||||||
|
|
||||||
#ifdef __cplusplus
|
#ifdef __cplusplus
|
||||||
extern "C" {
|
extern "C" {
|
||||||
#endif
|
#endif
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
|
|
||||||
pkginclude_HEADERS = mem.h chr.h str.h lda.h map.h rex.h sll.h dll.h opt.h fio.h tio.h
|
pkginclude_HEADERS = mem.h chr.h str.h lda.h map.h rex.h sll.h dll.h opt.h fio.h tio.h sio.h
|
||||||
|
|
||||||
pkgincludedir= $(includedir)/ase/cmn
|
pkgincludedir= $(includedir)/ase/cmn
|
||||||
|
|
||||||
|
@ -178,7 +178,7 @@ sysconfdir = @sysconfdir@
|
|||||||
target_alias = @target_alias@
|
target_alias = @target_alias@
|
||||||
top_builddir = @top_builddir@
|
top_builddir = @top_builddir@
|
||||||
top_srcdir = @top_srcdir@
|
top_srcdir = @top_srcdir@
|
||||||
pkginclude_HEADERS = mem.h chr.h str.h lda.h map.h rex.h sll.h dll.h opt.h fio.h tio.h
|
pkginclude_HEADERS = mem.h chr.h str.h lda.h map.h rex.h sll.h dll.h opt.h fio.h tio.h sio.h
|
||||||
CLEANFILES = *dist
|
CLEANFILES = *dist
|
||||||
all: all-am
|
all: all-am
|
||||||
|
|
||||||
|
105
ase/include/ase/cmn/sio.h
Normal file
105
ase/include/ase/cmn/sio.h
Normal file
@ -0,0 +1,105 @@
|
|||||||
|
/*
|
||||||
|
* $Id: sio.h,v 1.29 2005/12/26 05:38:24 bacon Ease $
|
||||||
|
*/
|
||||||
|
|
||||||
|
#ifndef _ASE_CMN_SIO_H_
|
||||||
|
#define _ASE_CMN_SIO_H_
|
||||||
|
|
||||||
|
#include <ase/types.h>
|
||||||
|
#include <ase/macros.h>
|
||||||
|
#include <ase/cmn/fio.h>
|
||||||
|
#include <ase/cmn/tio.h>
|
||||||
|
|
||||||
|
enum ase_sio_open_flag_t
|
||||||
|
{
|
||||||
|
ASE_SIO_HANDLE = ASE_FIO_HANDLE,
|
||||||
|
|
||||||
|
ASE_SIO_READ = ASE_FIO_READ,
|
||||||
|
ASE_SIO_WRITE = ASE_FIO_WRITE,
|
||||||
|
ASE_SIO_CREATE = ASE_FIO_CREATE,
|
||||||
|
ASE_SIO_TRUNCATE = ASE_FIO_TRUNCATE,
|
||||||
|
ASE_SIO_EXCLUSIVE = ASE_FIO_EXCLUSIVE,
|
||||||
|
ASE_SIO_APPEND = ASE_FIO_APPEND,
|
||||||
|
ASE_SIO_SYNC = ASE_FIO_SYNC,
|
||||||
|
|
||||||
|
ASE_SIO_NOSHRD = ASE_FIO_NOSHRD,
|
||||||
|
ASE_SIO_NOSHWR = ASE_FIO_NOSHWR
|
||||||
|
};
|
||||||
|
|
||||||
|
typedef ase_fio_off_t ase_sio_off_t;
|
||||||
|
typedef ase_fio_hnd_t ase_sio_hnd_t;
|
||||||
|
|
||||||
|
typedef struct ase_sio_t ase_sio_t;
|
||||||
|
|
||||||
|
struct ase_sio_t
|
||||||
|
{
|
||||||
|
ase_mmgr_t* mmgr;
|
||||||
|
ase_fio_t fio;
|
||||||
|
ase_tio_t tio;
|
||||||
|
};
|
||||||
|
|
||||||
|
#ifdef __cplusplus
|
||||||
|
extern "C" {
|
||||||
|
#endif
|
||||||
|
|
||||||
|
extern ase_sio_t* ase_sio_in;
|
||||||
|
extern ase_sio_t* ase_sio_out;
|
||||||
|
extern ase_sio_t* ase_sio_err;
|
||||||
|
|
||||||
|
ase_sio_t* ase_sio_open (
|
||||||
|
ase_mmgr_t* mmgr,
|
||||||
|
ase_size_t ext,
|
||||||
|
const ase_char_t* file,
|
||||||
|
int flags
|
||||||
|
);
|
||||||
|
|
||||||
|
void ase_sio_close (
|
||||||
|
ase_sio_t* sio
|
||||||
|
);
|
||||||
|
|
||||||
|
ase_sio_t* ase_sio_init (
|
||||||
|
ase_sio_t* sio,
|
||||||
|
ase_mmgr_t* mmgr,
|
||||||
|
const ase_char_t* file,
|
||||||
|
int flags
|
||||||
|
);
|
||||||
|
|
||||||
|
void ase_sio_fini (
|
||||||
|
ase_sio_t* sio
|
||||||
|
);
|
||||||
|
|
||||||
|
ase_fio_hnd_t ase_sio_gethandle (ase_sio_t* sio);
|
||||||
|
|
||||||
|
ase_ssize_t ase_sio_flush (ase_sio_t* sio);
|
||||||
|
void ase_sio_purge (ase_sio_t* sio);
|
||||||
|
|
||||||
|
ase_ssize_t ase_sio_getc (ase_sio_t* sio, ase_char_t* c);
|
||||||
|
ase_ssize_t ase_sio_gets (ase_sio_t* sio, ase_char_t* buf, ase_size_t size);
|
||||||
|
ase_ssize_t ase_sio_getsx (ase_sio_t* sio, ase_char_t* buf, ase_size_t size);
|
||||||
|
ase_ssize_t ase_sio_getstr (ase_sio_t* sio, ase_str_t* buf);
|
||||||
|
|
||||||
|
ase_ssize_t ase_sio_putc (ase_sio_t* sio, ase_char_t c);
|
||||||
|
ase_ssize_t ase_sio_puts (ase_sio_t* sio, const ase_char_t* str);
|
||||||
|
ase_ssize_t ase_sio_putsx (ase_sio_t* sio, const ase_char_t* str, ase_size_t size);
|
||||||
|
|
||||||
|
#if 0
|
||||||
|
ase_ssize_t ase_sio_putsn (ase_sio_t* sio, ...);
|
||||||
|
ase_ssize_t ase_sio_putsxn (ase_sio_t* sio, ...);
|
||||||
|
ase_ssize_t ase_sio_putsv (ase_sio_t* sio, ase_va_list ap);
|
||||||
|
ase_ssize_t ase_sio_putsxv (ase_sio_t* sio, ase_va_list ap);
|
||||||
|
|
||||||
|
/* WARNING:
|
||||||
|
* getpos may not return the desired postion because of the buffering
|
||||||
|
*/
|
||||||
|
int ase_sio_getpos (ase_sio_t* sio, ase_sio_off_t* pos);
|
||||||
|
int ase_sio_setpos (ase_sio_t* sio, ase_sio_off_t pos);
|
||||||
|
int ase_sio_rewind (ase_sio_t* sio);
|
||||||
|
int ase_sio_movetoend (ase_sio_t* sio);
|
||||||
|
#endif
|
||||||
|
|
||||||
|
|
||||||
|
#ifdef __cplusplus
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#endif
|
@ -153,7 +153,7 @@ int ase_tio_geterrnum (ase_tio_t* tio);
|
|||||||
const ase_char_t* ase_tio_geterrstr (ase_tio_t* tio);
|
const ase_char_t* ase_tio_geterrstr (ase_tio_t* tio);
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* FUNCTION: ase_tio_attinp
|
* FUNCTION: ase_tio_attachin
|
||||||
* Attaches an input handler function
|
* Attaches an input handler function
|
||||||
*
|
*
|
||||||
* PARAMETERS:
|
* PARAMETERS:
|
||||||
@ -164,10 +164,14 @@ const ase_char_t* ase_tio_geterrstr (ase_tio_t* tio);
|
|||||||
* RETURNS:
|
* RETURNS:
|
||||||
* 0 on success, -1 on failure
|
* 0 on success, -1 on failure
|
||||||
*/
|
*/
|
||||||
int ase_tio_attinp (ase_tio_t* tio, ase_tio_io_t input, void* arg);
|
int ase_tio_attachin (
|
||||||
|
ase_tio_t* tio,
|
||||||
|
ase_tio_io_t input,
|
||||||
|
void* arg
|
||||||
|
);
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* FUNCTION: ase_tio_detinp
|
* FUNCTION: ase_tio_detachin
|
||||||
* Detaches an input handler function
|
* Detaches an input handler function
|
||||||
*
|
*
|
||||||
* PARAMETERS:
|
* PARAMETERS:
|
||||||
@ -176,10 +180,12 @@ int ase_tio_attinp (ase_tio_t* tio, ase_tio_io_t input, void* arg);
|
|||||||
* RETURNS:
|
* RETURNS:
|
||||||
* 0 on success, -1 on failure
|
* 0 on success, -1 on failure
|
||||||
*/
|
*/
|
||||||
int ase_tio_detinp (ase_tio_t* tio);
|
int ase_tio_detachin (
|
||||||
|
ase_tio_t* tio
|
||||||
|
);
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* FUNCTION: ase_tio_attoutp
|
* FUNCTION: ase_tio_attachout
|
||||||
* Attaches an output handler function
|
* Attaches an output handler function
|
||||||
*
|
*
|
||||||
* PARAMETERS:
|
* PARAMETERS:
|
||||||
@ -190,10 +196,14 @@ int ase_tio_detinp (ase_tio_t* tio);
|
|||||||
* RETURNS:
|
* RETURNS:
|
||||||
* 0 on success, -1 on failure
|
* 0 on success, -1 on failure
|
||||||
*/
|
*/
|
||||||
int ase_tio_attoutp (ase_tio_t* tio, ase_tio_io_t output, void* arg);
|
int ase_tio_attachout (
|
||||||
|
ase_tio_t* tio,
|
||||||
|
ase_tio_io_t output,
|
||||||
|
void* arg
|
||||||
|
);
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* FUNCTION: ase_tio_detoutp
|
* FUNCTION: ase_tio_detachout
|
||||||
* Detaches an output handler function
|
* Detaches an output handler function
|
||||||
*
|
*
|
||||||
* PARAMETERS:
|
* PARAMETERS:
|
||||||
@ -202,7 +212,9 @@ int ase_tio_attoutp (ase_tio_t* tio, ase_tio_io_t output, void* arg);
|
|||||||
* RETURNS:
|
* RETURNS:
|
||||||
* 0 on success, -1 on failure
|
* 0 on success, -1 on failure
|
||||||
*/
|
*/
|
||||||
int ase_tio_detoutp (ase_tio_t* tio);
|
int ase_tio_detachout (
|
||||||
|
ase_tio_t* tio
|
||||||
|
);
|
||||||
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
@ -248,7 +248,6 @@ ase_ssize_t ase_fio_read (ase_fio_t* fio, void* buf, ase_size_t size)
|
|||||||
#else
|
#else
|
||||||
return read (fio->handle, buf, size);
|
return read (fio->handle, buf, size);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -64,8 +64,8 @@ ase_tio_t* ase_tio_init (ase_tio_t* tio, ase_mmgr_t* mmgr)
|
|||||||
int ase_tio_fini (ase_tio_t* tio)
|
int ase_tio_fini (ase_tio_t* tio)
|
||||||
{
|
{
|
||||||
ase_tio_flush (tio); /* don't care about the result */
|
ase_tio_flush (tio); /* don't care about the result */
|
||||||
if (ase_tio_detin(tio) == -1) return -1;
|
if (ase_tio_detachin(tio) == -1) return -1;
|
||||||
if (ase_tio_detout(tio) == -1) return -1;
|
if (ase_tio_detachout(tio) == -1) return -1;
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -115,9 +115,9 @@ const ase_char_t* ase_tio_geterrstr (ase_tio_t* tio)
|
|||||||
ASE_COUNTOF(__errstr) - 1: tio->errnum];
|
ASE_COUNTOF(__errstr) - 1: tio->errnum];
|
||||||
}
|
}
|
||||||
|
|
||||||
int ase_tio_attin (ase_tio_t* tio, ase_tio_io_t input, void* arg)
|
int ase_tio_attachin (ase_tio_t* tio, ase_tio_io_t input, void* arg)
|
||||||
{
|
{
|
||||||
if (ase_tio_detin(tio) == -1) return -1;
|
if (ase_tio_detachin(tio) == -1) return -1;
|
||||||
|
|
||||||
ASE_ASSERT (tio->input_func == ASE_NULL);
|
ASE_ASSERT (tio->input_func == ASE_NULL);
|
||||||
|
|
||||||
@ -137,7 +137,7 @@ int ase_tio_attin (ase_tio_t* tio, ase_tio_io_t input, void* arg)
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
int ase_tio_detin (ase_tio_t* tio)
|
int ase_tio_detachin (ase_tio_t* tio)
|
||||||
{
|
{
|
||||||
if (tio->input_func != ASE_NULL)
|
if (tio->input_func != ASE_NULL)
|
||||||
{
|
{
|
||||||
@ -155,9 +155,9 @@ int ase_tio_detin (ase_tio_t* tio)
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
int ase_tio_attout (ase_tio_t* tio, ase_tio_io_t output, void* arg)
|
int ase_tio_attachout (ase_tio_t* tio, ase_tio_io_t output, void* arg)
|
||||||
{
|
{
|
||||||
if (ase_tio_detout(tio) == -1) return -1;
|
if (ase_tio_detachout(tio) == -1) return -1;
|
||||||
|
|
||||||
ASE_ASSERT (tio->output_func == ASE_NULL);
|
ASE_ASSERT (tio->output_func == ASE_NULL);
|
||||||
|
|
||||||
@ -174,7 +174,7 @@ int ase_tio_attout (ase_tio_t* tio, ase_tio_io_t output, void* arg)
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
int ase_tio_detout (ase_tio_t* tio)
|
int ase_tio_detachout (ase_tio_t* tio)
|
||||||
{
|
{
|
||||||
if (tio->output_func != ASE_NULL)
|
if (tio->output_func != ASE_NULL)
|
||||||
{
|
{
|
||||||
|
Loading…
Reference in New Issue
Block a user