Main Page | Class Hierarchy | Alphabetical List | Data Structures | Directories | File List | Data Fields | Globals

hideset.c File Reference

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include "cpp.h"

Include dependency graph for hideset.c:

Include dependency graph

Go to the source code of this file.

Defines

#define HSSIZ   32

Typedefs

typedef Nlist ** Hideset

Functions

int checkhideset (int hs, Nlist *np)
void iniths (void)
int inserths (Hideset, Hideset, Nlist *)
int newhideset (int hs, Nlist *np)
void prhideset (int hs)
int unionhideset (int hs1, int hs2)

Variables

Hidesethidesets
int maxhidesets = 3
int nhidesets = 0


Define Documentation

#define HSSIZ   32
 

Definition at line 12 of file hideset.c.

Referenced by newhideset().


Typedef Documentation

typedef Nlist** Hideset
 

Definition at line 13 of file hideset.c.

Referenced by checkhideset(), iniths(), inserths(), newhideset(), prhideset(), and unionhideset().


Function Documentation

int checkhideset int  hs,
Nlist np
 

Definition at line 23 of file hideset.c.

References abort(), Hideset, hidesets, and Nlist.

Referenced by expandrow().

00024 {
00025     Hideset hsp;
00026 
00027     if (hs>=nhidesets)
00028         abort();
00029     for (hsp = hidesets[hs]; *hsp; hsp++) {
00030         if (*hsp == np)
00031             return 1;
00032     }
00033     return 0;
00034 }

Here is the call graph for this function:

void iniths void   ) 
 

Definition at line 95 of file hideset.c.

References domalloc(), Hideset, hidesets, maxhidesets, and nhidesets.

Referenced by main().

00096 {
00097     hidesets = (Hideset *)domalloc(maxhidesets*sizeof(Hideset *));
00098     hidesets[0] = (Hideset)domalloc(sizeof(Hideset));
00099     *hidesets[0] = NULL;
00100     nhidesets++;
00101 }

Here is the call graph for this function:

int inserths Hideset  ,
Hideset  ,
Nlist
 

Definition at line 67 of file hideset.c.

References Hideset, and Nlist.

Referenced by newhideset().

00068 {
00069     Hideset odhs = dhs;
00070 
00071     while (*shs && *shs < np)
00072         *dhs++ = *shs++;
00073     if (*shs != np)
00074         *dhs++ = np;
00075     do {
00076         *dhs++ = *shs;
00077     } while (*shs++);
00078     return dhs - odhs;
00079 }

int newhideset int  hs,
Nlist np
 

Definition at line 40 of file hideset.c.

References domalloc(), error(), FATAL, Hideset, hidesets, HSSIZ, i, inserths(), maxhidesets, memmove(), nhidesets, Nlist, np, and realloc().

Referenced by expand(), and unionhideset().

00041 {
00042     int i, len;
00043     Nlist *nhs[HSSIZ+3];
00044     Hideset hs1, hs2;
00045 
00046     len = inserths(nhs, hidesets[hs], np);
00047     for (i=0; i<nhidesets; i++) {
00048         for (hs1=nhs, hs2=hidesets[i]; *hs1==*hs2; hs1++, hs2++)
00049             if (*hs1 == NULL)
00050                 return i;
00051     }
00052     if (len>=HSSIZ)
00053         return hs;
00054     if (nhidesets >= maxhidesets) {
00055         maxhidesets = 3*maxhidesets/2+1;
00056         hidesets = (Hideset *)realloc(hidesets, (sizeof (Hideset *))*maxhidesets);
00057         if (hidesets == NULL)
00058             error(FATAL, "Out of memory from realloc");
00059     }
00060     hs1 = (Hideset)domalloc(len*sizeof(Hideset));
00061     memmove(hs1, nhs, len*sizeof(Hideset));
00062     hidesets[nhidesets] = hs1;
00063     return nhidesets++;
00064 }

Here is the call graph for this function:

void prhideset int  hs  ) 
 

Definition at line 104 of file hideset.c.

References fprintf(), Hideset, hidesets, np, and stderr.

Referenced by peektokens().

00105 {
00106     Hideset np;
00107 
00108     for (np = hidesets[hs]; *np; np++) {
00109         fprintf(stderr, (char*)(*np)->name, (*np)->len);
00110         fprintf(stderr, " ");
00111     }
00112 }

Here is the call graph for this function:

int unionhideset int  hs1,
int  hs2
 

Definition at line 85 of file hideset.c.

References Hideset, hidesets, and newhideset().

Referenced by expand().

00086 {
00087     Hideset hp;
00088 
00089     for (hp = hidesets[hs2]; *hp; hp++)
00090         hs1 = newhideset(hs1, *hp);
00091     return hs1;
00092 }

Here is the call graph for this function:


Variable Documentation

Hideset* hidesets
 

Definition at line 14 of file hideset.c.

Referenced by checkhideset(), iniths(), newhideset(), prhideset(), and unionhideset().

int maxhidesets = 3
 

Definition at line 16 of file hideset.c.

Referenced by iniths(), and newhideset().

int nhidesets = 0
 

Definition at line 15 of file hideset.c.

Referenced by iniths(), and newhideset().


Generated on Thu Aug 25 15:47:34 2005 for Quake III Arena by  doxygen 1.3.9.1