started touching up the stdio module
This commit is contained in:
parent
125eee9bec
commit
61f2c89aaa
@ -127,12 +127,11 @@
|
|||||||
##v1 := Stdio2 open: '/tmp/1.txt' for: 'w+'.
|
##v1 := Stdio2 open: '/tmp/1.txt' for: 'w+'.
|
||||||
v1 := Stdio2 new open: '/tmp/1.txt' for: 'w+'.
|
v1 := Stdio2 new open: '/tmp/1.txt' for: 'w+'.
|
||||||
## v1 puts: 'hello'.
|
## v1 puts: 'hello'.
|
||||||
v1 puts ('hello', 'world', 'good', C'\n', C'\t', 'under my umbrella', C'\n').
|
v1 puts ('hello', 'world', 'good', C'\n', C'\t', 'under my umbrella.', C'\n').
|
||||||
v1 close.
|
v1 close.
|
||||||
nil isNil ifTrue: [ 'NIL NIL NIL' dump. ].
|
nil isNil ifTrue: [ 'NIL NIL NIL' dump. ].
|
||||||
(Apex new) notNil ifTrue: [ 'APEX NIL NIL NIL' dump. ].
|
(Apex new) notNil ifTrue: [ 'APEX NIL NIL NIL' dump. ].
|
||||||
|
|
||||||
|
|
||||||
(*
|
(*
|
||||||
v1 format(10 20 30) isNil
|
v1 format(10 20 30) isNil
|
||||||
procecure call is treated as if it is a unary message...
|
procecure call is treated as if it is a unary message...
|
||||||
|
@ -1006,6 +1006,19 @@ typedef enum stix_log_mask_t stix_log_mask_t;
|
|||||||
#define STIX_INFO5(stix,fmt,a1,a2,a3,a4,a5) STIX_LOG5(stix, STIX_LOG_INFO, fmt, a1, a2, a3, a4, a5)
|
#define STIX_INFO5(stix,fmt,a1,a2,a3,a4,a5) STIX_LOG5(stix, STIX_LOG_INFO, fmt, a1, a2, a3, a4, a5)
|
||||||
#define STIX_INFO6(stix,fmt,a1,a2,a3,a4,a5,a6) STIX_LOG6(stix, STIX_LOG_INFO, fmt, a1, a2, a3, a4, a5, a6)
|
#define STIX_INFO6(stix,fmt,a1,a2,a3,a4,a5,a6) STIX_LOG6(stix, STIX_LOG_INFO, fmt, a1, a2, a3, a4, a5, a6)
|
||||||
|
|
||||||
|
|
||||||
|
/* =========================================================================
|
||||||
|
* STIX ASSERTION
|
||||||
|
* ========================================================================= */
|
||||||
|
#if 0
|
||||||
|
#if defined(NDEBUG)
|
||||||
|
# define STIX_ASSERT(expr) ((void)0)
|
||||||
|
#else
|
||||||
|
# define STIX_ASSERT(expr) (void)((expr) || \
|
||||||
|
(stix_logbfmt ("%s at %s:%d", #expr, __FILE__, (int)__LINE__), 0))
|
||||||
|
#endif
|
||||||
|
#endif
|
||||||
|
|
||||||
#if defined(__cplusplus)
|
#if defined(__cplusplus)
|
||||||
extern "C" {
|
extern "C" {
|
||||||
#endif
|
#endif
|
||||||
|
@ -201,40 +201,45 @@ STIX_DEBUG1 (stix, "ARGUMETN ISN INVALID...[%O]\n", x);
|
|||||||
typedef struct fnctab_t fnctab_t;
|
typedef struct fnctab_t fnctab_t;
|
||||||
struct fnctab_t
|
struct fnctab_t
|
||||||
{
|
{
|
||||||
const stix_bch_t* mthname;
|
stix_method_type_t type;
|
||||||
const stix_bch_t* pfname;
|
stix_ooch_t mthname[15];
|
||||||
int variadic;
|
int variadic;
|
||||||
stix_pfimpl_t handler;
|
stix_pfimpl_t handler;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
#define C STIX_METHOD_CLASS
|
||||||
|
#define I STIX_METHOD_INSTANCE
|
||||||
|
|
||||||
static fnctab_t fnctab[] =
|
static fnctab_t fnctab[] =
|
||||||
{
|
{
|
||||||
{ "_newInstSize", STIX_NULL, 0, pf_newinstsize },
|
{ C, { '_','n','e','w','I','n','s','t','S','i','z','e','\0' }, 0, pf_newinstsize },
|
||||||
{ "close", STIX_NULL, 0, pf_close },
|
{ I, { 'c','l','o','s','e','\0' }, 0, pf_close },
|
||||||
{ "gets", STIX_NULL, 0, pf_gets },
|
{ I, { 'g','e','t','s','\0' }, 0, pf_gets },
|
||||||
{ "open:for:", STIX_NULL, 0, pf_open },
|
{ I, { 'o','p','e','n',':','f','o','r',':','\0' }, 0, pf_open },
|
||||||
{ "puts", STIX_NULL, 1, pf_puts },
|
{ I, { 'p','u','t','s','\0' }, 1, pf_puts },
|
||||||
{ "puts:", STIX_NULL, 0, pf_puts }
|
{ I, { 'p','u','t','s',':','\0' }, 0, pf_puts }
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
static stix_ooch_t voca_open_for[] = { 'o','p','e','n',':','f','o','r',':','\0' };
|
|
||||||
static stix_ooch_t voca_close[] = { 'c','l','o','s','e','\0' };
|
|
||||||
static stix_ooch_t voca_newInstSize[] = { '_','n','e','w','I','n','s','t','S','i','z','e','\0' };
|
|
||||||
static stix_ooch_t voca_puts_v[] = { 'p','u','t','s','\0' };
|
|
||||||
static stix_ooch_t voca_puts[] = { 'p','u','t','s',':','\0' };
|
|
||||||
/* ------------------------------------------------------------------------ */
|
/* ------------------------------------------------------------------------ */
|
||||||
|
|
||||||
static int import (stix_t* stix, stix_mod_t* mod, stix_oop_t _class)
|
static int import (stix_t* stix, stix_mod_t* mod, stix_oop_t _class)
|
||||||
{
|
{
|
||||||
|
int ret = 0;
|
||||||
|
stix_oow_t i;
|
||||||
|
|
||||||
stix_pushtmp (stix, &_class);
|
stix_pushtmp (stix, &_class);
|
||||||
stix_genpfmethod (stix, mod, _class, STIX_METHOD_CLASS, voca_newInstSize, 0, STIX_NULL);
|
for (i = 0; i < STIX_COUNTOF(fnctab); i++)
|
||||||
stix_genpfmethod (stix, mod, _class, STIX_METHOD_INSTANCE, voca_open_for, 0, STIX_NULL);
|
{
|
||||||
stix_genpfmethod (stix, mod, _class, STIX_METHOD_INSTANCE, voca_close, 0, voca_close);
|
if (stix_genpfmethod (stix, mod, _class, fnctab[i].type, fnctab[i].mthname, fnctab[i].variadic, STIX_NULL) <= -1)
|
||||||
stix_genpfmethod (stix, mod, _class, STIX_METHOD_INSTANCE, voca_puts, 0, STIX_NULL);
|
{
|
||||||
stix_genpfmethod (stix, mod, _class, STIX_METHOD_INSTANCE, voca_puts_v, 1, STIX_NULL);
|
/* TODO: delete pfmethod generated??? */
|
||||||
|
ret = -1;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
stix_poptmp (stix);
|
stix_poptmp (stix);
|
||||||
return 0;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
static stix_pfimpl_t query (stix_t* stix, stix_mod_t* mod, const stix_ooch_t* name)
|
static stix_pfimpl_t query (stix_t* stix, stix_mod_t* mod, const stix_ooch_t* name)
|
||||||
@ -247,8 +252,7 @@ static stix_pfimpl_t query (stix_t* stix, stix_mod_t* mod, const stix_ooch_t* na
|
|||||||
{
|
{
|
||||||
mid = (left + right) / 2;
|
mid = (left + right) / 2;
|
||||||
|
|
||||||
n = stix_compoocbcstr (name, fnctab[mid].mthname);
|
n = stix_compoocstr (name, fnctab[mid].mthname);
|
||||||
STIX_DEBUG2 (stix, "%S %s\n", name, fnctab[mid].mthname);
|
|
||||||
if (n < 0) right = mid - 1;
|
if (n < 0) right = mid - 1;
|
||||||
else if (n > 0) left = mid + 1;
|
else if (n > 0) left = mid + 1;
|
||||||
else
|
else
|
||||||
@ -283,26 +287,6 @@ int stix_mod_stdio (stix_t* stix, stix_mod_t* mod)
|
|||||||
mod->query = query;
|
mod->query = query;
|
||||||
mod->unload = unload;
|
mod->unload = unload;
|
||||||
mod->ctx = STIX_NULL;
|
mod->ctx = STIX_NULL;
|
||||||
|
|
||||||
#if 0
|
|
||||||
|
|
||||||
#include 'Stix.st'.
|
|
||||||
#import 'Console'.
|
|
||||||
|
|
||||||
/* GRAMMER ENHANCEMENT */
|
|
||||||
fun abc (a, b, c) <----- this style, register C style method
|
|
||||||
{
|
|
||||||
}
|
|
||||||
|
|
||||||
fun abc: a with: b c: c <----- smalltalk style
|
|
||||||
{
|
|
||||||
}
|
|
||||||
|
|
||||||
abc->def (a, b, c) <------- use -> as an c style method indicator
|
|
||||||
abc abc: a with: b c: c
|
|
||||||
|
|
||||||
#endif
|
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user