Smart Remote 3 nRF52 v1.2
35 #include "opus_types.h"
36 #include "opus_defines.h"
38 #if (!defined (VAR_ARRAYS) && !defined (USE_ALLOCA) && !defined (NONTHREADSAFE_PSEUDOSTACK))
39 #error "Opus requires one of VAR_ARRAYS, USE_ALLOCA, or NONTHREADSAFE_PSEUDOSTACK be defined to select the temporary allocation mode."
91 #if defined(VAR_ARRAYS)
93 #define VARDECL(type, var)
94 #define ALLOC(var, size, type) type var[size]
101 #elif defined(USE_ALLOCA)
103 #define VARDECL(type, var) type *var
106 # define ALLOC(var, size, type) var = ((type*)_alloca(sizeof(type)*(size)))
108 # define ALLOC(var, size, type) var = ((type*)alloca(sizeof(type)*(size)))
112 #define RESTORE_STACK
120 char *global_stack=0;
122 extern char *global_stack;
123 extern char *scratch_ptr;
126 #ifdef ENABLE_VALGRIND
128 #include <valgrind/memcheck.h>
131 char *global_stack_top=0;
133 extern char *global_stack_top;
136 #define ALIGN(stack, size) ((stack) += ((size) - (long)(stack)) & ((size) - 1))
137 #define PUSH(stack, size, type) (VALGRIND_MAKE_MEM_NOACCESS(stack, global_stack_top-stack),ALIGN((stack),sizeof(type)/sizeof(char)),VALGRIND_MAKE_MEM_UNDEFINED(stack, ((size)*sizeof(type)/sizeof(char))),(stack)+=(2*(size)*sizeof(type)/sizeof(char)),(type*)((stack)-(2*(size)*sizeof(type)/sizeof(char))))
138 #define RESTORE_STACK ((global_stack = _saved_stack),VALGRIND_MAKE_MEM_NOACCESS(global_stack, global_stack_top-global_stack))
139 #define ALLOC_STACK char *_saved_stack; ((global_stack = (global_stack==0) ? ((global_stack_top=opus_alloc_scratch(GLOBAL_STACK_SIZE*2)+(GLOBAL_STACK_SIZE*2))-(GLOBAL_STACK_SIZE*2)) : global_stack),VALGRIND_MAKE_MEM_NOACCESS(global_stack, global_stack_top-global_stack)); _saved_stack = global_stack;
143 #define ALIGN(stack, size) ((stack) += ((size) - (long)(stack)) & ((size) - 1))
144 #define PUSH(stack, size, type) (ALIGN((stack),sizeof(type)/sizeof(char)),(stack)+=(size)*(sizeof(type)/sizeof(char)),(type*)((stack)-(size)*(sizeof(type)/sizeof(char))))
146 #define RESTORE_STACK (printf("%ld %s:%d\n", global_stack-scratch_ptr, __FILE__, __LINE__),global_stack = _saved_stack)
148 #define RESTORE_STACK (global_stack = _saved_stack)
150 #define ALLOC_STACK char *_saved_stack; (global_stack = (global_stack==0) ? (scratch_ptr=opus_alloc_scratch(GLOBAL_STACK_SIZE)) : global_stack); _saved_stack = global_stack;
154 #include "os_support.h"
155 #define VARDECL(type, var) type *var
156 #define ALLOC(var, size, type) var = PUSH(global_stack, size, type)
157 #define SAVE_STACK char *_saved_stack = global_stack;
163 #ifdef ENABLE_VALGRIND
165 #include <valgrind/memcheck.h>
166 #define OPUS_CHECK_ARRAY(ptr, len) VALGRIND_CHECK_MEM_IS_DEFINED(ptr, len*sizeof(*ptr))
167 #define OPUS_CHECK_VALUE(value) VALGRIND_CHECK_VALUE_IS_DEFINED(value)
168 #define OPUS_CHECK_ARRAY_COND(ptr, len) VALGRIND_CHECK_MEM_IS_DEFINED(ptr, len*sizeof(*ptr))
169 #define OPUS_CHECK_VALUE_COND(value) VALGRIND_CHECK_VALUE_IS_DEFINED(value)
170 #define OPUS_PRINT_INT(value) do {fprintf(stderr, #value " = %d at %s:%d\n", value, __FILE__, __LINE__);}while(0)
171 #define OPUS_FPRINTF fprintf
175 static OPUS_INLINE
int _opus_false(
void) {
return 0;}
176 #define OPUS_CHECK_ARRAY(ptr, len) _opus_false()
177 #define OPUS_CHECK_VALUE(value) _opus_false()
178 #define OPUS_PRINT_INT(value) do{}while(0)
179 #define OPUS_FPRINTF (void)