Newer
Older
Import / applications / HighwayDash / ports / Tools / desiredOutput.txt
// 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<>...)
{
}