コード例 #1
0
ファイル: vgsp.c プロジェクト: PlanetAPL/j-language
static B jtspsscell(J jt,A w,I wf,I wcr,A*zc,A*zt){A c,t,y;B b;
     I cn,*cv,j,k,m,n,p,*s,tn,*tv,*u,*u0,*v,*v0;P*wp;
 wp=PAV(w); s=AS(w); p=3+s[wf];
 y=SPA(wp,i); s=AS(y); m=s[0]; n=s[1];
 u0=AV(y); u=u0+n; 
 v0=u0+wf; v=v0+n;
 if(!m){*zt=*zc=mtv; R 1;}
 GATV(t,INT,2+2*m,1,0); tv=AV(t); tv[0]=tv[1]=0; tn=2;
 GATV(c,INT,  2*m,2,0); cv=AV(c); cv[0]=0;       cn=0; *(1+AS(c))=2;
 for(j=1;j<m;++j){
  b=1;
  for(k=0;k<wf;++k)
   if(u0[k]!=u[k]){
    tv[tn++]=j; tv[tn++]=j; cv[1+cn]=tn-cv[cn];
    if(p==tn-cv[cn]){++cv[cn]; cv[1+cn]-=2;} 
    cn+=2;
    cv[cn]=tn-2; u0=u; v0=v; b=0;
    break;
   }
  if(b&&*v0!=*v){tv[tn++]=j; v0=v;}
  u+=n; v+=n;
 }
 tv[tn++]=m; tv[tn++]=m; cv[1+cn]=tn-cv[cn];
 if(p==tn-cv[cn]){++cv[cn]; cv[1+cn]-=2;}
 cn+=2;
 AN(t)=    *AS(t)=tn;   *zt=t;  /* cell divisions (row indices in y)            */
 AN(c)=cn; *AS(c)=cn/2; *zc=c;  /* item divisions (indices in t, # of elements) */
 R 1;
}    /* frame: all sparse; cell: 1 or more sparse, then dense */
コード例 #2
0
ファイル: vrep.c プロジェクト: iocane/unbox
static REPF(jtrepzsx) {
    A q,x,y;
    I c,d,j,k=-1,m,p=0,*qv,*xv,*yv;
    P*ap;
    RZ(a&&w);
    ap=PAV(a);
    x=SPA(ap,x);
    m=AN(x);
    if(!AN(SPA(ap,a)))R repzdx(ravel(x),w,wf,wcr);
    y=SPA(ap,i);
    yv=AV(y);
    RZ(x=cvt(INT,vec(FL,2*m,AV(x))));
    xv=AV(x);
    if(equ(zero,SPA(ap,e))) {
        k=c=*(wf+AS(w));
        if(!wf&&SPARSE&AT(w)) {
            A a,y;
            I m,n,q,*v;
            P*wp;
            wp=PAV(w);
            a=SPA(wp,a);
            if(AN(a)&&!*AV(a)) {
                y=SPA(wp,i);
                v=AS(y);
                m=v[0];
                n=v[1];
                v=AV(y);
                k=m?v[(m-1)*n]+1:0;
                q=0;
                DO(m, if(q==*v)++q; else if(q<*v) {
                    k=q;
                    break;
                }
            v+=n;);
            }
コード例 #3
0
ファイル: cpdtsp.c プロジェクト: mlochbaum/jsource
static F2(jtpdtspmv){A ax,b,g,x,wx,y,yi,yj,z;B*bv;I m,n,s[2],*u,*v,*yv;P*ap,*wp,*zp;
 RZ(a&&w);
 ap=PAV(a); y=SPA(ap,i); yv=AV(y); s[0]=n=*AS(y); s[1]=1;
 GATV(yj,INT,n,2,s);
 if(DENSE&AT(w)){
  GATV(yi,INT,n,2,s); u=AV(yi); AR(yj)=1; v=AV(yj);
  DO(n, *u++=*yv++; *v++=*yv++;);
コード例 #4
0
ファイル: io.c プロジェクト: GrimDerp/arcueid
AFFEND

AFFDEF(arc_tell)
{
  AARG(fp);
  AFBEGIN;
  AFTCALL(VINDEX(IO(AV(fp))->io_ops, IO_tell), AV(fp));
  AFEND;
}
コード例 #5
0
ファイル: xf.c プロジェクト: donguinn/core
static B jtixin(J jt,A w,I s,I*i,I*n){A in,*wv;I j,k,m,*u,wd;
 if(AT(w)&BOX){wv=AAV(w); wd=(I)w*ARELATIVE(w); RZ(in=vi(WVR(1))); k=AN(in); u=AV(in);}
 else{in=w; k=AN(in)-1; u=1+AV(in);}
 ASSERT(1>=AR(in),EVRANK);
 ASSERT(k&&k<=(n?2:1),EVLENGTH);
 j=u[0]; j=0>j?s+j:j; m=1==k?s-j:u[1];
 ASSERT(0<=j&&(!n||j<s&&j+m<=s&&0<=m),EVINDEX);
 *i=j; if(n)*n=m;
 R 1;
}    /* process index file arg for index and length */
コード例 #6
0
ファイル: a.c プロジェクト: zeotrope/j7-src
F1(bool){A b,h;I j,*v;
 RZ(w);
 if(VERB&AT(w))R ADERIV(CBOOL, basis1,0L, 0L,0L,0L);
 RZ(w=vi(w));
 v=AV(w);
 DO(AN(w), j=*v++; ASSERT(-16<=j&&j<16,EVINDEX));
 GA(b,BOOL,64,2,0); *AS(b)=16; *(1+AS(b))=4; MC(AV(b),booltab,64L);
 RZ(h=cant2(apv(AR(w),0L,1L),from(w,b)));
 R fdef(CBOOL,VERB, bool1,bool2, w,0L,h, 0L, RMAXL,0L,0L);
}
コード例 #7
0
ファイル: clos.c プロジェクト: qyqx/arcueid
static AFFDEF(clos_pprint)
{
  AARG(sexpr, disp, fp);
  AOARG(visithash);
  AFBEGIN;

  AFTCALL(arc_mkaff(c, __arc_disp_write, CNIL), CLOS_CODE(AV(sexpr)),
	  AV(disp), AV(fp), AV(visithash));
  AFEND;
}
コード例 #8
0
ファイル: io.c プロジェクト: GrimDerp/arcueid
AFFEND

AFFDEF(arc_write)
{
  AARG(arg);
  AOARG(outport);
  AFBEGIN;
  AFTCALL(arc_mkaff(c, __arc_disp_write, CNIL), AV(arg), CNIL, AV(outport));
  AFEND;
}
コード例 #9
0
ファイル: symbol.c プロジェクト: GrimDerp/arcueid
static AFFDEF(symbol_pprint)
{
  AARG(sexpr, disp, fp);
  AOARG(visithash);
  AFBEGIN;
  (void)visithash;
  (void)disp;
  AFTCALL(arc_mkaff(c, arc_disp, CNIL), arc_sym2name(c, AV(sexpr)), AV(fp));
  AFEND;
}
コード例 #10
0
ファイル: fileio.c プロジェクト: qyqx/arcueid
AFFEND

static AFFDEF(fio_seek)
{
  AARG(fio, offset, whence);
  AFBEGIN;
  if (!(FIX2INT(AV(whence)) == SEEK_SET || FIX2INT(AV(whence)) == SEEK_CUR ||
	FIX2INT(AV(whence)) == SEEK_END)) {
    arc_err_cstrfmt(c, "invalid seek whence argument");
    ARETURN(CNIL);
  }

#ifdef HAVE_FSEEKO
  {
    long long noff;

    if (__arc_val2ll(c, AV(offset), &noff)) {
      ARETURN(INT2FIX(fseeko(FIODATA(AV(fio))->fp, (off_t)noff, FIX2INT(AV(whence)))));
    } else {
      arc_err_cstrfmt(c, "invalid seek offset");
    }
  }
#else
  {
    long noff;

    if (__arc_val2long(c, AV(offset), &noff)) {
      ARETURN(INT2FIX(fseek(FIODATA(AV(fio))->fp, noff, FIX2INT(AV(whence)))));
    } else {
      arc_err_cstrfmt(c, "invalid seek offset");
    }
  }
#endif
  AFEND;
}
コード例 #11
0
ファイル: s.c プロジェクト: HenryHRich/unbox
B jtsymext(J jt,B b){A x,y;I j,m,n,s[2],*v,xn,yn;L*u;
 if(b){y=jt->symp; j=((MS*)y-1)->j; n=*AS(y); yn=AN(y);}
 else {            j=12;            n=1;      yn=0;    }
 m=msize[1+j];                              /* new size in bytes           */
 m-=sizeof(MS)+SZI*(AH+2);                  /* less array overhead         */
 m/=symcol*SZI;                             /* new # rows                  */
 s[0]=m; s[1]=symcol; xn=m*symcol;          /* new pool array shape        */
 GA(x,INT,xn,2,s); v=AV(x);                 /* new pool array              */
 if(b)ICPY(v,AV(y),yn);                     /* copy old data to new array  */
 memset(v+yn,C0,SZI*(xn-yn));               /* 0 unused area for safety    */
 u=n+(L*)v; j=1+n;
 DO(m-n-1, u++->next=j++;);                 /* build free list extension   */
コード例 #12
0
ファイル: hash.c プロジェクト: GrimDerp/arcueid
AFFEND

static AFFDEF(xhash_apply)
{
  AARG(tbl, key, dflt);
  AFBEGIN;
  AFCALL(arc_mkaff(c, arc_xhash_lookup, CNIL), AV(tbl), AV(key));
  if (BOUND_P(AFCRV))
    ARETURN(AFCRV);
  ARETURN(AV(dflt));
  AFEND;
}
コード例 #13
0
ファイル: io.c プロジェクト: GrimDerp/arcueid
AFFEND

AFFDEF(arc_close)
{
  ARARG(list);
  AFBEGIN;
  for (; !NIL_P(AV(list)); WV(list, cdr(AV(list)))) {
    AFCALL(VINDEX(IO(car(AV(list)))->io_ops, IO_close), car(AV(list)));
  }
  ARETURN(CNIL);
  AFEND;
}
コード例 #14
0
ファイル: fileio.c プロジェクト: qyqx/arcueid
AFFEND

static AFFDEF(fio_close)
{
  AARG(fio);
  AFBEGIN;
  if (FIODATA(AV(fio))->closed == 0) {
    fclose(FIODATA(AV(fio))->fp);
    FIODATA(AV(fio))->closed = 1;
  }
  ARETURN(CNIL);
  AFEND;
}
コード例 #15
0
ファイル: fileio.c プロジェクト: qyqx/arcueid
AFFEND

static AFFDEF(fio_putb)
{
  AARG(fio, byte);
  int rv;

  AFBEGIN;
  rv = fputc(FIX2INT(AV(byte)), FIODATA(AV(fio))->fp);
  if (rv < 0)
    ARETURN(CNIL);
  ARETURN(AV(byte));
  AFEND;
}
コード例 #16
0
ファイル: io.c プロジェクト: GrimDerp/arcueid
AFFEND

AFFDEF(arc_writeb)
{
  AARG(byte);
  AOARG(fd);
  AFBEGIN;

  if (arc_thr_argc(c, thr) == 0) {
    arc_err_cstrfmt(c, "writeb: too few arguments");
    return(CNIL);
  }

  if (!BOUND_P(AV(fd)))
    STDOUT(fd);

  IOW_TYPECHECK(AV(fd));
  CHECK_CLOSED(AV(fd));
  AFCALL(VINDEX(IO(AV(fd))->io_ops, IO_wready), AV(fd));
  if (AFCRV == CNIL) {
    arc_err_cstrfmt(c, "port is not ready for writing");
    ARETURN(CNIL);
  }
  AFTCALL(VINDEX(IO(AV(fd))->io_ops, IO_putb), AV(fd), AV(byte));
  AFEND;
}
コード例 #17
0
ファイル: ffmpeg_util.c プロジェクト: RyanLee27/pjproject
pj_status_t pjmedia_format_id_to_PixelFormat(pjmedia_format_id fmt_id,
					     enum AVPixelFormat *pixel_format)
{
    unsigned i;
    for (i=0; i<PJ_ARRAY_SIZE(ffmpeg_fmt_table); ++i) {
	const struct ffmpeg_fmt_table_t *t = &ffmpeg_fmt_table[i];
	if (t->id==fmt_id && t->pf != AV(PIX_FMT_NONE)) {
	    *pixel_format = t->pf;
	    return PJ_SUCCESS;
	}
    }

    *pixel_format = AV(PIX_FMT_NONE);
    return PJ_ENOTFOUND;
}
コード例 #18
0
ファイル: cpdtsp.c プロジェクト: mlochbaum/jsource
static F2(jtpdtspvv){A x;D*av,s,t,*wv,z;I i,*u,*u0,*uu,*v,*v0,*vv;P*ap,*wp;
 RZ(a&&w);
 ap=PAV(a); x=SPA(ap,i); u=u0=AV(x); uu=u+AN(x); x=SPA(ap,x); av=DAV(x);
 wp=PAV(w); x=SPA(wp,i); v=v0=AV(x); vv=v+AN(x); x=SPA(wp,x); wv=DAV(x);
 z=0.0;
 NAN0;
 while(1){
  i=*u; while(i>*v&&v<vv)++v; if(v==vv)break;
  if(i==*v){s=av[u-u0]; t=wv[v-v0]; z+=s&&t?s*t:0; ++u; ++v; continue;}
  i=*v; while(i>*u&&u<uu)++u; if(u==uu)break;
  if(i==*u){s=av[u-u0]; t=wv[v-v0]; z+=s&&t?s*t:0; ++u; ++v; continue;}
 }
 NAN1;
 R scf(z);
}
コード例 #19
0
ファイル: io.c プロジェクト: GrimDerp/arcueid
AFFEND

AFFDEF(arc_peekc)
{
  AOARG(fd);
  AVAR(ch);
  AFBEGIN;
  if (!BOUND_P(AV(fd)))
    STDIN(fd);
  AFCALL(arc_mkaff(c, arc_readc, CNIL), AV(fd));
  WV(ch, AFCRV);
  arc_ungetc_rune(c, arc_char2rune(c, AV(ch)), AV(fd));
  ARETURN(AV(ch));
  AFEND;
}
コード例 #20
0
ファイル: ffmpeg_util.c プロジェクト: RyanLee27/pjproject
pj_status_t pjmedia_format_id_to_CodecID(pjmedia_format_id fmt_id,
					 unsigned *codec_id)
{
    unsigned i;
    for (i=0; i<PJ_ARRAY_SIZE(ffmpeg_codec_table); ++i) {
	const struct ffmpeg_codec_table_t *t = &ffmpeg_codec_table[i];
	if (t->id==fmt_id && t->codec_id != AV(PIX_FMT_NONE)) {
	    *codec_id = t->codec_id;
	    return PJ_SUCCESS;
	}
    }

    *codec_id = (unsigned)AV(PIX_FMT_NONE);
    return PJ_ENOTFOUND;
}
コード例 #21
0
ファイル: fileio.c プロジェクト: qyqx/arcueid
static AFFDEF(fio_closed_p)
{
  AARG(fio);
  AFBEGIN;
  ARETURN((FIODATA(AV(fio))->closed) ? CTRUE : CNIL);
  AFEND;
}
コード例 #22
0
ファイル: cg.c プロジェクト: zeotrope/j7-src
static DF1(case1){A u;V*sv;
 PREF1(case1);
 sv=VAV(self);
 RZ(u=from(df1(w,sv->g),sv->h));
 ASSERT(!AR(u),EVRANK);
 R df1(w,*AV(u));
}
コード例 #23
0
ファイル: pv.c プロジェクト: EdKeith/core
static F1(jtvtokens){A t,*y,z;I n,*s;TA*x;
 RZ(t=tokens(vs(w))); n=AN(t); y=AAV(t);
 jt->tmonad=1; 
 GA(z,BOX,WTA*(5+n),2,0); s=AS(z); *s++=5+n; *s=WTA;
 x=(TA*)AV(z);
 x->a=mark; x->t=0; ++x;
 DO(n, x->a=t=*y++; x->t=0; ++x; if(t==xnam||jt->dotnames&&t==xdot)jt->tmonad=0;);
コード例 #24
0
ファイル: am.c プロジェクト: EdKeith/core
static A jtmerge1(J jt,A w,A ind){A z;B*b;C*wc,*zc;D*wd,*zd;I c,it,j,k,m,r,*s,t,*u,*wi,*zi;
 RZ(w&&ind);
 r=MAX(0,AR(w)-1); s=1+AS(w); t=AT(w); k=bp(t); m=IC(w); c=aii(w);
 ASSERT(!(t&SPARSE),EVNONCE);
 ASSERT(r==AR(ind),EVRANK);
 ASSERT(!ICMP(s,AS(ind),r),EVLENGTH);
 GA(z,t,c,r,s);
 if(!(AT(ind)&B01+INT))RZ(ind=cvt(INT,ind));
 it=AT(ind); u=AV(ind); b=(B*)u;
 ASSERT(!c||1<m||!(it&B01),EVINDEX);
 ASSERT(!c||1!=m||!memchr(b,C1,c),EVINDEX);
 zi=AV(z); zc=(C*)zi; zd=(D*)zc;
 wi=AV(w); wc=(C*)wi; wd=(D*)wc;
 switch(MCASE(it,k)){
  case MCASE(B01,sizeof(C)): DO(c,         *zc++=wc[*b++?i+c:i];); break;
  case MCASE(B01,sizeof(I)): DO(c,         *zi++=wi[*b++?i+c:i];); break;
コード例 #25
0
ファイル: cg.c プロジェクト: zeotrope/j7-src
static DF2(case2){A u;V*sv;
 PREF2(case2);
 sv=VAV(self);
 RZ(u=from(df2(a,w,sv->g),sv->h));
 ASSERT(!AR(u),EVRANK);
 R df2(a,w,*AV(u));
}
コード例 #26
0
ファイル: d.c プロジェクト: zeotrope/j7-src
static void jsig(void){
 tostdout=1; suspend=1;
 if(debugb&&!spc()){
  dhead(); jputs("ws full (can not debug suspend)"); jputc(CNL);
  debugb=0;
 }
 dhead(); jputs(AV(*(jerr+AAV(qevm)))); jputc(CNL);
}
コード例 #27
0
ファイル: symbol.c プロジェクト: GrimDerp/arcueid
AFFEND

static AFFDEF(symbol_xcoerce)
{
  AARG(obj, stype, arg);
  AFBEGIN;
  (void)arg;
  if (FIX2INT(AV(stype)) == T_SYMBOL)
    ARETURN(AV(obj));

  if (FIX2INT(AV(stype)) == T_STRING)
    ARETURN(arc_sym2name(c, AV(obj)));

  arc_err_cstrfmt(c, "cannot coerce");
  ARETURN(CNIL);
  AFEND;
}
コード例 #28
0
ファイル: vcant.c プロジェクト: EdKeith/core
static A jtcants(J jt,A a,A w,A z){A a1,q,y;B*b,*c;I*u,wr,zr;P*wp,*zp;
 RZ(a&&w&&z);
 RZ(a=grade1(a));
 wr=AR(w); wp=PAV(w); a1=SPA(wp,a);
 zr=AR(z); zp=PAV(z);
 ASSERT(wr==zr,EVNONCE);
 RZ(b=bfi(wr,a1,1));
 GA(q,B01,wr,1,0); c=BAV(q); u=AV(a); DO(wr, c[i]=b[u[i]];);
コード例 #29
0
ファイル: va2s.c プロジェクト: EdKeith/core
static A jtvaspc(J jt,A a,A w,C id,VF ado,I cv,I t,I zt,I af,I acr,I wf,I wcr,I f,I r){A q;I*as,*v,*ws;
 as=AS(a);
 ws=AS(w);
 GA(q,INT,f+r,1,0); v=AV(q);
 if(r>acr){ICPY(v,wf+ws,r); RZ(a=irs2(vec(INT,r-acr,acr+v),a,0L,1L,0L,jtreshape));}
 if(r>wcr){ICPY(v,af+as,r); RZ(w=irs2(vec(INT,r-wcr,wcr+v),w,0L,1L,0L,jtreshape));}
 R vasp(a,w,id,ado,cv,t,zt,af,r,wf,r,f,r);
}    /* prefix agreement on cells */
コード例 #30
0
ファイル: fileio.c プロジェクト: qyqx/arcueid
static AFFDEF(fio_ready)
{
  AARG(fio);
  FILE *fp;
  fd_set rfds;
  int retval, check;
  struct timeval tv;
  AFBEGIN;

  if (TYPE(AV(fio)) == T_OUTPORT)
    ARETURN(CNIL);

  for (;;) {
    fp = FIODATA(AV(fio))->fp;
    /* XXX - NOT PORTABLE! */
#ifdef _IO_fpos_t
    check = (fp->_IO_read_ptr != fp->_IO_read_end);
#else
    check = (fp->_gptr < (fp)->_egptr);
#endif
    if (check)
      ARETURN(CTRUE);
    /* No buffered data available. See if the underlying file descriptor
       is readable. */
    FD_ZERO(&rfds);
    FD_SET(fileno(fp), &rfds);
    tv.tv_usec = tv.tv_sec = 0;
    retval = select(fileno(fp)+1, &rfds, NULL, NULL, &tv);
    if (retval == -1) {
      int en = errno;

      arc_err_cstrfmt(c, "error checking file descriptor (%s; errno=%d)",
		      strerror(en), en);
      ARETURN(CNIL);
    }

    if (FD_ISSET(fileno(fp), &rfds))
      ARETURN(CTRUE);

    /* We have to wait */
    AIOWAITR(fileno(fp));
  }
  ARETURN(CNIL);
  AFEND;
}