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.ctfeexpr
Compiler implementation of the
D programming language.
Authors:
License:
Source ctfeexpr.d
Documentation https://dlang.org/phobos/dmd_ctfeexpr.html
- struct
CtfeStatus
; - Global status of the CTFE engine. Mostly used for performance diagnostics
- class
ClassReferenceExp
: dmd.expression.Expression; - A reference to a class, or an interface. We need this when we point to a base class (we must record what the type is).
- pure int
findFieldIndexByName
(const StructDeclarationsd
, const VarDeclarationv
); - Same as getFieldIndex, but checks for a direct match with the VarDeclarationReturns:index of the field, or -1 if not found
- class
ThrownExceptionExp
: dmd.expression.Expression; - Fake class which holds the thrown exception. Used for implementing exception handling.
- class
CTFEExp
: dmd.expression.Expression; - This type is only used by the interpreter.
- bool
needToCopyLiteral
(const Expressionexpr
); - Aggregate literals (AA/string/array/struct)
- Expression
resolveSlice
(Expressione
, UnionExp*pue
= null); - If e is a SliceExp, constant fold it.Parameters:
Expression e
expression to resolve UnionExp* pue
if not null, store resulting expression here Returns:resulting expression - ArrayLiteralExp
createBlockDuplicatedArrayLiteral
(UnionExp*pue
, ref const Locloc
, Typetype
, Expressionelem
, size_tdim
); - Helper for NewExp Create an array literal consisting of 'elem' duplicated 'dim' times.Parameters:
UnionExp* pue
where to store result Loc loc
source location where the interpretation occurs Type type
target type of the result Expression elem
the source of array element, it will be owned by the result size_t dim
element number of the result Returns:Constructed ArrayLiteralExp - StringExp
createBlockDuplicatedStringLiteral
(UnionExp*pue
, ref const Locloc
, Typetype
, dcharvalue
, size_tdim
, ubytesz
); - Helper for NewExp Create a string literal consisting of 'value' duplicated 'dim' times.
- bool
isTypeInfo_Class
(const Typetype
); - TypeInfo operations
- bool
isPointer
(Typet
); - Pointer operations
- bool
pointToSameMemoryBlock
(Expressionagg1
, Expressionagg2
); - Return true if agg1 and agg2 are pointers to the same memory block
- bool
isCtfeComparable
(Expressione
); - Constant folding, with support for CTFE Return true if non-pointer expression e can be compared with >,is, ==, etc, using ctfeCmp, ctfeEqual, ctfeIdentity
- int
specificCmp
(TOKop
, intrawCmp
); - Returns cmp OP 0; where OP is ==, !=, <, >=, etc. Result is 0 or 1
- int
intUnsignedCmp
(TOKop
, dinteger_tn1
, dinteger_tn2
); - Returns e1 OP e2; where OP is ==, !=, <, >=, etc. Result is 0 or 1
- int
intSignedCmp
(TOKop
, sinteger_tn1
, sinteger_tn2
); - Returns e1 OP e2; where OP is ==, !=, <, >=, etc. Result is 0 or 1
- int
realCmp
(TOKop
, real_tr1
, real_tr2
); - Returns e1 OP e2; where OP is ==, !=, <, >=, etc. Result is 0 or 1
- int
ctfeEqual
(ref const Locloc
, TOKop
, Expressione1
, Expressione2
); - Evaluate ==, !=. Resolves slices before comparing. Returns 0 or 1
- int
ctfeIdentity
(ref const Locloc
, TOKop
, Expressione1
, Expressione2
); - Evaluate is, !is. Resolves slices before comparing. Returns 0 or 1
- int
ctfeCmp
(ref const Locloc
, TOKop
, Expressione1
, Expressione2
); - Evaluate >,<=, etc. Resolves slices before comparing. Returns 0 or 1
- void
assignInPlace
(Expressiondest
, Expressionsrc
); - Assignment helper functions
- UnionExp
changeArrayLiteralLength
(ref const Locloc
, TypeArrayarrayType
, Expressionoldval
, size_toldlen
, size_tnewlen
); - Given array literal oldval of type ArrayLiteralExp or StringExp, of length oldlen, change its length to newlen. If the newlen is longer than oldlen, all new elements will be set to the default initializer for the element type.
- bool
isCtfeValueValid
(Expressionnewval
); - CTFE Sanity Checks
- UnionExp
voidInitLiteral
(Typet
, VarDeclarationvar
); - Void initialization
Copyright © 1999-2022 by the D Language Foundation | Page generated by
Ddoc on (no date time)