- Use
GetSystemTimeAsFileTime
byGetProcAddress
withGetModuleHandle
if exists. - Union type
Variant<T...>
- Finish the rest of the features and tests.
Union<T...>
.- If any type is
T*
,Ptr<T>
orNullable<T>
, Anullptr_t
is added automatically.- Any
Nullable<T>
becomesT
. T*
andPtr<T>
will be non-null.- null goes to
nullptr_t
. - optimize when all types are
Ptr<T>
.
- Any
- If any type is
- Support VlppReflection
- Both
Variant
andUnion
are reflectable. - Replace
enum
withenum class
in type related enums, for discovering which place used these things, to handle union.
- Both
- Support VlppParser2
- Support Workflow
- Generate
Union
if there is no hint.
- Generate
- Use concept on
ReferenceCounterOperator
and fix comment.
- Begin this task after GacUI unit tests are done.
- (1/3).
- enumerating,
reversed
.- lock the list, return
const T&
. - if a container supports random access, it needs to do something to explicitly enable enumerating and
reversed
.- otherwise an error needs to be generated instead of falling back to use
IEnumerable<T>
version. - the
something
needs to tell if it supportsalterable
.
- otherwise an error needs to be generated instead of falling back to use
- lock the list, return
indexed
can be used onreversed
.indexed(reversed)
need to be careful about the index, it is fromCount() - 1
to0
.
- Check for
for\s*\((auto|vint)
and refactor.- When iterating cannot apply, mark
//TODO: (enumerating) TheNeededContainerType
. - When a foreach loop needs to update the container, mark
//TODO: (enumerating) alterable
- When iterating cannot apply, mark
- enumerating,
- (2/3).
alterable
.- lock operations that affect index, from top to the current position, return
T&
. - does not compile when applying on a const container.
- lock operations that affect index, from top to the current position, return
alterable(reversed)
.- lock operations that affect index, from top to the current position - 1, return
T&
.
- lock operations that affect index, from top to the current position - 1, return
indexed
can be used onalterable
andalterable(reversed)
.indexed(alterable(reversed))
need to be careful about the index, it is fromCount() - 1
to0
.
locked
andalterable
are like reader writer lock, but it crashes when it is not able to acquire immediately.- Check for
//TODO: (enumerating)
and refactor.
- (3/3).
- Thinks about
Dictionary
andGroup
iterating.- iterating group in both
(key, value[])
(allowalterable
andreversed
) and(key, value)
. - iterating dictionary in
(key, value)
(allowalterable
andreversed
).
- iterating group in both
Dictionary::Values()
returns a special list object other thanList
, allowing set.Group::GetByIndex(vint)
returns a special list object other thanList
, allowing all list operations, when it becomes empty the key will be removed.- Disable
xs[i] = v
inList<T>
andObservableListBase<T>
.
- Thinks about
- Vlpp
PartialOrderingProcessor
- Example in comment: use foreach
- enumerate in group, get
(key, values)
instead of(key, value)
. InitWithFunc
: Join + Where + CopyFromInitWithSubClass
: CopyFrom, foreach, enumerate in groupVisitUnvisitedNode
,AssignUnassignedNode
,Sort
: enumerate, reverse enumerate
- VlppRegex
- enumerate, reverse enumerate, RemoveRange
- VlppReflection
- enumerate
- VlppParser2
- enumerate, revserse enumerate (edit)
- Workflow
- enumerate (edit), reverse enumerate
- GacUI
- reverse + CopyFrom, enumerate (edit), revserse enumerate (edit)
- Revisit
README.md
for all repos. - Coroutine for
LazyList
. - Rewrite
LazyList
operators using coroutine as much as possible. LazyList
operators test container types and perform different solution to improve performance.- Or add optional random access interface to IEnumerable.
- In place merge sort: reversly sort the right side and treat it as a heap, root is in the right most position, add all items from the left side, and pop them.
- Containers
- Allow
std::move
betweenArray
,List
andSortedList
. Queue<T>
.- Check the whole org and change some
for
or visiting/visited withQueue
.
- Check the whole org and change some
Deque
.FixedRingBuffer
.DequeRingBuffer
.Heap
.
- Allow
- Support all calling convention (be careful about x64 when everything is
__fastcall
) - Perfect forwarding for
Func
. Today passing aFunc
to anotherFunc
creates a layer like lambda expression.
- Mark
ObjectString::ObjectString
explicit forconst T*
- Heterougeneous tree string.
- Redesign
VCZH_MSVC
series macros.- More macros could be needed after porting to UWP, WASM and CLI.
- Object Model
- WeakPtr
- Make all classes from
Object
andInterface
shared_from_this, instead of onlyDescriptable
. - General object disposing notification in
Object
andInterface
. - Make sure interface types are virtually inherited.
- Check all repos.