HLSF full functionally available. Working on Matrix.

Signed-off-by: Youmu Liu <105042599+Nitload-NSI@users.noreply.github.com>
This commit is contained in:
Youmu Liu
2025-08-25 22:13:45 +08:00
parent fe097fd94c
commit e5e4b1dd36
1479 changed files with 2083 additions and 619964 deletions
+34 -6
View File
@@ -39,7 +39,7 @@ using System.Text;
using System.Threading;
using System.Threading.Tasks;
namespace StgSharp.Modeling.Step
namespace StgSharp.Model.Step
{
public partial class StepReader
{
@@ -66,20 +66,19 @@ namespace StgSharp.Modeling.Step
GetInfo();
tokenReader = new StepDataTokenReader( DataTransmitter );
analyzer = new StepExpSyntaxAnalyzer();
ConcurrentQueue<StepEntityDefineSequence> initStatements = analyzer.StepEntityInitStatements;
Task secTask = Task.Run( ReadDataSection );
Task anTask = Task.Run( ReadStepToken );
ConcurrentQueue<ExpSyntaxNode> initStatements = analyzer.StepEntityInitStatements;
Model = new StepModel( _info );
while( initStatements.TryDequeue( out ExpSyntaxNode? statement ) || !anTask.IsCompleted )
while( initStatements.TryDequeue( out StepEntityDefineSequence? statement ) ||
!anTask.IsCompleted )
{
if( statement is null )
{
Thread.Sleep( 0 );
continue;
}
StepUninitializedEntity entity = StepUninitializedEntity.FromSyntax(
Model, statement );
Model.AddUncertainEntity( entity.Id, entity );
StepUninitializedEntity entity = Model.FromInitSequence( statement );
}
Task.WaitAll( secTask, anTask );
return Model;
@@ -93,6 +92,35 @@ namespace StgSharp.Modeling.Step
return await ReadToModelTask;
}
public StepModel ReadToModelSingleThread()
{
if( Model is not null ) {
return Model;
}
if( _version != 0 ) {
throw new InvalidOperationException(
"A ReadToModel method has been called and is running now, use Async version instead" );
}
Interlocked.Increment( ref _version );
GetInfo();
tokenReader = new StepDataTokenReader( DataTransmitter );
analyzer = new StepExpSyntaxAnalyzer();
ConcurrentQueue<StepEntityDefineSequence> initStatements = analyzer.StepEntityInitStatements;
ReadDataSection();
ReadStepToken();
Model = new StepModel( _info );
while( initStatements.TryDequeue( out StepEntityDefineSequence? statement ) )
{
if( statement is null )
{
Thread.Sleep( 0 );
continue;
}
StepUninitializedEntity entity = Model.FromInitSequence( statement );
}
return Model;
}
private void ReadStepToken()
{
while( !tokenReader.IsEmpty )