rs_math.rsh revision ef5867a6785807f90cfe8af26da4b964ee8ebee4
1#ifndef __RS_MATH_RSH__
2#define __RS_MATH_RSH__
3
4#include "rs_cl.rsh"
5#include "rs_core.rsh"
6
7
8
9// Allocations
10extern rs_allocation __attribute__((overloadable))
11    rsGetAllocation(const void *);
12extern uint32_t __attribute__((overloadable))
13    rsAllocationGetDimX(rs_allocation);
14extern uint32_t __attribute__((overloadable))
15    rsAllocationGetDimY(rs_allocation);
16extern uint32_t __attribute__((overloadable))
17    rsAllocationGetDimZ(rs_allocation);
18extern uint32_t __attribute__((overloadable))
19    rsAllocationGetDimLOD(rs_allocation);
20extern uint32_t __attribute__((overloadable))
21    rsAllocationGetDimFaces(rs_allocation);
22
23extern const void * __attribute__((overloadable))
24    rsGetElementAt(rs_allocation, uint32_t x);
25extern const void * __attribute__((overloadable))
26    rsGetElementAt(rs_allocation, uint32_t x, uint32_t y);
27extern const void * __attribute__((overloadable))
28    rsGetElementAt(rs_allocation, uint32_t x, uint32_t y, uint32_t z);
29
30
31// Debugging
32extern void __attribute__((overloadable))rsDebug(const char *, float);
33extern void __attribute__((overloadable))rsDebug(const char *, float2);
34extern void __attribute__((overloadable))rsDebug(const char *, float3);
35extern void __attribute__((overloadable))rsDebug(const char *, float4);
36extern void __attribute__((overloadable))rsDebug(const char *, int);
37extern void __attribute__((overloadable))rsDebug(const char *, uint);
38extern void __attribute__((overloadable))rsDebug(const char *, const void *);
39#define RS_DEBUG(a) rsDebug(#a, a)
40#define RS_DEBUG_MARKER rsDebug(__FILE__, __LINE__)
41
42// RS Math
43extern int __attribute__((overloadable))rsRand(int);
44extern int __attribute__((overloadable))rsRand(int, int);
45extern float __attribute__((overloadable))rsRand(float);
46extern float __attribute__((overloadable))rsRand(float, float);
47
48extern float __attribute__((overloadable)) rsFrac(float);
49
50// time
51extern int32_t /*__attribute__((overloadable))*/rsSecond();
52extern int32_t /*__attribute__((overloadable))*/rsMinute();
53extern int32_t /*__attribute__((overloadable))*/rsHour();
54extern int32_t /*__attribute__((overloadable))*/rsDay();
55extern int32_t /*__attribute__((overloadable))*/rsMonth();
56extern int32_t /*__attribute__((overloadable))*/rsYear();
57extern int64_t /*__attribute__((overloadable))*/rsUptimeMillis();
58extern int64_t /*__attribute__((overloadable))*/rsStartTimeMillis();
59extern int64_t /*__attribute__((overloadable))*/rsElapsedTimeMillis();
60extern float /*__attribute__((overloadable))*/rsGetDt();
61
62extern bool __attribute__((overloadable))rsSendToClient(int cmdID);
63extern bool __attribute__((overloadable))rsSendToClient(int cmdID, const void *data, uint len);
64extern void __attribute__((overloadable))rsSendToClientBlocking(int cmdID);
65extern void __attribute__((overloadable))rsSendToClientBlocking(int cmdID, const void *data, uint len);
66
67// Script to Script
68typedef struct rs_script_call {
69    uint32_t xStart;
70    uint32_t xEnd;
71    uint32_t yStart;
72    uint32_t yEnd;
73    uint32_t zStart;
74    uint32_t zEnd;
75    uint32_t arrayStart;
76    uint32_t arrayEnd;
77
78} rs_script_call_t;
79
80extern void __attribute__((overloadable))rsForEach(rs_script script,
81                                                   rs_allocation input,
82                                                   rs_allocation output,
83                                                   const void * usrData);
84
85extern void __attribute__((overloadable))rsForEach(rs_script script,
86                                                   rs_allocation input,
87                                                   rs_allocation output,
88                                                   const void * usrData,
89                                                   const rs_script_call_t *);
90
91#endif
92