// HeaderFile
struct Foo;
struct Blah;
struct RefClass : public Object
{
RefClass(Object parent);
RefClass(Object parent, int x, int y, int z);
void foo();
void bar();
struct Foo_value
{
Foo get();
void set(Foo);
} foo_value;
Foo& value();
const Foo& value() const;
uint8_t& x();
const uint8_t& x() const;
uint16_t& y();
const uint16_t& y() const;
uint32_t& z();
const uint32_t& z() const;
uint64_t& a();
const uint64_t& a() const;
float& f();
const float& f() const;
double& g();
const double& g() const;
private:
struct Pimpl;
std::shared_ptr<Pimpl> m_data;
};
// CppFile
struct RefClass::Pimpl
{
Foo value;
uint8_t x;
uint16_t y;
uint32_t z;
uint64_t a;
float f;
double g;
}
Foo& RefClass::value() { return m_data->value; }
const Foo& RefClass::value() const { return m_data->value; }
uint8_t& RefClass::x() { return m_data->x; }
const uint8_t& RefClass::x() const { return m_data->x; }
uint16_t& RefClass::y() { return m_data->y; }
const uint16_t& RefClass::y() const { return m_data->y; }
uint32_t& RefClass::z() { return m_data->z; }
const uint32_t& RefClass::z() const { return m_data->z; }
uint64_t& RefClass::a() { return m_data->a; }
const uint64_t& RefClass::a() const { return m_data->a; }
float& RefClass::f() { return m_data->f; }
const float& RefClass::f() const { return m_data->f; }
double& RefClass::g() { return m_data->g; }
const double& RefClass::g() const { return m_data->g; }
MetaData refClassMetaData()
{
// need all the function pointers and all the types and value etc
}
struct RefClassRegisterType
{
RefClassRegisterType()
{
RegisterClass("RefClass", refClassMetaData());
}
}
g_refClass;
RefClass::RefClass(Object parent, int x, int y, int z);
RefClass::RefClass(Object parent) : m_data(std::make_shared<>...)
{
}