mirror of
https://github.com/dlang/dmd.git
synced 2025-04-26 13:10:12 +03:00
142 lines
2.4 KiB
D
142 lines
2.4 KiB
D
/*
|
|
REQUIRED_ARGS: -extern-std=c++98 -HC -c -o- -Icompilable/extra-files
|
|
PERMUTE_ARGS:
|
|
EXTRA_FILES: extra-files/dtoh_imports.d extra-files/dtoh_imports2.d
|
|
|
|
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
|
|
|
|
class ImportsC
|
|
{
|
|
};
|
|
|
|
struct Null final
|
|
{
|
|
void* field;
|
|
_d_dynamicArray< const char > null_;
|
|
private:
|
|
Null(int32_t );
|
|
public:
|
|
Null() :
|
|
field(NULL),
|
|
null_()
|
|
{
|
|
}
|
|
Null(void* field, _d_dynamicArray< const char > null_ = _d_dynamicArray< const char >()) :
|
|
field(field),
|
|
null_(null_)
|
|
{}
|
|
};
|
|
|
|
extern void* typeof_null;
|
|
|
|
extern void* inferred_null;
|
|
|
|
struct MyString final
|
|
{
|
|
_d_dynamicArray< const char > str;
|
|
MyString() :
|
|
str()
|
|
{
|
|
}
|
|
MyString(_d_dynamicArray< const char > str) :
|
|
str(str)
|
|
{}
|
|
};
|
|
|
|
struct Wrapper final
|
|
{
|
|
MyString s1;
|
|
MyString s2;
|
|
Wrapper() :
|
|
s1(MyString(_d_dynamicArray< const char >( 5, "Hello" ))),
|
|
s2(MyString(_d_dynamicArray< const char >()))
|
|
{
|
|
}
|
|
Wrapper(MyString s1, MyString s2 = MyString(_d_dynamicArray< const char >())) :
|
|
s1(s1),
|
|
s2(s2)
|
|
{}
|
|
};
|
|
|
|
class UsingBase
|
|
{
|
|
public:
|
|
virtual void foo();
|
|
};
|
|
|
|
class UsingChild : public UsingBase
|
|
{
|
|
public:
|
|
};
|
|
---
|
|
*/
|
|
|
|
extern (C++) struct Null
|
|
{
|
|
void* field = null;
|
|
string null_ = null;
|
|
|
|
@disable this(int);
|
|
}
|
|
|
|
extern (C++) __gshared typeof(null) typeof_null = null;
|
|
extern (C++) __gshared inferred_null = null;
|
|
|
|
extern (C++) struct MyString
|
|
{
|
|
string str;
|
|
}
|
|
|
|
extern (C++) struct Wrapper
|
|
{
|
|
MyString s1 = MyString("Hello");
|
|
MyString s2 = MyString(null);
|
|
}
|
|
|
|
extern (C++) class UsingBase
|
|
{
|
|
void foo() {}
|
|
}
|
|
|
|
extern (C++) class UsingChild : UsingBase
|
|
{
|
|
alias foo = UsingBase.foo;
|
|
}
|
|
|
|
public import dtoh_imports : aliasName = ImportsC;
|