mirror of
https://github.com/dlang/dmd.git
synced 2025-04-26 13:10:12 +03:00
148 lines
3.4 KiB
D
148 lines
3.4 KiB
D
/++
|
|
REQUIRED_ARGS: -HC=verbose -c -o- -d
|
|
PERMUTE_ARGS:
|
|
TEST_OUTPUT:
|
|
---
|
|
// Automatically generated by Digital Mars D Compiler v$n$
|
|
|
|
#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
|
|
#if !defined(_d_real)
|
|
#define _d_real long double
|
|
#endif
|
|
|
|
class WithImaginary
|
|
{
|
|
public:
|
|
float memberIf;
|
|
double memberId;
|
|
_d_real memberIr;
|
|
_Complex float memberCf;
|
|
_Complex double memberCd;
|
|
_Complex _d_real memberCr;
|
|
_d_dynamicArray< float > nested;
|
|
// Ignored function dtoh_ignored.WithImaginary.onReturn because its return type cannot be mapped to C++
|
|
private:
|
|
virtual void __vtable_slot_0();
|
|
// Ignored function dtoh_ignored.WithImaginary.onParam because one of its parameters has type `ifloat` which cannot be mapped to C++
|
|
virtual void __vtable_slot_1();
|
|
};
|
|
|
|
template <typename T>
|
|
struct WithImaginaryTemplate final
|
|
{
|
|
float member;
|
|
// Ignored function onReturn because its return type cannot be mapped to C++
|
|
// Ignored function onParam because one of its parameters has type `ifloat` which cannot be mapped to C++
|
|
// Ignored variable onVariable because its type cannot be mapped to C++
|
|
WithImaginaryTemplate()
|
|
{
|
|
}
|
|
};
|
|
|
|
extern WithImaginaryTemplate<int32_t > instance;
|
|
|
|
// Ignored variable dtoh_ignored.onVariable because its type cannot be mapped to C++
|
|
// Ignored variable dtoh_ignored.onVariablePointer because its type cannot be mapped to C++
|
|
// Ignored variable dtoh_ignored.onVariableSlice because its type cannot be mapped to C++
|
|
// Ignored variable dtoh_ignored.onVariableArray because its type cannot be mapped to C++
|
|
extern void* onVariableAssocArray;
|
|
|
|
// Ignored variable dtoh_ignored.onVariableFunction because its type cannot be mapped to C++
|
|
// Ignored variable dtoh_ignored.onVariableFunctionParam because its type cannot be mapped to C++
|
|
// Ignored variable dtoh_ignored.onVariableDelegate because its type cannot be mapped to C++
|
|
// Ignored function dtoh_ignored.myExit because its return type cannot be mapped to C++
|
|
---
|
|
+/
|
|
|
|
extern (C++):
|
|
|
|
class WithImaginary
|
|
{
|
|
ifloat memberIf;
|
|
idouble memberId;
|
|
ireal memberIr;
|
|
|
|
cfloat memberCf;
|
|
cdouble memberCd;
|
|
creal memberCr;
|
|
|
|
ifloat[] nested;
|
|
|
|
ifloat onReturn()
|
|
{
|
|
return 0i;
|
|
}
|
|
|
|
void onParam(ifloat) {}
|
|
}
|
|
|
|
struct WithImaginaryTemplate(T)
|
|
{
|
|
ifloat member;
|
|
|
|
ifloat onReturn()
|
|
{
|
|
return 0i;
|
|
}
|
|
|
|
void onParam(ifloat)
|
|
{
|
|
}
|
|
|
|
__gshared ifloat onVariable;
|
|
}
|
|
|
|
__gshared WithImaginaryTemplate!int instance;
|
|
|
|
__gshared ifloat onVariable;
|
|
|
|
__gshared ifloat** onVariablePointer;
|
|
|
|
__gshared ifloat[] onVariableSlice;
|
|
|
|
__gshared ifloat[2] onVariableArray;
|
|
|
|
__gshared ifloat[int] onVariableAssocArray;
|
|
|
|
__gshared ifloat function() onVariableFunction;
|
|
|
|
__gshared void function(ifloat) onVariableFunctionParam;
|
|
|
|
__gshared ifloat delegate() onVariableDelegate;
|
|
|
|
noreturn myExit()
|
|
{
|
|
assert(false);
|
|
}
|