[PR #7220] [DRAFT] add til::clump<T>, some weird data structure #26868

Closed
opened 2026-01-31 09:18:36 +00:00 by claunia · 0 comments
Owner

Original Pull Request: https://github.com/microsoft/terminal/pull/7220

State: closed
Merged: No


Summary of the Pull Request

clump is a vector intended to be consumed in chunks.
It is stored as a vector of T with an optional vector
of lengths as a sidecar.
If the length vector is missing, it is assumed that
each component is of length 1.

         +-----------------------------+---------+----+ 
Sizes    | 6                           | 2       | 1  | 
         +--------Region 1-------------+--Rgn 2--+-R3-+ 
Contents | 38 |  2 |  0 | 12 | 34 | 56 |  4 |  2 |  2 | 
         +----+----+----+----+----+----+----+----+----+ 

During iteration, this clump will produce three spans:

{38, 2, 0, 12, 34, 56}                                  
{4, 2}                                                  
{2}                                                     
Sizes    [ UNSPECIFIED       ]                          
         +----+----+----+----+                          
Contents | 38 |  5 | 68 |  8 |                          
         +----+----+----+----+                          

During iteration, this clump will produce four spans:

{38}                                                    
{5}                                                     
{68}                                                    
{8}                                                     

It's designed like this to be approximately as performant as a vector in the normal case (where there are no sizes specified).

TODO:

  • Tests
  • Fill out this PR body
  • Maybe find a name for it, who knows
  • Try it out in the state machine

References

PR Checklist

  • Closes #xxx
  • CLA signed. If not, go over here and sign the CLA
  • Tests added/passed
  • Documentation updated. If checked, please file a pull request on our docs repo and link it here: #xxx
  • Schema updated.
  • I've discussed this with core contributors already. If not checked, I'm ready to accept this work might be rejected in favor of a different grand plan. Issue number where discussion took place: #xxx

Detailed Description of the Pull Request / Additional comments

Validation Steps Performed

**Original Pull Request:** https://github.com/microsoft/terminal/pull/7220 **State:** closed **Merged:** No --- ## Summary of the Pull Request clump is a vector intended to be consumed in chunks. It is stored as a vector of T with an optional vector of lengths as a sidecar. If the length vector is missing, it is assumed that each component is of length 1. ``` +-----------------------------+---------+----+ Sizes | 6 | 2 | 1 | +--------Region 1-------------+--Rgn 2--+-R3-+ Contents | 38 | 2 | 0 | 12 | 34 | 56 | 4 | 2 | 2 | +----+----+----+----+----+----+----+----+----+ ``` During iteration, this clump will produce three spans: ``` {38, 2, 0, 12, 34, 56} {4, 2} {2} ``` ``` Sizes [ UNSPECIFIED ] +----+----+----+----+ Contents | 38 | 5 | 68 | 8 | +----+----+----+----+ ``` During iteration, this clump will produce four spans: ``` {38} {5} {68} {8} ``` It's designed like this to be approximately as performant as a vector in the normal case (where there are no sizes specified). TODO: * Tests * Fill out this PR body * Maybe find a name for it, who knows * Try it out in the state machine <!-- Other than the issue solved, is this relevant to any other issues/existing PRs? --> ## References <!-- Please review the items on the PR checklist before submitting--> ## PR Checklist * [ ] Closes #xxx * [ ] CLA signed. If not, go over [here](https://cla.opensource.microsoft.com/microsoft/Terminal) and sign the CLA * [ ] Tests added/passed * [ ] Documentation updated. If checked, please file a pull request on [our docs repo](https://github.com/MicrosoftDocs/terminal) and link it here: #xxx * [ ] Schema updated. * [ ] I've discussed this with core contributors already. If not checked, I'm ready to accept this work might be rejected in favor of a different grand plan. Issue number where discussion took place: #xxx <!-- Provide a more detailed description of the PR, other things fixed or any additional comments/features here --> ## Detailed Description of the Pull Request / Additional comments <!-- Describe how you validated the behavior. Add automated tests wherever possible, but list manual validation steps taken as well --> ## Validation Steps Performed
claunia added the pull-request label 2026-01-31 09:18:36 +00:00
Sign in to join this conversation.
No Label pull-request
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: starred/terminal#26868