This commit is contained in:
Nitload
2025-08-25 09:50:30 +08:00
parent bd0e31e922
commit 1359ff4ecc
1630 changed files with 738486 additions and 2399 deletions
+6 -34
View File
@@ -39,7 +39,7 @@ using System.Text;
using System.Threading;
using System.Threading.Tasks;
namespace StgSharp.Model.Step
namespace StgSharp.Modeling.Step
{
public partial class StepReader
{
@@ -66,19 +66,20 @@ namespace StgSharp.Model.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 StepEntityDefineSequence? statement ) ||
!anTask.IsCompleted )
while( initStatements.TryDequeue( out ExpSyntaxNode? statement ) || !anTask.IsCompleted )
{
if( statement is null )
{
Thread.Sleep( 0 );
continue;
}
StepUninitializedEntity entity = Model.FromInitSequence( statement );
StepUninitializedEntity entity = StepUninitializedEntity.FromSyntax(
Model, statement );
Model.AddUncertainEntity( entity.Id, entity );
}
Task.WaitAll( secTask, anTask );
return Model;
@@ -92,35 +93,6 @@ namespace StgSharp.Model.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 )