//===-- gen/nested.h - Nested context handling ------------------*- C++ -*-===// // // LDC – the LLVM D compiler // // This file is distributed under the BSD-style LDC license. See the LICENSE // file for details. // //===----------------------------------------------------------------------===// // // Functions for creating nested contexts for nested D types/functions and // extracting the values from them. // //===----------------------------------------------------------------------===// #ifndef LDC_GEN_NESTED_H #define LDC_GEN_NESTED_H #include "declaration.h" #include "mtype.h" #include "gen/dvalue.h" #include "gen/llvm.h" /////////////////////////////////////////////////////////// // Nested variable and context helpers /////////////////////////////////////////////////////////// /// Creates the context value for a nested function. void DtoCreateNestedContext(FuncDeclaration* fd); /// Resolves the nested context for classes and structs with arbitrary nesting. void DtoResolveNestedContext(Loc& loc, AggregateDeclaration *decl, LLValue *value); /// Gets the context value for a call to a nested function or creating a nested /// class or struct with arbitrary nesting. llvm::Value* DtoNestedContext(Loc& loc, Dsymbol* sym); /// Gets the DValue of a nested variable with arbitrary nesting. DValue* DtoNestedVariable(Loc& loc, Type* astype, VarDeclaration* vd, bool byref = false); #endif