コード例 #1
0
ファイル: si.c プロジェクト: PlanetAPL/a-plus
A getSymKstack(void)
{
  I n=K-MY;I *zp,i,s;
  C **ns=get_primlist(1,1);
  A z=gv(Et,n);zp=z->p;
  i=1;
  while(i<=n)
  {
    s=MY[i++];
    if(0==s){*zp++=(I)aplus_nl;}
    else if(s>-9999&&s<6)
    {
      if(0>s)*zp++=(I)gi(-s);
      else *zp++=(I)gvi(Et,1,MS(si(ns[s])));
    }
    else if(QV(s)) 
    {
      *zp++=(I)gvi(Et,2,gsv(0,"file"),gsv(0,(C *)(s&~aplusMask)));
      *zp++=(I)gi(-MY[i++]);
    } 
    else if(QS(s))
    {
      *zp++=(I)gvi(Et,2,gsv(0,"expr"),gsv(0,(C *)(s&~aplusMask)));
    }
    else
    {
      A f=(A)s;
      sprintf((C *)ks_buf,"%s.%s",((CX)f->p[f->n+2])->s->n,XS(*f->d)->n);
      *zp++=(I)gvi(Et,2,gsv(0,"func"),gsv(0,(C *)ks_buf));
    }
  }
  R z;
}
コード例 #2
0
ファイル: IPCInterface.C プロジェクト: louyx/aplus
ENTRYPOINT
A ipcWhatis(I handle_)
{
  AipcService *srvptr=lookupAnyHandle(handle_);
  ipcWarn(srvptr?srvptr->wrnlvl():0,"%t ipcWhatis\n");
  if(srvptr==0) return gvi(Et,2,MS(si("")),MS(si("")));
  return gvi(Et,2,MS(si(serviceNames[srvptr->serviceType()])),
	MS(si((char *)srvptr->protocol())));
}
コード例 #3
0
ファイル: pString_Connection.C プロジェクト: PlanetAPL/a-plus
A pString_Connection::syncSendCover(A msg_, A aTimeout)
{
  struct timeval gameover, *tvp;
  I rc;

  ipcWarn(wrnlvl(),"%t pString_Connection::syncSend\n");

  tvp = atotv(aTimeout, &gameover);
  if(writeChannel()==0) return syncErrorResult("nochan","channel is null");
  
  /* put stuff on queue */
  int dataSize     = msg_->n;
  int bufferSize   = HeaderLength  +dataSize;
  int temp         = htonl(dataSize);

  MSBuffer *sb=new MSBuffer( bufferSize);
  if(NULL==sb) return syncErrorResult("Buffer","new MSBuffer routine failed.");
  sb->stuff((char *)(&temp), HeaderLength);
  sb->stuff((const char *)msg_->p, dataSize);
  sendTheBuffer(sb);

  /* while loop on select() until timeout or write queue empty */
  rc=syncWriteLoop(tvp);
  if(0>rc) return syncErrorResult(errorSymbol,errorMessage);
  else return gvi(Et,3,gsym("OK"),gi(rc),writeQueueStatus());
}
コード例 #4
0
ファイル: AipcAttributes.C プロジェクト: PlanetAPL/a-plus
void AipcAttributes::init(void)
{
  ipcWarn(0,"%t AipcAttributes::init\n");
  _flagAttrs=_readPriority=_writePriority=_readBufsize=_writeBufsize=
    _listener=0;
  _clientData=(A)0;
  retry(MSTrue);
  if(0==SetableAttrs)
    SetableAttrs=gvi(Et,10,MS(si("noDelay")),
		     MS(si("readPause")),MS(si("writePause")),
		     MS(si("readPriority")),MS(si("writePriority")),
		     MS(si("readBufsize")),MS(si("writeBufsize")),
		     MS(si("retry")),MS(si("clientData")),MS(si("debug")));
  if(0==NonsetableAttrs)
    NonsetableAttrs=gvi(Et,5,MS(si("fd")),MS(si("port")),
			MS(si("writeStatus")),MS(si("readStatus")),
			MS(si("listener")));
}
コード例 #5
0
ファイル: k.c プロジェクト: louyx/aplus
A getBeamMSyncMode(void)
{
  if(msyncMode)
    {
      if(msyncFlag&MS_ASYNC && msyncFlag&MS_INVALIDATE)
	return gvi(Et,2,MS(si("MS_ASYNC")),MS(si("MS_INVALIDATE")));
      else if(msyncFlag&MS_SYNC && msyncFlag&MS_INVALIDATE)
	return gvi(Et,2,MS(si("MS_SYNC")),MS(si("MS_INVALIDATE")));
      else if(msyncFlag==MS_ASYNC)
	return gsym("MS_ASYNC");
      else if(msyncFlag==MS_SYNC)
	return gsym("MS_SYNC");
      else
	return gi(msyncFlag);
    }
  else
    return gsym("none");
}
コード例 #6
0
ファイル: IPCUtilities.C プロジェクト: dbremner/aplusdev
A getAbsoluteTimeout(A aobj_)
{
  struct timeval gameover, *tvp;
  ipcWarn(0,"%t getAbsoluteTimeout\n");

  tvp = atotv(aobj_, &gameover);
  if (NULL==tvp) return(A)0;
  else return gvi(It,3,tvp->tv_sec,tvp->tv_usec,1);
}
コード例 #7
0
ファイル: IPCInterface.C プロジェクト: louyx/aplus
ENTRYPOINT
A ipcAttrlists(I handle_)
{
  AipcService *srvptr=lookupAnyHandle(handle_);
  ipcWarn(srvptr?srvptr->wrnlvl():0,"%t ipcAttrlists\n");
  A z=(A)0;
  if(!srvptr)return z;
  switch(srvptr->serviceType()) {
  case 1: /* connection */
    z=gvi(Et,2,((AipcConnection *)srvptr)->getableAttrlist(),
	  ((AipcConnection *)srvptr)->setableAttrlist());
    break;
  case 2: /* listener */
    z=gvi(Et,2,((AipcListener *)srvptr)->getableAttrlist(),
	  ((AipcListener *)srvptr)->setableAttrlist());
    break;
  case 4: /* timer */
    z=gvi(Et,2,((TimrConnection *)srvptr)->getableAttrlist(),
	  ((TimrConnection *)srvptr)->setableAttrlist());
    break;
  }
  return z;
}
コード例 #8
0
ファイル: pString_Connection.C プロジェクト: PlanetAPL/a-plus
A pString_Connection::syncReadCover(A aTimeout)
{
  struct timeval gameover, *tvp;
  A dataobj;
  ipcWarn(wrnlvl(),"%t pString_Connection::SyncRead\n");

  tvp = atotv(aTimeout, &gameover);
  if(readChannel()==0) return syncErrorResult("nochan","channel is null");

  /* while loop on select() until timeout or complete message received */
  dataobj=syncReadLoop(tvp);
  if (dataobj) return gvi(Et,3,gsym("OK"),dataobj,aplus_nl);
  else return syncErrorResult(errorSymbol, errorMessage);
}
コード例 #9
0
ファイル: u.c プロジェクト: dbremner/aplusdev
A SymbolTableBlockInfo(void)
{
  A t,z = gv(Et,3);
  I count, *ip;
  SBS cur;
  
  z->p[0]=(I)gvi(It,2,SymHashTable->nb,SymHashTable->ni);
  for(count=0,cur=&SymBlockListHead;cur=cur->next;++count) ;
  t=gm(It,count,3),ip=t->p;
  for(cur=&SymBlockListHead;cur=cur->next;
      *ip++=cur->size,*ip++=cur->idx,*ip++=cur->count) ;
  z->p[1]=(I)t;
  for(count=0,cur=FullSymBlockList;cur;++count,cur=cur->next) ;
  t=gm(It,count,3),ip=t->p;
  for(cur=FullSymBlockList;cur;cur=cur->next)
    *ip++=cur->size,*ip++=cur->idx,*ip++=cur->count;
  z->p[2]=(I)t;
  R z;
}
コード例 #10
0
ファイル: f.c プロジェクト: PlanetAPL/a-plus
Z H1(rake){A z;I n,d=0;n=rake_1p(a,0,&d);if(!n)R(I)aplus_nl;
 if(!d)R(I)gvi(Et,1,ic(a));z=gv(Et,n);z->n=0;rake_2p(a,z);R(I)z;}
コード例 #11
0
ファイル: pString_Connection.C プロジェクト: PlanetAPL/a-plus
static A syncErrorResult(const C *sym_, const C *str_)
{
  return gvi(Et,3,gsym("error"),gsym(sym_),gsv(0,str_));
}