summaryrefslogtreecommitdiff
path: root/tolua/src/tests/tfunction.pkg
blob: d8984559d257403f6e9946baa497bee4343026fe (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
$#include "tfunction.h"

typedef enum {
 FIRST = 1,
	SECOND = 2
} Order;

class Point
{
	enum Error {
		SUCCESS = 0,
		ERROR = 1
	};

	Point (float x=0, float y=0);
	virtual ~Point ();

	void set (float x, float y);
	void set (float v[2]=0);
	void setpointer (Point* p);
	void setref (Point& p);
	void setvalue (Point p);
	void setconst (const Point* p);

	void get (float* x=0, float* y=0) const;
	void get (float v[2]=0) const;
	Point* getpointer ();
	Point& getref ();
	Point getvalue ();
	const Point* getconst () const;

	Point operator+ (const Point& p) const;
	Point operator- (const Point& p) const;
	Point operator* (const Point& p) const;
	Point operator/ (float n) const;
	bool operator< (const Point& p) const;
	bool operator<= (const Point& p) const;
	bool operator== (const Point& p) const;

 float operator[] (int i) const;
	float& operator[] (int i);

	static Error echo (Error e);
};

module alg
{
 Point add (const Point& p1, const Point& p2);
 Point sub (const Point& p1, const Point& p2);
 Point mult (const Point& p1, const Point& p2);
 Point div (const Point& p1, float n);
}

void getpoint (const Point* p, float* x=0, float* y=0);
void setpoint (Point* p, float x=0, float y=0);
inline Point average (int n, Point v[n]);
inline	Point averagepointer (int n, Point* v[n]);
inline	void copyvector (int n, const Point v[n], Point u[n]=(u+i));

inline Order invert (Order o);

$cfile "tfunction.h"

/*
class ColorPoint : public Point
{
 ColorPoint (float px, float py, float cr=0.0f, float cg=0.0f, float cb=0.0f);
 virtual ~ColorPoint ();
	virtual void getcolor (float* red, float *green, float *blue) const;
 static const Point* MakeRed (float x, float y);
};
*/