dmd.aggregate
    Defines a Dsymbol representing an aggregate, which is a struct, union or class.
  
Specification: Structs, Unions, Class.
License
Source: aggregate.d
Documentation: https://dlang.org/phobos/dmd_aggregate.html
- 
  DeclarationenumClassKind: ubyte;The ClassKindenum is used in AggregateDeclaration AST nodes to specify the linkage type of the struct/class/interface or if it is an anonymous class. If the class is anonymous it is also considered to be a D class.- 
  Declarationdthe aggregate is a d(efault) class
- 
  Declarationcppthe aggregate is a C++ struct/class/interface 
- 
  Declarationobjcthe aggregate is an Objective-C class/interface 
- 
  Declarationcthe aggregate is a C struct 
 
- 
  
- 
  Declarationconst(char)*toChars(ClassKindc);Give a nice string for a class kind for error messages ParametersClassKindcclass kind Return Value0-terminated string for c
- 
  DeclarationstructMangleOverride;If an aggregate has a pargma(mangle, ...) this holds the information to mangle. 
- 
  Declarationabstract classAggregateDeclaration: dmd.dsymbol.ScopeDsymbol;Abstract aggregate as a common ancestor for Class- and StructDeclaration. - 
  DeclarationTypetype;
- 
  DeclarationStorageClassstorage_class;
- 
  Declarationuintstructsize;size of struct 
- 
  Declarationuintalignsize;size of struct for alignment purposes 
- 
  DeclarationVarDeclarationsfields;VarDeclaration fields
- 
  DeclarationDsymboldeferred;any deferredsemantic2() or semantic3() symbol
- 
  DeclarationClassKindclassKind;specifies whether this is a D, C++, Objective-C or anonymous struct/class/interface 
- 
  DeclarationCPPMANGLEcppmangle;Specify whether to mangle the aggregate as a classor astructThis information is used by the MSVC mangler Only valid for class and struct. TODO: Merge with ClassKind ?
- 
  DeclarationMangleOverride*pMangleOverride;overridden symbol with pragma(mangle, "...") if not null
- 
  DeclarationDsymbolenclosing;!= nullif is nested pointing to the dsymbol that directlyenclosingit.- The function that enclosingit (nested struct and class)
- The class that enclosingit (nested class only)
- If enclosingaggregate is template, itsenclosingdsymbol.
 DiscussionSee AggregateDeclaraton::makeNested for the details. 
- The function that 
- 
  DeclarationVarDeclarationvthis;'this' parameter if this aggregate is nested 
- 
  DeclarationVarDeclarationvthis2;'this' parameter if this aggregate is a template and is nested 
- 
  DeclarationFuncDeclarationsinvs;Array of invariants 
- 
  DeclarationFuncDeclarationinv;Merged invariant calling all members of invs 
- 
  DeclarationDsymbolctor;CtorDeclaration or TemplateDeclaration 
- 
  DeclarationCtorDeclarationdefaultCtor;default constructor - should have no arguments, because it would be stored in TypeInfo_Class.defaultConstructor 
- 
  DeclarationAliasThisaliasthis;forward unresolved lookups to aliasthis
- 
  DeclarationDtorDeclarationsuserDtors;user-defined destructors ( ~this()) - mixins can yield multiple ones
- 
  DeclarationDtorDeclarationaggrDtor;aggregate destructor calling userDtors and fieldDtor (and base class aggregate dtor for C++ classes) 
- 
  DeclarationDtorDeclarationdtor;the aggregate destructor exposed as __xdtoralias
- 
  DeclarationDtorDeclarationtidtor;(same as aggrDtor, except for C++ classes with virtual dtor on Windows) Discussionaggregate destructor used in TypeInfo (must have extern(D) ABI) 
- 
  DeclarationDtorDeclarationfieldDtor;function destructing (non-inherited) fields 
- 
  DeclarationExpressiongetRTInfo;pointer to GC info generated by object.RTInfo(this) 
- 
  DeclarationVisibilityvisibility;
- 
  DeclarationboolnoDefaultCtor;no default construction 
- 
  DeclarationbooldisableNew;disallow allocations using new
- 
  DeclarationSizeoksizeok;set when structsize contains valid data 
- 
  DeclarationScope*newScope(Scope*sc);Create a new scope from sc. semantic, semantic2 and semantic3 will use this for aggregate members.
- 
  Declarationfinal size_tnonHiddenFields();Return ValueThe total number of fields minus the number of hidden fields. 
- 
  Declarationfinal booldetermineSize(const ref Locloc);Collect all instance fields, then determine instance size. Return Valuefalseif failed to determine the size.
- 
  Declarationfinal boolcheckOverlappedFields();Calculate field[i].overlapped and overlapUnsafe, and check that all of explicit field initializers have unique memory space on instance. Return Valuetrueif any errors happen.
- 
  Declarationfinal boolfill(const ref Locloc, ref Expressionselements, boolctorinit);Fill out remainder of elements[] with default initializers for fields[].ParametersLocloclocation Expressionselementsexplicit arguments which given to construct object. boolctorinittrueif theelementswill be used for default initialization.Return Valuefalseif any errors occur. Otherwise, returnstrueand the missing arguments will be pushed inelements[].
- 
  Declarationstatic pure nothrow @safe voidalignmember(structalign_talignment, uintmemalignsize, uint*poffset);Do byte or word alignmentas necessary. Align sizes of 0, as we may not know array sizes yet.Parametersstructalign_talignmentstruct alignmentthat is in effectuintmemalignsizenatural alignmentof fielduint*poffsetpointer to offset to be aligned 
- 
  Declarationstatic uintplaceField(uint*nextoffset, uintmemsize, uintmemalignsize, structalign_talignment, uint*paggsize, uint*paggalignsize, boolisunion);Place a field (mem) into an aggregate (agg), which can be a struct, union or class Parametersuint*nextoffsetlocation just past the end of the previous field in the aggregate. Updated to be just past the end of this field to be placed, i.e. the future nextoffsetuintmemsizesize of field uintmemalignsizenatural alignmentof fieldstructalign_talignmentalignmentin effect for this fielduint*paggsizesize of aggregate (updated) uint*paggalignsizealignmentof aggregate (updated)boolisunionthe aggregate is a union Return Valuealigned offset to place field at 
- 
  Declarationfinal voidsetDeprecated();Flag this aggregate as deprecated 
- 
  Declarationfinal const boolisNested();Returns trueif there's an extra member which is the 'this' pointer to the enclosing context (enclosing aggregate or function)
- 
  Declarationfinal DsymbolsearchCtor();Look for constructor declaration. 
- 
  Declarationvoid*sinit;initializer symbol 
 
-