| struct _obstack_chunk |
| { |
| char *limit; |
| struct _obstack_chunk *prev; |
| char contents[4]; |
| }; |
| |
| struct obstack |
| { |
| long chunk_size; |
| struct _obstack_chunk* chunk; |
| char *object_base; |
| char *next_free; |
| char *chunk_limit; |
| int temp; |
| int alignment_mask; |
| struct _obstack_chunk *(*chunkfun) (); |
| void (*freefun) (); |
| }; |
| |
| struct fooalign {char x; double d;}; |
| union fooround {long x; double d;}; |
| |
| void |
| _obstack_begin (h, size, alignment, chunkfun, freefun) |
| struct obstack *h; |
| int size; |
| int alignment; |
| void * (*chunkfun) (); |
| void (*freefun) (); |
| { |
| register struct _obstack_chunk* chunk; |
| |
| if (alignment == 0) |
| alignment = ((char *)&((struct fooalign *) 0)->d - (char *)0); |
| if (size == 0) |
| { |
| int extra = 4; |
| if (extra < (sizeof (union fooround))) |
| extra = (sizeof (union fooround)); |
| } |
| } |