view dmd/macro.h @ 486:a34078905d01

Added pragma(llvmdc, "string") for misc per-module compiler configuration, currently "string" can only be "verbose" which forces -vv for module it appears in. Reimplemented support for nested functions/class using a new approach. Added error on taking address of intrinsic. Fixed problems with the ->syntaxCopy of TypeFunction delegate exp. Removed DtoDType and replaced all uses with ->toBasetype() instead. Removed unused inplace stuff. Fixed a bunch of issues in the runtime unittests, not complete yet. Added mini tests.
author Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
date Sun, 10 Aug 2008 08:37:38 +0200
parents c53b6e3fe49a
children
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
// http://www.digitalmars.com
// 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);

  public:
    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);
};

#endif