blob: d162a324b9a13cfb3e3993eeca775118fa8b1943 [file] [log] [blame]
/++
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);
}