mirror of
https://github.com/ldc-developers/ldc.git
synced 2025-05-10 21:06:33 +03:00

* Added #if IN_DMD versioning around DMD backend specific code in the D1 frontend, D2 is currently broken. * All part of a greater cleanup scheme.
90 lines
2.1 KiB
C
90 lines
2.1 KiB
C
|
|
// Compiler implementation of the D programming language
|
|
// Copyright (c) 1999-2008 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_ENUM_H
|
|
#define DMD_ENUM_H
|
|
|
|
#ifdef __DMC__
|
|
#pragma once
|
|
#endif /* __DMC__ */
|
|
|
|
#include "root.h"
|
|
#include "dsymbol.h"
|
|
|
|
struct Identifier;
|
|
struct Type;
|
|
struct Expression;
|
|
#ifdef _DH
|
|
struct HdrGenState;
|
|
#endif
|
|
|
|
|
|
struct EnumDeclaration : ScopeDsymbol
|
|
{
|
|
Type *type; // the TypeEnum
|
|
Type *memtype; // type of the members
|
|
|
|
#if DMDV1
|
|
integer_t maxval;
|
|
integer_t minval;
|
|
integer_t defaultval; // default initializer
|
|
#else
|
|
Expression *maxval;
|
|
Expression *minval;
|
|
Expression *defaultval; // default initializer
|
|
|
|
Scope *scope; // !=NULL means context to use
|
|
#endif
|
|
int isdeprecated;
|
|
|
|
EnumDeclaration(Loc loc, Identifier *id, Type *memtype);
|
|
Dsymbol *syntaxCopy(Dsymbol *s);
|
|
void semantic(Scope *sc);
|
|
int oneMember(Dsymbol **ps);
|
|
void toCBuffer(OutBuffer *buf, HdrGenState *hgs);
|
|
Type *getType();
|
|
const char *kind();
|
|
#if DMDV2
|
|
Dsymbol *search(Loc, Identifier *ident, int flags);
|
|
#endif
|
|
int isDeprecated(); // is Dsymbol deprecated?
|
|
|
|
void emitComment(Scope *sc);
|
|
void toDocBuffer(OutBuffer *buf);
|
|
|
|
EnumDeclaration *isEnumDeclaration() { return this; }
|
|
|
|
void toObjFile(int multiobj); // compile to .obj file
|
|
void toDebug();
|
|
int cvMember(unsigned char *p);
|
|
|
|
#if IN_DMD
|
|
Symbol *sinit;
|
|
Symbol *toInitializer();
|
|
#endif
|
|
};
|
|
|
|
|
|
struct EnumMember : Dsymbol
|
|
{
|
|
Expression *value;
|
|
|
|
EnumMember(Loc loc, Identifier *id, Expression *value);
|
|
Dsymbol *syntaxCopy(Dsymbol *s);
|
|
void toCBuffer(OutBuffer *buf, HdrGenState *hgs);
|
|
const char *kind();
|
|
|
|
void emitComment(Scope *sc);
|
|
void toDocBuffer(OutBuffer *buf);
|
|
|
|
EnumMember *isEnumMember() { return this; }
|
|
};
|
|
|
|
#endif /* DMD_ENUM_H */
|