struct
This commit is contained in:
@@ -1,7 +1,11 @@
|
||||
#ifndef bool
|
||||
#define bool int
|
||||
#define true 1
|
||||
#define false 0
|
||||
#endif
|
||||
|
||||
#ifndef _template
|
||||
#define _template
|
||||
#define _template_func_def(T, func) T_DEFINE_##func(T)
|
||||
#define _template_func(T, func) T_##func(T)
|
||||
#define _template_func_call(T, func, ...) \
|
||||
@@ -9,19 +13,25 @@
|
||||
#define $fd _template_func_def
|
||||
#define $f _template_func
|
||||
#define $fc _template_func_call
|
||||
#endif
|
||||
|
||||
#include <stdio.h>
|
||||
#include <stdlib.h>
|
||||
#include <string.h>
|
||||
#define SORT_PREDICATE(type, name) \
|
||||
bool name(const size_t size, type *a, type *b)
|
||||
#define SORT_SWAP(size, a, b) \
|
||||
#ifndef T_swap
|
||||
#define T_swap__(size, a, b) \
|
||||
{ \
|
||||
void *INBLOCK_TMP = malloc(size); \
|
||||
memcpy(INBLOCK_TMP, a, size); \
|
||||
memcpy(a, b, size); \
|
||||
memcpy(b, INBLOCK_TMP, size); \
|
||||
}
|
||||
#define T_swap(T) T_swap__
|
||||
#endif
|
||||
|
||||
#ifndef T_sort
|
||||
#include <stdio.h>
|
||||
#include <stdlib.h>
|
||||
#include <string.h>
|
||||
#define SORT_PREDICATE(type, name) \
|
||||
bool name(const size_t size, type *a, type *b)
|
||||
|
||||
int memcmp_reverse(const void *ptr1, const void *ptr2, const size_t size) {
|
||||
size_t i = size;
|
||||
@@ -70,23 +80,29 @@ void T_sort__(const size_t size, void *start, const void *end,
|
||||
for (i = (size_t)start; i < (size_t)end; i += size) {
|
||||
for (j = i + size; j < (size_t)end; j += size) {
|
||||
if (predicate(size, (void *)i, (void *)j)) {
|
||||
SORT_SWAP(size, (void *)i, (void *)j);
|
||||
$f(_, swap)(size, (void *)i, (void *)j);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
#define T_sort(T) T_sort__
|
||||
void T_merge_sort__(){
|
||||
|
||||
}
|
||||
void T_sort_default__(const size_t size, void *start, const void *end) {
|
||||
T_sort__(size, start, end, T_less(T));
|
||||
}
|
||||
#define T_sort_default(T) T_sort_default__
|
||||
#endif
|
||||
|
||||
#ifndef for_i
|
||||
#define for_i(i, range, inner) \
|
||||
{ \
|
||||
int i; \
|
||||
for (i = 0; i < range; i++) \
|
||||
inner; \
|
||||
}
|
||||
#endif
|
||||
|
||||
int main() {
|
||||
int n, a[301] = {0};
|
||||
|
||||
Reference in New Issue
Block a user