PeelArray

This function introduces functionality that is missing or complicated in some programming languages.
The attribute inValue is a reference to an array of references. The attribute outValue is a reference to the same array, however a number of elements earlier or further, i.e. number of elements being attribute elementSize. Be aware that as we are talking about references the offset is depending on 32 bit / 64 bit compilation.

Syntax

//
//   Strong typing definition
//
void            PeelArray(
                        const void              ** inValue,
                        const void              ** outValue,
                        int64_t                 elementSize
                    );

static  inline  void    PeelArray(
                                void                    ** inValue,
                                void                    ** outValue,
                                int64_t                 elementSize
                            )
{
    return  PeelArray(
                    (const void**) inValue,
                    (const void**) outValue,
                    elementSize
                );
}


//
//   Weak typing definition
//
void    __declspec(dllexport) __stdcall PeelArray(
                                                const void              ** inValue,
                                                const void              ** outValue,
                                                int64_t                 elementSize
                                            );

static  inline  void    PeelArray(
                                void                    ** inValue,
                                void                    ** outValue,
                                int64_t                 elementSize
                            )
{
    return  PeelArray(
                    (const void**) inValue,
                    (const void**) outValue,
                    elementSize
                );
}
    

Property inValue

Size: 64 bit / 8 byte (reference)
The reference to the array of references (or as C++ does not really care an array of virtually any type).

Property outValue

Size: 64 bit / 8 byte (reference)
The reference to the reference containing the adjusted reference being an adjusted place in the given array of references.

Property elementSize

Size: 64 bit / 8 byte (value)
The size of an element, however better to be interpreted as a the count of references (size_t / int_t) as it is allowed to have a negative value.