view vchar.c @ 0:e0bbaa717f41 draft default tip

lol J
author Jordi Gutiérrez Hermoso <jordigh@octave.org>
date Mon, 25 Nov 2013 11:56:30 -0500
parents
children
line wrap: on
line source

/* Copyright 1990-2011, Jsoftware Inc.  All rights reserved. */
/* License in license.txt.                                   */
/*                                                                         */
/* Verbs: Character Functions  u&(a.&i.) and u&.(a.&i.)                    */

#include "j.h"


static APFX(maxC, UC,UC,UC, MAX)
static APFX(minC, UC,UC,UC, MIN)

static AIFX(ltC,  B, UC,UC, <  )
static AIFX(leC,  B, UC,UC, <= )
static AIFX(geC,  B, UC,UC, >= )
static AIFX(gtC,  B, UC,UC, >  )

#define PLUSX +

DF2(jtcharfn2){A z;B b;C c;I an,ar,*as,m,n,wn,wr,*ws,zn,zt;V*v;VF ado=0;
 RZ(a&&w);
 v=VAV(self); c=ID(v->f);
 if(CUNDER==v->id)switch(c){
  case CMAX:  zt=LIT; ado=maxC; break;
  case CMIN:  zt=LIT; ado=minC; break;
  case CAT:   z=VAV(v->f)->f; v=VAV(z); if(CAMP==v->id&&256==i0(v->f)&&CSTILE==ID(v->g));
 }else switch(c){
  case CEQ:   R eq(a,w);
  case CNE:   R ne(a,w);
  case CLT:   zt=B01; ado=ltC;  break;
  case CLE:   zt=B01; ado=leC;  break;
  case CGE:   zt=B01; ado=geC;  break;
  case CGT:   zt=B01; ado=gtC;  break;
 }
 if(!ado)R df2(a,w,self);
 an=AN(a); ar=AR(a); as=AS(a);
 wn=AN(w); wr=AR(w); ws=AS(w);
 ASSERT(!ICMP(as,ws,MIN(ar,wr)),EVLENGTH);
 b=ar<=wr; zn=b?wn:an; m=b?an:wn; n=m?zn/m:0;
 GA(z,zt,zn,b?wr:ar,b?ws:as); if(!zn)R z;
 ado(jt,b,m,n,CAV(z),CAV(a),CAV(w));
 R z;
}