mirror of
https://github.com/dlang/dmd.git
synced 2025-04-29 06:30:10 +03:00
117 lines
1.9 KiB
D
117 lines
1.9 KiB
D
/*
|
|
REQUIRED_ARGS: -HC -c -o-
|
|
PERMUTE_ARGS:
|
|
TEST_OUTPUT:
|
|
---
|
|
// Automatically generated by Digital Mars D Compiler
|
|
|
|
#pragma once
|
|
|
|
#include <assert.h>
|
|
#include <math.h>
|
|
#include <stddef.h>
|
|
#include <stdint.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
|
|
|
|
struct S final
|
|
{
|
|
union
|
|
{
|
|
int32_t x;
|
|
char c[4$?:32=u|64=LLU$];
|
|
};
|
|
struct
|
|
{
|
|
int32_t y;
|
|
double z;
|
|
void bar();
|
|
};
|
|
struct
|
|
{
|
|
int32_t outerPrivate;
|
|
};
|
|
struct
|
|
{
|
|
int32_t innerPrivate;
|
|
int32_t innerBar;
|
|
};
|
|
S() :
|
|
y(),
|
|
z(),
|
|
outerPrivate(),
|
|
innerPrivate(),
|
|
innerBar()
|
|
{
|
|
}
|
|
S(int32_t y, double z = NAN, int32_t outerPrivate = 0, int32_t innerPrivate = 0, int32_t innerBar = 0) :
|
|
y(y),
|
|
z(z),
|
|
outerPrivate(outerPrivate),
|
|
innerPrivate(innerPrivate),
|
|
innerBar(innerBar)
|
|
{}
|
|
};
|
|
|
|
extern void foo();
|
|
---
|
|
*/
|
|
|
|
extern (C++) struct S
|
|
{
|
|
union
|
|
{
|
|
int x;
|
|
char[4] c;
|
|
}
|
|
|
|
struct
|
|
{
|
|
int y;
|
|
double z;
|
|
extern(C) void foo() {}
|
|
extern(C++) void bar() {}
|
|
}
|
|
|
|
// Private not emitted because AnonDeclaration has no protection
|
|
private struct
|
|
{
|
|
int outerPrivate;
|
|
}
|
|
|
|
public struct {
|
|
// Private cannot be exported to C++
|
|
private int innerPrivate;
|
|
int innerBar;
|
|
}
|
|
}
|
|
|
|
extern (D)
|
|
{
|
|
extern(C++) void foo() {}
|
|
}
|