Skip to content

Instantly share code, notes, and snippets.

View cleak's full-sized avatar

Caleb Leak cleak

View GitHub Profile
@cleak
cleak / MyComponent.cs
Last active February 9, 2018 03:22
Simple example of a Unity component overriding its update method.
using UnityEngine;
public class MyComponent : MonoBehaviour {
void Update() {
Debug.Log("Update was called");
}
}
@cleak
cleak / Greeter.cpp
Last active February 9, 2018 04:20
#include <iostream>
using namespace std;
class GenericGreeter {
public:
void Greet(const char* name) {
cout << "Hi " << name << "." << endl;
}
};
#include <iostream>
using namespace std;
class GenericGreeter {
public:
virtual void Greet(const char* name) {
cout << "Hi " << name << "." << endl;
}
};
#include <iostream>
using namespace std;
struct GenericGreeterVTable {
void (*GreetFn) (void*, const char*)
};
class GenericGreeter {
public:
@cleak
cleak / Greeter.cpp
Last active January 1, 2019 22:19
An example class hierarchy
#include <iostream>
using namespace std;
class GenericGreeter {
public:
void Greet(const char* name) {
cout << "Hi " << name << "." << endl;
}
};
class GenericGreeter {
public:
virtual void Greet(const char* name) {
cout << "Hi " << name << "." << endl;
}
};
class FriendlyGreeter : public GenericGreeter {
public:
virtual void Greet(const char* name) {
#include <iostream>
using namespace std;
// Our Greet function type.
typedef void (GreetFn)(void*, const char* name);
struct GenericGreeter_VTable {
GreetFn* greet;
};
class GenericGreeter {
public:
virtual void Greet(const char* name) {
cout << "Hi " << name << "." << endl;
}
virtual void Dismiss(const char* name) {
cout << "Bye " << name << "." << endl;
}
};
typedef void (GreetFn)(void*, const char* name);
struct GenericGreeter_VTable {
GreetFn* greet;
GreetFn* dismiss;
};
GenericGreeter_VTable* GetVTable(GenericGreeter* obj) {
GenericGreeter_VTable** vtable_ptr = (GenericGreeter_VTable**)obj;
return *(vtable_ptr);
}