the collection description structure should be unified
among various data structures (utility structures,
collections, dictionaries) and a "bad cast" function
should be implemented in each of them;
thus it will be possible to replace clc_* macros with
regular functions that will eliminate some ugly side
effects (main problem - inability to use currectly
clc_size(i++) as i is incremented twice in the call)
the "bad cast" function will do nothing but set up
collection error status to "bad cast"
this way, all structure descriptions should look like that:
struct ..._desc {
(... general object functions ...)
(... collection functions ...)
(... dictionary functions ...)
};
This is not a performance or memory problem as
description object is shared among all collection instances