Exemplo n.º 1
0
region *new_region(int x, int y, struct plane *pl, int uid)
{
    region *r;

    pnormalize(&x, &y, pl);
    r = rfindhash(x, y);

    if (r) {
        log_error("duplicate region discovered: %s(%d,%d)\n", regionname(r, NULL), x, y);
        if (r->units)
            log_error("duplicate region contains units\n");
        return r;
    }
    r = calloc(1, sizeof(region));
    r->x = x;
    r->y = y;
    r->uid = uid;
    r->age = 1;
    r->_plane = pl;
    rhash(r);
    hash_uid(r);
    if (last)
        addlist(&last, r);
    else
        addlist(&regions, r);
    last = r;
    assert(r->next == NULL);
    r->index = ++max_index;
    return r;
}
Exemplo n.º 2
0
void txprint(int i,int *TXS, char *name)
{
 int k;
 char *ttcadl[]={"ZERO","L1h ","L1d ","L2h ","L2d ","L2r ","RoIh","RoId"};
 char text[256];
 int ttcadd,e,code,data,chck;
 ttcadd=0;
 for(k=0;k<14;k++)ttcadd=ttcadd+(1<<k)*TXS[14-k];
 e=TXS[15];
 code=0;
 for(k=0;k<4;k++)code=code+(1<<k)*TXS[20-k];
 data=0;
 for(k=0;k<12;k++)data=data+(1<<k)*TXS[32-k];
 chck=0;
 for(k=0;k<8;k++)chck=chck+(1<<k)*TXS[39-k];
 if(code > 7){
  printf("txprint: unexpected code 0x%x %s \n",code,name);
  sprintf(text,"Error: unexpected code in ttc:");
  for(k=0;k<40;k++){
    char cc[2]="0";
    if(TXS[k]) cc[0]='1';
    strcat(text,cc);
  }
  dump=addlist(dump,i,text);
  writeLog();
  exit(2);
 }
 sprintf(text,"%s %s:0x%04x %x 0x%x 0x%03x 0x%02x ",name,ttcadl[code],ttcadd,e,code,data,chck);
 dump=addlist(dump,i-39,text);
}
Exemplo n.º 3
0
int asig(int canal,int bit,int i,int *COUNT,int *COUNTa,int *COUNTl,int *COUNTe,
		int *DIST,char *name)
/* active signal = short signal + activates data
L1S/L2S logic
 bit  Active
  1    1     error
  1    0     ok -> activate
  0    1     ok
  0    0     ok
*/	  
{
if(bit){
  if(!COUNTa[canal]){		   
     COUNT[canal]++;
     dump=addlist(dump,i,name);
     if( (i-COUNTl[canal])<DIST[canal]){
       COUNTe[canal]++;             
     }
     COUNTl[canal]=i;
     COUNTa[canal]=1;
     }else{
      char text[256];
      sprintf(text,"Error: %s arrives while data active.",name);
      dump=addlist(dump,i,text);
      return 1;
  }		
}
return 0;
}
Exemplo n.º 4
0
void
oadd(Node *n, Node *res)
{
	Node l, r;

	expr(n->left, &l);
	expr(n->right, &r);
	res->nstore.fmt = l.nstore.fmt;
	res->op = OCONST;
	res->type = TFLOAT;
	switch(l.type) {
	default:
		error("bad lhs type +");
	case TINT:
		switch(r.type) {
		case TINT:
			res->type = TINT;
			res->nstore.u0.sival = l.nstore.u0.sival+r.nstore.u0.sival;
			break;
		case TFLOAT:
			res->nstore.u0.sfval = l.nstore.u0.sival+r.nstore.u0.sfval;
			break;
		default:
			error("bad rhs type +");
		}
		break;
	case TFLOAT:
		switch(r.type) {
		case TINT:
			res->nstore.u0.sfval = l.nstore.u0.sfval+r.nstore.u0.sival;
			break;
		case TFLOAT:
			res->nstore.u0.sfval = l.nstore.u0.sfval+r.nstore.u0.sfval;
			break;
		default:
			error("bad rhs type +");
		}
		break;
	case TSTRING:
		if(r.type == TSTRING) {
			res->type = TSTRING;
			res->nstore.fmt = 's';
			res->nstore.u0.sstring = stradd(l.nstore.u0.sstring, r.nstore.u0.sstring); 
			break;
		}
		error("bad rhs for +");
	case TLIST:
		res->type = TLIST;
		switch(r.type) {
		case TLIST:
			res->nstore.u0.sl = addlist(l.nstore.u0.sl, r.nstore.u0.sl);
			break;
		default:
			r.left = 0;
			r.right = 0;
			res->nstore.u0.sl = addlist(l.nstore.u0.sl, construct(&r));
			break;
		}
	}
}
Exemplo n.º 5
0
Arquivo: g22.c Projeto: 8l/csolve
void lkilgrp(int g){
   int lptr,s,i,sn,g2,ldtmp,c;
   c = grcolor[g];
   lptr = grnbp[g]; 
   while(lptr != EOL){
      dellist(g,&grnbp[list[lptr]]);
      lptr = links[lptr];
      } 
   lptr = grpieces[g];
   killist(&grnbp[g]); 
   while(lptr != -1){
      s = mvs[lptr];
      board[s] = NOGROUP; 
      i = fdir[s];
      for(ldtmp = ldir[i]; i < ldtmp; ++i){ 
         sn = s + nbr[i]; 
         --lnbf[sn][c];
         ++lnbn[sn];
         addlist(s,&nblbp[sn]);
         g2 = board[sn];
         if(g2 == NOGROUP)continue; 
         if(g2 == g)continue; 
         if(addlist(s,&grlbp[g2])){ 
           ++grlibs[g2];
           }
         }
      lptr = mvnext[lptr];
      }
  }
struct node *add_polynomial(struct node *point1, struct node *point2, struct node *result)
{
	int coef1,coef2,exp1,exp2;
	while(point1 || point2) {
		if(point1 != NULL) {
			coef1 = point1->coef;
			exp1 = point1->exp;
		} else 
		       exp1 = -1;	
		if(point2 != NULL ) {
			coef2 = point2->coef;
			exp2 = point2->exp;
		} else 
			exp2 = -1;
		if(exp1 == exp2) {
			result = addlist(result, (coef1 + coef2), exp1);
			point1 = point1->next;
			point2 = point2->next;
		} else if(exp1 > exp2) {
			result = addlist(result, coef1, exp1);
			point1 = point1->next;
		} else {
			result = addlist(result, coef2, exp2);
			point2 = point2->next;
		}

	}
	return result;

}
Exemplo n.º 7
0
Arquivo: g22.c Projeto: 8l/csolve
void lresurrect(int g){     /* bring back group g */
   int lptr,s,i,ldtmp,sn,g2,c;
   c = grcolor[g];
   lptr = grpieces[g];
   while(lptr != -1){
       s = mvs[lptr];
       board[s] = g;
       i = fdir[s];
       for(ldtmp = ldir[i]; i < ldtmp; ++i ){
          sn = s + nbr[i];
          ++lnbf[sn][c];
          --lnbn[sn];
          dellist(s,&nblbp[sn]);
          g2 = board[sn];
          if(g2 == NOGROUP)continue;
          if(g2 == g)continue;
          if(dellist(s,&grlbp[g2])){
             grlibs[g2]--;
             }
          addlist(g2,&grnbp[g]);
          addlist(g,&grnbp[g2]);
          } 
       lptr = mvnext[lptr]; 
       }
   }
Exemplo n.º 8
0
Arquivo: g2eye.c Projeto: palmerc/lab
void deadshape(int g,int rn){
   int pointlist,size,count; 
   int ptr,i,j,diffs[5],ldtmp;
   eyeval[rn] = eyepot[rn] = eyemin[rn] = 8;
   size = grsize[g];
   pointlist = EOL;
   for(ptr = grpieces[g]; ptr != -1; ptr = mvnext[ptr])
      addlist(mvs[ptr],&pointlist);

   i = 0;
   for(ptr = pointlist; links[ptr] != EOL; ptr = links[ptr]){
      diffs[i] = list[links[ptr]] - list[ptr];
      ++i;
      }
   killist(&pointlist);
   if(size == 4){
      for(j = 0; j < 3; ++j)
         if(diffs4[0][j] != diffs[j])break;
         else if(j == 2)return;	/* 4 in square */
      for(i = 1; i < 5; ++i)
         for(j = 0; j < 3; ++j)
            if(diffs4[i][j] != diffs[j])break;
            else if(j == 2)return;  /* 4 in pyramid */
      eyeval[rn] = eyemin[rn] = eyepot[rn] = 16; /* 4 in line */
      for(i = 5; i < 7; ++i)
	 for(j = 0; j < 3; ++j)
	    if(diffs4[i][j] != diffs[j])break;
            else if(j == 2)return;  /* 4 in straight line */
      for(ptr = grlbp[g]; ptr != EOL; ptr = links[ptr]){
	      i = fdir[list[ptr]];
	      count = 0;
	      for(ldtmp = ldir[i]; i < ldtmp; ++i)
		      if(board[list[ptr]+nbr[i]] == g)++count;
	      if(count == 2){
		      eyemin[rn] = eyeval[rn] = 8;
		      addlist(list[ptr],&eyevital[rn]);
		      addlist(rn,&eyevitrec[list[ptr]]);
		      return;  /* can make bulky 5 */
		      }
	      }
      return;  
      }
   if(size == 5){
      for(i = 0; i < 9; ++i)
         for(j = 0; j < 4; ++j)
            if(diffs5[i][j] != diffs[j])break;
            else if(j == 3)return;  /* bulky 5 or plus */
      eyeval[rn] = eyemin[rn] = eyepot[rn] = 16;
      return;  /* other 5 shapes */
      }
   for(i = 0; i < 4; ++i)
      for(j = 0; j < 5; ++j)
         if(diffs6[i][j] != diffs[j])break;
         else if(j == 4)return;  /* rabbity 6 */
   eyeval[rn] = eyemin[rn] = eyepot[rn] = 16;
   return;  /* other 6 shapes */
   }
Exemplo n.º 9
0
Arquivo: g28.c Projeto: 8l/csolve
void delconnrec(int i){
	dellist(i,&grcnp[cngr1[i]]);
	dellist(i,&grcnp[cngr2[i]]);
	adflist(i,&cnfreelist);
	if(grldr[NUMGROUPS+i] != EOL)kill_ldrflags(NUMGROUPS+i);
	if(cnprot[i] >= AJI_CONNECT){
		addlist(mvs[grpieces[cngr1[i]]],&charmy);
		addlist(mvs[grpieces[cngr2[i]]],&charmy);
		}
	}
Exemplo n.º 10
0
Arquivo: g2eye.c Projeto: palmerc/lab
void evalmanyeyespots(int rn,int sopen,int c,int numopenspots,int numenemyspots,int ldrno){
	int sn2,eye_pot, count,opp_can_fill,flag,ptr2;

	/* first see what happens if opponent moves in sopen */

        if(numopenspots == 0){
		mvcolor[msptr] = 1-c;
		mvs[msptr] = sopen;
		opp_can_fill = lupdate(msptr);
		ldndate(msptr);
		}
	else opp_can_fill = TRUE;
	if(opp_can_fill){
		addlist(sopen,&eyevital[rn]);
		addlist(rn,&eyevitrec[sopen]);
		}
	/* now see how many eyes we can make */

	mvcolor[msptr] = c;
	mvs[msptr] = sopen;
	flag = lupdate(msptr);
	upldrflags(msptr,ldrno);
        ++msptr;
	eye_pot = 0;
	for(ptr2 = eyeptr[rn]; ptr2 != EOL; ptr2 = links[ptr2]){
	   sn2 = list[ptr2];               
	   count = getcount(sn2,c,rn,FALSE,ldrno);
	   eye_pot += cpot[count];
	   }
	--msptr;
	ldndate(msptr);

	eyepot[rn] = eye_pot;

        if(!opp_can_fill){
		eyeval[rn] = eye_pot;
		eyemin[rn] = eye_pot;
		}
	
	else if(eye_pot >= 16){		/* can make two eyes */
		if(numopenspots > 1 || numenemyspots != 0)
			eyeval[rn] = 0;
		else
			eyeval[rn] = 8;
		if(numopenspots == 0 && numenemyspots == 0)
			eyemin[rn] = eyeval[rn];
		else eyemin[rn] = 0;
	      	}
	else if(ld[sopen] == 6 && eye_pot > 0){	/* enclosed 3 space eye */
		eyeval[rn] = 8;
		eyemin[rn] = 0;
	      	}
	}
Exemplo n.º 11
0
Arquivo: g28.c Projeto: 8l/csolve
void addlkg(int g1,int g2,int s){  /* add a linkage from g1 to g2 at s */
   int i,ptr;
   if(g1 == g2)return;

   for(ptr = grcnp[g1]; ptr != EOL; ptr = links[ptr]){
      i = list[ptr];
      if(cngr1[i] == g1 && cngr2[i] == g2 ||
         cngr1[i] == g2 && cngr2[i] == g1){
         if(addlist(s,&cnllptr[i])){
            ++cnllnum[i];
            if(cnllnum[i] > 1)
               addlist(i,&cnchgd);
            }
         addlist(i,&llbrd[s]);
         return;
         }
      }
   i = gtflist(&cnfreelist);
   addlist(i,&cnchgd);
   addlist(s,&cnllptr[i]);
   addlist(i,&llbrd[s]);
   addlist(i,&grcnp[g1]);
   addlist(i,&grcnp[g2]);
   cngr1[i] = g1;
   cngr2[i] = g2;
   cnllnum[i] = 1;
   cnprot[i] = CANT_CONNECT;
   if(grarmy[g1] == grarmy[g2])cnprot[i] = AJI_CONNECT;
   }
Exemplo n.º 12
0
Arquivo: g28.c Projeto: 8l/csolve
void addconn(int g1,int g2,int s){  /* add a connection from g1 to g2 at s */
   int i,ptr;
   if(g1 == g2)return;

   ptr = grcnp[g1];
   while(ptr != EOL){
      i = list[ptr];
      ptr = links[ptr];
      if(cngr1[i] == g1 && cngr2[i] == g2 ||
         cngr1[i] == g2 && cngr2[i] == g1){
         if(addlist(s,&cnptr[i])){
            ++cncnum[i];
            if(cncnum[i] < 3)
               addlist(i,&cnchgd);
            }
         addlist(i,&cnbrd[s]);
         return;
         }
      }
   i = gtflist(&cnfreelist);

   addlist(i,&cnchgd);
   addlist(s,&cnptr[i]);
   addlist(i,&cnbrd[s]);
   addlist(i,&grcnp[g1]);
   addlist(i,&grcnp[g2]);
   cngr1[i] = g1;
   cngr2[i] = g2;
   cncnum[i] = 1;
   cnprot[i] = CANT_CONNECT;
   if(grarmy[g1] == grarmy[g2]){
      cnprot[i] = AJI_CONNECT;
      }
   }
Exemplo n.º 13
0
Arquivo: ledc.c Projeto: sanikoyes/iup
static void generatename( Telem *e )
{
  static char name[15];
  if (e->name)
  {
    sprintf( name, "named[%d]", nameds++ );
    e->codename = strdup( name );
    addlist( all_named, e );
    addlist( all_late, e );
  }
  else
  {
    e->codename = 0;
  }
}
Exemplo n.º 14
0
/*--------------------------------------------------------------------------
 * txprint when offset is known
 */ 
void txprint(int i,int *TXS, char *name)
{
 int k;
 //char *ttcadl[]={"ZERO","L1h ","L1d ","L2h ","L2d ","L2r ","RoIh","RoId"};
 char *ttcadl[]={"ZERO","L1h","L1d","L2h","L2d","L2r ","RoIh","RoId"};
 char text[256];
 int ttcadd,e,code,data,chck;
 ttcadd=0;
 for(k=0;k<14;k++)ttcadd=ttcadd+(1<<k)*TXS[14-k];
 e=TXS[15];
 code=0;
 for(k=0;k<4;k++)code=code+(1<<k)*TXS[20-k];
 data=0;
 for(k=0;k<12;k++)data=data+(1<<k)*TXS[32-k];
 chck=0;
 for(k=0;k<8;k++)chck=chck+(1<<k)*TXS[39-k];
 if(code > 7){
  printf("txprint: unexpected code 0x%x %s \n",code,name);
  sprintf(text,"Error: unexpected code in ttc:");
  for(k=0;k<40;k++){
    char cc[2]="0";
    if(TXS[k]) cc[0]='1';
    strcat(text,cc);
  }
  dump=addlist(dump,i,text);
  writeLog();
  exit(2);
 }
 // Counting TTC words for L1 and L2 messages
 int TTCLX=1;
 if(code==1) TTCL1=1;
 if(code==3) TTCL2=1;
 if(code==2) {
   TTCL1++;TTCLX=TTCL1;
   if(TTCL1>9){
     printf("Error: # L1 TTC words %i \n",TTCL1);
   }
 }
 if(code==4) {
   TTCL2++;TTCLX=TTCL2;
   if(TTCL2>13){
     printf("Error: # L2 TTC words %i \n",TTCL2);
   }
 }
 //sprintf(text,"%s %s:0x%04x %x 0x%x 0x%03x 0x%02x ",name,ttcadl[code],ttcadd,e,code,data,chck);
 sprintf(text,"%s %s%02i:0x%04x %x 0x%x 0x%03x 0x%02x ",name,ttcadl[code],TTCLX,ttcadd,e,code,data,chck);
 dump=addlist(dump,i-39,text);
}
Exemplo n.º 15
0
Arquivo: g28.c Projeto: 8l/csolve
void realbrklkg(int g1,int g2,int s1,int s2){ /* break link from g1 to g2 (s1 part of g2) at s2 */
/* break it even if other conns */
   int i,j,ptr,ldtmp;

   if(g1 == g2)return;
   i = fdir[s2];	/* see if any g2's next to s2 */
   for(ldtmp = ldir[i]; i < ldtmp; ++i)
      if(board[s2+nbr[i]] == g2){	/* found g2 near. */
         for(j = 0; j < 4; ++j)	/* are any g1's far? */
            if(board[sqrbrd[s2][j]] == g1 &&
               (dstbrd[s2][j] == 2 )){
               return;
               }
         break;
         }
   for(ptr = grcnp[g1]; ptr != EOL; ptr = links[ptr]){
      i = list[ptr];
      if(cngr1[i] == g1 && cngr2[i] == g2 ||
         cngr1[i] == g2 && cngr2[i] == g1){
         if(!dellist(s2,&cnllptr[i])){
            }
         else {
            --cnllnum[i];
             }
         dellist(i,&llbrd[s2]);
         if(cnlknum[i] == 0 && cncnum[i] == 0 && cnllnum[i] == 0){
	    delconnrec(i);
            }
         else if(cnllnum[i] < 3)
               addlist(i,&cnchgd);
         return;
         }
      }
   }
Exemplo n.º 16
0
int main(void){
  char command, buf[40];

  head.next = NULL;

  do{
    printf("comm? a:add p:print q:quit\n");
    fgets(buf, sizeof(buf), stdin);
    sscanf(buf, "%c", &command);

    switch(command){
    case 'a':
      addlist();
      showlist();
      break;
    case 'p':
      showlist();
      break;
    case 'q':
      break;
    default:
      printf("error\n");
      break;
    }
  }while(command != 'q');

  return 0;
}
Exemplo n.º 17
0
int add_user ( struct user_priority * ppri_tbl, char * user, int limit )
{
    if (limit < PRI_MIN || PRI_MAX < limit)
	return 1;
    addlist (&(ppri_tbl->users[limit - PRI_MIN]), user);
    return 0;
}
Exemplo n.º 18
0
ship *new_ship(const ship_type * stype, region * r, const struct locale *lang)
{
    static char buffer[32];
    ship *sh = (ship *)calloc(1, sizeof(ship));
    const char *sname = 0;

    if (!sh) abort();
    assert(stype);
    sh->no = newcontainerid();
    sh->coast = NODIRECTION;
    sh->type = stype;
    sh->region = r;

    if (lang) {
        sname = LOC(lang, stype->_name);
        if (!sname) {
            sname = LOC(lang, parameters[P_SHIP]);
        }
    }
    if (!sname) {
        sname = parameters[P_SHIP];
    }
    assert(sname);
    snprintf(buffer, sizeof(buffer), "%s %s", sname, itoa36(sh->no));
    sh->name = str_strdup(buffer);
    shash(sh);
    if (r) {
        addlist(&r->ships, sh);
    }
    return sh;
}
Exemplo n.º 19
0
Arquivo: ledc.c Projeto: sanikoyes/iup
/* used in y.tab.c */
void named( char* name )
{
  Tname *n = alloc(Tname);
  n->name = name;
  n->used = 0;
  addlist( all_names, n );
}
Exemplo n.º 20
0
int genelif(Error_printer *err, Frag *frag, Node * n, int v)
{
	switch (n->what) {
		case nEMPTY:
			return 0;
		case nIF: {
			int els = genbra(err, frag, n->l, 1);
			int rtval;
			mklooplvl(frag, lvlSCOPE, 0, 0);
			if (v)
				gen(err, frag, n->r);
			else
				genn(err, frag, n->r);
			rmlooplvl(frag, lvlSCOPE, 0, 0);
			emitc(frag, iBRA);
			rtval = emitn(frag, 0);
			setlist(frag, els, frag->code);
			return rtval;
		} case nSEMI: {
			if (n->r->what == nELSE && n->r->r->what == nIF) {
				int z = genelif(err, frag, n->l, v);
				if (!z)
					error_2(err, "\"%s\" %d: else without if", n->r->loc->name, n->r->loc->line);
				else
					addlist(frag, z, genelif(err, frag, n->r->r, v));
				return z;
			}
		}
	}
	if (v)
		gen(err, frag, n);
	else
		genn(err, frag, n);
	return 0;
}
Exemplo n.º 21
0
static void recruit_dracoids(unit * dragon, int size)
{
    faction *f = dragon->faction;
    region *r = dragon->region;
    const struct item *weapon = NULL;
    order *new_order = NULL;
    unit *un = create_unit(r, f, size, get_race(RC_DRACOID), 0, NULL, NULL);

    fset(un, UFL_ISNEW | UFL_MOVED);

    name_unit(un);
    change_money(dragon, -un->number * 50);
    equip_unit(un, get_equipment("recruited_dracoid"));

    setstatus(un, ST_FIGHT);
    for (weapon = un->items; weapon; weapon = weapon->next) {
        const weapon_type *wtype = weapon->type->rtype->wtype;
        if (wtype && (wtype->flags & WTF_MISSILE)) {
            setstatus(un, ST_BEHIND);
        }
        new_order = create_order(K_STUDY, f->locale, "'%s'",
            skillname(weapon->type->rtype->wtype->skill, f->locale));
    }

    if (new_order != NULL) {
        addlist(&un->orders, new_order);
    }
}
Exemplo n.º 22
0
static void
dopragma(State *s, char *p)
{
	int l;
	char *q, *t, *path, *m;
	static char *lib = "lib";

	l = strlen(lib);
	if(strncmp(p, "lib", l) != 0)
		return;
	p += l;

	while(isspace(*p))
		p++;
	if(*p++ != '"')
		cpperr(s, "#pragma lib - \" not found\n");
	if((q = strrchr(p, '"')) == nil)
		cpperr(s, "#pragma lib - \" unmatched\n");
	*q = 0;

	path = expand(p);
	if(addlist(&Pragmalib, path) == 1)
		parse_ar(path);
	free(path);
}
Exemplo n.º 23
0
void move_unit(unit * u, region * r, unit ** ulist)
{
  assert(u && r);

  assert(u->faction || !"this unit is dead");
  if (u->region == r)
    return;
  if (!ulist)
    ulist = (&r->units);
  if (u->region) {
    setguard(u, GUARD_NONE);
    fset(u, UFL_MOVED);
    if (u->ship || u->building) {
      /* can_leave must be checked in travel_i */
#ifndef NDEBUG
      bool result = leave(u, false);
      assert(result);
#else
      leave(u, false);
#endif
    }
    translist(&u->region->units, ulist, u);
  } else {
    addlist(ulist, u);
  }

#ifdef SMART_INTERVALS
  update_interval(u->faction, r);
#endif
  u->region = r;
}
Exemplo n.º 24
0
Arquivo: g28.c Projeto: 8l/csolve
void brkconns(int s){   /* break all connections through s */
   int i,ptr;

   for(ptr = cnbrd[s]; ptr != EOL; ptr = links[ptr]){
      i = list[ptr];
      dellist(s,&cnptr[i]);
      cncnum[i]--;
      if(cncnum[i] == 0 && cnlknum[i] == 0 && cnllnum[i] == 0){
	       delconnrec(i);
	       }
      else if(cncnum[i] == 1)
         addlist(i,&cnchgd);
      }
   for(ptr = lkbrd[s]; ptr != EOL; ptr = links[ptr]){
      i = list[ptr];
      dellist(s,&cnlkptr[i]);
      cnlknum[i]--;
      if(cncnum[i] == 0 && cnlknum[i] == 0 && cnllnum[i] == 0){
	       delconnrec(i);
	       }
      }
   for(ptr = llbrd[s]; ptr != EOL; ptr = links[ptr]){
      i = list[ptr];
      dellist(s,&cnllptr[i]);
      cnllnum[i]--;
      if(cncnum[i] == 0 && cnlknum[i] == 0 && cnllnum[i] == 0){

	       delconnrec(i);
	       }
      }
   killist(&llbrd[s]);
   killist(&cnbrd[s]);
   killist(&lkbrd[s]);

   }
Exemplo n.º 25
0
/*---------------------------------------------------------------------------------*/
void lxprint(int i,int rc,int NLxdat,int *LxDATA,char *name)
{
 int k,j,offset=0;
 int tcl1,tcl2,tcl3;
 char mess[38],line[256]=" ",www[256];
 switch(rc){
  case(0):
   if(NLxdat == NL2dat) offset=1; 
   for(k=0;k<38;k++)mess[k]=0;
   //for(k=offset;k<NLxdat+offset;k++){
   for(k=offset;k<NLxdat;k++){
    j=k-offset;
    //printf("%i %i %i \n",j,j/4,k);
    mess[j/4]=mess[j/4]+(1 << (3-(j%4)))*LxDATA[k];
   }
   strcpy(line,name);
   strcat(line,":"); 
   for(k=0;k<(NLxdat/4)+1-offset;k++){
     sprintf(www,"%1x",mess[k]);
     strcat(line,www);
     if( ((k%3) == 2) && (k != NLxdat/4-offset)) strcat(line,".");
   }
   if(offset){
     //printf("k= %i \n",k);
     sprintf(www,"%1x",mess[k]);
     strcat(line,www);
   }
   /* Trigger classes */
    tcl1=0;
    for(k=0;k<32;k++) tcl1=tcl1+(1<<k)*LxDATA[NLxdat-k-1];
    tcl2=0;
    for(k=32;k<64;k++) tcl2=tcl2+(1<<(k-32))*LxDATA[NLxdat-k-1];
    tcl3=0;
    for(k=64;k<100;k++) tcl3=tcl3+(1<<(k-64))*LxDATA[NLxdat-k-1];
    //sprintf(www," TrCl: 0x%4x%8x%16x ",tcl2,tcl1,tcl3); //sprintf(www," TrCl: 0x%+04x%+08x ",tcl2,tcl1);
    sprintf(www," TrCl: 0x%8x%8x%8x ",tcl1,tcl2,tcl3);
    strcat(line,www);
                                
   dump=addlist(dump,i-NLxdat+1,line);
   break;
  case(1):
   sprintf(line,"Error: %s arrives before strobe.",name);
   dump=addlist(dump,i,line);  
   break;
 } 
}
Exemplo n.º 26
0
Arquivo: ledc.c Projeto: sanikoyes/iup
void decl( Telem* e )
{
  if (!e->name) warning("%s declared without a name", e->elemname );
  else
  {
    if (nerrors || nocode) return;
    if (e->elemidx == IMAGE || e->elemidx == IMAGERGB || e->elemidx == IMAGERGBA)
    {
      code_image( e );
      addlist( all_images, e );
    }
    else
    {
      addlist( all_elems, e );
    }
  }
}
Exemplo n.º 27
0
faction *gm_addfaction(const char *email, plane * p, region * r)
{
  attrib *a;
  unit *u;
  faction *f = calloc(1, sizeof(faction));

  assert(p != NULL);

  /* GM faction */
  a_add(&f->attribs, make_key(atoi36("quest")));
  f->banner = _strdup("quest faction");
  f->name = _strdup("quest faction");
  f->passw = _strdup(itoa36(rng_int()));
  if (set_email(&f->email, email) != 0) {
    log_error("Invalid email address for faction %s: %s\n", itoa36(f->no), email);
  }
  f->race = new_race[RC_TEMPLATE];
  f->age = 0;
  f->lastorders = turn;
  f->alive = true;
  f->locale = default_locale;
  f->options =
    want(O_COMPRESS) | want(O_REPORT) | want(O_COMPUTER) | want(O_ADRESSEN);
  {
    faction *xist;
    int id = atoi36("gm00") - 1;
    do {
      xist = findfaction(++id);
    } while (xist);

    f->no = id;
    addlist(&factions, f);
    fhash(f);
  }

  /* generic permissions */
  a = a_add(&f->attribs, a_new(&at_permissions));
  if (a) {
    attrib *ap = (attrib *) a->data.v;
    const char *keys[] =
      { "gmterf", "gmtele", "gmgive", "gmskil", "gmtake", "gmmsgr", "gmmsgu",
        "gmgate", 0 };
    const char **key_p = keys;
    while (*key_p) {
      add_key(&ap, atoi36(*key_p));
      ++key_p;
    }
    a_add(&ap, make_atgmcreate(resource2item(r_silver)));

    a->data.v = ap;
  }

  /* one initial unit */
  u = create_unit(r, f, 1, new_race[RC_TEMPLATE], 1, "quest master", NULL);
  u->irace = new_race[RC_GNOME];

  return f;
}
Exemplo n.º 28
0
Arquivo: g22.c Projeto: 8l/csolve
int lsplit(int ptr,int j) {
   int lptr,lptr2,ptr2,tlist,g2,gret,c; 
   tlist = EOL; 
   c = grcolor[list[ptr]];
   ptr2 = ptr;
   while(ptr2 != EOL){
      g2 = list[ptr2];
      if(grcolor[g2] != c)break;
      adflist(list[ptr2],&tlist); 
      ptr2 = links[ptr2];
      } 
   ptr = tlist; 
   gret = list[tlist];
   killist(&grlbp[j]); 
   lptr = grnbp[j];
   while(lptr != EOL){
      dellist(j,&grnbp[list[lptr]]);
      lptr = links[lptr];
      }
   if(grnbp[j] != EOL)
	   killist(&grnbp[j]);
  
   --maxgr;              /* group j is gone! */
  
   lptr = mvnext[grpieces[j]];   /* unlink pieces list */
   ptr2 = ptr;
   g2 = list[ptr2];
   ptr2 = links[ptr2];
   lptr2 = grpieces[list[ptr2]];
   while(lptr != -1){
      board[mvs[lptr]] = g2;
      if(mvnext[lptr] == lptr2){
         mvnext[lptr] = -1;
         lptr = lptr2;
         g2 = list[ptr2]; 
         ptr2 = links[ptr2]; 
         if(ptr2 == EOL)
            lptr2 = -2; 
         else 
            lptr2 = grpieces[list[ptr2]]; 
         }
      else lptr = mvnext[lptr]; 
      } 
  
  
   ptr2 = ptr;
   while(ptr2 != EOL){   /* fix neighbors */
      g2 = list[ptr2];
      lptr = grnbp[g2]; 
      ptr2 = links[ptr2];
      while(lptr != EOL){ 
         addlist(g2,&grnbp[list[lptr]]);
         lptr = links[lptr];
         }
      }
   killist(&tlist);
   return(gret);
   }
Exemplo n.º 29
0
Arquivo: aarec.c Projeto: Ortuna/aalib
void aa_recommendlow(aa_linkedlist ** l, __AA_CONST char *name)
{
    aa_linkedlist *o = aa_find(*l, name);
    if (o == NULL) {
	aa_linkedlist *m = (aa_linkedlist *) malloc(sizeof(*m));
	m->text = strdup(name);
	addlist(*l, m);
    }
}
Exemplo n.º 30
0
Arquivo: g22.c Projeto: 8l/csolve
void upldrflags(int upptr,int ldrno){
	int s,sn,i,ldtmp,g2;
	s = mvs[upptr];
	if(s == PASS)return;

	if(addlist(ldrno,&ldrflag[s])){
       		adflist(s,&grldr[ldrno]);
       		}
	i = fdir[s];
	for(ldtmp = ldir[i]; i < ldtmp; ++i){
		sn = s + nbr[i];
		g2 = board[sn];
		if(g2 != NOGROUP){
			if(addlist(ldrno,&ldrflag[mvs[grpieces[g2]]]))
			   adflist(mvs[grpieces[g2]],&grldr[ldrno]);
			}
		}
	}