Compare commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
99f08e2b6e | ||
|
|
47ece66520 | ||
|
|
2c1eb41280 | ||
|
|
53960a3bce | ||
|
|
e4dbeae46d | ||
|
|
32deb8356c | ||
|
|
3593957bb8 | ||
|
|
a8735889c7 | ||
|
|
655b7fa825 | ||
|
|
78fe5c2b09 | ||
|
|
015d14216f | ||
|
|
a46ba1f255 |
No files matched your search
@@ -62,3 +62,5 @@ build
|
||||
|
||||
tests/coverage
|
||||
tests/out
|
||||
|
||||
cmake
|
||||
@@ -0,0 +1,18 @@
|
||||
cmake_minimum_required(VERSION 3.8)
|
||||
|
||||
project(cmc)
|
||||
|
||||
set(CMAKE_EXPORT_COMPILE_COMMANDS ON)
|
||||
|
||||
file(GLOB_RECURSE sources
|
||||
"./tests/main.c"
|
||||
)
|
||||
|
||||
add_definitions(-DCMC_CALLBACKS)
|
||||
|
||||
add_executable(cmc ${sources})
|
||||
|
||||
target_include_directories(cmc PUBLIC
|
||||
"./"
|
||||
)
|
||||
|
||||
@@ -8,6 +8,7 @@ help:
|
||||
@echo - bench: runs benchmarks
|
||||
@echo - docbuild: builds documentation to ./docs
|
||||
@echo - docserve: serves mdbook docs
|
||||
@echo - install_dev_deps: install dev dependencies
|
||||
|
||||
tests:
|
||||
make -C ./tests
|
||||
@@ -26,3 +27,12 @@ docbuild:
|
||||
|
||||
docserve:
|
||||
mdbook serve documentation
|
||||
|
||||
install_dev_deps:
|
||||
sudo apt install gcc make valgrind lcov clang-format hyperfine clangd cmake
|
||||
cargo install mdbook
|
||||
|
||||
build_clangd:
|
||||
cmake -S . -G "Unix Makefiles" -B cmake
|
||||
|
||||
.PHONY: tests tests_dev format bench docbuild docserve install_dev_deps
|
||||
+5
-1
@@ -1,7 +1,11 @@
|
||||
CC=gcc
|
||||
INCLUDE=-I ../src
|
||||
INCLUDE=-I ..
|
||||
CFLAGS=-Wall -Wextra -Werror
|
||||
|
||||
benchmark: benchmark.c
|
||||
$(CC) $(CFLAGS) $(INCLUDE) $< -o ./$@.exe -lm
|
||||
./$@.exe
|
||||
|
||||
clean:
|
||||
rm *.exe -f
|
||||
rm *.txt -f
|
||||
@@ -1,4 +1,4 @@
|
||||
INCLUDE=-I ../../../src
|
||||
INCLUDE=-I ../../..
|
||||
CFLAGS=-O3 -Wall -Wextra -Werror -DCOUNT=20000000 -DCMC_NO_CALLBACKS
|
||||
|
||||
# Install hyperfine
|
||||
@@ -15,4 +15,5 @@ build:
|
||||
g++ unorderedmap.cpp $(INCLUDE) -o unorderedmap.exe $(CFLAGS)
|
||||
|
||||
clean:
|
||||
rm *.exe
|
||||
rm *.exe -f
|
||||
rm *.txt -f
|
||||
@@ -1,7 +1,7 @@
|
||||
/**
|
||||
* Copyright (c) 2019 Leonardo Vencovsky
|
||||
*
|
||||
* This file is part of the C Macro Collections Libray.
|
||||
* This file is part of the C Macro Collections Library.
|
||||
*
|
||||
* Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
* of this software and associated documentation files (the "Software"), to deal
|
||||
@@ -1,7 +1,7 @@
|
||||
/**
|
||||
* Copyright (c) 2019 Leonardo Vencovsky
|
||||
*
|
||||
* This file is part of the C Macro Collections Libray.
|
||||
* This file is part of the C Macro Collections Library.
|
||||
*
|
||||
* Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
* of this software and associated documentation files (the "Software"), to deal
|
||||
@@ -34,8 +34,7 @@ struct SNAME *CMC_(PFX, _new)(size_t n_bits)
|
||||
return CMC_(PFX, _new_custom)(n_bits, NULL, NULL);
|
||||
}
|
||||
|
||||
struct SNAME *CMC_(PFX, _new_custom)(size_t n_bits, struct CMC_ALLOC_NODE_NAME *alloc,
|
||||
struct CMC_CALLBACKS_NAME *callbacks)
|
||||
struct SNAME *CMC_(PFX, _new_custom)(size_t n_bits, CMC_ALLOC_TYPE alloc, CMC_CALLBACK_TYPE callbacks)
|
||||
{
|
||||
#ifdef CMC_DEV
|
||||
CMC_DEV_FCALL;
|
||||
@@ -81,8 +80,7 @@ struct SNAME CMC_(PFX, _init)(size_t n_bits)
|
||||
return CMC_(PFX, _init_custom)(n_bits, NULL, NULL);
|
||||
}
|
||||
|
||||
struct SNAME CMC_(PFX, _init_custom)(size_t n_bits, struct CMC_ALLOC_NODE_NAME *alloc,
|
||||
struct CMC_CALLBACKS_NAME *CMC_UNUSED(callbacks))
|
||||
struct SNAME CMC_(PFX, _init_custom)(size_t n_bits, CMC_ALLOC_TYPE alloc, CMC_CALLBACK_TYPE callbacks)
|
||||
{
|
||||
#ifdef CMC_DEV
|
||||
CMC_DEV_FCALL;
|
||||
@@ -132,8 +130,7 @@ void CMC_(PFX, _release)(struct SNAME _bitset_)
|
||||
free(_bitset_.buffer);
|
||||
}
|
||||
|
||||
void CMC_(PFX, _customize)(struct SNAME *_bitset_, struct CMC_ALLOC_NODE_NAME *alloc,
|
||||
struct CMC_CALLBACKS_NAME *callbacks)
|
||||
void CMC_(PFX, _customize)(struct SNAME *_bitset_, CMC_ALLOC_TYPE alloc, CMC_CALLBACK_TYPE callbacks)
|
||||
{
|
||||
#ifdef CMC_DEV
|
||||
CMC_DEV_FCALL;
|
||||
@@ -169,7 +166,7 @@ bool CMC_(PFX, _set)(struct SNAME *_bitset_, size_t bit_index)
|
||||
|
||||
_bitset_->flag = CMC_FLAG_OK;
|
||||
|
||||
CMC_CALLBACKS_CALL(_bitset_, create);
|
||||
CMC_CALLBACKS_CALL(_bitset_);
|
||||
|
||||
return true;
|
||||
}
|
||||
@@ -220,7 +217,7 @@ bool CMC_(PFX, _set_range)(struct SNAME *_bitset_, size_t from, size_t to)
|
||||
|
||||
_bitset_->flag = CMC_FLAG_OK;
|
||||
|
||||
CMC_CALLBACKS_CALL(_bitset_, create);
|
||||
CMC_CALLBACKS_CALL(_bitset_);
|
||||
|
||||
return true;
|
||||
}
|
||||
@@ -243,7 +240,7 @@ bool CMC_(PFX, _clear)(struct SNAME *_bitset_, size_t bit_index)
|
||||
|
||||
_bitset_->flag = CMC_FLAG_OK;
|
||||
|
||||
CMC_CALLBACKS_CALL(_bitset_, delete);
|
||||
CMC_CALLBACKS_CALL(_bitset_);
|
||||
|
||||
return true;
|
||||
}
|
||||
@@ -294,7 +291,7 @@ bool CMC_(PFX, _clear_range)(struct SNAME *_bitset_, size_t from, size_t to)
|
||||
|
||||
_bitset_->flag = CMC_FLAG_OK;
|
||||
|
||||
CMC_CALLBACKS_CALL(_bitset_, delete);
|
||||
CMC_CALLBACKS_CALL(_bitset_);
|
||||
|
||||
return true;
|
||||
}
|
||||
@@ -317,7 +314,7 @@ bool CMC_(PFX, _flip)(struct SNAME *_bitset_, size_t bit_index)
|
||||
|
||||
_bitset_->flag = CMC_FLAG_OK;
|
||||
|
||||
CMC_CALLBACKS_CALL(_bitset_, update);
|
||||
CMC_CALLBACKS_CALL(_bitset_);
|
||||
|
||||
return true;
|
||||
}
|
||||
@@ -368,7 +365,7 @@ bool CMC_(PFX, _flip_range)(struct SNAME *_bitset_, size_t from, size_t to)
|
||||
|
||||
_bitset_->flag = CMC_FLAG_OK;
|
||||
|
||||
CMC_CALLBACKS_CALL(_bitset_, update);
|
||||
CMC_CALLBACKS_CALL(_bitset_);
|
||||
|
||||
return true;
|
||||
}
|
||||
@@ -408,7 +405,7 @@ bool CMC_(PFX, _set_all)(struct SNAME *_bitset_)
|
||||
|
||||
_bitset_->flag = CMC_FLAG_OK;
|
||||
|
||||
CMC_CALLBACKS_CALL(_bitset_, create);
|
||||
CMC_CALLBACKS_CALL(_bitset_);
|
||||
|
||||
return true;
|
||||
}
|
||||
@@ -424,7 +421,7 @@ bool CMC_(PFX, _clear_all)(struct SNAME *_bitset_)
|
||||
|
||||
_bitset_->flag = CMC_FLAG_OK;
|
||||
|
||||
CMC_CALLBACKS_CALL(_bitset_, delete);
|
||||
CMC_CALLBACKS_CALL(_bitset_);
|
||||
|
||||
return true;
|
||||
}
|
||||
@@ -440,7 +437,7 @@ bool CMC_(PFX, _flip_all)(struct SNAME *_bitset_)
|
||||
|
||||
_bitset_->flag = CMC_FLAG_OK;
|
||||
|
||||
CMC_CALLBACKS_CALL(_bitset_, create);
|
||||
CMC_CALLBACKS_CALL(_bitset_);
|
||||
|
||||
return true;
|
||||
}
|
||||
@@ -507,7 +504,7 @@ bool CMC_(PFX, _impl_resize)(struct SNAME *_bitset_, size_t n_bits, bool do_resi
|
||||
|
||||
_bitset_->capacity = words;
|
||||
|
||||
CMC_CALLBACKS_CALL(_bitset_, resize);
|
||||
CMC_CALLBACKS_CALL(_bitset_);
|
||||
|
||||
_bitset_->flag = CMC_FLAG_OK;
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
/**
|
||||
* Copyright (c) 2019 Leonardo Vencovsky
|
||||
*
|
||||
* This file is part of the C Macro Collections Libray.
|
||||
* This file is part of the C Macro Collections Library.
|
||||
*
|
||||
* Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
* of this software and associated documentation files (the "Software"), to deal
|
||||
@@ -1,7 +1,7 @@
|
||||
/**
|
||||
* Copyright (c) 2019 Leonardo Vencovsky
|
||||
*
|
||||
* This file is part of the C Macro Collections Libray.
|
||||
* This file is part of the C Macro Collections Library.
|
||||
*
|
||||
* Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
* of this software and associated documentation files (the "Software"), to deal
|
||||
@@ -1,7 +1,7 @@
|
||||
/**
|
||||
* Copyright (c) 2019 Leonardo Vencovsky
|
||||
*
|
||||
* This file is part of the C Macro Collections Libray.
|
||||
* This file is part of the C Macro Collections Library.
|
||||
*
|
||||
* Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
* of this software and associated documentation files (the "Software"), to deal
|
||||
@@ -1,7 +1,7 @@
|
||||
/**
|
||||
* Copyright (c) 2019 Leonardo Vencovsky
|
||||
*
|
||||
* This file is part of the C Macro Collections Libray.
|
||||
* This file is part of the C Macro Collections Library.
|
||||
*
|
||||
* Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
* of this software and associated documentation files (the "Software"), to deal
|
||||
@@ -24,15 +24,12 @@
|
||||
|
||||
/* Collection Allocation and Deallocation */
|
||||
struct SNAME *CMC_(PFX, _new)(size_t n_bits);
|
||||
struct SNAME *CMC_(PFX, _new_custom)(size_t n_bits, struct CMC_ALLOC_NODE_NAME *alloc,
|
||||
struct CMC_CALLBACKS_NAME *callbacks);
|
||||
struct SNAME *CMC_(PFX, _new_custom)(size_t n_bits, CMC_ALLOC_TYPE alloc, CMC_CALLBACK_TYPE callbacks);
|
||||
struct SNAME CMC_(PFX, _init)(size_t n_bits);
|
||||
struct SNAME CMC_(PFX, _init_custom)(size_t n_bits, struct CMC_ALLOC_NODE_NAME *alloc,
|
||||
struct CMC_CALLBACKS_NAME *callbacks);
|
||||
struct SNAME CMC_(PFX, _init_custom)(size_t n_bits, CMC_ALLOC_TYPE alloc, CMC_CALLBACK_TYPE callbacks);
|
||||
void CMC_(PFX, _free)(struct SNAME *_bitset_);
|
||||
void CMC_(PFX, _release)(struct SNAME _bitset_);
|
||||
void CMC_(PFX, _customize)(struct SNAME *_bitset_, struct CMC_ALLOC_NODE_NAME *alloc,
|
||||
struct CMC_CALLBACKS_NAME *callbacks);
|
||||
void CMC_(PFX, _customize)(struct SNAME *_bitset_, CMC_ALLOC_TYPE alloc, CMC_CALLBACK_TYPE callbacks);
|
||||
/* Collection Input and Output */
|
||||
bool CMC_(PFX, _set)(struct SNAME *_bitset_, size_t bit_index);
|
||||
bool CMC_(PFX, _set_range)(struct SNAME *_bitset_, size_t from, size_t to);
|
||||
@@ -1,7 +1,7 @@
|
||||
/**
|
||||
* Copyright (c) 2019 Leonardo Vencovsky
|
||||
*
|
||||
* This file is part of the C Macro Collections Libray.
|
||||
* This file is part of the C Macro Collections Library.
|
||||
*
|
||||
* Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
* of this software and associated documentation files (the "Software"), to deal
|
||||
@@ -36,7 +36,7 @@ struct SNAME
|
||||
/* Flags indicating errors or success */
|
||||
int flag;
|
||||
/* Custom allocation functions */
|
||||
struct CMC_ALLOC_NODE_NAME *alloc;
|
||||
CMC_ALLOC_TYPE alloc;
|
||||
/* Custom callback functions */
|
||||
CMC_CALLBACKS_DECL;
|
||||
};
|
||||
@@ -1,7 +1,7 @@
|
||||
/**
|
||||
* Copyright (c) 2019 Leonardo Vencovsky
|
||||
*
|
||||
* This file is part of the C Macro Collections Libray.
|
||||
* This file is part of the C Macro Collections Library.
|
||||
*
|
||||
* Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
* of this software and associated documentation files (the "Software"), to deal
|
||||
@@ -44,7 +44,6 @@
|
||||
#endif
|
||||
|
||||
#include "core.h"
|
||||
|
||||
/**
|
||||
* struct cmc_alloc_node
|
||||
*
|
||||
@@ -52,6 +51,9 @@
|
||||
* functions. The cmc_alloc_node_default is the default heap allocator provided
|
||||
* by the standard library.
|
||||
*/
|
||||
|
||||
#define CMC_ALLOC_TYPE struct CMC_ALLOC_NODE_NAME *
|
||||
|
||||
static struct CMC_ALLOC_NODE_NAME
|
||||
{
|
||||
void *(*malloc)(size_t);
|
||||
@@ -1,7 +1,7 @@
|
||||
/**
|
||||
* Copyright (c) 2019 Leonardo Vencovsky
|
||||
*
|
||||
* This file is part of the C Macro Collections Libray.
|
||||
* This file is part of the C Macro Collections Library.
|
||||
*
|
||||
* Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
* of this software and associated documentation files (the "Software"), to deal
|
||||
@@ -1,7 +1,7 @@
|
||||
/**
|
||||
* Copyright (c) 2019 Leonardo Vencovsky
|
||||
*
|
||||
* This file is part of the C Macro Collections Libray.
|
||||
* This file is part of the C Macro Collections Library.
|
||||
*
|
||||
* Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
* of this software and associated documentation files (the "Software"), to deal
|
||||
@@ -35,49 +35,27 @@
|
||||
#ifndef CMC_COR_CALLBACKS_H
|
||||
#define CMC_COR_CALLBACKS_H
|
||||
|
||||
#ifdef CMC_CAMEL_CASE
|
||||
#define CMC_CALLBACKS_NAME CMCCallbacks
|
||||
#else
|
||||
#define CMC_CALLBACKS_NAME cmc_callbacks
|
||||
#endif
|
||||
typedef void (*cmc_callback)(const char func_name[], void *self);
|
||||
#define CMC_CALLBACK_TYPE cmc_callback
|
||||
|
||||
#ifdef CMC_NO_CALLBACKS
|
||||
#ifdef CMC_CALLBACKS
|
||||
|
||||
#define CMC_CALLBACKS_DECL cmc_callback callbacks
|
||||
#define CMC_CALLBACKS_MAYBE_UNUSED(param)
|
||||
#define CMC_CALLBACKS_GET(ds) (ds)->callbacks
|
||||
#define CMC_CALLBACKS_ASSIGN(ds, cb) CMC_CALLBACKS_GET(ds) = cb
|
||||
#define CMC_CALLBACKS_CALL(ds) \
|
||||
if (CMC_CALLBACKS_GET(ds)) \
|
||||
CMC_CALLBACKS_GET(ds)(__func__, (void *)ds);
|
||||
|
||||
#else
|
||||
|
||||
#define CMC_CALLBACKS_DECL
|
||||
#define CMC_CALLBACKS_MAYBE_UNUSED(param) CMC_UNUSED_PARAM(param) /* Prevent -Wunused-parameter */
|
||||
#define CMC_CALLBACKS_GET(ds) NULL /* Helps with compatibility */
|
||||
#define CMC_CALLBACKS_ASSIGN(ds, cb)
|
||||
#define CMC_CALLBACKS_CALL(ds, cb)
|
||||
|
||||
#else
|
||||
|
||||
#define CMC_CALLBACKS_DECL struct CMC_CALLBACKS_NAME *callbacks
|
||||
#define CMC_CALLBACKS_MAYBE_UNUSED(param)
|
||||
#define CMC_CALLBACKS_GET(ds) (ds)->callbacks
|
||||
#define CMC_CALLBACKS_ASSIGN(ds, cb) CMC_CALLBACKS_GET(ds) = cb
|
||||
#define CMC_CALLBACKS_CALL(ds, cb) \
|
||||
if (CMC_CALLBACKS_GET(ds) && CMC_CALLBACKS_GET(ds)->cb) \
|
||||
CMC_CALLBACKS_GET(ds)->cb();
|
||||
#define CMC_CALLBACKS_CALL(ds)
|
||||
|
||||
#endif
|
||||
|
||||
/**
|
||||
* struct cmc_callbacks
|
||||
*
|
||||
* Callback node. Each collection will call one of these functions when:
|
||||
* - create : an element was successfully added to the collection
|
||||
* - read : the collection was successfully queried about an element
|
||||
* - update : an element in the collection was successfully updated
|
||||
* - delete : an element was successfully removed from the collection
|
||||
* - resize : the collection was full and successfully resized
|
||||
*/
|
||||
struct CMC_CALLBACKS_NAME
|
||||
{
|
||||
void (*create)(void);
|
||||
void (*read)(void);
|
||||
void (*update)(void);
|
||||
void (*delete)(void);
|
||||
void (*resize)(void);
|
||||
};
|
||||
|
||||
#endif /* CMC_COR_CALLBACKS_H */
|
||||
@@ -1,7 +1,7 @@
|
||||
/**
|
||||
* Copyright (c) 2019 Leonardo Vencovsky
|
||||
*
|
||||
* This file is part of the C Macro Collections Libray.
|
||||
* This file is part of the C Macro Collections Library.
|
||||
*
|
||||
* Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
* of this software and associated documentation files (the "Software"), to deal
|
||||
@@ -1,7 +1,7 @@
|
||||
/**
|
||||
* Copyright (c) 2019 Leonardo Vencovsky
|
||||
*
|
||||
* This file is part of the C Macro Collections Libray.
|
||||
* This file is part of the C Macro Collections Library.
|
||||
*
|
||||
* Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
* of this software and associated documentation files (the "Software"), to deal
|
||||
@@ -39,6 +39,8 @@
|
||||
* Macros for tracing and debugging data structures when CMC_DEV is enabled
|
||||
*/
|
||||
|
||||
#ifndef CMC_DEV_FCALL
|
||||
#define CMC_DEV_FCALL cmc_log_trace("fcall")
|
||||
#endif
|
||||
|
||||
#endif /* CMC_COR_DEV_H */
|
||||
@@ -1,7 +1,7 @@
|
||||
/**
|
||||
* Copyright (c) 2019 Leonardo Vencovsky
|
||||
*
|
||||
* This file is part of the C Macro Collections Libray.
|
||||
* This file is part of the C Macro Collections Library.
|
||||
*
|
||||
* Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
* of this software and associated documentation files (the "Software"), to deal
|
||||
@@ -56,6 +56,7 @@ enum cmc_flags
|
||||
CMC_FLAG_THREAD = 8, // Generic error regarding threads
|
||||
CMC_FLAG_MUTEX = 9, // Generic error regarding mutexes
|
||||
CMC_FLAG_FULL = 10, // When a collection that doesn't resize is full
|
||||
CMC_FLAG_FTABLE = 11, // When a required ftable function is missing
|
||||
};
|
||||
// clang-format on
|
||||
|
||||
@@ -64,7 +65,8 @@ enum cmc_flags
|
||||
*
|
||||
* Maps the error codes to their character representation.
|
||||
*/
|
||||
CMC_UNUSED static const char *cmc_flags_to_str[11] = { "OK", "ALLOC", "EMPTY", "NOT_FOUND", "INVALID", "RANGE",
|
||||
"DUPLICATE", "ERROR", "THREAD", "MUTEX", "FULL" };
|
||||
CMC_UNUSED static const char *cmc_flags_to_str[12] = {
|
||||
"OK", "ALLOC", "EMPTY", "NOT_FOUND", "INVALID", "RANGE", "DUPLICATE", "ERROR", "THREAD", "MUTEX", "FULL", "FTABLE"
|
||||
};
|
||||
|
||||
#endif /* CMC_COR_FLAGS_H */
|
||||
@@ -1,7 +1,7 @@
|
||||
/**
|
||||
* Copyright (c) 2019 Leonardo Vencovsky
|
||||
*
|
||||
* This file is part of the C Macro Collections Libray.
|
||||
* This file is part of the C Macro Collections Library.
|
||||
*
|
||||
* Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
* of this software and associated documentation files (the "Software"), to deal
|
||||
@@ -1,7 +1,7 @@
|
||||
/**
|
||||
* Copyright (c) 2019 Leonardo Vencovsky
|
||||
*
|
||||
* This file is part of the C Macro Collections Libray.
|
||||
* This file is part of the C Macro Collections Library.
|
||||
*
|
||||
* Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
* of this software and associated documentation files (the "Software"), to deal
|
||||
@@ -1,7 +1,7 @@
|
||||
/**
|
||||
* Copyright (c) 2019 Leonardo Vencovsky
|
||||
*
|
||||
* This file is part of the C Macro Collections Libray.
|
||||
* This file is part of the C Macro Collections Library.
|
||||
*
|
||||
* Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
* of this software and associated documentation files (the "Software"), to deal
|
||||
@@ -1,7 +1,7 @@
|
||||
/**
|
||||
* Copyright (c) 2019 Leonardo Vencovsky
|
||||
*
|
||||
* This file is part of the C Macro Collections Libray.
|
||||
* This file is part of the C Macro Collections Library.
|
||||
*
|
||||
* Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
* of this software and associated documentation files (the "Software"), to deal
|
||||
@@ -1,7 +1,7 @@
|
||||
/**
|
||||
* Copyright (c) 2019 Leonardo Vencovsky
|
||||
*
|
||||
* This file is part of the C Macro Collections Libray.
|
||||
* This file is part of the C Macro Collections Library.
|
||||
*
|
||||
* Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
* of this software and associated documentation files (the "Software"), to deal
|
||||
@@ -1,7 +1,7 @@
|
||||
/**
|
||||
* Copyright (c) 2019 Leonardo Vencovsky
|
||||
*
|
||||
* This file is part of the C Macro Collections Libray.
|
||||
* This file is part of the C Macro Collections Library.
|
||||
*
|
||||
* Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
* of this software and associated documentation files (the "Software"), to deal
|
||||
@@ -34,8 +34,8 @@ struct SNAME *CMC_(PFX, _new)(size_t capacity, struct CMC_DEF_FVAL(SNAME) * f_va
|
||||
return CMC_(PFX, _new_custom)(capacity, f_val, NULL, NULL);
|
||||
}
|
||||
|
||||
struct SNAME *CMC_(PFX, _new_custom)(size_t capacity, struct CMC_DEF_FVAL(SNAME) * f_val,
|
||||
struct CMC_ALLOC_NODE_NAME *alloc, struct CMC_CALLBACKS_NAME *callbacks)
|
||||
struct SNAME *CMC_(PFX, _new_custom)(size_t capacity, struct CMC_DEF_FVAL(SNAME) * f_val, CMC_ALLOC_TYPE alloc,
|
||||
CMC_CALLBACK_TYPE callbacks)
|
||||
{
|
||||
#ifdef CMC_DEV
|
||||
CMC_DEV_FCALL;
|
||||
@@ -122,8 +122,7 @@ void CMC_(PFX, _free)(struct SNAME *_deque_)
|
||||
_deque_->alloc->free(_deque_);
|
||||
}
|
||||
|
||||
void CMC_(PFX, _customize)(struct SNAME *_deque_, struct CMC_ALLOC_NODE_NAME *alloc,
|
||||
struct CMC_CALLBACKS_NAME *callbacks)
|
||||
void CMC_(PFX, _customize)(struct SNAME *_deque_, CMC_ALLOC_TYPE alloc, CMC_CALLBACK_TYPE callbacks)
|
||||
{
|
||||
#ifdef CMC_DEV
|
||||
CMC_DEV_FCALL;
|
||||
@@ -160,7 +159,7 @@ bool CMC_(PFX, _push_front)(struct SNAME *_deque_, V value)
|
||||
_deque_->count++;
|
||||
_deque_->flag = CMC_FLAG_OK;
|
||||
|
||||
CMC_CALLBACKS_CALL(_deque_, create);
|
||||
CMC_CALLBACKS_CALL(_deque_);
|
||||
|
||||
return true;
|
||||
}
|
||||
@@ -184,7 +183,7 @@ bool CMC_(PFX, _push_back)(struct SNAME *_deque_, V value)
|
||||
_deque_->count++;
|
||||
_deque_->flag = CMC_FLAG_OK;
|
||||
|
||||
CMC_CALLBACKS_CALL(_deque_, create);
|
||||
CMC_CALLBACKS_CALL(_deque_);
|
||||
|
||||
return true;
|
||||
}
|
||||
@@ -208,7 +207,7 @@ bool CMC_(PFX, _pop_front)(struct SNAME *_deque_)
|
||||
_deque_->count--;
|
||||
_deque_->flag = CMC_FLAG_OK;
|
||||
|
||||
CMC_CALLBACKS_CALL(_deque_, delete);
|
||||
CMC_CALLBACKS_CALL(_deque_);
|
||||
|
||||
return true;
|
||||
}
|
||||
@@ -232,7 +231,7 @@ bool CMC_(PFX, _pop_back)(struct SNAME *_deque_)
|
||||
_deque_->count--;
|
||||
_deque_->flag = CMC_FLAG_OK;
|
||||
|
||||
CMC_CALLBACKS_CALL(_deque_, delete);
|
||||
CMC_CALLBACKS_CALL(_deque_);
|
||||
|
||||
return true;
|
||||
}
|
||||
@@ -251,7 +250,7 @@ V CMC_(PFX, _front)(struct SNAME *_deque_)
|
||||
|
||||
_deque_->flag = CMC_FLAG_OK;
|
||||
|
||||
CMC_CALLBACKS_CALL(_deque_, read);
|
||||
CMC_CALLBACKS_CALL(_deque_);
|
||||
|
||||
return _deque_->buffer[_deque_->front];
|
||||
}
|
||||
@@ -270,7 +269,7 @@ V CMC_(PFX, _back)(struct SNAME *_deque_)
|
||||
|
||||
_deque_->flag = CMC_FLAG_OK;
|
||||
|
||||
CMC_CALLBACKS_CALL(_deque_, read);
|
||||
CMC_CALLBACKS_CALL(_deque_);
|
||||
|
||||
return _deque_->buffer[(_deque_->back == 0) ? _deque_->capacity - 1 : _deque_->back - 1];
|
||||
}
|
||||
@@ -296,7 +295,7 @@ bool CMC_(PFX, _contains)(struct SNAME *_deque_, V value)
|
||||
i = (i + 1) % _deque_->capacity;
|
||||
}
|
||||
|
||||
CMC_CALLBACKS_CALL(_deque_, read);
|
||||
CMC_CALLBACKS_CALL(_deque_);
|
||||
|
||||
return result;
|
||||
}
|
||||
@@ -387,7 +386,7 @@ bool CMC_(PFX, _resize)(struct SNAME *_deque_, size_t capacity)
|
||||
|
||||
success:
|
||||
|
||||
CMC_CALLBACKS_CALL(_deque_, resize);
|
||||
CMC_CALLBACKS_CALL(_deque_);
|
||||
|
||||
return true;
|
||||
}
|
||||
@@ -1,7 +1,7 @@
|
||||
/**
|
||||
* Copyright (c) 2019 Leonardo Vencovsky
|
||||
*
|
||||
* This file is part of the C Macro Collections Libray.
|
||||
* This file is part of the C Macro Collections Library.
|
||||
*
|
||||
* Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
* of this software and associated documentation files (the "Software"), to deal
|
||||
@@ -39,8 +39,8 @@ struct SNAME CMC_(PFX, _init)(size_t capacity, struct CMC_DEF_FVAL(SNAME) * f_va
|
||||
return CMC_(PFX, _init_custom)(capacity, f_val, NULL, NULL);
|
||||
}
|
||||
|
||||
struct SNAME CMC_(PFX, _init_custom)(size_t capacity, struct CMC_DEF_FVAL(SNAME) * f_val,
|
||||
struct CMC_ALLOC_NODE_NAME *alloc, struct CMC_CALLBACKS_NAME *callbacks)
|
||||
struct SNAME CMC_(PFX, _init_custom)(size_t capacity, struct CMC_DEF_FVAL(SNAME) * f_val, CMC_ALLOC_TYPE alloc,
|
||||
CMC_CALLBACK_TYPE callbacks)
|
||||
{
|
||||
#ifdef CMC_DEV
|
||||
CMC_DEV_FCALL;
|
||||
@@ -1,7 +1,7 @@
|
||||
/**
|
||||
* Copyright (c) 2019 Leonardo Vencovsky
|
||||
*
|
||||
* This file is part of the C Macro Collections Libray.
|
||||
* This file is part of the C Macro Collections Library.
|
||||
*
|
||||
* Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
* of this software and associated documentation files (the "Software"), to deal
|
||||
@@ -31,8 +31,8 @@
|
||||
#ifdef CMC_EXT_INIT
|
||||
|
||||
struct SNAME CMC_(PFX, _init)(size_t capacity, struct CMC_DEF_FVAL(SNAME) * f_val);
|
||||
struct SNAME CMC_(PFX, _init_custom)(size_t capacity, struct CMC_DEF_FVAL(SNAME) * f_val,
|
||||
struct CMC_ALLOC_NODE_NAME *alloc, struct CMC_CALLBACKS_NAME *callbacks);
|
||||
struct SNAME CMC_(PFX, _init_custom)(size_t capacity, struct CMC_DEF_FVAL(SNAME) * f_val, CMC_ALLOC_TYPE alloc,
|
||||
CMC_CALLBACK_TYPE callbacks);
|
||||
void CMC_(PFX, _release)(struct SNAME _deque_);
|
||||
|
||||
#endif /* CMC_EXT_INIT */
|
||||
@@ -1,7 +1,7 @@
|
||||
/**
|
||||
* Copyright (c) 2019 Leonardo Vencovsky
|
||||
*
|
||||
* This file is part of the C Macro Collections Libray.
|
||||
* This file is part of the C Macro Collections Library.
|
||||
*
|
||||
* Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
* of this software and associated documentation files (the "Software"), to deal
|
||||
@@ -1,7 +1,7 @@
|
||||
/**
|
||||
* Copyright (c) 2019 Leonardo Vencovsky
|
||||
*
|
||||
* This file is part of the C Macro Collections Libray.
|
||||
* This file is part of the C Macro Collections Library.
|
||||
*
|
||||
* Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
* of this software and associated documentation files (the "Software"), to deal
|
||||
@@ -41,13 +41,12 @@ struct CMC_DEF_FVAL(SNAME)
|
||||
|
||||
/* Collection Allocation and Deallocation */
|
||||
struct SNAME *CMC_(PFX, _new)(size_t capacity, struct CMC_DEF_FVAL(SNAME) * f_val);
|
||||
struct SNAME *CMC_(PFX, _new_custom)(size_t capacity, struct CMC_DEF_FVAL(SNAME) * f_val,
|
||||
struct CMC_ALLOC_NODE_NAME *alloc, struct CMC_CALLBACKS_NAME *callbacks);
|
||||
struct SNAME *CMC_(PFX, _new_custom)(size_t capacity, struct CMC_DEF_FVAL(SNAME) * f_val, CMC_ALLOC_TYPE alloc,
|
||||
CMC_CALLBACK_TYPE callbacks);
|
||||
void CMC_(PFX, _clear)(struct SNAME *_deque_);
|
||||
void CMC_(PFX, _free)(struct SNAME *_deque_);
|
||||
/* Customization of Allocation and Callbacks */
|
||||
void CMC_(PFX, _customize)(struct SNAME *_deque_, struct CMC_ALLOC_NODE_NAME *alloc,
|
||||
struct CMC_CALLBACKS_NAME *callbacks);
|
||||
void CMC_(PFX, _customize)(struct SNAME *_deque_, CMC_ALLOC_TYPE alloc, CMC_CALLBACK_TYPE callbacks);
|
||||
/* Collection Input and Output */
|
||||
bool CMC_(PFX, _push_front)(struct SNAME *_deque_, V value);
|
||||
bool CMC_(PFX, _push_back)(struct SNAME *_deque_, V value);
|
||||
@@ -1,7 +1,7 @@
|
||||
/**
|
||||
* Copyright (c) 2019 Leonardo Vencovsky
|
||||
*
|
||||
* This file is part of the C Macro Collections Libray.
|
||||
* This file is part of the C Macro Collections Library.
|
||||
*
|
||||
* Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
* of this software and associated documentation files (the "Software"), to deal
|
||||
@@ -39,7 +39,7 @@ struct SNAME
|
||||
/* Functions Table */
|
||||
struct CMC_DEF_FVAL(SNAME) * f_val;
|
||||
/* Custom allocation functions */
|
||||
struct CMC_ALLOC_NODE_NAME *alloc;
|
||||
CMC_ALLOC_TYPE alloc;
|
||||
/* Custom callback functions */
|
||||
CMC_CALLBACKS_DECL;
|
||||
};
|
||||
@@ -1,7 +1,7 @@
|
||||
/**
|
||||
* Copyright (c) 2019 Leonardo Vencovsky
|
||||
*
|
||||
* This file is part of the C Macro Collections Libray.
|
||||
* This file is part of the C Macro Collections Library.
|
||||
*
|
||||
* Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
* of this software and associated documentation files (the "Software"), to deal
|
||||
@@ -1,7 +1,7 @@
|
||||
/**
|
||||
* Copyright (c) 2019 Leonardo Vencovsky
|
||||
*
|
||||
* This file is part of the C Macro Collections Libray.
|
||||
* This file is part of the C Macro Collections Library.
|
||||
*
|
||||
* Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
* of this software and associated documentation files (the "Software"), to deal
|
||||
@@ -43,8 +43,8 @@ struct SNAME *CMC_(PFX, _new)(size_t capacity, double load, struct CMC_DEF_FKEY(
|
||||
}
|
||||
|
||||
struct SNAME *CMC_(PFX, _new_custom)(size_t capacity, double load, struct CMC_DEF_FKEY(SNAME) * f_key,
|
||||
struct CMC_DEF_FVAL(SNAME) * f_val, struct CMC_ALLOC_NODE_NAME *alloc,
|
||||
struct CMC_CALLBACKS_NAME *callbacks)
|
||||
struct CMC_DEF_FVAL(SNAME) * f_val, CMC_ALLOC_TYPE alloc,
|
||||
CMC_CALLBACK_TYPE callbacks)
|
||||
{
|
||||
#ifdef CMC_DEV
|
||||
CMC_DEV_FCALL;
|
||||
@@ -134,7 +134,7 @@ void CMC_(PFX, _free)(struct SNAME *_map_)
|
||||
_map_->alloc->free(_map_);
|
||||
}
|
||||
|
||||
void CMC_(PFX, _customize)(struct SNAME *_map_, struct CMC_ALLOC_NODE_NAME *alloc, struct CMC_CALLBACKS_NAME *callbacks)
|
||||
void CMC_(PFX, _customize)(struct SNAME *_map_, CMC_ALLOC_TYPE alloc, CMC_CALLBACK_TYPE callbacks)
|
||||
{
|
||||
#ifdef CMC_DEV
|
||||
CMC_DEV_FCALL;
|
||||
@@ -193,7 +193,7 @@ bool CMC_(PFX, _insert)(struct SNAME *_map_, K key, V value)
|
||||
_map_->count++;
|
||||
_map_->flag = CMC_FLAG_OK;
|
||||
|
||||
CMC_CALLBACKS_CALL(_map_, create);
|
||||
CMC_CALLBACKS_CALL(_map_);
|
||||
|
||||
return true;
|
||||
}
|
||||
@@ -260,7 +260,7 @@ success:
|
||||
|
||||
_map_->flag = CMC_FLAG_OK;
|
||||
|
||||
CMC_CALLBACKS_CALL(_map_, update);
|
||||
CMC_CALLBACKS_CALL(_map_);
|
||||
|
||||
return true;
|
||||
}
|
||||
@@ -328,7 +328,7 @@ success:
|
||||
|
||||
_map_->flag = CMC_FLAG_OK;
|
||||
|
||||
CMC_CALLBACKS_CALL(_map_, update);
|
||||
CMC_CALLBACKS_CALL(_map_);
|
||||
|
||||
return true;
|
||||
}
|
||||
@@ -377,7 +377,7 @@ bool CMC_(PFX, _remove_by_key)(struct SNAME *_map_, K key, K *out_key, V *out_va
|
||||
_map_->count--;
|
||||
_map_->flag = CMC_FLAG_OK;
|
||||
|
||||
CMC_CALLBACKS_CALL(_map_, delete);
|
||||
CMC_CALLBACKS_CALL(_map_);
|
||||
|
||||
return true;
|
||||
}
|
||||
@@ -426,7 +426,7 @@ bool CMC_(PFX, _remove_by_val)(struct SNAME *_map_, V val, K *out_key, V *out_va
|
||||
_map_->count--;
|
||||
_map_->flag = CMC_FLAG_OK;
|
||||
|
||||
CMC_CALLBACKS_CALL(_map_, delete);
|
||||
CMC_CALLBACKS_CALL(_map_);
|
||||
|
||||
return true;
|
||||
}
|
||||
@@ -447,7 +447,7 @@ K CMC_(PFX, _get_key)(struct SNAME *_map_, V val)
|
||||
|
||||
_map_->flag = CMC_FLAG_OK;
|
||||
|
||||
CMC_CALLBACKS_CALL(_map_, read);
|
||||
CMC_CALLBACKS_CALL(_map_);
|
||||
|
||||
return (*entry)->key;
|
||||
}
|
||||
@@ -468,7 +468,7 @@ V CMC_(PFX, _get_val)(struct SNAME *_map_, K key)
|
||||
|
||||
_map_->flag = CMC_FLAG_OK;
|
||||
|
||||
CMC_CALLBACKS_CALL(_map_, read);
|
||||
CMC_CALLBACKS_CALL(_map_);
|
||||
|
||||
return (*entry)->value;
|
||||
}
|
||||
@@ -483,7 +483,7 @@ bool CMC_(PFX, _contains_key)(struct SNAME *_map_, K key)
|
||||
|
||||
bool result = CMC_(PFX, _impl_get_entry_by_key)(_map_, key) != NULL;
|
||||
|
||||
CMC_CALLBACKS_CALL(_map_, read);
|
||||
CMC_CALLBACKS_CALL(_map_);
|
||||
|
||||
return result;
|
||||
}
|
||||
@@ -498,7 +498,7 @@ bool CMC_(PFX, _contains_val)(struct SNAME *_map_, V val)
|
||||
|
||||
bool result = CMC_(PFX, _impl_get_entry_by_val)(_map_, val) != NULL;
|
||||
|
||||
CMC_CALLBACKS_CALL(_map_, read);
|
||||
CMC_CALLBACKS_CALL(_map_);
|
||||
|
||||
return result;
|
||||
}
|
||||
@@ -649,7 +649,7 @@ bool CMC_(PFX, _resize)(struct SNAME *_map_, size_t capacity)
|
||||
|
||||
success:
|
||||
|
||||
CMC_CALLBACKS_CALL(_map_, resize);
|
||||
CMC_CALLBACKS_CALL(_map_);
|
||||
|
||||
return true;
|
||||
}
|
||||
@@ -1,7 +1,7 @@
|
||||
/**
|
||||
* Copyright (c) 2019 Leonardo Vencovsky
|
||||
*
|
||||
* This file is part of the C Macro Collections Libray.
|
||||
* This file is part of the C Macro Collections Library.
|
||||
*
|
||||
* Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
* of this software and associated documentation files (the "Software"), to deal
|
||||
@@ -41,8 +41,8 @@ struct SNAME CMC_(PFX, _init)(size_t capacity, double load, struct CMC_DEF_FKEY(
|
||||
}
|
||||
|
||||
struct SNAME CMC_(PFX, _init_custom)(size_t capacity, double load, struct CMC_DEF_FKEY(SNAME) * f_key,
|
||||
struct CMC_DEF_FVAL(SNAME) * f_val, struct CMC_ALLOC_NODE_NAME *alloc,
|
||||
struct CMC_CALLBACKS_NAME *callbacks)
|
||||
struct CMC_DEF_FVAL(SNAME) * f_val, CMC_ALLOC_TYPE alloc,
|
||||
CMC_CALLBACK_TYPE callbacks)
|
||||
{
|
||||
#ifdef CMC_DEV
|
||||
CMC_DEV_FCALL;
|
||||
@@ -1,7 +1,7 @@
|
||||
/**
|
||||
* Copyright (c) 2019 Leonardo Vencovsky
|
||||
*
|
||||
* This file is part of the C Macro Collections Libray.
|
||||
* This file is part of the C Macro Collections Library.
|
||||
*
|
||||
* Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
* of this software and associated documentation files (the "Software"), to deal
|
||||
@@ -33,8 +33,8 @@
|
||||
struct SNAME CMC_(PFX, _init)(size_t capacity, double load, struct CMC_DEF_FKEY(SNAME) * f_key,
|
||||
struct CMC_DEF_FVAL(SNAME) * f_val);
|
||||
struct SNAME CMC_(PFX, _init_custom)(size_t capacity, double load, struct CMC_DEF_FKEY(SNAME) * f_key,
|
||||
struct CMC_DEF_FVAL(SNAME) * f_val, struct CMC_ALLOC_NODE_NAME *alloc,
|
||||
struct CMC_CALLBACKS_NAME *callbacks);
|
||||
struct CMC_DEF_FVAL(SNAME) * f_val, CMC_ALLOC_TYPE alloc,
|
||||
CMC_CALLBACK_TYPE callbacks);
|
||||
void CMC_(PFX, _release)(struct SNAME _map_);
|
||||
|
||||
#endif /* CMC_EXT_INIT */
|
||||
@@ -1,7 +1,7 @@
|
||||
/**
|
||||
* Copyright (c) 2019 Leonardo Vencovsky
|
||||
*
|
||||
* This file is part of the C Macro Collections Libray.
|
||||
* This file is part of the C Macro Collections Library.
|
||||
*
|
||||
* Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
* of this software and associated documentation files (the "Software"), to deal
|
||||
@@ -1,7 +1,7 @@
|
||||
/**
|
||||
* Copyright (c) 2019 Leonardo Vencovsky
|
||||
*
|
||||
* This file is part of the C Macro Collections Libray.
|
||||
* This file is part of the C Macro Collections Library.
|
||||
*
|
||||
* Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
* of this software and associated documentation files (the "Software"), to deal
|
||||
@@ -60,13 +60,12 @@ struct CMC_DEF_FVAL(SNAME)
|
||||
struct SNAME *CMC_(PFX, _new)(size_t capacity, double load, struct CMC_DEF_FKEY(SNAME) * f_key,
|
||||
struct CMC_DEF_FVAL(SNAME) * f_val);
|
||||
struct SNAME *CMC_(PFX, _new_custom)(size_t capacity, double load, struct CMC_DEF_FKEY(SNAME) * f_key,
|
||||
struct CMC_DEF_FVAL(SNAME) * f_val, struct CMC_ALLOC_NODE_NAME *alloc,
|
||||
struct CMC_CALLBACKS_NAME *callbacks);
|
||||
struct CMC_DEF_FVAL(SNAME) * f_val, CMC_ALLOC_TYPE alloc,
|
||||
CMC_CALLBACK_TYPE callbacks);
|
||||
void CMC_(PFX, _clear)(struct SNAME *_map_);
|
||||
void CMC_(PFX, _free)(struct SNAME *_map_);
|
||||
/* Customization of Allocation and Callbacks */
|
||||
void CMC_(PFX, _customize)(struct SNAME *_map_, struct CMC_ALLOC_NODE_NAME *alloc,
|
||||
struct CMC_CALLBACKS_NAME *callbacks);
|
||||
void CMC_(PFX, _customize)(struct SNAME *_map_, CMC_ALLOC_TYPE alloc, CMC_CALLBACK_TYPE callbacks);
|
||||
/* Collection Input and Output */
|
||||
bool CMC_(PFX, _insert)(struct SNAME *_map_, K key, V value);
|
||||
bool CMC_(PFX, _update_key)(struct SNAME *_map_, V val, K new_key);
|
||||
@@ -1,7 +1,7 @@
|
||||
/**
|
||||
* Copyright (c) 2019 Leonardo Vencovsky
|
||||
*
|
||||
* This file is part of the C Macro Collections Libray.
|
||||
* This file is part of the C Macro Collections Library.
|
||||
*
|
||||
* Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
* of this software and associated documentation files (the "Software"), to deal
|
||||
@@ -39,7 +39,7 @@ struct SNAME
|
||||
/* Value function table */
|
||||
struct CMC_DEF_FVAL(SNAME) * f_val;
|
||||
/* Custom allocation functions */
|
||||
struct CMC_ALLOC_NODE_NAME *alloc;
|
||||
CMC_ALLOC_TYPE alloc;
|
||||
/* Custom callback functions */
|
||||
CMC_CALLBACKS_DECL;
|
||||
/* Methods */
|
||||
@@ -1,7 +1,7 @@
|
||||
/**
|
||||
* Copyright (c) 2019 Leonardo Vencovsky
|
||||
*
|
||||
* This file is part of the C Macro Collections Libray.
|
||||
* This file is part of the C Macro Collections Library.
|
||||
*
|
||||
* Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
* of this software and associated documentation files (the "Software"), to deal
|
||||
@@ -1,7 +1,7 @@
|
||||
/**
|
||||
* Copyright (c) 2019 Leonardo Vencovsky
|
||||
*
|
||||
* This file is part of the C Macro Collections Libray.
|
||||
* This file is part of the C Macro Collections Library.
|
||||
*
|
||||
* Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
* of this software and associated documentation files (the "Software"), to deal
|
||||
@@ -33,8 +33,8 @@ struct SNAME *CMC_(PFX, _new)(size_t capacity, double load, struct CMC_DEF_FKEY(
|
||||
}
|
||||
|
||||
struct SNAME *CMC_(PFX, _new_custom)(size_t capacity, double load, struct CMC_DEF_FKEY(SNAME) * f_key,
|
||||
struct CMC_DEF_FVAL(SNAME) * f_val, struct CMC_ALLOC_NODE_NAME *alloc,
|
||||
struct CMC_CALLBACKS_NAME *callbacks)
|
||||
struct CMC_DEF_FVAL(SNAME) * f_val, CMC_ALLOC_TYPE alloc,
|
||||
CMC_CALLBACK_TYPE callbacks)
|
||||
{
|
||||
#ifdef CMC_DEV
|
||||
CMC_DEV_FCALL;
|
||||
@@ -136,7 +136,7 @@ void CMC_(PFX, _free)(struct SNAME *_map_)
|
||||
_map_->alloc->free(_map_);
|
||||
}
|
||||
|
||||
void CMC_(PFX, _customize)(struct SNAME *_map_, struct CMC_ALLOC_NODE_NAME *alloc, struct CMC_CALLBACKS_NAME *callbacks)
|
||||
void CMC_(PFX, _customize)(struct SNAME *_map_, CMC_ALLOC_TYPE alloc, CMC_CALLBACK_TYPE callbacks)
|
||||
{
|
||||
#ifdef CMC_DEV
|
||||
CMC_DEV_FCALL;
|
||||
@@ -221,7 +221,7 @@ bool CMC_(PFX, _insert)(struct SNAME *_map_, K key, V value)
|
||||
_map_->count++;
|
||||
_map_->flag = CMC_FLAG_OK;
|
||||
|
||||
CMC_CALLBACKS_CALL(_map_, create);
|
||||
CMC_CALLBACKS_CALL(_map_);
|
||||
|
||||
return true;
|
||||
}
|
||||
@@ -253,7 +253,7 @@ bool CMC_(PFX, _update)(struct SNAME *_map_, K key, V new_value, V *old_value)
|
||||
|
||||
_map_->flag = CMC_FLAG_OK;
|
||||
|
||||
CMC_CALLBACKS_CALL(_map_, update);
|
||||
CMC_CALLBACKS_CALL(_map_);
|
||||
|
||||
return true;
|
||||
}
|
||||
@@ -289,7 +289,7 @@ bool CMC_(PFX, _remove)(struct SNAME *_map_, K key, V *out_value)
|
||||
_map_->count--;
|
||||
_map_->flag = CMC_FLAG_OK;
|
||||
|
||||
CMC_CALLBACKS_CALL(_map_, delete);
|
||||
CMC_CALLBACKS_CALL(_map_);
|
||||
|
||||
return true;
|
||||
}
|
||||
@@ -335,7 +335,7 @@ bool CMC_(PFX, _max)(struct SNAME *_map_, K *key, V *value)
|
||||
|
||||
_map_->flag = CMC_FLAG_OK;
|
||||
|
||||
CMC_CALLBACKS_CALL(_map_, read);
|
||||
CMC_CALLBACKS_CALL(_map_);
|
||||
|
||||
return true;
|
||||
}
|
||||
@@ -381,7 +381,7 @@ bool CMC_(PFX, _min)(struct SNAME *_map_, K *key, V *value)
|
||||
|
||||
_map_->flag = CMC_FLAG_OK;
|
||||
|
||||
CMC_CALLBACKS_CALL(_map_, read);
|
||||
CMC_CALLBACKS_CALL(_map_);
|
||||
|
||||
return true;
|
||||
}
|
||||
@@ -408,7 +408,7 @@ V CMC_(PFX, _get)(struct SNAME *_map_, K key)
|
||||
|
||||
_map_->flag = CMC_FLAG_OK;
|
||||
|
||||
CMC_CALLBACKS_CALL(_map_, read);
|
||||
CMC_CALLBACKS_CALL(_map_);
|
||||
|
||||
return entry->value;
|
||||
}
|
||||
@@ -435,7 +435,7 @@ V *CMC_(PFX, _get_ref)(struct SNAME *_map_, K key)
|
||||
|
||||
_map_->flag = CMC_FLAG_OK;
|
||||
|
||||
CMC_CALLBACKS_CALL(_map_, read);
|
||||
CMC_CALLBACKS_CALL(_map_);
|
||||
|
||||
return &(entry->value);
|
||||
}
|
||||
@@ -450,7 +450,7 @@ bool CMC_(PFX, _contains)(struct SNAME *_map_, K key)
|
||||
|
||||
bool result = CMC_(PFX, _impl_get_entry)(_map_, key) != NULL;
|
||||
|
||||
CMC_CALLBACKS_CALL(_map_, read);
|
||||
CMC_CALLBACKS_CALL(_map_);
|
||||
|
||||
return result;
|
||||
}
|
||||
@@ -587,7 +587,7 @@ bool CMC_(PFX, _resize)(struct SNAME *_map_, size_t capacity)
|
||||
|
||||
success:
|
||||
|
||||
CMC_CALLBACKS_CALL(_map_, resize);
|
||||
CMC_CALLBACKS_CALL(_map_);
|
||||
|
||||
return true;
|
||||
}
|
||||
@@ -1,7 +1,7 @@
|
||||
/**
|
||||
* Copyright (c) 2019 Leonardo Vencovsky
|
||||
*
|
||||
* This file is part of the C Macro Collections Libray.
|
||||
* This file is part of the C Macro Collections Library.
|
||||
*
|
||||
* Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
* of this software and associated documentation files (the "Software"), to deal
|
||||
@@ -41,8 +41,8 @@ struct SNAME CMC_(PFX, _init)(size_t capacity, double load, struct CMC_DEF_FKEY(
|
||||
}
|
||||
|
||||
struct SNAME CMC_(PFX, _init_custom)(size_t capacity, double load, struct CMC_DEF_FKEY(SNAME) * f_key,
|
||||
struct CMC_DEF_FVAL(SNAME) * f_val, struct CMC_ALLOC_NODE_NAME *alloc,
|
||||
struct CMC_CALLBACKS_NAME *callbacks)
|
||||
struct CMC_DEF_FVAL(SNAME) * f_val, CMC_ALLOC_TYPE alloc,
|
||||
CMC_CALLBACK_TYPE callbacks)
|
||||
{
|
||||
#ifdef CMC_DEV
|
||||
CMC_DEV_FCALL;
|
||||
@@ -1,7 +1,7 @@
|
||||
/**
|
||||
* Copyright (c) 2019 Leonardo Vencovsky
|
||||
*
|
||||
* This file is part of the C Macro Collections Libray.
|
||||
* This file is part of the C Macro Collections Library.
|
||||
*
|
||||
* Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
* of this software and associated documentation files (the "Software"), to deal
|
||||
@@ -33,8 +33,8 @@
|
||||
struct SNAME CMC_(PFX, _init)(size_t capacity, double load, struct CMC_DEF_FKEY(SNAME) * f_key,
|
||||
struct CMC_DEF_FVAL(SNAME) * f_val);
|
||||
struct SNAME CMC_(PFX, _init_custom)(size_t capacity, double load, struct CMC_DEF_FKEY(SNAME) * f_key,
|
||||
struct CMC_DEF_FVAL(SNAME) * f_val, struct CMC_ALLOC_NODE_NAME *alloc,
|
||||
struct CMC_CALLBACKS_NAME *callbacks);
|
||||
struct CMC_DEF_FVAL(SNAME) * f_val, CMC_ALLOC_TYPE alloc,
|
||||
CMC_CALLBACK_TYPE callbacks);
|
||||
void CMC_(PFX, _release)(struct SNAME _map_);
|
||||
|
||||
#endif /* CMC_EXT_INIT */
|
||||
@@ -1,7 +1,7 @@
|
||||
/**
|
||||
* Copyright (c) 2019 Leonardo Vencovsky
|
||||
*
|
||||
* This file is part of the C Macro Collections Libray.
|
||||
* This file is part of the C Macro Collections Library.
|
||||
*
|
||||
* Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
* of this software and associated documentation files (the "Software"), to deal
|
||||
@@ -1,7 +1,7 @@
|
||||
/**
|
||||
* Copyright (c) 2019 Leonardo Vencovsky
|
||||
*
|
||||
* This file is part of the C Macro Collections Libray.
|
||||
* This file is part of the C Macro Collections Library.
|
||||
*
|
||||
* Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
* of this software and associated documentation files (the "Software"), to deal
|
||||
@@ -60,13 +60,12 @@ struct CMC_DEF_FVAL(SNAME)
|
||||
struct SNAME *CMC_(PFX, _new)(size_t capacity, double load, struct CMC_DEF_FKEY(SNAME) * f_key,
|
||||
struct CMC_DEF_FVAL(SNAME) * f_val);
|
||||
struct SNAME *CMC_(PFX, _new_custom)(size_t capacity, double load, struct CMC_DEF_FKEY(SNAME) * f_key,
|
||||
struct CMC_DEF_FVAL(SNAME) * f_val, struct CMC_ALLOC_NODE_NAME *alloc,
|
||||
struct CMC_CALLBACKS_NAME *callbacks);
|
||||
struct CMC_DEF_FVAL(SNAME) * f_val, CMC_ALLOC_TYPE alloc,
|
||||
CMC_CALLBACK_TYPE callbacks);
|
||||
void CMC_(PFX, _clear)(struct SNAME *_map_);
|
||||
void CMC_(PFX, _free)(struct SNAME *_map_);
|
||||
/* Customization of Allocation and Callbacks */
|
||||
void CMC_(PFX, _customize)(struct SNAME *_map_, struct CMC_ALLOC_NODE_NAME *alloc,
|
||||
struct CMC_CALLBACKS_NAME *callbacks);
|
||||
void CMC_(PFX, _customize)(struct SNAME *_map_, CMC_ALLOC_TYPE alloc, CMC_CALLBACK_TYPE callbacks);
|
||||
/* Collection Input and Output */
|
||||
bool CMC_(PFX, _insert)(struct SNAME *_map_, K key, V value);
|
||||
bool CMC_(PFX, _update)(struct SNAME *_map_, K key, V new_value, V *old_value);
|
||||
@@ -1,7 +1,7 @@
|
||||
/**
|
||||
* Copyright (c) 2019 Leonardo Vencovsky
|
||||
*
|
||||
* This file is part of the C Macro Collections Libray.
|
||||
* This file is part of the C Macro Collections Library.
|
||||
*
|
||||
* Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
* of this software and associated documentation files (the "Software"), to deal
|
||||
@@ -40,7 +40,7 @@ struct SNAME
|
||||
/* Value function table */
|
||||
struct CMC_DEF_FVAL(SNAME) * f_val;
|
||||
/* Custom allocation functions */
|
||||
struct CMC_ALLOC_NODE_NAME *alloc;
|
||||
CMC_ALLOC_TYPE alloc;
|
||||
/* Custom callback functions */
|
||||
CMC_CALLBACKS_DECL;
|
||||
};
|
||||
@@ -1,7 +1,7 @@
|
||||
/**
|
||||
* Copyright (c) 2019 Leonardo Vencovsky
|
||||
*
|
||||
* This file is part of the C Macro Collections Libray.
|
||||
* This file is part of the C Macro Collections Library.
|
||||
*
|
||||
* Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
* of this software and associated documentation files (the "Software"), to deal
|
||||
@@ -1,7 +1,7 @@
|
||||
/**
|
||||
* Copyright (c) 2019 Leonardo Vencovsky
|
||||
*
|
||||
* This file is part of the C Macro Collections Libray.
|
||||
* This file is part of the C Macro Collections Library.
|
||||
*
|
||||
* Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
* of this software and associated documentation files (the "Software"), to deal
|
||||
@@ -39,8 +39,8 @@ struct SNAME *CMC_(PFX, _new)(size_t capacity, double load, struct CMC_DEF_FKEY(
|
||||
}
|
||||
|
||||
struct SNAME *CMC_(PFX, _new_custom)(size_t capacity, double load, struct CMC_DEF_FKEY(SNAME) * f_key,
|
||||
struct CMC_DEF_FVAL(SNAME) * f_val, struct CMC_ALLOC_NODE_NAME *alloc,
|
||||
struct CMC_CALLBACKS_NAME *callbacks)
|
||||
struct CMC_DEF_FVAL(SNAME) * f_val, CMC_ALLOC_TYPE alloc,
|
||||
CMC_CALLBACK_TYPE callbacks)
|
||||
{
|
||||
#ifdef CMC_DEV
|
||||
CMC_DEV_FCALL;
|
||||
@@ -167,7 +167,7 @@ void CMC_(PFX, _free)(struct SNAME *_map_)
|
||||
_map_->alloc->free(_map_);
|
||||
}
|
||||
|
||||
void CMC_(PFX, _customize)(struct SNAME *_map_, struct CMC_ALLOC_NODE_NAME *alloc, struct CMC_CALLBACKS_NAME *callbacks)
|
||||
void CMC_(PFX, _customize)(struct SNAME *_map_, CMC_ALLOC_TYPE alloc, CMC_CALLBACK_TYPE callbacks)
|
||||
{
|
||||
#ifdef CMC_DEV
|
||||
CMC_DEV_FCALL;
|
||||
@@ -218,7 +218,7 @@ bool CMC_(PFX, _insert)(struct SNAME *_map_, K key, V value)
|
||||
_map_->count++;
|
||||
_map_->flag = CMC_FLAG_OK;
|
||||
|
||||
CMC_CALLBACKS_CALL(_map_, create);
|
||||
CMC_CALLBACKS_CALL(_map_);
|
||||
|
||||
return true;
|
||||
}
|
||||
@@ -250,7 +250,7 @@ bool CMC_(PFX, _update)(struct SNAME *_map_, K key, V new_value, V *old_value)
|
||||
|
||||
_map_->flag = CMC_FLAG_OK;
|
||||
|
||||
CMC_CALLBACKS_CALL(_map_, update);
|
||||
CMC_CALLBACKS_CALL(_map_);
|
||||
|
||||
return true;
|
||||
}
|
||||
@@ -314,7 +314,7 @@ size_t CMC_(PFX, _update_all)(struct SNAME *_map_, K key, V new_value, V **old_v
|
||||
|
||||
_map_->flag = CMC_FLAG_OK;
|
||||
|
||||
CMC_CALLBACKS_CALL(_map_, update);
|
||||
CMC_CALLBACKS_CALL(_map_);
|
||||
|
||||
return index;
|
||||
}
|
||||
@@ -401,7 +401,7 @@ bool CMC_(PFX, _remove)(struct SNAME *_map_, K key, V *out_value)
|
||||
_map_->count--;
|
||||
_map_->flag = CMC_FLAG_OK;
|
||||
|
||||
CMC_CALLBACKS_CALL(_map_, delete);
|
||||
CMC_CALLBACKS_CALL(_map_);
|
||||
|
||||
return true;
|
||||
}
|
||||
@@ -496,7 +496,7 @@ size_t CMC_(PFX, _remove_all)(struct SNAME *_map_, K key, V **out_values)
|
||||
_map_->count -= index;
|
||||
_map_->flag = CMC_FLAG_OK;
|
||||
|
||||
CMC_CALLBACKS_CALL(_map_, delete);
|
||||
CMC_CALLBACKS_CALL(_map_);
|
||||
|
||||
return index;
|
||||
}
|
||||
@@ -547,7 +547,7 @@ bool CMC_(PFX, _max)(struct SNAME *_map_, K *key, V *value)
|
||||
|
||||
_map_->flag = CMC_FLAG_OK;
|
||||
|
||||
CMC_CALLBACKS_CALL(_map_, read);
|
||||
CMC_CALLBACKS_CALL(_map_);
|
||||
|
||||
return true;
|
||||
}
|
||||
@@ -598,7 +598,7 @@ bool CMC_(PFX, _min)(struct SNAME *_map_, K *key, V *value)
|
||||
|
||||
_map_->flag = CMC_FLAG_OK;
|
||||
|
||||
CMC_CALLBACKS_CALL(_map_, read);
|
||||
CMC_CALLBACKS_CALL(_map_);
|
||||
|
||||
return true;
|
||||
}
|
||||
@@ -625,7 +625,7 @@ V CMC_(PFX, _get)(struct SNAME *_map_, K key)
|
||||
|
||||
_map_->flag = CMC_FLAG_OK;
|
||||
|
||||
CMC_CALLBACKS_CALL(_map_, read);
|
||||
CMC_CALLBACKS_CALL(_map_);
|
||||
|
||||
return entry->value;
|
||||
}
|
||||
@@ -652,7 +652,7 @@ V *CMC_(PFX, _get_ref)(struct SNAME *_map_, K key)
|
||||
|
||||
_map_->flag = CMC_FLAG_OK;
|
||||
|
||||
CMC_CALLBACKS_CALL(_map_, read);
|
||||
CMC_CALLBACKS_CALL(_map_);
|
||||
|
||||
return &(entry->value);
|
||||
}
|
||||
@@ -667,7 +667,7 @@ bool CMC_(PFX, _contains)(struct SNAME *_map_, K key)
|
||||
|
||||
bool result = CMC_(PFX, _impl_get_entry)(_map_, key) != NULL;
|
||||
|
||||
CMC_CALLBACKS_CALL(_map_, read);
|
||||
CMC_CALLBACKS_CALL(_map_);
|
||||
|
||||
return result;
|
||||
}
|
||||
@@ -813,7 +813,7 @@ bool CMC_(PFX, _resize)(struct SNAME *_map_, size_t capacity)
|
||||
|
||||
success:
|
||||
|
||||
CMC_CALLBACKS_CALL(_map_, resize);
|
||||
CMC_CALLBACKS_CALL(_map_);
|
||||
|
||||
return true;
|
||||
}
|
||||
@@ -1,7 +1,7 @@
|
||||
/**
|
||||
* Copyright (c) 2019 Leonardo Vencovsky
|
||||
*
|
||||
* This file is part of the C Macro Collections Libray.
|
||||
* This file is part of the C Macro Collections Library.
|
||||
*
|
||||
* Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
* of this software and associated documentation files (the "Software"), to deal
|
||||
@@ -1,7 +1,7 @@
|
||||
/**
|
||||
* Copyright (c) 2019 Leonardo Vencovsky
|
||||
*
|
||||
* This file is part of the C Macro Collections Libray.
|
||||
* This file is part of the C Macro Collections Library.
|
||||
*
|
||||
* Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
* of this software and associated documentation files (the "Software"), to deal
|
||||
@@ -1,7 +1,7 @@
|
||||
/**
|
||||
* Copyright (c) 2019 Leonardo Vencovsky
|
||||
*
|
||||
* This file is part of the C Macro Collections Libray.
|
||||
* This file is part of the C Macro Collections Library.
|
||||
*
|
||||
* Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
* of this software and associated documentation files (the "Software"), to deal
|
||||
@@ -1,7 +1,7 @@
|
||||
/**
|
||||
* Copyright (c) 2019 Leonardo Vencovsky
|
||||
*
|
||||
* This file is part of the C Macro Collections Libray.
|
||||
* This file is part of the C Macro Collections Library.
|
||||
*
|
||||
* Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
* of this software and associated documentation files (the "Software"), to deal
|
||||
@@ -60,13 +60,12 @@ struct CMC_DEF_FVAL(SNAME)
|
||||
struct SNAME *CMC_(PFX, _new)(size_t capacity, double load, struct CMC_DEF_FKEY(SNAME) * f_key,
|
||||
struct CMC_DEF_FVAL(SNAME) * f_val);
|
||||
struct SNAME *CMC_(PFX, _new_custom)(size_t capacity, double load, struct CMC_DEF_FKEY(SNAME) * f_key,
|
||||
struct CMC_DEF_FVAL(SNAME) * f_val, struct CMC_ALLOC_NODE_NAME *alloc,
|
||||
struct CMC_CALLBACKS_NAME *callbacks);
|
||||
struct CMC_DEF_FVAL(SNAME) * f_val, CMC_ALLOC_TYPE alloc,
|
||||
CMC_CALLBACK_TYPE callbacks);
|
||||
void CMC_(PFX, _clear)(struct SNAME *_map_);
|
||||
void CMC_(PFX, _free)(struct SNAME *_map_);
|
||||
/* Customization of Allocation and Callbacks */
|
||||
void CMC_(PFX, _customize)(struct SNAME *_map_, struct CMC_ALLOC_NODE_NAME *alloc,
|
||||
struct CMC_CALLBACKS_NAME *callbacks);
|
||||
void CMC_(PFX, _customize)(struct SNAME *_map_, CMC_ALLOC_TYPE alloc, CMC_CALLBACK_TYPE callbacks);
|
||||
/* Collection Input and Output */
|
||||
bool CMC_(PFX, _insert)(struct SNAME *_map_, K key, V value);
|
||||
bool CMC_(PFX, _update)(struct SNAME *_map_, K key, V new_value, V *old_value);
|
||||
@@ -1,7 +1,7 @@
|
||||
/**
|
||||
* Copyright (c) 2019 Leonardo Vencovsky
|
||||
*
|
||||
* This file is part of the C Macro Collections Libray.
|
||||
* This file is part of the C Macro Collections Library.
|
||||
*
|
||||
* Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
* of this software and associated documentation files (the "Software"), to deal
|
||||
@@ -40,7 +40,7 @@ struct SNAME
|
||||
/* Value function table */
|
||||
struct CMC_DEF_FVAL(SNAME) * f_val;
|
||||
/* Custom allocation functions */
|
||||
struct CMC_ALLOC_NODE_NAME *alloc;
|
||||
CMC_ALLOC_TYPE alloc;
|
||||
/* Custom callback functions */
|
||||
CMC_CALLBACKS_DECL;
|
||||
};
|
||||
@@ -1,7 +1,7 @@
|
||||
/**
|
||||
* Copyright (c) 2019 Leonardo Vencovsky
|
||||
*
|
||||
* This file is part of the C Macro Collections Libray.
|
||||
* This file is part of the C Macro Collections Library.
|
||||
*
|
||||
* Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
* of this software and associated documentation files (the "Software"), to deal
|
||||
@@ -1,7 +1,7 @@
|
||||
/**
|
||||
* Copyright (c) 2019 Leonardo Vencovsky
|
||||
*
|
||||
* This file is part of the C Macro Collections Libray.
|
||||
* This file is part of the C Macro Collections Library.
|
||||
*
|
||||
* Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
* of this software and associated documentation files (the "Software"), to deal
|
||||
@@ -37,7 +37,7 @@ struct SNAME *CMC_(PFX, _new)(size_t capacity, double load, struct CMC_DEF_FVAL(
|
||||
}
|
||||
|
||||
struct SNAME *CMC_(PFX, _new_custom)(size_t capacity, double load, struct CMC_DEF_FVAL(SNAME) * f_val,
|
||||
struct CMC_ALLOC_NODE_NAME *alloc, struct CMC_CALLBACKS_NAME *callbacks)
|
||||
CMC_ALLOC_TYPE alloc, CMC_CALLBACK_TYPE callbacks)
|
||||
{
|
||||
#ifdef CMC_DEV
|
||||
CMC_DEV_FCALL;
|
||||
@@ -133,7 +133,7 @@ void CMC_(PFX, _free)(struct SNAME *_set_)
|
||||
_set_->alloc->free(_set_);
|
||||
}
|
||||
|
||||
void CMC_(PFX, _customize)(struct SNAME *_set_, struct CMC_ALLOC_NODE_NAME *alloc, struct CMC_CALLBACKS_NAME *callbacks)
|
||||
void CMC_(PFX, _customize)(struct SNAME *_set_, CMC_ALLOC_TYPE alloc, CMC_CALLBACK_TYPE callbacks)
|
||||
{
|
||||
#ifdef CMC_DEV
|
||||
CMC_DEV_FCALL;
|
||||
@@ -173,7 +173,7 @@ bool CMC_(PFX, _insert)(struct SNAME *_set_, V value)
|
||||
_set_->cardinality++;
|
||||
_set_->flag = CMC_FLAG_OK;
|
||||
|
||||
CMC_CALLBACKS_CALL(_set_, create);
|
||||
CMC_CALLBACKS_CALL(_set_);
|
||||
|
||||
return true;
|
||||
}
|
||||
@@ -208,7 +208,7 @@ success:
|
||||
|
||||
_set_->flag = CMC_FLAG_OK;
|
||||
|
||||
CMC_CALLBACKS_CALL(_set_, create);
|
||||
CMC_CALLBACKS_CALL(_set_);
|
||||
|
||||
return true;
|
||||
}
|
||||
@@ -257,7 +257,7 @@ success:
|
||||
|
||||
_set_->flag = CMC_FLAG_OK;
|
||||
|
||||
CMC_CALLBACKS_CALL(_set_, update);
|
||||
CMC_CALLBACKS_CALL(_set_);
|
||||
|
||||
return true;
|
||||
}
|
||||
@@ -297,7 +297,7 @@ bool CMC_(PFX, _remove)(struct SNAME *_set_, V value)
|
||||
_set_->cardinality--;
|
||||
_set_->flag = CMC_FLAG_OK;
|
||||
|
||||
CMC_CALLBACKS_CALL(_set_, delete);
|
||||
CMC_CALLBACKS_CALL(_set_);
|
||||
|
||||
return true;
|
||||
}
|
||||
@@ -333,7 +333,7 @@ size_t CMC_(PFX, _remove_all)(struct SNAME *_set_, V value)
|
||||
_set_->cardinality -= removed;
|
||||
_set_->flag = CMC_FLAG_OK;
|
||||
|
||||
CMC_CALLBACKS_CALL(_set_, delete);
|
||||
CMC_CALLBACKS_CALL(_set_);
|
||||
|
||||
return removed;
|
||||
}
|
||||
@@ -374,7 +374,7 @@ bool CMC_(PFX, _max)(struct SNAME *_set_, V *value)
|
||||
|
||||
_set_->flag = CMC_FLAG_OK;
|
||||
|
||||
CMC_CALLBACKS_CALL(_set_, read);
|
||||
CMC_CALLBACKS_CALL(_set_);
|
||||
|
||||
return true;
|
||||
}
|
||||
@@ -415,7 +415,7 @@ bool CMC_(PFX, _min)(struct SNAME *_set_, V *value)
|
||||
|
||||
_set_->flag = CMC_FLAG_OK;
|
||||
|
||||
CMC_CALLBACKS_CALL(_set_, read);
|
||||
CMC_CALLBACKS_CALL(_set_);
|
||||
|
||||
return true;
|
||||
}
|
||||
@@ -430,7 +430,7 @@ size_t CMC_(PFX, _multiplicity_of)(struct SNAME *_set_, V value)
|
||||
|
||||
_set_->flag = CMC_FLAG_OK;
|
||||
|
||||
CMC_CALLBACKS_CALL(_set_, read);
|
||||
CMC_CALLBACKS_CALL(_set_);
|
||||
|
||||
if (!entry)
|
||||
return 0;
|
||||
@@ -448,7 +448,7 @@ bool CMC_(PFX, _contains)(struct SNAME *_set_, V value)
|
||||
|
||||
bool result = CMC_(PFX, _impl_get_entry)(_set_, value) != NULL;
|
||||
|
||||
CMC_CALLBACKS_CALL(_set_, read);
|
||||
CMC_CALLBACKS_CALL(_set_);
|
||||
|
||||
return result;
|
||||
}
|
||||
@@ -594,7 +594,7 @@ bool CMC_(PFX, _resize)(struct SNAME *_set_, size_t capacity)
|
||||
|
||||
success:
|
||||
|
||||
CMC_CALLBACKS_CALL(_set_, resize);
|
||||
CMC_CALLBACKS_CALL(_set_);
|
||||
|
||||
return true;
|
||||
}
|
||||
@@ -1,7 +1,7 @@
|
||||
/**
|
||||
* Copyright (c) 2019 Leonardo Vencovsky
|
||||
*
|
||||
* This file is part of the C Macro Collections Libray.
|
||||
* This file is part of the C Macro Collections Library.
|
||||
*
|
||||
* Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
* of this software and associated documentation files (the "Software"), to deal
|
||||
@@ -1,7 +1,7 @@
|
||||
/**
|
||||
* Copyright (c) 2019 Leonardo Vencovsky
|
||||
*
|
||||
* This file is part of the C Macro Collections Libray.
|
||||
* This file is part of the C Macro Collections Library.
|
||||
*
|
||||
* Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
* of this software and associated documentation files (the "Software"), to deal
|
||||
@@ -1,7 +1,7 @@
|
||||
/**
|
||||
* Copyright (c) 2019 Leonardo Vencovsky
|
||||
*
|
||||
* This file is part of the C Macro Collections Libray.
|
||||
* This file is part of the C Macro Collections Library.
|
||||
*
|
||||
* Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
* of this software and associated documentation files (the "Software"), to deal
|
||||
@@ -1,7 +1,7 @@
|
||||
/**
|
||||
* Copyright (c) 2019 Leonardo Vencovsky
|
||||
*
|
||||
* This file is part of the C Macro Collections Libray.
|
||||
* This file is part of the C Macro Collections Library.
|
||||
*
|
||||
* Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
* of this software and associated documentation files (the "Software"), to deal
|
||||
@@ -42,12 +42,11 @@ struct CMC_DEF_FVAL(SNAME)
|
||||
/* Collection Allocation and Deallocation */
|
||||
struct SNAME *CMC_(PFX, _new)(size_t capacity, double load, struct CMC_DEF_FVAL(SNAME) * f_val);
|
||||
struct SNAME *CMC_(PFX, _new_custom)(size_t capacity, double load, struct CMC_DEF_FVAL(SNAME) * f_val,
|
||||
struct CMC_ALLOC_NODE_NAME *alloc, struct CMC_CALLBACKS_NAME *callbacks);
|
||||
CMC_ALLOC_TYPE alloc, CMC_CALLBACK_TYPE callbacks);
|
||||
void CMC_(PFX, _clear)(struct SNAME *_set_);
|
||||
void CMC_(PFX, _free)(struct SNAME *_set_);
|
||||
/* Customization of Allocation and Callbacks */
|
||||
void CMC_(PFX, _customize)(struct SNAME *_set_, struct CMC_ALLOC_NODE_NAME *alloc,
|
||||
struct CMC_CALLBACKS_NAME *callbacks);
|
||||
void CMC_(PFX, _customize)(struct SNAME *_set_, CMC_ALLOC_TYPE alloc, CMC_CALLBACK_TYPE callbacks);
|
||||
/* Collection Input and Output */
|
||||
bool CMC_(PFX, _insert)(struct SNAME *_set_, V value);
|
||||
bool CMC_(PFX, _insert_many)(struct SNAME *_set_, V value, size_t count);
|
||||
@@ -1,7 +1,7 @@
|
||||
/**
|
||||
* Copyright (c) 2019 Leonardo Vencovsky
|
||||
*
|
||||
* This file is part of the C Macro Collections Libray.
|
||||
* This file is part of the C Macro Collections Library.
|
||||
*
|
||||
* Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
* of this software and associated documentation files (the "Software"), to deal
|
||||
@@ -39,7 +39,7 @@ struct SNAME
|
||||
/* Key function table */
|
||||
struct CMC_DEF_FVAL(SNAME) * f_val;
|
||||
/* Custom allocation functions */
|
||||
struct CMC_ALLOC_NODE_NAME *alloc;
|
||||
CMC_ALLOC_TYPE alloc;
|
||||
/* Custom callback functions */
|
||||
CMC_CALLBACKS_DECL;
|
||||
};
|
||||
@@ -1,7 +1,7 @@
|
||||
/**
|
||||
* Copyright (c) 2019 Leonardo Vencovsky
|
||||
*
|
||||
* This file is part of the C Macro Collections Libray.
|
||||
* This file is part of the C Macro Collections Library.
|
||||
*
|
||||
* Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
* of this software and associated documentation files (the "Software"), to deal
|
||||
@@ -1,7 +1,7 @@
|
||||
/**
|
||||
* Copyright (c) 2019 Leonardo Vencovsky
|
||||
*
|
||||
* This file is part of the C Macro Collections Libray.
|
||||
* This file is part of the C Macro Collections Library.
|
||||
*
|
||||
* Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
* of this software and associated documentation files (the "Software"), to deal
|
||||
@@ -36,7 +36,7 @@ struct SNAME *CMC_(PFX, _new)(size_t capacity, double load, struct CMC_DEF_FVAL(
|
||||
}
|
||||
|
||||
struct SNAME *CMC_(PFX, _new_custom)(size_t capacity, double load, struct CMC_DEF_FVAL(SNAME) * f_val,
|
||||
struct CMC_ALLOC_NODE_NAME *alloc, struct CMC_CALLBACKS_NAME *callbacks)
|
||||
CMC_ALLOC_TYPE alloc, CMC_CALLBACK_TYPE callbacks)
|
||||
{
|
||||
#ifdef CMC_DEV
|
||||
CMC_DEV_FCALL;
|
||||
@@ -131,7 +131,7 @@ void CMC_(PFX, _free)(struct SNAME *_set_)
|
||||
_set_->alloc->free(_set_);
|
||||
}
|
||||
|
||||
void CMC_(PFX, _customize)(struct SNAME *_set_, struct CMC_ALLOC_NODE_NAME *alloc, struct CMC_CALLBACKS_NAME *callbacks)
|
||||
void CMC_(PFX, _customize)(struct SNAME *_set_, CMC_ALLOC_TYPE alloc, CMC_CALLBACK_TYPE callbacks)
|
||||
{
|
||||
#ifdef CMC_DEV
|
||||
CMC_DEV_FCALL;
|
||||
@@ -211,7 +211,7 @@ bool CMC_(PFX, _insert)(struct SNAME *_set_, V value)
|
||||
_set_->count++;
|
||||
_set_->flag = CMC_FLAG_OK;
|
||||
|
||||
CMC_CALLBACKS_CALL(_set_, create);
|
||||
CMC_CALLBACKS_CALL(_set_);
|
||||
|
||||
return true;
|
||||
}
|
||||
@@ -243,7 +243,7 @@ bool CMC_(PFX, _remove)(struct SNAME *_set_, V value)
|
||||
_set_->count--;
|
||||
_set_->flag = CMC_FLAG_OK;
|
||||
|
||||
CMC_CALLBACKS_CALL(_set_, delete);
|
||||
CMC_CALLBACKS_CALL(_set_);
|
||||
|
||||
return true;
|
||||
}
|
||||
@@ -284,7 +284,7 @@ bool CMC_(PFX, _max)(struct SNAME *_set_, V *value)
|
||||
|
||||
_set_->flag = CMC_FLAG_OK;
|
||||
|
||||
CMC_CALLBACKS_CALL(_set_, read);
|
||||
CMC_CALLBACKS_CALL(_set_);
|
||||
|
||||
return true;
|
||||
}
|
||||
@@ -325,7 +325,7 @@ bool CMC_(PFX, _min)(struct SNAME *_set_, V *value)
|
||||
|
||||
_set_->flag = CMC_FLAG_OK;
|
||||
|
||||
CMC_CALLBACKS_CALL(_set_, read);
|
||||
CMC_CALLBACKS_CALL(_set_);
|
||||
|
||||
return true;
|
||||
}
|
||||
@@ -340,7 +340,7 @@ bool CMC_(PFX, _contains)(struct SNAME *_set_, V value)
|
||||
|
||||
bool result = CMC_(PFX, _impl_get_entry)(_set_, value) != NULL;
|
||||
|
||||
CMC_CALLBACKS_CALL(_set_, read);
|
||||
CMC_CALLBACKS_CALL(_set_);
|
||||
|
||||
return result;
|
||||
}
|
||||
@@ -474,7 +474,7 @@ bool CMC_(PFX, _resize)(struct SNAME *_set_, size_t capacity)
|
||||
|
||||
success:
|
||||
|
||||
CMC_CALLBACKS_CALL(_set_, resize);
|
||||
CMC_CALLBACKS_CALL(_set_);
|
||||
|
||||
return true;
|
||||
}
|
||||
@@ -1,7 +1,7 @@
|
||||
/**
|
||||
* Copyright (c) 2019 Leonardo Vencovsky
|
||||
*
|
||||
* This file is part of the C Macro Collections Libray.
|
||||
* This file is part of the C Macro Collections Library.
|
||||
*
|
||||
* Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
* of this software and associated documentation files (the "Software"), to deal
|
||||
@@ -1,7 +1,7 @@
|
||||
/**
|
||||
* Copyright (c) 2019 Leonardo Vencovsky
|
||||
*
|
||||
* This file is part of the C Macro Collections Libray.
|
||||
* This file is part of the C Macro Collections Library.
|
||||
*
|
||||
* Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
* of this software and associated documentation files (the "Software"), to deal
|
||||
@@ -1,7 +1,7 @@
|
||||
/**
|
||||
* Copyright (c) 2019 Leonardo Vencovsky
|
||||
*
|
||||
* This file is part of the C Macro Collections Libray.
|
||||
* This file is part of the C Macro Collections Library.
|
||||
*
|
||||
* Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
* of this software and associated documentation files (the "Software"), to deal
|
||||
@@ -1,7 +1,7 @@
|
||||
/**
|
||||
* Copyright (c) 2019 Leonardo Vencovsky
|
||||
*
|
||||
* This file is part of the C Macro Collections Libray.
|
||||
* This file is part of the C Macro Collections Library.
|
||||
*
|
||||
* Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
* of this software and associated documentation files (the "Software"), to deal
|
||||
@@ -42,12 +42,11 @@ struct CMC_DEF_FVAL(SNAME)
|
||||
/* Collection Allocation and Deallocation */
|
||||
struct SNAME *CMC_(PFX, _new)(size_t capacity, double load, struct CMC_DEF_FVAL(SNAME) * f_val);
|
||||
struct SNAME *CMC_(PFX, _new_custom)(size_t capacity, double load, struct CMC_DEF_FVAL(SNAME) * f_val,
|
||||
struct CMC_ALLOC_NODE_NAME *alloc, struct CMC_CALLBACKS_NAME *callbacks);
|
||||
CMC_ALLOC_TYPE alloc, CMC_CALLBACK_TYPE callbacks);
|
||||
void CMC_(PFX, _clear)(struct SNAME *_set_);
|
||||
void CMC_(PFX, _free)(struct SNAME *_set_);
|
||||
/* Customization of Allocation and Callbacks */
|
||||
void CMC_(PFX, _customize)(struct SNAME *_set_, struct CMC_ALLOC_NODE_NAME *alloc,
|
||||
struct CMC_CALLBACKS_NAME *callbacks);
|
||||
void CMC_(PFX, _customize)(struct SNAME *_set_, CMC_ALLOC_TYPE alloc, CMC_CALLBACK_TYPE callbacks);
|
||||
/* Collection Input and Output */
|
||||
bool CMC_(PFX, _insert)(struct SNAME *_set_, V value);
|
||||
bool CMC_(PFX, _remove)(struct SNAME *_set_, V value);
|
||||
@@ -1,7 +1,7 @@
|
||||
/**
|
||||
* Copyright (c) 2019 Leonardo Vencovsky
|
||||
*
|
||||
* This file is part of the C Macro Collections Libray.
|
||||
* This file is part of the C Macro Collections Library.
|
||||
*
|
||||
* Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
* of this software and associated documentation files (the "Software"), to deal
|
||||
@@ -38,7 +38,7 @@ struct SNAME
|
||||
/* Value function table */
|
||||
struct CMC_DEF_FVAL(SNAME) * f_val;
|
||||
/* Custom allocation functions */
|
||||
struct CMC_ALLOC_NODE_NAME *alloc;
|
||||
CMC_ALLOC_TYPE alloc;
|
||||
/* Custom callback functions */
|
||||
CMC_CALLBACKS_DECL;
|
||||
};
|
||||
@@ -1,7 +1,7 @@
|
||||
/**
|
||||
* Copyright (c) 2019 Leonardo Vencovsky
|
||||
*
|
||||
* This file is part of the C Macro Collections Libray.
|
||||
* This file is part of the C Macro Collections Library.
|
||||
*
|
||||
* Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
* of this software and associated documentation files (the "Software"), to deal
|
||||
@@ -1,7 +1,7 @@
|
||||
/**
|
||||
* Copyright (c) 2019 Leonardo Vencovsky
|
||||
*
|
||||
* This file is part of the C Macro Collections Libray.
|
||||
* This file is part of the C Macro Collections Library.
|
||||
*
|
||||
* Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
* of this software and associated documentation files (the "Software"), to deal
|
||||
@@ -36,7 +36,7 @@ struct SNAME *CMC_(PFX, _new)(size_t capacity, enum cmc_heap_order HO, struct CM
|
||||
}
|
||||
|
||||
struct SNAME *CMC_(PFX, _new_custom)(size_t capacity, enum cmc_heap_order HO, struct CMC_DEF_FVAL(SNAME) * f_val,
|
||||
struct CMC_ALLOC_NODE_NAME *alloc, struct CMC_CALLBACKS_NAME *callbacks)
|
||||
CMC_ALLOC_TYPE alloc, CMC_CALLBACK_TYPE callbacks)
|
||||
{
|
||||
#ifdef CMC_DEV
|
||||
CMC_DEV_FCALL;
|
||||
@@ -118,8 +118,7 @@ void CMC_(PFX, _free)(struct SNAME *_heap_)
|
||||
_heap_->alloc->free(_heap_);
|
||||
}
|
||||
|
||||
void CMC_(PFX, _customize)(struct SNAME *_heap_, struct CMC_ALLOC_NODE_NAME *alloc,
|
||||
struct CMC_CALLBACKS_NAME *callbacks)
|
||||
void CMC_(PFX, _customize)(struct SNAME *_heap_, CMC_ALLOC_TYPE alloc, CMC_CALLBACK_TYPE callbacks)
|
||||
{
|
||||
#ifdef CMC_DEV
|
||||
CMC_DEV_FCALL;
|
||||
@@ -158,7 +157,7 @@ bool CMC_(PFX, _insert)(struct SNAME *_heap_, V value)
|
||||
|
||||
_heap_->flag = CMC_FLAG_OK;
|
||||
|
||||
CMC_CALLBACKS_CALL(_heap_, create);
|
||||
CMC_CALLBACKS_CALL(_heap_);
|
||||
|
||||
return true;
|
||||
}
|
||||
@@ -184,7 +183,7 @@ bool CMC_(PFX, _remove)(struct SNAME *_heap_)
|
||||
|
||||
_heap_->flag = CMC_FLAG_OK;
|
||||
|
||||
CMC_CALLBACKS_CALL(_heap_, delete);
|
||||
CMC_CALLBACKS_CALL(_heap_);
|
||||
|
||||
return true;
|
||||
}
|
||||
@@ -203,7 +202,7 @@ V CMC_(PFX, _peek)(struct SNAME *_heap_)
|
||||
|
||||
_heap_->flag = CMC_FLAG_OK;
|
||||
|
||||
CMC_CALLBACKS_CALL(_heap_, read);
|
||||
CMC_CALLBACKS_CALL(_heap_);
|
||||
|
||||
return _heap_->buffer[0];
|
||||
}
|
||||
@@ -227,7 +226,7 @@ bool CMC_(PFX, _contains)(struct SNAME *_heap_, V value)
|
||||
}
|
||||
}
|
||||
|
||||
CMC_CALLBACKS_CALL(_heap_, read);
|
||||
CMC_CALLBACKS_CALL(_heap_);
|
||||
|
||||
return result;
|
||||
}
|
||||
@@ -309,7 +308,7 @@ bool CMC_(PFX, _resize)(struct SNAME *_heap_, size_t capacity)
|
||||
|
||||
success:
|
||||
|
||||
CMC_CALLBACKS_CALL(_heap_, resize);
|
||||
CMC_CALLBACKS_CALL(_heap_);
|
||||
|
||||
return true;
|
||||
}
|
||||
@@ -1,7 +1,7 @@
|
||||
/**
|
||||
* Copyright (c) 2019 Leonardo Vencovsky
|
||||
*
|
||||
* This file is part of the C Macro Collections Libray.
|
||||
* This file is part of the C Macro Collections Library.
|
||||
*
|
||||
* Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
* of this software and associated documentation files (the "Software"), to deal
|
||||
@@ -1,7 +1,7 @@
|
||||
/**
|
||||
* Copyright (c) 2019 Leonardo Vencovsky
|
||||
*
|
||||
* This file is part of the C Macro Collections Libray.
|
||||
* This file is part of the C Macro Collections Library.
|
||||
*
|
||||
* Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
* of this software and associated documentation files (the "Software"), to deal
|
||||
@@ -1,7 +1,7 @@
|
||||
/**
|
||||
* Copyright (c) 2019 Leonardo Vencovsky
|
||||
*
|
||||
* This file is part of the C Macro Collections Libray.
|
||||
* This file is part of the C Macro Collections Library.
|
||||
*
|
||||
* Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
* of this software and associated documentation files (the "Software"), to deal
|
||||
@@ -1,7 +1,7 @@
|
||||
/**
|
||||
* Copyright (c) 2019 Leonardo Vencovsky
|
||||
*
|
||||
* This file is part of the C Macro Collections Libray.
|
||||
* This file is part of the C Macro Collections Library.
|
||||
*
|
||||
* Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
* of this software and associated documentation files (the "Software"), to deal
|
||||
@@ -42,12 +42,11 @@ struct CMC_DEF_FVAL(SNAME)
|
||||
/* Collection Allocation and Deallocation */
|
||||
struct SNAME *CMC_(PFX, _new)(size_t capacity, enum cmc_heap_order HO, struct CMC_DEF_FVAL(SNAME) * f_val);
|
||||
struct SNAME *CMC_(PFX, _new_custom)(size_t capacity, enum cmc_heap_order HO, struct CMC_DEF_FVAL(SNAME) * f_val,
|
||||
struct CMC_ALLOC_NODE_NAME *alloc, struct CMC_CALLBACKS_NAME *callbacks);
|
||||
CMC_ALLOC_TYPE alloc, CMC_CALLBACK_TYPE callbacks);
|
||||
void CMC_(PFX, _clear)(struct SNAME *_heap_);
|
||||
void CMC_(PFX, _free)(struct SNAME *_heap_);
|
||||
/* Customization of Allocation and Callbacks */
|
||||
void CMC_(PFX, _customize)(struct SNAME *_heap_, struct CMC_ALLOC_NODE_NAME *alloc,
|
||||
struct CMC_CALLBACKS_NAME *callbacks);
|
||||
void CMC_(PFX, _customize)(struct SNAME *_heap_, CMC_ALLOC_TYPE alloc, CMC_CALLBACK_TYPE callbacks);
|
||||
/* Collection Input and Output */
|
||||
bool CMC_(PFX, _insert)(struct SNAME *_heap_, V value);
|
||||
bool CMC_(PFX, _remove)(struct SNAME *_heap_);
|
||||
@@ -1,7 +1,7 @@
|
||||
/**
|
||||
* Copyright (c) 2019 Leonardo Vencovsky
|
||||
*
|
||||
* This file is part of the C Macro Collections Libray.
|
||||
* This file is part of the C Macro Collections Library.
|
||||
*
|
||||
* Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
* of this software and associated documentation files (the "Software"), to deal
|
||||
@@ -37,7 +37,7 @@ struct SNAME
|
||||
/* Value function table */
|
||||
struct CMC_DEF_FVAL(SNAME) * f_val;
|
||||
/* Custom allocation functions */
|
||||
struct CMC_ALLOC_NODE_NAME *alloc;
|
||||
CMC_ALLOC_TYPE alloc;
|
||||
/* Custom callback functions */
|
||||
CMC_CALLBACKS_DECL;
|
||||
};
|
||||
@@ -1,7 +1,7 @@
|
||||
/**
|
||||
* Copyright (c) 2019 Leonardo Vencovsky
|
||||
*
|
||||
* This file is part of the C Macro Collections Libray.
|
||||
* This file is part of the C Macro Collections Library.
|
||||
*
|
||||
* Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
* of this software and associated documentation files (the "Software"), to deal
|
||||
@@ -1,7 +1,7 @@
|
||||
/**
|
||||
* Copyright (c) 2019 Leonardo Vencovsky
|
||||
*
|
||||
* This file is part of the C Macro Collections Libray.
|
||||
* This file is part of the C Macro Collections Library.
|
||||
*
|
||||
* Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
* of this software and associated documentation files (the "Software"), to deal
|
||||
@@ -37,8 +37,8 @@ struct SNAME *CMC_(PFX, _new)(size_t capacity, struct CMC_DEF_FVAL(SNAME) * f_va
|
||||
return CMC_(PFX, _new_custom)(capacity, f_val, NULL, NULL);
|
||||
}
|
||||
|
||||
struct SNAME *CMC_(PFX, _new_custom)(size_t capacity, struct CMC_DEF_FVAL(SNAME) * f_val,
|
||||
struct CMC_ALLOC_NODE_NAME *alloc, struct CMC_CALLBACKS_NAME *callbacks)
|
||||
struct SNAME *CMC_(PFX, _new_custom)(size_t capacity, struct CMC_DEF_FVAL(SNAME) * f_val, CMC_ALLOC_TYPE alloc,
|
||||
CMC_CALLBACK_TYPE callbacks)
|
||||
{
|
||||
#ifdef CMC_DEV
|
||||
CMC_DEV_FCALL;
|
||||
@@ -121,8 +121,7 @@ void CMC_(PFX, _free)(struct SNAME *_heap_)
|
||||
_heap_->alloc->free(_heap_);
|
||||
}
|
||||
|
||||
void CMC_(PFX, _customize)(struct SNAME *_heap_, struct CMC_ALLOC_NODE_NAME *alloc,
|
||||
struct CMC_CALLBACKS_NAME *callbacks)
|
||||
void CMC_(PFX, _customize)(struct SNAME *_heap_, CMC_ALLOC_TYPE alloc, CMC_CALLBACK_TYPE callbacks)
|
||||
{
|
||||
#ifdef CMC_DEV
|
||||
CMC_DEV_FCALL;
|
||||
@@ -195,7 +194,7 @@ bool CMC_(PFX, _insert)(struct SNAME *_heap_, V value)
|
||||
/* else no float up required */
|
||||
}
|
||||
|
||||
CMC_CALLBACKS_CALL(_heap_, create);
|
||||
CMC_CALLBACKS_CALL(_heap_);
|
||||
|
||||
return true;
|
||||
}
|
||||
@@ -251,7 +250,7 @@ success:
|
||||
|
||||
_heap_->flag = CMC_FLAG_OK;
|
||||
|
||||
CMC_CALLBACKS_CALL(_heap_, delete);
|
||||
CMC_CALLBACKS_CALL(_heap_);
|
||||
|
||||
return true;
|
||||
}
|
||||
@@ -307,7 +306,7 @@ success:
|
||||
|
||||
_heap_->flag = CMC_FLAG_OK;
|
||||
|
||||
CMC_CALLBACKS_CALL(_heap_, delete);
|
||||
CMC_CALLBACKS_CALL(_heap_);
|
||||
|
||||
return true;
|
||||
}
|
||||
@@ -347,7 +346,7 @@ bool CMC_(PFX, _update_max)(struct SNAME *_heap_, V value)
|
||||
|
||||
_heap_->flag = CMC_FLAG_OK;
|
||||
|
||||
CMC_CALLBACKS_CALL(_heap_, update);
|
||||
CMC_CALLBACKS_CALL(_heap_);
|
||||
|
||||
return true;
|
||||
}
|
||||
@@ -387,7 +386,7 @@ bool CMC_(PFX, _update_min)(struct SNAME *_heap_, V value)
|
||||
|
||||
_heap_->flag = CMC_FLAG_OK;
|
||||
|
||||
CMC_CALLBACKS_CALL(_heap_, update);
|
||||
CMC_CALLBACKS_CALL(_heap_);
|
||||
|
||||
return true;
|
||||
}
|
||||
@@ -406,7 +405,7 @@ V CMC_(PFX, _max)(struct SNAME *_heap_)
|
||||
|
||||
_heap_->flag = CMC_FLAG_OK;
|
||||
|
||||
CMC_CALLBACKS_CALL(_heap_, read);
|
||||
CMC_CALLBACKS_CALL(_heap_);
|
||||
|
||||
/* If there is only one element, then the maximum element is the */
|
||||
/* same as the one in the MinHeap */
|
||||
@@ -430,7 +429,7 @@ V CMC_(PFX, _min)(struct SNAME *_heap_)
|
||||
|
||||
_heap_->flag = CMC_FLAG_OK;
|
||||
|
||||
CMC_CALLBACKS_CALL(_heap_, read);
|
||||
CMC_CALLBACKS_CALL(_heap_);
|
||||
|
||||
return _heap_->buffer[0][0];
|
||||
}
|
||||
@@ -454,7 +453,7 @@ bool CMC_(PFX, _contains)(struct SNAME *_heap_, V value)
|
||||
}
|
||||
}
|
||||
|
||||
CMC_CALLBACKS_CALL(_heap_, read);
|
||||
CMC_CALLBACKS_CALL(_heap_);
|
||||
|
||||
return result;
|
||||
}
|
||||
@@ -549,7 +548,7 @@ success:
|
||||
|
||||
_heap_->flag = CMC_FLAG_OK;
|
||||
|
||||
CMC_CALLBACKS_CALL(_heap_, resize);
|
||||
CMC_CALLBACKS_CALL(_heap_);
|
||||
|
||||
return true;
|
||||
}
|
||||
@@ -1,7 +1,7 @@
|
||||
/**
|
||||
* Copyright (c) 2019 Leonardo Vencovsky
|
||||
*
|
||||
* This file is part of the C Macro Collections Libray.
|
||||
* This file is part of the C Macro Collections Library.
|
||||
*
|
||||
* Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
* of this software and associated documentation files (the "Software"), to deal
|
||||
@@ -1,7 +1,7 @@
|
||||
/**
|
||||
* Copyright (c) 2019 Leonardo Vencovsky
|
||||
*
|
||||
* This file is part of the C Macro Collections Libray.
|
||||
* This file is part of the C Macro Collections Library.
|
||||
*
|
||||
* Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
* of this software and associated documentation files (the "Software"), to deal
|
||||
@@ -1,7 +1,7 @@
|
||||
/**
|
||||
* Copyright (c) 2019 Leonardo Vencovsky
|
||||
*
|
||||
* This file is part of the C Macro Collections Libray.
|
||||
* This file is part of the C Macro Collections Library.
|
||||
*
|
||||
* Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
* of this software and associated documentation files (the "Software"), to deal
|
||||
@@ -1,7 +1,7 @@
|
||||
/**
|
||||
* Copyright (c) 2019 Leonardo Vencovsky
|
||||
*
|
||||
* This file is part of the C Macro Collections Libray.
|
||||
* This file is part of the C Macro Collections Library.
|
||||
*
|
||||
* Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
* of this software and associated documentation files (the "Software"), to deal
|
||||
@@ -42,13 +42,12 @@ struct CMC_DEF_FVAL(SNAME)
|
||||
/* Collection Functions */
|
||||
/* Collection Allocation and Deallocation */
|
||||
struct SNAME *CMC_(PFX, _new)(size_t capacity, struct CMC_DEF_FVAL(SNAME) * f_val);
|
||||
struct SNAME *CMC_(PFX, _new_custom)(size_t capacity, struct CMC_DEF_FVAL(SNAME) * f_val,
|
||||
struct CMC_ALLOC_NODE_NAME *alloc, struct CMC_CALLBACKS_NAME *callbacks);
|
||||
struct SNAME *CMC_(PFX, _new_custom)(size_t capacity, struct CMC_DEF_FVAL(SNAME) * f_val, CMC_ALLOC_TYPE alloc,
|
||||
CMC_CALLBACK_TYPE callbacks);
|
||||
void CMC_(PFX, _clear)(struct SNAME *_heap_);
|
||||
void CMC_(PFX, _free)(struct SNAME *_heap_);
|
||||
/* Customization of Allocation and Callbacks */
|
||||
void CMC_(PFX, _customize)(struct SNAME *_heap_, struct CMC_ALLOC_NODE_NAME *alloc,
|
||||
struct CMC_CALLBACKS_NAME *callbacks);
|
||||
void CMC_(PFX, _customize)(struct SNAME *_heap_, CMC_ALLOC_TYPE alloc, CMC_CALLBACK_TYPE callbacks);
|
||||
/* Collection Input and Output */
|
||||
bool CMC_(PFX, _insert)(struct SNAME *_heap_, V value);
|
||||
bool CMC_(PFX, _remove_max)(struct SNAME *_heap_);
|
||||
@@ -1,7 +1,7 @@
|
||||
/**
|
||||
* Copyright (c) 2019 Leonardo Vencovsky
|
||||
*
|
||||
* This file is part of the C Macro Collections Libray.
|
||||
* This file is part of the C Macro Collections Library.
|
||||
*
|
||||
* Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
* of this software and associated documentation files (the "Software"), to deal
|
||||
@@ -38,7 +38,7 @@ struct SNAME
|
||||
/* Value function table */
|
||||
struct CMC_DEF_FVAL(SNAME) * f_val;
|
||||
/* Custom allocation functions */
|
||||
struct CMC_ALLOC_NODE_NAME *alloc;
|
||||
CMC_ALLOC_TYPE alloc;
|
||||
/* Custom callback functions */
|
||||
CMC_CALLBACKS_DECL;
|
||||
};
|
||||
@@ -1,7 +1,7 @@
|
||||
/**
|
||||
* Copyright (c) 2019 Leonardo Vencovsky
|
||||
*
|
||||
* This file is part of the C Macro Collections Libray.
|
||||
* This file is part of the C Macro Collections Library.
|
||||
*
|
||||
* Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
* of this software and associated documentation files (the "Software"), to deal
|
||||
@@ -1,7 +1,7 @@
|
||||
/**
|
||||
* Copyright (c) 2019 Leonardo Vencovsky
|
||||
*
|
||||
* This file is part of the C Macro Collections Libray.
|
||||
* This file is part of the C Macro Collections Library.
|
||||
*
|
||||
* Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
* of this software and associated documentation files (the "Software"), to deal
|
||||
@@ -35,8 +35,8 @@ struct SNAME *CMC_(PFX, _new)(struct CMC_DEF_FVAL(SNAME) * f_val)
|
||||
return CMC_(PFX, _new_custom)(f_val, NULL, NULL);
|
||||
}
|
||||
|
||||
struct SNAME *CMC_(PFX, _new_custom)(struct CMC_DEF_FVAL(SNAME) * f_val, struct CMC_ALLOC_NODE_NAME *alloc,
|
||||
struct CMC_CALLBACKS_NAME *callbacks)
|
||||
struct SNAME *CMC_(PFX, _new_custom)(struct CMC_DEF_FVAL(SNAME) * f_val, CMC_ALLOC_TYPE alloc,
|
||||
CMC_CALLBACK_TYPE callbacks)
|
||||
{
|
||||
#ifdef CMC_DEV
|
||||
CMC_DEV_FCALL;
|
||||
@@ -105,8 +105,7 @@ void CMC_(PFX, _free)(struct SNAME *_list_)
|
||||
_list_->alloc->free(_list_);
|
||||
}
|
||||
|
||||
void CMC_(PFX, _customize)(struct SNAME *_list_, struct CMC_ALLOC_NODE_NAME *alloc,
|
||||
struct CMC_CALLBACKS_NAME *callbacks)
|
||||
void CMC_(PFX, _customize)(struct SNAME *_list_, CMC_ALLOC_TYPE alloc, CMC_CALLBACK_TYPE callbacks)
|
||||
{
|
||||
#ifdef CMC_DEV
|
||||
CMC_DEV_FCALL;
|
||||
@@ -150,7 +149,7 @@ bool CMC_(PFX, _push_front)(struct SNAME *_list_, V value)
|
||||
_list_->count++;
|
||||
_list_->flag = CMC_FLAG_OK;
|
||||
|
||||
CMC_CALLBACKS_CALL(_list_, create);
|
||||
CMC_CALLBACKS_CALL(_list_);
|
||||
|
||||
return true;
|
||||
}
|
||||
@@ -191,7 +190,7 @@ bool CMC_(PFX, _push_at)(struct SNAME *_list_, V value, size_t index)
|
||||
_list_->count++;
|
||||
_list_->flag = CMC_FLAG_OK;
|
||||
|
||||
CMC_CALLBACKS_CALL(_list_, create);
|
||||
CMC_CALLBACKS_CALL(_list_);
|
||||
|
||||
return true;
|
||||
}
|
||||
@@ -222,7 +221,7 @@ bool CMC_(PFX, _push_back)(struct SNAME *_list_, V value)
|
||||
_list_->count++;
|
||||
_list_->flag = CMC_FLAG_OK;
|
||||
|
||||
CMC_CALLBACKS_CALL(_list_, create);
|
||||
CMC_CALLBACKS_CALL(_list_);
|
||||
|
||||
return true;
|
||||
}
|
||||
@@ -252,7 +251,7 @@ bool CMC_(PFX, _pop_front)(struct SNAME *_list_)
|
||||
_list_->count--;
|
||||
_list_->flag = CMC_FLAG_OK;
|
||||
|
||||
CMC_CALLBACKS_CALL(_list_, delete);
|
||||
CMC_CALLBACKS_CALL(_list_);
|
||||
|
||||
return true;
|
||||
}
|
||||
@@ -297,7 +296,7 @@ bool CMC_(PFX, _pop_at)(struct SNAME *_list_, size_t index)
|
||||
_list_->count--;
|
||||
_list_->flag = CMC_FLAG_OK;
|
||||
|
||||
CMC_CALLBACKS_CALL(_list_, delete);
|
||||
CMC_CALLBACKS_CALL(_list_);
|
||||
|
||||
return true;
|
||||
}
|
||||
@@ -327,7 +326,7 @@ bool CMC_(PFX, _pop_back)(struct SNAME *_list_)
|
||||
_list_->count--;
|
||||
_list_->flag = CMC_FLAG_OK;
|
||||
|
||||
CMC_CALLBACKS_CALL(_list_, delete);
|
||||
CMC_CALLBACKS_CALL(_list_);
|
||||
|
||||
return true;
|
||||
}
|
||||
@@ -346,7 +345,7 @@ V CMC_(PFX, _front)(struct SNAME *_list_)
|
||||
|
||||
_list_->flag = CMC_FLAG_OK;
|
||||
|
||||
CMC_CALLBACKS_CALL(_list_, read);
|
||||
CMC_CALLBACKS_CALL(_list_);
|
||||
|
||||
return _list_->head->value;
|
||||
}
|
||||
@@ -374,7 +373,7 @@ V CMC_(PFX, _get)(struct SNAME *_list_, size_t index)
|
||||
if (scan == NULL)
|
||||
return (V){ 0 };
|
||||
|
||||
CMC_CALLBACKS_CALL(_list_, read);
|
||||
CMC_CALLBACKS_CALL(_list_);
|
||||
|
||||
return scan->value;
|
||||
}
|
||||
@@ -402,7 +401,7 @@ V *CMC_(PFX, _get_ref)(struct SNAME *_list_, size_t index)
|
||||
if (scan == NULL)
|
||||
return NULL;
|
||||
|
||||
CMC_CALLBACKS_CALL(_list_, read);
|
||||
CMC_CALLBACKS_CALL(_list_);
|
||||
|
||||
return &(scan->value);
|
||||
}
|
||||
@@ -421,7 +420,7 @@ V CMC_(PFX, _back)(struct SNAME *_list_)
|
||||
|
||||
_list_->flag = CMC_FLAG_OK;
|
||||
|
||||
CMC_CALLBACKS_CALL(_list_, read);
|
||||
CMC_CALLBACKS_CALL(_list_);
|
||||
|
||||
return _list_->tail->value;
|
||||
}
|
||||
@@ -449,7 +448,7 @@ bool CMC_(PFX, _contains)(struct SNAME *_list_, V value)
|
||||
scan = scan->next;
|
||||
}
|
||||
|
||||
CMC_CALLBACKS_CALL(_list_, read);
|
||||
CMC_CALLBACKS_CALL(_list_);
|
||||
|
||||
return result;
|
||||
}
|
||||
@@ -1,7 +1,7 @@
|
||||
/**
|
||||
* Copyright (c) 2019 Leonardo Vencovsky
|
||||
*
|
||||
* This file is part of the C Macro Collections Libray.
|
||||
* This file is part of the C Macro Collections Library.
|
||||
*
|
||||
* Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
* of this software and associated documentation files (the "Software"), to deal
|
||||
@@ -1,7 +1,7 @@
|
||||
/**
|
||||
* Copyright (c) 2019 Leonardo Vencovsky
|
||||
*
|
||||
* This file is part of the C Macro Collections Libray.
|
||||
* This file is part of the C Macro Collections Library.
|
||||
*
|
||||
* Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
* of this software and associated documentation files (the "Software"), to deal
|
||||
@@ -1,7 +1,7 @@
|
||||
/**
|
||||
* Copyright (c) 2019 Leonardo Vencovsky
|
||||
*
|
||||
* This file is part of the C Macro Collections Libray.
|
||||
* This file is part of the C Macro Collections Library.
|
||||
*
|
||||
* Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
* of this software and associated documentation files (the "Software"), to deal
|
||||
@@ -1,7 +1,7 @@
|
||||
/**
|
||||
* Copyright (c) 2019 Leonardo Vencovsky
|
||||
*
|
||||
* This file is part of the C Macro Collections Libray.
|
||||
* This file is part of the C Macro Collections Library.
|
||||
*
|
||||
* Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
* of this software and associated documentation files (the "Software"), to deal
|
||||
@@ -42,13 +42,12 @@ struct CMC_DEF_FVAL(SNAME)
|
||||
/* Collection Functions */
|
||||
/* Collection Allocation and Deallocation */
|
||||
struct SNAME *CMC_(PFX, _new)(struct CMC_DEF_FVAL(SNAME) * f_val);
|
||||
struct SNAME *CMC_(PFX, _new_custom)(struct CMC_DEF_FVAL(SNAME) * f_val, struct CMC_ALLOC_NODE_NAME *alloc,
|
||||
struct CMC_CALLBACKS_NAME *callbacks);
|
||||
struct SNAME *CMC_(PFX, _new_custom)(struct CMC_DEF_FVAL(SNAME) * f_val, CMC_ALLOC_TYPE alloc,
|
||||
CMC_CALLBACK_TYPE callbacks);
|
||||
void CMC_(PFX, _clear)(struct SNAME *_list_);
|
||||
void CMC_(PFX, _free)(struct SNAME *_list_);
|
||||
/* Customization of Allocation and Callbacks */
|
||||
void CMC_(PFX, _customize)(struct SNAME *_list_, struct CMC_ALLOC_NODE_NAME *alloc,
|
||||
struct CMC_CALLBACKS_NAME *callbacks);
|
||||
void CMC_(PFX, _customize)(struct SNAME *_list_, CMC_ALLOC_TYPE alloc, CMC_CALLBACK_TYPE callbacks);
|
||||
/* Collection Input and Output */
|
||||
bool CMC_(PFX, _push_front)(struct SNAME *_list_, V value);
|
||||
bool CMC_(PFX, _push_at)(struct SNAME *_list_, V value, size_t index);
|
||||
@@ -1,7 +1,7 @@
|
||||
/**
|
||||
* Copyright (c) 2019 Leonardo Vencovsky
|
||||
*
|
||||
* This file is part of the C Macro Collections Libray.
|
||||
* This file is part of the C Macro Collections Library.
|
||||
*
|
||||
* Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
* of this software and associated documentation files (the "Software"), to deal
|
||||
@@ -41,7 +41,7 @@ struct SNAME
|
||||
struct CMC_DEF_FVAL(SNAME) * f_val;
|
||||
|
||||
/* Custom allocation functions */
|
||||
struct CMC_ALLOC_NODE_NAME *alloc;
|
||||
CMC_ALLOC_TYPE alloc;
|
||||
|
||||
/* Custom callback functions */
|
||||
CMC_CALLBACKS_DECL;
|
||||
@@ -1,7 +1,7 @@
|
||||
/**
|
||||
* Copyright (c) 2019 Leonardo Vencovsky
|
||||
*
|
||||
* This file is part of the C Macro Collections Libray.
|
||||
* This file is part of the C Macro Collections Library.
|
||||
*
|
||||
* Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
* of this software and associated documentation files (the "Software"), to deal
|
||||
@@ -1,7 +1,7 @@
|
||||
/**
|
||||
* Copyright (c) 2019 Leonardo Vencovsky
|
||||
*
|
||||
* This file is part of the C Macro Collections Libray.
|
||||
* This file is part of the C Macro Collections Library.
|
||||
*
|
||||
* Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
* of this software and associated documentation files (the "Software"), to deal
|
||||
@@ -43,11 +43,11 @@ struct SNAME *CMC_(PFX, _new)(size_t capacity, struct CMC_DEF_FVAL(SNAME) * f_va
|
||||
}
|
||||
|
||||
#ifdef CMC_SAC
|
||||
struct SNAME *CMC_(PFX, _new_custom)(struct CMC_DEF_FVAL(SNAME) * f_val, struct CMC_ALLOC_NODE_NAME *alloc,
|
||||
struct CMC_CALLBACKS_NAME *callbacks)
|
||||
struct SNAME *CMC_(PFX, _new_custom)(struct CMC_DEF_FVAL(SNAME) * f_val, CMC_ALLOC_TYPE alloc,
|
||||
CMC_CALLBACK_TYPE callbacks)
|
||||
#else
|
||||
struct SNAME *CMC_(PFX, _new_custom)(size_t capacity, struct CMC_DEF_FVAL(SNAME) * f_val,
|
||||
struct CMC_ALLOC_NODE_NAME *alloc, struct CMC_CALLBACKS_NAME *callbacks)
|
||||
struct SNAME *CMC_(PFX, _new_custom)(size_t capacity, struct CMC_DEF_FVAL(SNAME) * f_val, CMC_ALLOC_TYPE alloc,
|
||||
CMC_CALLBACK_TYPE callbacks)
|
||||
#endif
|
||||
{
|
||||
#ifdef CMC_DEV
|
||||
@@ -61,9 +61,6 @@ struct SNAME *CMC_(PFX, _new_custom)(size_t capacity, struct CMC_DEF_FVAL(SNAME)
|
||||
return NULL;
|
||||
#endif
|
||||
|
||||
if (!f_val)
|
||||
return NULL;
|
||||
|
||||
if (!alloc)
|
||||
alloc = &cmc_alloc_node_default;
|
||||
|
||||
@@ -104,7 +101,7 @@ void CMC_(PFX, _clear)(struct SNAME *_list_)
|
||||
CMC_DEV_FCALL;
|
||||
#endif
|
||||
|
||||
if (_list_->f_val->free)
|
||||
if (_list_->f_val && _list_->f_val->free)
|
||||
{
|
||||
for (size_t i = 0; i < _list_->count; i++)
|
||||
_list_->f_val->free(_list_->buffer[i]);
|
||||
@@ -126,7 +123,7 @@ void CMC_(PFX, _free)(struct SNAME *_list_)
|
||||
CMC_DEV_FCALL;
|
||||
#endif
|
||||
|
||||
if (_list_->f_val->free)
|
||||
if (_list_->f_val && _list_->f_val->free)
|
||||
{
|
||||
for (size_t i = 0; i < _list_->count; i++)
|
||||
_list_->f_val->free(_list_->buffer[i]);
|
||||
@@ -138,8 +135,7 @@ void CMC_(PFX, _free)(struct SNAME *_list_)
|
||||
_list_->alloc->free(_list_);
|
||||
}
|
||||
|
||||
void CMC_(PFX, _customize)(struct SNAME *_list_, struct CMC_ALLOC_NODE_NAME *alloc,
|
||||
struct CMC_CALLBACKS_NAME *callbacks)
|
||||
void CMC_(PFX, _customize)(struct SNAME *_list_, CMC_ALLOC_TYPE alloc, CMC_CALLBACK_TYPE callbacks)
|
||||
{
|
||||
#ifdef CMC_DEV
|
||||
CMC_DEV_FCALL;
|
||||
@@ -188,7 +184,7 @@ bool CMC_(PFX, _push_front)(struct SNAME *_list_, V value)
|
||||
_list_->count++;
|
||||
_list_->flag = CMC_FLAG_OK;
|
||||
|
||||
CMC_CALLBACKS_CALL(_list_, create);
|
||||
CMC_CALLBACKS_CALL(_list_);
|
||||
|
||||
return true;
|
||||
}
|
||||
@@ -222,7 +218,7 @@ bool CMC_(PFX, _push_at)(struct SNAME *_list_, V value, size_t index)
|
||||
_list_->count++;
|
||||
_list_->flag = CMC_FLAG_OK;
|
||||
|
||||
CMC_CALLBACKS_CALL(_list_, create);
|
||||
CMC_CALLBACKS_CALL(_list_);
|
||||
|
||||
return true;
|
||||
}
|
||||
@@ -247,7 +243,7 @@ bool CMC_(PFX, _push_back)(struct SNAME *_list_, V value)
|
||||
_list_->buffer[_list_->count++] = value;
|
||||
_list_->flag = CMC_FLAG_OK;
|
||||
|
||||
CMC_CALLBACKS_CALL(_list_, create);
|
||||
CMC_CALLBACKS_CALL(_list_);
|
||||
|
||||
return true;
|
||||
}
|
||||
@@ -269,7 +265,7 @@ bool CMC_(PFX, _pop_front)(struct SNAME *_list_)
|
||||
_list_->buffer[--_list_->count] = (V){ 0 };
|
||||
_list_->flag = CMC_FLAG_OK;
|
||||
|
||||
CMC_CALLBACKS_CALL(_list_, delete);
|
||||
CMC_CALLBACKS_CALL(_list_);
|
||||
|
||||
return true;
|
||||
}
|
||||
@@ -297,7 +293,7 @@ bool CMC_(PFX, _pop_at)(struct SNAME *_list_, size_t index)
|
||||
_list_->buffer[--_list_->count] = (V){ 0 };
|
||||
_list_->flag = CMC_FLAG_OK;
|
||||
|
||||
CMC_CALLBACKS_CALL(_list_, delete);
|
||||
CMC_CALLBACKS_CALL(_list_);
|
||||
|
||||
return true;
|
||||
}
|
||||
@@ -309,12 +305,16 @@ bool CMC_(PFX, _pop_back)(struct SNAME *_list_)
|
||||
#endif
|
||||
|
||||
if (CMC_(PFX, _empty)(_list_))
|
||||
{
|
||||
_list_->flag = CMC_FLAG_EMPTY;
|
||||
CMC_CALLBACKS_CALL(_list_);
|
||||
return false;
|
||||
}
|
||||
|
||||
_list_->buffer[--_list_->count] = (V){ 0 };
|
||||
_list_->flag = CMC_FLAG_OK;
|
||||
|
||||
CMC_CALLBACKS_CALL(_list_, delete);
|
||||
CMC_CALLBACKS_CALL(_list_);
|
||||
|
||||
return true;
|
||||
}
|
||||
@@ -333,7 +333,7 @@ V CMC_(PFX, _front)(struct SNAME *_list_)
|
||||
|
||||
_list_->flag = CMC_FLAG_OK;
|
||||
|
||||
CMC_CALLBACKS_CALL(_list_, read);
|
||||
CMC_CALLBACKS_CALL(_list_);
|
||||
|
||||
return _list_->buffer[0];
|
||||
}
|
||||
@@ -347,18 +347,20 @@ V CMC_(PFX, _get)(struct SNAME *_list_, size_t index)
|
||||
if (CMC_(PFX, _empty)(_list_))
|
||||
{
|
||||
_list_->flag = CMC_FLAG_EMPTY;
|
||||
CMC_CALLBACKS_CALL(_list_);
|
||||
return (V){ 0 };
|
||||
}
|
||||
|
||||
if (index >= _list_->count)
|
||||
{
|
||||
_list_->flag = CMC_FLAG_RANGE;
|
||||
CMC_CALLBACKS_CALL(_list_);
|
||||
return (V){ 0 };
|
||||
}
|
||||
|
||||
_list_->flag = CMC_FLAG_OK;
|
||||
|
||||
CMC_CALLBACKS_CALL(_list_, read);
|
||||
CMC_CALLBACKS_CALL(_list_);
|
||||
|
||||
return _list_->buffer[index];
|
||||
}
|
||||
@@ -383,7 +385,7 @@ V *CMC_(PFX, _get_ref)(struct SNAME *_list_, size_t index)
|
||||
|
||||
_list_->flag = CMC_FLAG_OK;
|
||||
|
||||
CMC_CALLBACKS_CALL(_list_, read);
|
||||
CMC_CALLBACKS_CALL(_list_);
|
||||
|
||||
return &(_list_->buffer[index]);
|
||||
}
|
||||
@@ -402,7 +404,7 @@ V CMC_(PFX, _back)(struct SNAME *_list_)
|
||||
|
||||
_list_->flag = CMC_FLAG_OK;
|
||||
|
||||
CMC_CALLBACKS_CALL(_list_, read);
|
||||
CMC_CALLBACKS_CALL(_list_);
|
||||
|
||||
return _list_->buffer[_list_->count - 1];
|
||||
}
|
||||
@@ -413,6 +415,12 @@ size_t CMC_(PFX, _index_of)(struct SNAME *_list_, V value, bool from_start)
|
||||
CMC_DEV_FCALL;
|
||||
#endif
|
||||
|
||||
if (_list_->f_val == NULL || _list_->f_val->cmp == NULL)
|
||||
{
|
||||
_list_->flag = CMC_FLAG_FTABLE;
|
||||
return 0;
|
||||
}
|
||||
|
||||
_list_->flag = CMC_FLAG_OK;
|
||||
|
||||
size_t result = _list_->count;
|
||||
@@ -421,7 +429,7 @@ size_t CMC_(PFX, _index_of)(struct SNAME *_list_, V value, bool from_start)
|
||||
{
|
||||
for (size_t i = 0; i < _list_->count; i++)
|
||||
{
|
||||
if (_list_->f_val->cmp(_list_->buffer[i], value) == 0)
|
||||
if (0 == _list_->f_val->cmp(_list_->buffer[i], value))
|
||||
{
|
||||
result = i;
|
||||
break;
|
||||
@@ -432,7 +440,7 @@ size_t CMC_(PFX, _index_of)(struct SNAME *_list_, V value, bool from_start)
|
||||
{
|
||||
for (size_t i = _list_->count; i > 0; i--)
|
||||
{
|
||||
if (_list_->f_val->cmp(_list_->buffer[i - 1], value) == 0)
|
||||
if (0 == _list_->f_val->cmp(_list_->buffer[i - 1], value))
|
||||
{
|
||||
result = i - 1;
|
||||
break;
|
||||
@@ -440,7 +448,7 @@ size_t CMC_(PFX, _index_of)(struct SNAME *_list_, V value, bool from_start)
|
||||
}
|
||||
}
|
||||
|
||||
CMC_CALLBACKS_CALL(_list_, read);
|
||||
CMC_CALLBACKS_CALL(_list_);
|
||||
|
||||
return result;
|
||||
}
|
||||
@@ -451,20 +459,26 @@ bool CMC_(PFX, _contains)(struct SNAME *_list_, V value)
|
||||
CMC_DEV_FCALL;
|
||||
#endif
|
||||
|
||||
if (_list_->f_val == NULL || _list_->f_val->cmp == NULL)
|
||||
{
|
||||
_list_->flag = CMC_FLAG_FTABLE;
|
||||
return false;
|
||||
}
|
||||
|
||||
_list_->flag = CMC_FLAG_OK;
|
||||
|
||||
bool result = false;
|
||||
|
||||
for (size_t i = 0; i < _list_->count; i++)
|
||||
{
|
||||
if (_list_->f_val->cmp(_list_->buffer[i], value) == 0)
|
||||
if (0 == _list_->f_val->cmp(_list_->buffer[i], value))
|
||||
{
|
||||
result = true;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
CMC_CALLBACKS_CALL(_list_, read);
|
||||
CMC_CALLBACKS_CALL(_list_);
|
||||
|
||||
return result;
|
||||
}
|
||||
@@ -567,7 +581,7 @@ bool CMC_(PFX, _resize)(struct SNAME *_list_, size_t capacity)
|
||||
_list_->buffer = new_buffer;
|
||||
_list_->capacity = capacity;
|
||||
|
||||
CMC_CALLBACKS_CALL(_list_, resize);
|
||||
CMC_CALLBACKS_CALL(_list_);
|
||||
|
||||
return true;
|
||||
}
|
||||
@@ -593,7 +607,7 @@ struct SNAME *CMC_(PFX, _copy_of)(struct SNAME *_list_)
|
||||
|
||||
CMC_CALLBACKS_ASSIGN(result, _list_->callbacks);
|
||||
|
||||
if (_list_->f_val->cpy)
|
||||
if (_list_->f_val && _list_->f_val->cpy)
|
||||
{
|
||||
for (size_t i = 0; i < _list_->count; i++)
|
||||
result->buffer[i] = _list_->f_val->cpy(_list_->buffer[i]);
|
||||
@@ -1,7 +1,7 @@
|
||||
/**
|
||||
* Copyright (c) 2019 Leonardo Vencovsky
|
||||
*
|
||||
* This file is part of the C Macro Collections Libray.
|
||||
* This file is part of the C Macro Collections Library.
|
||||
*
|
||||
* Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
* of this software and associated documentation files (the "Software"), to deal
|
||||
@@ -48,11 +48,11 @@ struct SNAME CMC_(PFX, _init)(size_t capacity, struct CMC_DEF_FVAL(SNAME) * f_va
|
||||
}
|
||||
|
||||
#ifdef CMC_SAC
|
||||
struct SNAME CMC_(PFX, _init_custom)(struct CMC_DEF_FVAL(SNAME) * f_val, struct CMC_ALLOC_NODE_NAME *alloc,
|
||||
struct CMC_CALLBACKS_NAME *callbacks)
|
||||
struct SNAME CMC_(PFX, _init_custom)(struct CMC_DEF_FVAL(SNAME) * f_val, CMC_ALLOC_TYPE alloc,
|
||||
CMC_CALLBACK_TYPE callbacks)
|
||||
#else
|
||||
struct SNAME CMC_(PFX, _init_custom)(size_t capacity, struct CMC_DEF_FVAL(SNAME) * f_val,
|
||||
struct CMC_ALLOC_NODE_NAME *alloc, struct CMC_CALLBACKS_NAME *callbacks)
|
||||
struct SNAME CMC_(PFX, _init_custom)(size_t capacity, struct CMC_DEF_FVAL(SNAME) * f_val, CMC_ALLOC_TYPE alloc,
|
||||
CMC_CALLBACK_TYPE callbacks)
|
||||
#endif
|
||||
{
|
||||
#ifdef CMC_DEV
|
||||
@@ -397,7 +397,7 @@ bool CMC_(PFX, _seq_push_front)(struct SNAME *_list_, V *values, size_t size)
|
||||
_list_->count += size;
|
||||
_list_->flag = CMC_FLAG_OK;
|
||||
|
||||
CMC_CALLBACKS_CALL(_list_, create);
|
||||
CMC_CALLBACKS_CALL(_list_);
|
||||
|
||||
return true;
|
||||
}
|
||||
@@ -443,7 +443,7 @@ bool CMC_(PFX, _seq_push_at)(struct SNAME *_list_, V *values, size_t size, size_
|
||||
_list_->count += size;
|
||||
_list_->flag = CMC_FLAG_OK;
|
||||
|
||||
CMC_CALLBACKS_CALL(_list_, create);
|
||||
CMC_CALLBACKS_CALL(_list_);
|
||||
|
||||
return true;
|
||||
}
|
||||
@@ -476,7 +476,7 @@ bool CMC_(PFX, _seq_push_back)(struct SNAME *_list_, V *values, size_t size)
|
||||
_list_->count += size;
|
||||
_list_->flag = CMC_FLAG_OK;
|
||||
|
||||
CMC_CALLBACKS_CALL(_list_, create);
|
||||
CMC_CALLBACKS_CALL(_list_);
|
||||
|
||||
return true;
|
||||
}
|
||||
@@ -508,7 +508,7 @@ bool CMC_(PFX, _seq_pop_at)(struct SNAME *_list_, size_t from, size_t to)
|
||||
_list_->count -= to - from + 1;
|
||||
_list_->flag = CMC_FLAG_OK;
|
||||
|
||||
CMC_CALLBACKS_CALL(_list_, delete);
|
||||
CMC_CALLBACKS_CALL(_list_);
|
||||
|
||||
return true;
|
||||
}
|
||||
@@ -556,7 +556,7 @@ struct SNAME *CMC_(PFX, _seq_sublist)(struct SNAME *_list_, size_t from, size_t
|
||||
|
||||
_list_->flag = CMC_FLAG_OK;
|
||||
|
||||
CMC_CALLBACKS_CALL(_list_, delete);
|
||||
CMC_CALLBACKS_CALL(_list_);
|
||||
|
||||
return result;
|
||||
}
|
||||
@@ -1,7 +1,7 @@
|
||||
/**
|
||||
* Copyright (c) 2019 Leonardo Vencovsky
|
||||
*
|
||||
* This file is part of the C Macro Collections Libray.
|
||||
* This file is part of the C Macro Collections Library.
|
||||
*
|
||||
* Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
* of this software and associated documentation files (the "Software"), to deal
|
||||
@@ -32,12 +32,12 @@
|
||||
|
||||
#ifdef CMC_SAC
|
||||
struct SNAME CMC_(PFX, _init)(struct CMC_DEF_FVAL(SNAME) * f_val);
|
||||
struct SNAME CMC_(PFX, _init_custom)(struct CMC_DEF_FVAL(SNAME) * f_val, struct CMC_ALLOC_NODE_NAME *alloc,
|
||||
struct CMC_CALLBACKS_NAME *callbacks);
|
||||
struct SNAME CMC_(PFX, _init_custom)(struct CMC_DEF_FVAL(SNAME) * f_val, CMC_ALLOC_TYPE alloc,
|
||||
CMC_CALLBACK_TYPE callbacks);
|
||||
#else
|
||||
struct SNAME CMC_(PFX, _init)(size_t capacity, struct CMC_DEF_FVAL(SNAME) * f_val);
|
||||
struct SNAME CMC_(PFX, _init_custom)(size_t capacity, struct CMC_DEF_FVAL(SNAME) * f_val,
|
||||
struct CMC_ALLOC_NODE_NAME *alloc, struct CMC_CALLBACKS_NAME *callbacks);
|
||||
struct SNAME CMC_(PFX, _init_custom)(size_t capacity, struct CMC_DEF_FVAL(SNAME) * f_val, CMC_ALLOC_TYPE alloc,
|
||||
CMC_CALLBACK_TYPE callbacks);
|
||||
#endif
|
||||
void CMC_(PFX, _release)(struct SNAME _list_);
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
/**
|
||||
* Copyright (c) 2019 Leonardo Vencovsky
|
||||
*
|
||||
* This file is part of the C Macro Collections Libray.
|
||||
* This file is part of the C Macro Collections Library.
|
||||
*
|
||||
* Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
* of this software and associated documentation files (the "Software"), to deal
|
||||
@@ -1,7 +1,7 @@
|
||||
/**
|
||||
* Copyright (c) 2019 Leonardo Vencovsky
|
||||
*
|
||||
* This file is part of the C Macro Collections Libray.
|
||||
* This file is part of the C Macro Collections Library.
|
||||
*
|
||||
* Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
* of this software and associated documentation files (the "Software"), to deal
|
||||
@@ -42,18 +42,17 @@ struct CMC_DEF_FVAL(SNAME)
|
||||
/* Collection Allocation and Deallocation */
|
||||
#ifdef CMC_SAC
|
||||
struct SNAME *CMC_(PFX, _new)(struct CMC_DEF_FVAL(SNAME) * f_val);
|
||||
struct SNAME *CMC_(PFX, _new_custom)(struct CMC_DEF_FVAL(SNAME) * f_val, struct CMC_ALLOC_NODE_NAME *alloc,
|
||||
struct CMC_CALLBACKS_NAME *callbacks);
|
||||
struct SNAME *CMC_(PFX, _new_custom)(struct CMC_DEF_FVAL(SNAME) * f_val, CMC_ALLOC_TYPE alloc,
|
||||
CMC_CALLBACK_TYPE callbacks);
|
||||
#else
|
||||
struct SNAME *CMC_(PFX, _new)(size_t capacity, struct CMC_DEF_FVAL(SNAME) * f_val);
|
||||
struct SNAME *CMC_(PFX, _new_custom)(size_t capacity, struct CMC_DEF_FVAL(SNAME) * f_val,
|
||||
struct CMC_ALLOC_NODE_NAME *alloc, struct CMC_CALLBACKS_NAME *callbacks);
|
||||
struct SNAME *CMC_(PFX, _new_custom)(size_t capacity, struct CMC_DEF_FVAL(SNAME) * f_val, CMC_ALLOC_TYPE alloc,
|
||||
CMC_CALLBACK_TYPE callbacks);
|
||||
#endif
|
||||
void CMC_(PFX, _clear)(struct SNAME *_list_);
|
||||
void CMC_(PFX, _free)(struct SNAME *_list_);
|
||||
/* Customization of Allocation and Callbacks */
|
||||
void CMC_(PFX, _customize)(struct SNAME *_list_, struct CMC_ALLOC_NODE_NAME *alloc,
|
||||
struct CMC_CALLBACKS_NAME *callbacks);
|
||||
void CMC_(PFX, _customize)(struct SNAME *_list_, CMC_ALLOC_TYPE alloc, CMC_CALLBACK_TYPE callbacks);
|
||||
/* Collection Input and Output */
|
||||
bool CMC_(PFX, _push_front)(struct SNAME *_list_, V value);
|
||||
bool CMC_(PFX, _push_at)(struct SNAME *_list_, V value, size_t index);
|
||||
@@ -1,7 +1,7 @@
|
||||
/**
|
||||
* Copyright (c) 2019 Leonardo Vencovsky
|
||||
*
|
||||
* This file is part of the C Macro Collections Libray.
|
||||
* This file is part of the C Macro Collections Library.
|
||||
*
|
||||
* Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
* of this software and associated documentation files (the "Software"), to deal
|
||||
@@ -39,7 +39,7 @@ struct SNAME
|
||||
/* Value function table */
|
||||
struct CMC_DEF_FVAL(SNAME) * f_val;
|
||||
/* Custom allocation functions */
|
||||
struct CMC_ALLOC_NODE_NAME *alloc;
|
||||
CMC_ALLOC_TYPE alloc;
|
||||
/* Custom callback functions */
|
||||
CMC_CALLBACKS_DECL;
|
||||
};
|
||||
@@ -1,7 +1,7 @@
|
||||
/**
|
||||
* Copyright (c) 2019 Leonardo Vencovsky
|
||||
*
|
||||
* This file is part of the C Macro Collections Libray.
|
||||
* This file is part of the C Macro Collections Library.
|
||||
*
|
||||
* Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
* of this software and associated documentation files (the "Software"), to deal
|
||||
@@ -1,7 +1,7 @@
|
||||
/**
|
||||
* Copyright (c) 2019 Leonardo Vencovsky
|
||||
*
|
||||
* This file is part of the C Macro Collections Libray.
|
||||
* This file is part of the C Macro Collections Library.
|
||||
*
|
||||
* Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
* of this software and associated documentation files (the "Software"), to deal
|
||||
@@ -34,8 +34,8 @@ struct SNAME *CMC_(PFX, _new)(size_t capacity, struct CMC_DEF_FVAL(SNAME) * f_va
|
||||
return CMC_(PFX, _new_custom)(capacity, f_val, NULL, NULL);
|
||||
}
|
||||
|
||||
struct SNAME *CMC_(PFX, _new_custom)(size_t capacity, struct CMC_DEF_FVAL(SNAME) * f_val,
|
||||
struct CMC_ALLOC_NODE_NAME *alloc, struct CMC_CALLBACKS_NAME *callbacks)
|
||||
struct SNAME *CMC_(PFX, _new_custom)(size_t capacity, struct CMC_DEF_FVAL(SNAME) * f_val, CMC_ALLOC_TYPE alloc,
|
||||
CMC_CALLBACK_TYPE callbacks)
|
||||
{
|
||||
#ifdef CMC_DEV
|
||||
CMC_DEV_FCALL;
|
||||
@@ -121,8 +121,7 @@ void CMC_(PFX, _free)(struct SNAME *_queue_)
|
||||
_queue_->alloc->free(_queue_);
|
||||
}
|
||||
|
||||
void CMC_(PFX, _customize)(struct SNAME *_queue_, struct CMC_ALLOC_NODE_NAME *alloc,
|
||||
struct CMC_CALLBACKS_NAME *callbacks)
|
||||
void CMC_(PFX, _customize)(struct SNAME *_queue_, CMC_ALLOC_TYPE alloc, CMC_CALLBACK_TYPE callbacks)
|
||||
{
|
||||
#ifdef CMC_DEV
|
||||
CMC_DEV_FCALL;
|
||||
@@ -158,7 +157,7 @@ bool CMC_(PFX, _enqueue)(struct SNAME *_queue_, V value)
|
||||
_queue_->count++;
|
||||
_queue_->flag = CMC_FLAG_OK;
|
||||
|
||||
CMC_CALLBACKS_CALL(_queue_, create);
|
||||
CMC_CALLBACKS_CALL(_queue_);
|
||||
|
||||
return true;
|
||||
}
|
||||
@@ -181,7 +180,7 @@ bool CMC_(PFX, _dequeue)(struct SNAME *_queue_)
|
||||
_queue_->count--;
|
||||
_queue_->flag = CMC_FLAG_OK;
|
||||
|
||||
CMC_CALLBACKS_CALL(_queue_, delete);
|
||||
CMC_CALLBACKS_CALL(_queue_);
|
||||
|
||||
return true;
|
||||
}
|
||||
@@ -200,7 +199,7 @@ V CMC_(PFX, _peek)(struct SNAME *_queue_)
|
||||
|
||||
_queue_->flag = CMC_FLAG_OK;
|
||||
|
||||
CMC_CALLBACKS_CALL(_queue_, read);
|
||||
CMC_CALLBACKS_CALL(_queue_);
|
||||
|
||||
return _queue_->buffer[_queue_->front];
|
||||
}
|
||||
@@ -226,7 +225,7 @@ bool CMC_(PFX, _contains)(struct SNAME *_queue_, V value)
|
||||
i = (i + 1) % _queue_->capacity;
|
||||
}
|
||||
|
||||
CMC_CALLBACKS_CALL(_queue_, read);
|
||||
CMC_CALLBACKS_CALL(_queue_);
|
||||
|
||||
return result;
|
||||
}
|
||||
@@ -317,7 +316,7 @@ success:
|
||||
|
||||
_queue_->flag = CMC_FLAG_OK;
|
||||
|
||||
CMC_CALLBACKS_CALL(_queue_, resize);
|
||||
CMC_CALLBACKS_CALL(_queue_);
|
||||
|
||||
return true;
|
||||
}
|
||||
@@ -1,7 +1,7 @@
|
||||
/**
|
||||
* Copyright (c) 2019 Leonardo Vencovsky
|
||||
*
|
||||
* This file is part of the C Macro Collections Libray.
|
||||
* This file is part of the C Macro Collections Library.
|
||||
*
|
||||
* Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
* of this software and associated documentation files (the "Software"), to deal
|
||||
@@ -39,8 +39,8 @@ struct SNAME CMC_(PFX, _init)(size_t capacity, struct CMC_DEF_FVAL(SNAME) * f_va
|
||||
return CMC_(PFX, _init_custom)(capacity, f_val, NULL, NULL);
|
||||
}
|
||||
|
||||
struct SNAME CMC_(PFX, _init_custom)(size_t capacity, struct CMC_DEF_FVAL(SNAME) * f_val,
|
||||
struct CMC_ALLOC_NODE_NAME *alloc, struct CMC_CALLBACKS_NAME *callbacks)
|
||||
struct SNAME CMC_(PFX, _init_custom)(size_t capacity, struct CMC_DEF_FVAL(SNAME) * f_val, CMC_ALLOC_TYPE alloc,
|
||||
CMC_CALLBACK_TYPE callbacks)
|
||||
{
|
||||
#ifdef CMC_DEV
|
||||
CMC_DEV_FCALL;
|
||||
@@ -1,7 +1,7 @@
|
||||
/**
|
||||
* Copyright (c) 2019 Leonardo Vencovsky
|
||||
*
|
||||
* This file is part of the C Macro Collections Libray.
|
||||
* This file is part of the C Macro Collections Library.
|
||||
*
|
||||
* Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
* of this software and associated documentation files (the "Software"), to deal
|
||||
@@ -31,8 +31,8 @@
|
||||
#ifdef CMC_EXT_INIT
|
||||
|
||||
struct SNAME CMC_(PFX, _init)(size_t capacity, struct CMC_DEF_FVAL(SNAME) * f_val);
|
||||
struct SNAME CMC_(PFX, _init_custom)(size_t capacity, struct CMC_DEF_FVAL(SNAME) * f_val,
|
||||
struct CMC_ALLOC_NODE_NAME *alloc, struct CMC_CALLBACKS_NAME *callbacks);
|
||||
struct SNAME CMC_(PFX, _init_custom)(size_t capacity, struct CMC_DEF_FVAL(SNAME) * f_val, CMC_ALLOC_TYPE alloc,
|
||||
CMC_CALLBACK_TYPE callbacks);
|
||||
void CMC_(PFX, _release)(struct SNAME _queue_);
|
||||
|
||||
#endif /* CMC_EXT_INIT */
|
||||
@@ -1,7 +1,7 @@
|
||||
/**
|
||||
* Copyright (c) 2019 Leonardo Vencovsky
|
||||
*
|
||||
* This file is part of the C Macro Collections Libray.
|
||||
* This file is part of the C Macro Collections Library.
|
||||
*
|
||||
* Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
* of this software and associated documentation files (the "Software"), to deal
|
||||
@@ -1,7 +1,7 @@
|
||||
/**
|
||||
* Copyright (c) 2019 Leonardo Vencovsky
|
||||
*
|
||||
* This file is part of the C Macro Collections Libray.
|
||||
* This file is part of the C Macro Collections Library.
|
||||
*
|
||||
* Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
* of this software and associated documentation files (the "Software"), to deal
|
||||
@@ -41,13 +41,12 @@ struct CMC_DEF_FVAL(SNAME)
|
||||
|
||||
/* Collection Allocation and Deallocation */
|
||||
struct SNAME *CMC_(PFX, _new)(size_t capacity, struct CMC_DEF_FVAL(SNAME) * f_val);
|
||||
struct SNAME *CMC_(PFX, _new_custom)(size_t capacity, struct CMC_DEF_FVAL(SNAME) * f_val,
|
||||
struct CMC_ALLOC_NODE_NAME *alloc, struct CMC_CALLBACKS_NAME *callbacks);
|
||||
struct SNAME *CMC_(PFX, _new_custom)(size_t capacity, struct CMC_DEF_FVAL(SNAME) * f_val, CMC_ALLOC_TYPE alloc,
|
||||
CMC_CALLBACK_TYPE callbacks);
|
||||
void CMC_(PFX, _clear)(struct SNAME *_queue_);
|
||||
void CMC_(PFX, _free)(struct SNAME *_queue_);
|
||||
/* Customization of Allocation and Callbacks */
|
||||
void CMC_(PFX, _customize)(struct SNAME *_queue_, struct CMC_ALLOC_NODE_NAME *alloc,
|
||||
struct CMC_CALLBACKS_NAME *callbacks);
|
||||
void CMC_(PFX, _customize)(struct SNAME *_queue_, CMC_ALLOC_TYPE alloc, CMC_CALLBACK_TYPE callbacks);
|
||||
/* Collection Input and Output */
|
||||
bool CMC_(PFX, _enqueue)(struct SNAME *_queue_, V value);
|
||||
bool CMC_(PFX, _dequeue)(struct SNAME *_queue_);
|
||||
@@ -1,7 +1,7 @@
|
||||
/**
|
||||
* Copyright (c) 2019 Leonardo Vencovsky
|
||||
*
|
||||
* This file is part of the C Macro Collections Libray.
|
||||
* This file is part of the C Macro Collections Library.
|
||||
*
|
||||
* Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
* of this software and associated documentation files (the "Software"), to deal
|
||||
@@ -39,7 +39,7 @@ struct SNAME
|
||||
/* Value function table */
|
||||
struct CMC_DEF_FVAL(SNAME) * f_val;
|
||||
/* Custom allocation functions */
|
||||
struct CMC_ALLOC_NODE_NAME *alloc;
|
||||
CMC_ALLOC_TYPE alloc;
|
||||
/* Custom callback functions */
|
||||
CMC_CALLBACKS_DECL;
|
||||
};
|
||||
Loaded 100 of 156 files, more files were not shown because too many files have changed in this diff.
Show more
Reference in new issue
Block a user