[ Web Proxy ]
URL:
Viewing: https://raw.githubusercontent.com/compiler-research/cppjit/main/test/cpp/pythonizables.h [Back]  [Original]

#include 
#include 
#include 

// Python
struct _object;
typedef _object PyObject;

namespace pyzables {

//===========================================================================
class SomeDummy1 {};
class SomeDummy2 {};

//===========================================================================
class NakedBuffers {
public:
  NakedBuffers(int size, double valx, double valy);
  NakedBuffers(const NakedBuffers&) = delete;
  NakedBuffers& operator=(const NakedBuffers&) = delete;
  ~NakedBuffers();

public:
  int GetN();
  double* GetX();
  double* GetY();

private:
  double* m_Xbuf;
  double* m_Ybuf;
  int m_size;
};

template  class NakedBuffers2 {
public:
  NakedBuffers2(int size, double valx, double valy)
      : m_Xbuf(size), m_Ybuf(size) {
    for (int i = 0; i < size; ++i) {
      m_Xbuf[i] = valx * i;
      m_Ybuf[i] = valy * i;
    }
  }

public:
  int GetN() { return m_Xbuf.size(); }
  double* GetX() { return m_Xbuf.data(); }
  double* GetY() { return m_Ybuf.data(); }

private:
  C m_Xbuf;
  C m_Ybuf;
  int m_size;
};

class Vector : public std::vector {
public:
  Vector(int size) : std::vector(size) {}
};

//===========================================================================
class MyBase {
public:
  virtual ~MyBase();
};
class MyDerived : public MyBase {
public:
  virtual ~MyDerived();
};

MyBase* GimeDerived();

//===========================================================================
class Countable {
public:
  Countable() { ++sInstances; }
  Countable(const Countable&) { ++sInstances; }
  Countable& operator=(const Countable&) { return *this; }
  ~Countable() { --sInstances; }

public:
  virtual const char* say_hi() { return "Hi!"; }

public:
  unsigned int m_check = 0xcdcdcdcd;

public:
  static int sInstances;
};

typedef std::shared_ptr SharedCountable_t;
extern SharedCountable_t mine;

void renew_mine();

SharedCountable_t gime_mine();
SharedCountable_t* gime_mine_ptr();
SharedCountable_t& gime_mine_ref();

unsigned int pass_mine_sp(SharedCountable_t p);
unsigned int pass_mine_sp_ref(SharedCountable_t& p);
unsigned int pass_mine_sp_ptr(SharedCountable_t* p);

unsigned int pass_mine_rp(Countable);
unsigned int pass_mine_rp_ref(const Countable&);
unsigned int pass_mine_rp_ptr(const Countable*);

Countable* gime_naked_countable();

//===========================================================================
class unknown_iterator;
class IndexableBase {
public:
  unknown_iterator* begin() { return nullptr; }
  unknown_iterator* end() { return (unknown_iterator*)1; }
  int operator[](int) { return 42; }
  int size() { return 1; }
};

class IndexableDerived : public IndexableBase {};

//===========================================================================
class WithCallback1 {
public:
  WithCallback1(int i);

public:
  int get_int();
  void set_int(int i);

private:
  int m_int;

public:
  static void __cppjit_explicit_pythonize__(PyObject* klass,
                                            const std::string&);
  static std::string klass_name;
};

class WithCallback2 {
public:
  WithCallback2(int i);

public:
  int get_int();
  void set_int(int i);

protected:
  int m_int;

public:
  static void __cppjit_pythonize__(PyObject* klass, const std::string&);
  static std::string klass_name;
};

class WithCallback3 : public WithCallback2 {
public:
  using WithCallback2::WithCallback2;

public:
  int get_int();
  void set_int(int i);
};

} // namespace pyzables

Web Proxy Viewer  |  New URL  |  Original Page