I'm sorry for the bad title, but nothing better came to my mind apart from "I don't understand this code". Please, feel free to propose a modification.
I'm reading this code. I've never seen a C function like this one:
static void
VL_XCAT(_vl_vlad_encode_, SFX)
(TYPE * enc,
TYPE const * means, vl_size dimension, vl_size numClusters,
TYPE const * data, vl_size numData,
TYPE const * assignments,
int flags)
{
// function body
}
In particular I'm confused by (_vl_vlad_encode_, SFX)
. Up to know, all the functions headers that I've seen had only one "pair of round brackets" (the function's parameters), while here there are two pairs.
What does it mean the first one? I think that this is linked to later calls _vl_vlad_encode_f
and _vl_vlad_encode_d
, which don't appears anywhere else in the library code, but I can't understand how they're connected.