view dmd/macro.h @ 884:a166ba5bdf2d

Automated merge with
author Christian Kamm <kamm incasoftware de>
date Mon, 12 Jan 2009 07:51:39 +0100
parents c53b6e3fe49a
line wrap: on
line source

// Compiler implementation of the D programming language
// Copyright (c) 1999-2006 by Digital Mars
// All Rights Reserved
// written by Walter Bright
// License for redistribution is by either the Artistic License
// in artistic.txt, or the GNU General Public License in gnu.txt.
// See the included readme.txt for details.

#ifndef DMD_MACRO_H
#define DMD_MACRO_H 1

#include <stdio.h>
#include <string.h>
#include <time.h>
#include <ctype.h>

#include "root.h"

class Macro
    Macro *next;		// next in list

    unsigned char *name;	// macro name
    size_t namelen;		// length of macro name

    unsigned char *text;	// macro replacement text
    size_t textlen;		// length of replacement text

    int inuse;			// macro is in use (don't expand)

    Macro(unsigned char *name, size_t namelen, unsigned char *text, size_t textlen);
    Macro *search(unsigned char *name, size_t namelen);

    static Macro *define(Macro **ptable, unsigned char *name, size_t namelen, unsigned char *text, size_t textlen);

    void expand(OutBuffer *buf, unsigned start, unsigned *pend,
	unsigned char *arg, unsigned arglen);