Patrick Pelissier
4a96845fac
Improve error messages by the compiler
...
if the number of arguments doesn't match what is expected.
2023-11-01 11:14:27 +01:00
Patrick Pelissier
b742881ebc
WIP interface
2023-11-01 11:14:27 +01:00
Patrick Pelissier
f7f5db61d3
Fix formatting
2023-11-01 11:13:54 +01:00
Patrick Pelissier
32b00eb433
Add new operator GENTYPE
2023-10-21 19:05:08 +02:00
Patrick Pelissier
796f2619e5
Change M_BY_NARGS semantics:
...
simplify suffix by __ # NARGS
instead of __NARGS_ # NARGS
Driver: reduce macro name length.
2023-10-20 00:02:38 +02:00
Patrick Pelissier
268192138a
WIP M_ON_EXCEPTION
2023-10-19 22:54:51 +02:00
Patrick Pelissier
0671a2ea41
Update doc
2023-10-15 22:21:12 +02:00
Patrick Pelissier
07dce84e51
Tuple init: handle case of exception
...
during construction of tuple
2023-10-14 20:15:14 +02:00
Patrick Pelissier
5f4303624f
Adding macro M_CHAIN_OBJ
2023-10-14 15:55:59 +02:00
Patrick Pelissier
19e61467d5
Adding tuple generation
...
for analysis of generated code.
2023-10-14 15:31:37 +02:00
Patrick Pelissier
1454bcebe4
Add unique name identifier
...
in order to avoid Wshadow warning
in generated code.
2023-10-14 15:30:57 +02:00
Patrick Pelissier
d48f2ff84d
Update comment
2023-10-06 22:38:36 +02:00
Patrick Pelissier
269636b4d8
Update doc with new macro M_CHAIN_INIT
2023-09-09 18:40:59 +02:00
Patrick Pelissier
bf68340106
Add macro M_CHAIN_INIT for support of partially constructed object.
2023-09-09 18:40:32 +02:00
Patrick Pelissier
5dba526e29
Update ISSUES
2023-09-08 22:12:16 +02:00
Patrick Pelissier
469239adcd
Update comments
2023-08-24 23:32:47 +02:00
Patrick Pelissier
589abda0c2
Fix bug in list insertion:
...
The output iterator has its previous field incorrect.
2023-08-13 23:27:12 +02:00
Patrick Pelissier
8f141896ba
Clarify operators for memory allocation
2023-08-02 23:20:02 +02:00
Patrick Pelissier
a0cbec4329
Support of output failure for serialization of strings
2023-08-02 23:20:02 +02:00
Patrick Pelissier
df66db562d
Add comments
2023-08-01 00:33:43 +02:00
Patrick Pelissier
1829a70601
Update documentation
2023-07-20 23:42:15 +02:00
Patrick Pelissier
e9b25f2414
Rename internal field size to capacity
...
to match what it is used for.
2023-07-13 21:48:33 +02:00
Patrick Pelissier
c9bb739f24
Fix format
2023-07-10 00:59:18 +02:00
Patrick Pelissier
e049b83a9e
Rename M_SUFFIX_FUNCTION_BY_NARGS in M_BY_NARGS
...
and updates suffix with __NARGS_
in order to be more explicit.
2023-07-10 00:58:31 +02:00
Patrick Pelissier
31ac3999a1
Add new operators
2023-07-07 22:17:39 +02:00
Patrick Pelissier
a0818419ab
Fix format
2023-07-04 01:08:40 +02:00
Patrick Pelissier
496f885a84
Add threads backend for FreeRTOS tasks.
2023-07-04 01:07:59 +02:00
Patrick Pelissier
d5d9a4bd5c
Update documentation of threads
2023-07-04 00:46:32 +02:00
Patrick Pelissier
ca9571a110
Fix no stdio:
...
M_CSTR macro cannot be available if there is no stdio
2023-06-29 21:26:22 +02:00
Patrick Pelissier
4497214b9c
Fix spelling
2023-06-29 00:32:23 +02:00
PpHd
ccb1658afd
Provide way of avoiding code duplication for multiple source C files
...
Use of compiler extension for that, only compatible for GCC /CLANG.
This provides easy and total customization (for example non template functions like strings can also avoid code duplication).
2023-06-13 23:46:58 +02:00
Patrick Pelissier
eaf2783f1a
Synchro with master branch
2023-06-11 23:32:42 +02:00
Patrick Pelissier
5705819814
Update doc
2023-06-11 23:32:02 +02:00
Patrick Pelissier
91f5f513c4
Update macro names
...
Make global logic easier.
2023-06-11 23:32:02 +02:00
Patrick Pelissier
3dec4e2cbe
Fix example
2023-06-11 23:32:02 +02:00
Patrick Pelissier
e70766beaa
Update list of ignored file
2023-06-11 23:32:02 +02:00
Patrick Pelissier
d7639f0ae0
Update example to match new semantic
2023-06-11 23:32:02 +02:00
Patrick Pelissier
c63ce84e45
Update logic to select which linkage to use
...
so that user code can be written easily
M_USE_EXTERN_DECL / M_USE_DECL activates functions that are not inlined.
If M_USE_EXTERN_DEF / M_USE_DEF is also defined, then the definition is emitted instead of the declaration.
2023-06-11 23:32:02 +02:00
Patrick Pelissier
a043c379c0
Update user code as per new liberty
2023-06-11 23:32:02 +02:00
Patrick Pelissier
92bb380117
Rewrite order in preprocessing if to simplify user code
2023-06-11 23:32:02 +02:00
Patrick Pelissier
6bb7a184db
Fix compil rules
2023-06-11 23:32:02 +02:00
Patrick Pelissier
fa9163be9d
Make linker options optional
2023-06-11 23:32:02 +02:00
Patrick Pelissier
0bade1563c
Also build exn.exe by default
2023-06-11 23:32:02 +02:00
Patrick Pelissier
1278d2f8a0
Implement noinline another way
2023-06-11 23:32:02 +02:00
Patrick Pelissier
53af2aae68
Add example of separating inline & function code
2023-06-11 23:32:02 +02:00
Patrick Pelissier
17ded6fcc8
Update M_USE_EXTERN_FINE_GRAINED to avoid warnings
2023-06-11 23:32:02 +02:00
Patrick Pelissier
19ce371533
Add support for M_USE_EXTERN_FINE_GRAINED to enable / disable inline semantics alongside the translation unit by redefining it when needed
2023-06-11 23:32:02 +02:00
Patrick Pelissier
0bd1bcb68e
Another way to request the desired semantics, compatible with clang
2023-06-11 23:32:02 +02:00
Patrick Pelissier
b50813713a
Define internal M_INLINE:
...
it is used to control the inline semantics.
By combining it with optimize option "-fno-inline"
for the internal M*LIB function (using _Pragma optimize)
we can control easily if we want to use an inline version
or call of an external function.
Define new user API:
* M_USE_EXTERN_DECL : define it before including any MLIB header to requests to call the M*LIB functions and don't inline then.
* M_USE_EXTERN_DEF : define it once in a translation unit to define the M*LIB functions. This translation unit shall contain all templated macro too.
If you use one option, you need to use the other one too for another translation unit.
2023-06-11 23:32:02 +02:00
Patrick Pelissier
2628536d20
Add +m_string_it_set_ref
2023-06-10 01:50:14 +02:00
Patrick Pelissier
ecfa4a9152
Add new function string_pop_u
...
to pop the last unicode code point
of a string.
2023-06-03 00:59:34 +02:00
Patrick Pelissier
dafe4bcec5
Add basic test for M_DEFAULT_ARGS
...
Print hint to developper in case of incorrect usage
2023-06-03 00:56:13 +02:00
Patrick Pelissier
8544a7f289
Update example
2023-05-30 14:01:30 +02:00
Patrick Pelissier
aa18915d61
Fix overflow computation
2023-05-21 00:15:58 +02:00
Patrick Pelissier
df4bc0a56c
Remove alloc warning for analyzer:
...
it is not able to track allocations correctly and only give false warnings.
valgraind or memory sanitizer are much more reliable to track memory errors.
2023-05-13 00:52:06 +02:00
Patrick Pelissier
b6046e5e23
Fix new warnings with GCC13
2023-05-13 00:52:06 +02:00
Patrick Pelissier
b487bfe5ad
Adding missing inline
2023-05-08 23:54:16 +02:00
PpHd
408272c810
Merge pull request
...
Add m_string_cat_vprintf
2023-05-08 23:35:54 +02:00
Patrick Pelissier
b1b0927e9f
Update examples
2023-05-06 21:54:08 +02:00
Patrick Pelissier
37770365a1
Fix several bugs:
...
* in case of some invalid format starting with ']' directly it wrongly assume that the parsing was valid.
* incase of exception handling, and an exception was raised during the internal parsing, some destructors wern't called.
2023-05-05 22:16:39 +02:00
Patrick Pelissier
82bdcc685a
Add internal macro MQLET for internal M_LET use
2023-05-05 22:15:13 +02:00
Patrick Pelissier
26fa733f70
Fix format
2023-05-05 22:14:41 +02:00
Patrick Pelissier
cd2fc05573
Add FIXED_SIZE property
2023-05-05 21:41:05 +02:00
Patrick Pelissier
33430d4359
Update
2023-04-29 18:46:09 +02:00
Patrick Pelissier
dc95b49f05
Update
2023-04-29 12:07:10 +02:00
Patrick Pelissier
3ec24cfa40
Update
2023-04-29 11:41:08 +02:00
Patrick Pelissier
12b099dcf8
Update
2023-04-29 11:25:56 +02:00
Patrick Pelissier
b885d6136c
Update
2023-04-29 11:20:00 +02:00
Patrick Pelissier
b51c4bea2b
Update
2023-04-29 11:19:54 +02:00
Patrick Pelissier
302c5eb300
Remove export passthrough of NEW/DEL/REALLOC/FREE interface
...
from the container oplist.
It has no real practical purpose.
NEW/DEL/REALLOC/FREE shall be a property of the container
to be defined, and not a property for an already defined container.
2023-04-29 10:50:04 +02:00
Patrick Pelissier
6d2900a2bd
Improve coverage of test suite.
2023-04-27 00:04:44 +02:00
Patrick Pelissier
573e09c56e
Remove variable number of elements support which was not working.
...
Request an explicit number of elements.
2023-04-27 00:04:03 +02:00
Patrick Pelissier
0a39a17d36
The undefined number of element value of serial _array_start
...
is now (size_t)-1 and no longer 0.
Moreoever, a serialization interface may refuse outputting data
if it doesn't know the number of elements.
In which case, the container shall explictly compute the number
of elements and recall the serial object _array_start method.
2023-04-27 00:01:50 +02:00
Patrick Pelissier
a913d0947c
Rewrite code to fix coverage
2023-04-26 23:34:13 +02:00
Patrick Pelissier
abbd8ad6ce
Update
2023-04-26 22:56:23 +02:00
Patrick Pelissier
a09c9fe1c3
Update
2023-04-26 22:56:23 +02:00
Patrick Pelissier
219c62ff5d
Provide a way to alter the standard naming convention for the functions
...
Close #72
2023-04-22 09:33:08 +02:00
Patrick Pelissier
272a326375
Fix warning issue for coverage
2023-04-22 09:23:18 +02:00
Patrick Pelissier
eca79f2c80
Improve coverage of test suite
2023-04-21 22:44:34 +02:00
Patrick Pelissier
2feda4059f
Fix issue in case of invalid IO
2023-04-21 22:44:23 +02:00
Patrick Pelissier
de0ef67cf2
Fix build issue with VC++
2023-04-19 23:06:23 +02:00
Patrick Pelissier
95762a058c
Fix const attribute of _get_emplace
2023-04-19 22:42:21 +02:00
Patrick Pelissier
acd8671017
Fix test case according to contract.
2023-04-19 22:37:54 +02:00
Patrick Pelissier
a6c1688f23
Fix issue in remove root node for tree (part 2)
2023-04-19 22:37:40 +02:00
Patrick Pelissier
f6ed549ce5
Fix issue in tree_remove for root node index (Part 2)
...
Enable support of removing root node
In this case, it considers the first child of the root as the new root (breaking symetry)
2023-04-18 23:24:48 +02:00
Patrick Pelissier
8639fdbd98
Fix issue in tree_remove when it is root node (part 1)
2023-04-18 22:56:56 +02:00
Patrick Pelissier
693b09387f
Improve coverage of test suite.
2023-04-18 22:19:41 +02:00
Patrick Pelissier
4052d3794b
Tree: Transform runtime tests into assertion
...
as it is proven that it cannot happen.
2023-04-18 22:19:28 +02:00
Patrick Pelissier
044e9c3bf7
Fix benchmark
2023-04-17 16:56:57 +02:00
Patrick Pelissier
45a2a1afb2
Add bench for CC
2023-04-16 21:16:04 +02:00
Patrick Pelissier
b44e4e09dd
Don't use builtin for clang as they are not properly supported.
2023-04-16 20:11:56 +02:00
Patrick Pelissier
5158059ec4
Make m_throw a classic "cold" function rather than a static inline function.
...
Since the function shall be rarely called, there is no point in inlining/duplicating it
in several units.
2023-04-16 19:26:15 +02:00
Patrick Pelissier
7279011f0a
Use of the builtin versions of setjmp /longjmp for GCC / CLANG
...
They are more than twice faster on extreme bench of M\_LET / M\_TRY scenario
(and still twice slower than C++).
They also use less stack usage.
2023-04-16 19:18:04 +02:00
Patrick Pelissier
79369e9b05
Update README
2023-04-16 19:16:08 +02:00
Patrick Pelissier
58a7a7c214
Add gene TRY
2023-04-16 19:15:54 +02:00
Patrick Pelissier
e3e94ca238
Add M_ATTR_COLD_FUNCTION attribute
2023-04-16 19:15:22 +02:00
Patrick Pelissier
ae81271b2a
Fix name of internal variable for M_DEFER
2023-04-16 08:33:45 +02:00
Patrick Pelissier
d9c3724cff
Compatiblity with C++
2023-04-15 23:18:45 +02:00
Patrick Pelissier
1ff9848384
Update test so that it tests also the case of throwing without any try section (override M_RAISE_FATAL)
2023-04-15 22:51:57 +02:00
Patrick Pelissier
83e7f2a641
Use of new M_ATTR_NO_RETURN attribute
2023-04-15 22:50:47 +02:00