File: dtoh_mangling.d

package info (click to toggle)
gcc-arm-none-eabi 15%3A12.2.rel1-1
  • links: PTS, VCS
  • area: main
  • in suites: bookworm
  • size: 959,712 kB
  • sloc: cpp: 3,275,382; ansic: 2,061,766; ada: 840,956; f90: 208,513; makefile: 76,132; asm: 73,433; xml: 50,448; exp: 34,146; sh: 32,436; objc: 15,637; fortran: 14,012; python: 11,991; pascal: 6,787; awk: 4,779; perl: 3,054; yacc: 338; ml: 285; lex: 201; haskell: 122
file content (118 lines) | stat: -rw-r--r-- 2,296 bytes parent folder | download | duplicates (2)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
/++
REQUIRED_ARGS: -HC=verbose
TEST_OUTPUT:
---
// Automatically generated by Digital Mars D Compiler v$n$

#pragma once

#include <assert.h>
#include <stddef.h>
#include <stdint.h>
#include <math.h>

#ifdef CUSTOM_D_ARRAY_TYPE
#define _d_dynamicArray CUSTOM_D_ARRAY_TYPE
#else
/// Represents a D [] array
template<typename T>
struct _d_dynamicArray final
{
    size_t length;
    T *ptr;

    _d_dynamicArray() : length(0), ptr(NULL) { }

    _d_dynamicArray(size_t length_in, T *ptr_in)
        : length(length_in), ptr(ptr_in) { }

    T& operator[](const size_t idx) {
        assert(idx < length);
        return ptr[idx];
    }

    const T& operator[](const size_t idx) const {
        assert(idx < length);
        return ptr[idx];
    }
};
#endif

extern "C" int32_t freeC();

// Ignored function dtoh_mangling.bar because C++ doesn't support explicit mangling
struct Data final
{
    // Ignored function dtoh_mangling.Data.foo because of linkage
    // Ignored function dtoh_mangling.Data.bar because C++ doesn't support explicit mangling
    Data()
    {
    }
};

extern void accept(Data data);

extern "C" void hasDefault(int32_t i = freeC());

extern "C" void hasDefaultMember(int32_t i = memberC());

extern "C" int32_t someVarC;

// Ignored variable dtoh_mangling.var2 because C++ doesn't support explicit mangling
struct HasMangleMember final
{
    int32_t someAttrC;
    int32_t someAttrCpp;
    void hasDefaultVar(int32_t i = someAttrC);
    HasMangleMember()
    {
    }
};

extern "C" void hasDefaultVar(int32_t i = someVarC);
---
++/

extern(C):

pragma(mangle, "freeC")
int foo() { return 0; }

pragma(mangle, "freeCpp")
extern (C++) void bar() {}

pragma(mangle, "Aggregate")
struct Data
{
    pragma(mangle, "memberC")
    static int foo() { return 0; }

    pragma(mangle, "memberCpp")
    extern (C++) void bar() {}
}

extern(C++)
void accept(Data data) {}

void hasDefault(int i = foo()) {}

void hasDefaultMember(int i = Data.foo()) {}

pragma(mangle, "someVarC")
__gshared int var;

pragma(mangle, "someVarCpp")
extern(C++) __gshared int var2;

struct HasMangleMember
{
    pragma(mangle, "someAttrC")
    int var;

    pragma(mangle, "someAttrCpp")
    extern(C++) int var2;

    extern(C++) void hasDefaultVar(int i = var) {}
}

void hasDefaultVar(int i = var) {}