21 #ifndef __ASEBA_NATIVES_H 22 #define __ASEBA_NATIVES_H 28 #include "../common/types.h" 32 #pragma warning( disable: 4200) // disable 0 size arrays warning 33 #define inline __inline // msvc does not support the standart C99/C++ static inline construct 90 return vm->
stack[vm->sp--];
210 #define ASEBA_NATIVES_STD_COUNT 21 213 #define ASEBA_NATIVES_STD_FUNCTIONS \ 214 AsebaNative_veccopy, \ 215 AsebaNative_vecfill, \ 216 AsebaNative_vecaddscalar, \ 217 AsebaNative_vecadd, \ 218 AsebaNative_vecsub, \ 219 AsebaNative_vecmul, \ 220 AsebaNative_vecdiv, \ 221 AsebaNative_vecmin, \ 222 AsebaNative_vecmax, \ 223 AsebaNative_vecclamp, \ 224 AsebaNative_vecdot, \ 225 AsebaNative_vecstat, \ 226 AsebaNative_vecargbounds, \ 227 AsebaNative_vecsort, \ 228 AsebaNative_mathmuldiv, \ 229 AsebaNative_mathatan2, \ 230 AsebaNative_mathsin, \ 231 AsebaNative_mathcos, \ 232 AsebaNative_mathrot2, \ 233 AsebaNative_mathsqrt, \ 237 #define ASEBA_NATIVES_STD_DESCRIPTIONS \ 238 &AsebaNativeDescription_veccopy, \ 239 &AsebaNativeDescription_vecfill, \ 240 &AsebaNativeDescription_vecaddscalar, \ 241 &AsebaNativeDescription_vecadd, \ 242 &AsebaNativeDescription_vecsub, \ 243 &AsebaNativeDescription_vecmul, \ 244 &AsebaNativeDescription_vecdiv, \ 245 &AsebaNativeDescription_vecmin, \ 246 &AsebaNativeDescription_vecmax, \ 247 &AsebaNativeDescription_vecclamp, \ 248 &AsebaNativeDescription_vecdot, \ 249 &AsebaNativeDescription_vecstat, \ 250 &AsebaNativeDescription_vecargbounds, \ 251 &AsebaNativeDescription_vecsort, \ 252 &AsebaNativeDescription_mathmuldiv, \ 253 &AsebaNativeDescription_mathatan2, \ 254 &AsebaNativeDescription_mathsin, \ 255 &AsebaNativeDescription_mathcos, \ 256 &AsebaNativeDescription_mathrot2, \ 257 &AsebaNativeDescription_mathsqrt, \ 258 &AsebaNativeDescription_rand void AsebaNative_vecargbounds(AsebaVMState *vm)
Function to get indices of the bounds of a vector.
Definition: natives.c:734
const char * name
name of the variable
Definition: natives.h:50
Description of all variable.
Definition: natives.h:54
void AsebaNative_mathsin(AsebaVMState *vm)
Function to perform sin.
Definition: natives.c:876
const AsebaNativeFunctionDescription AsebaNativeDescription_vecsub
Description of AsebaNative_vecsub.
Definition: natives.c:424
Description of a local event.
Definition: natives.h:61
void AsebaNative_vecsub(AsebaVMState *vm)
Function to substract two vectors.
Definition: natives.c:407
const AsebaNativeFunctionDescription AsebaNativeDescription_vecmin
Description of AsebaNative_vecmin.
Definition: natives.c:529
const AsebaNativeFunctionDescription AsebaNativeDescription_vecargbounds
Description of AsebaNative_vecargbounds.
Definition: natives.c:767
void AsebaNative_mathatan2(AsebaVMState *vm)
Function to perform atan2.
Definition: natives.c:845
This structure contains the state of the Aseba VM.
Definition: vm.h:69
const AsebaNativeFunctionDescription AsebaNativeDescription_veccopy
Description of AsebaNative_veccopy.
Definition: natives.c:305
const AsebaNativeFunctionDescription AsebaNativeDescription_mathatan2
Description of AsebaNative_mathatan2.
Definition: natives.c:864
void(* AsebaNativeFunctionPointer)(AsebaVMState *vm)
Signature of a native function.
Definition: natives.h:68
const AsebaNativeFunctionDescription AsebaNativeDescription_mathcos
Description of AsebaNative_mathcos.
Definition: natives.c:921
const AsebaNativeFunctionDescription AsebaNativeDescription_vecadd
Description of AsebaNative_vecadd.
Definition: natives.c:394
const char * doc
documentation of the local event
Definition: natives.h:64
void AsebaNative_vecmul(AsebaVMState *vm)
Function to multiply two vectors elements by elements.
Definition: natives.c:437
void AsebaNative_vecsort(AsebaVMState *vm)
Function to sort a vector.
Definition: natives.c:780
const AsebaNativeFunctionDescription AsebaNativeDescription_vecsort
Description of AsebaNative_vecsort.
Definition: natives.c:791
void AsebaNative_rand(AsebaVMState *vm)
Function to get a 16-bit signed random number.
Definition: natives.c:1116
const AsebaNativeFunctionDescription AsebaNativeDescription_vecfill
Description of AsebaNative_vecfill.
Definition: natives.c:334
const char * name
name of the microcontroller
Definition: natives.h:56
const char * name
name of the function
Definition: natives.h:80
const AsebaNativeFunctionDescription AsebaNativeDescription_vecclamp
Description of AsebaNative_vecclamp.
Definition: natives.c:596
const char * doc
documentation of the function
Definition: natives.h:81
sint16 size
size of the argument in number of values; if negative, template parameter
Definition: natives.h:73
void AsebaNative_veccopy(AsebaVMState *vm)
Function to copy a vector.
Definition: natives.c:288
void AsebaNative_vecstat(AsebaVMState *vm)
Function to perform statistics on a vector.
Definition: natives.c:685
Description of a variable.
Definition: natives.h:47
const AsebaNativeFunctionDescription AsebaNativeDescription_mathsqrt
Description of AsebaNative_mathsqrt.
Definition: natives.c:983
void AsebaNative_mathsqrt(AsebaVMState *vm)
Function to perform sqrt.
Definition: natives.c:966
const char * name
name of the function
Definition: natives.h:63
void AsebaNative_vecclamp(AsebaVMState *vm)
Function to clamp a vector of values element by element.
Definition: natives.c:574
void AsebaNative_vecmax(AsebaVMState *vm)
Function to take the element by element maximum.
Definition: natives.c:542
void AsebaNative_vecfill(AsebaVMState *vm)
Function to fill all the elements of a vector to a specific value.
Definition: natives.c:317
void AsebaNative_vecmin(AsebaVMState *vm)
Function to take the element by element minimum.
Definition: natives.c:509
void AsebaNative_vecaddscalar(AsebaVMState *vm)
Function to add a scalar to each element of a vector.
Definition: natives.c:346
void AsebaNative_vecadd(AsebaVMState *vm)
Function to add two vectors.
Definition: natives.c:377
unsigned short uint16
16 bits unsigned integer
Definition: types.h:36
void AsebaNative_vecdot(AsebaVMState *vm)
Function to perform a dot product on a vector.
Definition: natives.c:609
signed short sint16
16 bits signed integer
Definition: types.h:35
void AsebaNative_vecdiv(AsebaVMState *vm)
Function to divide two vectors elements by elements.
Definition: natives.c:467
void AsebaNative_mathrot2(AsebaVMState *vm)
Function to perform the rotation of a vector.
Definition: natives.c:932
const AsebaNativeFunctionDescription AsebaNativeDescription_vecdiv
Description of AsebaNative_vecsub.
Definition: natives.c:496
const AsebaNativeFunctionDescription AsebaNativeDescription_vecmax
Description of AsebaNative_vecsmax.
Definition: natives.c:562
const AsebaNativeFunctionDescription AsebaNativeDescription_vecdot
Description of AsebaNative_vecdot.
Definition: natives.c:671
Description of a native function.
Definition: natives.h:78
uint16 size
size of the variable
Definition: natives.h:49
const char * name
name of the argument
Definition: natives.h:74
const AsebaNativeFunctionDescription AsebaNativeDescription_vecmul
Description of AsebaNative_vecadd.
Definition: natives.c:454
Description of an argument of a native function.
Definition: natives.h:71
sint16 * stack
execution stack of size stackSize
Definition: vm.h:84
const AsebaNativeFunctionDescription AsebaNativeDescription_vecaddscalar
Description of AsebaNative_vecaddscalar.
Definition: natives.c:364
const AsebaNativeFunctionDescription AsebaNativeDescription_mathrot2
Description of AsebaNative_mathrot2.
Definition: natives.c:954
const AsebaNativeFunctionDescription AsebaNativeDescription_vecstat
Description of AsebaNative_vecstat.
Definition: natives.c:720
void AsebaNative_mathmuldiv(AsebaVMState *vm)
Function to perform dest = (a*b)/c in 32 bits.
Definition: natives.c:802
void AsebaNative_vecnonzerosequence(AsebaVMState *vm)
Function to get the middle index of the largest sequence of non-zero elements.
Definition: natives.c:994
Definition of Aseba Virtual Machine.
const AsebaNativeFunctionDescription AsebaNativeDescription_rand
Description of AsebaNative_rand.
Definition: natives.c:1131
void AsebaSetRandomSeed(uint16 seed)
Functon to set the seed of random generator.
Definition: natives.c:1105
const AsebaNativeFunctionDescription AsebaNativeDescription_mathsin
Description of AsebaNative_mathsin.
Definition: natives.c:893
const AsebaNativeFunctionDescription AsebaNativeDescription_mathmuldiv
Description of AsebaNative_mathmuldiv.
Definition: natives.c:832
const AsebaNativeFunctionDescription AsebaNativeDescription_vecnonzerosequence
Description of AsebaNative_vecnonzerosequence.
Definition: natives.c:1091
void AsebaNative_mathcos(AsebaVMState *vm)
Function to perform cos.
Definition: natives.c:904
uint16 AsebaGetRandom()
Functon to get a random number.
Definition: natives.c:1110