diff --git a/dllsrc/jdll.def b/dllsrc/jdll.def index d318ea60f..fea980587 100644 --- a/dllsrc/jdll.def +++ b/dllsrc/jdll.def @@ -28,3 +28,4 @@ EXPORTS JInt64R @28 JGetR @29 JSMX @30 + Jassoc @31 diff --git a/dllsrc/jdll2.def b/dllsrc/jdll2.def index 4488520c3..f36cdffe7 100644 --- a/dllsrc/jdll2.def +++ b/dllsrc/jdll2.def @@ -14,4 +14,4 @@ EXPORTS JSetA @27 JGetR @29 JSMX @30 - + Jassoc @31 diff --git a/jsrc/io.c b/jsrc/io.c index 945465577..edd601bb6 100644 --- a/jsrc/io.c +++ b/jsrc/io.c @@ -760,6 +760,20 @@ static int setterm(JS jt, C* name, I* jtype, I* jrank, I* jshape, I* jdata) return jm->jerr; } +int _stdcall Jassoc(JS jt, C* name, A w) +{ + SETJTJM(jt,jt,jm) + int er; + char gn[256]; + if(FUNC&AT(w)) return EVDOMAIN; + // validate name + if(strlen(name) >= sizeof(gn)) return EVILNAME; + if(valid(name, gn)) return EVILNAME; + jm->jerr=0; + jtjset(jm,gn, w); + return jm->jerr; +} + int _stdcall JSetM(JS jt, C* name, I* jtype, I* jrank, I* jshape, I* jdata) { SETJTJM(jt,jt,jm) diff --git a/jsrc/jlib.h b/jsrc/jlib.h index 2460052ce..a1ac72b8f 100644 --- a/jsrc/jlib.h +++ b/jsrc/jlib.h @@ -7,12 +7,13 @@ typedef void* JS #endif -CDPROC JS _stdcall JInit(void); /* init instance */ +CDPROC JS _stdcall JInit(void); /* init instance */ CDPROC void _stdcall JSM(JS jt, void*callbacks[]); /* set callbacks */ CDPROC void _stdcall JSMX(JS jt, void*, void*, void*, void*, I); CDPROC int _stdcall JDo(JS jt,C*); /* run sentence */ CDPROC C* _stdcall JGetLocale(JS jt); /* get locale */ -CDPROC A _stdcall Jga(JS jt, I t, I n, I r, I*s); +CDPROC A _stdcall Jga(JS jt, I t, I n, I r, I*s); /* allocate array */ +CDPROC int _stdcall Jassoc(JS jt, C* name, A w); /* associate name to array */ CDPROC int _stdcall JFree(JS jt); /* free instance */ CDPROC A _stdcall JGetA(JS jt,I n,C* name); /* get 3!:1 from name */ CDPROC C* _stdcall JGetR(JS jt); /* get capture */