blob: 9335b2ce724bf83e8f8715975be0c5c1fa254bc9 [file] [log] [blame]
/* Compiler implementation of the D programming language
* Copyright (C) 1999-2019 by The D Language Foundation, All Rights Reserved
* written by Dave Fladebo
* http://www.digitalmars.com
* Distributed under the Boost Software License, Version 1.0.
* http://www.boost.org/LICENSE_1_0.txt
* https://github.com/dlang/dmd/blob/master/src/dmd/hdrgen.h
*/
#pragma once
#include "root/dsystem.h" // memset()
#include "dsymbol.h"
void genhdrfile(Module *m);
struct HdrGenState
{
bool hdrgen; // true if generating header file
bool ddoc; // true if generating Ddoc file
bool fullDump; // true if generating a full AST dump file
bool fullQual; // fully qualify types when printing
int tpltMember;
int autoMember;
int forStmtInit;
HdrGenState() { memset(this, 0, sizeof(HdrGenState)); }
};
void toCBuffer(Statement *s, OutBuffer *buf, HdrGenState *hgs);
void toCBuffer(Type *t, OutBuffer *buf, Identifier *ident, HdrGenState *hgs);
void toCBuffer(Dsymbol *s, OutBuffer *buf, HdrGenState *hgs);
void toCBuffer(Initializer *iz, OutBuffer *buf, HdrGenState *hgs);
void toCBuffer(Expression *e, OutBuffer *buf, HdrGenState *hgs);
void toCBuffer(TemplateParameter *tp, OutBuffer *buf, HdrGenState *hgs);
void toCBufferInstance(TemplateInstance *ti, OutBuffer *buf, bool qualifyTypes = false);
void functionToBufferFull(TypeFunction *tf, OutBuffer *buf, Identifier *ident, HdrGenState* hgs, TemplateDeclaration *td);
void functionToBufferWithIdent(TypeFunction *t, OutBuffer *buf, const char *ident);
void argExpTypesToCBuffer(OutBuffer *buf, Expressions *arguments);
void arrayObjectsToBuffer(OutBuffer *buf, Objects *objects);
void moduleToBuffer(OutBuffer *buf, Module *m);
const char *parametersTypeToChars(Parameters *parameters, int varargs);
bool stcToBuffer(OutBuffer *buf, StorageClass stc);
const char *stcToChars(StorageClass& stc);
const char *linkageToChars(LINK linkage);