// HeaderFile
#include <cstdint>
#include <memory>
struct Foo;
struct Blah;
class Object
{
};
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 MetaData
{
const char* name;
};
void RegisterClass(const char* name, MetaData d)
{
}
struct Foo
{
int x, y;
};
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
MetaData d;
return d;
}
struct RefClassRegisterType
{
RefClassRegisterType()
{
RegisterClass("RefClass", refClassMetaData());
}
}
g_refClass;
RefClass::RefClass(Object parent, int x, int y, int z)
: m_data(std::make_shared<Pimpl>())
{
}
RefClass::RefClass(Object parent)
: m_data(std::make_shared<Pimpl>())
{
}
int main(int argc, char* argv[])
{
}