Example #1
0
File: f.c Project: PlanetAPL/a-plus
Z H1(e1){
  I z;
  I isWritableFile();
  ND1 Q(a->t!=Ct,6)Q(a->r>1,7);
  ++dbg_depth;if(dbg_txeq)xeqtrc((C *)a->p,1);
  if(a->c||isWritableFile((I)a))z=exm((C *)a->p,APL);
  else 
  {
    C *buf=(C *)mab(a->n+1);
    memmove(buf,a->p,a->n+1);
    z=exm(buf,APL);
    mf((I *)buf);
  }
  --dbg_depth;if(dbg_txeq)xeqtrc((C *)a->p,0);
  R z;
}
Example #2
0
MetricAnIso::MetricAnIso( Real8  a,const  MetricAnIso ma,
			  Real8  b,const  MetricAnIso mb)
{ 
  MetricAnIso mab(a*ma.a11+b*mb.a11,a*ma.a21+b*mb.a21,a*ma.a22+b*mb.a22);
  MatVVP2x2 vab(mab);
  
  R2 v1(vab.v.x,vab.v.y);
  R2 v2(-v1.y,v1.x);
  

  Real8 h1 = a / ma(v1) + b / mb(v1);
  Real8 h2 = a / ma(v2) + b / mb(v2);
  vab.lambda1 =  1 / (h1*h1);
  vab.lambda2 =  1 / (h2*h2);
  *this = vab;
}
Example #3
0
MetricAnIso::MetricAnIso(const Real8  a[3],const  MetricAnIso m0,
			 const  MetricAnIso m1,const  MetricAnIso m2 )
{
  MetricAnIso mab(a[0]*m0.a11 + a[1]*m1.a11 + a[2]*m2.a11,
		  a[0]*m0.a21 + a[1]*m1.a21 + a[2]*m2.a21,
		  a[0]*m0.a22 + a[1]*m1.a22 + a[2]*m2.a22);
  
  MatVVP2x2 vab(mab);
 
  R2 v1(vab.v.x,vab.v.y);
  R2 v2(-v1.y,v1.x);
  
  Real8 h1 = a[0] / m0(v1) + a[1] / m1(v1) + a[2] / m2(v1);
  Real8 h2 = a[0] / m0(v2) + a[1] / m1(v2) + a[2] / m2(v2);

  vab.lambda1 =  1 / (h1*h1);
  vab.lambda2 =  1 / (h2*h2);
  *this = vab;
}
Example #4
0
File: f.c Project: PlanetAPL/a-plus
Z H2(e2){
  I z;
  I isWritableFile();
  CX cx=Cx;
  ND2;
  z=*a->p;
  if (It==a->t||qz(a)) 
  { 
    if(dbg_txeq)xeqtrc((C *)w->p,3);
    if(w->c||isWritableFile((I)w))z=pexm((I)w->p,APL);
    else 
    {
      C *buf=(C *)mab(w->n+1);
      memmove(buf,w->p,w->n+1);
      z=pexm((I)buf,APL);
      mf((I *)buf);
    }
    if(dbg_txeq)xeqtrc((C *)w->p,2);
    R z;
  }
  else R QS(z)?(Cx=cxi(XS(z)),z=e1(w),Cx=cx,z):(q=6,0);
}
Example #5
0
File: bstub.c Project: louyx/aplus
long *ma(unsigned long w)
/* w - number of words required */
{
  return (long *)(mab(w*sizeof(long)));
}
Example #6
0
A pString_Connection::readBurst(void)
{
  ipcWarn(wrnlvl(),"%t pString_Connection::readBurst\n");
  MSBuffer bbuff;
  A d,z=(A)0;
  I slen=readFileLength(),slen1,n,s,count;
  if(-1==slen)R(A)0;
  if(0==slen)
  {
    static char fmt[]="\343 IPC warning: pA::ReadBurst: read event with no data [%d]\n";
    Warn(fmt, handle());
  }

  /* create buff to hold it.  Fill buffer */
  slen1=slen?slen:4;
  bbuff.minofbuffer(mab(slen1));
  bbuff.maxofbuffer(bbuff.minofbuffer()+slen1);
  bbuff.reset();
  if(0>(n=readTheBuffer(&bbuff,slen1))) {mfbuffer(&bbuff); R(A)0;}
  if(0==n&&0==slen) {turnInReadOff(); mfbuffer(&bbuff); R(A)0;}

  d=getAobjFromBuffer(&bbuff);
  if((A)0==d){mfbuffer(&bbuff); R(A)0;}

  // determine how many more complete A-objects lie in bbuff
  count=1;
  for(C *cp=bbuff.get();cp<bbuff.put();cp+=s)
  {
    s=longAt(cp);
    cp+=sizeof(long);
    if(s<=bbuff.put()-cp)++count;
  }

  // create result
  z=gv(Et,count);
  for(int i=0;i<count;++i)z->p[i]=(I)aplus_nl;
  int idx=0;
  z->p[idx++]=(I)d;

  // retrieve additional A-objects from bbuff, fill in z
  while(idx<count)
  {
    d=getAobjFromBuffer(&bbuff);
    if((A)0==d)break;
    z->p[idx++]=(I)d;
  }
  if(idx<count)
  {
    ipcWarn(wrnlvl(),"%t burst mode aborted.  Possible data loss.\n");
  }

  // run once more to clear out bbuff and move partial object into connection
  // buffers
  if(bbuff.get()==bbuff.put())turnInReadOff();
  else
  {
    d=getAobjFromBuffer(&bbuff);
    if((A)0!=d || bbuff.get()!=bbuff.put())
    {
      ipcWarn(wrnlvl(),"%t burst buffer not cleared: %d %d %d\n",
	    d,bbuff.get(),bbuff.put());
    }
  }

  // free bbuff;
  mfbuffer(&bbuff);

  return z;     
}