@@ -50,6 +50,7 @@ in string stackNamespace
5050 StackExpandCapacity ( in builder , in sizeOfStr ) ;
5151 StackTrimExcess ( in builder ) ;
5252 StackPushIn ( in builder , in currentType , in stackNamespace , in sizeOfStr ) ;
53+ StackPushFuture ( in builder , in stackNamespace ) ;
5354 StackPushInPtr ( in builder , in currentType , in stackNamespace , in sizeOfStr ) ;
5455 StackTryPushIn ( in builder , in currentType , in stackNamespace , in sizeOfStr ) ;
5556 StackTryPushInPtr ( in builder , in currentType , in stackNamespace , in sizeOfStr ) ;
@@ -59,7 +60,8 @@ in string stackNamespace
5960 StackTop ( in builder , in currentType , in typeInfo , in sizeOfStr ) ;
6061 StackTopInPtr ( in builder , in currentType , in sizeOfStr ) ;
6162 StackTopRefValue ( in builder , in currentType , in sizeOfStr ) ;
62- StackTopPtr ( in builder , in typeInfo , in sizeOfStr ) ;
63+ StackTopPtr ( in builder , in sizeOfStr ) ;
64+ StackTopFuture ( in builder , in sizeOfStr ) ;
6365 StackDispose ( in builder , in currentType , in stackNamespace , in sizeOfStr ) ;
6466 StackIndexator ( in builder , in sizeOfStr ) ;
6567 StackCopy ( in builder , in sizeOfStr ) ;
@@ -420,6 +422,32 @@ public void Push(in {currentType.Name} item)
420422" ) ;
421423 }
422424
425+ private void StackPushFuture (
426+ in StringBuilder builder ,
427+ in string stackNamespace
428+ )
429+ {
430+ builder . Append ( $@ "
431+ public void PushFuture()
432+ {{
433+ if (Size == Capacity)
434+ {{
435+ throw new Exception(""Not enough memory to allocate stack element"");
436+ }}
437+
438+ Size++;
439+ " ) ;
440+ if ( stackNamespace == "Class" )
441+ {
442+ builder . Append ( $@ "
443+ _version++;
444+ " ) ;
445+ }
446+ builder . Append ( $@ "
447+ }}
448+ " ) ;
449+ }
450+
423451 private void StackPushInPtr (
424452 in StringBuilder builder ,
425453 in INamedTypeSymbol currentType ,
@@ -796,7 +824,6 @@ public void TopOut(out {currentType.Name} item)
796824
797825 private void StackTopPtr (
798826 in StringBuilder builder ,
799- in TypeInfo typeInfo ,
800827 in string sizeOfStr
801828 )
802829 {
@@ -813,6 +840,24 @@ in string sizeOfStr
813840" ) ;
814841 }
815842
843+ private void StackTopFuture (
844+ in StringBuilder builder ,
845+ in string sizeOfStr
846+ )
847+ {
848+ builder . Append ( $@ "
849+ public void* TopFuture()
850+ {{
851+ if (Capacity == 0 || Size == Capacity)
852+ {{
853+ throw new Exception(""Future element not available"");
854+ }}
855+
856+ return (byte*)_start + (Size * { sizeOfStr } );
857+ }}
858+ " ) ;
859+ }
860+
816861 private void StackDispose (
817862 in StringBuilder builder ,
818863 in INamedTypeSymbol currentType ,
0 commit comments