Report a bug
If you spot a problem with this page, click here to create a Bugzilla issue.
Improve this page
Quickly fork, edit online, and submit a pull request for this page.
Requires a signed-in GitHub account. This works well for small changes.
If you'd like to make larger changes you may want to consider using
a local clone.
dmd.importc
Contains semantic routines specific to ImportC
Specification C11
Authors:
License:
Source importc.d
Documentation https://dlang.org/phobos/dmd_importc.html
- Type
cAdjustParamType(Typet, Scope*sc); - C11 does not allow array or function parameters. Hence, adjust those types per C11 6.7.6.3 rules.Parameters:
Type tparameter type to adjust Scope* sccontext Returns:adjusted type - Expression
arrayFuncConv(Expressione, Scope*sc); - C11 6.3.2.1-3 Convert expression that is an array of type to a pointer to type. C11 6.3.2.1-4 Convert expression that is a function to a pointer to a function.Parameters:
Expression eImportC expression to possibly convert Scope* sccontext Returns:converted expression - Expression
fieldLookup(Expressione, Scope*sc, Identifierid, boolarrow); - Run semantic on
e. Expressioneevaluates to an instance of a struct. Look up ident as a field of that struct.Parameters:Expression eevaluates to an instance of a struct Scope* sccontext Identifier ididentifier of a field in that struct bool arrow-> was used Returns:if successfule.ident if not then ErrorExp and message is printed - Expression
carraySemantic(ArrayExpae, Scope*sc); - C11 6.5.2.1-2 Apply C semantics to E[I] expression. E1[E2] is lowered to *(E1 + E2)Parameters:
ArrayExp aeArrayExp to run semantics on Scope* sccontext Returns:Expression if this was a C expression with completed semantic, null if not - void
addDefaultCInitializer(VarDeclarationdsym); - Determine default initializer for const global symbol.
- Expression
castCallAmbiguity(Expressione, Scope*sc); - Resolve cast/call grammar ambiguity.Parameters:
Expression eexpression that might be a cast, might be a call Scope* sccontext Returns:null means leave as is, !=null means rewritten AST - bool
cFuncEquivalence(TypeFunctiontf1, TypeFunctiontf2); - Implement the C11 notion of function equivalence, which allows prototyped functions to match K+R functions, even though they are different.Parameters:
TypeFunction tf1type of first function TypeFunction tf2type of second function Returns:true if C11 considers them equivalent - bool
cTypeEquivalence(Typet1, Typet2); - Types haven't been merged yet, because we haven't done semantic() yet. But we still need to see if t1 and t2 are the same type.Parameters:
Type t1first type Type t2second type Returns:true if they are equivalent types
Copyright © 1999-2024 by the D Language Foundation | Page generated by
Ddoc on (no date time)