C++ Logo

std-proposals

Advanced search

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

From: Wesley Oliver <wesley.olis_at_[hidden]>
Date: Mon, 18 Jan 2021 09:26:10 +0200
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
<https://docs.google.com/document/d/1VlxUG9Cvp3YPRyF_CdCkGeGgRyGA0GDp3miDJElAbT4/edit?usp=sharing>


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}


-- 
----
GitHub:https://github.com/wesleyolis
LinkedIn:https://www.linkedin.com/in/wesley-walter-anton-oliver-85466613b/
Blog/Website:https://sites.google.com/site/wiprogamming/Home
Skype: wezley_oliver
MSN messenger: wesley.olis_at_[hidden]

Received on 2021-01-18 01:26:26