Hi,

I would like to also suggest the following improvements for the c++ language,
when working with pages where ones looks at compressing ptrs and things to use less data,
a lot of these operation are needed quite frequency. this really just make things simpler and more convenient understandable for some to follow what is going on.

07 April 2020 - Additional Native Ptr BitMap Flags bit position to int or ptr, value and visa versa visa for languages and CPU    

The ability to work with compressed bitMap Flag storage with more native feel to that of arrays and ptrs, would greatly benefit the manipulation of massive data sets for index merging selections of large records indicating included or exclude from and index merging of multiple recordsets super fast, avoiding comparisons and lookup of records.

The simple concept of arrays Ptr + offset is a new memory address is the concept one like to natively accelerate, to reduce bit shifting.

So imaging a new set of brackets, called BitMap operator in programming languages.


BitMapPtr, is typically BitMapType, in the typing system can abstract away the stride after initialization. 


Many of these can have underlying iterators and paging as par the hardware architecture to speed things up.


Operation Definitions:

  • BitMap to int
    BitMapPtr{bitPos}
    Converts the bit at the integer bit offset to a number.

    Example:

BitMapPtr{8} = 8d or 1000b

BitMapPtr{1} = 1d or 0001b

BitMapPtr{0} = 1d or 0000b



  • BitMap to int, PageSize
    BitMapPtr{bitPos, …[BitPageSizeOffset,...,..,..]}
    Converts the bit at the integer bit offset to a number plus the bitPageSizeOffset

    Example:

BitMapPtr{8,10} = 18d

BitMapPtr{1,20} = 11d

BitMapPtr{0,20} = 20d


  • BitMap Operator to Address
    BitMapPtr+{bitPos, …[BitPageSizeOffset,...,..,...]}
    Converts the bit at the integer bit offset to a number plus the bitPageSizeOffset

    Example:

100{8,10} = 118d

200{1,20} = 211d

300{0,20} = 320d


  • BitMap Operator to Value at Address
    *BitMapPtr{bitPos, …[BitPageSizeOffset,...,...,..]}
    Converts the bit at the integer bit offset to a number plus the bitPageSizeOffset

    Example:

*100{8,10} = value at addres location 118d

*200{1,20} = value at address location 211d

*300{0,20} = vlue at address location 320d




  • BitMap Operator assign Value to Address
    *BitMapPtr{bitPos, …[BitPageSizeOffset,..,..,..,..]} = true | false


  • BitMap Operator assign Value to Address
    *BitMapPtr{[BitPageSizeOffset]} = bitPos



  • BitMap Operator assign Value to Address
    *BitMapPtr{bitPos, …[BitPageSizeOffset,..,...,..], stride = 2} = 3


  • BitMap Operator assign Value to Address
    *BitMapPtr{bitPos,[BitPageSizeOffset,..,..,..], stride = 2} = bitValue


  • BitMap Left merge

*{BitMapPtr, stride = 2} <& *{BitMapPtr, stride = 2}
*{BitMapPtr, stride = 2} <& *{BitMapPtr, [BitPageOffset], stride = 2}


  • BitMap merge new result

*{BitMapPtr, stride = 4} = *{BitMapPtr, stride = 2} & *{BitMapPtr, stride = 2}

*{BitMapPtr, [PageOffsetStart,..,..,..], stride = 4} = *{BitMapPtr, [PageOffsetStart], [PageOffsetStop], stride = 2} & *{BitMapPtr, stride = 2}

  • BitMap add new result

*{BitMapPtr, [PageOffsetStart,..,..,..], stride = 4} = *{BitMapPtr, [PageOffsetStart], [PageOffsetStop], stride = 2} + *{BitMapPtr, [PageOffsetStart], [PageOffsetStop], stride = 2}


  • BitMap sub new result

*{BitMapPtr, stride = 4} = *{BitMapPtr, stride = 2} - *{BitMapPtr, stride = 1}


*{BitMapPtr, [PageOffsetStart], stride = 4} = *{BitMapPtr,[PageOffsetStart], [PageOffsetStop], stride = 2} - *{BitMapPtr,[PageOffsetStart], [PageOffsetStop], stride = 1}


  • BitMap sub new result

*{BitMapPtr, stride = 3} = *{BitMapPtr, stride = 1} - *{BitMapPtr, stride = 2}


*{BitMapPtr, [PageOffsetStart], stride = 3} = *{BitMapPtr, [PageOffsetStart], [PageOffsetStop], stride = 1} - *{BitMapPtr, [PageOffsetStart], [PageOffsetStop], stride = 2}


  • BitMap sub new result

*{BitMapPtr, stride = 4} = *{BitMapPtr, stride = 3} - *{BitMapPtr, stride = 1}


*{BitMapPtr, [PageOffsetStart], stride = 4} = *{BitMapPtr, [PageOffsetStart], [PageOffsetStop],stride = 3} - *{BitMapPtr,[PageOffsetStart], [PageOffsetStop], stride = 1}


  • BitMap subset new result

*{BitMapPtr, stride = 3} = *{BitMapPtr, stride = 3} < *{BitMapPtr, stride = 1}


*{BitMapPtr, [PageOffsetStart], stride = 3} = *{BitMapPtr, [PageOffsetStart], [PageOffsetStop],stride = 3} < *{BitMapPtr,[PageOffsetStart], [PageOffsetStop], stride = 1}


  • BitMap Superset new result, keeps the commond set awnsers

*{BitMapPtr, stride = 3} = *{BitMapPtr, stride = 3} > *{BitMapPtr, stride = 1}


*{BitMapPtr, [PageOffsetStart], stride = 3} = *{BitMapPtr, [PageOffsetStart], [PageOffsetStop],stride = 3} > *{BitMapPtr,[PageOffsetStart], [PageOffsetStop], stride = 1}


  • BitMap Superset/Subset in place leftover write result.

*{BitMapPtr, stride = 3} > *{BitMapPtr, stride = 1}


*{BitMapPtr, [PageOffsetStart], [PageOffsetStop],stride = 3} < *{BitMapPtr,[PageOffsetStart], [PageOffsetStop], stride = 1}



--