Skip to content

Invalid translation of C struct with typedef to D #202

@carun

Description

@carun

Using master on Ubuntu 18.04.1 LTS

Input:

typedef struct
{
  char          SerNo[12];          // e.g. "1234512345"  (11 char)
  char          ID[20];             // e.g. "IDS GmbH"
  char          Version[10];        // e.g. "V2.10"  (9 char)
  char          Date[12];           // e.g. "24.01.2006" (11 char)
  unsigned char Select;             // contains board select number for multi board support
  unsigned char Type;               // e.g. IS_BOARD_TYPE_UEYE_USB
  char          Reserved[8];        // (7 char)
} BOARDINFO, *PBOARDINFO;

Actual output:

extern (C):

struct PBOARDINFO
{
    char[12] SerNo; // e.g. "1234512345"  (11 char)
    char[20] ID; // e.g. "IDS GmbH"
    char[10] Version; // e.g. "V2.10"  (9 char)
    char[12] Date; // e.g. "24.01.2006" (11 char)
    ubyte Select; // contains board select number for multi board support
    ubyte Type; // e.g. IS_BOARD_TYPE_UEYE_USB
    char[8] Reserved; // (7 char)
}

Expected output:

extern (C):

struct BOARDINFO
{
    char[12] SerNo; // e.g. "1234512345"  (11 char)
    char[20] ID; // e.g. "IDS GmbH"
    char[10] Version; // e.g. "V2.10"  (9 char)
    char[12] Date; // e.g. "24.01.2006" (11 char)
    ubyte Select; // contains board select number for multi board support
    ubyte Type; // e.g. IS_BOARD_TYPE_UEYE_USB
    char[8] Reserved; // (7 char)
}

alias PBOARDINFO = BOARDINFO*;

Metadata

Metadata

Assignees

No one assigned

    Labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions