Struct and union declarations.

Specification: Structs, Unions


Walter Bright

Source: dstruct.d

  • Declaration

    FuncDeclaration search_toString(StructDeclaration sd);

    Search sd for a member function of the form: extern (D) string toString();


    StructDeclaration sd

    struct declaration to search

    Return Value

    FuncDeclaration of toString() if found, null if not

  • Declaration

    void semanticTypeInfo(Scope* sc, Type t);

    Request additional semantic analysis for TypeInfo generation.


    Scope* sc


    Type t

    type that TypeInfo is being generated for

  • Declaration

    class StructDeclaration: dmd.aggregate.AggregateDeclaration;

    All struct declarations are an instance of this.

    • Declaration

      final void determineTypeProperties();

      Compute cached type properties for TypeStruct

    • Declaration

      final bool isPOD();

      Determine if struct is POD (Plain Old Data).


      POD is defined as:

      1. not nested
      2. no postblits, destructors, or assignment operators
      3. no ref fields or fields that are themselves non-POD
      The idea being these are compatible with C structs.

      Return Value

      true if struct is POD

    • Declaration

      final bool hasRegularCtor(bool checkDisabled = false);

      Verifies whether the struct declaration has a constructor that is not a copy constructor. Optionally, it can check whether the struct declaration has a regular constructor, that is not disabled.


      bool checkDisabled

      if the struct has a regular non-disabled constructor

      Return Value

      true, if the struct has a regular (optionally, not disabled) constructor, false otherwise.

  • Declaration

    class UnionDeclaration: dmd.dstruct.StructDeclaration;

    Unions are a variation on structs.