diff --git a/.gitignore b/.gitignore index 5b7bca0fe..10633d62c 100644 --- a/.gitignore +++ b/.gitignore @@ -201,3 +201,4 @@ FakesAssemblies/ SharedFileVersionInfo.cs *.jfm *.idea +/Xbim.Common/Step21/Parser/*.lst diff --git a/Tests/CommonTests.cs b/Tests/CommonTests.cs index 720cdd13f..9771ebb6d 100644 --- a/Tests/CommonTests.cs +++ b/Tests/CommonTests.cs @@ -64,8 +64,8 @@ public void Can_skip_entities_while_parsing() using (var strm = File.OpenRead(@"TestFiles\4walls1floorSite.ifc")) { - var ifc2x3MetaData = ExpressMetaData.GetMetadata((new Xbim.Ifc2x3.EntityFactoryIfc2x3()).GetType().GetTypeInfo().Module); - var ifc4MetaData = ExpressMetaData.GetMetadata((new Xbim.Ifc4.EntityFactoryIfc4()).GetType().GetTypeInfo().Module); + var ifc2x3MetaData = ExpressMetaData.GetMetadata(new Xbim.Ifc2x3.EntityFactoryIfc2x3()); + var ifc4MetaData = ExpressMetaData.GetMetadata(new Xbim.Ifc4.EntityFactoryIfc4()); var allTypes = new HashSet( ifc2x3MetaData.Types().Where(et => typeof(IPersistEntity).IsAssignableFrom(et.Type) && !et.Type.IsAbstract ).Select(et => et.ExpressNameUpper) .Concat(ifc2x3MetaData.Types().Where(et => typeof(IPersistEntity).IsAssignableFrom(et.Type) && !et.Type.IsAbstract).Select(et => et.ExpressNameUpper))); diff --git a/Tests/ExpressMetadataTests.cs b/Tests/ExpressMetadataTests.cs new file mode 100644 index 000000000..c1030610b --- /dev/null +++ b/Tests/ExpressMetadataTests.cs @@ -0,0 +1,54 @@ +using FluentAssertions; +using System; +using System.Reflection; +using Xbim.Common; +using Xbim.Common.Metadata; +using Xunit; + +namespace Xbim.Essentials.Tests +{ + public class ExpressMetadataTests + { + [InlineData(typeof(Xbim.Common.PersistEntity), 0)] // Nothing defined in this schema + [InlineData(typeof(Xbim.Ifc2x3.EntityFactoryIfc2x3), 771)] + [InlineData(typeof(Xbim.Ifc4.EntityFactoryIfc4), 933)] + [InlineData(typeof(Xbim.Ifc4.EntityFactoryIfc4x1), 933)] + [InlineData(typeof(Xbim.Ifc4x3.EntityFactoryIfc4x3Add2), 1008)] + [Theory] + [Obsolete] + public void HasExpectedSchemaTypesByModule(Type moduleType, int expectedTypes) + { + + var m = moduleType.GetTypeInfo().Module; + var metaData = ExpressMetaData.GetMetadata(moduleType.Module); + metaData.Types().Should().HaveCount(expectedTypes); + } + + [InlineData(typeof(Xbim.Ifc2x3.EntityFactoryIfc2x3), 771)] + [InlineData(typeof(Xbim.Ifc4.EntityFactoryIfc4), 933)] + [InlineData(typeof(Xbim.Ifc4.EntityFactoryIfc4x1), 933)] + [InlineData(typeof(Xbim.Ifc4x3.EntityFactoryIfc4x3Add2), 1008)] + [Theory] + public void HasExpectedSchemaTypesByFactory(Type moduleType, int expectedTypes) + { + + var factory = Activator.CreateInstance(moduleType) as IEntityFactory; + factory.Should().NotBeNull(); + var metaData = ExpressMetaData.GetMetadata(factory); + metaData.Types().Should().HaveCount(expectedTypes); + } + + [Fact] + public void InvalidExpressTypeHandled() + { + var expressType = new ExpressType(typeof(Ifc2x3.ActorResource.IfcActorRole)); + expressType.Should().NotBeNull(); + + + Action act = () => new ExpressType(typeof(IPersistEntity)); + + act.Should().Throw().WithMessage("Express Type is not defined for IPersistEntity"); + + } + } +} diff --git a/Tests/Ifc4ExtensionsTests.cs b/Tests/Ifc4ExtensionsTests.cs new file mode 100644 index 000000000..665e34048 --- /dev/null +++ b/Tests/Ifc4ExtensionsTests.cs @@ -0,0 +1,318 @@ +using FluentAssertions; +using System; +using System.Linq; +using Xbim.Common; +using Xbim.Ifc; +using Xbim.IO.Memory; +using Xunit; +using XbimCommonSchema = Xbim.Ifc4; + + +namespace Xbim.Essentials.Tests +{ + public class Ifc4ExtensionsTests : IDisposable + { + protected IModel Model { get; set; } + protected ITransaction Txn { get; set; } + + public Ifc4ExtensionsTests() + { + Model = new MemoryModel(new Ifc4.EntityFactoryIfc4()); + Txn = Model.BeginTransaction("Test"); + } + + [Fact] + public void CanAddDefiningType() + { + var pile = Model.Instances.New(); + var type = Model.Instances.New(); + pile.AddDefiningType(type); + + var relatingType = pile.IsTypedBy.First().RelatingType; + relatingType.Should().NotBeNull(); + relatingType.Should().Be(type); + } + + [Fact] + public void CanAddPropertySet() + { + var pile = Model.Instances.New(); + var pset = Model.Instances.New(p=> + { + p.Name = "Pset_Test"; + }); + pile.AddPropertySet(pset); + + var pset2 = pile.PropertySets.First(); + pset2.Should().NotBeNull(); + pset2.Should().Be(pset); + } + + [Fact] + public void CanGetPropertySet() + { + var pile = Model.Instances.New(); + var pset = Model.Instances.New(p => p.Name = "Pset_Test"); + pile.AddPropertySet(pset); + + var pset2 = pile.GetPropertySet("Pset_Test"); + pset2.Should().NotBeNull(); + pset2.Should().Be(pset); + } + + [Fact] + public void GetPropertySetIsCaseSensitive() + { + var pile = Model.Instances.New(); + var pset = Model.Instances.New(p => p.Name = "Pset_Test"); + pile.AddPropertySet(pset); + + var pset2 = pile.GetPropertySet("pset_test"); + pset2.Should().BeNull(); + } + + [Fact] + public void GetPropertySetCanBeCaseInsensitive() + { + var pile = Model.Instances.New(); + var pset = Model.Instances.New(p => p.Name = "Pset_Test"); + pile.AddPropertySet(pset); + + var pset2 = pile.GetPropertySet("pset_test", false); + + pset2.Should().NotBeNull(); + pset2.Should().Be(pset); + } + + [Fact] + public void CanGetPropertySingle() + { + var pile = Model.Instances.New(); + var prop = Model.Instances.New(p=> + { + p.Name = "SomeValue"; + p.NominalValue = new Ifc4.MeasureResource.IfcLabel("Abc"); + }); + var pset = Model.Instances.New(p => + { + p.Name = "Pset_Test"; + p.HasProperties.Add(prop); + }); + pile.AddPropertySet(pset); + + var value = pile.GetPropertySingleValue("Pset_Test", "SomeValue"); + value.Should().NotBeNull(); + value.NominalValue.Value.Should().Be("Abc"); + } + + [Fact] + public void CanGetPropertySingleValue() + { + var pile = Model.Instances.New(); + var prop = Model.Instances.New(p => + { + p.Name = "SomeNumber"; + p.NominalValue = new Ifc4.MeasureResource.IfcReal(100.5d); + }); + var pset = Model.Instances.New(p => + { + p.Name = "Pset_Test"; + p.HasProperties.Add(prop); + }); + pile.AddPropertySet(pset); + var x= pile.GetPropertySingleValue("", ""); + var value = pile.GetPropertySingleValue("Pset_Test", "SomeNumber"); + value.Should().NotBeNull(); + value.Value.Should().Be(100.5); + } + + [Fact] + public void CanSetPropertySingleValue() + { + var pile = Model.Instances.New(); + + pile.SetPropertySingleValue("Pset_Test", "SomeProp", typeof(XbimCommonSchema.MeasureResource.IfcReal)); + + var value = pile.GetPropertySingleValue("Pset_Test", "SomeProp"); + value.Should().NotBeNull(); + value.Value.Should().Be(0); + } + + + [Fact] + public void CanSetPropertySingleValueGeneric() + { + var pile = Model.Instances.New(); + + pile.SetPropertySingleValue("Pset_Test", "SomeProp"); + + var value = pile.GetPropertySingleValue("Pset_Test", "SomeProp"); + value.Should().NotBeNull(); + value.Value.Should().Be(0); + } + + [Fact] + public void CanSetPropertySingleValueGenericEdgeCase() + { + var pile = Model.Instances.New(); + + pile.SetPropertySingleValue("Pset_Test", "SomeProp"); + + var value = pile.GetPropertySingleValue("Pset_Test", "SomeProp"); + value.Should().NotBeNull(); + value.Value.Should().Be(1.0); + } + + [Fact] + public void CanAddElementAndReadQuantity() + { + var pile = Model.Instances.New(); + var quant = Model.Instances.New(qa => + { + qa.Name = "GrossArea"; + qa.AreaValue = 123.4d; + }); + pile.AddQuantity("BaseQuants", quant, "Some measure"); + + var quantities = pile.GetElementQuantity("BaseQuants"); + quantities.Should().NotBeNull(); + var val = quantities.Quantities.First(q => q.Name == "GrossArea"); + + val.Should().BeOfType(); + (val as Ifc4.QuantityResource.IfcQuantityArea).AreaValue.Value.Should().Be(123.4d); + + } + + [Fact] + public void CanAddElementAndReadPhysicalQuantity() + { + var pile = Model.Instances.New(); + var quant = Model.Instances.New(qa => + { + qa.Name = "GrossArea"; + qa.AreaValue = 123.4d; + }); + pile.AddQuantity("BaseQuants", quant, "Some measure"); + + var val = pile.GetQuantity("GrossArea"); + val.Should().NotBeNull(); + val.AreaValue.Value.Should().Be(123.4d); + } + + [Fact] + public void CanAddElementAndReadPhysicalQuantityWithPset() + { + var pile = Model.Instances.New(); + var quant = Model.Instances.New(qa => + { + qa.Name = "GrossArea"; + qa.AreaValue = 123.4d; + }); + pile.AddQuantity("BaseQuants", quant, "Some measure"); + + var val = pile.GetQuantity("BaseQuants", "GrossArea"); + val.Should().NotBeNull(); + val.AreaValue.Value.Should().Be(123.4d); + } + + [Fact] + public void CanAddElementAndReadPhysicalSimpleQuantityWithPset() + { + var pile = Model.Instances.New(); + var quant = Model.Instances.New(qa => + { + qa.Name = "GrossArea"; + qa.AreaValue = 123.4d; + }); + pile.AddQuantity("BaseQuants", quant, "Some measure"); + + var val = pile.GetElementPhysicalSimpleQuantity("BaseQuants", "GrossArea"); + val.Should().NotBeNull(); + val.Should().BeOfType(); + } + + [InlineData("GFA", XbimQuantityTypeEnum.Area, 15.5d, Ifc4.Interfaces.IfcSIUnitName.SQUARE_METRE)] + [InlineData("Width", XbimQuantityTypeEnum.Length, 1200.4d, Ifc4.Interfaces.IfcSIUnitName.METRE)] + [InlineData("Volume", XbimQuantityTypeEnum.Volume, 12234d, Ifc4.Interfaces.IfcSIUnitName.CUBIC_METRE)] + [InlineData("Count", XbimQuantityTypeEnum.Count, 14d, null)] + [InlineData("Weight", XbimQuantityTypeEnum.Weight, 999, Ifc4.Interfaces.IfcSIUnitName.GRAM, Ifc4.Interfaces.IfcSIPrefix.KILO)] + [InlineData("Duration", XbimQuantityTypeEnum.Time, 10d, Ifc4.Interfaces.IfcSIUnitName.SECOND)] + [Theory] + public void CanSetElementPhysicalSimpleQuantity(string quantName, XbimQuantityTypeEnum measure, double value, + Ifc4.Interfaces.IfcSIUnitName? unitType, Ifc4.Interfaces.IfcSIPrefix? unitPrefix = null) + { + var space = Model.Instances.New(); + Ifc4.MeasureResource.IfcNamedUnit unit = null; + if(unitType != null) + { + unit = Model.Instances.New(u => + { + u.Name = unitType.Value; + u.Prefix = unitPrefix; + }); + } + + space.SetElementPhysicalSimpleQuantity("BaseQuants", quantName, value, measure, unit); + + Ifc4.MeasureResource.IfcMeasureValue val = measure switch + { + XbimQuantityTypeEnum.Area => space.GetQuantity("BaseQuants", quantName).AreaValue, + XbimQuantityTypeEnum.Length => space.GetQuantity("BaseQuants", quantName).LengthValue, + XbimQuantityTypeEnum.Volume => space.GetQuantity("BaseQuants", quantName).VolumeValue, + XbimQuantityTypeEnum.Count => space.GetQuantity("BaseQuants", quantName).CountValue, + XbimQuantityTypeEnum.Weight => space.GetQuantity("BaseQuants", quantName).WeightValue, + XbimQuantityTypeEnum.Time => space.GetQuantity("BaseQuants", quantName).TimeValue, + _ => throw new NotImplementedException(), + }; + + val.Value.Should().Be(value); + //area.Unit.FullName.Should().Be("SQUAREMETRE"); + + } + + [InlineData("USD", "$", "US Dollar")] + [InlineData("GBP", "£", "British Pound", "Pound Sterling")] + [InlineData("EUR", "€", "Euro", "euro")] // 'euro' since French culture picked up by default + [InlineData("CAD", "$", "Canadian Dollar")] + [InlineData("AUD", "$", "Australian Dollar")] + [InlineData("PLN", "zł", "Polish Zloty", "złoty polski")] + [Theory] + public void CanReadMonetaryUnit(string tla, string expectedSymbol, string expectedName, string nativeName = null) + { + nativeName = nativeName ?? expectedName; + var currency = Model.Instances.New(u => + { + u.Currency = tla; + }); + + currency.Symbol().Should().Be(expectedSymbol); + currency.FullEnglishName().Should().Be(expectedName); + currency.FullNativeName().Should().Be(nativeName); + } + + #region Dispose + private bool disposedValue; + + protected virtual void Dispose(bool disposing) + { + if (!disposedValue) + { + if (disposing) + { + Txn.Dispose(); + Model?.Dispose(); + } + + disposedValue = true; + } + } + + public void Dispose() + { + // Do not change this code. Put cleanup code in 'Dispose(bool disposing)' method + Dispose(disposing: true); + GC.SuppressFinalize(this); + } + #endregion + } +} diff --git a/Tests/Ifc4x3ExtensionsTests.cs b/Tests/Ifc4x3ExtensionsTests.cs new file mode 100644 index 000000000..e5a29fa2d --- /dev/null +++ b/Tests/Ifc4x3ExtensionsTests.cs @@ -0,0 +1,410 @@ +using FluentAssertions; +using System; +using System.Linq; +using Xbim.Common; +using Xbim.Ifc; +using Xbim.IO.Memory; +using Xunit; +using XbimCommonSchema = Xbim.Ifc4; + + +namespace Xbim.Essentials.Tests +{ + public class Ifc4x3ExtensionsTests : IDisposable + { + protected IModel Model { get; set; } + protected ITransaction Txn { get; set; } + + public Ifc4x3ExtensionsTests() + { + Model = new MemoryModel(new Ifc4x3.EntityFactoryIfc4x3Add2()); + Txn = Model.BeginTransaction("Test"); + } + + [Fact] + public void CanAddDefiningType() + { + var pile = Model.Instances.New(); + var type = Model.Instances.New(); + pile.AddDefiningType(type); + + var relatingType = pile.IsTypedBy.First().RelatingType; + relatingType.Should().NotBeNull(); + relatingType.Should().Be(type); + } + + [Fact] + public void CanAddPropertySet() + { + var pile = Model.Instances.New(); + var pset = Model.Instances.New(p=> + { + p.Name = "Pset_Test"; + }); + pile.AddPropertySet(pset); + + var pset2 = pile.PropertySets.First(); + pset2.Should().NotBeNull(); + pset2.Should().Be(pset); + } + + [Fact] + public void CanGetPropertySet() + { + var pile = Model.Instances.New(); + var pset = Model.Instances.New(p => p.Name = "Pset_Test"); + pile.AddPropertySet(pset); + + var pset2 = pile.GetPropertySet("Pset_Test"); + pset2.Should().NotBeNull(); + pset2.Should().Be(pset); + } + + [Fact] + public void GetPropertySetIsCaseSensitive() + { + var pile = Model.Instances.New(); + var pset = Model.Instances.New(p => p.Name = "Pset_Test"); + pile.AddPropertySet(pset); + + var pset2 = pile.GetPropertySet("pset_test"); + pset2.Should().BeNull(); + } + + [Fact] + public void GetPropertySetCanBeCaseInsensitive() + { + var pile = Model.Instances.New(); + var pset = Model.Instances.New(p => p.Name = "Pset_Test"); + pile.AddPropertySet(pset); + + var pset2 = pile.GetPropertySet("pset_test", false); + + pset2.Should().NotBeNull(); + pset2.Should().Be(pset); + } + + [Fact] + public void CanGetPropertySingle() + { + var pile = Model.Instances.New(); + var prop = Model.Instances.New(p=> + { + p.Name = "SomeValue"; + p.NominalValue = new Ifc4x3.MeasureResource.IfcLabel("Abc"); + }); + var pset = Model.Instances.New(p => + { + p.Name = "Pset_Test"; + p.HasProperties.Add(prop); + }); + pile.AddPropertySet(pset); + + var value = pile.GetPropertySingleValue("Pset_Test", "SomeValue"); + value.Should().NotBeNull(); + value.NominalValue.Value.Should().Be("Abc"); + } + + [Fact] + public void CanGetPropertySingleValue() + { + var pile = Model.Instances.New(); + var prop = Model.Instances.New(p => + { + p.Name = "SomeNumber"; + p.NominalValue = new Ifc4x3.MeasureResource.IfcReal(100.5d); + }); + var pset = Model.Instances.New(p => + { + p.Name = "Pset_Test"; + p.HasProperties.Add(prop); + }); + pile.AddPropertySet(pset); + + var value = pile.GetPropertySingleValue("Pset_Test", "SomeNumber"); + value.Should().NotBeNull(); + value.Value.Should().Be(100.5); + } + + [Fact] + public void CanSetPropertySingleValue() + { + var pile = Model.Instances.New(); + + pile.SetPropertySingleValue("Pset_Test", "SomeProp", typeof(XbimCommonSchema.MeasureResource.IfcReal)); + + var value = pile.GetPropertySingleValue("Pset_Test", "SomeProp"); + value.Should().NotBeNull(); + value.Value.Should().Be(0); + } + + + [Fact] + public void CanSetPropertySingleValueGeneric() + { + var pile = Model.Instances.New(); + + pile.SetPropertySingleValue("Pset_Test", "SomeProp"); + + var value = pile.GetPropertySingleValue("Pset_Test", "SomeProp"); + value.Should().NotBeNull(); + value.Value.Should().Be(0); + } + + [Fact] + public void CanSetPropertySingleValueGenericEdgeCase() + { + var pile = Model.Instances.New(); + + pile.SetPropertySingleValue("Pset_Test", "SomeProp"); + + var value = pile.GetPropertySingleValue("Pset_Test", "SomeProp"); + value.Should().NotBeNull(); + value.Value.Should().Be(1.0); + } + + [Fact] + public void CanAddElementAndReadQuantity() + { + var pile = Model.Instances.New(); + var quant = Model.Instances.New(qa => + { + qa.Name = "GrossArea"; + qa.AreaValue = 123.4d; + }); + pile.AddQuantity("BaseQuants", quant, "Some measure"); + + var quantities = pile.GetElementQuantity("BaseQuants"); + quantities.Should().NotBeNull(); + var val = quantities.Quantities.First(q => q.Name == "GrossArea"); + + val.Should().BeOfType(); + (val as Ifc4x3.QuantityResource.IfcQuantityArea).AreaValue.Value.Should().Be(123.4d); + + } + + [Fact] + public void CanAddElementAndReadPhysicalQuantity() + { + var pile = Model.Instances.New(); + var quant = Model.Instances.New(qa => + { + qa.Name = "GrossArea"; + qa.AreaValue = 123.4d; + }); + pile.AddQuantity("BaseQuants", quant, "Some measure"); + + var val = pile.GetQuantity("GrossArea"); + val.Should().NotBeNull(); + val.AreaValue.Value.Should().Be(123.4d); + } + + [Fact] + public void CanAddElementAndReadPhysicalQuantityWithPset() + { + var pile = Model.Instances.New(); + var quant = Model.Instances.New(qa => + { + qa.Name = "GrossArea"; + qa.AreaValue = 123.4d; + }); + pile.AddQuantity("BaseQuants", quant, "Some measure"); + + var val = pile.GetQuantity("BaseQuants", "GrossArea"); + val.Should().NotBeNull(); + val.AreaValue.Value.Should().Be(123.4d); + } + + [Fact] + public void CanAddElementAndReadPhysicalSimpleQuantityWithPset() + { + var pile = Model.Instances.New(); + var quant = Model.Instances.New(qa => + { + qa.Name = "GrossArea"; + qa.AreaValue = 123.4d; + }); + pile.AddQuantity("BaseQuants", quant, "Some measure"); + + var val = pile.GetElementPhysicalSimpleQuantity("BaseQuants", "GrossArea"); + val.Should().NotBeNull(); + val.Should().BeOfType(); + } + + [InlineData("GFA", XbimQuantityTypeEnum.Area, 15.5d, Ifc4x3.MeasureResource.IfcSIUnitName.SQUARE_METRE)] + [InlineData("Width", XbimQuantityTypeEnum.Length, 1200.4d, Ifc4x3.MeasureResource.IfcSIUnitName.METRE)] + [InlineData("Volume", XbimQuantityTypeEnum.Volume, 12234d, Ifc4x3.MeasureResource.IfcSIUnitName.CUBIC_METRE)] + [InlineData("Count", XbimQuantityTypeEnum.Count, 14d, null)] + [InlineData("Weight", XbimQuantityTypeEnum.Weight, 999, Ifc4x3.MeasureResource.IfcSIUnitName.GRAM, Ifc4x3.MeasureResource.IfcSIPrefix.KILO)] + [InlineData("Duration", XbimQuantityTypeEnum.Time, 10d, Ifc4x3.MeasureResource.IfcSIUnitName.SECOND)] + [Theory] + public void CanSetElementPhysicalSimpleQuantity(string quantName, XbimQuantityTypeEnum measure, double value, + Ifc4x3.MeasureResource.IfcSIUnitName? unitType, Ifc4x3.MeasureResource.IfcSIPrefix? unitPrefix = null) + { + var space = Model.Instances.New(); + Ifc4x3.MeasureResource.IfcNamedUnit unit = null; + if(unitType != null) + { + unit = Model.Instances.New(u => + { + u.Name = unitType.Value; + u.Prefix = unitPrefix; + }); + } + + space.SetElementPhysicalSimpleQuantity("BaseQuants", quantName, value, measure, unit); + + Ifc4x3.MeasureResource.IfcMeasureValue val = measure switch + { + XbimQuantityTypeEnum.Area => space.GetQuantity("BaseQuants", quantName).AreaValue, + XbimQuantityTypeEnum.Length => space.GetQuantity("BaseQuants", quantName).LengthValue, + XbimQuantityTypeEnum.Volume => space.GetQuantity("BaseQuants", quantName).VolumeValue, + XbimQuantityTypeEnum.Count => space.GetQuantity("BaseQuants", quantName).CountValue, + XbimQuantityTypeEnum.Weight => space.GetQuantity("BaseQuants", quantName).WeightValue, + XbimQuantityTypeEnum.Time => space.GetQuantity("BaseQuants", quantName).TimeValue, + _ => throw new NotImplementedException(), + }; + + val.Value.Should().Be(value); + //area.Unit.FullName.Should().Be("SQUAREMETRE"); + + } + + [InlineData("USD", "$", "US Dollar")] + [InlineData("GBP", "£", "British Pound", "Pound Sterling")] + [InlineData("EUR", "€", "Euro", "euro")] // 'euro' since French culture picked up by default + [InlineData("CAD", "$", "Canadian Dollar")] + [InlineData("AUD", "$", "Australian Dollar")] + [InlineData("PLN", "zł", "Polish Zloty", "złoty polski")] + [Theory] + public void CanReadMonetaryUnit(string tla, string expectedSymbol, string expectedName, string nativeName = null) + { + nativeName = nativeName ?? expectedName; + var currency = Model.Instances.New(u => + { + u.Currency = tla; + }); + + currency.Symbol().Should().Be(expectedSymbol); + currency.FullEnglishName().Should().Be(expectedName); + currency.FullNativeName().Should().Be(nativeName); + } + + [Fact] + public void CanGetUnitForProperty() + { + XbimCommonSchema.Interfaces.IIfcProject project = Model.Instances.New(); + project.Initialize(ProjectUnits.SIUnitsUK); + + var prop = Model.Instances.New(p => + { + p.Name = "Volume"; + p.NominalValue = new Ifc4x3.MeasureResource.IfcVolumeMeasure(123d); + }); + + XbimCommonSchema.Interfaces.IIfcNamedUnit unit = project.UnitsInContext.GetUnitFor(prop); + + unit.Should().NotBeNull(); + unit.FullName.Should().Be("CUBICMETRE"); + } + + [Fact] + public void CanGetUnitForPropertyWhenOverridden() + { + XbimCommonSchema.Interfaces.IIfcProject project = Model.Instances.New(); + project.Initialize(ProjectUnits.SIUnitsUK); + var modelunit = project.UnitsInContext.Units.OfType().FirstOrDefault(u => u.UnitType == Ifc4x3.MeasureResource.IfcUnitEnum.LENGTHUNIT); + + var prop = Model.Instances.New(p => + { + p.Name = "Length"; + p.NominalValue = new Ifc4x3.MeasureResource.IfcReal(123d); + p.Unit = modelunit; + }); + + XbimCommonSchema.Interfaces.IIfcNamedUnit unit = project.UnitsInContext.GetUnitFor(prop); + + unit.Should().NotBeNull(); + unit.FullName.Should().Be("MILLIMETRE"); + } + + [Fact] + public void CanGetUnitForQuantity() + { + XbimCommonSchema.Interfaces.IIfcProject project = Model.Instances.New(); + project.Initialize(ProjectUnits.SIUnitsUK); + + var quant = Model.Instances.New(qa => + { + qa.Name = "GrossArea"; + qa.TimeValue = 1.5; + }); + + XbimCommonSchema.Interfaces.IIfcNamedUnit unit = project.UnitsInContext.GetUnitFor(quant); + unit.Should().NotBeNull(); + unit.FullName.Should().Be("SECOND"); + } + + [InlineData(XbimCommonSchema.Interfaces.IfcUnitEnum.LENGTHUNIT, "MILLIMETRE")] + [InlineData(XbimCommonSchema.Interfaces.IfcUnitEnum.AREAUNIT, "SQUAREMETRE")] + [InlineData(XbimCommonSchema.Interfaces.IfcUnitEnum.VOLUMEUNIT, "CUBICMETRE")] + [InlineData(XbimCommonSchema.Interfaces.IfcUnitEnum.MASSUNIT, "GRAM")] // Inconsistent - is kg in Ifc2x3/4 + [InlineData(XbimCommonSchema.Interfaces.IfcUnitEnum.THERMODYNAMICTEMPERATUREUNIT, "DEGREECELSIUS")] + [Theory] + public void CanGetUnits(XbimCommonSchema.Interfaces.IfcUnitEnum unitType, string expectedUnitName) + { + XbimCommonSchema.Interfaces.IIfcProject project = Model.Instances.New(); + project.Initialize(ProjectUnits.SIUnitsUK); + + XbimCommonSchema.Interfaces.IIfcNamedUnit result = project.UnitsInContext.GetUnitFor(unitType); + result.Should().NotBeNull(); + result.UnitType.Should().Be(unitType); + result.Name().Should().Be(expectedUnitName); + } + + [Fact] + public void CanChangeUnits() + { + XbimCommonSchema.Interfaces.IIfcProject project = Model.Instances.New(); + project.Initialize(ProjectUnits.SIUnitsUK); + + project.UnitsInContext.SetOrChangeConversionUnit(XbimCommonSchema.Interfaces.IfcUnitEnum.LENGTHUNIT, ConversionBasedUnit.Inch); + + var unit = project.UnitsInContext.GetUnitFor(XbimCommonSchema.Interfaces.IfcUnitEnum.LENGTHUNIT); + + unit.Should().NotBeNull(); + unit.Name().Should().Be("inch"); + unit.Should().BeOfType(); + + var cbt = (Ifc4x3.MeasureResource.IfcConversionBasedUnit)unit; + cbt.ConversionFactor.ValueComponent.Value.Should().Be(25.4d); + cbt.ConversionFactor.UnitComponent.FullName.Should().Be("MILLIMETRE"); + + } + + #region Dispose + private bool disposedValue; + + protected virtual void Dispose(bool disposing) + { + if (!disposedValue) + { + if (disposing) + { + Txn.Dispose(); + Model?.Dispose(); + } + + disposedValue = true; + } + } + + public void Dispose() + { + // Do not change this code. Put cleanup code in 'Dispose(bool disposing)' method + Dispose(disposing: true); + GC.SuppressFinalize(this); + } + #endregion + } +} diff --git a/Tests/Ifc4x3Tests.cs b/Tests/Ifc4x3Tests.cs index 1c310e5f8..37bd8bb4d 100644 --- a/Tests/Ifc4x3Tests.cs +++ b/Tests/Ifc4x3Tests.cs @@ -12,6 +12,7 @@ using Xbim.Ifc4x3.GeometryResource; using Xbim.Ifc4x3.MeasureResource; using Xbim.Ifc4x3.ProductExtension; +using Xbim.Ifc4x3.RepresentationResource; using Xbim.IO.Memory; namespace Xbim.Essentials.Tests @@ -188,5 +189,65 @@ public void IfcLengthMeasureSubClassesCanUsed() } + [TestMethod] + public void IfcCoordinateReferenceSystemVerticalDatumCanAccessViaIfc4() + { + using var model = new MemoryModel(new EntityFactoryIfc4x3Add2()); + using var txn = model.BeginTransaction("Creation"); + + var projectedCoords = model.Instances.New(o => o.VerticalDatum="EPSG:5555"); + + IIfcCoordinateReferenceSystem ifc4Coords = projectedCoords; + + ifc4Coords.VerticalDatum.Value.Value.Should().Be("EPSG:5555"); + ifc4Coords.VerticalDatum = "Test"; + projectedCoords.VerticalDatum.Value.Value.Should().Be("Test"); + + } + + [TestMethod] + public void IfcCoordinateReferenceSystemVerticalDatumCanReadAndSetNull() + { + using var model = new MemoryModel(new EntityFactoryIfc4x3Add2()); + using var txn = model.BeginTransaction("Creation"); + + + var projectedCoords = model.Instances.New(o => o.VerticalDatum = null); + IIfcCoordinateReferenceSystem ifc4Coords = projectedCoords; + ifc4Coords.VerticalDatum.HasValue.Should().BeFalse(); + + ifc4Coords.VerticalDatum = null; + projectedCoords.VerticalDatum.HasValue.Should().BeFalse(); + } + + + [TestMethod] + public void Accessing4x3EnumsViaIfc4GivesUserDefined() + { + using var model = new MemoryModel(new EntityFactoryIfc4x3Add2()); + using var txn = model.BeginTransaction("Creation"); + + + var appliance = model.Instances.New(o => o.PredefinedType = Ifc4x3.ElectricalDomain.IfcAudioVisualApplianceTypeEnum.COMMUNICATIONTERMINAL); + IIfcAudioVisualAppliance ifc4Appliance = appliance; + + ifc4Appliance.PredefinedType.Should().Be(IfcAudioVisualApplianceTypeEnum.USERDEFINED); + + ifc4Appliance.GetPredefinedTypeValue().Should().Be("COMMUNICATIONTERMINAL"); + + } + + [TestMethod] + public void Accessing4x3EnumsViaIfc4GivesUserDefinedEdgeCase() + { + using var model = new MemoryModel(new EntityFactoryIfc4x3Add2()); + using var txn = model.BeginTransaction("Creation"); + + + var appliance = model.Instances.New(); + // Enum does not have USERDEFINED + appliance.GetUserDefined().Should().Be(IO.XbimStoreType.EsentDatabase, "defaults to first enum"); + } + } } diff --git a/Tests/IfcStoreTests.cs b/Tests/IfcStoreTests.cs index 691bddef7..88452a2c3 100644 --- a/Tests/IfcStoreTests.cs +++ b/Tests/IfcStoreTests.cs @@ -1,8 +1,13 @@ -using Microsoft.VisualStudio.TestTools.UnitTesting; +using FluentAssertions; +using Microsoft.VisualStudio.TestTools.UnitTesting; +using System; +using System.Collections.Generic; using System.Linq; -using Xbim.Ifc4.Interfaces; +using Xbim.Ifc; using Xbim.Ifc2x3.SharedBldgElements; +using Xbim.Ifc4.Interfaces; using Xbim.IO.Esent; +using Xbim.IO.Step21; namespace Xbim.Essentials.Tests { @@ -23,16 +28,114 @@ public void UseEsentModelProvider_DifferentCounts_ShouldBeConsistent() var countInsideTransactionBeforeNewWall = model.Instances.CountOf(); var newWall = model.Instances.New(); countInsideTransactionAfterNewWall = model.Instances.CountOf(); - - Assert.AreEqual(countInsideTransactionBeforeNewWall + 1, countInsideTransactionAfterNewWall, "Count after creation should be count before creation + 1."); + countInsideTransactionAfterNewWall.Should().Be(countInsideTransactionBeforeNewWall + 1, "Adding wall adds one"); t.Commit(); } var countOfAfterCommiting = model.Instances.CountOf(); var ofTypeCountAfterCommiting = model.Instances.OfType().LongCount(); - Assert.AreEqual(countOfAfterCommiting, countInsideTransactionAfterNewWall, "Count after creation should be count after commiting using CountOf."); - Assert.AreEqual(countOfAfterCommiting, ofTypeCountAfterCommiting, "Count after creation should be count after commiting counting the result of OfType."); + countOfAfterCommiting.Should().Be(countInsideTransactionAfterNewWall); + countOfAfterCommiting.Should().Be(ofTypeCountAfterCommiting); + } + + + [TestMethod] + public void AddingUpdatingElementsAddsApplicationOnce() + { + var updatedFile = "4walls1floorSiteDoorAmended.ifc"; + long count; + List origLabels; + XbimEditorCredentials editor = CreateEditor(); + using (var ifcStore = IfcStore.Open("TestFiles\\4walls1floorSite.ifc", editor)) + { + count = ifcStore.Instances.Count; + origLabels = ifcStore.Instances.Select(x => x.EntityLabel).ToList(); + AddProduct("Door1", ifcStore); + DumpNewItems("first run", ifcStore, origLabels); + + var diffCount = ifcStore.Instances.Count - count; + diffCount.Should().Be(8); // Door + Application, OwnerHistory, Org * 2, Person, PersonOrg + + ifcStore.SaveAs(updatedFile); + ifcStore.Close(); + } + using (var ifcStore = IfcStore.Open(updatedFile, editor)) + { + count = ifcStore.Instances.Count; + origLabels = ifcStore.Instances.Select(x => x.EntityLabel).ToList(); + AddProduct("Door2", ifcStore); + var toEdit = ifcStore.Instances.OfType().First(); + var originator = toEdit.OwnerHistory; + EditProduct(toEdit, "Wall 3", ifcStore); + DumpNewItems("added second run", ifcStore, origLabels); + + var diffCount = ifcStore.Instances.Count - count; + diffCount.Should().Be(3, "Only the door and 2 x OwnerHistory is created. Application, Person etc re-used"); + + DumpItems("affected items", ifcStore, new[] { toEdit.EntityLabel, originator.EntityLabel }); + } + + } + + + + private XbimEditorCredentials CreateEditor() + { + return new XbimEditorCredentials + { + ApplicationFullName = "Xbim Essentials Unit tests", + ApplicationIdentifier = "xbim-tests-1.0", + ApplicationDevelopersName = "xbim Team", + ApplicationVersion = "6.0.0", + + EditorsIdentifier = "end.user@acme.com", + EditorsFamilyName = "End", + EditorsGivenName = "User", + EditorsOrganisationIdentifier = "org.acme", + EditorsOrganisationName = "Acme Inc" + }; + } + + private void DumpNewItems(string message, IfcStore ifcStore, IEnumerable origLabels) + { + var newLabels = ifcStore.Instances.Select(x => x.EntityLabel).ToList(); + var newLabelList = newLabels.Except(origLabels); + Console.WriteLine(message); + foreach (var item in newLabelList) + { + Console.WriteLine(ifcStore.Instances[item].ToString()); + } + } + + private void DumpItems(string message, IfcStore ifcStore, IEnumerable items) + { + Console.WriteLine(message); + foreach (var item in items) + { + Console.WriteLine(ifcStore.Instances[item].ToString()); + } + } + + private static void AddProduct(string productName, IfcStore ifcStore) + { + using (var txn = ifcStore.BeginTransaction("Adding")) + { + var door = ifcStore.Instances.New(); + door.Name = productName; + door.GlobalId = Guid.NewGuid().ToPart21(); + txn.Commit(); + } + } + + private void EditProduct(T element, string newName, IfcStore ifcStore) where T: IIfcRoot + { + using (var txn = ifcStore.BeginTransaction("Adding")) + { + element.Name = newName + " Updated"; + element.Description = "Edited"; + txn.Commit(); + } } } } diff --git a/Tests/OptionalIfcLogicalTest.cs b/Tests/OptionalIfcLogicalTest.cs new file mode 100644 index 000000000..14e4acacd --- /dev/null +++ b/Tests/OptionalIfcLogicalTest.cs @@ -0,0 +1,106 @@ +using FluentAssertions; +using Microsoft.VisualStudio.TestTools.UnitTesting; +using Xbim.Ifc4.Interfaces; +using Xbim.IO.Memory; + +namespace Xbim.Essentials.Tests +{ + /// + /// For failing on IfcMaterialLayer.IsVentilated : OPTIONAL IfcLogical + /// + [TestClass] + public class OptionalIfcLogicalTest + { + private const string ifcFile = "TestFiles/IfcMaterialLayerTestFile.ifc"; + + [TestMethod] + public void UnknownOptionalLogicalShouldNotBeNull() + { + + using(MemoryModel model = MemoryModel.OpenReadStep21(ifcFile)) + { + var entity = model.Instances[347] as IIfcMaterialLayer; + entity.Should().NotBeNull(); + // Spot Fix - what the parser should do + //using var tx = model.BeginTransaction(""); + //entity.IsVentilated = (bool?)null; + // + entity.IsVentilated.Should().NotBeNull(); // Fails as we treat .U. as $ rather than as IfcLogical with value unknown. + entity.IsVentilated.HasValue.Should().BeTrue(); + entity.IsVentilated.Value.Value.Should().BeNull(); + entity.IsVentilated.ToString().Should().Be("unknown"); + entity.IsVentilated.Value.Should().Be(new Ifc4.MeasureResource.IfcLogical()); + entity.ToString().Should().Be("#347=IFCMATERIALLAYER(#326,417.,.U.,'Component 1',$,$,$);"); + } + } + + [TestMethod] + public void TrueOptionalLogicalShouldBeTrue() + { + + using (MemoryModel model = MemoryModel.OpenReadStep21(ifcFile)) + { + var element = 502; + var entity = model.Instances[element] as IIfcMaterialLayer; + entity.Should().NotBeNull(); + entity.IsVentilated.HasValue.Should().BeTrue(); + entity.IsVentilated.Value.Value.Should().BeOfType().And.Be(true); + entity.IsVentilated.ToString().Should().Be("true"); + entity.IsVentilated.Value.Should().Be(new Ifc4.MeasureResource.IfcLogical(true)); + entity.ToString().Should().Be($"#{element}=IFCMATERIALLAYER(#326,417.,.T.,'Component 1',$,$,$);"); + } + } + + [TestMethod] + public void FalseOptionalLogicalShouldBeFalse() + { + + using (MemoryModel model = MemoryModel.OpenReadStep21(ifcFile)) + { + var element = 503; + var entity = model.Instances[element] as IIfcMaterialLayer; + entity.Should().NotBeNull(); + entity.IsVentilated.HasValue.Should().BeTrue(); + entity.IsVentilated.Value.Value.Should().BeOfType().And.Be(false); + entity.IsVentilated.ToString().Should().Be("false"); + entity.IsVentilated.Value.Should().Be(new Ifc4.MeasureResource.IfcLogical(false)); + entity.ToString().Should().Be($"#{element}=IFCMATERIALLAYER(#326,417.,.F.,'Component 1',$,$,$);"); + } + } + + [TestMethod] + public void TrueBooleanShouldBeTrue() + { + + using (MemoryModel model = MemoryModel.OpenReadStep21(ifcFile)) + { + var element = 500; + var entity = model.Instances[element] as IIfcPropertySingleValue; + entity.Should().NotBeNull(); + + entity.NominalValue.Value.Should().BeOfType().And.Be(true); + entity.NominalValue.ToString().Should().Be("true"); + entity.NominalValue.Should().Be(new Ifc4.MeasureResource.IfcBoolean(true)); + entity.ToString().Should().Be($"#{element}=IFCPROPERTYSINGLEVALUE('IsExternal',$,IFCBOOLEAN(.T.),$);"); + entity.NominalValue.Equals(true).Should().BeFalse("not implicitly cast"); + } + } + + [TestMethod] + public void FalseBooleanShouldBeFalse() + { + + using (MemoryModel model = MemoryModel.OpenReadStep21(ifcFile)) + { + var element = 501; + var entity = model.Instances[element] as IIfcPropertySingleValue; + entity.Should().NotBeNull(); + + entity.NominalValue.Value.Should().BeOfType().And.Be(false); + entity.NominalValue.Should().Be(new Ifc4.MeasureResource.IfcBoolean(false)); + entity.ToString().Should().Be($"#{element}=IFCPROPERTYSINGLEVALUE('IsExternal',$,IFCBOOLEAN(.F.),$);"); + entity.NominalValue.Equals(false).Should().BeFalse("not implicitly cast"); + } + } + } +} diff --git a/Tests/ParsingTests.cs b/Tests/ParsingTests.cs index 24842f79c..c9daac19d 100644 --- a/Tests/ParsingTests.cs +++ b/Tests/ParsingTests.cs @@ -1,10 +1,12 @@ -using Microsoft.Extensions.Logging; +using FluentAssertions; +using Microsoft.Extensions.Logging; using Microsoft.VisualStudio.TestTools.UnitTesting; using System; using System.Diagnostics; using System.IO; using System.Linq; using Xbim.Common; +using Xbim.Common.Model; using Xbim.Common.Step21; using Xbim.Ifc; using Xbim.Ifc2x3.SharedBldgElements; @@ -12,6 +14,7 @@ using Xbim.IO; using Xbim.IO.Parser; using Xbim.IO.Step21; +using MeLoggerFactory = Microsoft.Extensions.Logging.LoggerFactory; namespace Xbim.Essentials.Tests { @@ -21,6 +24,8 @@ public class ParsingTests : TestBase private static readonly IEntityFactory ef4 = new Ifc4.EntityFactoryIfc4(); private static readonly IEntityFactory ef2x3 = new Ifc2x3.EntityFactoryIfc2x3(); + + [TestMethod] public void ToleratesFileWithAbstractClass() { @@ -119,7 +124,25 @@ public void ToleratesFileWithInvalidEnumString() Assert.AreEqual(role.Role, IfcRoleEnum.ARCHITECT); } } - + + [TestMethod] + public void ToleratesFileWithInvalidFileName() + { + // Technically FILE_NAME should have escaped backslashes: \\users not \users + using (var s = File.OpenRead(@"TestFiles\InvalidHeaderFileName.ifc")) + { + var header = StepModel.LoadStep21Header(s); + var fileName = header.FileName.Name; + fileName.Should().Be("C:\\Users\\xbim\\myfile.IFC"); + } + + using (var store = IfcStore.Open(@"TestFiles\InvalidHeaderFileName.ifc")) + { + var fileName = store.Header.FileName.Name; + fileName.Should().Be("C:\\Users\\xbim\\myfile.IFC"); + } + } + /// /// This is only provided as a remainder of possible improvements in the tolerance of incorrect files. /// @@ -127,11 +150,15 @@ public void ToleratesFileWithInvalidEnumString() public void AcceptAFormallyIllegalFile() { // todo: should some notification when the file is malformed be available? - using (var store = IfcStore.Open("TestFiles\\FormallyIllegalFile.ifc")) + using var loggerFactory = MeLoggerFactory.Create(b => b.AddConsole()); + + using (var store = new StepModel(new Xbim.Ifc4.EntityFactoryIfc4(), loggerFactory)) { + store.LoadStep21(@"TestFiles\FormallyIllegalFile.ifc"); + // The file is formally illegal, // see inside the file for comments on details. - + // illegal diameter string var st = store.Instances[1] as IIfcPropertySingleValue; var val = (Ifc4.MeasureResource.IfcDescriptiveMeasure)st.NominalValue; @@ -148,7 +175,6 @@ public void AcceptAFormallyIllegalFile() Assert.IsTrue(double.IsNaN(point.Y), "coordinate should be NaN."); Assert.IsTrue(double.IsPositiveInfinity(point.Z), "coordinate should be positive infinity."); - store.Close(); } } @@ -156,12 +182,37 @@ public void AcceptAFormallyIllegalFile() public void ToleratesEmptyMultibyteStringsTest() { // I have stumbled across a file containing empty multibyte string sequences '\X2\\X0\'. - using (IfcStore store = IfcStore.Open(@"TestFiles\EmptyMultibyteString.ifc")) { + using (IfcStore store = IfcStore.Open(@"TestFiles\EmptyMultibyteString.ifc")) + { IIfcProject project = store.Instances.OfType().SingleOrDefault(); Assert.AreEqual("Test Test Test", (string)project.Name); } } - + + [TestMethod] + public void ToleratesInvalidMultibyteStringsTest() + { + //Github Issue 605 + using var loggerFactory = MeLoggerFactory.Create(b => b.AddConsole()); + + using (var model = new StepModel(new Xbim.Ifc2x3.EntityFactoryIfc2x3(), loggerFactory)) + { + model.LoadStep21(@"TestFiles\InvalidMultiByte.ifc"); + + var props = model.Instances.OfType(); + props.Should().HaveCount(3); + props.Should().AllSatisfy(prop => + { + prop.Name.Value.ToString().Should().EndWith("コンクリート体積"); + + prop.NominalValue.Should().NotBeNull(@"Because should handle invalid Unicode marker"); + prop.NominalValue.Value.ToString().Should().EndWith(@"\X2\30B330F330AF30EA30FC30C84F537A4D8868\X0\.XLSX", "Invalid encoding"); + }); + + + } + } + [TestMethod] public void IfcStoreOpenAndCloseMemoryModelTest() { @@ -188,7 +239,7 @@ public void DefaultsToIfcFormatOnUnrecognisedExtension() [TestMethod] public void IfcStoreOpenAndCloseEsentModelTest() { - using (var store = IfcStore.Open("TestFiles\\4walls1floorSite.ifc", null,0)) + using (var store = IfcStore.Open("TestFiles\\4walls1floorSite.ifc", null, 0)) { var count = store.Instances.Count; Assert.IsTrue(count > 0, "Should have more than zero instances"); @@ -250,23 +301,38 @@ public void DoubleBackSlashName() [TestMethod] public void CanParseNewlinesInStrings() { - using (var model = new Xbim.IO.Memory.MemoryModel( ef2x3)) + using var loggerFactory = MeLoggerFactory.Create(b => b.AddConsole()); + using (var model = new Xbim.IO.Memory.MemoryModel(ef2x3, loggerFactory)) { var errCount = model.LoadStep21("TestFiles\\NewlinesInStrings.ifc"); - Assert.AreEqual(0, errCount); + errCount.Should().Be(0); + model.Header.FileDescription.Description.First().Should().Be("(('ViewDefinition [CoordinationView_V2.0]'),'2;1\r\n')"); + var member = model.Instances.OfType().First(); + member.Name.ToString().Should().Be("L4x4x3/8\r\nB"); } - using (var model = new Xbim.IO.Esent.EsentModel( ef2x3)) + } + + [TestMethod] + public void CanParseNewlinesInStringsEsent() + { + using var loggerFactory = MeLoggerFactory.Create(b => b.AddConsole()); + + using (var model = new Xbim.IO.Esent.EsentModel(ef2x3, loggerFactory)) { - var errCount = model.CreateFrom("TestFiles\\NewlinesInStrings.ifc"); - Assert.AreEqual(true, errCount); + var err = model.CreateFrom("TestFiles\\NewlinesInStrings.ifc", keepOpen: true); + err.Should().Be(true); + model.Header.FileDescription.Description.First().Should().Be("(('ViewDefinition [CoordinationView_V2.0]'),'2;1\r\n')"); + var member = model.Instances.OfType().First(); + member.Name.ToString().Should().Be("L4x4x3/8\r\nB"); } } [TestMethod] public void CanParseSpecicalSolidusEscape() { - using (var model = new Xbim.IO.Memory.MemoryModel(ef2x3)) + using var loggerFactory = MeLoggerFactory.Create(b => b.AddConsole()); + using (var model = new Xbim.IO.Memory.MemoryModel(ef2x3, loggerFactory)) { var errCount = model.LoadStep21("TestFiles\\SpecicalSolidusEscape.ifc"); Assert.AreEqual(0, errCount); @@ -282,7 +348,7 @@ public void IfcOpenIfcZipTest() using (var store = IfcStore.Open("TestFiles\\4walls1floorSite.ifczip")) { count = store.Instances.Count; - Assert.IsTrue(count>0, "Should have instances"); + Assert.IsTrue(count > 0, "Should have instances"); store.Close(); } //esent database @@ -304,10 +370,10 @@ public void ScannerTest() { tok = scanner.yylex(); var txt = scanner.yytext; - Console.WriteLine("Tok={0}, Txt = {1}", Enum.GetName(typeof(Tokens),tok),txt); + Console.WriteLine("Tok={0}, Txt = {1}", Enum.GetName(typeof(Tokens), tok), txt); } - while ( tok!= (int) Tokens.EOF); - } + while (tok != (int)Tokens.EOF); + } } @@ -356,7 +422,7 @@ public void IfcStoreSaveAndOpenIfcZipTest() store.Close(); } using (var store = IfcStore.Open("4walls1floorSiteA.ifczip", null, 0)) - { + { Assert.IsTrue(count == store.Instances.Count, "Should have same number of instances"); store.Close(); } @@ -373,7 +439,7 @@ public void IfcStoreSaveAndOpenIfcZipTest() } } - [TestMethod] + [TestMethod] public void IfcStoreSaveAndOpenIfcXmlZipTest() { long count; @@ -407,17 +473,17 @@ public void IfcStoreSaveAndOpenIfcXmlZipTest() public void IfcStoreSaveAndOpenIfcXml4Test() { int percent = 0; - ReportProgressDelegate progDelegate = delegate(int percentProgress, object userState) + ReportProgressDelegate progDelegate = delegate (int percentProgress, object userState) { percent = percentProgress; }; long count; - - using (var store = IfcStore.Open("TestFiles\\SampleHouse4.ifc", null,-1, progDelegate)) + + using (var store = IfcStore.Open("TestFiles\\SampleHouse4.ifc", null, -1, progDelegate)) { count = store.Instances.Count; - store.SaveAs("SampleHouse4", StorageType.IfcXml); + store.SaveAs("SampleHouse4", StorageType.IfcXml); store.Close(); } using (var store = IfcStore.Open("SampleHouse4.ifcxml", null, -1, progDelegate)) @@ -426,10 +492,10 @@ public void IfcStoreSaveAndOpenIfcXml4Test() store.Close(); } //now with memory model - using (var store = IfcStore.Open("TestFiles\\SampleHouse4.ifc", null,-1,progDelegate)) + using (var store = IfcStore.Open("TestFiles\\SampleHouse4.ifc", null, -1, progDelegate)) { count = store.Instances.Count; - store.SaveAs("SampleHouse4", StorageType.IfcXml); + store.SaveAs("SampleHouse4", StorageType.IfcXml); store.Close(); } using (var store = IfcStore.Open("SampleHouse4.ifcxml")) @@ -450,7 +516,7 @@ public void IfcStoreCreateStoreTest() EditorsOrganisationName = "XbimTeam" }; - using (var store = IfcStore.Create(credentials, XbimSchemaVersion.Ifc2X3,XbimStoreType.EsentDatabase)) + using (var store = IfcStore.Create(credentials, XbimSchemaVersion.Ifc2X3, XbimStoreType.EsentDatabase)) { using (var txn = store.BeginTransaction()) { @@ -508,7 +574,7 @@ public void IfcStoreCreateStoreTest() Assert.IsTrue(schemaVersion == XbimSchemaVersion.Ifc4); } - + [TestMethod] public void ReadIfcHeaderTest() @@ -516,9 +582,9 @@ public void ReadIfcHeaderTest() var modelStore = new HeuristicModelProvider(); var schemaVersion = modelStore.GetXbimSchemaVersion("TestFiles\\SampleHouse4.ifc"); - Assert.IsTrue(schemaVersion==XbimSchemaVersion.Ifc4); + Assert.IsTrue(schemaVersion == XbimSchemaVersion.Ifc4); schemaVersion = modelStore.GetXbimSchemaVersion("TestFiles\\4walls1floorSite.ifc"); - Assert.IsTrue(schemaVersion==XbimSchemaVersion.Ifc2X3); + Assert.IsTrue(schemaVersion == XbimSchemaVersion.Ifc2X3); //first run with a memory model opeing Ifc4 file long count; @@ -540,7 +606,7 @@ public void ReadIfcHeaderTest() Assert.IsTrue(count == store.Instances.Count, "Should have the same number of instances as the memory model"); store.Close(); } - + //now repeat for Ifc2x3 using (var store = IfcStore.Open("TestFiles\\4walls1floorSite.ifc")) { @@ -635,7 +701,7 @@ public void IfcStoreSaveAsXbimTest() long originalCount; using (var ifcStore = IfcStore.Open("TestFiles\\4walls1floorSite.ifc", null, 0)) //test esent databases first { - var count = originalCount = ifcStore.Instances.Count; + var count = originalCount = ifcStore.Instances.Count; Assert.IsTrue(count > 0, "Should have more than zero instances"); //read mode is working ifcStore.SaveAs("4walls1floorSiteDoorES.xbim"); ifcStore.Close(); @@ -701,7 +767,7 @@ public void FileBasedStore_Should_Retain_Saved_XBIM_Files() using (var ifcStore = IfcStore.Open("TestFiles\\4walls1floorSite.ifc", null, 0)) { transientXbimFile = ifcStore.Location; - + ifcStore.SaveAs(savedXBimFile); ifcStore.Close(); } @@ -715,7 +781,7 @@ public void FileBasedStore_Should_Not_retain_Saving_as_Same_file() // Tests a special case - saving a transient xbim over itself // TODO: In theory could make this disable the transient behaviour string transientXbimFile; - + // Load with Esent/File-based store - creates a temp xbim file in %TEMP% using (var ifcStore = IfcStore.Open("TestFiles\\4walls1floorSite.ifc", null, 0)) { @@ -727,7 +793,8 @@ public void FileBasedStore_Should_Not_retain_Saving_as_Same_file() Assert.IsFalse(File.Exists(transientXbimFile)); } - [TestMethod] public void IfcStoreInitialisationTest() + [TestMethod] + public void IfcStoreInitialisationTest() { var credentials = new XbimEditorCredentials { @@ -762,7 +829,6 @@ [TestMethod] public void IfcStoreInitialisationTest() } [TestMethod] - [Ignore("We removed the ability to read illegal step files in order to read legal files with the \"\\S\\'\" sequence, that would otherwise be parsed by the normal backslash,S,backslash sequence, causing an early closure of the string when hitting the \"'\".")] public void EncodeBackslash() { const string path = "C:\\Data\\Martin\\document.txt"; @@ -789,20 +855,20 @@ public void EncodeBackslash() using (var model = IfcStore.Open(test)) { var info = model.Instances.FirstOrDefault(); - Assert.IsTrue(info.Description == path); + info.Description.Value.ToString().Should().Be(path); } } [TestMethod] public void Ifc2x3FinalSchemaTest() { - using (var model = new Xbim.IO.Memory.MemoryModel( ef2x3)) + using (var model = new Xbim.IO.Memory.MemoryModel(ef2x3)) { var errCount = model.LoadStep21("TestFiles\\ifc2x3_final_wall.ifc"); Assert.AreEqual(0, errCount); } - using (var model = new Xbim.IO.Esent.EsentModel( ef2x3)) + using (var model = new Xbim.IO.Esent.EsentModel(ef2x3)) { var errCount = model.CreateFrom("TestFiles\\ifc2x3_final_wall.ifc"); Assert.AreEqual(true, errCount); @@ -818,7 +884,6 @@ public void Parsing_large_entity_label_doesnt_loop() } [TestMethod] - [Ignore("Slow test")] // this is a meta tast of the large stream mock-up public void LargeStreamTest() { @@ -922,13 +987,13 @@ public override int Read(byte[] buffer, int bufferOffset, int count) } // overlap - { + { var spaceCount = (int)(offset - Position); int idx = 0; for (; idx < spaceCount; idx++) buffer[bufferOffset + idx] = (byte)' '; var dataCount = count - spaceCount; - + // adjust var position = Position - offset + spaceCount; if (position != inner.Position) diff --git a/Tests/Part21FormatterTests.cs b/Tests/Part21FormatterTests.cs index 00765ad38..df825edf8 100644 --- a/Tests/Part21FormatterTests.cs +++ b/Tests/Part21FormatterTests.cs @@ -5,19 +5,18 @@ using System.Text; using System.Threading.Tasks; using FluentAssertions; -using Microsoft.VisualStudio.TestTools.UnitTesting; using Xbim.IO.Step21; +using Xunit; namespace Xbim.Essentials.Tests { - [TestClass] public class Part21FormatterTests { public static string fmt = "R"; //public static string fmt = "G"; //public static string fmt = "G17"; - [TestMethod] + [Fact] public void FormatDoubleScientificNotation() { Part21Formatter formatter = new Part21Formatter(); @@ -25,10 +24,10 @@ public void FormatDoubleScientificNotation() string result = formatter.Format(fmt, arg, null); string expected = "5.3E-06"; - Assert.AreEqual(expected, result, "Wrong conversion!"); + result.Should().Be(expected); } - [TestMethod] + [Fact] public void FormatDoubleScientificNotationRoundTrip() { Part21Formatter formatter = new Part21Formatter(); @@ -36,10 +35,10 @@ public void FormatDoubleScientificNotationRoundTrip() string result = formatter.Format(fmt, arg, null); var roundTripDbl = double.Parse(result, new CultureInfo("en-US", false)); - Assert.AreEqual(arg, roundTripDbl, "Wrong conversion!"); + roundTripDbl.Should().Be(arg); } - [TestMethod] + [Fact] public void FormatDouble() { Part21Formatter formatter = new Part21Formatter(); @@ -47,10 +46,10 @@ public void FormatDouble() string result = formatter.Format(fmt, arg, null); string expected = "-12345678.5323"; - Assert.AreEqual(expected, result, "Wrong conversion!"); + result.Should().Be(expected); } - [TestMethod] + [Fact] public void FormatDoubleRoundTrip() { Part21Formatter formatter = new Part21Formatter(); @@ -58,10 +57,10 @@ public void FormatDoubleRoundTrip() string result = formatter.Format(fmt, arg, null); var roundTripDbl = double.Parse(result, new CultureInfo("en-US", false)); - Assert.AreEqual(arg, roundTripDbl, "Wrong conversion!"); + roundTripDbl.Should().Be(arg); } - [TestMethod] + [Fact] public void FormatDoubleLargeDecimal() { Part21Formatter formatter = new Part21Formatter(); @@ -71,10 +70,10 @@ public void FormatDoubleLargeDecimal() string result = formatter.Format(fmt, arg, null); string expected = "0.84551240822557"; // Last digits of double are truncated - Assert.AreEqual(expected, result, "Wrong conversion!"); + result.Should().Be(expected); } - [TestMethod] + [Fact] public void FormatDoubleLargeDecimalRoundTrip() { Part21Formatter formatter = new Part21Formatter(); @@ -88,7 +87,7 @@ public void FormatDoubleLargeDecimalRoundTrip() roundTripDbl.Should().BeApproximately(arg, 0.000000000000001); } - [TestMethod] + [Fact] public void FormatDoubleWithoutDecimal() { Part21Formatter formatter = new Part21Formatter(); @@ -96,10 +95,10 @@ public void FormatDoubleWithoutDecimal() string result = formatter.Format(fmt, arg, null); string expected = "-12345678."; - Assert.AreEqual(expected, result, "Wrong conversion!"); + result.Should().Be(expected); } - [TestMethod] + [Fact] public void FormatDoubleWithoutDecimalRoundTrip() { Part21Formatter formatter = new Part21Formatter(); @@ -107,10 +106,10 @@ public void FormatDoubleWithoutDecimalRoundTrip() string result = formatter.Format(fmt, arg, null); var roundTripDbl = double.Parse(result, new CultureInfo("en-US", false)); - Assert.AreEqual(arg, roundTripDbl, "Wrong conversion!"); + roundTripDbl.Should().Be(arg); } - [TestMethod] + [Fact] public void FormatDoubleWithoutDecimalLarge() { Part21Formatter formatter = new Part21Formatter(); @@ -118,10 +117,10 @@ public void FormatDoubleWithoutDecimalLarge() string result = formatter.Format(fmt, arg, null); string expected = "-1234567812345678."; - Assert.AreEqual(expected, result, "Wrong conversion!"); + result.Should().Be(expected); } - [TestMethod] + [Fact] public void FormatDoubleWithoutDecimalLargeRoundTrip() { Part21Formatter formatter = new Part21Formatter(); @@ -129,7 +128,22 @@ public void FormatDoubleWithoutDecimalLargeRoundTrip() string result = formatter.Format(fmt, arg, null); var roundTripDbl = double.Parse(result, new CultureInfo("en-US", false)); - Assert.AreEqual(arg, roundTripDbl, "Wrong conversion!"); + roundTripDbl.Should().Be(arg); + } + + [InlineData(@"hôtel", @"'h\X\F4tel'")] + [InlineData(@"Zôë", @"'Z\X\F4\X\EB'")] + [InlineData("Multi\r\nLine", @"'Multi\X\0D\X\0ALine'")] + [InlineData(@"コンクリート体積", @"'\X2\30B330F330AF30EA30FC30C84F537A4D\X0\'")] + [InlineData(@"Emôji👍😄⬆️", @"'Em\X\F4ji\X4\0001F44D0001F604\X0\\X2\2B06FE0F\X0\'")] + [Theory] + public void FormatStringAsCorrectEncoding(string input, string expected) + { + Part21Formatter formatter = new Part21Formatter(); + + string result = formatter.Format(fmt, input, null); + + result.Should().Be(expected); } } } \ No newline at end of file diff --git a/Tests/TestFiles/IfcMaterialLayerTestFile.ifc b/Tests/TestFiles/IfcMaterialLayerTestFile.ifc new file mode 100644 index 000000000..b1dfd1080 --- /dev/null +++ b/Tests/TestFiles/IfcMaterialLayerTestFile.ifc @@ -0,0 +1,60 @@ +ISO-10303-21; +HEADER; +FILE_DESCRIPTION(('ViewDefinition [Design_Transfer_View]'),'2;1'); +FILE_NAME('./Duplex_A_ifc4.ifc','2019-05-07T17:09:22',('Architect'),('Building Designer Office'),'The EXPRESS Data Manager Version 5.02.0100.09 : 26 Sep 2013','IFC file generated by GRAPHISOFT ARCHICAD-64 22.0.0.','The authorising person'); +FILE_SCHEMA(('IFC4')); +ENDSEC; +DATA; +#85= IFCDIRECTION((1.,0.,0.)); +#87= IFCDIRECTION((0.,0.,1.)); +#89= IFCCARTESIANPOINT((0.,0.,0.)); +#91= IFCAXIS2PLACEMENT3D(#89,#87,#85); +#92= IFCLOCALPLACEMENT($,#91); +#113= IFCDIRECTION((1.,0.,0.)); +#115= IFCDIRECTION((0.,0.,1.)); +#117= IFCCARTESIANPOINT((0.,0.,0.)); +#119= IFCAXIS2PLACEMENT3D(#117,#115,#113); +#120= IFCLOCALPLACEMENT(#92,#119); +#169= IFCDIRECTION((1.,0.,0.)); +#171= IFCDIRECTION((0.,0.,1.)); +#173= IFCCARTESIANPOINT((0.,0.,-1250.)); +#175= IFCAXIS2PLACEMENT3D(#173,#171,#169); +#176= IFCLOCALPLACEMENT(#120,#175); +#237= IFCDIRECTION((1.,0.,0.)); +#239= IFCDIRECTION((0.,0.,1.)); +#241= IFCCARTESIANPOINT((208.5,-208.5,0.)); +#243= IFCAXIS2PLACEMENT3D(#241,#239,#237); +#244= IFCLOCALPLACEMENT(#176,#243); +#248= IFCCARTESIANPOINT((208.5,-208.5)); +#250= IFCCARTESIANPOINT((8174.5,-208.5)); +#252= IFCCARTESIANPOINT((8591.5,208.5)); +#254= IFCCARTESIANPOINT((-208.5,208.5)); +#256= IFCPOLYLINE((#248,#250,#252,#254,#248)); +#258= IFCARBITRARYCLOSEDPROFILEDEF(.AREA.,'',#256); +#261= IFCDIRECTION((1.,0.,0.)); +#263= IFCDIRECTION((0.,0.,1.)); +#265= IFCCARTESIANPOINT((0.,0.,0.)); +#267= IFCAXIS2PLACEMENT3D(#265,#263,#261); +#268= IFCDIRECTION((0.,0.,1.)); +#270= IFCEXTRUDEDAREASOLID(#258,#267,#268,1250.); +#280= IFCSHAPEREPRESENTATION(#246,'Body','SweptSolid',(#270)); +#287= IFCPRESENTATIONLAYERASSIGNMENT('A-WALL-MBNI.IFC Model',$,(#280,#297),$); +#297= IFCSHAPEREPRESENTATION(#290,'Axis','Curve2D',(#295)); +#291= IFCCARTESIANPOINT((0.,0.)); +#293= IFCCARTESIANPOINT((8383.,0.)); +#295= IFCPOLYLINE((#291,#293)); +#301= IFCPRODUCTDEFINITIONSHAPE($,$,(#280,#297)); +#307= IFCWALLSTANDARDCASE('2O2Fr$t4X7Zf8NOew3FK80',$,'Basic Wall:Foundation - Concrete (417mm):140479',$,'Basic Wall:Foundation - Concrete (417mm):128676',#244,#301,'140479',$); +#326= IFCMATERIAL('Concrete - Cast In Situ',$,$); +#347= IFCMATERIALLAYER(#326,417.,.U.,'Component 1',$,$,$); +#349= IFCMATERIALLAYERSET((#347),'Concrete - Cast In Situ 417',$); +#352= IFCMATERIALLAYERSETUSAGE(#349,.AXIS2.,.POSITIVE.,-208.5,$); +#354= IFCRELASSOCIATESMATERIAL('3nhziuMrHzR_A3$qPzE8R4',$,$,$,(#307),#352); + +#500=IFCPROPERTYSINGLEVALUE('IsExternal',$,IFCBOOLEAN(.T.),$); +#501=IFCPROPERTYSINGLEVALUE('IsExternal',$,IFCBOOLEAN(.F.),$); +#502= IFCMATERIALLAYER(#326,417.,.T.,'Component 1',$,$,$); +#503= IFCMATERIALLAYER(#326,417.,.F.,'Component 1',$,$,$); + +ENDSEC; +END-ISO-10303-21; diff --git a/Tests/TestFiles/InvalidHeaderFileName.ifc b/Tests/TestFiles/InvalidHeaderFileName.ifc new file mode 100644 index 000000000..b64907b3d --- /dev/null +++ b/Tests/TestFiles/InvalidHeaderFileName.ifc @@ -0,0 +1,11 @@ +ISO-10303-21; +HEADER; +FILE_SCHEMA(('IFC2X3')); +FILE_NAME('C:\Users\xbim\myfile.IFC','2012-01-01T09:00:00',('User'),('A',''),'v3','W',''); +ENDSEC; + +DATA; +#1= IFCORGANIZATION($,'xbim',$,$,$); +ENDSEC; + +END-ISO-10303-21; diff --git a/Tests/TestFiles/InvalidMultiByte.ifc b/Tests/TestFiles/InvalidMultiByte.ifc new file mode 100644 index 000000000..f2e629238 --- /dev/null +++ b/Tests/TestFiles/InvalidMultiByte.ifc @@ -0,0 +1,39 @@ +ISO-10303-21; +HEADER; +FILE_DESCRIPTION(('None'),'2;1'); +FILE_NAME('None.ifc','23.03.2018T11:18:44',(' '),(' '),'Some','Windows System',' '); +FILE_SCHEMA(('IFC2X3')); +ENDSEC; +DATA; +#1= IFCORGANIZATION($,'Soft',$,$,$); +#5= IFCAPPLICATION(#1,'Some app','Some app','App'); +#6= IFCPERSON('','','',$,$,$,$,$); +#12= IFCPERSONANDORGANIZATION(#6,#1,$); +#13= IFCOWNERHISTORY(#12,#5,$,.NOCHANGE.,$,$,$,0); +#20= IFCSIUNIT(*,.LENGTHUNIT.,$,.METRE.); +#21= IFCSIUNIT(*,.PLANEANGLEUNIT.,$,.RADIAN.); +#30= IFCUNITASSIGNMENT((#20,#21)); +#40= IFCDIRECTION((1.,0.,0.)); +#41= IFCDIRECTION((0.,1.,0.)); +#42= IFCDIRECTION((0.,0.,1.)); +#45= IFCCARTESIANPOINT((0.,0.,0.)); +#46= IFCDIRECTION((-1.,0.,0.)); +#47= IFCDIRECTION((0.,-1.,0.)); +#48= IFCDIRECTION((0.,0.,-1.)); +#50= IFCAXIS2PLACEMENT3D(#45,#42,#40); +#52= IFCCARTESIANPOINT((0.,0.)); +#53= IFCDIRECTION((1.,0.)); +#54= IFCDIRECTION((-1.,0.)); +#55= IFCDIRECTION((0.,1.)); +#56= IFCDIRECTION((0.,-1.)); +#57= IFCAXIS2PLACEMENT2D(#52,#53); +#60= IFCGEOMETRICREPRESENTATIONCONTEXT($,'Model',3,1.E-006,#50,$); +#61= IFCGEOMETRICREPRESENTATIONCONTEXT($,'Plan',3,1.E-006,#50,$); +#62= IFCGEOMETRICREPRESENTATIONSUBCONTEXT($,'Plan',*,*,*,*,#61,0.01,.PLAN_VIEW.,$); +#70= IFCPROJECT('2OMYwqOAT2LPGg0QtvgJa2',#13,'Test','','','','',(#60,#61),#30); +#15451=IFCPROPERTYSINGLEVALUE('1\X2\30B330F330AF30EA30FC30C84F537A4D\X0\',$,IFCTEXT('file://ATTRIBUTE1\\X2\30B330F330AF30EA30FC30C84F537A4D8868\X0\.XLSX'),$); +#15452=IFCPROPERTYSINGLEVALUE('2\X2\30B330F330AF30EA30FC30C84F537A4D\X0\',$,IFCTEXT('file://ATTRIBUTE2\\X2\30B330F330AF30EA30FC30C84F537A4D8868\X0\.XLSX'),$); +#15453=IFCPROPERTYSINGLEVALUE('3\X2\30B330F330AF30EA30FC30C84F537A4D\X0\',$,IFCTEXT('file://ATTRIBUTE3\\X2\30B330F330AF30EA30FC30C84F537A4D8868\X0\-\\X2\30B330F330AF30EA30FC30C84F537A4D8868\X0\.XLSX'),$); +#80= IFCPERSON('Person 2','','',$,$,$,$,$); +ENDSEC; +END-ISO-10303-21; diff --git a/Tests/TestFiles/NewlinesInStrings.ifc b/Tests/TestFiles/NewlinesInStrings.ifc index b8de34d0d..7c9804b33 100644 --- a/Tests/TestFiles/NewlinesInStrings.ifc +++ b/Tests/TestFiles/NewlinesInStrings.ifc @@ -27,7 +27,7 @@ DATA; #315798=IFCCARTESIANTRANSFORMATIONOPERATOR2D(#1031933,#1031934,#592820,1.); #315817=IFCLSHAPEPROFILEDEF(.AREA.,'L4x4x3/8',#532246,4.,4.,0.375,0.1875,0.,0.,0.,0.); #323449=IFCMEMBER('1dfYC_zFP2lAeDUw6iqQ4Q',#533255,'L4x4x3/8 -','L4x4x3/8','Cleat',#534050,#405734,$); +B','L4x4x3/8','Cleat',#534050,#405734,$); #405734=IFCPRODUCTDEFINITIONSHAPE($,$,(#459888)); #436295=IFCMAPPEDITEM(#447715,#501238); #447715=IFCREPRESENTATIONMAP(#567200,#459887); diff --git a/Tests/TolerantFormatConversionTests.cs b/Tests/TolerantFormatConversionTests.cs index 35d30955f..d6ad68f34 100644 --- a/Tests/TolerantFormatConversionTests.cs +++ b/Tests/TolerantFormatConversionTests.cs @@ -12,66 +12,25 @@ namespace Xbim.IO.Tests [TestClass] public class TolerantFormatConversionTests { - // this test is known to fail... There's an encoded backspace in the file name inside the header that cannot be persiste to xml. - // should the system tolerate the fault? - // for the time being I've improved the error message so that the problem in the file is easier to resolve. - // + // this test was known to fail... There's an encoded control code (\b) in the file name inside the header that cannot be persisted to xml + // without further encoding [TestMethod] public void ForConsideration_SaveTroublesomeFile() { - long count; - int ErrFiles = 0; - - var sb = new StringBuilder(); var outfile = new FileInfo("out.ifczip"); if (outfile.Exists) outfile.Delete(); + var file = "TestFiles\\BackSpaceInFileName.ifc"; - var files = new List(); - files.Add(new FileInfo("TestFiles\\BackSpaceInFileName.ifc")); + using var store = IfcStore.Open(file); - foreach (var file in files) - { - try - { - using (var store = IfcStore.Open(file.FullName)) - { - count = store.Instances.Count; - store.SaveAs( - outfile.FullName, - StorageType.IfcZip | StorageType.IfcXml - ); - store.Close(); - } - } - catch (Exception ex) - { - ErrFiles++; - sb.AppendLine($"Failed for {file.FullName}"); - var e = ex; - while (e!= null) - { - sb.AppendLine($"{e.Message}"); - e = e.InnerException; - } - sb.AppendLine("==="); - } - if (outfile.Exists) - outfile.Delete(); - } - var errors = sb.ToString(); - if (!string.IsNullOrEmpty(errors)) - { - var rep = $"{ErrFiles} files with problems\r\n\r\n{errors}"; - var repoutfile = new FileInfo("report.txt"); - using (var fw = repoutfile.CreateText()) - { - fw.WriteLine(rep); - } - throw new Exception(rep); - } + store.SaveAs(outfile.FullName, StorageType.IfcZip | StorageType.IfcXml); + store.Close(); + + if (outfile.Exists) + outfile.Delete(); } } } diff --git a/Tests/Xbim.Essentials.Tests.csproj b/Tests/Xbim.Essentials.Tests.csproj index d79680147..9b183d1c8 100644 --- a/Tests/Xbim.Essentials.Tests.csproj +++ b/Tests/Xbim.Essentials.Tests.csproj @@ -20,22 +20,18 @@ - - - - + - - PreserveNewest - + + @@ -67,26 +63,21 @@ - Always + PreserveNewest - Always + PreserveNewest - Always + PreserveNewest - Always + PreserveNewest - Always + PreserveNewest - Always - - - - PreserveNewest diff --git a/Tests/XbimP21StringDecoderTests.cs b/Tests/XbimP21StringDecoderTests.cs new file mode 100644 index 000000000..2db078d2d --- /dev/null +++ b/Tests/XbimP21StringDecoderTests.cs @@ -0,0 +1,42 @@ +using FluentAssertions; +using Xbim.IO.Step21; +using Xunit; + +namespace Xbim.Essentials.Tests +{ + public class XbimP21StringDecoderTests + { + [InlineData("", "")] + [InlineData("''", "'")] + [InlineData("'Acme'", "'Acme'")] + [InlineData("O''Leary", "O'Leary")] + [InlineData("O'Leary", "O'Leary")] + [InlineData(@"http://foo.bar.com/Abc?c=d", "http://foo.bar.com/Abc?c=d")] + [InlineData(@"\S\Drger", @"Ärger")] // D = 0x44. 0x44 + 0x80(top bit) = 0xC4 => Ä (in ISO-8859-1) + [InlineData(@"h\S\ttel", @"hôtel")] // t = 0x74. + 0x80 => 0xF4 = ô (in ISO-8859-1) + [InlineData(@"\PA\h\S\ttel", @"hôtel")] // t = 0x74. + 0x80 => 0xF4 = ô (in ISO-8859-1) - Explicitly state 8859-1 codepage + [InlineData(@"\PE\h\S\ttel", @"hєtel")] // t = 0x74. + 0x80 => 0xF4 = є (in ISO-8859-5) P*E* => 5th 8859 codepage (Cyrillic) + [InlineData(@"\X2\30B330F330AF30EA30FC30C84F537A4D\X0\", "コンクリート体積")] + [InlineData(@"file://ATTRIBUTE\X2\30B330F330AF30EA30FC30C84F537A4D8868\X0\.XLSX", @"file://ATTRIBUTEコンクリート体積表.XLSX")] + [InlineData(@"file://ATTRIBUTE/\X2\30B330F330AF30EA30FC30C84F537A4D8868\X0\.XLSX", @"file://ATTRIBUTE/コンクリート体積表.XLSX")] + [InlineData(@"file://ATTRIBUTE\\\X2\30B330F330AF30EA30FC30C84F537A4D8868\X0\.XLSX", @"file://ATTRIBUTE\コンクリート体積表.XLSX")] + [InlineData(@"file://ATTRIBUTE\\X2\30B330F330AF30EA30FC30C84F537A4D8868\X0\.XLSX", + @"file://ATTRIBUTE\X2\30B330F330AF30EA30FC30C84F537A4D8868\X0\.XLSX")] // Invalid encoding. Only \\ un-escaped + [InlineData(@"F:\\Dropbox\\00 - ndBIM_Coordena\S\C\S\'\S\C\S\#o\\01 - Parcerias Comerciais\\YellowBox\\2015-09-24\\IFC\\ARQ.ifc", + @"F:\Dropbox\00 - ndBIM_Coordenação\01 - Parcerias Comerciais\YellowBox\2015-09-24\IFC\ARQ.ifc")] + [InlineData(@"Em\X\F4ji\X4\0001F44D0001F604\X0\\X2\2B06FE0F\X0\", @"Emôji👍😄⬆️")] + + [Theory] + public void CanDecodeString(string p21input, string expectedOutput) + { + var decoder = new XbimP21StringDecoder(); + + var result = decoder.Unescape(p21input); + + result.Should().Be(expectedOutput); + + } + } +} + + diff --git a/Xbim.Common/Metadata/ExpressMetaData.cs b/Xbim.Common/Metadata/ExpressMetaData.cs index 6d6193e51..92ac61455 100644 --- a/Xbim.Common/Metadata/ExpressMetaData.cs +++ b/Xbim.Common/Metadata/ExpressMetaData.cs @@ -1,4 +1,5 @@ using System; +using System.Collections.Concurrent; using System.Collections.Generic; using System.Diagnostics; using System.Linq; @@ -55,31 +56,42 @@ public class ExpressMetaData /// /// Static cache to avoid multiple creation of the structure /// - private static readonly Dictionary Cache = new Dictionary(); + private static readonly ConcurrentDictionary Cache = new ConcurrentDictionary(); + + private static readonly ConcurrentDictionary FactoryCache = new ConcurrentDictionary(); - private static readonly object _lock = new object(); /// /// This method creates metadata model for a specified module based on reflection and custom attributes. /// It only creates ExpressMetaData once for any module. If it already exists it is retrieved from a /// static cache. However, for a performance reasons try to minimize this and rather keep a single instance /// reference for your code. /// + /// Prefer GetMetadata(IEntityFactory) overload which permits more control over schema enumeration /// Assembly module which contains single schema model /// Meta data structure for the schema defined within the module + [Obsolete("Prefer ExpressMetaData GetMetadata(IEntityFactory) overload")] public static ExpressMetaData GetMetadata(Module module) { + return Cache.GetOrAdd(module, m => new ExpressMetaData(m)); + } - ExpressMetaData result; - if (Cache.TryGetValue(module, out result)) - return result; - lock (_lock) + /// + /// Creates an metadata model for a specified based on reflection and custom attributes. + /// An ExpressMetaData is creted only once for any EntityFactory. + /// + /// Only types sharing the same namespace as the are included. This makes it possible + /// to share multiple schemas in a single Assembly / Module + /// + /// + /// + public static ExpressMetaData GetMetadata(IEntityFactory entityFactory) + { + if (entityFactory is null) { - if (Cache.TryGetValue(module, out result)) - return result; - result = new ExpressMetaData(module); - Cache.Add(module, result); - return result; + throw new ArgumentNullException(nameof(entityFactory)); } + + return FactoryCache.GetOrAdd(entityFactory, f => new ExpressMetaData(f)); } private ExpressMetaData(Module module) @@ -87,15 +99,7 @@ private ExpressMetaData(Module module) Module = module; var typesToProcess = module.GetTypes().Where( - t => - { - var ti = t.GetTypeInfo(); - return typeof(IPersist).GetTypeInfo().IsAssignableFrom(t) - && t != typeof(IPersist) - && !ti.IsEnum && !ti.IsInterface - && ti.IsPublic - && !typeof(IExpressHeaderType).GetTypeInfo().IsAssignableFrom(t); - }).ToList(); + t => IsExpressTypeForSchema(t)).ToList(); _typeIdToExpressTypeLookup = new Dictionary(typesToProcess.Count); _typeNameToExpressTypeLookup = new Dictionary(typesToProcess.Count); @@ -103,6 +107,38 @@ private ExpressMetaData(Module module) _typeToExpressTypeLookup = new ExpressTypeDictionary(); _interfaceToExpressTypesLookup = new Dictionary>(); + RegisterTypes(typesToProcess); + } + + private ExpressMetaData(IEntityFactory factory) + { + Module = factory.GetType().Module; + var schemaNamespace = factory.GetType().Namespace; + var typesToProcess = + Module.GetTypes().Where( + t => IsExpressTypeForSchema(t, schemaNamespace)).ToList(); + + _typeIdToExpressTypeLookup = new Dictionary(typesToProcess.Count); + _typeNameToExpressTypeLookup = new Dictionary(typesToProcess.Count); + _persistNameToExpressTypeLookup = new Dictionary(typesToProcess.Count); + _typeToExpressTypeLookup = new ExpressTypeDictionary(); + _interfaceToExpressTypesLookup = new Dictionary>(); + + RegisterTypes(typesToProcess); + } + + private static bool IsExpressTypeForSchema(Type type, string schemaNamespace = "") + { + return typeof(IPersist).GetTypeInfo().IsAssignableFrom(type) + && type.IsPublic + && !type.IsEnum && !type.IsInterface + && type.GetCustomAttributes(typeof(ExpressTypeAttribute), false).Any() + && !typeof(IExpressHeaderType).GetTypeInfo().IsAssignableFrom(type) + && (string.IsNullOrEmpty(schemaNamespace) || type.Namespace.StartsWith(schemaNamespace)); + } + + private void RegisterTypes(IList typesToProcess) + { // System.Diagnostics.Debug.Write(typesToProcess.Count()); foreach (var typeToProcess in typesToProcess) { diff --git a/Xbim.Common/Metadata/ExpressType.cs b/Xbim.Common/Metadata/ExpressType.cs index b8351be40..253609b63 100644 --- a/Xbim.Common/Metadata/ExpressType.cs +++ b/Xbim.Common/Metadata/ExpressType.cs @@ -97,10 +97,9 @@ public ExpressType(Type type) Type = type; var typeInfo = Type.GetTypeInfo(); var entNameAttr = typeInfo.GetCustomAttributes(typeof(ExpressTypeAttribute), false).FirstOrDefault(); -#if DEBUG + if (entNameAttr == null) throw new Exception("Express Type is not defined for " + Type.Name); -#endif _typeId = (short)((ExpressTypeAttribute)entNameAttr).EntityTypeId; _expressName = ((ExpressTypeAttribute)entNameAttr).Name; _expressNameUpper = _expressName.ToUpperInvariant(); diff --git a/Xbim.Common/Model/StepModel.cs b/Xbim.Common/Model/StepModel.cs index 9308eff9f..1a75bfa9a 100644 --- a/Xbim.Common/Model/StepModel.cs +++ b/Xbim.Common/Model/StepModel.cs @@ -250,7 +250,7 @@ public ExpressMetaData Metadata { get { return _metadata ?? - (_metadata = ExpressMetaData.GetMetadata(EntityFactory.GetType().GetTypeInfo().Module)); + (_metadata = ExpressMetaData.GetMetadata(EntityFactory)); } } diff --git a/Xbim.Common/PersistEntity.cs b/Xbim.Common/PersistEntity.cs index 564b9f5d8..6d7148e8f 100644 --- a/Xbim.Common/PersistEntity.cs +++ b/Xbim.Common/PersistEntity.cs @@ -144,7 +144,9 @@ public override string ToString() if (Model != null) md = Model.Metadata; else +#pragma warning disable CS0618 // Type or member is obsolete md = ExpressMetaData.GetMetadata(GetType().Module); +#pragma warning restore CS0618 // Type or member is obsolete using (var sw = new StringWriter()) { diff --git a/Xbim.Common/Step21/Parser/GPLEXcopyright.rtf b/Xbim.Common/Step21/Parser/GPLEXcopyright.rtf new file mode 100644 index 000000000..2408050f0 --- /dev/null +++ b/Xbim.Common/Step21/Parser/GPLEXcopyright.rtf @@ -0,0 +1,194 @@ +{\rtf1\adeflang1025\ansi\ansicpg1252\uc1\adeff0\deff0\stshfdbch0\stshfloch0\stshfhich0\stshfbi0\deflang3081\deflangfe3081\themelang1033\themelangfe0\themelangcs0{\fonttbl{\f0\fbidi \froman\fcharset0\fprq2{\*\panose 02020603050405020304}Times New Roman;}{\f1\fbidi \fswiss\fcharset0\fprq2{\*\panose 020b0604020202020204}Arial;} +{\f1\fbidi \fswiss\fcharset0\fprq2{\*\panose 020b0604020202020204}Arial;}{\flomajor\f31500\fbidi \froman\fcharset0\fprq2{\*\panose 02020603050405020304}Times New Roman;} +{\fdbmajor\f31501\fbidi \froman\fcharset0\fprq2{\*\panose 02020603050405020304}Times New Roman;}{\fhimajor\f31502\fbidi \froman\fcharset0\fprq2{\*\panose 02040503050406030204}Cambria;} +{\fbimajor\f31503\fbidi \froman\fcharset0\fprq2{\*\panose 02020603050405020304}Times New Roman;}{\flominor\f31504\fbidi \froman\fcharset0\fprq2{\*\panose 02020603050405020304}Times New Roman;} +{\fdbminor\f31505\fbidi \froman\fcharset0\fprq2{\*\panose 02020603050405020304}Times New Roman;}{\fhiminor\f31506\fbidi \fswiss\fcharset0\fprq2{\*\panose 020f0502020204030204}Calibri;} +{\fbiminor\f31507\fbidi \froman\fcharset0\fprq2{\*\panose 02020603050405020304}Times New Roman;}{\f39\fbidi \froman\fcharset238\fprq2 Times New Roman CE;}{\f40\fbidi \froman\fcharset204\fprq2 Times New Roman Cyr;} +{\f42\fbidi \froman\fcharset161\fprq2 Times New Roman Greek;}{\f43\fbidi \froman\fcharset162\fprq2 Times New Roman Tur;}{\f44\fbidi \froman\fcharset177\fprq2 Times New Roman (Hebrew);}{\f45\fbidi \froman\fcharset178\fprq2 Times New Roman (Arabic);} +{\f46\fbidi \froman\fcharset186\fprq2 Times New Roman Baltic;}{\f47\fbidi \froman\fcharset163\fprq2 Times New Roman (Vietnamese);}{\f49\fbidi \fswiss\fcharset238\fprq2 Arial CE;}{\f50\fbidi \fswiss\fcharset204\fprq2 Arial Cyr;} +{\f52\fbidi \fswiss\fcharset161\fprq2 Arial Greek;}{\f53\fbidi \fswiss\fcharset162\fprq2 Arial Tur;}{\f54\fbidi \fswiss\fcharset177\fprq2 Arial (Hebrew);}{\f55\fbidi \fswiss\fcharset178\fprq2 Arial (Arabic);} +{\f56\fbidi \fswiss\fcharset186\fprq2 Arial Baltic;}{\f57\fbidi \fswiss\fcharset163\fprq2 Arial (Vietnamese);}{\f49\fbidi \fswiss\fcharset238\fprq2 Arial CE;}{\f50\fbidi \fswiss\fcharset204\fprq2 Arial Cyr;} +{\f52\fbidi \fswiss\fcharset161\fprq2 Arial Greek;}{\f53\fbidi \fswiss\fcharset162\fprq2 Arial Tur;}{\f54\fbidi \fswiss\fcharset177\fprq2 Arial (Hebrew);}{\f55\fbidi \fswiss\fcharset178\fprq2 Arial (Arabic);} +{\f56\fbidi \fswiss\fcharset186\fprq2 Arial Baltic;}{\f57\fbidi \fswiss\fcharset163\fprq2 Arial (Vietnamese);}{\flomajor\f31508\fbidi \froman\fcharset238\fprq2 Times New Roman CE;}{\flomajor\f31509\fbidi \froman\fcharset204\fprq2 Times New Roman Cyr;} +{\flomajor\f31511\fbidi \froman\fcharset161\fprq2 Times New Roman Greek;}{\flomajor\f31512\fbidi \froman\fcharset162\fprq2 Times New Roman Tur;}{\flomajor\f31513\fbidi \froman\fcharset177\fprq2 Times New Roman (Hebrew);} +{\flomajor\f31514\fbidi \froman\fcharset178\fprq2 Times New Roman (Arabic);}{\flomajor\f31515\fbidi \froman\fcharset186\fprq2 Times New Roman Baltic;}{\flomajor\f31516\fbidi \froman\fcharset163\fprq2 Times New Roman (Vietnamese);} +{\fdbmajor\f31518\fbidi \froman\fcharset238\fprq2 Times New Roman CE;}{\fdbmajor\f31519\fbidi \froman\fcharset204\fprq2 Times New Roman Cyr;}{\fdbmajor\f31521\fbidi \froman\fcharset161\fprq2 Times New Roman Greek;} +{\fdbmajor\f31522\fbidi \froman\fcharset162\fprq2 Times New Roman Tur;}{\fdbmajor\f31523\fbidi \froman\fcharset177\fprq2 Times New Roman (Hebrew);}{\fdbmajor\f31524\fbidi \froman\fcharset178\fprq2 Times New Roman (Arabic);} +{\fdbmajor\f31525\fbidi \froman\fcharset186\fprq2 Times New Roman Baltic;}{\fdbmajor\f31526\fbidi \froman\fcharset163\fprq2 Times New Roman (Vietnamese);}{\fhimajor\f31528\fbidi \froman\fcharset238\fprq2 Cambria CE;} +{\fhimajor\f31529\fbidi \froman\fcharset204\fprq2 Cambria Cyr;}{\fhimajor\f31531\fbidi \froman\fcharset161\fprq2 Cambria Greek;}{\fhimajor\f31532\fbidi \froman\fcharset162\fprq2 Cambria Tur;} +{\fhimajor\f31535\fbidi \froman\fcharset186\fprq2 Cambria Baltic;}{\fhimajor\f31536\fbidi \froman\fcharset163\fprq2 Cambria (Vietnamese);}{\fbimajor\f31538\fbidi \froman\fcharset238\fprq2 Times New Roman CE;} +{\fbimajor\f31539\fbidi \froman\fcharset204\fprq2 Times New Roman Cyr;}{\fbimajor\f31541\fbidi \froman\fcharset161\fprq2 Times New Roman Greek;}{\fbimajor\f31542\fbidi \froman\fcharset162\fprq2 Times New Roman Tur;} +{\fbimajor\f31543\fbidi \froman\fcharset177\fprq2 Times New Roman (Hebrew);}{\fbimajor\f31544\fbidi \froman\fcharset178\fprq2 Times New Roman (Arabic);}{\fbimajor\f31545\fbidi \froman\fcharset186\fprq2 Times New Roman Baltic;} +{\fbimajor\f31546\fbidi \froman\fcharset163\fprq2 Times New Roman (Vietnamese);}{\flominor\f31548\fbidi \froman\fcharset238\fprq2 Times New Roman CE;}{\flominor\f31549\fbidi \froman\fcharset204\fprq2 Times New Roman Cyr;} +{\flominor\f31551\fbidi \froman\fcharset161\fprq2 Times New Roman Greek;}{\flominor\f31552\fbidi \froman\fcharset162\fprq2 Times New Roman Tur;}{\flominor\f31553\fbidi \froman\fcharset177\fprq2 Times New Roman (Hebrew);} +{\flominor\f31554\fbidi \froman\fcharset178\fprq2 Times New Roman (Arabic);}{\flominor\f31555\fbidi \froman\fcharset186\fprq2 Times New Roman Baltic;}{\flominor\f31556\fbidi \froman\fcharset163\fprq2 Times New Roman (Vietnamese);} +{\fdbminor\f31558\fbidi \froman\fcharset238\fprq2 Times New Roman CE;}{\fdbminor\f31559\fbidi \froman\fcharset204\fprq2 Times New Roman Cyr;}{\fdbminor\f31561\fbidi \froman\fcharset161\fprq2 Times New Roman Greek;} +{\fdbminor\f31562\fbidi \froman\fcharset162\fprq2 Times New Roman Tur;}{\fdbminor\f31563\fbidi \froman\fcharset177\fprq2 Times New Roman (Hebrew);}{\fdbminor\f31564\fbidi \froman\fcharset178\fprq2 Times New Roman (Arabic);} +{\fdbminor\f31565\fbidi \froman\fcharset186\fprq2 Times New Roman Baltic;}{\fdbminor\f31566\fbidi \froman\fcharset163\fprq2 Times New Roman (Vietnamese);}{\fhiminor\f31568\fbidi \fswiss\fcharset238\fprq2 Calibri CE;} +{\fhiminor\f31569\fbidi \fswiss\fcharset204\fprq2 Calibri Cyr;}{\fhiminor\f31571\fbidi \fswiss\fcharset161\fprq2 Calibri Greek;}{\fhiminor\f31572\fbidi \fswiss\fcharset162\fprq2 Calibri Tur;} +{\fhiminor\f31575\fbidi \fswiss\fcharset186\fprq2 Calibri Baltic;}{\fhiminor\f31576\fbidi \fswiss\fcharset163\fprq2 Calibri (Vietnamese);}{\fbiminor\f31578\fbidi \froman\fcharset238\fprq2 Times New Roman CE;} +{\fbiminor\f31579\fbidi \froman\fcharset204\fprq2 Times New Roman Cyr;}{\fbiminor\f31581\fbidi \froman\fcharset161\fprq2 Times New Roman Greek;}{\fbiminor\f31582\fbidi \froman\fcharset162\fprq2 Times New Roman Tur;} +{\fbiminor\f31583\fbidi \froman\fcharset177\fprq2 Times New Roman (Hebrew);}{\fbiminor\f31584\fbidi \froman\fcharset178\fprq2 Times New Roman (Arabic);}{\fbiminor\f31585\fbidi \froman\fcharset186\fprq2 Times New Roman Baltic;} +{\fbiminor\f31586\fbidi \froman\fcharset163\fprq2 Times New Roman (Vietnamese);}}{\colortbl;\red0\green0\blue0;\red0\green0\blue255;\red0\green255\blue255;\red0\green255\blue0;\red255\green0\blue255;\red255\green0\blue0;\red255\green255\blue0; +\red255\green255\blue255;\red0\green0\blue128;\red0\green128\blue128;\red0\green128\blue0;\red128\green0\blue128;\red128\green0\blue0;\red128\green128\blue0;\red128\green128\blue128;\red192\green192\blue192;}{\*\defchp \fs22 }{\*\defpap +\ql \li0\ri0\sa200\sl276\slmult1\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 }\noqfpromote {\stylesheet{\ql \li0\ri0\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs24\alang1025 +\ltrch\fcs0 \fs24\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 \snext0 \sqformat \spriority0 Normal;}{\s1\ql \li0\ri0\sb240\sa60\keepn\widctlpar\wrapdefault\aspalpha\aspnum\faauto\outlinelevel0\adjustright\rin0\lin0\itap0 \rtlch\fcs1 +\ab\af1\afs32\alang1025 \ltrch\fcs0 \b\f1\fs32\lang1033\langfe1033\kerning32\cgrid\langnp1033\langfenp1033 \sbasedon0 \snext0 \slink15 \sqformat heading 1;}{\*\cs10 \additive \ssemihidden Default Paragraph Font;}{\* +\ts11\tsrowd\trftsWidthB3\trpaddl108\trpaddr108\trpaddfl3\trpaddft3\trpaddfb3\trpaddfr3\trcbpat1\trcfpat1\tblind0\tblindtype3\tscellwidthfts0\tsvertalt\tsbrdrt\tsbrdrl\tsbrdrb\tsbrdrr\tsbrdrdgl\tsbrdrdgr\tsbrdrh\tsbrdrv \ql \li0\ri0\sa200\sl276\slmult1 +\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs22\alang1025 \ltrch\fcs0 \fs22\lang3081\langfe3081\cgrid\langnp3081\langfenp3081 \snext11 \ssemihidden \sunhideused \sqformat Normal Table;}{\*\cs15 \additive +\rtlch\fcs1 \ab\af31503\afs32 \ltrch\fcs0 \b\fs32\kerning32\loch\f31502\hich\af31502\dbch\af31501 \sbasedon10 \slink1 \slocked \spriority9 Heading 1 Char;}}{\*\listtable{\list\listtemplateid-1508889896\listhybrid{\listlevel\levelnfc0\levelnfcn0\leveljc0 +\leveljcn0\levelfollow0\levelstartat1\levelspace360\levelindent0{\leveltext\leveltemplateid67698703\'02\'00.;}{\levelnumbers\'01;}\rtlch\fcs1 \af0 \ltrch\fcs0 \hres0\chhres0 \fi-360\li720\jclisttab\tx720\lin720 }{\listlevel\levelnfc4\levelnfcn4\leveljc0 +\leveljcn0\levelfollow0\levelstartat1\levelspace360\levelindent0{\leveltext\leveltemplateid67698713\'02\'01.;}{\levelnumbers\'01;}\rtlch\fcs1 \af0 \ltrch\fcs0 \hres0\chhres0 \fi-360\li1440\jclisttab\tx1440\lin1440 }{\listlevel\levelnfc2\levelnfcn2 +\leveljc2\leveljcn2\levelfollow0\levelstartat1\levelspace360\levelindent0{\leveltext\leveltemplateid67698715\'02\'02.;}{\levelnumbers\'01;}\rtlch\fcs1 \af0 \ltrch\fcs0 \hres0\chhres0 \fi-180\li2160\jclisttab\tx2160\lin2160 }{\listlevel\levelnfc0 +\levelnfcn0\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace360\levelindent0{\leveltext\leveltemplateid67698703\'02\'03.;}{\levelnumbers\'01;}\rtlch\fcs1 \af0 \ltrch\fcs0 \hres0\chhres0 \fi-360\li2880\jclisttab\tx2880\lin2880 }{\listlevel +\levelnfc4\levelnfcn4\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace360\levelindent0{\leveltext\leveltemplateid67698713\'02\'04.;}{\levelnumbers\'01;}\rtlch\fcs1 \af0 \ltrch\fcs0 \hres0\chhres0 \fi-360\li3600\jclisttab\tx3600\lin3600 } +{\listlevel\levelnfc2\levelnfcn2\leveljc2\leveljcn2\levelfollow0\levelstartat1\levelspace360\levelindent0{\leveltext\leveltemplateid67698715\'02\'05.;}{\levelnumbers\'01;}\rtlch\fcs1 \af0 \ltrch\fcs0 \hres0\chhres0 \fi-180\li4320\jclisttab\tx4320\lin4320 +}{\listlevel\levelnfc0\levelnfcn0\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace360\levelindent0{\leveltext\leveltemplateid67698703\'02\'06.;}{\levelnumbers\'01;}\rtlch\fcs1 \af0 \ltrch\fcs0 \hres0\chhres0 \fi-360\li5040 +\jclisttab\tx5040\lin5040 }{\listlevel\levelnfc4\levelnfcn4\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace360\levelindent0{\leveltext\leveltemplateid67698713\'02\'07.;}{\levelnumbers\'01;}\rtlch\fcs1 \af0 \ltrch\fcs0 \hres0\chhres0 +\fi-360\li5760\jclisttab\tx5760\lin5760 }{\listlevel\levelnfc2\levelnfcn2\leveljc2\leveljcn2\levelfollow0\levelstartat1\levelspace360\levelindent0{\leveltext\leveltemplateid67698715\'02\'08.;}{\levelnumbers\'01;}\rtlch\fcs1 \af0 \ltrch\fcs0 +\hres0\chhres0 \fi-180\li6480\jclisttab\tx6480\lin6480 }{\listname ;}\listid1123961876}}{\*\listoverridetable{\listoverride\listid1123961876\listoverridecount0\ls1}}{\*\rsidtbl \rsid397295\rsid799859\rsid8072280\rsid8993829\rsid9001816\rsid13269757 +\rsid13636981}{\mmathPr\mmathFont34\mbrkBin0\mbrkBinSub0\msmallFrac0\mdispDef1\mlMargin0\mrMargin0\mdefJc1\mwrapIndent1440\mintLim0\mnaryLim1}{\info{\title Gardens Point Component Pascal Copyright}{\author gough}{\operator john} +{\creatim\yr2005\mo2\dy15\hr17\min18}{\revtim\yr2014\mo8\dy24\hr8\min57}{\version8}{\edmins11}{\nofpages1}{\nofwords268}{\nofchars1481}{\*\company Faculty of Information Technology}{\nofcharsws1746}{\vern32774}}{\*\xmlnstbl {\xmlns1 http://schemas.microso +ft.com/office/word/2003/wordml}}\paperw12240\paperh15840\margl1800\margr1800\margt1440\margb1440\gutter0\ltrsect +\widowctrl\ftnbj\aenddoc\trackmoves1\trackformatting1\donotembedsysfont0\relyonvml0\donotembedlingdata1\grfdocevents0\validatexml0\showplaceholdtext0\ignoremixedcontent0\saveinvalidxml0\showxmlerrors0\noxlattoyen +\expshrtn\noultrlspc\dntblnsbdb\nospaceforul\hyphcaps0\formshade\horzdoc\dgmargin\dghspace180\dgvspace180\dghorigin1800\dgvorigin1440\dghshow1\dgvshow1 +\jexpand\viewkind1\viewscale117\viewzk2\pgbrdrhead\pgbrdrfoot\splytwnine\ftnlytwnine\htmautsp\nolnhtadjtbl\useltbaln\alntblind\lytcalctblwd\lyttblrtgr\lnbrkrule\rsidroot9001816 \fet0{\*\wgrffmtfilter 013f}\ilfomacatclnup0\ltrpar \sectd \ltrsect +\linex0\endnhere\sectlinegrid360\sectdefaultcl\sftnbj {\*\pnseclvl1\pnucrm\pnstart1\pnindent720\pnhang {\pntxta .}}{\*\pnseclvl2\pnucltr\pnstart1\pnindent720\pnhang {\pntxta .}}{\*\pnseclvl3\pndec\pnstart1\pnindent720\pnhang {\pntxta .}}{\*\pnseclvl4 +\pnlcltr\pnstart1\pnindent720\pnhang {\pntxta )}}{\*\pnseclvl5\pndec\pnstart1\pnindent720\pnhang {\pntxtb (}{\pntxta )}}{\*\pnseclvl6\pnlcltr\pnstart1\pnindent720\pnhang {\pntxtb (}{\pntxta )}}{\*\pnseclvl7\pnlcrm\pnstart1\pnindent720\pnhang {\pntxtb (} +{\pntxta )}}{\*\pnseclvl8\pnlcltr\pnstart1\pnindent720\pnhang {\pntxtb (}{\pntxta )}}{\*\pnseclvl9\pnlcrm\pnstart1\pnindent720\pnhang {\pntxtb (}{\pntxta )}}\pard\plain \ltrpar +\s1\ql \li0\ri0\sb240\sa60\keepn\widctlpar\wrapdefault\aspalpha\aspnum\faauto\outlinelevel0\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \ab\af1\afs32\alang1025 \ltrch\fcs0 \b\f1\fs32\lang1033\langfe1033\kerning32\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 +\af1 \ltrch\fcs0 \insrsid397295 Gardens Point }{\rtlch\fcs1 \af1 \ltrch\fcs0 \insrsid13269757 LEX}{\rtlch\fcs1 \af1 \ltrch\fcs0 \insrsid9001816 Copyright +\par }\pard\plain \ltrpar\ql \li0\ri0\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs24\alang1025 \ltrch\fcs0 \fs24\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid9001816 + +\par }{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid397295 Copyright}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid13269757 \'a9}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid397295 }{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid13269757 2006}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid8993829 +-2014}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid9001816 Queensland University of Technology (QUT). All rights reserved. +\par +\par Redistribution and use in source and binary forms, with or without modification are permitted provided that the following conditions are met: +\par +\par {\listtext\pard\plain\ltrpar \rtlch\fcs1 \af0 \ltrch\fcs0 \lang1033\langfe1033\langnp1033\langfenp1033\insrsid9001816 \hich\af0\dbch\af0\loch\f0 1.\tab}}\pard \ltrpar\ql \fi-360\li720\ri0\widctlpar +\jclisttab\tx720\wrapdefault\aspalpha\aspnum\faauto\ls1\adjustright\rin0\lin720\itap0 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid9001816 Redistribution of source code must retain the above copyright notice, this list of conditions and the following disclaimer. + +\par {\listtext\pard\plain\ltrpar \rtlch\fcs1 \af0 \ltrch\fcs0 \lang1033\langfe1033\langnp1033\langfenp1033\insrsid9001816 \hich\af0\dbch\af0\loch\f0 2.\tab} +Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials with the distribution. +\par }\pard \ltrpar\ql \li0\ri0\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid9001816 +\par THIS }{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid397295 SOFTWARE IS PROVIDED BY THE }{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid13269757 GPLEX}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid9001816 PROJECT \'93AS IS\rquote + AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE HEREBY DISCLA}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid397295 IMED. IN NO EVENT SHALL THE GPPG}{ +\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid9001816 + PROJECT OR QUT BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTI +ON) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +\par +\par The views and conclusions contained in the software and documentation are those of the authors and should not be interpreted as representing official policies, either e}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid397295 xpressed or implied, of the }{ +\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid13269757 GPLEX}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid9001816 project or QUT. +\par }{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid8993829 +\par Explanatory note: the source code of GPLEX is copyright, as stated above. The }{\rtlch\fcs1 \af0 \ltrch\fcs0 \i\insrsid8993829\charrsid8993829 outputs}{\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid8993829 produced by running GPLEX over + lexical specifications are the property of the specification owner and QUT makes no claim on such outputs. +\par }{\*\themedata 504b030414000600080000002100828abc13fa0000001c020000130000005b436f6e74656e745f54797065735d2e786d6cac91cb6ac3301045f785fe83d0b6d8 +72ba28a5d8cea249777d2cd20f18e4b12d6a8f843409c9df77ecb850ba082d74231062ce997b55ae8fe3a00e1893f354e9555e6885647de3a8abf4fbee29bbd7 +2a3150038327acf409935ed7d757e5ee14302999a654e99e393c18936c8f23a4dc072479697d1c81e51a3b13c07e4087e6b628ee8cf5c4489cf1c4d075f92a0b +44d7a07a83c82f308ac7b0a0f0fbf90c2480980b58abc733615aa2d210c2e02cb04430076a7ee833dfb6ce62e3ed7e14693e8317d8cd0433bf5c60f53fea2fe7 +065bd80facb647e9e25c7fc421fd2ddb526b2e9373fed4bb902e182e97b7b461e6bfad3f010000ffff0300504b030414000600080000002100a5d6a7e7c00000 +00360100000b0000005f72656c732f2e72656c73848fcf6ac3300c87ef85bd83d17d51d2c31825762fa590432fa37d00e1287f68221bdb1bebdb4fc7060abb08 +84a4eff7a93dfeae8bf9e194e720169aaa06c3e2433fcb68e1763dbf7f82c985a4a725085b787086a37bdbb55fbc50d1a33ccd311ba548b63095120f88d94fbc +52ae4264d1c910d24a45db3462247fa791715fd71f989e19e0364cd3f51652d73760ae8fa8c9ffb3c330cc9e4fc17faf2ce545046e37944c69e462a1a82fe353 +bd90a865aad41ed0b5b8f9d6fd010000ffff0300504b0304140006000800000021006b799616830000008a0000001c0000007468656d652f7468656d652f7468 +656d654d616e616765722e786d6c0ccc4d0ac3201040e17da17790d93763bb284562b2cbaebbf600439c1a41c7a0d29fdbd7e5e38337cedf14d59b4b0d592c9c +070d8a65cd2e88b7f07c2ca71ba8da481cc52c6ce1c715e6e97818c9b48d13df49c873517d23d59085adb5dd20d6b52bd521ef2cdd5eb9246a3d8b4757e8d3f7 +29e245eb2b260a0238fd010000ffff0300504b03041400060008000000210096b5ade296060000501b0000160000007468656d652f7468656d652f7468656d65 +312e786d6cec594f6fdb3614bf0fd87720746f6327761a07758ad8b19b2d4d1bc46e871e698996d850a240d2497d1bdae38001c3ba618715d86d87615b8116d8 +a5fb34d93a6c1dd0afb0475292c5585e9236d88aad3e2412f9e3fbff1e1fa9abd7eec70c1d1221294fda5efd72cd4324f1794093b0eddd1ef62fad79482a9c04 +98f184b4bd2991deb58df7dfbb8ad755446282607d22d771db8b944ad79796a40fc3585ee62949606ecc458c15bc8a702910f808e8c66c69b9565b5d8a314d3c +94e018c8de1a8fa94fd05093f43672e23d06af89927ac06762a049136785c10607758d9053d965021d62d6f6804fc08f86e4bef210c352c144dbab999fb7b471 +7509af678b985ab0b6b4ae6f7ed9ba6c4170b06c788a705430adf71bad2b5b057d03606a1ed7ebf5babd7a41cf00b0ef83a6569632cd467faddec9699640f671 +9e76b7d6ac355c7c89feca9cccad4ea7d36c65b258a206641f1b73f8b5da6a6373d9c11b90c537e7f08dce66b7bbeae00dc8e257e7f0fd2badd5868b37a088d1 +e4600ead1ddaef67d40bc898b3ed4af81ac0d76a197c86826828a24bb318f3442d8ab518dfe3a20f000d6458d104a9694ac6d88728eee2782428d60cf03ac1a5 +193be4cbb921cd0b495fd054b5bd0f530c1931a3f7eaf9f7af9e3f45c70f9e1d3ff8e9f8e1c3e3073f5a42ceaa6d9c84e5552fbffdeccfc71fa33f9e7ef3f2d1 +17d57859c6fffac327bffcfc793510d26726ce8b2f9ffcf6ecc98baf3efdfdbb4715f04d814765f890c644a29be408edf3181433567125272371be15c308d3f2 +8acd249438c19a4b05fd9e8a1cf4cd296699771c393ac4b5e01d01e5a30a787d72cf1178108989a2159c77a2d801ee72ce3a5c545a6147f32a99793849c26ae6 +6252c6ed637c58c5bb8b13c7bfbd490a75330f4b47f16e441c31f7184e140e494214d273fc80900aedee52ead87597fa824b3e56e82e451d4c2b4d32a423279a +668bb6690c7e9956e90cfe766cb37b077538abd27a8b1cba48c80acc2a841f12e698f13a9e281c57911ce298950d7e03aba84ac8c154f8655c4f2af074481847 +bd804859b5e696007d4b4edfc150b12addbecba6b18b148a1e54d1bc81392f23b7f84137c2715a851dd0242a633f900710a218ed715505dfe56e86e877f0034e +16bafb0e258ebb4faf06b769e888340b103d3311da9750aa9d0a1cd3e4efca31a3508f6d0c5c5c398602f8e2ebc71591f5b616e24dd893aa3261fb44f95d843b +5974bb5c04f4edafb95b7892ec1108f3f98de75dc97d5772bdff7cc95d94cf672db4b3da0a6557f70db629362d72bcb0431e53c6066acac80d699a6409fb44d0 +8741bdce9c0e4971624a2378cceaba830b05366b90e0ea23aaa241845368b0eb9e2612ca8c742851ca251ceccc70256d8d87265dd96361531f186c3d9058edf2 +c00eafe8e1fc5c509031bb4d680e9f39a3154de0accc56ae644441edd76156d7429d995bdd88664a9dc3ad50197c38af1a0c16d684060441db02565e85f3b966 +0d0713cc48a0ed6ef7dedc2dc60b17e92219e180643ed27acffba86e9c94c78ab90980d8a9f0913ee49d62b512b79626fb06dccee2a432bbc60276b9f7dec44b +7904cfbca4f3f6443ab2a49c9c2c41476dafd55c6e7ac8c769db1bc399161ee314bc2e75cf8759081743be1236ec4f4d6693e5336fb672c5dc24a8c33585b5fb +9cc24e1d4885545b58463634cc5416022cd19cacfccb4d30eb45296023fd35a458598360f8d7a4003bbaae25e331f155d9d9a5116d3bfb9a95523e51440ca2e0 +088dd844ec6370bf0e55d027a012ae264c45d02f708fa6ad6da6dce29c255df9f6cae0ec38666984b372ab5334cf640b37795cc860de4ae2816e95b21be5ceaf +8a49f90b52a51cc6ff3355f47e0237052b81f6800fd7b802239daf6d8f0b1571a8426944fdbe80c6c1d40e8816b88b8569082ab84c36ff0539d4ff6dce591a26 +ade1c0a7f669880485fd484582903d284b26fa4e2156cff62e4b9265844c4495c495a9157b440e091bea1ab8aaf7760f4510eaa69a6465c0e04ec69ffb9e65d0 +28d44d4e39df9c1a52ecbd3607fee9cec7263328e5d661d3d0e4f62f44acd855ed7ab33cdf7bcb8ae889599bd5c8b3029895b6825696f6af29c239b75a5bb1e6 +345e6ee6c28117e73586c1a2214ae1be07e93fb0ff51e133fb65426fa843be0fb515c187064d0cc206a2fa926d3c902e907670048d931db4c1a44959d366ad93 +b65abe595f70a75bf03d616c2dd959fc7d4e6317cd99cbcec9c58b34766661c7d6766ca1a9c1b327531486c6f941c638c67cd22a7f75e2a37be0e82db8df9f30 +254d30c1372581a1f51c983c80e4b71ccdd28dbf000000ffff0300504b0304140006000800000021000dd1909fb60000001b010000270000007468656d652f74 +68656d652f5f72656c732f7468656d654d616e616765722e786d6c2e72656c73848f4d0ac2301484f78277086f6fd3ba109126dd88d0add40384e4350d363f24 +51eced0dae2c082e8761be9969bb979dc9136332de3168aa1a083ae995719ac16db8ec8e4052164e89d93b64b060828e6f37ed1567914b284d262452282e3198 +720e274a939cd08a54f980ae38a38f56e422a3a641c8bbd048f7757da0f19b017cc524bd62107bd5001996509affb3fd381a89672f1f165dfe514173d9850528 +a2c6cce0239baa4c04ca5bbabac4df000000ffff0300504b01022d0014000600080000002100828abc13fa0000001c0200001300000000000000000000000000 +000000005b436f6e74656e745f54797065735d2e786d6c504b01022d0014000600080000002100a5d6a7e7c0000000360100000b000000000000000000000000 +002b0100005f72656c732f2e72656c73504b01022d00140006000800000021006b799616830000008a0000001c00000000000000000000000000140200007468 +656d652f7468656d652f7468656d654d616e616765722e786d6c504b01022d001400060008000000210096b5ade296060000501b000016000000000000000000 +00000000d10200007468656d652f7468656d652f7468656d65312e786d6c504b01022d00140006000800000021000dd1909fb60000001b010000270000000000 +00000000000000009b0900007468656d652f7468656d652f5f72656c732f7468656d654d616e616765722e786d6c2e72656c73504b050600000000050005005d010000960a00000000} +{\*\colorschememapping 3c3f786d6c2076657273696f6e3d22312e302220656e636f64696e673d225554462d3822207374616e64616c6f6e653d22796573223f3e0d0a3c613a636c724d +617020786d6c6e733a613d22687474703a2f2f736368656d61732e6f70656e786d6c666f726d6174732e6f72672f64726177696e676d6c2f323030362f6d6169 +6e22206267313d226c743122207478313d22646b3122206267323d226c743222207478323d22646b322220616363656e74313d22616363656e74312220616363 +656e74323d22616363656e74322220616363656e74333d22616363656e74332220616363656e74343d22616363656e74342220616363656e74353d22616363656e74352220616363656e74363d22616363656e74362220686c696e6b3d22686c696e6b2220666f6c486c696e6b3d22666f6c486c696e6b222f3e} +{\*\latentstyles\lsdstimax267\lsdlockeddef0\lsdsemihiddendef1\lsdunhideuseddef1\lsdqformatdef0\lsdprioritydef99{\lsdlockedexcept \lsdsemihidden0 \lsdunhideused0 \lsdqformat1 \lsdpriority0 \lsdlocked0 Normal; +\lsdsemihidden0 \lsdunhideused0 \lsdqformat1 \lsdlocked0 heading 1;\lsdqformat1 \lsdpriority9 \lsdlocked0 heading 2;\lsdqformat1 \lsdpriority9 \lsdlocked0 heading 3;\lsdqformat1 \lsdpriority9 \lsdlocked0 heading 4; +\lsdqformat1 \lsdpriority9 \lsdlocked0 heading 5;\lsdqformat1 \lsdpriority9 \lsdlocked0 heading 6;\lsdqformat1 \lsdpriority9 \lsdlocked0 heading 7;\lsdqformat1 \lsdpriority9 \lsdlocked0 heading 8;\lsdqformat1 \lsdpriority9 \lsdlocked0 heading 9; +\lsdpriority39 \lsdlocked0 toc 1;\lsdpriority39 \lsdlocked0 toc 2;\lsdpriority39 \lsdlocked0 toc 3;\lsdpriority39 \lsdlocked0 toc 4;\lsdpriority39 \lsdlocked0 toc 5;\lsdpriority39 \lsdlocked0 toc 6;\lsdpriority39 \lsdlocked0 toc 7; +\lsdpriority39 \lsdlocked0 toc 8;\lsdpriority39 \lsdlocked0 toc 9;\lsdqformat1 \lsdpriority35 \lsdlocked0 caption;\lsdsemihidden0 \lsdunhideused0 \lsdqformat1 \lsdpriority10 \lsdlocked0 Title;\lsdunhideused0 \lsdlocked0 Default Paragraph Font; +\lsdsemihidden0 \lsdunhideused0 \lsdqformat1 \lsdpriority11 \lsdlocked0 Subtitle;\lsdsemihidden0 \lsdunhideused0 \lsdqformat1 \lsdpriority22 \lsdlocked0 Strong;\lsdsemihidden0 \lsdunhideused0 \lsdqformat1 \lsdpriority20 \lsdlocked0 Emphasis; +\lsdsemihidden0 \lsdunhideused0 \lsdpriority59 \lsdlocked0 Table Grid;\lsdunhideused0 \lsdlocked0 Placeholder Text;\lsdsemihidden0 \lsdunhideused0 \lsdqformat1 \lsdpriority1 \lsdlocked0 No Spacing; +\lsdsemihidden0 \lsdunhideused0 \lsdpriority60 \lsdlocked0 Light Shading;\lsdsemihidden0 \lsdunhideused0 \lsdpriority61 \lsdlocked0 Light List;\lsdsemihidden0 \lsdunhideused0 \lsdpriority62 \lsdlocked0 Light Grid; +\lsdsemihidden0 \lsdunhideused0 \lsdpriority63 \lsdlocked0 Medium Shading 1;\lsdsemihidden0 \lsdunhideused0 \lsdpriority64 \lsdlocked0 Medium Shading 2;\lsdsemihidden0 \lsdunhideused0 \lsdpriority65 \lsdlocked0 Medium List 1; +\lsdsemihidden0 \lsdunhideused0 \lsdpriority66 \lsdlocked0 Medium List 2;\lsdsemihidden0 \lsdunhideused0 \lsdpriority67 \lsdlocked0 Medium Grid 1;\lsdsemihidden0 \lsdunhideused0 \lsdpriority68 \lsdlocked0 Medium Grid 2; +\lsdsemihidden0 \lsdunhideused0 \lsdpriority69 \lsdlocked0 Medium Grid 3;\lsdsemihidden0 \lsdunhideused0 \lsdpriority70 \lsdlocked0 Dark List;\lsdsemihidden0 \lsdunhideused0 \lsdpriority71 \lsdlocked0 Colorful Shading; +\lsdsemihidden0 \lsdunhideused0 \lsdpriority72 \lsdlocked0 Colorful List;\lsdsemihidden0 \lsdunhideused0 \lsdpriority73 \lsdlocked0 Colorful Grid;\lsdsemihidden0 \lsdunhideused0 \lsdpriority60 \lsdlocked0 Light Shading Accent 1; +\lsdsemihidden0 \lsdunhideused0 \lsdpriority61 \lsdlocked0 Light List Accent 1;\lsdsemihidden0 \lsdunhideused0 \lsdpriority62 \lsdlocked0 Light Grid Accent 1;\lsdsemihidden0 \lsdunhideused0 \lsdpriority63 \lsdlocked0 Medium Shading 1 Accent 1; +\lsdsemihidden0 \lsdunhideused0 \lsdpriority64 \lsdlocked0 Medium Shading 2 Accent 1;\lsdsemihidden0 \lsdunhideused0 \lsdpriority65 \lsdlocked0 Medium List 1 Accent 1;\lsdunhideused0 \lsdlocked0 Revision; +\lsdsemihidden0 \lsdunhideused0 \lsdqformat1 \lsdpriority34 \lsdlocked0 List Paragraph;\lsdsemihidden0 \lsdunhideused0 \lsdqformat1 \lsdpriority29 \lsdlocked0 Quote;\lsdsemihidden0 \lsdunhideused0 \lsdqformat1 \lsdpriority30 \lsdlocked0 Intense Quote; +\lsdsemihidden0 \lsdunhideused0 \lsdpriority66 \lsdlocked0 Medium List 2 Accent 1;\lsdsemihidden0 \lsdunhideused0 \lsdpriority67 \lsdlocked0 Medium Grid 1 Accent 1;\lsdsemihidden0 \lsdunhideused0 \lsdpriority68 \lsdlocked0 Medium Grid 2 Accent 1; +\lsdsemihidden0 \lsdunhideused0 \lsdpriority69 \lsdlocked0 Medium Grid 3 Accent 1;\lsdsemihidden0 \lsdunhideused0 \lsdpriority70 \lsdlocked0 Dark List Accent 1;\lsdsemihidden0 \lsdunhideused0 \lsdpriority71 \lsdlocked0 Colorful Shading Accent 1; +\lsdsemihidden0 \lsdunhideused0 \lsdpriority72 \lsdlocked0 Colorful List Accent 1;\lsdsemihidden0 \lsdunhideused0 \lsdpriority73 \lsdlocked0 Colorful Grid Accent 1;\lsdsemihidden0 \lsdunhideused0 \lsdpriority60 \lsdlocked0 Light Shading Accent 2; +\lsdsemihidden0 \lsdunhideused0 \lsdpriority61 \lsdlocked0 Light List Accent 2;\lsdsemihidden0 \lsdunhideused0 \lsdpriority62 \lsdlocked0 Light Grid Accent 2;\lsdsemihidden0 \lsdunhideused0 \lsdpriority63 \lsdlocked0 Medium Shading 1 Accent 2; +\lsdsemihidden0 \lsdunhideused0 \lsdpriority64 \lsdlocked0 Medium Shading 2 Accent 2;\lsdsemihidden0 \lsdunhideused0 \lsdpriority65 \lsdlocked0 Medium List 1 Accent 2;\lsdsemihidden0 \lsdunhideused0 \lsdpriority66 \lsdlocked0 Medium List 2 Accent 2; +\lsdsemihidden0 \lsdunhideused0 \lsdpriority67 \lsdlocked0 Medium Grid 1 Accent 2;\lsdsemihidden0 \lsdunhideused0 \lsdpriority68 \lsdlocked0 Medium Grid 2 Accent 2;\lsdsemihidden0 \lsdunhideused0 \lsdpriority69 \lsdlocked0 Medium Grid 3 Accent 2; +\lsdsemihidden0 \lsdunhideused0 \lsdpriority70 \lsdlocked0 Dark List Accent 2;\lsdsemihidden0 \lsdunhideused0 \lsdpriority71 \lsdlocked0 Colorful Shading Accent 2;\lsdsemihidden0 \lsdunhideused0 \lsdpriority72 \lsdlocked0 Colorful List Accent 2; +\lsdsemihidden0 \lsdunhideused0 \lsdpriority73 \lsdlocked0 Colorful Grid Accent 2;\lsdsemihidden0 \lsdunhideused0 \lsdpriority60 \lsdlocked0 Light Shading Accent 3;\lsdsemihidden0 \lsdunhideused0 \lsdpriority61 \lsdlocked0 Light List Accent 3; +\lsdsemihidden0 \lsdunhideused0 \lsdpriority62 \lsdlocked0 Light Grid Accent 3;\lsdsemihidden0 \lsdunhideused0 \lsdpriority63 \lsdlocked0 Medium Shading 1 Accent 3;\lsdsemihidden0 \lsdunhideused0 \lsdpriority64 \lsdlocked0 Medium Shading 2 Accent 3; +\lsdsemihidden0 \lsdunhideused0 \lsdpriority65 \lsdlocked0 Medium List 1 Accent 3;\lsdsemihidden0 \lsdunhideused0 \lsdpriority66 \lsdlocked0 Medium List 2 Accent 3;\lsdsemihidden0 \lsdunhideused0 \lsdpriority67 \lsdlocked0 Medium Grid 1 Accent 3; +\lsdsemihidden0 \lsdunhideused0 \lsdpriority68 \lsdlocked0 Medium Grid 2 Accent 3;\lsdsemihidden0 \lsdunhideused0 \lsdpriority69 \lsdlocked0 Medium Grid 3 Accent 3;\lsdsemihidden0 \lsdunhideused0 \lsdpriority70 \lsdlocked0 Dark List Accent 3; +\lsdsemihidden0 \lsdunhideused0 \lsdpriority71 \lsdlocked0 Colorful Shading Accent 3;\lsdsemihidden0 \lsdunhideused0 \lsdpriority72 \lsdlocked0 Colorful List Accent 3;\lsdsemihidden0 \lsdunhideused0 \lsdpriority73 \lsdlocked0 Colorful Grid Accent 3; +\lsdsemihidden0 \lsdunhideused0 \lsdpriority60 \lsdlocked0 Light Shading Accent 4;\lsdsemihidden0 \lsdunhideused0 \lsdpriority61 \lsdlocked0 Light List Accent 4;\lsdsemihidden0 \lsdunhideused0 \lsdpriority62 \lsdlocked0 Light Grid Accent 4; +\lsdsemihidden0 \lsdunhideused0 \lsdpriority63 \lsdlocked0 Medium Shading 1 Accent 4;\lsdsemihidden0 \lsdunhideused0 \lsdpriority64 \lsdlocked0 Medium Shading 2 Accent 4;\lsdsemihidden0 \lsdunhideused0 \lsdpriority65 \lsdlocked0 Medium List 1 Accent 4; +\lsdsemihidden0 \lsdunhideused0 \lsdpriority66 \lsdlocked0 Medium List 2 Accent 4;\lsdsemihidden0 \lsdunhideused0 \lsdpriority67 \lsdlocked0 Medium Grid 1 Accent 4;\lsdsemihidden0 \lsdunhideused0 \lsdpriority68 \lsdlocked0 Medium Grid 2 Accent 4; +\lsdsemihidden0 \lsdunhideused0 \lsdpriority69 \lsdlocked0 Medium Grid 3 Accent 4;\lsdsemihidden0 \lsdunhideused0 \lsdpriority70 \lsdlocked0 Dark List Accent 4;\lsdsemihidden0 \lsdunhideused0 \lsdpriority71 \lsdlocked0 Colorful Shading Accent 4; +\lsdsemihidden0 \lsdunhideused0 \lsdpriority72 \lsdlocked0 Colorful List Accent 4;\lsdsemihidden0 \lsdunhideused0 \lsdpriority73 \lsdlocked0 Colorful Grid Accent 4;\lsdsemihidden0 \lsdunhideused0 \lsdpriority60 \lsdlocked0 Light Shading Accent 5; +\lsdsemihidden0 \lsdunhideused0 \lsdpriority61 \lsdlocked0 Light List Accent 5;\lsdsemihidden0 \lsdunhideused0 \lsdpriority62 \lsdlocked0 Light Grid Accent 5;\lsdsemihidden0 \lsdunhideused0 \lsdpriority63 \lsdlocked0 Medium Shading 1 Accent 5; +\lsdsemihidden0 \lsdunhideused0 \lsdpriority64 \lsdlocked0 Medium Shading 2 Accent 5;\lsdsemihidden0 \lsdunhideused0 \lsdpriority65 \lsdlocked0 Medium List 1 Accent 5;\lsdsemihidden0 \lsdunhideused0 \lsdpriority66 \lsdlocked0 Medium List 2 Accent 5; +\lsdsemihidden0 \lsdunhideused0 \lsdpriority67 \lsdlocked0 Medium Grid 1 Accent 5;\lsdsemihidden0 \lsdunhideused0 \lsdpriority68 \lsdlocked0 Medium Grid 2 Accent 5;\lsdsemihidden0 \lsdunhideused0 \lsdpriority69 \lsdlocked0 Medium Grid 3 Accent 5; +\lsdsemihidden0 \lsdunhideused0 \lsdpriority70 \lsdlocked0 Dark List Accent 5;\lsdsemihidden0 \lsdunhideused0 \lsdpriority71 \lsdlocked0 Colorful Shading Accent 5;\lsdsemihidden0 \lsdunhideused0 \lsdpriority72 \lsdlocked0 Colorful List Accent 5; +\lsdsemihidden0 \lsdunhideused0 \lsdpriority73 \lsdlocked0 Colorful Grid Accent 5;\lsdsemihidden0 \lsdunhideused0 \lsdpriority60 \lsdlocked0 Light Shading Accent 6;\lsdsemihidden0 \lsdunhideused0 \lsdpriority61 \lsdlocked0 Light List Accent 6; +\lsdsemihidden0 \lsdunhideused0 \lsdpriority62 \lsdlocked0 Light Grid Accent 6;\lsdsemihidden0 \lsdunhideused0 \lsdpriority63 \lsdlocked0 Medium Shading 1 Accent 6;\lsdsemihidden0 \lsdunhideused0 \lsdpriority64 \lsdlocked0 Medium Shading 2 Accent 6; +\lsdsemihidden0 \lsdunhideused0 \lsdpriority65 \lsdlocked0 Medium List 1 Accent 6;\lsdsemihidden0 \lsdunhideused0 \lsdpriority66 \lsdlocked0 Medium List 2 Accent 6;\lsdsemihidden0 \lsdunhideused0 \lsdpriority67 \lsdlocked0 Medium Grid 1 Accent 6; +\lsdsemihidden0 \lsdunhideused0 \lsdpriority68 \lsdlocked0 Medium Grid 2 Accent 6;\lsdsemihidden0 \lsdunhideused0 \lsdpriority69 \lsdlocked0 Medium Grid 3 Accent 6;\lsdsemihidden0 \lsdunhideused0 \lsdpriority70 \lsdlocked0 Dark List Accent 6; +\lsdsemihidden0 \lsdunhideused0 \lsdpriority71 \lsdlocked0 Colorful Shading Accent 6;\lsdsemihidden0 \lsdunhideused0 \lsdpriority72 \lsdlocked0 Colorful List Accent 6;\lsdsemihidden0 \lsdunhideused0 \lsdpriority73 \lsdlocked0 Colorful Grid Accent 6; +\lsdsemihidden0 \lsdunhideused0 \lsdqformat1 \lsdpriority19 \lsdlocked0 Subtle Emphasis;\lsdsemihidden0 \lsdunhideused0 \lsdqformat1 \lsdpriority21 \lsdlocked0 Intense Emphasis; +\lsdsemihidden0 \lsdunhideused0 \lsdqformat1 \lsdpriority31 \lsdlocked0 Subtle Reference;\lsdsemihidden0 \lsdunhideused0 \lsdqformat1 \lsdpriority32 \lsdlocked0 Intense Reference; +\lsdsemihidden0 \lsdunhideused0 \lsdqformat1 \lsdpriority33 \lsdlocked0 Book Title;\lsdpriority37 \lsdlocked0 Bibliography;\lsdqformat1 \lsdpriority39 \lsdlocked0 TOC Heading;}}{\*\datastore 010500000200000018000000 +4d73786d6c322e534158584d4c5265616465722e352e3000000000000000000000060000 +d0cf11e0a1b11ae1000000000000000000000000000000003e000300feff090006000000000000000000000001000000010000000000000000100000feffffff00000000feffffff0000000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffdfffffffeffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffff52006f006f007400200045006e00740072007900000000000000000000000000000000000000000000000000000000000000000000000000000000000000000016000500ffffffffffffffffffffffffec69d9888b8b3d4c859eaf6cd158be0f000000000000000000000000f0e4 +c19925bfcf01feffffff00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000ffffffffffffffffffffffff00000000000000000000000000000000000000000000000000000000 +00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000ffffffffffffffffffffffff0000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000ffffffffffffffffffffffff000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000105000000000000}} \ No newline at end of file diff --git a/Xbim.Common/Step21/Parser/GplexBuffers.cs b/Xbim.Common/Step21/Parser/GplexBuffers.cs new file mode 100644 index 000000000..b8f21c2e3 --- /dev/null +++ b/Xbim.Common/Step21/Parser/GplexBuffers.cs @@ -0,0 +1,727 @@ +// ============================================================== +// +// This code automatically produced from an embedded resource. +// Do not edit this file, or it will become incompatible with +// the specification from which it was generated. +// +// ============================================================== + +// This file belongs to GPLEX but has been manually edited to incorporate edits from Step21Lex.cs in +// https://github.com/xBimTeam/XbimEssentials/commit/6517bc16042b3cfd820dd7eb45f72bbab92d13ad +// e.g. Pos is now long rather than int to support files > 2GB +// This file should not be checked in on regeneration of the Scanner/Parser +// In the event we upgrade gplex it will require updating. +// See Readme.md for more info + +using System; +using System.IO; +using System.Text; +using System.Collections.Generic; +using System.Diagnostics.CodeAnalysis; +using System.Runtime.Serialization; +using System.Globalization; + +namespace QUT.GplexBuffers +{ +// Code copied from GPLEX embedded resource + [Serializable] + public class BufferException : Exception + { + public BufferException() { } + public BufferException(string message) : base(message) { } + public BufferException(string message, Exception innerException) + : base(message, innerException) { } + } + + public abstract class ScanBuff + { + private string fileNm; + + public const int EndOfFile = -1; + public const int UnicodeReplacementChar = 0xFFFD; + + public bool IsFile { get { return (fileNm != null); } } + public string FileName { get { return fileNm; } set { fileNm = value; } } + + public abstract long Pos { get; set; } + public abstract int Read(); + public virtual void Mark() { } + + public abstract string GetString(long begin, long limit); + + public static ScanBuff GetBuffer(string source) + { + return new StringBuffer(source); + } + + public static ScanBuff GetBuffer(IList source) + { + return new LineBuffer(source); + } + +#if (!NOFILES) + public static ScanBuff GetBuffer(Stream source) + { + return new BuildBuffer(source); + } + +#if (!BYTEMODE) + public static ScanBuff GetBuffer(Stream source, int fallbackCodePage) + { + return new BuildBuffer(source, fallbackCodePage); + } +#endif // !BYTEMODE +#endif // !NOFILES + } + + #region Buffer classes + + // ============================================================== + // ===== Definitions for various ScanBuff derived classes ==== + // ============================================================== + // =============== String input ================ + // ============================================================== + + /// + /// This class reads characters from a single string as + /// required, for example, by Visual Studio language services + /// + sealed class StringBuffer : ScanBuff + { + string str; // input buffer + long bPos; // current position in buffer + int sLen; + + public StringBuffer(string source) + { + this.str = source; + this.sLen = source.Length; + this.FileName = null; + } + + public override int Read() + { + if (bPos < sLen) return str[(int)bPos++]; + else if (bPos == sLen) { bPos++; return '\n'; } // one strike, see new line + else { bPos++; return EndOfFile; } // two strikes and you're out! + } + + public override string GetString(long begin, long limit) + { + // "limit" can be greater than sLen with the BABEL + // option set. Read returns a "virtual" EOL if + // an attempt is made to read past the end of the + // string buffer. Without the guard any attempt + // to fetch yytext for a token that includes the + // EOL will throw an index exception. + if (limit > sLen) limit = sLen; + if (limit <= begin) return ""; + else return str.Substring((int)begin, (int)(limit - begin)); + } + + public override long Pos + { + get { return bPos; } + set { bPos = value; } + } + + public override string ToString() { return "StringBuffer"; } + } + + // ============================================================== + // The LineBuff class contributed by Nigel Horspool, + // nigelh@cs.uvic.cs + // ============================================================== + + sealed class LineBuffer : ScanBuff + { + IList line; // list of source lines from a file + int numLines; // number of strings in line list + string curLine; // current line in that list + int cLine; // index of current line in the list + int curLen; // length of current line + long curLineStart; // position of line start in whole file + long curLineEnd; // position of line end in whole file + long maxPos; // max position ever visited in whole file + long cPos; // ordinal number of code in source + + // Constructed from a list of strings, one per source line. + // The lines have had trailing '\n' characters removed. + public LineBuffer(IList lineList) + { + line = lineList; + numLines = line.Count; + cPos = curLineStart = 0; + curLine = (numLines > 0 ? line[0] : ""); + maxPos = curLineEnd = curLen = curLine.Length; + cLine = 1; + FileName = null; + } + + public override int Read() + { + if (cPos < curLineEnd) + return curLine[(int)(cPos++ - curLineStart)]; + if (cPos++ == curLineEnd) + return '\n'; + if (cLine >= numLines) + return EndOfFile; + curLine = line[cLine]; + curLen = curLine.Length; + curLineStart = curLineEnd + 1; + curLineEnd = curLineStart + curLen; + if (curLineEnd > maxPos) + maxPos = curLineEnd; + cLine++; + return curLen > 0 ? curLine[0] : '\n'; + } + + // To speed up searches for the line containing a position + private long cachedPosition; + private long cachedLineStart; + private int cachedIxdex; + + // Given a position pos within the entire source, the results are + // ix -- the index of the containing line + // lstart -- the position of the first character on that line + private void findIndex(long pos, out int ix, out long lstart) + { + if (pos >= cachedPosition) + { + ix = cachedIxdex; lstart = cachedLineStart; + } + else + { + ix = 0; + lstart = 0; + } + while (ix < numLines) + { + int len = line[ix].Length + 1; + if (pos < lstart + len) break; + lstart += len; + ix++; + } + cachedPosition = pos; + cachedIxdex = ix; + cachedLineStart = lstart; + } + + public override string GetString(long begin, long limit) + { + if (begin >= maxPos || limit <= begin) return ""; + int endIx, begIx; + long begLineStart, endLineStart; + findIndex(begin, out begIx, out begLineStart); + int begCol = (int)(begin - begLineStart); + findIndex(limit, out endIx, out endLineStart); + int endCol = (int)(limit - endLineStart); + string s = line[begIx]; + if (begIx == endIx) + { + // the usual case, substring all on one line + return (endCol <= s.Length) ? + s.Substring(begCol, endCol - begCol) + : s.Substring(begCol) + "\n"; + } + // the string spans multiple lines, yuk! + StringBuilder sb = new StringBuilder(); + if (begCol < s.Length) + sb.Append(s.Substring(begCol)); + for (; ; ) + { + sb.Append("\n"); + s = line[++begIx]; + if (begIx >= endIx) break; + sb.Append(s); + } + if (endCol <= s.Length) + { + sb.Append(s.Substring(0, endCol)); + } + else + { + sb.Append(s); + sb.Append("\n"); + } + return sb.ToString(); + } + + public override long Pos + { + get { return cPos; } + set + { + cPos = value; + findIndex(cPos, out cLine, out curLineStart); + // cLine should be the *next* line after curLine. + curLine = (cLine < numLines ? line[cLine++] : ""); + curLineEnd = curLineStart + curLine.Length; + } + } + + public override string ToString() { return "LineBuffer"; } + } + +#if (!NOFILES) + // ============================================================== + // ===== class BuildBuff : for unicode text files ======== + // ============================================================== + + class BuildBuffer : ScanBuff + { + // Double buffer for char stream. + class BufferElement + { + StringBuilder bldr = new StringBuilder(); + StringBuilder next = new StringBuilder(); + long minIx; + long maxIx; + long brkIx; + bool appendToNext; + + internal BufferElement() { } + + internal long MaxIndex { get { return maxIx; } } + // internal int MinIndex { get { return minIx; } } + + internal char this[long index] + { + get + { + if (index < minIx || index >= maxIx) + throw new BufferException("Index was outside data buffer"); + else if (index < brkIx) + return bldr[(int)(index - minIx)]; + else + return next[(int)(index - brkIx)]; + } + } + + internal void Append(char[] block, int count) + { + maxIx += count; + if (appendToNext) + this.next.Append(block, 0, count); + else + { + this.bldr.Append(block, 0, count); + brkIx = maxIx; + appendToNext = true; + } + } + + internal string GetString(long start, long limit) + { + if (limit <= start) + return ""; + if (start >= minIx && limit <= maxIx) + if (limit < brkIx) // String entirely in bldr builder + return bldr.ToString((int)(start - minIx), (int)(limit - start)); + else if (start >= brkIx) // String entirely in next builder + return next.ToString((int)(start - brkIx), (int)(limit - start)); + else // Must do a string-concatenation + return + bldr.ToString((int)(start - minIx), (int)(brkIx - start)) + + next.ToString(0, (int)(limit - brkIx)); + else + throw new BufferException("String was outside data buffer"); + } + + internal void Mark(long limit) + { + if (limit > brkIx + 16) // Rotate blocks + { + StringBuilder temp = bldr; + bldr = next; + next = temp; + next.Length = 0; + minIx = brkIx; + brkIx = maxIx; + } + } + } + + BufferElement data = new BufferElement(); + + long bPos; // Postion index in the StringBuilder + BlockReader NextBlk; // Delegate that serves char-arrays; + + private string EncodingName + { + get + { + StreamReader rdr = NextBlk.Target as StreamReader; + return (rdr == null ? "raw-bytes" : rdr.CurrentEncoding.BodyName); + } + } + + public BuildBuffer(Stream stream) + { + FileStream fStrm = (stream as FileStream); + if (fStrm != null) FileName = fStrm.Name; + NextBlk = BlockReaderFactory.Raw(stream); + } + +#if (!BYTEMODE) + public BuildBuffer(Stream stream, int fallbackCodePage) + { + FileStream fStrm = (stream as FileStream); + if (fStrm != null) FileName = fStrm.Name; + NextBlk = BlockReaderFactory.Get(stream, fallbackCodePage); + } +#endif + + /// + /// Marks a conservative lower bound for the buffer, + /// allowing space to be reclaimed. If an application + /// needs to call GetString at arbitrary past locations + /// in the input stream, Mark() is not called. + /// + public override void Mark() { data.Mark(bPos - 2); } + + public override long Pos + { + get { return bPos; } + set { bPos = value; } + } + + + /// + /// Read returns the ordinal number of the next char, or + /// EOF (-1) for an end of stream. Note that the next + /// code point may require *two* calls of Read(). + /// + /// + public override int Read() + { + // + // Characters at positions + // [data.offset, data.offset + data.bldr.Length) + // are available in data.bldr. + // + if (bPos < data.MaxIndex) + { + // ch0 cannot be EOF + return (int)data[bPos++]; + } + else // Read from underlying stream + { + // Experimental code, blocks of page size + char[] chrs = new char[4096]; + int count = NextBlk(chrs, 0, 4096); + if (count == 0) + return EndOfFile; + else + { + data.Append(chrs, count); + return (int)data[bPos++]; + } + } + } + + public override string GetString(long begin, long limit) + { + return data.GetString(begin, limit); + } + + public override string ToString() + { + return "StringBuilder buffer, encoding: " + this.EncodingName; + } + } + + // =============== End ScanBuff-derived classes ================== + + public delegate int BlockReader(char[] block, int index, int number); + + // A delegate factory, serving up a delegate that + // reads a block of characters from the underlying + // encoded stream, via a StreamReader object. + // + public static class BlockReaderFactory + { + public static BlockReader Raw(Stream stream) + { + return delegate(char[] block, int index, int number) + { + byte[] b = new byte[number]; + int count = stream.Read(b, 0, number); + int i = 0; + int j = index; + for (; i < count; i++, j++) + block[j] = (char)b[i]; + return count; + }; + } + +#if (!BYTEMODE) + public static BlockReader Get(Stream stream, int fallbackCodePage) + { + Encoding encoding; + int preamble = Preamble(stream); + + if (preamble != 0) // There is a valid BOM here! + encoding = Encoding.GetEncoding(preamble); + else if (fallbackCodePage == -1) // Fallback is "raw" bytes + return Raw(stream); + else if (fallbackCodePage != -2) // Anything but "guess" + encoding = Encoding.GetEncoding(fallbackCodePage); + else // This is the "guess" option + { + int guess = new Guesser(stream).GuessCodePage(); + stream.Seek(0, SeekOrigin.Begin); + if (guess == -1) // ==> this is a 7-bit file + encoding = Encoding.ASCII; + else if (guess == 65001) + encoding = Encoding.UTF8; + else // ==> use the machine default + encoding = Encoding.Default; + } + StreamReader reader = new StreamReader(stream, encoding); + return reader.Read; + } + + static int Preamble(Stream stream) + { + int b0 = stream.ReadByte(); + int b1 = stream.ReadByte(); + + if (b0 == 0xfe && b1 == 0xff) + return 1201; // UTF16BE + if (b0 == 0xff && b1 == 0xfe) + return 1200; // UTF16LE + + int b2 = stream.ReadByte(); + if (b0 == 0xef && b1 == 0xbb && b2 == 0xbf) + return 65001; // UTF8 + // + // There is no unicode preamble, so we + // return denoter for the machine default. + // + stream.Seek(0, SeekOrigin.Begin); + return 0; + } +#endif // !BYTEMODE + } +#endif // !NOFILES + #endregion Buffer classes + + // ============================================================== + // ============ class CodePageHandling ============= + // ============================================================== +#if (!NOFILES) + public static class CodePageHandling + { + public static int GetCodePage(string option) + { + string command = option.ToUpperInvariant(); + if (command.StartsWith("CodePage:", StringComparison.OrdinalIgnoreCase)) + command = command.Substring(9); + try + { + if (command.Equals("RAW")) + return -1; + else if (command.Equals("GUESS")) + return -2; + else if (command.Equals("DEFAULT")) + return 0; + else if (char.IsDigit(command[0])) + return int.Parse(command, CultureInfo.InvariantCulture); + else + { + Encoding enc = Encoding.GetEncoding(command); + return enc.CodePage; + } + } + catch (FormatException) + { + Console.Error.WriteLine( + "Invalid format \"{0}\", using machine default", option); + } + catch (ArgumentException) + { + Console.Error.WriteLine( + "Unknown code page \"{0}\", using machine default", option); + } + return 0; + } + } +#region guesser +#if (!BYTEMODE) + // ============================================================== + // ============ Encoding Guesser ============= + // ============================================================== + + /// + /// This class provides a simple finite state automaton that + /// scans the file looking for (1) valid UTF-8 byte patterns, + /// (2) bytes >= 0x80 which are not part of a UTF-8 sequence. + /// The method then guesses whether it is UTF-8 or maybe some + /// local machine default encoding. This works well for the + /// various Latin encodings. + /// + internal class Guesser + { + ScanBuff buffer; + + public int GuessCodePage() { return Scan(); } + + const int maxAccept = 10; + const int initial = 0; + const int eofNum = 0; + const int goStart = -1; + const int INITIAL = 0; + const int EndToken = 0; + + #region user code + /* + * Reads the bytes of a file to determine if it is + * UTF-8 or a single-byte code page file. + */ + public long utfX; + public long uppr; + #endregion user code + + int state; + int currentStart = startState[0]; + int code; + + #region ScannerTables + static int[] startState = new int[] { 11, 0 }; + + #region CharacterMap + static sbyte[] map = new sbyte[256] { +/* '\0' */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +/* '\x10' */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +/* '\x20' */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +/* '0' */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +/* '@' */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +/* 'P' */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +/* '`' */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +/* 'p' */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +/* '\x80' */ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, +/* '\x90' */ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, +/* '\xA0' */ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, +/* '\xB0' */ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, +/* '\xC0' */ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, +/* '\xD0' */ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, +/* '\xE0' */ 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, +/* '\xF0' */ 4, 4, 4, 4, 4, 4, 4, 4, 5, 5, 5, 5, 5, 5, 5, 5 }; + #endregion + + static sbyte[][] nextState = new sbyte[][] { + new sbyte[] {0, 0, 0, 0, 0, 0}, + new sbyte[] {-1, -1, 10, -1, -1, -1}, + new sbyte[] {-1, -1, -1, -1, -1, -1}, + new sbyte[] {-1, -1, 8, -1, -1, -1}, + new sbyte[] {-1, -1, 5, -1, -1, -1}, + new sbyte[] {-1, -1, 6, -1, -1, -1}, + new sbyte[] {-1, -1, 7, -1, -1, -1}, + null, + new sbyte[] {-1, -1, 9, -1, -1, -1}, + null, + null, + new sbyte[] {-1, 1, 2, 3, 4, 2} + }; + + + [SuppressMessage("Microsoft.Performance", "CA1810:InitializeReferenceTypeStaticFieldsInline")] + // Reason for suppression: cannot have self-reference in array initializer. + static Guesser() + { + nextState[7] = nextState[2]; + nextState[9] = nextState[2]; + nextState[10] = nextState[2]; + } + + int NextState() + { + if (code == ScanBuff.EndOfFile) + return eofNum; + else + return nextState[state][map[code]]; + } + #endregion + + public Guesser(System.IO.Stream file) { SetSource(file); } + + public void SetSource(System.IO.Stream source) + { + this.buffer = new BuildBuffer(source); + code = buffer.Read(); + } + + int Scan() + { + for (; ; ) + { + int next; + state = currentStart; + while ((next = NextState()) == goStart) + code = buffer.Read(); + + state = next; + code = buffer.Read(); + + while ((next = NextState()) > eofNum) + { + state = next; + code = buffer.Read(); + } + if (state <= maxAccept) + { + #region ActionSwitch +#pragma warning disable 162 + switch (state) + { + case eofNum: + switch (currentStart) + { + case 11: + if (utfX == 0 && uppr == 0) return -1; /* raw ascii */ + else if (uppr * 10 > utfX) return 0; /* default code page */ + else return 65001; /* UTF-8 encoding */ + break; + } + return EndToken; + case 1: // Recognized '{Upper128}', Shortest string "\xC0" + case 2: // Recognized '{Upper128}', Shortest string "\x80" + case 3: // Recognized '{Upper128}', Shortest string "\xE0" + case 4: // Recognized '{Upper128}', Shortest string "\xF0" + uppr++; + break; + case 5: // Recognized '{Utf8pfx4}{Utf8cont}', Shortest string "\xF0\x80" + uppr += 2; + break; + case 6: // Recognized '{Utf8pfx4}{Utf8cont}{2}', Shortest string "\xF0\x80\x80" + uppr += 3; + break; + case 7: // Recognized '{Utf8pfx4}{Utf8cont}{3}', Shortest string "\xF0\x80\x80\x80" + utfX += 3; + break; + case 8: // Recognized '{Utf8pfx3}{Utf8cont}', Shortest string "\xE0\x80" + uppr += 2; + break; + case 9: // Recognized '{Utf8pfx3}{Utf8cont}{2}', Shortest string "\xE0\x80\x80" + utfX += 2; + break; + case 10: // Recognized '{Utf8pfx2}{Utf8cont}', Shortest string "\xC0\x80" + utfX++; + break; + default: + break; + } +#pragma warning restore 162 + #endregion + } + } + } + } // end class Guesser + +#endif // !BYTEMODE +#endregion +#endif // !NOFILES + +// End of code copied from embedded resource +} diff --git a/Xbim.Common/Step21/Parser/IStepP21Parser.cs b/Xbim.Common/Step21/Parser/IStepP21Parser.cs index 039d5d2be..2a6a64781 100644 --- a/Xbim.Common/Step21/Parser/IStepP21Parser.cs +++ b/Xbim.Common/Step21/Parser/IStepP21Parser.cs @@ -37,6 +37,7 @@ internal interface IStepP21Parser void SetHexValue(string value); void SetFloatValue(string value); void SetStringValue(string value); + void SetInvalidStringValue(string value); void SetEnumValue(string value); void SetBooleanValue(string value); void SetNonDefinedValue(); diff --git a/Xbim.Common/Step21/Parser/MAKEPARSER.BAT b/Xbim.Common/Step21/Parser/MAKEPARSER.BAT index 6ec26912f..029acc633 100644 --- a/Xbim.Common/Step21/Parser/MAKEPARSER.BAT +++ b/Xbim.Common/Step21/Parser/MAKEPARSER.BAT @@ -1,4 +1,6 @@ cd %1 -GPLEX /noPersistBuffer StepP21Lex.LEX +GPLEX /noPersistBuffer /noEmbedBuffers /frame:gplex.frame StepP21Lex.LEX GPPG /gplex StepP21Parser.y > StepP21Parser.cs -pause \ No newline at end of file + +git restore GplexBuffers.cs +pause diff --git a/Xbim.Common/Step21/Parser/Parser.cs b/Xbim.Common/Step21/Parser/Parser.cs index 24f92ef36..a56676b1f 100644 --- a/Xbim.Common/Step21/Parser/Parser.cs +++ b/Xbim.Common/Step21/Parser/Parser.cs @@ -190,6 +190,7 @@ protected virtual void SetErrorMessage() protected abstract void SetHexValue(string value); protected abstract void SetFloatValue(string value); protected abstract void SetStringValue(string value); + protected abstract void SetInvalidStringValue(string value); protected abstract void SetEnumValue(string value); protected abstract void SetBooleanValue(string value); protected abstract void SetNonDefinedValue(); diff --git a/Xbim.Common/Step21/Parser/Readme.md b/Xbim.Common/Step21/Parser/Readme.md new file mode 100644 index 000000000..9358fa646 --- /dev/null +++ b/Xbim.Common/Step21/Parser/Readme.md @@ -0,0 +1,18 @@ +## The xbim Step21 Parser + +**Remember to run makeparser.bat to generate an updated Scanner/Parser from the lex and yacc (*.y) source** + +GPLEX and GPPG (Gardens Point Parser Generator) is now maintained at https://github.com/ernstc/gplex + +For the original manual on GPLEX see https://github.com/ernstc/gplex/blob/main/GPLEX/gplex.pdf + +We use a relatively old version (1.2.2) of GPLEX but have tweaked the output to support parsing files > 2GB by changing `int` indexes to `long`s +in the generated code. Since we've not backported this to the origin but need to support regneration of the Parser code, this is the strategy: + +The _gplex.frame_ file contains the extracted template code normally embedded in gplex.exe incorporating the int -> long fixes. +This ends up generating Step21Lex.cs with the 'long' amendments upon any regeneration since we pass in `/frame:gplex.frame` in the args in makeparser.bak. + +_GplexBuffers.cs_ is the 'static' GPLEX dependencies of the Scanner in Step21Lex.cs - which have also had the int->long fix applied manually. +This file is now generated as a distinct file by gplex.exe (because we specify '/noEmbedBuffers' args to gplex so the classes are not mergeded into +the re-generated Step21Lex.cs file). +In order to retain our changes it's important this buffers file is not committed. As such we roll back the edits to 'GplexBuffers.cs' in the batch script. \ No newline at end of file diff --git a/Xbim.Common/Step21/Parser/Readme.txt b/Xbim.Common/Step21/Parser/Readme.txt deleted file mode 100644 index ebad4d1cb..000000000 --- a/Xbim.Common/Step21/Parser/Readme.txt +++ /dev/null @@ -1,4 +0,0 @@ -Remember to run makeparser.bat to create the lex and yacc source - -Note the variable "top" produced by GPPG is name clash undedr the new c# compiler and has been renamed to topIdx -in the parser, so you need to run a find and replace on .top to .topIdx in the StepP21Parser.cs produced by GPPG \ No newline at end of file diff --git a/Xbim.Common/Step21/Parser/StepP21Lex.cs b/Xbim.Common/Step21/Parser/StepP21Lex.cs index 1dc6ee862..babd057d1 100644 --- a/Xbim.Common/Step21/Parser/StepP21Lex.cs +++ b/Xbim.Common/Step21/Parser/StepP21Lex.cs @@ -5,20 +5,21 @@ // See accompanying file GPLEXcopyright.rtf. // // GPLEX Version: 1.2.2 -// Machine: MAC3 -// DateTime: 24/03/2022 23:03:40 -// UserName: Claudio -// GPLEX input file -// GPLEX frame file +// Machine: ANDY-XBIM +// DateTime: 25/03/2025 15:48:09 +// UserName: AndyWard +// GPLEX input file +// GPLEX frame file // // Option settings: verbose, parser, minimize -// Option settings: noCompressNext, noPersistBuffer, embedbuffers +// Option settings: noCompressNext, noPersistBuffer, noEmbedBuffers // -// // Revised backup code // Version 1.2.1 of 24-June-2013 // + +// Customised in xbim to support input files > int32 length // #define BACKUP #define BYTEMODE @@ -31,6 +32,7 @@ using System.Runtime.Serialization; using System.Diagnostics.CodeAnalysis; +using QUT.GplexBuffers; using QUT.Gppg; namespace Xbim.IO.Parser @@ -124,8 +126,8 @@ private static int GetMaxParseToken() { enum Result {accept, noMatch, contextFound}; - const int maxAccept = 82; - const int initial = 83; + const int maxAccept = 89; + const int initial = 90; const int eofNum = 0; const int goStart = -1; const int INITIAL = 0; @@ -161,9 +163,9 @@ public void SetValue() #endif // STACK #region ScannerTables - static int[] startState = new int[] {83, 128, 0}; + static int[] startState = new int[] {90, 191, 0}; - static short[][] nextState = new short[130][] { + static short[][] nextState = new short[193][] { /* nextState[ 0] */ new short[] { // Shortest string "" 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, @@ -216,18 +218,49 @@ public void SetValue() -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1}, /* nextState[ 3] */ null, // Shortest string "\t" -/* nextState[ 4] */ null, // Shortest string "\n" -/* nextState[ 5] */ null, // Shortest string "\r" -/* nextState[ 6] */ null, // Shortest string "\x20" -/* nextState[ 7] */ new short[] { // Shortest string "!" +/* nextState[ 4] */ new short[] { // Shortest string "\n" + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 88, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1}, +/* nextState[ 5] */ new short[] { // Shortest string "\r" + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 88, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1}, +/* nextState[ 6] */ new short[] { // Shortest string "!" -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, -1, -1, -1, -1, -1, -1, - -1, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, - 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, -1, -1, -1, -1, 81, - -1, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, - 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, -1, -1, -1, -1, -1, + 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, -1, -1, -1, -1, -1, -1, + -1, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, + 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, -1, -1, -1, -1, 87, + -1, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, + 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, @@ -236,14 +269,14 @@ public void SetValue() -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1}, -/* nextState[ 8] */ new short[] { // Shortest string "\"" +/* nextState[ 7] */ new short[] { // Shortest string "\"" -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, -1, -1, -1, -1, -1, -1, - -1, 127, 127, 127, 127, 127, 127, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, -1, -1, -1, -1, -1, -1, + -1, 190, 190, 190, 190, 190, 190, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 127, 127, 127, 127, 127, 127, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 190, 190, 190, 190, 190, 190, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, @@ -253,11 +286,11 @@ public void SetValue() -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1}, -/* nextState[ 9] */ new short[] { // Shortest string "#" +/* nextState[ 8] */ new short[] { // Shortest string "#" -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, -1, -1, -1, -1, -1, -1, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, @@ -270,14 +303,14 @@ public void SetValue() -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1}, -/* nextState[ 10] */ null, // Shortest string "$" -/* nextState[ 11] */ new short[] { // Shortest string "&" +/* nextState[ 9] */ null, // Shortest string "$" +/* nextState[ 10] */ new short[] { // Shortest string "&" -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 122, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, 184, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, @@ -288,31 +321,31 @@ public void SetValue() -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1}, -/* nextState[ 12] */ new short[] { // Shortest string "'" - -1, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, - 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, - 97, 97, 97, 97, 97, 97, 97, 75, 97, 97, 97, 97, 97, 97, 97, 97, - 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, - 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, - 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 98, 97, 97, 97, - 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, - 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, - 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, - 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, - 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, - 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, - 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, - 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, - 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, - 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97}, -/* nextState[ 13] */ null, // Shortest string "(" -/* nextState[ 14] */ null, // Shortest string ")" -/* nextState[ 15] */ null, // Shortest string "*" -/* nextState[ 16] */ new short[] { // Shortest string "+" +/* nextState[ 11] */ new short[] { // Shortest string "'" + 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 107, 106, 106, 107, 106, 106, + 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, + 106, 106, 106, 106, 106, 106, 106, 73, 106, 106, 106, 106, 106, 106, 106, 106, + 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, + 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, + 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 108, 106, 106, 106, + 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, + 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, + 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, + 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, + 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, + 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, + 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, + 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, + 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, + 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106}, +/* nextState[ 12] */ null, // Shortest string "(" +/* nextState[ 13] */ null, // Shortest string ")" +/* nextState[ 14] */ null, // Shortest string "*" +/* nextState[ 15] */ new short[] { // Shortest string "+" -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 62, -1, - 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 104, -1, + 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, @@ -325,16 +358,16 @@ public void SetValue() -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1}, -/* nextState[ 17] */ null, // Shortest string "," -/* nextState[ 18] */ new short[] { // Shortest string "." +/* nextState[ 16] */ null, // Shortest string "," +/* nextState[ 17] */ new short[] { // Shortest string "." -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 93, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 62, -1, - 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, -1, -1, -1, -1, -1, -1, - -1, 93, 93, 93, 93, 93, 94, 93, 93, 93, 93, 93, 93, 93, 93, 93, - 93, 93, 93, 93, 94, 95, 93, 93, 93, 93, 93, -1, -1, -1, -1, 93, - -1, 93, 93, 93, 93, 93, 93, 93, 93, 93, 93, 93, 93, 93, 93, 93, - 93, 93, 93, 93, 93, 93, 93, 93, 93, 93, 93, -1, -1, -1, -1, -1, + 100, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, -1, -1, -1, -1, -1, -1, + -1, 100, 100, 100, 100, 100, 101, 100, 100, 100, 100, 100, 100, 100, 100, 100, + 100, 100, 100, 100, 101, 102, 100, 100, 100, 100, 100, -1, -1, -1, -1, 100, + -1, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, + 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, @@ -343,10 +376,10 @@ public void SetValue() -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1}, -/* nextState[ 19] */ new short[] { // Shortest string "/" +/* nextState[ 18] */ new short[] { // Shortest string "/" -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 68, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 66, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, @@ -360,15 +393,15 @@ public void SetValue() -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1}, -/* nextState[ 20] */ new short[] { // Shortest string "0" +/* nextState[ 19] */ new short[] { // Shortest string "0" -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 62, -1, - 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, -1, -1, -1, -1, -1, -1, - -1, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, - 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, -1, -1, -1, -1, 23, - -1, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, - 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, -1, -1, -1, -1, -1, + -1, -1, -1, 96, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 61, -1, + 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, -1, -1, -1, -1, -1, -1, + -1, 22, 22, 22, 22, 62, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, + 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, -1, -1, -1, -1, 22, + -1, 22, 22, 22, 22, 62, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, + 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, @@ -377,17 +410,17 @@ public void SetValue() -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1}, -/* nextState[ 21] */ null, // Shortest string ";" -/* nextState[ 22] */ null, // Shortest string "=" -/* nextState[ 23] */ new short[] { // Shortest string "A" +/* nextState[ 20] */ null, // Shortest string ";" +/* nextState[ 21] */ null, // Shortest string "=" +/* nextState[ 22] */ new short[] { // Shortest string "A" -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, -1, -1, -1, -1, -1, -1, - -1, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, - 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, -1, -1, -1, -1, 23, - -1, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, - 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, -1, -1, -1, -1, -1, + 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, -1, -1, -1, -1, -1, -1, + -1, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, + 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, -1, -1, -1, -1, 22, + -1, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, + 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, @@ -396,15 +429,15 @@ public void SetValue() -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1}, -/* nextState[ 24] */ new short[] { // Shortest string "D" +/* nextState[ 23] */ new short[] { // Shortest string "D" -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, -1, -1, -1, -1, -1, -1, - -1, 58, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, - 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, -1, -1, -1, -1, 23, - -1, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, - 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, -1, -1, -1, -1, -1, + 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, -1, -1, -1, -1, -1, -1, + -1, 57, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, + 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, -1, -1, -1, -1, 22, + -1, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, + 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, @@ -413,15 +446,15 @@ public void SetValue() -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1}, -/* nextState[ 25] */ new short[] { // Shortest string "E" +/* nextState[ 24] */ new short[] { // Shortest string "E" -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, -1, -1, -1, -1, -1, -1, - -1, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 42, 23, - 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, -1, -1, -1, -1, 23, - -1, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, - 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, -1, -1, -1, -1, -1, + 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, -1, -1, -1, -1, -1, -1, + -1, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 41, 22, + 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, -1, -1, -1, -1, 22, + -1, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, + 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, @@ -430,15 +463,15 @@ public void SetValue() -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1}, -/* nextState[ 26] */ new short[] { // Shortest string "H" +/* nextState[ 25] */ new short[] { // Shortest string "H" -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, -1, -1, -1, -1, -1, -1, - -1, 23, 23, 23, 23, 36, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, - 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, -1, -1, -1, -1, 23, - -1, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, - 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, -1, -1, -1, -1, -1, + 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, -1, -1, -1, -1, -1, -1, + -1, 22, 22, 22, 22, 35, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, + 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, -1, -1, -1, -1, 22, + -1, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, + 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, @@ -447,15 +480,15 @@ public void SetValue() -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1}, -/* nextState[ 27] */ new short[] { // Shortest string "I" +/* nextState[ 26] */ new short[] { // Shortest string "I" -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, -1, -1, -1, -1, -1, -1, - -1, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, - 23, 23, 23, 33, 23, 23, 23, 23, 23, 23, 23, -1, -1, -1, -1, 23, - -1, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, - 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, -1, -1, -1, -1, -1, + 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, -1, -1, -1, -1, -1, -1, + -1, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, + 22, 22, 22, 32, 22, 22, 22, 22, 22, 22, 22, -1, -1, -1, -1, 22, + -1, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, + 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, @@ -464,15 +497,15 @@ public void SetValue() -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1}, -/* nextState[ 28] */ new short[] { // Shortest string "S" +/* nextState[ 27] */ new short[] { // Shortest string "S" -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, -1, -1, -1, -1, -1, -1, - -1, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, - 23, 23, 23, 23, 29, 23, 23, 23, 23, 23, 23, -1, -1, -1, -1, 23, - -1, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, - 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, -1, -1, -1, -1, -1, + 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, -1, -1, -1, -1, -1, -1, + -1, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, + 22, 22, 22, 22, 28, 22, 22, 22, 22, 22, 22, -1, -1, -1, -1, 22, + -1, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, + 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, @@ -481,15 +514,15 @@ public void SetValue() -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1}, -/* nextState[ 29] */ new short[] { // Shortest string "ST" +/* nextState[ 28] */ new short[] { // Shortest string "ST" -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, -1, -1, -1, -1, -1, -1, - -1, 23, 23, 23, 23, 30, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, - 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, -1, -1, -1, -1, 23, - -1, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, - 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, -1, -1, -1, -1, -1, + 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, -1, -1, -1, -1, -1, -1, + -1, 22, 22, 22, 22, 29, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, + 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, -1, -1, -1, -1, 22, + -1, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, + 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, @@ -498,15 +531,15 @@ public void SetValue() -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1}, -/* nextState[ 30] */ new short[] { // Shortest string "STE" +/* nextState[ 29] */ new short[] { // Shortest string "STE" -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, -1, -1, -1, -1, -1, -1, - -1, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, - 31, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, -1, -1, -1, -1, 23, - -1, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, - 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, -1, -1, -1, -1, -1, + 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, -1, -1, -1, -1, -1, -1, + -1, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, + 30, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, -1, -1, -1, -1, 22, + -1, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, + 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, @@ -515,15 +548,15 @@ public void SetValue() -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1}, -/* nextState[ 31] */ new short[] { // Shortest string "STEP" +/* nextState[ 30] */ new short[] { // Shortest string "STEP" -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, -1, 32, -1, -1, -1, -1, - -1, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, - 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, -1, -1, -1, -1, 23, - -1, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, - 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, -1, -1, -1, -1, -1, + 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, -1, 31, -1, -1, -1, -1, + -1, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, + 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, -1, -1, -1, -1, 22, + -1, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, + 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, @@ -532,16 +565,16 @@ public void SetValue() -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1}, -/* nextState[ 32] */ null, // Shortest string "STEP;" -/* nextState[ 33] */ new short[] { // Shortest string "IS" +/* nextState[ 31] */ null, // Shortest string "STEP;" +/* nextState[ 32] */ new short[] { // Shortest string "IS" -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, -1, -1, -1, -1, -1, -1, - -1, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 34, - 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, -1, -1, -1, -1, 23, - -1, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, - 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, -1, -1, -1, -1, -1, + 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, -1, -1, -1, -1, -1, -1, + -1, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 33, + 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, -1, -1, -1, -1, 22, + -1, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, + 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, @@ -550,15 +583,15 @@ public void SetValue() -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1}, -/* nextState[ 34] */ new short[] { // Shortest string "ISO" +/* nextState[ 33] */ new short[] { // Shortest string "ISO" -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 84, -1, -1, - 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, -1, 35, -1, -1, -1, -1, - -1, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, - 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, -1, -1, -1, -1, 23, - -1, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, - 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 91, -1, -1, + 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, -1, 34, -1, -1, -1, -1, + -1, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, + 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, -1, -1, -1, -1, 22, + -1, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, + 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, @@ -567,16 +600,16 @@ public void SetValue() -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1}, -/* nextState[ 35] */ null, // Shortest string "ISO;" -/* nextState[ 36] */ new short[] { // Shortest string "HE" +/* nextState[ 34] */ null, // Shortest string "ISO;" +/* nextState[ 35] */ new short[] { // Shortest string "HE" -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, -1, -1, -1, -1, -1, -1, - -1, 37, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, - 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, -1, -1, -1, -1, 23, - -1, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, - 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, -1, -1, -1, -1, -1, + 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, -1, -1, -1, -1, -1, -1, + -1, 36, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, + 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, -1, -1, -1, -1, 22, + -1, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, + 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, @@ -585,15 +618,15 @@ public void SetValue() -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1}, -/* nextState[ 37] */ new short[] { // Shortest string "HEA" +/* nextState[ 36] */ new short[] { // Shortest string "HEA" -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, -1, -1, -1, -1, -1, -1, - -1, 23, 23, 23, 38, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, - 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, -1, -1, -1, -1, 23, - -1, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, - 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, -1, -1, -1, -1, -1, + 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, -1, -1, -1, -1, -1, -1, + -1, 22, 22, 22, 37, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, + 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, -1, -1, -1, -1, 22, + -1, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, + 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, @@ -602,15 +635,15 @@ public void SetValue() -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1}, -/* nextState[ 38] */ new short[] { // Shortest string "HEAD" +/* nextState[ 37] */ new short[] { // Shortest string "HEAD" -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, -1, -1, -1, -1, -1, -1, - -1, 23, 23, 23, 23, 39, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, - 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, -1, -1, -1, -1, 23, - -1, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, - 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, -1, -1, -1, -1, -1, + 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, -1, -1, -1, -1, -1, -1, + -1, 22, 22, 22, 22, 38, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, + 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, -1, -1, -1, -1, 22, + -1, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, + 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, @@ -619,15 +652,15 @@ public void SetValue() -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1}, -/* nextState[ 39] */ new short[] { // Shortest string "HEADE" +/* nextState[ 38] */ new short[] { // Shortest string "HEADE" -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, -1, -1, -1, -1, -1, -1, - -1, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, - 23, 23, 40, 23, 23, 23, 23, 23, 23, 23, 23, -1, -1, -1, -1, 23, - -1, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, - 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, -1, -1, -1, -1, -1, + 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, -1, -1, -1, -1, -1, -1, + -1, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, + 22, 22, 39, 22, 22, 22, 22, 22, 22, 22, 22, -1, -1, -1, -1, 22, + -1, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, + 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, @@ -636,15 +669,15 @@ public void SetValue() -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1}, -/* nextState[ 40] */ new short[] { // Shortest string "HEADER" +/* nextState[ 39] */ new short[] { // Shortest string "HEADER" -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, -1, 41, -1, -1, -1, -1, - -1, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, - 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, -1, -1, -1, -1, 23, - -1, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, - 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, -1, -1, -1, -1, -1, + 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, -1, 40, -1, -1, -1, -1, + -1, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, + 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, -1, -1, -1, -1, 22, + -1, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, + 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, @@ -653,16 +686,16 @@ public void SetValue() -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1}, -/* nextState[ 41] */ null, // Shortest string "HEADER;" -/* nextState[ 42] */ new short[] { // Shortest string "EN" +/* nextState[ 40] */ null, // Shortest string "HEADER;" +/* nextState[ 41] */ new short[] { // Shortest string "EN" -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, -1, -1, -1, -1, -1, -1, - -1, 23, 23, 23, 43, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, - 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, -1, -1, -1, -1, 23, - -1, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, - 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, -1, -1, -1, -1, -1, + 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, -1, -1, -1, -1, -1, -1, + -1, 22, 22, 22, 42, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, + 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, -1, -1, -1, -1, 22, + -1, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, + 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, @@ -671,15 +704,15 @@ public void SetValue() -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1}, -/* nextState[ 43] */ new short[] { // Shortest string "END" +/* nextState[ 42] */ new short[] { // Shortest string "END" -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 85, -1, -1, - 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, -1, -1, -1, -1, -1, -1, - -1, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, - 23, 23, 23, 44, 23, 23, 23, 23, 23, 23, 23, -1, -1, -1, -1, 23, - -1, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, - 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 92, -1, -1, + 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, -1, -1, -1, -1, -1, -1, + -1, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, + 22, 22, 22, 43, 22, 22, 22, 22, 22, 22, 22, -1, -1, -1, -1, 22, + -1, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, + 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, @@ -688,15 +721,15 @@ public void SetValue() -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1}, -/* nextState[ 44] */ new short[] { // Shortest string "ENDS" +/* nextState[ 43] */ new short[] { // Shortest string "ENDS" -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, -1, -1, -1, -1, -1, -1, - -1, 23, 23, 45, 23, 46, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, - 23, 23, 23, 23, 47, 23, 23, 23, 23, 23, 23, -1, -1, -1, -1, 23, - -1, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, - 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, -1, -1, -1, -1, -1, + 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, -1, -1, -1, -1, -1, -1, + -1, 22, 22, 44, 22, 45, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, + 22, 22, 22, 22, 46, 22, 22, 22, 22, 22, 22, -1, -1, -1, -1, 22, + -1, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, + 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, @@ -705,15 +738,15 @@ public void SetValue() -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1}, -/* nextState[ 45] */ new short[] { // Shortest string "ENDSC" +/* nextState[ 44] */ new short[] { // Shortest string "ENDSC" -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, -1, -1, -1, -1, -1, -1, - -1, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 54, - 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, -1, -1, -1, -1, 23, - -1, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, - 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, -1, -1, -1, -1, -1, + 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, -1, -1, -1, -1, -1, -1, + -1, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 53, + 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, -1, -1, -1, -1, 22, + -1, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, + 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, @@ -722,15 +755,15 @@ public void SetValue() -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1}, -/* nextState[ 46] */ new short[] { // Shortest string "ENDSE" +/* nextState[ 45] */ new short[] { // Shortest string "ENDSE" -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, -1, -1, -1, -1, -1, -1, - -1, 23, 23, 52, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, - 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, -1, -1, -1, -1, 23, - -1, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, - 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, -1, -1, -1, -1, -1, + 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, -1, -1, -1, -1, -1, -1, + -1, 22, 22, 51, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, + 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, -1, -1, -1, -1, 22, + -1, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, + 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, @@ -739,15 +772,15 @@ public void SetValue() -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1}, -/* nextState[ 47] */ new short[] { // Shortest string "ENDST" +/* nextState[ 46] */ new short[] { // Shortest string "ENDST" -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, -1, -1, -1, -1, -1, -1, - -1, 23, 23, 23, 23, 48, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, - 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, -1, -1, -1, -1, 23, - -1, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, - 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, -1, -1, -1, -1, -1, + 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, -1, -1, -1, -1, -1, -1, + -1, 22, 22, 22, 22, 47, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, + 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, -1, -1, -1, -1, 22, + -1, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, + 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, @@ -756,15 +789,15 @@ public void SetValue() -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1}, -/* nextState[ 48] */ new short[] { // Shortest string "ENDSTE" +/* nextState[ 47] */ new short[] { // Shortest string "ENDSTE" -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, -1, -1, -1, -1, -1, -1, - -1, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, - 49, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, -1, -1, -1, -1, 23, - -1, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, - 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, -1, -1, -1, -1, -1, + 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, -1, -1, -1, -1, -1, -1, + -1, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, + 48, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, -1, -1, -1, -1, 22, + -1, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, + 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, @@ -773,15 +806,15 @@ public void SetValue() -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1}, -/* nextState[ 49] */ new short[] { // Shortest string "ENDSTEP" +/* nextState[ 48] */ new short[] { // Shortest string "ENDSTEP" -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, -1, 50, -1, -1, -1, -1, - -1, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, - 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, -1, -1, -1, -1, 23, - -1, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, - 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, -1, -1, -1, -1, -1, + 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, -1, 49, -1, -1, -1, -1, + -1, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, + 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, -1, -1, -1, -1, 22, + -1, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, + 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, @@ -790,33 +823,33 @@ public void SetValue() -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1}, -/* nextState[ 50] */ new short[] { // Shortest string "ENDSTEP;" - 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, -1, 51, 51, 51, 51, 51, - 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, - 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, - 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, - 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, - 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, - 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, - 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, - 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, - 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, - 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, - 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, - 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, - 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, - 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, - 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51}, -/* nextState[ 51] */ null, // Shortest string "ENDSTEP;\x01" -/* nextState[ 52] */ new short[] { // Shortest string "ENDSEC" +/* nextState[ 49] */ new short[] { // Shortest string "ENDSTEP;" + 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, -1, 50, 50, 50, 50, 50, + 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, + 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, + 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, + 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, + 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, + 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, + 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, + 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, + 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, + 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, + 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, + 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, + 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, + 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, + 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50}, +/* nextState[ 50] */ null, // Shortest string "ENDSTEP;\x01" +/* nextState[ 51] */ new short[] { // Shortest string "ENDSEC" -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, -1, 53, -1, -1, -1, -1, - -1, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, - 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, -1, -1, -1, -1, 23, - -1, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, - 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, -1, -1, -1, -1, -1, + 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, -1, 52, -1, -1, -1, -1, + -1, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, + 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, -1, -1, -1, -1, 22, + -1, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, + 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, @@ -825,16 +858,16 @@ public void SetValue() -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1}, -/* nextState[ 53] */ null, // Shortest string "ENDSEC;" -/* nextState[ 54] */ new short[] { // Shortest string "ENDSCO" +/* nextState[ 52] */ null, // Shortest string "ENDSEC;" +/* nextState[ 53] */ new short[] { // Shortest string "ENDSCO" -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, -1, -1, -1, -1, -1, -1, - -1, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, - 55, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, -1, -1, -1, -1, 23, - -1, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, - 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, -1, -1, -1, -1, -1, + 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, -1, -1, -1, -1, -1, -1, + -1, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, + 54, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, -1, -1, -1, -1, 22, + -1, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, + 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, @@ -843,15 +876,15 @@ public void SetValue() -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1}, -/* nextState[ 55] */ new short[] { // Shortest string "ENDSCOP" +/* nextState[ 54] */ new short[] { // Shortest string "ENDSCOP" -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, -1, -1, -1, -1, -1, -1, - -1, 23, 23, 23, 23, 56, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, - 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, -1, -1, -1, -1, 23, - -1, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, - 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, -1, -1, -1, -1, -1, + 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, -1, -1, -1, -1, -1, -1, + -1, 22, 22, 22, 22, 55, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, + 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, -1, -1, -1, -1, 22, + -1, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, + 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, @@ -860,17 +893,17 @@ public void SetValue() -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1}, -/* nextState[ 56] */ null, // Shortest string "ENDSCOPE" -/* nextState[ 57] */ null, // Shortest string "END-ISO;" -/* nextState[ 58] */ new short[] { // Shortest string "DA" +/* nextState[ 55] */ null, // Shortest string "ENDSCOPE" +/* nextState[ 56] */ null, // Shortest string "END-ISO;" +/* nextState[ 57] */ new short[] { // Shortest string "DA" -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, -1, -1, -1, -1, -1, -1, - -1, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, - 23, 23, 23, 23, 59, 23, 23, 23, 23, 23, 23, -1, -1, -1, -1, 23, - -1, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, - 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, -1, -1, -1, -1, -1, + 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, -1, -1, -1, -1, -1, -1, + -1, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, + 22, 22, 22, 22, 58, 22, 22, 22, 22, 22, 22, -1, -1, -1, -1, 22, + -1, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, + 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, @@ -879,15 +912,15 @@ public void SetValue() -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1}, -/* nextState[ 59] */ new short[] { // Shortest string "DAT" +/* nextState[ 58] */ new short[] { // Shortest string "DAT" -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, -1, -1, -1, -1, -1, -1, - -1, 60, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, - 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, -1, -1, -1, -1, 23, - -1, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, - 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, -1, -1, -1, -1, -1, + 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, -1, -1, -1, -1, -1, -1, + -1, 59, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, + 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, -1, -1, -1, -1, 22, + -1, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, + 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, @@ -896,15 +929,15 @@ public void SetValue() -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1}, -/* nextState[ 60] */ new short[] { // Shortest string "DATA" +/* nextState[ 59] */ new short[] { // Shortest string "DATA" -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, -1, 61, -1, -1, -1, -1, - -1, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, - 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, -1, -1, -1, -1, 23, - -1, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, - 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, -1, -1, -1, -1, -1, + 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, -1, 60, -1, -1, -1, -1, + -1, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, + 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, -1, -1, -1, -1, 22, + -1, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, + 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, @@ -913,33 +946,50 @@ public void SetValue() -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1}, -/* nextState[ 61] */ null, // Shortest string "DATA;" -/* nextState[ 62] */ new short[] { // Shortest string "+." +/* nextState[ 60] */ null, // Shortest string "DATA;" +/* nextState[ 61] */ new short[] { // Shortest string "0." + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, 96, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 105, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 105, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 89, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 62, -1, - 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 90, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 90, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1}, +/* nextState[ 62] */ new short[] { // Shortest string "0E" + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 97, -1, 97, -1, -1, + 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, -1, -1, -1, -1, -1, -1, + -1, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, + 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, -1, -1, -1, -1, 22, + -1, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, + 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1}, -/* nextState[ 63] */ new short[] { // Shortest string "00" +/* nextState[ 63] */ new short[] { // Shortest string "0E0" -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 89, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 62, -1, + -1, -1, -1, 96, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, -1, -1, -1, -1, -1, -1, - -1, 23, 23, 23, 23, 64, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, - 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, -1, -1, -1, -1, 23, - -1, 23, 23, 23, 23, 64, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, - 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, -1, -1, -1, -1, -1, + -1, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, + 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, -1, -1, -1, -1, 22, + -1, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, + 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, @@ -948,15 +998,15 @@ public void SetValue() -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1}, -/* nextState[ 64] */ new short[] { // Shortest string "00E" +/* nextState[ 64] */ new short[] { // Shortest string "+0E0" + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, 96, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 65, -1, 65, -1, -1, - 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, -1, -1, -1, -1, -1, -1, - -1, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, - 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, -1, -1, -1, -1, 23, - -1, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, - 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, @@ -965,16 +1015,38 @@ public void SetValue() -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1}, -/* nextState[ 65] */ new short[] { // Shortest string "+.E+" +/* nextState[ 65] */ null, // Shortest string "0#IND" +/* nextState[ 66] */ null, // Shortest string "/*" +/* nextState[ 67] */ new short[] { // Shortest string ".0" + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 100, -1, -1, 96, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 69, -1, + 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, -1, -1, -1, -1, -1, -1, + -1, 100, 100, 100, 100, 103, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, + 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, -1, -1, -1, -1, 100, + -1, 100, 100, 100, 100, 103, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, + 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1}, +/* nextState[ 68] */ null, // Shortest string ".U." +/* nextState[ 69] */ null, // Shortest string ".\x20." +/* nextState[ 70] */ null, // Shortest string ".F." +/* nextState[ 71] */ new short[] { // Shortest string ".0E0" + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 100, -1, -1, 96, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 69, -1, + 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, -1, -1, -1, -1, -1, -1, + -1, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, + 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, -1, -1, -1, -1, 100, + -1, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, + 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, @@ -982,15 +1054,15 @@ public void SetValue() -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1}, -/* nextState[ 66] */ new short[] { // Shortest string "00E0" +/* nextState[ 72] */ new short[] { // Shortest string "+0" -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, 96, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 61, -1, + 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 105, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 105, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, -1, -1, -1, -1, -1, -1, - -1, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, - 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, -1, -1, -1, -1, 23, - -1, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, - 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, @@ -999,17 +1071,15 @@ public void SetValue() -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1}, -/* nextState[ 67] */ null, // Shortest string "+.#IND" -/* nextState[ 68] */ null, // Shortest string "/*" -/* nextState[ 69] */ new short[] { // Shortest string ".0" +/* nextState[ 73] */ new short[] { // Shortest string "''" + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 106, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 93, -1, -1, 89, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 62, -1, - 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, -1, -1, -1, -1, -1, -1, - -1, 93, 93, 93, 93, 96, 93, 93, 93, 93, 93, 93, 93, 93, 93, 93, - 93, 93, 93, 93, 93, 93, 93, 93, 93, 93, 93, -1, -1, -1, -1, 93, - -1, 93, 93, 93, 93, 96, 93, 93, 93, 93, 93, 93, 93, 93, 93, 93, - 93, 93, 93, 93, 93, 93, 93, 93, 93, 93, 93, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, @@ -1018,18 +1088,32 @@ public void SetValue() -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1}, -/* nextState[ 70] */ null, // Shortest string ".U." -/* nextState[ 71] */ null, // Shortest string ".\x20." -/* nextState[ 72] */ null, // Shortest string ".F." -/* nextState[ 73] */ new short[] { // Shortest string ".0E0" +/* nextState[ 74] */ new short[] { // Shortest string "'\\'" + 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 107, 109, 109, 107, 109, 109, + 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, + 109, 109, 109, 109, 109, 109, 109, 78, 109, 109, 109, 109, 109, 109, 109, 109, + 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, + 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, + 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 116, 109, 109, 109, + 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, + 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, + 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, + 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, + 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, + 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, + 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, + 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, + 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, + 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109}, +/* nextState[ 75] */ new short[] { // Shortest string "'\\P'" + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 112, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 93, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 71, -1, - 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, -1, -1, -1, -1, -1, -1, - -1, 93, 93, 93, 93, 93, 93, 93, 93, 93, 93, 93, 93, 93, 93, 93, - 93, 93, 93, 93, 93, 93, 93, 93, 93, 93, 93, -1, -1, -1, -1, 93, - -1, 93, 93, 93, 93, 93, 93, 93, 93, 93, 93, 93, 93, 93, 93, 93, - 93, 93, 93, 93, 93, 93, 93, 93, 93, 93, 93, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, @@ -1038,14 +1122,65 @@ public void SetValue() -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1}, -/* nextState[ 74] */ new short[] { // Shortest string "+0" +/* nextState[ 76] */ new short[] { // Shortest string "" + 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, -1, 112, 112, -1, 112, 112, + 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, + 112, 112, 112, 112, 112, 112, 112, 76, 112, 112, 112, 112, 112, 112, 112, 112, + 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, + 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, + 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, + 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, + 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, + 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, + 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, + 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, + 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, + 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, + 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, + 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, + 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112}, +/* nextState[ 77] */ new short[] { // Shortest string "'\\S\\''" + 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, -1, 112, 112, -1, 112, 112, + 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, + 112, 112, 112, 112, 112, 112, 112, 80, 112, 112, 112, 112, 112, 112, 112, 112, + 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, + 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, + 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, + 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, + 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, + 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, + 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, + 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, + 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, + 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, + 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, + 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, + 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112}, +/* nextState[ 78] */ new short[] { // Shortest string "'\\''" + 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, -1, 112, 112, -1, 112, 112, + 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, + 112, 112, 112, 112, 112, 112, 112, 74, 112, 112, 112, 112, 112, 112, 112, 112, + 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, + 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, + 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, + 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, + 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, + 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, + 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, + 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, + 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, + 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, + 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, + 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, + 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112}, +/* nextState[ 79] */ new short[] { // Shortest string "'\\\n'" + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 109, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 89, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 62, -1, - 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 90, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 90, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, @@ -1055,10 +1190,27 @@ public void SetValue() -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1}, -/* nextState[ 75] */ new short[] { // Shortest string "''" +/* nextState[ 80] */ new short[] { // Shortest string "'\\S\\'" + 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 107, 106, 106, 107, 106, 106, + 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, + 106, 106, 106, 106, 106, 106, 106, 77, 106, 106, 106, 106, 106, 106, 106, 106, + 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, + 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, + 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 108, 106, 106, 106, + 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, + 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, + 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, + 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, + 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, + 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, + 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, + 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, + 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, + 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106}, +/* nextState[ 81] */ new short[] { // Shortest string "'\n'" -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 97, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 107, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, @@ -1072,12 +1224,12 @@ public void SetValue() -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1}, -/* nextState[ 76] */ null, // Shortest string "&SCOPE" -/* nextState[ 77] */ new short[] { // Shortest string "#0" - -1, -1, -1, -1, -1, -1, -1, -1, -1, 126, -1, -1, -1, -1, -1, -1, +/* nextState[ 82] */ null, // Shortest string "&SCOPE" +/* nextState[ 83] */ new short[] { // Shortest string "#0" + -1, -1, -1, -1, -1, -1, -1, -1, -1, 188, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 126, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, -1, -1, -1, 78, -1, -1, + 188, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 189, + 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, -1, -1, -1, 84, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, @@ -1090,20 +1242,21 @@ public void SetValue() -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1}, -/* nextState[ 78] */ null, // Shortest string "#0=" -/* nextState[ 79] */ null, // Shortest string "#0\t=" -/* nextState[ 80] */ null, // Shortest string "\"0\"" -/* nextState[ 81] */ null, // Shortest string "!0" -/* nextState[ 82] */ null, // Shortest string "*/" -/* nextState[ 83] */ new short[] { // Shortest string "" +/* nextState[ 84] */ null, // Shortest string "#0=" +/* nextState[ 85] */ null, // Shortest string "#0/=" +/* nextState[ 86] */ null, // Shortest string "\"0\"" +/* nextState[ 87] */ null, // Shortest string "!0" +/* nextState[ 88] */ null, // Shortest string "\n\r" +/* nextState[ 89] */ null, // Shortest string "*/" +/* nextState[ 90] */ new short[] { // Shortest string "" 1, 2, 2, 2, 2, 2, 2, 2, 2, 3, 4, 2, 2, 5, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 6, 7, 8, 9, 10, 2, 11, 12, 13, 14, 15, 16, 17, 16, 18, 19, - 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 2, 21, 2, 22, 2, 2, - 2, 23, 23, 23, 24, 25, 23, 23, 26, 27, 23, 23, 23, 23, 23, 23, - 23, 23, 23, 28, 23, 23, 23, 23, 23, 23, 23, 2, 2, 2, 2, 23, - 2, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, - 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 2, 2, 2, 2, 2, + 3, 6, 7, 8, 9, 2, 10, 11, 12, 13, 14, 15, 16, 15, 17, 18, + 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 2, 20, 2, 21, 2, 2, + 2, 22, 22, 22, 23, 24, 22, 22, 25, 26, 22, 22, 22, 22, 22, 22, + 22, 22, 22, 27, 22, 22, 22, 22, 22, 22, 22, 2, 2, 2, 2, 22, + 2, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, + 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, @@ -1112,11 +1265,11 @@ public void SetValue() 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2}, -/* nextState[ 84] */ new short[] { // Shortest string "ISO-" +/* nextState[ 91] */ new short[] { // Shortest string "ISO-" -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 84, -1, -1, - 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, -1, 35, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 91, -1, -1, + 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, -1, 34, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, @@ -1129,12 +1282,12 @@ public void SetValue() -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1}, -/* nextState[ 85] */ new short[] { // Shortest string "END-" +/* nextState[ 92] */ new short[] { // Shortest string "END-" -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 86, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 93, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, @@ -1146,13 +1299,13 @@ public void SetValue() -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1}, -/* nextState[ 86] */ new short[] { // Shortest string "END-I" +/* nextState[ 93] */ new short[] { // Shortest string "END-I" -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 87, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, 94, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, @@ -1163,12 +1316,12 @@ public void SetValue() -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1}, -/* nextState[ 87] */ new short[] { // Shortest string "END-IS" +/* nextState[ 94] */ new short[] { // Shortest string "END-IS" -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 88, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 95, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, @@ -1180,11 +1333,11 @@ public void SetValue() -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1}, -/* nextState[ 88] */ new short[] { // Shortest string "END-ISO" +/* nextState[ 95] */ new short[] { // Shortest string "END-ISO" -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 88, -1, -1, - 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, -1, 57, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 95, -1, -1, + 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, -1, 56, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, @@ -1197,12 +1350,12 @@ public void SetValue() -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1}, -/* nextState[ 89] */ new short[] { // Shortest string "+.#" +/* nextState[ 96] */ new short[] { // Shortest string "0#" -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 91, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 98, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, @@ -1214,11 +1367,11 @@ public void SetValue() -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1}, -/* nextState[ 90] */ new short[] { // Shortest string "+.E" +/* nextState[ 97] */ new short[] { // Shortest string "0E+" -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 65, -1, 65, -1, -1, - 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, @@ -1231,12 +1384,12 @@ public void SetValue() -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1}, -/* nextState[ 91] */ new short[] { // Shortest string "+.#I" +/* nextState[ 98] */ new short[] { // Shortest string "0#I" -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 92, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 99, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, @@ -1248,12 +1401,12 @@ public void SetValue() -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1}, -/* nextState[ 92] */ new short[] { // Shortest string "+.#IN" +/* nextState[ 99] */ new short[] { // Shortest string "0#IN" -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 67, -1, 67, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, 65, -1, 65, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, @@ -1265,15 +1418,15 @@ public void SetValue() -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1}, -/* nextState[ 93] */ new short[] { // Shortest string ".\x20" +/* nextState[ 100] */ new short[] { // Shortest string ".\x20" -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 93, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 71, -1, - 93, 93, 93, 93, 93, 93, 93, 93, 93, 93, -1, -1, -1, -1, -1, -1, - -1, 93, 93, 93, 93, 93, 93, 93, 93, 93, 93, 93, 93, 93, 93, 93, - 93, 93, 93, 93, 93, 93, 93, 93, 93, 93, 93, -1, -1, -1, -1, 93, - -1, 93, 93, 93, 93, 93, 93, 93, 93, 93, 93, 93, 93, 93, 93, 93, - 93, 93, 93, 93, 93, 93, 93, 93, 93, 93, 93, -1, -1, -1, -1, -1, + 100, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 69, -1, + 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, -1, -1, -1, -1, -1, -1, + -1, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, + 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, -1, -1, -1, -1, 100, + -1, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, + 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, @@ -1282,15 +1435,15 @@ public void SetValue() -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1}, -/* nextState[ 94] */ new short[] { // Shortest string ".F" +/* nextState[ 101] */ new short[] { // Shortest string ".F" -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 93, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 72, -1, - 93, 93, 93, 93, 93, 93, 93, 93, 93, 93, -1, -1, -1, -1, -1, -1, - -1, 93, 93, 93, 93, 93, 93, 93, 93, 93, 93, 93, 93, 93, 93, 93, - 93, 93, 93, 93, 93, 93, 93, 93, 93, 93, 93, -1, -1, -1, -1, 93, - -1, 93, 93, 93, 93, 93, 93, 93, 93, 93, 93, 93, 93, 93, 93, 93, - 93, 93, 93, 93, 93, 93, 93, 93, 93, 93, 93, -1, -1, -1, -1, -1, + 100, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 70, -1, + 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, -1, -1, -1, -1, -1, -1, + -1, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, + 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, -1, -1, -1, -1, 100, + -1, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, + 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, @@ -1299,15 +1452,15 @@ public void SetValue() -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1}, -/* nextState[ 95] */ new short[] { // Shortest string ".U" +/* nextState[ 102] */ new short[] { // Shortest string ".U" -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 93, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 70, -1, - 93, 93, 93, 93, 93, 93, 93, 93, 93, 93, -1, -1, -1, -1, -1, -1, - -1, 93, 93, 93, 93, 93, 93, 93, 93, 93, 93, 93, 93, 93, 93, 93, - 93, 93, 93, 93, 93, 93, 93, 93, 93, 93, 93, -1, -1, -1, -1, 93, - -1, 93, 93, 93, 93, 93, 93, 93, 93, 93, 93, 93, 93, 93, 93, 93, - 93, 93, 93, 93, 93, 93, 93, 93, 93, 93, 93, -1, -1, -1, -1, -1, + 100, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 68, -1, + 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, -1, -1, -1, -1, -1, -1, + -1, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, + 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, -1, -1, -1, -1, 100, + -1, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, + 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, @@ -1316,15 +1469,15 @@ public void SetValue() -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1}, -/* nextState[ 96] */ new short[] { // Shortest string ".0E" +/* nextState[ 103] */ new short[] { // Shortest string ".0E" -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 93, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 65, -1, 65, 71, -1, - 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, -1, -1, -1, -1, -1, -1, - -1, 93, 93, 93, 93, 93, 93, 93, 93, 93, 93, 93, 93, 93, 93, 93, - 93, 93, 93, 93, 93, 93, 93, 93, 93, 93, 93, -1, -1, -1, -1, 93, - -1, 93, 93, 93, 93, 93, 93, 93, 93, 93, 93, 93, 93, 93, 93, 93, - 93, 93, 93, 93, 93, 93, 93, 93, 93, 93, 93, -1, -1, -1, -1, -1, + 100, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 97, -1, 97, 69, -1, + 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, -1, -1, -1, -1, -1, -1, + -1, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, + 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, -1, -1, -1, -1, 100, + -1, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, + 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, @@ -1333,14 +1486,30 @@ public void SetValue() -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1}, -/* nextState[ 97] */ null, // Shortest string "'\x01" -/* nextState[ 98] */ new short[] { // Shortest string "'\\" +/* nextState[ 104] */ new short[] { // Shortest string "+." + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 99, -1, -1, 100, -1, -1, -1, -1, 101, -1, -1, -1, 97, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1}, +/* nextState[ 105] */ new short[] { // Shortest string "+0E" + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 97, -1, 97, -1, -1, + 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, @@ -1351,13 +1520,168 @@ public void SetValue() -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1}, -/* nextState[ 99] */ new short[] { // Shortest string "'\\P" +/* nextState[ 106] */ null, // Shortest string "'\x01" +/* nextState[ 107] */ new short[] { // Shortest string "'\n" + 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, + 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, + 107, 107, 107, 107, 107, 107, 107, 81, 107, 107, 107, 107, 107, 107, 107, 107, + 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, + 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, + 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 160, 107, 107, 107, + 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, + 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, + 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, + 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, + 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, + 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, + 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, + 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, + 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, + 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107}, +/* nextState[ 108] */ new short[] { // Shortest string "'\\" + 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 109, 106, 106, 109, 106, 106, + 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, + 106, 106, 106, 106, 106, 106, 106, 74, 106, 106, 106, 106, 106, 106, 106, 106, + 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, + 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, + 110, 106, 106, 111, 106, 106, 106, 106, 140, 106, 106, 106, 106, 106, 106, 106, + 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, + 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, + 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, + 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, + 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, + 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, + 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, + 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, + 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, + 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106}, +/* nextState[ 109] */ new short[] { // Shortest string "'\\\n" + 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 107, 109, 109, 107, 109, 109, + 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, + 109, 109, 109, 109, 109, 109, 109, 79, 109, 109, 109, 109, 109, 109, 109, 109, + 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, + 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, + 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 116, 109, 109, 109, + 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, + 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, + 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, + 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, + 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, + 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, + 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, + 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, + 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, + 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109}, +/* nextState[ 110] */ new short[] { // Shortest string "'\\P" + 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, -1, 112, 112, -1, 112, 112, + 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, + 112, 112, 112, 112, 112, 112, 112, 75, 112, 112, 112, 112, 112, 112, 112, 112, + 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, + 112, 159, 159, 159, 159, 159, 159, 159, 159, 159, 112, 112, 112, 112, 112, 112, + 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, + 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, + 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, + 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, + 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, + 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, + 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, + 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, + 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, + 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, + 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112}, +/* nextState[ 111] */ new short[] { // Shortest string "'\\S" + 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, -1, 112, 112, -1, 112, 112, + 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, + 112, 112, 112, 112, 112, 112, 112, 75, 112, 112, 112, 112, 112, 112, 112, 112, + 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, + 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, + 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 115, 112, 112, 112, + 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, + 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, + 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, + 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, + 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, + 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, + 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, + 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, + 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, + 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112}, +/* nextState[ 112] */ new short[] { // Shortest string "'\\P\x01" + 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, -1, 112, 112, -1, 112, 112, + 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, + 112, 112, 112, 112, 112, 112, 112, 75, 112, 112, 112, 112, 112, 112, 112, 112, + 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, + 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, + 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, + 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, + 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, + 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, + 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, + 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, + 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, + 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, + 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, + 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, + 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112}, +/* nextState[ 113] */ null, // Shortest string "" +/* nextState[ 114] */ new short[] { // Shortest string "" + 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 109, 106, 106, 109, 106, 106, + 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, + 106, 106, 106, 106, 106, 106, 106, 80, 106, 106, 106, 106, 106, 106, 106, 106, + 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, + 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, + 110, 106, 106, 111, 106, 106, 106, 106, 140, 106, 106, 106, 106, 106, 106, 106, + 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, + 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, + 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, + 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, + 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, + 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, + 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, + 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, + 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, + 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106}, +/* nextState[ 115] */ new short[] { // Shortest string "'\\S\\" + 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, -1, 112, 112, -1, 112, 112, + 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, + 106, 106, 106, 106, 106, 106, 106, 80, 106, 106, 106, 106, 106, 106, 106, 106, + 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, + 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, + 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, + 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, + 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 112, + 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, + 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, + 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, + 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, + 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, + 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, + 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, + 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112}, +/* nextState[ 116] */ new short[] { // Shortest string "'\\\n\\" + 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, + 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, + 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, + 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, + 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, + 117, 109, 109, 118, 109, 109, 109, 109, 119, 109, 109, 109, 109, 109, 109, 109, + 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, + 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, + 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, + 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, + 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, + 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, + 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, + 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, + 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, + 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109}, +/* nextState[ 117] */ new short[] { // Shortest string "'\\\n\\P" + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 128, 128, 128, 128, 128, 128, 128, 128, 128, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 110, 110, 110, 110, 110, 110, 110, 110, 110, 110, 110, 110, 110, 110, 110, - 110, 110, 110, 110, 110, 110, 110, 110, 110, 110, 110, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, @@ -1368,13 +1692,13 @@ public void SetValue() -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1}, -/* nextState[ 100] */ new short[] { // Shortest string "'\\S" +/* nextState[ 118] */ new short[] { // Shortest string "'\\\n\\S" -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 121, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 139, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, @@ -1385,13 +1709,13 @@ public void SetValue() -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1}, -/* nextState[ 101] */ new short[] { // Shortest string "'\\X" +/* nextState[ 119] */ new short[] { // Shortest string "'\\\n\\X" -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 102, -1, 103, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, 120, -1, 121, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 104, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 122, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, @@ -1402,13 +1726,13 @@ public void SetValue() -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1}, -/* nextState[ 102] */ new short[] { // Shortest string "'\\X2" +/* nextState[ 120] */ new short[] { // Shortest string "'\\\n\\X2" -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 117, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 135, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, @@ -1419,13 +1743,13 @@ public void SetValue() -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1}, -/* nextState[ 103] */ new short[] { // Shortest string "'\\X4" +/* nextState[ 121] */ new short[] { // Shortest string "'\\\n\\X4" -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 106, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 124, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, @@ -1436,14 +1760,14 @@ public void SetValue() -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1}, -/* nextState[ 104] */ new short[] { // Shortest string "'\\X\\" +/* nextState[ 122] */ new short[] { // Shortest string "'\\\n\\X\\" -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, -1, -1, -1, -1, -1, -1, - -1, 105, 105, 105, 105, 105, 105, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, -1, -1, -1, -1, -1, -1, + -1, 123, 123, 123, 123, 123, 123, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 105, 105, 105, 105, 105, 105, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 123, 123, 123, 123, 123, 123, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, @@ -1453,14 +1777,14 @@ public void SetValue() -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1}, -/* nextState[ 105] */ new short[] { // Shortest string "'\\X\\0" +/* nextState[ 123] */ new short[] { // Shortest string "'\\\n\\X\\0" -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, -1, -1, -1, -1, -1, -1, - -1, 97, 97, 97, 97, 97, 97, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, -1, -1, -1, -1, -1, -1, + -1, 109, 109, 109, 109, 109, 109, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 97, 97, 97, 97, 97, 97, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 109, 109, 109, 109, 109, 109, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, @@ -1470,14 +1794,14 @@ public void SetValue() -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1}, -/* nextState[ 106] */ new short[] { // Shortest string "'\\X4\\" +/* nextState[ 124] */ new short[] { // Shortest string "'\\\n\\X4\\" -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, -1, -1, -1, -1, -1, -1, - -1, 107, 107, 107, 107, 107, 107, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 108, -1, -1, -1, - -1, 107, 107, 107, 107, 107, 107, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, -1, -1, -1, -1, -1, -1, + -1, 125, 125, 125, 125, 125, 125, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 126, -1, -1, -1, + -1, 125, 125, 125, 125, 125, 125, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, @@ -1487,14 +1811,14 @@ public void SetValue() -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1}, -/* nextState[ 107] */ new short[] { // Shortest string "'\\X4\\0" +/* nextState[ 125] */ new short[] { // Shortest string "'\\\n\\X4\\0" -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 111, 111, 111, 111, 111, 111, 111, 111, 111, 111, -1, -1, -1, -1, -1, -1, - -1, 111, 111, 111, 111, 111, 111, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, -1, -1, -1, -1, -1, -1, + -1, 129, 129, 129, 129, 129, 129, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 111, 111, 111, 111, 111, 111, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 129, 129, 129, 129, 129, 129, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, @@ -1504,13 +1828,13 @@ public void SetValue() -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1}, -/* nextState[ 108] */ new short[] { // Shortest string "'\\X2\\\\" +/* nextState[ 126] */ new short[] { // Shortest string "'\\\n\\X2\\\\" -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 109, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 127, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, @@ -1521,11 +1845,11 @@ public void SetValue() -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1}, -/* nextState[ 109] */ new short[] { // Shortest string "'\\X2\\\\X" +/* nextState[ 127] */ new short[] { // Shortest string "'\\\n\\X2\\\\X" -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 110, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 128, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, @@ -1538,13 +1862,13 @@ public void SetValue() -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1}, -/* nextState[ 110] */ new short[] { // Shortest string "'\\PA" +/* nextState[ 128] */ new short[] { // Shortest string "'\\\n\\PA" -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 97, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 109, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, @@ -1555,14 +1879,14 @@ public void SetValue() -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1}, -/* nextState[ 111] */ new short[] { // Shortest string "'\\X4\\00" +/* nextState[ 129] */ new short[] { // Shortest string "'\\\n\\X4\\00" -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, -1, -1, -1, -1, -1, -1, - -1, 112, 112, 112, 112, 112, 112, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, -1, -1, -1, -1, -1, -1, + -1, 130, 130, 130, 130, 130, 130, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 112, 112, 112, 112, 112, 112, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 130, 130, 130, 130, 130, 130, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, @@ -1572,14 +1896,14 @@ public void SetValue() -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1}, -/* nextState[ 112] */ new short[] { // Shortest string "'\\X4\\000" +/* nextState[ 130] */ new short[] { // Shortest string "'\\\n\\X4\\000" -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, -1, -1, -1, -1, -1, -1, - -1, 113, 113, 113, 113, 113, 113, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 131, 131, 131, 131, 131, 131, 131, 131, 131, 131, -1, -1, -1, -1, -1, -1, + -1, 131, 131, 131, 131, 131, 131, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 113, 113, 113, 113, 113, 113, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 131, 131, 131, 131, 131, 131, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, @@ -1589,14 +1913,14 @@ public void SetValue() -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1}, -/* nextState[ 113] */ new short[] { // Shortest string "'\\X4\\0000" +/* nextState[ 131] */ new short[] { // Shortest string "'\\\n\\X4\\0000" -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, -1, -1, -1, -1, -1, -1, - -1, 114, 114, 114, 114, 114, 114, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, -1, -1, -1, -1, -1, -1, + -1, 132, 132, 132, 132, 132, 132, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 114, 114, 114, 114, 114, 114, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 132, 132, 132, 132, 132, 132, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, @@ -1606,14 +1930,14 @@ public void SetValue() -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1}, -/* nextState[ 114] */ new short[] { // Shortest string "'\\X4\\00000" +/* nextState[ 132] */ new short[] { // Shortest string "'\\\n\\X4\\00000" -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, -1, -1, -1, -1, -1, -1, - -1, 115, 115, 115, 115, 115, 115, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 133, 133, 133, 133, 133, 133, 133, 133, 133, 133, -1, -1, -1, -1, -1, -1, + -1, 133, 133, 133, 133, 133, 133, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 115, 115, 115, 115, 115, 115, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 133, 133, 133, 133, 133, 133, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, @@ -1623,14 +1947,14 @@ public void SetValue() -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1}, -/* nextState[ 115] */ new short[] { // Shortest string "'\\X4\\000000" +/* nextState[ 133] */ new short[] { // Shortest string "'\\\n\\X4\\000000" -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, -1, -1, -1, -1, -1, -1, - -1, 116, 116, 116, 116, 116, 116, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, -1, -1, -1, -1, -1, -1, + -1, 134, 134, 134, 134, 134, 134, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 116, 116, 116, 116, 116, 116, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 134, 134, 134, 134, 134, 134, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, @@ -1640,14 +1964,14 @@ public void SetValue() -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1}, -/* nextState[ 116] */ new short[] { // Shortest string "'\\X4\\0000000" +/* nextState[ 134] */ new short[] { // Shortest string "'\\\n\\X4\\0000000" -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, -1, -1, -1, -1, -1, -1, - -1, 106, 106, 106, 106, 106, 106, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 124, 124, 124, 124, 124, 124, 124, 124, 124, 124, -1, -1, -1, -1, -1, -1, + -1, 124, 124, 124, 124, 124, 124, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 106, 106, 106, 106, 106, 106, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 124, 124, 124, 124, 124, 124, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, @@ -1657,14 +1981,14 @@ public void SetValue() -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1}, -/* nextState[ 117] */ new short[] { // Shortest string "'\\X2\\" +/* nextState[ 135] */ new short[] { // Shortest string "'\\\n\\X2\\" -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, -1, -1, -1, -1, -1, -1, - -1, 118, 118, 118, 118, 118, 118, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 108, -1, -1, -1, - -1, 118, 118, 118, 118, 118, 118, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 136, 136, 136, 136, 136, 136, 136, 136, 136, 136, -1, -1, -1, -1, -1, -1, + -1, 136, 136, 136, 136, 136, 136, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 126, -1, -1, -1, + -1, 136, 136, 136, 136, 136, 136, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, @@ -1674,14 +1998,14 @@ public void SetValue() -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1}, -/* nextState[ 118] */ new short[] { // Shortest string "'\\X2\\0" +/* nextState[ 136] */ new short[] { // Shortest string "'\\\n\\X2\\0" -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, -1, -1, -1, -1, -1, -1, - -1, 119, 119, 119, 119, 119, 119, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, -1, -1, -1, -1, -1, -1, + -1, 137, 137, 137, 137, 137, 137, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 119, 119, 119, 119, 119, 119, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 137, 137, 137, 137, 137, 137, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, @@ -1691,14 +2015,14 @@ public void SetValue() -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1}, -/* nextState[ 119] */ new short[] { // Shortest string "'\\X2\\00" +/* nextState[ 137] */ new short[] { // Shortest string "'\\\n\\X2\\00" -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, -1, -1, -1, -1, -1, -1, - -1, 120, 120, 120, 120, 120, 120, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, -1, -1, -1, -1, -1, -1, + -1, 138, 138, 138, 138, 138, 138, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 120, 120, 120, 120, 120, 120, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 138, 138, 138, 138, 138, 138, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, @@ -1708,14 +2032,14 @@ public void SetValue() -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1}, -/* nextState[ 120] */ new short[] { // Shortest string "'\\X2\\000" +/* nextState[ 138] */ new short[] { // Shortest string "'\\\n\\X2\\000" -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, -1, -1, -1, -1, -1, -1, - -1, 117, 117, 117, 117, 117, 117, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, -1, -1, -1, -1, -1, -1, + -1, 135, 135, 135, 135, 135, 135, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 117, 117, 117, 117, 117, 117, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 135, 135, 135, 135, 135, 135, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, @@ -1725,15 +2049,15 @@ public void SetValue() -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1}, -/* nextState[ 121] */ new short[] { // Shortest string "'\\S\\" +/* nextState[ 139] */ new short[] { // Shortest string "'\\\n\\S\\" -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, - 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, - 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, - 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, - 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, - 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, -1, + 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, + 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, + 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, + 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, + 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, + 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, @@ -1742,12 +2066,369 @@ public void SetValue() -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1}, -/* nextState[ 122] */ new short[] { // Shortest string "&S" +/* nextState[ 140] */ new short[] { // Shortest string "'\\X" + 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, -1, 112, 112, -1, 112, 112, + 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, + 112, 112, 112, 112, 112, 112, 112, 75, 112, 112, 112, 112, 112, 112, 112, 112, + 112, 112, 141, 112, 155, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, + 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, + 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 142, 112, 112, 112, + 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, + 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, + 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, + 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, + 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, + 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, + 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, + 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, + 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, + 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112}, +/* nextState[ 141] */ new short[] { // Shortest string "'\\X2" + 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, -1, 112, 112, -1, 112, 112, + 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, + 112, 112, 112, 112, 112, 112, 112, 75, 112, 112, 112, 112, 112, 112, 112, 112, + 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, + 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, + 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 151, 112, 112, 112, + 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, + 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, + 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, + 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, + 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, + 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, + 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, + 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, + 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, + 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112}, +/* nextState[ 142] */ new short[] { // Shortest string "'\\X\\" + 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, -1, 112, 112, -1, 112, 112, + 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, + 112, 112, 112, 112, 112, 112, 112, 75, 112, 112, 112, 112, 112, 112, 112, 112, + 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 112, 112, 112, 112, 112, 112, + 112, 143, 143, 143, 143, 143, 143, 112, 112, 112, 112, 112, 112, 112, 112, 112, + 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, + 112, 143, 143, 143, 143, 143, 143, 112, 112, 112, 112, 112, 112, 112, 112, 112, + 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, + 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, + 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, + 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, + 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, + 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, + 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, + 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, + 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112}, +/* nextState[ 143] */ new short[] { // Shortest string "'\\X\\0" + 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, -1, 112, 112, -1, 112, 112, + 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, + 112, 112, 112, 112, 112, 112, 112, 75, 112, 112, 112, 112, 112, 112, 112, 112, + 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 112, 112, 112, 112, 112, 112, + 112, 106, 106, 106, 106, 106, 106, 112, 112, 112, 112, 112, 112, 112, 112, 112, + 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, + 112, 106, 106, 106, 106, 106, 106, 112, 112, 112, 112, 112, 112, 112, 112, 112, + 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, + 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, + 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, + 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, + 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, + 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, + 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, + 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, + 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112}, +/* nextState[ 144] */ new short[] { // Shortest string "'\\X4\\0" + 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, -1, 112, 112, -1, 112, 112, + 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, + 112, 112, 112, 112, 112, 112, 112, 75, 112, 112, 112, 112, 112, 112, 112, 112, + 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 112, 112, 112, 112, 112, 112, + 112, 145, 145, 145, 145, 145, 145, 112, 112, 112, 112, 112, 112, 112, 112, 112, + 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, + 112, 145, 145, 145, 145, 145, 145, 112, 112, 112, 112, 112, 112, 112, 112, 112, + 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, + 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, + 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, + 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, + 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, + 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, + 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, + 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, + 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112}, +/* nextState[ 145] */ new short[] { // Shortest string "'\\X4\\00" + 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, -1, 112, 112, -1, 112, 112, + 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, + 112, 112, 112, 112, 112, 112, 112, 75, 112, 112, 112, 112, 112, 112, 112, 112, + 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 112, 112, 112, 112, 112, 112, + 112, 146, 146, 146, 146, 146, 146, 112, 112, 112, 112, 112, 112, 112, 112, 112, + 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, + 112, 146, 146, 146, 146, 146, 146, 112, 112, 112, 112, 112, 112, 112, 112, 112, + 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, + 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, + 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, + 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, + 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, + 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, + 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, + 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, + 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112}, +/* nextState[ 146] */ new short[] { // Shortest string "'\\X4\\000" + 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, -1, 112, 112, -1, 112, 112, + 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, + 112, 112, 112, 112, 112, 112, 112, 75, 112, 112, 112, 112, 112, 112, 112, 112, + 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 112, 112, 112, 112, 112, 112, + 112, 147, 147, 147, 147, 147, 147, 112, 112, 112, 112, 112, 112, 112, 112, 112, + 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, + 112, 147, 147, 147, 147, 147, 147, 112, 112, 112, 112, 112, 112, 112, 112, 112, + 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, + 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, + 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, + 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, + 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, + 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, + 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, + 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, + 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112}, +/* nextState[ 147] */ new short[] { // Shortest string "'\\X4\\0000" + 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, -1, 112, 112, -1, 112, 112, + 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, + 112, 112, 112, 112, 112, 112, 112, 75, 112, 112, 112, 112, 112, 112, 112, 112, + 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 112, 112, 112, 112, 112, 112, + 112, 148, 148, 148, 148, 148, 148, 112, 112, 112, 112, 112, 112, 112, 112, 112, + 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, + 112, 148, 148, 148, 148, 148, 148, 112, 112, 112, 112, 112, 112, 112, 112, 112, + 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, + 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, + 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, + 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, + 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, + 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, + 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, + 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, + 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112}, +/* nextState[ 148] */ new short[] { // Shortest string "'\\X4\\00000" + 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, -1, 112, 112, -1, 112, 112, + 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, + 112, 112, 112, 112, 112, 112, 112, 75, 112, 112, 112, 112, 112, 112, 112, 112, + 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 112, 112, 112, 112, 112, 112, + 112, 149, 149, 149, 149, 149, 149, 112, 112, 112, 112, 112, 112, 112, 112, 112, + 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, + 112, 149, 149, 149, 149, 149, 149, 112, 112, 112, 112, 112, 112, 112, 112, 112, + 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, + 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, + 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, + 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, + 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, + 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, + 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, + 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, + 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112}, +/* nextState[ 149] */ new short[] { // Shortest string "'\\X4\\000000" + 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, -1, 112, 112, -1, 112, 112, + 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, + 112, 112, 112, 112, 112, 112, 112, 75, 112, 112, 112, 112, 112, 112, 112, 112, + 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 112, 112, 112, 112, 112, 112, + 112, 150, 150, 150, 150, 150, 150, 112, 112, 112, 112, 112, 112, 112, 112, 112, + 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, + 112, 150, 150, 150, 150, 150, 150, 112, 112, 112, 112, 112, 112, 112, 112, 112, + 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, + 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, + 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, + 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, + 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, + 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, + 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, + 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, + 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112}, +/* nextState[ 150] */ new short[] { // Shortest string "'\\X4\\0000000" + 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, -1, 112, 112, -1, 112, 112, + 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, + 112, 112, 112, 112, 112, 112, 112, 75, 112, 112, 112, 112, 112, 112, 112, 112, + 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 112, 112, 112, 112, 112, 112, + 112, 156, 156, 156, 156, 156, 156, 112, 112, 112, 112, 112, 112, 112, 112, 112, + 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, + 112, 156, 156, 156, 156, 156, 156, 112, 112, 112, 112, 112, 112, 112, 112, 112, + 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, + 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, + 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, + 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, + 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, + 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, + 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, + 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, + 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112}, +/* nextState[ 151] */ new short[] { // Shortest string "'\\X2\\" + 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, -1, 112, 112, -1, 112, 112, + 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, + 112, 112, 112, 112, 112, 112, 112, 75, 112, 112, 112, 112, 112, 112, 112, 112, + 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 112, 112, 112, 112, 112, 112, + 112, 152, 152, 152, 152, 152, 152, 112, 112, 112, 112, 112, 112, 112, 112, 112, + 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 157, 112, 112, 112, + 112, 152, 152, 152, 152, 152, 152, 112, 112, 112, 112, 112, 112, 112, 112, 112, + 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, + 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, + 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, + 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, + 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, + 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, + 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, + 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, + 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112}, +/* nextState[ 152] */ new short[] { // Shortest string "'\\X2\\0" + 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, -1, 112, 112, -1, 112, 112, + 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, + 112, 112, 112, 112, 112, 112, 112, 75, 112, 112, 112, 112, 112, 112, 112, 112, + 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 112, 112, 112, 112, 112, 112, + 112, 153, 153, 153, 153, 153, 153, 112, 112, 112, 112, 112, 112, 112, 112, 112, + 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, + 112, 153, 153, 153, 153, 153, 153, 112, 112, 112, 112, 112, 112, 112, 112, 112, + 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, + 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, + 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, + 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, + 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, + 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, + 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, + 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, + 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112}, +/* nextState[ 153] */ new short[] { // Shortest string "'\\X2\\00" + 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, -1, 112, 112, -1, 112, 112, + 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, + 112, 112, 112, 112, 112, 112, 112, 75, 112, 112, 112, 112, 112, 112, 112, 112, + 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 112, 112, 112, 112, 112, 112, + 112, 154, 154, 154, 154, 154, 154, 112, 112, 112, 112, 112, 112, 112, 112, 112, + 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, + 112, 154, 154, 154, 154, 154, 154, 112, 112, 112, 112, 112, 112, 112, 112, 112, + 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, + 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, + 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, + 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, + 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, + 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, + 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, + 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, + 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112}, +/* nextState[ 154] */ new short[] { // Shortest string "'\\X2\\000" + 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, -1, 112, 112, -1, 112, 112, + 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, + 112, 112, 112, 112, 112, 112, 112, 75, 112, 112, 112, 112, 112, 112, 112, 112, + 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 112, 112, 112, 112, 112, 112, + 112, 151, 151, 151, 151, 151, 151, 112, 112, 112, 112, 112, 112, 112, 112, 112, + 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, + 112, 151, 151, 151, 151, 151, 151, 112, 112, 112, 112, 112, 112, 112, 112, 112, + 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, + 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, + 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, + 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, + 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, + 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, + 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, + 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, + 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112}, +/* nextState[ 155] */ new short[] { // Shortest string "'\\X4" + 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, -1, 112, 112, -1, 112, 112, + 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, + 112, 112, 112, 112, 112, 112, 112, 75, 112, 112, 112, 112, 112, 112, 112, 112, + 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, + 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, + 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 156, 112, 112, 112, + 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, + 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, + 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, + 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, + 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, + 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, + 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, + 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, + 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, + 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112}, +/* nextState[ 156] */ new short[] { // Shortest string "'\\X4\\" + 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, -1, 112, 112, -1, 112, 112, + 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, + 112, 112, 112, 112, 112, 112, 112, 75, 112, 112, 112, 112, 112, 112, 112, 112, + 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 112, 112, 112, 112, 112, 112, + 112, 144, 144, 144, 144, 144, 144, 112, 112, 112, 112, 112, 112, 112, 112, 112, + 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 157, 112, 112, 112, + 112, 144, 144, 144, 144, 144, 144, 112, 112, 112, 112, 112, 112, 112, 112, 112, + 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, + 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, + 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, + 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, + 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, + 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, + 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, + 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, + 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112}, +/* nextState[ 157] */ new short[] { // Shortest string "'\\X2\\\\" + 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, -1, 112, 112, -1, 112, 112, + 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, + 112, 112, 112, 112, 112, 112, 112, 75, 112, 112, 112, 112, 112, 112, 112, 112, + 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, + 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, + 112, 112, 112, 112, 112, 112, 112, 112, 158, 112, 112, 112, 112, 112, 112, 112, + 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, + 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, + 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, + 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, + 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, + 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, + 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, + 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, + 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, + 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112}, +/* nextState[ 158] */ new short[] { // Shortest string "'\\X2\\\\X" + 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, -1, 112, 112, -1, 112, 112, + 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, + 112, 112, 112, 112, 112, 112, 112, 75, 112, 112, 112, 112, 112, 112, 112, 112, + 159, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, + 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, + 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, + 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, + 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, + 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, + 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, + 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, + 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, + 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, + 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, + 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, + 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112}, +/* nextState[ 159] */ new short[] { // Shortest string "'\\PA" + 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, -1, 112, 112, -1, 112, 112, + 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, + 112, 112, 112, 112, 112, 112, 112, 75, 112, 112, 112, 112, 112, 112, 112, 112, + 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, + 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, + 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 106, 112, 112, 112, + 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, + 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, + 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, + 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, + 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, + 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, + 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, + 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, + 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, + 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112}, +/* nextState[ 160] */ new short[] { // Shortest string "'\n\\" + 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, + 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, + 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, + 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, + 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, + 161, 107, 107, 162, 107, 107, 107, 107, 163, 107, 107, 107, 107, 107, 107, 107, + 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, + 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, + 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, + 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, + 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, + 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, + 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, + 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, + 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, + 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107}, +/* nextState[ 161] */ new short[] { // Shortest string "'\n\\P" -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 123, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 172, 172, 172, 172, 172, 172, 172, 172, 172, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, @@ -1759,30 +2440,47 @@ public void SetValue() -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1}, -/* nextState[ 123] */ new short[] { // Shortest string "&SC" +/* nextState[ 162] */ new short[] { // Shortest string "'\n\\S" + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 183, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 124, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1}, +/* nextState[ 163] */ new short[] { // Shortest string "'\n\\X" + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, 164, -1, 165, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 166, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1}, -/* nextState[ 124] */ new short[] { // Shortest string "&SCO" +/* nextState[ 164] */ new short[] { // Shortest string "'\n\\X2" -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 125, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 179, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, @@ -1793,13 +2491,13 @@ public void SetValue() -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1}, -/* nextState[ 125] */ new short[] { // Shortest string "&SCOP" +/* nextState[ 165] */ new short[] { // Shortest string "'\n\\X4" -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 76, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 168, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, @@ -1810,14 +2508,14 @@ public void SetValue() -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1}, -/* nextState[ 126] */ new short[] { // Shortest string "#0\t" - -1, -1, -1, -1, -1, -1, -1, -1, -1, 126, -1, -1, -1, -1, -1, -1, +/* nextState[ 166] */ new short[] { // Shortest string "'\n\\X\\" -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 126, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 79, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, -1, -1, -1, -1, -1, -1, + -1, 167, 167, 167, 167, 167, 167, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 167, 167, 167, 167, 167, 167, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, @@ -1827,14 +2525,14 @@ public void SetValue() -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1}, -/* nextState[ 127] */ new short[] { // Shortest string "\"0" +/* nextState[ 167] */ new short[] { // Shortest string "'\n\\X\\0" + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 80, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, -1, -1, -1, -1, -1, -1, - -1, 127, 127, 127, 127, 127, 127, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, -1, -1, -1, -1, -1, -1, + -1, 107, 107, 107, 107, 107, 107, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 127, 127, 127, 127, 127, 127, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 107, 107, 107, 107, 107, 107, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, @@ -1844,16 +2542,33 @@ public void SetValue() -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1}, -/* nextState[ 128] */ new short[] { // Shortest string "" +/* nextState[ 168] */ new short[] { // Shortest string "'\n\\X4\\" + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, -1, -1, -1, -1, -1, -1, + -1, 169, 169, 169, 169, 169, 169, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 170, -1, -1, -1, + -1, 169, 169, 169, 169, 169, 169, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 129, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1}, +/* nextState[ 169] */ new short[] { // Shortest string "'\n\\X4\\0" + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, -1, -1, -1, -1, -1, -1, + -1, 173, 173, 173, 173, 173, 173, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 173, 173, 173, 173, 173, 173, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, @@ -1861,13 +2576,13 @@ public void SetValue() -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1}, -/* nextState[ 129] */ new short[] { // Shortest string "*" +/* nextState[ 170] */ new short[] { // Shortest string "'\n\\X2\\\\" -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 82, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 171, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, @@ -1878,170 +2593,541 @@ public void SetValue() -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1}, -}; - - static Scanner() { - nextState[3] = nextState[2]; - nextState[4] = nextState[2]; - nextState[5] = nextState[2]; - nextState[6] = nextState[2]; - nextState[10] = nextState[2]; - nextState[13] = nextState[2]; - nextState[14] = nextState[2]; - nextState[15] = nextState[2]; - nextState[17] = nextState[2]; - nextState[21] = nextState[2]; - nextState[22] = nextState[2]; - nextState[32] = nextState[2]; - nextState[35] = nextState[2]; - nextState[41] = nextState[2]; - nextState[51] = nextState[50]; - nextState[53] = nextState[2]; - nextState[56] = nextState[23]; - nextState[57] = nextState[2]; - nextState[61] = nextState[2]; - nextState[67] = nextState[2]; - nextState[68] = nextState[2]; - nextState[70] = nextState[2]; - nextState[71] = nextState[2]; - nextState[72] = nextState[2]; - nextState[76] = nextState[2]; - nextState[78] = nextState[2]; - nextState[79] = nextState[2]; - nextState[80] = nextState[2]; - nextState[81] = nextState[7]; - nextState[82] = nextState[2]; - nextState[97] = nextState[12]; - } - - -int NextState() { - if (code == ScanBuff.EndOfFile) - return eofNum; - else - return nextState[state][code]; -} - -#endregion - - -#if BACKUP - // ============================================================== - // == Nested struct used for backup in automata that do backup == - // ============================================================== - - struct Context // class used for automaton backup. - { - public long bPos; - public long rPos; // scanner.readPos saved value - public int cCol; - public int lNum; // Need this in case of backup over EOL. - public int state; - public int cChr; - } - - private Context ctx = new Context(); -#endif // BACKUP - - // ============================================================== - // ==== Nested struct to support input switching in scanners ==== - // ============================================================== - - struct BufferContext { - internal ScanBuff buffSv; - internal int chrSv; - internal int cColSv; - internal int lNumSv; - } - - // ============================================================== - // ===== Private methods to save and restore buffer contexts ==== - // ============================================================== - - /// - /// This method creates a buffer context record from - /// the current buffer object, together with some - /// scanner state values. - /// - [SuppressMessage("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")] - BufferContext MkBuffCtx() - { - BufferContext rslt; - rslt.buffSv = this.buffer; - rslt.chrSv = this.code; - rslt.cColSv = this.cCol; - rslt.lNumSv = this.lNum; - return rslt; - } - - /// - /// This method restores the buffer value and allied - /// scanner state from the given context record value. - /// - [SuppressMessage("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")] - void RestoreBuffCtx(BufferContext value) - { - this.buffer = value.buffSv; - this.code = value.chrSv; - this.cCol = value.cColSv; - this.lNum = value.lNumSv; - } - // =================== End Nested classes ======================= - -#if !NOFILES - public Scanner(Stream file) - { - SetSource(file); // no unicode option - } -#endif // !NOFILES - - public Scanner() - { } - - private long readPos; - - void GetCode() - { - if (code == '\n') // This needs to be fixed for other conventions - // i.e. [\r\n\205\u2028\u2029] - { - cCol = -1; - lNum++; - } - readPos = buffer.Pos; - - // Now read new codepoint. - code = buffer.Read(); - if (code > ScanBuff.EndOfFile) - { -#if (!BYTEMODE) - if (code >= 0xD800 && code <= 0xDBFF) - { - int next = buffer.Read(); - if (next < 0xDC00 || next > 0xDFFF) - code = ScanBuff.UnicodeReplacementChar; - else - code = (0x10000 + ((code & 0x3FF) << 10) + (next & 0x3FF)); - } -#endif - cCol++; - } - } - - void MarkToken() - { -#if (!PERSIST) - buffer.Mark(); -#endif - tokPos = readPos; - tokLin = lNum; - tokCol = cCol; - } - - void MarkEnd() - { - tokTxt = null; - tokEPos = readPos; +/* nextState[ 171] */ new short[] { // Shortest string "'\n\\X2\\\\X" + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 172, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1}, +/* nextState[ 172] */ new short[] { // Shortest string "'\n\\PA" + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 107, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1}, +/* nextState[ 173] */ new short[] { // Shortest string "'\n\\X4\\00" + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, -1, -1, -1, -1, -1, -1, + -1, 174, 174, 174, 174, 174, 174, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 174, 174, 174, 174, 174, 174, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1}, +/* nextState[ 174] */ new short[] { // Shortest string "'\n\\X4\\000" + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, -1, -1, -1, -1, -1, -1, + -1, 175, 175, 175, 175, 175, 175, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 175, 175, 175, 175, 175, 175, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1}, +/* nextState[ 175] */ new short[] { // Shortest string "'\n\\X4\\0000" + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, -1, -1, -1, -1, -1, -1, + -1, 176, 176, 176, 176, 176, 176, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 176, 176, 176, 176, 176, 176, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1}, +/* nextState[ 176] */ new short[] { // Shortest string "'\n\\X4\\00000" + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, -1, -1, -1, -1, -1, -1, + -1, 177, 177, 177, 177, 177, 177, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 177, 177, 177, 177, 177, 177, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1}, +/* nextState[ 177] */ new short[] { // Shortest string "'\n\\X4\\000000" + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, -1, -1, -1, -1, -1, -1, + -1, 178, 178, 178, 178, 178, 178, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 178, 178, 178, 178, 178, 178, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1}, +/* nextState[ 178] */ new short[] { // Shortest string "'\n\\X4\\0000000" + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, -1, -1, -1, -1, -1, -1, + -1, 168, 168, 168, 168, 168, 168, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 168, 168, 168, 168, 168, 168, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1}, +/* nextState[ 179] */ new short[] { // Shortest string "'\n\\X2\\" + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, -1, -1, -1, -1, -1, -1, + -1, 180, 180, 180, 180, 180, 180, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 170, -1, -1, -1, + -1, 180, 180, 180, 180, 180, 180, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1}, +/* nextState[ 180] */ new short[] { // Shortest string "'\n\\X2\\0" + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, -1, -1, -1, -1, -1, -1, + -1, 181, 181, 181, 181, 181, 181, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 181, 181, 181, 181, 181, 181, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1}, +/* nextState[ 181] */ new short[] { // Shortest string "'\n\\X2\\00" + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, -1, -1, -1, -1, -1, -1, + -1, 182, 182, 182, 182, 182, 182, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 182, 182, 182, 182, 182, 182, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1}, +/* nextState[ 182] */ new short[] { // Shortest string "'\n\\X2\\000" + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, -1, -1, -1, -1, -1, -1, + -1, 179, 179, 179, 179, 179, 179, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 179, 179, 179, 179, 179, 179, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1}, +/* nextState[ 183] */ new short[] { // Shortest string "'\n\\S\\" + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, + 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, + 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, + 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, + 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, + 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1}, +/* nextState[ 184] */ new short[] { // Shortest string "&S" + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, 185, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1}, +/* nextState[ 185] */ new short[] { // Shortest string "&SC" + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 186, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1}, +/* nextState[ 186] */ new short[] { // Shortest string "&SCO" + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 187, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1}, +/* nextState[ 187] */ new short[] { // Shortest string "&SCOP" + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 82, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1}, +/* nextState[ 188] */ new short[] { // Shortest string "#0\t" + -1, -1, -1, -1, -1, -1, -1, -1, -1, 188, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 188, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 84, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1}, +/* nextState[ 189] */ new short[] { // Shortest string "#0/" + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 85, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1}, +/* nextState[ 190] */ new short[] { // Shortest string "\"0" + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, 86, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, -1, -1, -1, -1, -1, -1, + -1, 190, 190, 190, 190, 190, 190, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 190, 190, 190, 190, 190, 190, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1}, +/* nextState[ 191] */ new short[] { // Shortest string "" + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 192, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1}, +/* nextState[ 192] */ new short[] { // Shortest string "*" + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 89, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1}, +}; + + static Scanner() { + nextState[3] = nextState[2]; + nextState[9] = nextState[2]; + nextState[12] = nextState[2]; + nextState[13] = nextState[2]; + nextState[14] = nextState[2]; + nextState[16] = nextState[2]; + nextState[20] = nextState[2]; + nextState[21] = nextState[2]; + nextState[31] = nextState[2]; + nextState[34] = nextState[2]; + nextState[40] = nextState[2]; + nextState[50] = nextState[49]; + nextState[52] = nextState[2]; + nextState[55] = nextState[22]; + nextState[56] = nextState[2]; + nextState[60] = nextState[2]; + nextState[65] = nextState[2]; + nextState[66] = nextState[2]; + nextState[68] = nextState[2]; + nextState[69] = nextState[2]; + nextState[70] = nextState[2]; + nextState[82] = nextState[2]; + nextState[84] = nextState[2]; + nextState[85] = nextState[2]; + nextState[86] = nextState[2]; + nextState[87] = nextState[6]; + nextState[88] = nextState[2]; + nextState[89] = nextState[2]; + nextState[106] = nextState[11]; + nextState[113] = nextState[76]; + } + + +int NextState() { + if (code == ScanBuff.EndOfFile) + return eofNum; + else + return nextState[state][code]; +} + +#endregion + + +#if BACKUP + // ============================================================== + // == Nested struct used for backup in automata that do backup == + // ============================================================== + + struct Context // class used for automaton backup. + { + public long bPos; + public long rPos; // scanner.readPos saved value + public int cCol; + public int lNum; // Need this in case of backup over EOL. + public int state; + public int cChr; + } + + private Context ctx = new Context(); +#endif // BACKUP + + // ============================================================== + // ==== Nested struct to support input switching in scanners ==== + // ============================================================== + + struct BufferContext { + internal ScanBuff buffSv; + internal int chrSv; + internal int cColSv; + internal int lNumSv; + } + + // ============================================================== + // ===== Private methods to save and restore buffer contexts ==== + // ============================================================== + + /// + /// This method creates a buffer context record from + /// the current buffer object, together with some + /// scanner state values. + /// + [SuppressMessage("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")] + BufferContext MkBuffCtx() + { + BufferContext rslt; + rslt.buffSv = this.buffer; + rslt.chrSv = this.code; + rslt.cColSv = this.cCol; + rslt.lNumSv = this.lNum; + return rslt; + } + + /// + /// This method restores the buffer value and allied + /// scanner state from the given context record value. + /// + [SuppressMessage("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")] + void RestoreBuffCtx(BufferContext value) + { + this.buffer = value.buffSv; + this.code = value.chrSv; + this.cCol = value.cColSv; + this.lNum = value.lNumSv; + } + // =================== End Nested classes ======================= + +#if !NOFILES + public Scanner(Stream file) { + SetSource(file); // no unicode option + } +#endif // !NOFILES + + public Scanner() { } + + private long readPos; + + void GetCode() + { + if (code == '\n') // This needs to be fixed for other conventions + // i.e. [\r\n\205\u2028\u2029] + { + cCol = -1; + lNum++; + } + readPos = buffer.Pos; + + // Now read new codepoint. + code = buffer.Read(); + if (code > ScanBuff.EndOfFile) + { +#if (!BYTEMODE) + if (code >= 0xD800 && code <= 0xDBFF) + { + int next = buffer.Read(); + if (next < 0xDC00 || next > 0xDFFF) + code = ScanBuff.UnicodeReplacementChar; + else + code = (0x10000 + ((code & 0x3FF) << 10) + (next & 0x3FF)); + } +#endif + cCol++; + } + } + + void MarkToken() + { +#if (!PERSIST) + buffer.Mark(); +#endif + tokPos = readPos; + tokLin = lNum; + tokCol = cCol; + } + + void MarkEnd() + { + tokTxt = null; + tokEPos = readPos; tokELin = lNum; tokECol = cCol; } @@ -2338,166 +3424,170 @@ int Scan() { if (yywrap()) return (int)Tokens.EOF; break; - case 1: // Recognized '[\0]+', Shortest string "" + case 1: // Recognized '{nullbytes}', Shortest string "" ; break; case 2: // Recognized '[^)]', Shortest string "\x01" - case 7: // Recognized '[^)]', Shortest string "!" - case 8: // Recognized '[^)]', Shortest string "\"" - case 9: // Recognized '[^)]', Shortest string "#" - case 11: // Recognized '[^)]', Shortest string "&" - case 12: // Recognized '[^)]', Shortest string "'" - case 18: // Recognized '[^)]', Shortest string "." -SetValue(); return((int)Tokens.MISC); - break; - case 3: // Recognized '"\t"', Shortest string "\t" -; - break; - case 4: // Recognized '[\n]', Shortest string "\n" -; + case 6: // Recognized '[^)]', Shortest string "!" + case 7: // Recognized '[^)]', Shortest string "\"" + case 8: // Recognized '[^)]', Shortest string "#" + case 10: // Recognized '[^)]', Shortest string "&" + case 11: // Recognized '[^)]', Shortest string "'" + case 15: // Recognized '[^)]', Shortest string "+" + case 17: // Recognized '[^)]', Shortest string "." +SetValue(); return((int)Tokens.MISC); break; - case 5: // Recognized '[\r]', Shortest string "\r" + case 3: // Recognized '{whitespace}', Shortest string "\t" ; break; - case 6: // Recognized '" "', Shortest string "\x20" + case 4: // Recognized '{new_line}', Shortest string "\n" + case 5: // Recognized '{new_line}', Shortest string "\r" + case 88: // Recognized '{new_line}', Shortest string "\n\r" ; break; - case 10: // Recognized '[$]', Shortest string "$" + case 9: // Recognized '{notdefined}', Shortest string "$" return((int)Tokens.NONDEF); break; - case 13: // Recognized '[(]', Shortest string "(" + case 12: // Recognized '[(]', Shortest string "(" return ('('); break; - case 14: // Recognized '[)]', Shortest string ")" + case 13: // Recognized '[)]', Shortest string ")" return (')'); break; - case 15: // Recognized '[\*]', Shortest string "*" + case 14: // Recognized '[\*]', Shortest string "*" return((int)Tokens.OVERRIDE); break; - case 16: // Recognized '[\-\+0-9][0-9]*', Shortest string "+" - case 20: // Recognized '[\-\+0-9][0-9]*', Shortest string "0" - case 63: // Recognized '[\-\+0-9][0-9]*', Shortest string "00" - case 74: // Recognized '[\-\+0-9][0-9]*', Shortest string "+0" -SetValue(); return((int)Tokens.INTEGER); - break; - case 17: // Recognized '[,]', Shortest string "," + case 16: // Recognized '[,]', Shortest string "," return (','); break; - case 19: // Recognized '[/]', Shortest string "/" + case 18: // Recognized '[/]', Shortest string "/" return ('/'); break; - case 21: // Recognized '[;]', Shortest string ";" + case 19: // Recognized '{integer}', Shortest string "0" + case 72: // Recognized '{integer}', Shortest string "+0" +SetValue(); return((int)Tokens.INTEGER); + break; + case 20: // Recognized '[;]', Shortest string ";" return (';'); break; - case 22: // Recognized '[=]', Shortest string "=" + case 21: // Recognized '[=]', Shortest string "=" return ('='); break; - case 23: // Recognized '[a-zA-Z0-9_]+', Shortest string "A" - case 24: // Recognized '[a-zA-Z0-9_]+', Shortest string "D" - case 25: // Recognized '[a-zA-Z0-9_]+', Shortest string "E" - case 26: // Recognized '[a-zA-Z0-9_]+', Shortest string "H" - case 27: // Recognized '[a-zA-Z0-9_]+', Shortest string "I" - case 28: // Recognized '[a-zA-Z0-9_]+', Shortest string "S" - case 29: // Recognized '[a-zA-Z0-9_]+', Shortest string "ST" - case 30: // Recognized '[a-zA-Z0-9_]+', Shortest string "STE" - case 31: // Recognized '[a-zA-Z0-9_]+', Shortest string "STEP" - case 33: // Recognized '[a-zA-Z0-9_]+', Shortest string "IS" - case 34: // Recognized '[a-zA-Z0-9_]+', Shortest string "ISO" - case 36: // Recognized '[a-zA-Z0-9_]+', Shortest string "HE" - case 37: // Recognized '[a-zA-Z0-9_]+', Shortest string "HEA" - case 38: // Recognized '[a-zA-Z0-9_]+', Shortest string "HEAD" - case 39: // Recognized '[a-zA-Z0-9_]+', Shortest string "HEADE" - case 40: // Recognized '[a-zA-Z0-9_]+', Shortest string "HEADER" - case 42: // Recognized '[a-zA-Z0-9_]+', Shortest string "EN" - case 43: // Recognized '[a-zA-Z0-9_]+', Shortest string "END" - case 44: // Recognized '[a-zA-Z0-9_]+', Shortest string "ENDS" - case 45: // Recognized '[a-zA-Z0-9_]+', Shortest string "ENDSC" - case 46: // Recognized '[a-zA-Z0-9_]+', Shortest string "ENDSE" - case 47: // Recognized '[a-zA-Z0-9_]+', Shortest string "ENDST" - case 48: // Recognized '[a-zA-Z0-9_]+', Shortest string "ENDSTE" - case 49: // Recognized '[a-zA-Z0-9_]+', Shortest string "ENDSTEP" - case 52: // Recognized '[a-zA-Z0-9_]+', Shortest string "ENDSEC" - case 54: // Recognized '[a-zA-Z0-9_]+', Shortest string "ENDSCO" - case 55: // Recognized '[a-zA-Z0-9_]+', Shortest string "ENDSCOP" - case 58: // Recognized '[a-zA-Z0-9_]+', Shortest string "DA" - case 59: // Recognized '[a-zA-Z0-9_]+', Shortest string "DAT" - case 60: // Recognized '[a-zA-Z0-9_]+', Shortest string "DATA" - case 64: // Recognized '[a-zA-Z0-9_]+', Shortest string "00E" + case 22: // Recognized '[a-zA-Z0-9_]+', Shortest string "A" + case 23: // Recognized '[a-zA-Z0-9_]+', Shortest string "D" + case 24: // Recognized '[a-zA-Z0-9_]+', Shortest string "E" + case 25: // Recognized '[a-zA-Z0-9_]+', Shortest string "H" + case 26: // Recognized '[a-zA-Z0-9_]+', Shortest string "I" + case 27: // Recognized '[a-zA-Z0-9_]+', Shortest string "S" + case 28: // Recognized '[a-zA-Z0-9_]+', Shortest string "ST" + case 29: // Recognized '[a-zA-Z0-9_]+', Shortest string "STE" + case 30: // Recognized '[a-zA-Z0-9_]+', Shortest string "STEP" + case 32: // Recognized '[a-zA-Z0-9_]+', Shortest string "IS" + case 33: // Recognized '[a-zA-Z0-9_]+', Shortest string "ISO" + case 35: // Recognized '[a-zA-Z0-9_]+', Shortest string "HE" + case 36: // Recognized '[a-zA-Z0-9_]+', Shortest string "HEA" + case 37: // Recognized '[a-zA-Z0-9_]+', Shortest string "HEAD" + case 38: // Recognized '[a-zA-Z0-9_]+', Shortest string "HEADE" + case 39: // Recognized '[a-zA-Z0-9_]+', Shortest string "HEADER" + case 41: // Recognized '[a-zA-Z0-9_]+', Shortest string "EN" + case 42: // Recognized '[a-zA-Z0-9_]+', Shortest string "END" + case 43: // Recognized '[a-zA-Z0-9_]+', Shortest string "ENDS" + case 44: // Recognized '[a-zA-Z0-9_]+', Shortest string "ENDSC" + case 45: // Recognized '[a-zA-Z0-9_]+', Shortest string "ENDSE" + case 46: // Recognized '[a-zA-Z0-9_]+', Shortest string "ENDST" + case 47: // Recognized '[a-zA-Z0-9_]+', Shortest string "ENDSTE" + case 48: // Recognized '[a-zA-Z0-9_]+', Shortest string "ENDSTEP" + case 51: // Recognized '[a-zA-Z0-9_]+', Shortest string "ENDSEC" + case 53: // Recognized '[a-zA-Z0-9_]+', Shortest string "ENDSCO" + case 54: // Recognized '[a-zA-Z0-9_]+', Shortest string "ENDSCOP" + case 57: // Recognized '[a-zA-Z0-9_]+', Shortest string "DA" + case 58: // Recognized '[a-zA-Z0-9_]+', Shortest string "DAT" + case 59: // Recognized '[a-zA-Z0-9_]+', Shortest string "DATA" + case 62: // Recognized '[a-zA-Z0-9_]+', Shortest string "0E" SetValue(); return((int)Tokens.TYPE); break; - case 32: // Recognized 'STEP;', Shortest string "STEP;" + case 31: // Recognized 'STEP;', Shortest string "STEP;" return((int)Tokens.ISOSTEPSTART); break; - case 35: // Recognized 'ISO[0-9\-]*;', Shortest string "ISO;" + case 34: // Recognized 'ISO[0-9\-]*;', Shortest string "ISO;" return((int)Tokens.ISOSTEPSTART); break; - case 41: // Recognized 'HEADER;', Shortest string "HEADER;" + case 40: // Recognized 'HEADER;', Shortest string "HEADER;" return((int)Tokens.HEADER); break; - case 50: // Recognized 'ENDSTEP;', Shortest string "ENDSTEP;" + case 49: // Recognized 'ENDSTEP;', Shortest string "ENDSTEP;" return((int)Tokens.ISOSTEPEND); break; - case 51: // Recognized '"ENDSTEP;".*', Shortest string "ENDSTEP;\x01" + case 50: // Recognized '"ENDSTEP;".*', Shortest string "ENDSTEP;\x01" return((int)Tokens.ISOSTEPEND); break; - case 53: // Recognized 'ENDSEC;', Shortest string "ENDSEC;" + case 52: // Recognized 'ENDSEC;', Shortest string "ENDSEC;" return((int)Tokens.ENDSEC); break; - case 56: // Recognized 'ENDSCOPE', Shortest string "ENDSCOPE" + case 55: // Recognized 'ENDSCOPE', Shortest string "ENDSCOPE" return((int)Tokens.ENDSCOPE); break; - case 57: // Recognized '"END-ISO"[0-9\-]*;', Shortest string "END-ISO;" + case 56: // Recognized '"END-ISO"[0-9\-]*;', Shortest string "END-ISO;" return((int)Tokens.ISOSTEPEND); break; - case 61: // Recognized 'DATA;', Shortest string "DATA;" + case 60: // Recognized 'DATA;', Shortest string "DATA;" return((int)Tokens.DATA); break; - case 62: // Recognized '[\-\+\.0-9][\.0-9]+((#INF)|(#IND))?', Shortest string "+." - case 67: // Recognized '[\-\+\.0-9][\.0-9]+((#INF)|(#IND))?', Shortest string "+.#IND" - case 69: // Recognized '[\-\+\.0-9][\.0-9]+((#INF)|(#IND))?', Shortest string ".0" -SetValue(); return((int)Tokens.FLOAT); - break; - case 65: // Recognized '[\-\+\.0-9][\.0-9]+(E|e)[\-\+0-9][0-9]*', Shortest string "+.E+" - case 66: // Recognized '[\-\+\.0-9][\.0-9]+(E|e)[\-\+0-9][0-9]*', Shortest string "00E0" - case 73: // Recognized '[\-\+\.0-9][\.0-9]+(E|e)[\-\+0-9][0-9]*', Shortest string ".0E0" + case 61: // Recognized '{real}', Shortest string "0." + case 63: // Recognized '{real}', Shortest string "0E0" + case 64: // Recognized '{real}', Shortest string "+0E0" + case 65: // Recognized '{real}', Shortest string "0#IND" + case 67: // Recognized '{real}', Shortest string ".0" + case 71: // Recognized '{real}', Shortest string ".0E0" SetValue(); return((int)Tokens.FLOAT); break; - case 68: // Recognized '"/*"', Shortest string "/*" + case 66: // Recognized '"/*"', Shortest string "/*" BEGIN(COMMENT); break; - case 70: // Recognized '[\.][U][\.]', Shortest string ".U." + case 68: // Recognized '{dot}{undefined}{dot}', Shortest string ".U." return((int)Tokens.NONDEF); break; - case 71: // Recognized '[\.][a-zA-Z0-9_ ]+[\.]', Shortest string ".\x20." + case 69: // Recognized '{dot}[a-zA-Z0-9_ ]+{dot}', Shortest string ".\x20." SetValue(); return((int)Tokens.ENUM); break; - case 72: // Recognized '[\.][TF][\.]', Shortest string ".F." + case 70: // Recognized '{dot}{boolean}{dot}', Shortest string ".F." SetValue(); return((int)Tokens.BOOLEAN); break; - case 75: // Recognized '[\']([\001-\046\050-\133\135-\377]|(\\\\)|(\'\')|(\\S\\[\040-\176])|(\\P[\101-\132]\\)|(\\X2\\([0-9A-Fa-f]{4})*\\X0\\)|(\\X4\\([0-9A-Fa-f]{8})*\\X0\\)|(\\X\\[0-9A-Fa-f]{2}))*[\']', Shortest string "''" + case 73: // Recognized '{string_literal}', Shortest string "''" + case 77: // Recognized '{string_literal}', Shortest string "'\\S\\''" + case 78: // Recognized '{string_literal}', Shortest string "'\\''" + case 79: // Recognized '{string_literal}', Shortest string "'\\\n'" SetValue(); return((int)Tokens.STRING); break; - case 76: // Recognized '&SCOPE', Shortest string "&SCOPE" + case 74: // Recognized '{bad_string_literal}', Shortest string "'\\'" + case 75: // Recognized '{bad_string_literal}', Shortest string "'\\P'" + case 76: // Recognized '{bad_string_literal}', Shortest string "" + case 80: // Recognized '{bad_string_literal}', Shortest string "'\\S\\'" +SetValue(); return((int)Tokens.INVALIDSTRING); + break; + case 81: // Recognized '{ml_string_literal}', Shortest string "'\n'" +SetValue(); return((int)Tokens.MLSTRING); + break; + case 82: // Recognized '&SCOPE', Shortest string "&SCOPE" return((int)Tokens.SCOPE); break; - case 77: // Recognized '#[0-9]+', Shortest string "#0" + case 83: // Recognized '{entity_identifier}', Shortest string "#0" SetValue(); return((int)Tokens.IDENTITY); break; - case 78: // Recognized '#[0-9]+/=', Shortest string "#0=" + case 84: // Recognized '#[0-9]+[ \t]*/=', Shortest string "#0=" _yytrunc(1); SetValue(); return((int)Tokens.ENTITY); break; - case 79: // Recognized '#[0-9]+[ \t]*/=', Shortest string "#0\t=" -_yytrunc(1); + case 85: // Recognized '{entity}', Shortest string "#0/=" SetValue(); return((int)Tokens.ENTITY); break; - case 80: // Recognized '[\"][0-9A-Fa-f]+[\"]', Shortest string "\"0\"" + case 86: // Recognized '{hexid}', Shortest string "\"0\"" SetValue(); return((int)Tokens.HEXA); break; - case 81: // Recognized '![a-zA-Z0-9_]+', Shortest string "!0" + case 87: // Recognized '![a-zA-Z0-9_]+', Shortest string "!0" SetValue(); return((int)Tokens.TYPE); break; - case 82: // In Recognized '"*/"', Shortest string "*/" + case 89: // In Recognized '"*/"', Shortest string "*/" BEGIN(INITIAL); break; default: @@ -2565,721 +3655,5 @@ internal void yy_pop_state() } // end class $Scanner - // ============================================================== - // - // This code automatically produced from an embedded resource. - // Do not edit this file, or it will become incompatible with - // the specification from which it was generated. - // - // ============================================================== - - // Code copied from GPLEX embedded resource -#if !NET8_0 - [Serializable] -#endif - public class BufferException : Exception - { - public BufferException() { } - public BufferException(string message) : base(message) { } - public BufferException(string message, Exception innerException) - : base(message, innerException) { } - -#if !NET8_0 - protected BufferException(SerializationInfo info, StreamingContext context) - : base(info, context) { } -#endif - } - - public abstract class ScanBuff - { - private string fileNm; - - public const int EndOfFile = -1; - public const int UnicodeReplacementChar = 0xFFFD; - - public bool IsFile { get { return (fileNm != null); } } - public string FileName { get { return fileNm; } set { fileNm = value; } } - - public abstract long Pos { get; set; } - public abstract int Read(); - public virtual void Mark() { } - - public abstract string GetString(long begin, long limit); - - public static ScanBuff GetBuffer(string source) - { - return new StringBuffer(source); - } - - public static ScanBuff GetBuffer(IList source) - { - return new LineBuffer(source); - } - -#if (!NOFILES) - public static ScanBuff GetBuffer(Stream source) - { - return new BuildBuffer(source); - } - -#if (!BYTEMODE) - public static ScanBuff GetBuffer(Stream source, int fallbackCodePage) - { - return new BuildBuffer(source, fallbackCodePage); - } -#endif // !BYTEMODE -#endif // !NOFILES - } - - #region Buffer classes - - // ============================================================== - // ===== Definitions for various ScanBuff derived classes ==== - // ============================================================== - // =============== String input ================ - // ============================================================== - - /// - /// This class reads characters from a single string as - /// required, for example, by Visual Studio language services - /// - sealed class StringBuffer : ScanBuff - { - string str; // input buffer - long bPos; // current position in buffer - int sLen; - - public StringBuffer(string source) - { - this.str = source; - this.sLen = source.Length; - this.FileName = null; - } - - public override int Read() - { - if (bPos < sLen) return str[(int)bPos++]; - else if (bPos == sLen) { bPos++; return '\n'; } // one strike, see new line - else { bPos++; return EndOfFile; } // two strikes and you're out! - } - - public override string GetString(long begin, long limit) - { - // "limit" can be greater than sLen with the BABEL - // option set. Read returns a "virtual" EOL if - // an attempt is made to read past the end of the - // string buffer. Without the guard any attempt - // to fetch yytext for a token that includes the - // EOL will throw an index exception. - if (limit > sLen) limit = sLen; - if (limit <= begin) return ""; - else return str.Substring((int)begin, (int)(limit - begin)); - } - - public override long Pos - { - get { return bPos; } - set { bPos = value; } - } - - public override string ToString() { return "StringBuffer"; } - } - - // ============================================================== - // The LineBuff class contributed by Nigel Horspool, - // nigelh@cs.uvic.cs - // ============================================================== - - sealed class LineBuffer : ScanBuff - { - IList line; // list of source lines from a file - int numLines; // number of strings in line list - string curLine; // current line in that list - int cLine; // index of current line in the list - int curLen; // length of current line - long curLineStart; // position of line start in whole file - long curLineEnd; // position of line end in whole file - long maxPos; // max position ever visited in whole file - long cPos; // ordinal number of code in source - - // Constructed from a list of strings, one per source line. - // The lines have had trailing '\n' characters removed. - public LineBuffer(IList lineList) - { - line = lineList; - numLines = line.Count; - cPos = curLineStart = 0; - curLine = (numLines > 0 ? line[0] : ""); - maxPos = curLineEnd = curLen = curLine.Length; - cLine = 1; - FileName = null; - } - - public override int Read() - { - if (cPos < curLineEnd) - return curLine[(int)(cPos++ - curLineStart)]; - if (cPos++ == curLineEnd) - return '\n'; - if (cLine >= numLines) - return EndOfFile; - curLine = line[cLine]; - curLen = curLine.Length; - curLineStart = curLineEnd + 1; - curLineEnd = curLineStart + curLen; - if (curLineEnd > maxPos) - maxPos = curLineEnd; - cLine++; - return curLen > 0 ? curLine[0] : '\n'; - } - - // To speed up searches for the line containing a position - private long cachedPosition; - private long cachedLineStart; - private int cachedIxdex; - - // Given a position pos within the entire source, the results are - // ix -- the index of the containing line - // lstart -- the position of the first character on that line - private void findIndex(long pos, out int ix, out long lstart) - { - if (pos >= cachedPosition) - { - ix = cachedIxdex; lstart = cachedLineStart; - } - else - { - ix = 0; - lstart = 0; - } - while (ix < numLines) - { - int len = line[ix].Length + 1; - if (pos < lstart + len) break; - lstart += len; - ix++; - } - cachedPosition = pos; - cachedIxdex = ix; - cachedLineStart = lstart; - } - - public override string GetString(long begin, long limit) - { - if (begin >= maxPos || limit <= begin) return ""; - int endIx, begIx; - long begLineStart, endLineStart; - findIndex(begin, out begIx, out begLineStart); - int begCol = (int)(begin - begLineStart); - findIndex(limit, out endIx, out endLineStart); - int endCol = (int)(limit - endLineStart); - string s = line[begIx]; - if (begIx == endIx) - { - // the usual case, substring all on one line - return (endCol <= s.Length) ? - s.Substring(begCol, endCol - begCol) - : s.Substring(begCol) + "\n"; - } - // the string spans multiple lines, yuk! - StringBuilder sb = new StringBuilder(); - if (begCol < s.Length) - sb.Append(s.Substring(begCol)); - for (; ; ) - { - sb.Append("\n"); - s = line[++begIx]; - if (begIx >= endIx) break; - sb.Append(s); - } - if (endCol <= s.Length) - { - sb.Append(s.Substring(0, endCol)); - } - else - { - sb.Append(s); - sb.Append("\n"); - } - return sb.ToString(); - } - - public override long Pos - { - get { return cPos; } - set - { - cPos = value; - findIndex(cPos, out cLine, out curLineStart); - // cLine should be the *next* line after curLine. - curLine = (cLine < numLines ? line[cLine++] : ""); - curLineEnd = curLineStart + curLine.Length; - } - } - - public override string ToString() { return "LineBuffer"; } - } - -#if (!NOFILES) - // ============================================================== - // ===== class BuildBuff : for unicode text files ======== - // ============================================================== - - class BuildBuffer : ScanBuff - { - // Double buffer for char stream. - class BufferElement - { - StringBuilder bldr = new StringBuilder(); - StringBuilder next = new StringBuilder(); - long minIx; - long maxIx; - long brkIx; - bool appendToNext; - - internal BufferElement() { } - - internal long MaxIndex { get { return maxIx; } } - // internal int MinIndex { get { return minIx; } } - - internal char this[long index] - { - get - { - if (index < minIx || index >= maxIx) - throw new BufferException("Index was outside data buffer"); - else if (index < brkIx) - return bldr[(int)(index - minIx)]; - else - return next[(int)(index - brkIx)]; - } - } - - internal void Append(char[] block, int count) - { - maxIx += count; - if (appendToNext) - this.next.Append(block, 0, count); - else - { - this.bldr.Append(block, 0, count); - brkIx = maxIx; - appendToNext = true; - } - } - - internal string GetString(long start, long limit) - { - if (limit <= start) - return ""; - if (start >= minIx && limit <= maxIx) - if (limit < brkIx) // String entirely in bldr builder - return bldr.ToString((int)(start - minIx), (int)(limit - start)); - else if (start >= brkIx) // String entirely in next builder - return next.ToString((int)(start - brkIx), (int)(limit - start)); - else // Must do a string-concatenation - return - bldr.ToString((int)(start - minIx), (int)(brkIx - start)) + - next.ToString(0, (int)(limit - brkIx)); - else - throw new BufferException("String was outside data buffer"); - } - - internal void Mark(long limit) - { - if (limit > brkIx + 16) // Rotate blocks - { - StringBuilder temp = bldr; - bldr = next; - next = temp; - next.Length = 0; - minIx = brkIx; - brkIx = maxIx; - } - } - } - - BufferElement data = new BufferElement(); - - long bPos; // Postion index in the StringBuilder - BlockReader NextBlk; // Delegate that serves char-arrays; - - private string EncodingName - { - get - { - StreamReader rdr = NextBlk.Target as StreamReader; - return (rdr == null ? "raw-bytes" : rdr.CurrentEncoding.BodyName); - } - } - - public BuildBuffer(Stream stream) - { - FileStream fStrm = (stream as FileStream); - if (fStrm != null) FileName = fStrm.Name; - NextBlk = BlockReaderFactory.Raw(stream); - } - -#if (!BYTEMODE) - public BuildBuffer(Stream stream, int fallbackCodePage) - { - FileStream fStrm = (stream as FileStream); - if (fStrm != null) FileName = fStrm.Name; - NextBlk = BlockReaderFactory.Get(stream, fallbackCodePage); - } -#endif - - /// - /// Marks a conservative lower bound for the buffer, - /// allowing space to be reclaimed. If an application - /// needs to call GetString at arbitrary past locations - /// in the input stream, Mark() is not called. - /// - public override void Mark() { data.Mark(bPos - 2); } - - public override long Pos - { - get { return bPos; } - set { bPos = value; } - } - - - /// - /// Read returns the ordinal number of the next char, or - /// EOF (-1) for an end of stream. Note that the next - /// code point may require *two* calls of Read(). - /// - /// - public override int Read() - { - // - // Characters at positions - // [data.offset, data.offset + data.bldr.Length) - // are available in data.bldr. - // - if (bPos < data.MaxIndex) - { - // ch0 cannot be EOF - return (int)data[bPos++]; - } - else // Read from underlying stream - { - // Experimental code, blocks of page size - char[] chrs = new char[4096]; - int count = NextBlk(chrs, 0, 4096); - if (count == 0) - return EndOfFile; - else - { - data.Append(chrs, count); - return (int)data[bPos++]; - } - } - } - - public override string GetString(long begin, long limit) - { - return data.GetString(begin, limit); - } - - public override string ToString() - { - return "StringBuilder buffer, encoding: " + this.EncodingName; - } - } - - // =============== End ScanBuff-derived classes ================== - - public delegate int BlockReader(char[] block, int index, int number); - - // A delegate factory, serving up a delegate that - // reads a block of characters from the underlying - // encoded stream, via a StreamReader object. - // - public static class BlockReaderFactory - { - public static BlockReader Raw(Stream stream) - { - return delegate(char[] block, int index, int number) - { - byte[] b = new byte[number]; - int count = stream.Read(b, 0, number); - int i = 0; - int j = index; - for (; i < count; i++, j++) - block[j] = (char)b[i]; - return count; - }; - } - -#if (!BYTEMODE) - public static BlockReader Get(Stream stream, int fallbackCodePage) - { - Encoding encoding; - int preamble = Preamble(stream); - - if (preamble != 0) // There is a valid BOM here! - encoding = Encoding.GetEncoding(preamble); - else if (fallbackCodePage == -1) // Fallback is "raw" bytes - return Raw(stream); - else if (fallbackCodePage != -2) // Anything but "guess" - encoding = Encoding.GetEncoding(fallbackCodePage); - else // This is the "guess" option - { - int guess = new Guesser(stream).GuessCodePage(); - stream.Seek(0, SeekOrigin.Begin); - if (guess == -1) // ==> this is a 7-bit file - encoding = Encoding.ASCII; - else if (guess == 65001) - encoding = Encoding.UTF8; - else // ==> use the machine default - encoding = Encoding.Default; - } - StreamReader reader = new StreamReader(stream, encoding); - return reader.Read; - } - - static int Preamble(Stream stream) - { - int b0 = stream.ReadByte(); - int b1 = stream.ReadByte(); - - if (b0 == 0xfe && b1 == 0xff) - return 1201; // UTF16BE - if (b0 == 0xff && b1 == 0xfe) - return 1200; // UTF16LE - - int b2 = stream.ReadByte(); - if (b0 == 0xef && b1 == 0xbb && b2 == 0xbf) - return 65001; // UTF8 - // - // There is no unicode preamble, so we - // return denoter for the machine default. - // - stream.Seek(0, SeekOrigin.Begin); - return 0; - } -#endif // !BYTEMODE - } -#endif // !NOFILES - #endregion Buffer classes - - // ============================================================== - // ============ class CodePageHandling ============= - // ============================================================== -#if (!NOFILES) - public static class CodePageHandling - { - public static int GetCodePage(string option) - { - string command = option.ToUpperInvariant(); - if (command.StartsWith("CodePage:", StringComparison.OrdinalIgnoreCase)) - command = command.Substring(9); - try - { - if (command.Equals("RAW")) - return -1; - else if (command.Equals("GUESS")) - return -2; - else if (command.Equals("DEFAULT")) - return 0; - else if (char.IsDigit(command[0])) - return int.Parse(command, CultureInfo.InvariantCulture); - else - { - Encoding enc = Encoding.GetEncoding(command); - return enc.CodePage; - } - } - catch (FormatException) - { - Console.Error.WriteLine( - "Invalid format \"{0}\", using machine default", option); - } - catch (ArgumentException) - { - Console.Error.WriteLine( - "Unknown code page \"{0}\", using machine default", option); - } - return 0; - } - } -#region guesser -#if (!BYTEMODE) - // ============================================================== - // ============ Encoding Guesser ============= - // ============================================================== - - /// - /// This class provides a simple finite state automaton that - /// scans the file looking for (1) valid UTF-8 byte patterns, - /// (2) bytes >= 0x80 which are not part of a UTF-8 sequence. - /// The method then guesses whether it is UTF-8 or maybe some - /// local machine default encoding. This works well for the - /// various Latin encodings. - /// - internal class Guesser - { - ScanBuff buffer; - - public int GuessCodePage() { return Scan(); } - - const int maxAccept = 10; - const int initial = 0; - const int eofNum = 0; - const int goStart = -1; - const int INITIAL = 0; - const int EndToken = 0; - - #region user code - /* - * Reads the bytes of a file to determine if it is - * UTF-8 or a single-byte code page file. - */ - public long utfX; - public long uppr; - #endregion user code - - int state; - int currentStart = startState[0]; - int code; - - #region ScannerTables - static int[] startState = new int[] { 11, 0 }; - - #region CharacterMap - static sbyte[] map = new sbyte[256] { -/* '\0' */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -/* '\x10' */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -/* '\x20' */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -/* '0' */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -/* '@' */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -/* 'P' */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -/* '`' */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -/* 'p' */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -/* '\x80' */ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, -/* '\x90' */ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, -/* '\xA0' */ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, -/* '\xB0' */ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, -/* '\xC0' */ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, -/* '\xD0' */ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, -/* '\xE0' */ 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, -/* '\xF0' */ 4, 4, 4, 4, 4, 4, 4, 4, 5, 5, 5, 5, 5, 5, 5, 5 }; - #endregion - - static sbyte[][] nextState = new sbyte[][] { - new sbyte[] {0, 0, 0, 0, 0, 0}, - new sbyte[] {-1, -1, 10, -1, -1, -1}, - new sbyte[] {-1, -1, -1, -1, -1, -1}, - new sbyte[] {-1, -1, 8, -1, -1, -1}, - new sbyte[] {-1, -1, 5, -1, -1, -1}, - new sbyte[] {-1, -1, 6, -1, -1, -1}, - new sbyte[] {-1, -1, 7, -1, -1, -1}, - null, - new sbyte[] {-1, -1, 9, -1, -1, -1}, - null, - null, - new sbyte[] {-1, 1, 2, 3, 4, 2} - }; - - - [SuppressMessage("Microsoft.Performance", "CA1810:InitializeReferenceTypeStaticFieldsInline")] - // Reason for suppression: cannot have self-reference in array initializer. - static Guesser() - { - nextState[7] = nextState[2]; - nextState[9] = nextState[2]; - nextState[10] = nextState[2]; - } - - int NextState() - { - if (code == ScanBuff.EndOfFile) - return eofNum; - else - return nextState[state][map[code]]; - } - #endregion - - public Guesser(System.IO.Stream file) { SetSource(file); } - - public void SetSource(System.IO.Stream source) - { - this.buffer = new BuildBuffer(source); - code = buffer.Read(); - } - - int Scan() - { - for (; ; ) - { - int next; - state = currentStart; - while ((next = NextState()) == goStart) - code = buffer.Read(); - - state = next; - code = buffer.Read(); - - while ((next = NextState()) > eofNum) - { - state = next; - code = buffer.Read(); - } - if (state <= maxAccept) - { - #region ActionSwitch -#pragma warning disable 162 - switch (state) - { - case eofNum: - switch (currentStart) - { - case 11: - if (utfX == 0 && uppr == 0) return -1; /* raw ascii */ - else if (uppr * 10 > utfX) return 0; /* default code page */ - else return 65001; /* UTF-8 encoding */ - break; - } - return EndToken; - case 1: // Recognized '{Upper128}', Shortest string "\xC0" - case 2: // Recognized '{Upper128}', Shortest string "\x80" - case 3: // Recognized '{Upper128}', Shortest string "\xE0" - case 4: // Recognized '{Upper128}', Shortest string "\xF0" - uppr++; - break; - case 5: // Recognized '{Utf8pfx4}{Utf8cont}', Shortest string "\xF0\x80" - uppr += 2; - break; - case 6: // Recognized '{Utf8pfx4}{Utf8cont}{2}', Shortest string "\xF0\x80\x80" - uppr += 3; - break; - case 7: // Recognized '{Utf8pfx4}{Utf8cont}{3}', Shortest string "\xF0\x80\x80\x80" - utfX += 3; - break; - case 8: // Recognized '{Utf8pfx3}{Utf8cont}', Shortest string "\xE0\x80" - uppr += 2; - break; - case 9: // Recognized '{Utf8pfx3}{Utf8cont}{2}', Shortest string "\xE0\x80\x80" - utfX += 2; - break; - case 10: // Recognized '{Utf8pfx2}{Utf8cont}', Shortest string "\xC0\x80" - utfX++; - break; - default: - break; - } -#pragma warning restore 162 - #endregion - } - } - } - } // end class Guesser - -#endif // !BYTEMODE -#endregion -#endif // !NOFILES - -// End of code copied from embedded resource } // end namespace diff --git a/Xbim.Common/Step21/Parser/StepP21Lex.lex b/Xbim.Common/Step21/Parser/StepP21Lex.lex index e40aa9a95..5b589ba89 100644 --- a/Xbim.Common/Step21/Parser/StepP21Lex.lex +++ b/Xbim.Common/Step21/Parser/StepP21Lex.lex @@ -13,34 +13,88 @@ } %} +whitespace [ \t] +new_line "\n\r"|\r|\n|"\r\n" +nullbytes [\0]+ + +sign ("-"|"+")? + +digit [0-9] +digit10 {digit} +digit16 [0-9a-fA-F] +uinteger10 ({digit10})+ +uinteger16 ({digit16})+ +integer {sign}{uinteger10} +exponent_marker [Ee] +exponent_suffix ({exponent_marker}{sign}({digit10})+)? +infinite "#INF" +not_a_number "#IND" +ureal (({uinteger10}{exponent_suffix})|("."({digit10})+{exponent_suffix})|(({digit10})+"."({digit10})*{exponent_suffix})) +real ({sign}{ureal}({infinite}|{not_a_number})?) +hexid \"{uinteger16}\" + +equals /= +entity_identifier #{uinteger10} +entity {entity_identifier}{equals} +entity_ws ({entity_identifier}({whitespace})*{equals}) + +single_string_char [^\\\'\r\n] +string_escape_char \\{2}|\'{2} + +string_solidus_s \\S\\[\040-\176] +string_solidus_p \\P[A-I]\\ +string_solidus_x \\X\\({digit16}{2}) +string_x_close \\X0\\ +string_solidus_x2 \\X2\\({digit16}{4})*{string_x_close} +string_solidus_x4 \\X4\\({digit16}{8})*{string_x_close} +string_encoding_char {string_solidus_s}|{string_solidus_p}|{string_solidus_x}|{string_solidus_x2}|{string_solidus_x4} +string_invalid_tolerated \\[^SPX\\] + +reg_string_char {single_string_char}|{string_escape_char}|{string_encoding_char}|{string_invalid_tolerated} +string_literal \'({reg_string_char})*\' + +strict_string_char {single_string_char}|{string_escape_char}|{string_encoding_char}| +bad_string_literal \'(({strict_string_char})*\\({strict_string_char})*)+\' + +ml_single_string_char [^\\\'] +ml_string_char {ml_single_string_char}|{string_escape_char}|{string_encoding_char}|{string_invalid_tolerated} +ml_string_literal \'({ml_string_char})*\' + +dot "." +boolean [TF] +undefined "U" +notdefined "$" + %% %{ %} -"\t" {;} -" " {;} -[\n] {;} -[\r] {;} -[\0]+ {;} -#[0-9]+/= { SetValue(); return((int)Tokens.ENTITY); } -#[0-9]+[ \t]*/= { SetValue(); return((int)Tokens.ENTITY); } -#[0-9]+ { SetValue(); return((int)Tokens.IDENTITY);} -[\-\+0-9][0-9]* { SetValue(); return((int)Tokens.INTEGER); } -[\-\+\.0-9][\.0-9]+((#INF)|(#IND))? { SetValue(); return((int)Tokens.FLOAT); } -[\-\+\.0-9][\.0-9]+(E|e)[\-\+0-9][0-9]* { SetValue(); return((int)Tokens.FLOAT); } -[\']([\001-\046\050-\133\135-\377]|(\\\\)|(\'\')|(\\S\\[\040-\176])|(\\P[\101-\132]\\)|(\\X2\\([0-9A-Fa-f]{4})*\\X0\\)|(\\X4\\([0-9A-Fa-f]{8})*\\X0\\)|(\\X\\[0-9A-Fa-f]{2}))*[\'] { SetValue(); return((int)Tokens.STRING); } -[\"][0-9A-Fa-f]+[\"] {SetValue(); return((int)Tokens.HEXA); } -[\.][TF][\.] {SetValue(); return((int)Tokens.BOOLEAN); } -[\.][U][\.] {return((int)Tokens.NONDEF); } -[\.][a-zA-Z0-9_ ]+[\.] {SetValue(); return((int)Tokens.ENUM); } -[$] {return((int)Tokens.NONDEF); } + +{whitespace} {;} +{new_line} {;} +{nullbytes} {;} +{entity} { SetValue(); return((int)Tokens.ENTITY); } +#[0-9]+[ \t]*/= { SetValue(); return((int)Tokens.ENTITY); } +{entity_identifier} { SetValue(); return((int)Tokens.IDENTITY);} +{integer} { SetValue(); return((int)Tokens.INTEGER); } +{real} { SetValue(); return((int)Tokens.FLOAT); } + +{string_literal} { SetValue(); return((int)Tokens.STRING); } +{ml_string_literal} { SetValue(); return((int)Tokens.MLSTRING); } +{bad_string_literal} { SetValue(); return((int)Tokens.INVALIDSTRING); } + +{hexid} { SetValue(); return((int)Tokens.HEXA); } +{dot}{boolean}{dot} { SetValue(); return((int)Tokens.BOOLEAN); } +{dot}{undefined}{dot} { return((int)Tokens.NONDEF); } +{dot}[a-zA-Z0-9_ ]+{dot} { SetValue(); return((int)Tokens.ENUM); } +{notdefined} { return((int)Tokens.NONDEF); } [(] { return ('('); } [)] { return (')'); } [,] { return (','); } -[\*] { return((int)Tokens.OVERRIDE); } [=] { return ('='); } [;] { return (';'); } +[\*] { return((int)Tokens.OVERRIDE); } "/*" { BEGIN(COMMENT); } @@ -48,23 +102,21 @@ "*/" { BEGIN(INITIAL); } } - -STEP; { return((int)Tokens.ISOSTEPSTART); } -HEADER; { return((int)Tokens.HEADER); } -ENDSEC; { return((int)Tokens.ENDSEC); } -DATA; { return((int)Tokens.DATA); } -ENDSTEP; { return((int)Tokens.ISOSTEPEND); } +STEP; { return((int)Tokens.ISOSTEPSTART); } +HEADER; { return((int)Tokens.HEADER); } +ENDSEC; { return((int)Tokens.ENDSEC); } +DATA; { return((int)Tokens.DATA); } +ENDSTEP; { return((int)Tokens.ISOSTEPEND); } "ENDSTEP;".* { return((int)Tokens.ISOSTEPEND); } "END-ISO"[0-9\-]*; { return((int)Tokens.ISOSTEPEND); } ISO[0-9\-]*; { return((int)Tokens.ISOSTEPSTART); } -[/] { return ('/'); } -&SCOPE { return((int)Tokens.SCOPE); } -ENDSCOPE { return((int)Tokens.ENDSCOPE); } -[a-zA-Z0-9_]+ { SetValue(); return((int)Tokens.TYPE); } +[/] { return ('/'); } +&SCOPE { return((int)Tokens.SCOPE); } +ENDSCOPE { return((int)Tokens.ENDSCOPE); } +[a-zA-Z0-9_]+ { SetValue(); return((int)Tokens.TYPE); } ![a-zA-Z0-9_]+ { SetValue(); return((int)Tokens.TYPE); } -[^)] {SetValue(); return((int)Tokens.MISC); } - +[^)] { SetValue(); return((int)Tokens.MISC); } %{ yylloc = new LexLocation(tokLin,tokCol,tokELin,tokECol); diff --git a/Xbim.Common/Step21/Parser/StepP21Parser.cs b/Xbim.Common/Step21/Parser/StepP21Parser.cs index 220e89ba1..f066b1386 100644 --- a/Xbim.Common/Step21/Parser/StepP21Parser.cs +++ b/Xbim.Common/Step21/Parser/StepP21Parser.cs @@ -3,10 +3,10 @@ // (see accompanying GPPGcopyright.rtf) // GPPG version 1.5.2 -// Machine: MAC3 -// DateTime: 24/03/2022 23:03:40 -// UserName: Claudio -// Input file +// Machine: ANDY-XBIM +// DateTime: 25/03/2025 15:48:09 +// UserName: AndyWard +// Input file // options: lines gplex @@ -23,7 +23,7 @@ public enum Tokens {error=63,EOF=64,ISOSTEPSTART=65,HEADER=66, ENDSEC=67,DATA=68,ISOSTEPEND=69,SCOPE=70,ENDSCOPE=71,ENTITY=72, TYPE=73,INTEGER=74,FLOAT=75,STRING=76,BOOLEAN=77,IDENTITY=78, TEXT=79,NONDEF=80,OVERRIDE=81,ENUM=82,HEXA=83,ILLEGALCHAR=84, - MISC=85}; + MISC=85,MLSTRING=86,INVALIDSTRING=87}; public partial struct ValueType #line 10 "StepP21Parser.y" @@ -53,17 +53,17 @@ public ScanObj( int t, ValueType val, LexLocation loc ) { [GeneratedCodeAttribute( "Gardens Point Parser Generator", "1.5.2")] public partial class P21Parser: ShiftReduceParser { - // Verbatim content from StepP21Parser.y - 10/06/2019 14:40:47 + // Verbatim content from StepP21Parser.y - 25/03/2025 15:18:04 #line 2 "StepP21Parser.y" public bool InHeader = false; #line default - // End verbatim content from StepP21Parser.y - 10/06/2019 14:40:47 + // End verbatim content from StepP21Parser.y - 25/03/2025 15:18:04 #pragma warning disable 649 private static Dictionary aliases; #pragma warning restore 649 - private static Rule[] rules = new Rule[62]; - private static State[] states = new State[97]; + private static Rule[] rules = new Rule[64]; + private static State[] states = new State[99]; private static string[] nonTerms = new string[] { "stepFile", "trailingSpace", "$accept", "endStep", "beginStep", "startHeader", "stepFile1", "headerEntities", "endSec", "endOfHeader", "model", "stepFile2", @@ -73,42 +73,42 @@ public partial class P21Parser: ShiftReduceParser }; static P21Parser() { - states[0] = new State(new int[]{65,93,72,72,63,73},new int[]{-1,1,-7,3,-5,4,-12,94,-13,95,-11,96,-22,77,-23,19}); + states[0] = new State(new int[]{65,95,72,74,63,75},new int[]{-1,1,-7,3,-5,4,-12,96,-13,97,-11,98,-22,79,-23,19}); states[1] = new State(new int[]{64,2}); states[2] = new State(-1); states[3] = new State(-11); - states[4] = new State(new int[]{66,92},new int[]{-6,5}); - states[5] = new State(new int[]{73,54,84,55,63,84,67,17},new int[]{-8,6,-9,85,-14,91,-15,81}); - states[6] = new State(new int[]{67,17,73,54,84,55,63,84},new int[]{-9,7,-14,80,-15,81}); - states[7] = new State(new int[]{68,79},new int[]{-10,8}); - states[8] = new State(new int[]{72,72,63,73},new int[]{-11,9,-22,77,-23,19}); - states[9] = new State(new int[]{67,17,72,72,63,73},new int[]{-9,10,-22,16,-23,19}); + states[4] = new State(new int[]{66,94},new int[]{-6,5}); + states[5] = new State(new int[]{73,56,84,57,63,86,67,17},new int[]{-8,6,-9,87,-14,93,-15,83}); + states[6] = new State(new int[]{67,17,73,56,84,57,63,86},new int[]{-9,7,-14,82,-15,83}); + states[7] = new State(new int[]{68,81},new int[]{-10,8}); + states[8] = new State(new int[]{72,74,63,75},new int[]{-11,9,-22,79,-23,19}); + states[9] = new State(new int[]{67,17,72,74,63,75},new int[]{-9,10,-22,16,-23,19}); states[10] = new State(new int[]{69,12},new int[]{-4,11}); states[11] = new State(-8); states[12] = new State(new int[]{32,15,64,-4},new int[]{-2,13}); states[13] = new State(new int[]{32,14,64,-5}); states[14] = new State(-3); states[15] = new State(-2); - states[16] = new State(-43); + states[16] = new State(-45); states[17] = new State(new int[]{32,15,68,-15,69,-15},new int[]{-2,18}); states[18] = new State(new int[]{32,14,68,-16,69,-16}); states[19] = new State(new int[]{61,20}); - states[20] = new State(new int[]{73,54,84,55,40,56,70,78},new int[]{-24,21,-25,23,-15,28}); + states[20] = new State(new int[]{73,56,84,57,40,58,70,80},new int[]{-24,21,-25,23,-15,28}); states[21] = new State(new int[]{59,22}); - states[22] = new State(-44); - states[23] = new State(new int[]{72,72,63,73,71,63},new int[]{-11,24,-26,74,-22,77,-23,19}); - states[24] = new State(new int[]{71,63,72,72,63,73},new int[]{-26,25,-22,16,-23,19}); - states[25] = new State(new int[]{73,54,84,55,40,56},new int[]{-24,26,-15,28}); + states[22] = new State(-46); + states[23] = new State(new int[]{72,74,63,75,71,65},new int[]{-11,24,-26,76,-22,79,-23,19}); + states[24] = new State(new int[]{71,65,72,74,63,75},new int[]{-26,25,-22,16,-23,19}); + states[25] = new State(new int[]{73,56,84,57,40,58},new int[]{-24,26,-15,28}); states[26] = new State(new int[]{59,27}); - states[27] = new State(-45); - states[28] = new State(new int[]{40,46},new int[]{-16,29,-19,30}); - states[29] = new State(-50); - states[30] = new State(new int[]{63,52,41,51,78,36,74,37,75,38,76,39,77,40,82,41,83,42,80,43,81,44,40,46,73,49},new int[]{-20,31,-21,32,-17,53,-16,45,-19,30,-18,47}); - states[31] = new State(-36); - states[32] = new State(new int[]{44,34,63,50,41,51},new int[]{-20,33}); - states[33] = new State(-37); - states[34] = new State(new int[]{78,36,74,37,75,38,76,39,77,40,82,41,83,42,80,43,81,44,40,46,73,49},new int[]{-17,35,-16,45,-19,30,-18,47}); - states[35] = new State(-40); + states[27] = new State(-47); + states[28] = new State(new int[]{40,48},new int[]{-16,29,-19,30}); + states[29] = new State(-52); + states[30] = new State(new int[]{63,54,41,53,78,36,74,37,75,38,76,39,86,40,87,41,77,42,82,43,83,44,80,45,81,46,40,48,73,51},new int[]{-20,31,-21,32,-17,55,-16,47,-19,30,-18,49}); + states[31] = new State(-38); + states[32] = new State(new int[]{44,34,63,52,41,53},new int[]{-20,33}); + states[33] = new State(-39); + states[34] = new State(new int[]{78,36,74,37,75,38,76,39,86,40,87,41,77,42,82,43,83,44,80,45,81,46,40,48,73,51},new int[]{-17,35,-16,47,-19,30,-18,49}); + states[35] = new State(-42); states[36] = new State(-22); states[37] = new State(-23); states[38] = new State(-24); @@ -119,57 +119,59 @@ static P21Parser() { states[43] = new State(-29); states[44] = new State(-30); states[45] = new State(-31); - states[46] = new State(-34); - states[47] = new State(new int[]{40,46},new int[]{-16,48,-19,30}); - states[48] = new State(-32); - states[49] = new State(-33); - states[50] = new State(-41); + states[46] = new State(-32); + states[47] = new State(-33); + states[48] = new State(-36); + states[49] = new State(new int[]{40,48},new int[]{-16,50,-19,30}); + states[50] = new State(-34); states[51] = new State(-35); - states[52] = new State(-38); - states[53] = new State(-39); - states[54] = new State(-60); - states[55] = new State(-61); - states[56] = new State(new int[]{73,54,84,55},new int[]{-27,57,-15,61}); - states[57] = new State(new int[]{41,58,73,54,84,55},new int[]{-15,59}); - states[58] = new State(-51); - states[59] = new State(new int[]{40,46},new int[]{-16,60,-19,30}); - states[60] = new State(-49); - states[61] = new State(new int[]{40,46},new int[]{-16,62,-19,30}); - states[62] = new State(-48); - states[63] = new State(new int[]{47,71,73,-57,84,-57,40,-57},new int[]{-30,64}); - states[64] = new State(new int[]{78,69},new int[]{-29,65,-28,70}); - states[65] = new State(new int[]{47,66,44,67}); - states[66] = new State(-58); - states[67] = new State(new int[]{78,69},new int[]{-28,68}); - states[68] = new State(-55); - states[69] = new State(-53); - states[70] = new State(-54); - states[71] = new State(-56); - states[72] = new State(-59); - states[73] = new State(-47); - states[74] = new State(new int[]{73,54,84,55,40,56},new int[]{-24,75,-15,28}); - states[75] = new State(new int[]{59,76}); - states[76] = new State(-46); - states[77] = new State(-42); - states[78] = new State(-52); - states[79] = new State(-21); - states[80] = new State(-18); - states[81] = new State(new int[]{40,46},new int[]{-16,82,-19,30}); - states[82] = new State(new int[]{59,83}); - states[83] = new State(-19); - states[84] = new State(-20); - states[85] = new State(new int[]{68,79},new int[]{-10,86}); - states[86] = new State(new int[]{72,72,63,73},new int[]{-11,87,-22,77,-23,19}); - states[87] = new State(new int[]{63,90,67,17,72,72},new int[]{-9,88,-22,16,-23,19}); - states[88] = new State(new int[]{69,12},new int[]{-4,89}); - states[89] = new State(-9); - states[90] = new State(new int[]{64,-10,63,-47,67,-47,72,-47}); - states[91] = new State(-17); - states[92] = new State(-7); - states[93] = new State(-6); - states[94] = new State(-12); - states[95] = new State(-13); - states[96] = new State(new int[]{72,72,63,73,64,-14},new int[]{-22,16,-23,19}); + states[52] = new State(-43); + states[53] = new State(-37); + states[54] = new State(-40); + states[55] = new State(-41); + states[56] = new State(-62); + states[57] = new State(-63); + states[58] = new State(new int[]{73,56,84,57},new int[]{-27,59,-15,63}); + states[59] = new State(new int[]{41,60,73,56,84,57},new int[]{-15,61}); + states[60] = new State(-53); + states[61] = new State(new int[]{40,48},new int[]{-16,62,-19,30}); + states[62] = new State(-51); + states[63] = new State(new int[]{40,48},new int[]{-16,64,-19,30}); + states[64] = new State(-50); + states[65] = new State(new int[]{47,73,73,-59,84,-59,40,-59},new int[]{-30,66}); + states[66] = new State(new int[]{78,71},new int[]{-29,67,-28,72}); + states[67] = new State(new int[]{47,68,44,69}); + states[68] = new State(-60); + states[69] = new State(new int[]{78,71},new int[]{-28,70}); + states[70] = new State(-57); + states[71] = new State(-55); + states[72] = new State(-56); + states[73] = new State(-58); + states[74] = new State(-61); + states[75] = new State(-49); + states[76] = new State(new int[]{73,56,84,57,40,58},new int[]{-24,77,-15,28}); + states[77] = new State(new int[]{59,78}); + states[78] = new State(-48); + states[79] = new State(-44); + states[80] = new State(-54); + states[81] = new State(-21); + states[82] = new State(-18); + states[83] = new State(new int[]{40,48},new int[]{-16,84,-19,30}); + states[84] = new State(new int[]{59,85}); + states[85] = new State(-19); + states[86] = new State(-20); + states[87] = new State(new int[]{68,81},new int[]{-10,88}); + states[88] = new State(new int[]{72,74,63,75},new int[]{-11,89,-22,79,-23,19}); + states[89] = new State(new int[]{63,92,67,17,72,74},new int[]{-9,90,-22,16,-23,19}); + states[90] = new State(new int[]{69,12},new int[]{-4,91}); + states[91] = new State(-9); + states[92] = new State(new int[]{64,-10,63,-49,67,-49,72,-49}); + states[93] = new State(-17); + states[94] = new State(-7); + states[95] = new State(-6); + states[96] = new State(-12); + states[97] = new State(-13); + states[98] = new State(new int[]{72,74,63,75,64,-14},new int[]{-22,16,-23,19}); for (int sNo = 0; sNo < states.Length; sNo++) states[sNo].number = sNo; @@ -198,42 +200,44 @@ static P21Parser() { rules[23] = new Rule(-17, new int[]{74}); rules[24] = new Rule(-17, new int[]{75}); rules[25] = new Rule(-17, new int[]{76}); - rules[26] = new Rule(-17, new int[]{77}); - rules[27] = new Rule(-17, new int[]{82}); - rules[28] = new Rule(-17, new int[]{83}); - rules[29] = new Rule(-17, new int[]{80}); - rules[30] = new Rule(-17, new int[]{81}); - rules[31] = new Rule(-17, new int[]{-16}); - rules[32] = new Rule(-17, new int[]{-18,-16}); - rules[33] = new Rule(-18, new int[]{73}); - rules[34] = new Rule(-19, new int[]{40}); - rules[35] = new Rule(-20, new int[]{41}); - rules[36] = new Rule(-16, new int[]{-19,-20}); - rules[37] = new Rule(-16, new int[]{-19,-21,-20}); - rules[38] = new Rule(-16, new int[]{-19,63}); - rules[39] = new Rule(-21, new int[]{-17}); - rules[40] = new Rule(-21, new int[]{-21,44,-17}); - rules[41] = new Rule(-21, new int[]{-21,63}); - rules[42] = new Rule(-11, new int[]{-22}); - rules[43] = new Rule(-11, new int[]{-11,-22}); - rules[44] = new Rule(-22, new int[]{-23,61,-24,59}); - rules[45] = new Rule(-22, new int[]{-23,61,-25,-11,-26,-24,59}); - rules[46] = new Rule(-22, new int[]{-23,61,-25,-26,-24,59}); - rules[47] = new Rule(-22, new int[]{63}); - rules[48] = new Rule(-27, new int[]{-15,-16}); - rules[49] = new Rule(-27, new int[]{-27,-15,-16}); - rules[50] = new Rule(-24, new int[]{-15,-16}); - rules[51] = new Rule(-24, new int[]{40,-27,41}); - rules[52] = new Rule(-25, new int[]{70}); - rules[53] = new Rule(-28, new int[]{78}); - rules[54] = new Rule(-29, new int[]{-28}); - rules[55] = new Rule(-29, new int[]{-29,44,-28}); - rules[56] = new Rule(-30, new int[]{47}); - rules[57] = new Rule(-26, new int[]{71}); - rules[58] = new Rule(-26, new int[]{71,-30,-29,47}); - rules[59] = new Rule(-23, new int[]{72}); - rules[60] = new Rule(-15, new int[]{73}); - rules[61] = new Rule(-15, new int[]{84}); + rules[26] = new Rule(-17, new int[]{86}); + rules[27] = new Rule(-17, new int[]{87}); + rules[28] = new Rule(-17, new int[]{77}); + rules[29] = new Rule(-17, new int[]{82}); + rules[30] = new Rule(-17, new int[]{83}); + rules[31] = new Rule(-17, new int[]{80}); + rules[32] = new Rule(-17, new int[]{81}); + rules[33] = new Rule(-17, new int[]{-16}); + rules[34] = new Rule(-17, new int[]{-18,-16}); + rules[35] = new Rule(-18, new int[]{73}); + rules[36] = new Rule(-19, new int[]{40}); + rules[37] = new Rule(-20, new int[]{41}); + rules[38] = new Rule(-16, new int[]{-19,-20}); + rules[39] = new Rule(-16, new int[]{-19,-21,-20}); + rules[40] = new Rule(-16, new int[]{-19,63}); + rules[41] = new Rule(-21, new int[]{-17}); + rules[42] = new Rule(-21, new int[]{-21,44,-17}); + rules[43] = new Rule(-21, new int[]{-21,63}); + rules[44] = new Rule(-11, new int[]{-22}); + rules[45] = new Rule(-11, new int[]{-11,-22}); + rules[46] = new Rule(-22, new int[]{-23,61,-24,59}); + rules[47] = new Rule(-22, new int[]{-23,61,-25,-11,-26,-24,59}); + rules[48] = new Rule(-22, new int[]{-23,61,-25,-26,-24,59}); + rules[49] = new Rule(-22, new int[]{63}); + rules[50] = new Rule(-27, new int[]{-15,-16}); + rules[51] = new Rule(-27, new int[]{-27,-15,-16}); + rules[52] = new Rule(-24, new int[]{-15,-16}); + rules[53] = new Rule(-24, new int[]{40,-27,41}); + rules[54] = new Rule(-25, new int[]{70}); + rules[55] = new Rule(-28, new int[]{78}); + rules[56] = new Rule(-29, new int[]{-28}); + rules[57] = new Rule(-29, new int[]{-29,44,-28}); + rules[58] = new Rule(-30, new int[]{47}); + rules[59] = new Rule(-26, new int[]{71}); + rules[60] = new Rule(-26, new int[]{71,-30,-29,47}); + rules[61] = new Rule(-23, new int[]{72}); + rules[62] = new Rule(-15, new int[]{73}); + rules[63] = new Rule(-15, new int[]{84}); } protected override void Initialize() { @@ -249,162 +253,172 @@ protected override void DoAction(int action) switch (action) { case 4: // endStep -> ISOSTEPEND -#line 38 "StepP21Parser.y" +#line 40 "StepP21Parser.y" {EndParse();} #line default break; case 5: // endStep -> ISOSTEPEND, trailingSpace -#line 40 "StepP21Parser.y" +#line 42 "StepP21Parser.y" {EndParse();} #line default break; case 6: // beginStep -> ISOSTEPSTART -#line 43 "StepP21Parser.y" +#line 45 "StepP21Parser.y" {BeginParse(); } #line default break; case 7: // startHeader -> HEADER -#line 48 "StepP21Parser.y" +#line 50 "StepP21Parser.y" {InHeader=true; BeginHeader();} #line default break; case 14: // stepFile -> model -#line 59 "StepP21Parser.y" +#line 61 "StepP21Parser.y" { EndParse(); } #line default break; case 15: // endSec -> ENDSEC -#line 62 "StepP21Parser.y" +#line 64 "StepP21Parser.y" {EndSec();} #line default break; case 16: // endSec -> ENDSEC, trailingSpace -#line 63 "StepP21Parser.y" +#line 65 "StepP21Parser.y" {EndSec();} #line default break; case 19: // headerEntity -> entityType, listArgument, ';' -#line 69 "StepP21Parser.y" +#line 71 "StepP21Parser.y" {EndHeaderEntity();} #line default break; case 21: // endOfHeader -> DATA -#line 73 "StepP21Parser.y" +#line 75 "StepP21Parser.y" { InHeader=false; EndHeader(); } #line default break; case 22: // argument -> IDENTITY -#line 76 "StepP21Parser.y" +#line 78 "StepP21Parser.y" {SetObjectValue(CurrentSemanticValue.strVal);} #line default break; case 23: // argument -> INTEGER -#line 77 "StepP21Parser.y" +#line 79 "StepP21Parser.y" {SetIntegerValue(CurrentSemanticValue.strVal);} #line default break; case 24: // argument -> FLOAT -#line 78 "StepP21Parser.y" +#line 80 "StepP21Parser.y" {SetFloatValue(CurrentSemanticValue.strVal);} #line default break; case 25: // argument -> STRING -#line 79 "StepP21Parser.y" +#line 81 "StepP21Parser.y" {SetStringValue(CurrentSemanticValue.strVal);} #line default break; - case 26: // argument -> BOOLEAN -#line 80 "StepP21Parser.y" + case 26: // argument -> MLSTRING +#line 82 "StepP21Parser.y" + {SetStringValue(CurrentSemanticValue.strVal);} +#line default + break; + case 27: // argument -> INVALIDSTRING +#line 83 "StepP21Parser.y" + {SetInvalidStringValue(CurrentSemanticValue.strVal);} +#line default + break; + case 28: // argument -> BOOLEAN +#line 84 "StepP21Parser.y" {SetBooleanValue(CurrentSemanticValue.strVal);} #line default break; - case 27: // argument -> ENUM -#line 81 "StepP21Parser.y" + case 29: // argument -> ENUM +#line 85 "StepP21Parser.y" {SetEnumValue(CurrentSemanticValue.strVal);} #line default break; - case 28: // argument -> HEXA -#line 82 "StepP21Parser.y" + case 30: // argument -> HEXA +#line 86 "StepP21Parser.y" {SetHexValue(CurrentSemanticValue.strVal);} #line default break; - case 29: // argument -> NONDEF -#line 83 "StepP21Parser.y" + case 31: // argument -> NONDEF +#line 87 "StepP21Parser.y" {SetNonDefinedValue();} #line default break; - case 30: // argument -> OVERRIDE -#line 84 "StepP21Parser.y" + case 32: // argument -> OVERRIDE +#line 88 "StepP21Parser.y" {SetOverrideValue();} #line default break; - case 32: // argument -> listType, listArgument -#line 86 "StepP21Parser.y" + case 34: // argument -> listType, listArgument +#line 90 "StepP21Parser.y" {EndNestedType(CurrentSemanticValue.strVal);} #line default break; - case 33: // listType -> TYPE -#line 90 "StepP21Parser.y" + case 35: // listType -> TYPE +#line 94 "StepP21Parser.y" { BeginNestedType(CurrentSemanticValue.strVal); } #line default break; - case 34: // beginList -> '(' -#line 93 "StepP21Parser.y" + case 36: // beginList -> '(' +#line 97 "StepP21Parser.y" { BeginList(); } #line default break; - case 35: // endList -> ')' -#line 96 "StepP21Parser.y" + case 37: // endList -> ')' +#line 100 "StepP21Parser.y" { EndList(); } #line default break; - case 41: // argumentList -> argumentList, error -#line 104 "StepP21Parser.y" + case 43: // argumentList -> argumentList, error +#line 108 "StepP21Parser.y" {SetErrorMessage();} #line default break; - case 44: // bloc -> entityLabel, '=', entity, ';' -#line 109 "StepP21Parser.y" + case 46: // bloc -> entityLabel, '=', entity, ';' +#line 113 "StepP21Parser.y" {EndEntity();} #line default break; - case 45: // bloc -> entityLabel, '=', beginScope, model, endScope, entity, ';' -#line 110 "StepP21Parser.y" + case 47: // bloc -> entityLabel, '=', beginScope, model, endScope, entity, ';' +#line 114 "StepP21Parser.y" {EndEntity();} #line default break; - case 46: // bloc -> entityLabel, '=', beginScope, endScope, entity, ';' -#line 111 "StepP21Parser.y" + case 48: // bloc -> entityLabel, '=', beginScope, endScope, entity, ';' +#line 115 "StepP21Parser.y" {EndEntity();} #line default break; - case 47: // bloc -> error -#line 112 "StepP21Parser.y" + case 49: // bloc -> error +#line 116 "StepP21Parser.y" {SetErrorMessage();EndEntity();} #line default break; - case 53: // uniqueID -> IDENTITY -#line 124 "StepP21Parser.y" + case 55: // uniqueID -> IDENTITY +#line 128 "StepP21Parser.y" { SetObjectValue(CurrentSemanticValue.strVal); } #line default break; - case 56: // beginExport -> '/' -#line 130 "StepP21Parser.y" + case 58: // beginExport -> '/' +#line 134 "StepP21Parser.y" { BeginList(); } #line default break; - case 59: // entityLabel -> ENTITY -#line 139 "StepP21Parser.y" + case 61: // entityLabel -> ENTITY +#line 143 "StepP21Parser.y" { NewEntity(CurrentSemanticValue.strVal); } #line default break; - case 60: // entityType -> TYPE -#line 142 "StepP21Parser.y" + case 62: // entityType -> TYPE +#line 146 "StepP21Parser.y" { SetType(CurrentSemanticValue.strVal); } #line default break; - case 61: // entityType -> ILLEGALCHAR -#line 145 "StepP21Parser.y" + case 63: // entityType -> ILLEGALCHAR +#line 149 "StepP21Parser.y" { CharacterError(); } #line default break; @@ -422,7 +436,7 @@ protected override string TerminalToString(int terminal) return CharToString((char)terminal); } -#line 149 "StepP21Parser.y" +#line 153 "StepP21Parser.y" #line default diff --git a/Xbim.Common/Step21/Parser/StepP21Parser.lst b/Xbim.Common/Step21/Parser/StepP21Parser.lst deleted file mode 100644 index 95dc3dafb..000000000 --- a/Xbim.Common/Step21/Parser/StepP21Parser.lst +++ /dev/null @@ -1,161 +0,0 @@ - -// ========================================================================== -// GPPG error listing for yacc source file -// ========================================================================== -// Version: 1.5.2 -// Machine: DESKTOP-VAJP4OB -// DateTime: 13/09/2017 16:52:25 -// UserName: Martin -// ========================================================================== - - -%{ - public bool InHeader = false; -%} -%namespace Xbim.IO.Parser -%partial -%parsertype P21Parser - -%start stepFile - -%union{ - public string strVal; - } -%token ISOSTEPSTART -%token HEADER -%token ENDSEC -%token DATA -%token ISOSTEPEND -%token SCOPE -%token ENDSCOPE -%token ENTITY -%token TYPE -%token INTEGER -%token FLOAT -%token STRING -%token BOOLEAN -%token IDENTITY -%token TEXT -%token NONDEF -%token OVERRIDE -%token ENUM -%token HEXA -%token ILLEGALCHAR -%token MISC - -%% -trailingSpace : ' ' - | trailingSpace ' ' ; -endStep : ISOSTEPEND{EndParse();} - | ISOSTEPEND trailingSpace - {EndParse();} - ; -beginStep : ISOSTEPSTART - {BeginParse(); } - ; - - -startHeader : HEADER - {InHeader=true; BeginHeader();} - ; - - -stepFile1 : beginStep startHeader headerEntities endSec endOfHeader model endSec endStep; -stepFile2 : beginStep startHeader endSec endOfHeader model endSec endStep ; -stepFile3 : beginStep startHeader endSec endOfHeader model error ; -stepFile : stepFile1 | stepFile2 | stepFile3 | model { EndParse(); } - -endSec : ENDSEC{EndSec();} -//^^^^ -// Error: Syntax error, unexpected anchoredSymbol -// ---------------------------------------------- - | ENDSEC trailingSpace {EndSec();} - ; - -headerEntities : headerEntity - | headerEntities headerEntity - ; -headerEntity : entityType listArgument ';' {EndHeaderEntity();} - | error - ; -endOfHeader : DATA - { InHeader=false; EndHeader(); } - ; -argument - : IDENTITY {SetObjectValue(CurrentSemanticValue.strVal);} - | INTEGER {SetIntegerValue(CurrentSemanticValue.strVal);} - | FLOAT {SetFloatValue(CurrentSemanticValue.strVal);} - | STRING {SetStringValue(CurrentSemanticValue.strVal);} - | BOOLEAN {SetBooleanValue(CurrentSemanticValue.strVal);} - | ENUM {SetEnumValue(CurrentSemanticValue.strVal);} - | HEXA {SetHexValue(CurrentSemanticValue.strVal);} - | NONDEF {SetNonDefinedValue();} - | OVERRIDE {SetOverrideValue();} - | listArgument - | listType listArgument {EndNestedType(CurrentSemanticValue.strVal);} - ; - -listType : TYPE - { BeginNestedType(CurrentSemanticValue.strVal); } - ; -beginList : '(' - { BeginList(); } - ; -endList : ')' - { EndList(); } - ; -listArgument : beginList endList - | beginList argumentList endList - | beginList error - ; -argumentList : argument - | argumentList ',' argument - | argumentList error {SetErrorMessage();} - ; -model : bloc - | model bloc - ; -bloc : entityLabel '=' entity ';' {EndEntity();} - | entityLabel '=' beginScope model endScope entity ';'{EndEntity();} - | entityLabel '=' beginScope endScope entity ';'{EndEntity();} - | error {SetErrorMessage();EndEntity();} - ; -complex : entityType listArgument /*{EndComplex();} */ - | complex entityType listArgument /* {EndComplex();} */ - ; -entity : entityType listArgument /* Simple Entity */ - | '(' complex ')' /*{BeginComplex();}*/ /* Complex */ - ; -beginScope : SCOPE - /*{ BeginScope(); }*/ - ; -uniqueID : IDENTITY - { SetObjectValue(CurrentSemanticValue.strVal); } - ; -export : uniqueID - | export ',' uniqueID - ; -beginExport : '/' - { BeginList(); } - ; -endScope : ENDSCOPE - /*{ EndScope(); }*/ - | ENDSCOPE beginExport export '/' - /*{ Console.WriteLine("*** Warning : Export List not yet processed\n"); - NewEntity(); EndScope() ; }*/ - ; -entityLabel : ENTITY - { NewEntity(CurrentSemanticValue.strVal); } - ; -entityType : TYPE - { SetType(CurrentSemanticValue.strVal); } - ; -entityType : ILLEGALCHAR - { CharacterError(); } - ; - -%% - - -// ========================================================================== - diff --git a/Xbim.Common/Step21/Parser/StepP21Parser.y b/Xbim.Common/Step21/Parser/StepP21Parser.y index 2486b3ca7..a3399ee39 100644 --- a/Xbim.Common/Step21/Parser/StepP21Parser.y +++ b/Xbim.Common/Step21/Parser/StepP21Parser.y @@ -31,6 +31,8 @@ %token HEXA %token ILLEGALCHAR %token MISC +%token MLSTRING +%token INVALIDSTRING %% trailingSpace : ' ' @@ -77,6 +79,8 @@ argument | INTEGER {SetIntegerValue(CurrentSemanticValue.strVal);} | FLOAT {SetFloatValue(CurrentSemanticValue.strVal);} | STRING {SetStringValue(CurrentSemanticValue.strVal);} + | MLSTRING {SetStringValue(CurrentSemanticValue.strVal);} + | INVALIDSTRING {SetInvalidStringValue(CurrentSemanticValue.strVal);} | BOOLEAN {SetBooleanValue(CurrentSemanticValue.strVal);} | ENUM {SetEnumValue(CurrentSemanticValue.strVal);} | HEXA {SetHexValue(CurrentSemanticValue.strVal);} diff --git a/Xbim.Common/Step21/Parser/XbimScanBuffer.cs b/Xbim.Common/Step21/Parser/XbimScanBuffer.cs index f130f9d89..17ecde97e 100644 --- a/Xbim.Common/Step21/Parser/XbimScanBuffer.cs +++ b/Xbim.Common/Step21/Parser/XbimScanBuffer.cs @@ -1,4 +1,5 @@ -using System; +using QUT.GplexBuffers; +using System; using System.Collections.Generic; using System.IO; using System.Linq; diff --git a/Xbim.Common/Step21/Parser/gplex.frame b/Xbim.Common/Step21/Parser/gplex.frame new file mode 100644 index 000000000..5cf180180 --- /dev/null +++ b/Xbim.Common/Step21/Parser/gplex.frame @@ -0,0 +1,605 @@ +// Revised backup code +// Version 1.2.1 of 24-June-2013 +// +## Derived from gplex.frame version of 2-September-2006. +## Code page support for files without a BOM. +## Left and Right Anchored state support. +## Start condition stack. Two generic params. +## Using fixed length context handling for right anchors + +// Customised in xbim to support input files > int32 length +// +##-->defines + +using System; +using System.IO; +using System.Text; +using System.Globalization; +using System.Collections.Generic; +using System.Runtime.Serialization; +using System.Diagnostics.CodeAnalysis; + +##-->version295 +##-->usingDcl +{ + /// + /// Summary Canonical example of GPLEX automaton + /// + +#if STANDALONE + // + // These are the dummy declarations for stand-alone GPLEX applications + // normally these declarations would come from the parser. + // If you declare /noparser, or %option noparser then you get this. + // + +##-->translate $public enum $Tokens + { + EOF = 0, maxParseToken = int.MaxValue + // must have at least these two, values are almost arbitrary + } + +##-->translate $public abstract class $ScanBase + { + [SuppressMessage("Microsoft.Naming", "CA1709:IdentifiersShouldBeCasedCorrectly", MessageId = "yylex")] + [SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", MessageId = "yylex")] + public abstract int yylex(); + + [SuppressMessage("Microsoft.Naming", "CA1709:IdentifiersShouldBeCasedCorrectly", MessageId = "yywrap")] + [SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", MessageId = "yywrap")] + protected virtual bool yywrap() { return true; } + +#if BABEL + protected abstract int CurrentSc { get; set; } + // EolState is the 32-bit of state data persisted at + // the end of each line for Visual Studio colorization. + // The default is to return CurrentSc. You must override + // this if you want more complicated behavior. + public virtual int EolState { + get { return CurrentSc; } + set { CurrentSc = value; } + } + } + +##-->translate $public interface IColorScan + { + void SetSource(string source, int offset); + int GetNext(ref int state, out int start, out int end); +#endif // BABEL + } + +#endif // STANDALONE + + // If the compiler can't find the scanner base class maybe you + // need to run GPPG with the /gplex option, or GPLEX with /noparser +#if BABEL +##-->translate $public sealed partial class $Scanner : $ScanBase, IColorScan + { + private ScanBuff buffer; + int currentScOrd; // start condition ordinal + + protected override int CurrentSc + { + // The current start state is a property + // to try to avoid the user error of setting + // scState but forgetting to update the FSA + // start state "currentStart" + // + get { return currentScOrd; } // i.e. return YY_START; + set { currentScOrd = value; // i.e. BEGIN(value); + currentStart = startState[value]; } + } +#else // BABEL +##-->translate $public sealed partial class $Scanner : $ScanBase + { + private ScanBuff buffer; + int currentScOrd; // start condition ordinal +#endif // BABEL + + /// + /// The input buffer for this scanner. + /// + [SuppressMessage("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")] + public ScanBuff Buffer { get { return buffer; } } + + private static int GetMaxParseToken() { +##-->translate System.Reflection.FieldInfo f = typeof($Tokens).GetField("maxParseToken"); + return (f == null ? int.MaxValue : (int)f.GetValue(null)); + } + + static int parserMax = GetMaxParseToken(); + + enum Result {accept, noMatch, contextFound}; + +##-->consts + +#region user code +##-->codeIncl +#endregion user code + + int state; + int currentStart = startState[0]; + int code; // last code read + int cCol; // column number of code + int lNum; // current line number + // + // The following instance variables are used, among other + // things, for constructing the yylloc location objects. + // + long tokPos; // buffer position at start of token + int tokCol; // zero-based column number at start of token + int tokLin; // line number at start of token + long tokEPos; // buffer position at end of token + int tokECol; // column number at end of token + int tokELin; // line number at end of token + string tokTxt; // lazily constructed text of token +#if STACK + private Stack scStack = new Stack(); +#endif // STACK + +##-->tableDef + + +#if BACKUP + // ============================================================== + // == Nested struct used for backup in automata that do backup == + // ============================================================== + + struct Context // class used for automaton backup. + { + public long bPos; + public long rPos; // scanner.readPos saved value + public int cCol; + public int lNum; // Need this in case of backup over EOL. + public int state; + public int cChr; + } + + private Context ctx = new Context(); +#endif // BACKUP + + // ============================================================== + // ==== Nested struct to support input switching in scanners ==== + // ============================================================== + + struct BufferContext { + internal ScanBuff buffSv; + internal int chrSv; + internal int cColSv; + internal int lNumSv; + } + + // ============================================================== + // ===== Private methods to save and restore buffer contexts ==== + // ============================================================== + + /// + /// This method creates a buffer context record from + /// the current buffer object, together with some + /// scanner state values. + /// + [SuppressMessage("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")] + BufferContext MkBuffCtx() + { + BufferContext rslt; + rslt.buffSv = this.buffer; + rslt.chrSv = this.code; + rslt.cColSv = this.cCol; + rslt.lNumSv = this.lNum; + return rslt; + } + + /// + /// This method restores the buffer value and allied + /// scanner state from the given context record value. + /// + [SuppressMessage("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")] + void RestoreBuffCtx(BufferContext value) + { + this.buffer = value.buffSv; + this.code = value.chrSv; + this.cCol = value.cColSv; + this.lNum = value.lNumSv; + } + // =================== End Nested classes ======================= + +#if !NOFILES +##-->translate $public $Scanner(Stream file) { +##-->bufferCtor + } +#endif // !NOFILES + +##-->translate $public $Scanner() { } + + private long readPos; + + void GetCode() + { + if (code == '\n') // This needs to be fixed for other conventions + // i.e. [\r\n\205\u2028\u2029] + { + cCol = -1; + lNum++; + } + readPos = buffer.Pos; + + // Now read new codepoint. + code = buffer.Read(); + if (code > ScanBuff.EndOfFile) + { +#if (!BYTEMODE) + if (code >= 0xD800 && code <= 0xDBFF) + { + int next = buffer.Read(); + if (next < 0xDC00 || next > 0xDFFF) + code = ScanBuff.UnicodeReplacementChar; + else + code = (0x10000 + ((code & 0x3FF) << 10) + (next & 0x3FF)); + } +#endif + cCol++; + } + } + + void MarkToken() + { +#if (!PERSIST) + buffer.Mark(); +#endif + tokPos = readPos; + tokLin = lNum; + tokCol = cCol; + } + + void MarkEnd() + { + tokTxt = null; + tokEPos = readPos; + tokELin = lNum; + tokECol = cCol; + } + + [SuppressMessage("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")] + int Peek() + { + int rslt, codeSv = code, cColSv = cCol, lNumSv = lNum; + long bPosSv = buffer.Pos; + GetCode(); rslt = code; + lNum = lNumSv; cCol = cColSv; code = codeSv; buffer.Pos = bPosSv; + return rslt; + } + + // ============================================================== + // ===== Initialization of string-based input buffers ==== + // ============================================================== + + /// + /// Create and initialize a StringBuff buffer object for this scanner + /// + /// the input string + /// starting offset in the string + [SuppressMessage("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")] + public void SetSource(string source, int offset) + { + this.buffer = ScanBuff.GetBuffer(source); + this.buffer.Pos = offset; + this.lNum = 0; + this.code = '\n'; // to initialize yyline, yycol and lineStart + GetCode(); + } + + // ================ LineBuffer Initialization =================== + /// + /// Create and initialize a LineBuff buffer object for this scanner + /// + /// the list of input strings + [SuppressMessage("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")] + public void SetSource(IList source) + { + this.buffer = ScanBuff.GetBuffer(source); + this.code = '\n'; // to initialize yyline, yycol and lineStart + this.lNum = 0; + GetCode(); + } + +#if !NOFILES + // =============== StreamBuffer Initialization ================== + + /// + /// Create and initialize a StreamBuff buffer object for this scanner. + /// StreamBuff is buffer for 8-bit byte files. + /// + /// the input byte stream + [SuppressMessage("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")] + public void SetSource(Stream source) + { + this.buffer = ScanBuff.GetBuffer(source); + this.lNum = 0; + this.code = '\n'; // to initialize yyline, yycol and lineStart + GetCode(); + } + +#if !BYTEMODE + // ================ TextBuffer Initialization =================== + + /// + /// Create and initialize a TextBuff buffer object for this scanner. + /// TextBuff is a buffer for encoded unicode files. + /// + /// the input text file + /// Code page to use if file has + /// no BOM. For 0, use machine default; for -1, 8-bit binary + [SuppressMessage("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")] + public void SetSource(Stream source, int fallbackCodePage) + { + this.buffer = ScanBuff.GetBuffer(source, fallbackCodePage); + this.lNum = 0; + this.code = '\n'; // to initialize yyline, yycol and lineStart + GetCode(); + } +#endif // !BYTEMODE +#endif // !NOFILES + + // ============================================================== + +#if BABEL + // + // Get the next token for Visual Studio + // + // "state" is the inout mode variable that maintains scanner + // state between calls, using the EolState property. In principle, + // if the calls of EolState are costly set could be called once + // only per line, at the start; and get called only at the end + // of the line. This needs more infrastructure ... + // + public int GetNext(ref int state, out int start, out int end) + { +##-->translate $Tokens next; + int s, e; + s = state; // state at start + EolState = state; +##-->translate next = ($Tokens)Scan(); + state = EolState; + e = state; // state at end; + start = tokPos; + end = tokEPos - 1; // end is the index of last char. + return (int)next; + } +#endif // BABEL + + // ======== AbstractScanner<> Implementation ========= + + [SuppressMessage("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")] + [SuppressMessage("Microsoft.Naming", "CA1709:IdentifiersShouldBeCasedCorrectly", MessageId = "yylex")] + [SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", MessageId = "yylex")] + public override int yylex() + { + // parserMax is set by reflecting on the Tokens + // enumeration. If maxParseToken is defined + // that is used, otherwise int.MaxValue is used. + int next; + do { next = Scan(); } while (next >= parserMax); + return next; + } + + [SuppressMessage("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")] + long yypos { get { return tokPos; } } + + [SuppressMessage("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")] + int yyline { get { return tokLin; } } + + [SuppressMessage("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")] + int yycol { get { return tokCol; } } + + [SuppressMessage("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")] + [SuppressMessage("Microsoft.Naming", "CA1709:IdentifiersShouldBeCasedCorrectly", MessageId = "yytext")] + [SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", MessageId = "yytext")] + public string yytext + { + get + { + if (tokTxt == null) + tokTxt = buffer.GetString(tokPos, tokEPos); + return tokTxt; + } + } + + /// + /// Discards all but the first "n" codepoints in the recognized pattern. + /// Resets the buffer position so that only n codepoints have been consumed; + /// yytext is also re-evaluated. + /// + /// The number of codepoints to consume + [SuppressMessage("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")] + void yyless(long n) + { + buffer.Pos = tokPos; + // Must read at least one char, so set before start. + cCol = tokCol - 1; + GetCode(); + // Now ensure that line counting is correct. + lNum = tokLin; + // And count the rest of the text. + for (int i = 0; i < n; i++) GetCode(); + MarkEnd(); + } + + // + // It would be nice to count backward in the text + // but it does not seem possible to re-establish + // the correct column counts except by going forward. + // + /// + /// Removes the last "n" code points from the pattern. + /// + /// The number to remove + [SuppressMessage("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")] + void _yytrunc(int n) { yyless(yyleng - n); } + + // + // This is painful, but we no longer count + // codepoints. For the overwhelming majority + // of cases the single line code is fast, for + // the others, well, at least it is all in the + // buffer so no files are touched. Note that we + // can't use (tokEPos - tokPos) because of the + // possibility of surrogate pairs in the token. + // + /// + /// The length of the pattern in codepoints (not the same as + /// string-length if the pattern contains any surrogate pairs). + /// + [SuppressMessage("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")] + [SuppressMessage("Microsoft.Naming", "CA1709:IdentifiersShouldBeCasedCorrectly", MessageId = "yyleng")] + [SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", MessageId = "yyleng")] + public long yyleng + { + get { + if (tokELin == tokLin) + return tokECol - tokCol; + else +#if BYTEMODE + return tokEPos - tokPos; +#else + { + int ch; + int count = 0; + int save = buffer.Pos; + buffer.Pos = tokPos; + do { + ch = buffer.Read(); + if (!char.IsHighSurrogate((char)ch)) count++; + } while (buffer.Pos < tokEPos && ch != ScanBuff.EndOfFile); + buffer.Pos = save; + return count; + } +#endif // BYTEMODE + } + } + + // ============ methods available in actions ============== + + [SuppressMessage("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")] + internal int YY_START { + get { return currentScOrd; } + set { currentScOrd = value; + currentStart = startState[value]; + } + } + + [SuppressMessage("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")] + internal void BEGIN(int next) { + currentScOrd = next; + currentStart = startState[next]; + } + + // ============== The main tokenizer code ================= + + int Scan() { +##-->prolog + for (; ; ) { + int next; // next state to enter +#if LEFTANCHORS + for (;;) { + // Discard characters that do not start any pattern. + // Must check the left anchor condition after *every* GetCode! + state = ((cCol == 0) ? anchorState[currentScOrd] : currentStart); + if ((next = NextState()) != goStart) break; // LOOP EXIT HERE... + GetCode(); + } + +#else // !LEFTANCHORS + state = currentStart; + while ((next = NextState()) == goStart) { + // At this point, the current character has no + // transition from the current state. We discard + // the "no-match" char. In traditional LEX such + // characters are echoed to the console. + GetCode(); + } +#endif // LEFTANCHORS + // At last, a valid transition ... + MarkToken(); + state = next; + GetCode(); +#if BACKUP + bool contextSaved = false; + while ((next = NextState()) > eofNum) { // Exit for goStart AND for eofNum + if (state <= maxAccept && next > maxAccept) { // need to prepare backup data + // Store data for the *latest* accept state that was found. + SaveStateAndPos( ref ctx ); + contextSaved = true; + } + state = next; + GetCode(); + } + if (state > maxAccept && contextSaved) + RestoreStateAndPos( ref ctx ); +#else // BACKUP + while ((next = NextState()) > eofNum) { // Exit for goStart AND for eofNum + state = next; + GetCode(); + } +#endif // BACKUP + if (state <= maxAccept) { + MarkEnd(); +##-->actionCases + } + } +##-->epilog + } + +#if BACKUP + void SaveStateAndPos(ref Context ctx) { + ctx.bPos = buffer.Pos; + ctx.rPos = readPos; + ctx.cCol = cCol; + ctx.lNum = lNum; + ctx.state = state; + ctx.cChr = code; + } + + void RestoreStateAndPos(ref Context ctx) { + buffer.Pos = ctx.bPos; + readPos = ctx.rPos; + cCol = ctx.cCol; + lNum = ctx.lNum; + state = ctx.state; + code = ctx.cChr; + } +#endif // BACKUP + + // ============= End of the tokenizer code ================ + +#if STACK + [SuppressMessage("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")] + internal void yy_clear_stack() { scStack.Clear(); } + + [SuppressMessage("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")] + internal int yy_top_state() { return scStack.Peek(); } + + internal void yy_push_state(int state) + { + scStack.Push(currentScOrd); + BEGIN(state); + } + + internal void yy_pop_state() + { + // Protect against input errors that pop too far ... + if (scStack.Count > 0) { + int newSc = scStack.Pop(); + BEGIN(newSc); + } // Otherwise leave stack unchanged. + } + #endif // STACK + + [SuppressMessage("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")] + internal void ECHO() { Console.Out.Write(yytext); } + +##-->userCode + } // end class $Scanner + +##-->embeddedBuffers + +} // end namespace diff --git a/Xbim.Common/Step21/Parser/gplex.pdf b/Xbim.Common/Step21/Parser/gplex.pdf new file mode 100644 index 000000000..ce0d5bb85 Binary files /dev/null and b/Xbim.Common/Step21/Parser/gplex.pdf differ diff --git a/Xbim.Common/Step21/StepTextHelper.cs b/Xbim.Common/Step21/StepTextHelper.cs index 0461db23a..354177d06 100644 --- a/Xbim.Common/Step21/StepTextHelper.cs +++ b/Xbim.Common/Step21/StepTextHelper.cs @@ -74,10 +74,22 @@ public static string ToPart21(this string source) return sb.ToString(); } + /// + /// ISO 10646 encoding types + /// private enum WriteState { + /// + /// Single Byte : \X\{hex2} + /// Normal, + /// + /// Double Byte : \X2\{hex4}+\X0\ + /// TwoBytes, + /// + /// Quad Byte : \X4\{hex8}+\X0\ + /// FourBytes } diff --git a/Xbim.Common/Step21/XbimP21Parser.cs b/Xbim.Common/Step21/XbimP21Parser.cs index 0071e19b0..6d9bab201 100644 --- a/Xbim.Common/Step21/XbimP21Parser.cs +++ b/Xbim.Common/Step21/XbimP21Parser.cs @@ -271,6 +271,12 @@ protected override void SetStringValue(string value) SetEntityParameter(value); } + protected override void SetInvalidStringValue(string value) + { + PropertyValue.Init(value, StepParserType.String); + SetEntityParameter(value); + } + protected override void SetEnumValue(string value) { PropertyValue.Init(value.Trim('.'), StepParserType.Enum); diff --git a/Xbim.Common/Step21/XbimP21Scanner.cs b/Xbim.Common/Step21/XbimP21Scanner.cs index cee24524c..58e445e44 100644 --- a/Xbim.Common/Step21/XbimP21Scanner.cs +++ b/Xbim.Common/Step21/XbimP21Scanner.cs @@ -31,6 +31,7 @@ using Xbim.IO.Parser; using Xbim.IO.Step21.Parser; + #endregion namespace Xbim.IO.Step21 @@ -155,6 +156,8 @@ public bool Parse(bool onlyHeader = false) if (tok >= 63) { Tokens t = (Tokens)tok; + + //Logger.LogInformation("Token {tok}: [{type}] {val}", t, this.CurrentInstance?.Entity, _scanner.yylval.strVal); switch (t) { case Tokens.HEADER: @@ -198,6 +201,16 @@ public bool Parse(bool onlyHeader = false) case Tokens.STRING: SetStringValue(_scanner.yylval.strVal); break; + case Tokens.MLSTRING: + SetStringValue(_scanner.yylval.strVal); + break; + case Tokens.INVALIDSTRING: + var last = GetLastEntity(); + Logger.LogWarning("Incorrectly escaped string found on #{entityId}={entity} at Line {line} Col {pos} : {string}", + last.EntityLabel, last.Entity.GetType().Name.ToUpperInvariant(), + _scanner.yylloc.StartLine, _scanner.yylloc.StartColumn, _scanner.yylval.strVal); + SetStringValue(_scanner.yylval.strVal); + break; case Tokens.BOOLEAN: SetBooleanValue(_scanner.yylval.strVal); break; @@ -216,7 +229,6 @@ public bool Parse(bool onlyHeader = false) case Tokens.OVERRIDE: SetOverrideValue(); break; - case Tokens.TEXT: case Tokens.error: case Tokens.ILLEGALCHAR: @@ -384,8 +396,11 @@ protected void NewEntity(/*ReadOnlySpan*/ string entityLabel) //last entity wasn't properly finished if (_processStack.Count > 0) { - var last = _processStack.Pop(); - Logger.LogError(LogEventIds.FailedEntity, $"Entity #{last.EntityLabel}={last.Entity?.GetType().Name.ToUpperInvariant()} wasn't closed and finished properly."); + + var last = GetLastEntity(); + + Logger.LogError(LogEventIds.FailedEntity, "Entity #{entityId}={entityType} was not fully parsed.", + last.EntityLabel, last.Entity?.GetType().Name.ToUpperInvariant()); _processStack.Clear(); ErrorCount++; @@ -396,6 +411,11 @@ protected void NewEntity(/*ReadOnlySpan*/ string entityLabel) NewEntity(label); } + protected Part21Entity GetLastEntity() + { + return _processStack.FirstOrDefault(e => e.EntityLabel > 0) ?? _processStack.Peek(); + } + private int _reportEntityCount = 0; private void NewEntity(int entityLabel) { @@ -507,6 +527,12 @@ protected void SetStringValue(string value) SetEntityParameter(value); } + protected void SetInvalidStringValue(string value) + { + PropertyValue.Init(value, StepParserType.String); + SetEntityParameter(value); + } + protected void SetEnumValue(string value) { PropertyValue.Init(value.Trim('.'), StepParserType.Enum); diff --git a/Xbim.Common/XbimExtensions/TimeSpanExtensions.cs b/Xbim.Common/XbimExtensions/TimeSpanExtensions.cs new file mode 100644 index 000000000..51712aa1b --- /dev/null +++ b/Xbim.Common/XbimExtensions/TimeSpanExtensions.cs @@ -0,0 +1,119 @@ +using System; +using System.Globalization; +using System.Text; +using System.Text.RegularExpressions; + +namespace Xbim.Common.XbimExtensions +{ + public static class TimeSpanExtensions + { + /// + /// Convert a duration formatted as a ISO8601 string to a + /// + /// + /// The + public static TimeSpan Iso8601DurationToTimeSpan(this string value) + { + if (string.IsNullOrWhiteSpace(value) || value[0] != 'P') + if (value[0] != '-' && value[1] != 'P') + return new TimeSpan(); + + var negative = value[0] == '-'; + var sign = negative ? -1 : 1; + + //https://www.w3.org/TR/xmlschema-2/#duration + //PnYnMnDTnHnMnS + + var daysTotal = 0; + var yReg = new Regex("(?[0-9]+)Y", RegexOptions.Compiled); + var yMatch = yReg.Match(value); + if (yMatch.Success) + daysTotal += (int)(int.Parse(yMatch.Groups["Y"].Value) * 365.25); + var mReg = new Regex("^[^T]+(?[0-9]+)M", RegexOptions.Compiled); + var mMatch = mReg.Match(value); + if (mMatch.Success) + daysTotal += (int)(int.Parse(mMatch.Groups["M"].Value) * 30.4166780729); + var dReg = new Regex("(?[0-9]+)D", RegexOptions.Compiled); + var dMatch = dReg.Match(value); + if (dMatch.Success) + daysTotal += int.Parse(dMatch.Groups["D"].Value); + + var hours = 0; + var hReg = new Regex("(?[0-9]+)H", RegexOptions.Compiled); + var hMatch = hReg.Match(value); + if (hMatch.Success) + hours = int.Parse(hMatch.Groups["H"].Value); + + var minutes = 0; + var miReg = new Regex("T[0-9]*H?(?[0-9]+)M", RegexOptions.Compiled); + var miMatch = miReg.Match(value); + if (miMatch.Success) + minutes = int.Parse(miMatch.Groups["M"].Value); + + var seconds = 0.0; + var sReg = new Regex("(?[0-9]+\\.?[0-9]*)S", RegexOptions.Compiled); + var sMatch = sReg.Match(value); + if (sMatch.Success) + seconds = float.Parse(sMatch.Groups["S"].Value, NumberStyles.Any, CultureInfo.InvariantCulture); + + return new TimeSpan( + sign * daysTotal, + sign * hours, + sign * minutes, + sign * (int)seconds, + sign * (int)((seconds - (int)seconds) * 1000)); + + } + + /// + /// Serialises this to an ISO8601 string representation. + /// + /// + /// + public static string ToIso8601Representation(this TimeSpan span) + { + StringBuilder sb = new StringBuilder(20); + var isNegative = span.Days < 0 || span.Hours < 0 || span.Minutes < 0 || span.Seconds < 0 || span.Milliseconds < 0; + + if (isNegative) + sb.Append('-'); + + sb.Append('P'); + + if (span.Days != 0) + { + sb.Append(Math.Abs(span.Days)); + sb.Append('D'); + } + + if (span.Hours != 0 || span.Minutes != 0 || span.Seconds != 0 || span.Milliseconds != 0) + { + sb.Append('T'); + if (span.Hours != 0) + { + sb.Append(Math.Abs(span.Hours)); + sb.Append('H'); + } + + if (span.Minutes != 0) + { + sb.Append(Math.Abs(span.Minutes)); + sb.Append('M'); + } + + if (span.Seconds != 0 || span.Milliseconds != 0) + { + var value = Math.Abs(span.Seconds) + Math.Abs(span.Milliseconds) / 1000f; + sb.Append(value.ToString("F3", CultureInfo.InvariantCulture)); + sb.Append('S'); + } + } + + // Zero is represented as "PT0S" + if (sb[sb.Length - 1] == 'P') + sb.Append("T0S"); + + return sb.ToString(); + } + } +} diff --git a/Xbim.Essentials.NetCore.Tests/GithubTests.cs b/Xbim.Essentials.NetCore.Tests/GithubTests.cs index 95b72f93e..fcc963fc6 100644 --- a/Xbim.Essentials.NetCore.Tests/GithubTests.cs +++ b/Xbim.Essentials.NetCore.Tests/GithubTests.cs @@ -15,6 +15,218 @@ namespace Xbim.Essentials.NetCore.Tests public class GithubTests { + + + [Fact] + public void Issue_603_StyledItem_Ifc2x3Native() + { + using var model = new MemoryModel(new Ifc2x3.EntityFactoryIfc2x3()); + + Ifc2x3.PresentationAppearanceResource.IfcStyledItem nativeStyledItem = CreateIfc2x3StyledItem(model); + + nativeStyledItem.Styles.Should().HaveCount(1); + var firstStyle = nativeStyledItem.Styles.First(); + firstStyle.Should().NotBeNull(); + firstStyle.Should().BeOfType(); + // and contents of assignment are the Style + firstStyle.Styles.Should().HaveCount(1); + firstStyle.Styles.First().Should().BeOfType(); + + IIfcStyledItem si = nativeStyledItem; + + si.Styles.First().Should().BeAssignableTo(); + } + + [Fact] + public void Issue_603_StyledItem_Ifc4x3Native() + { + using var model = new MemoryModel(new Ifc4x3.EntityFactoryIfc4x3Add2()); + + Ifc4x3.PresentationAppearanceResource.IfcStyledItem nativeStyledItem = CreateIfc4x3StyledItem(model); + + nativeStyledItem.Styles.Should().HaveCount(1); + var firstStyle = nativeStyledItem.Styles.First(); + firstStyle.Should().NotBeNull(); + firstStyle.Should().BeOfType(); + + IIfcStyledItem si = nativeStyledItem; + + si.Styles.First().Should().BeAssignableTo(); + } + + [Fact] + public void Issue_603_StyledItem_Ifc2x3() + { + using var model = new MemoryModel(new Ifc2x3.EntityFactoryIfc2x3()); + + IIfcStyledItem si = CreateStyledItemViaInterfaces(model); + + var nativeStyledItem = si as Ifc2x3.PresentationAppearanceResource.IfcStyledItem; + + nativeStyledItem.Styles.Should().HaveCount(1); + var firstStyle = nativeStyledItem.Styles.First(); + firstStyle.Should().NotBeNull(); + firstStyle.Should().BeAssignableTo(); + // Styles are accessed indirectly via PresentationStyleAssignment's Styles. + firstStyle.Styles.Should().HaveCount(1); + firstStyle.Styles.First().Should().BeAssignableTo(); + } + + + [Fact] + public void Issue_603_StyledItem_Ifc4() + { + using var model = new MemoryModel(new Ifc4.EntityFactoryIfc4()); + + IIfcStyledItem si = CreateStyledItemViaInterfaces(model); + + var nativeStyledItem = si as Ifc4.PresentationAppearanceResource.IfcStyledItem; + + nativeStyledItem.Styles.Should().HaveCount(1); + var firstStyle = nativeStyledItem.Styles.First(); + firstStyle.Should().NotBeNull(); + firstStyle.Should().BeAssignableTo(); + } + + [Fact] + public void Issue_603_StyledItem_Ifc4x3() + { + using var model = new MemoryModel(new Ifc4x3.EntityFactoryIfc4x3Add2()); + + IIfcStyledItem si = CreateStyledItemViaInterfaces(model); + + var nativeStyledItem = si as Ifc4x3.PresentationAppearanceResource.IfcStyledItem; + + nativeStyledItem.Styles.Should().HaveCount(1); + var firstStyle = nativeStyledItem.Styles.First(); + firstStyle.Should().NotBeNull(); + firstStyle.Should().BeAssignableTo(); + } + + // Use the IFC2x3 IIfcPresentationStyleAssignment explicitly (vs implicit conversion from IFC4+ IfcPresentationStyles) + [Fact] + public void Issue_603_StyledItem_Ifc2x3_BackwardCompatibility() + { + using var model = new MemoryModel(new Ifc2x3.EntityFactoryIfc2x3()); + + // Explicitly create the IfcPresentationStyleAssignment vs implicit via IFC4 interfaces + IIfcStyledItem si = CreateStyledItemViaInterfaces(model, true); + + var nativeStyledItem = si as Ifc2x3.PresentationAppearanceResource.IfcStyledItem; + + nativeStyledItem.Styles.Should().HaveCount(1); + var firstStyle = nativeStyledItem.Styles.First(); + firstStyle.Should().NotBeNull(); + firstStyle.Should().BeAssignableTo(); + firstStyle.Styles.Should().HaveCount(1); + firstStyle.Styles.First().Should().BeAssignableTo(); + } + + private IIfcStyledItem CreateStyledItemViaInterfaces(MemoryModel model, bool useStyleAssignment = false) + { + using var txn = model.BeginTransaction("Test"); + var factory = new EntityCreator(model); + + var surfaceStyle = factory.SurfaceStyle(style => + { + var defaultStyle = factory.SurfaceStyleShading(l => + { + l.SurfaceColour = factory.ColourRgb(rgb => + { + rgb.Red = 1.0; + rgb.Green = 0.0; + rgb.Blue = 0.0; + }); + }); + + style.Side = IfcSurfaceSide.BOTH; + style.Styles.Add(defaultStyle); + }); + var si = factory.StyledItem(styleItem => + { + if(useStyleAssignment && model.SchemaVersion == Common.Step21.XbimSchemaVersion.Ifc2X3) + { + var assignment = model.Instances.New(a => + { + a.Styles.Add((Ifc2x3.PresentationAppearanceResource.IfcSurfaceStyle)surfaceStyle); + }); + styleItem.Styles.Add(assignment); + } + else + { + // IFC 4/4.3 way + styleItem.Styles.Add(surfaceStyle); + } + }); + txn.Commit(); + return si; + } + + private Ifc2x3.PresentationAppearanceResource.IfcStyledItem CreateIfc2x3StyledItem(MemoryModel model) + { + using var txn = model.BeginTransaction("Test"); + + + var surfaceStyle = model.Instances.New(style => + { + var defaultStyle = model.Instances.New(l => + { + l.SurfaceColour = model.Instances.New(rgb => + { + rgb.Red = 1.0; + rgb.Green = 0.0; + rgb.Blue = 0.0; + }); + }); + + style.Styles.Add(defaultStyle); + }); + var si = model.Instances.New(styleItem => + { + // IfcPresentationStyleAssignment Required in IFC2x3, Optional in IFC4 and deprecated/removed in 4x3 + var presStyleAssignment = model.Instances.New(a => + { + a.Styles.Add(surfaceStyle); + }); + styleItem.Styles.Add(presStyleAssignment); + }); + txn.Commit(); + return si; + } + + private Ifc4x3.PresentationAppearanceResource.IfcStyledItem CreateIfc4x3StyledItem(MemoryModel model) + { + using var txn = model.BeginTransaction("Test"); + + + var surfaceStyle = model.Instances.New(style => + { + var defaultStyle = model.Instances.New(l => + { + l.SurfaceColour = model.Instances.New(rgb => + { + rgb.Red = 1.0; + rgb.Green = 0.0; + rgb.Blue = 0.0; + }); + }); + + style.Styles.Add(defaultStyle); + }); + var si = model.Instances.New(styleItem => + { + // IfcPresentationStyleAssignment deprecated/removed in 4x3 + //var presStyleAssignment = model.Instances.New(a => + //{ + // a.Styles.Add(style); + //}); + styleItem.Styles.Add(surfaceStyle); + }); + txn.Commit(); + return si; + } + + [Fact] public void GithubIssue_595_Fails_With_LinqSelectMany() diff --git a/Xbim.Essentials.NetCore.Tests/Xbim.Essentials.NetCore.Tests.csproj b/Xbim.Essentials.NetCore.Tests/Xbim.Essentials.NetCore.Tests.csproj index fc6d22bbc..348084166 100644 --- a/Xbim.Essentials.NetCore.Tests/Xbim.Essentials.NetCore.Tests.csproj +++ b/Xbim.Essentials.NetCore.Tests/Xbim.Essentials.NetCore.Tests.csproj @@ -20,8 +20,7 @@ - - + diff --git a/Xbim.IO.Esent/Esent/EsentModel.cs b/Xbim.IO.Esent/Esent/EsentModel.cs index f0533782d..3ffef2d00 100644 --- a/Xbim.IO.Esent/Esent/EsentModel.cs +++ b/Xbim.IO.Esent/Esent/EsentModel.cs @@ -117,7 +117,7 @@ protected void Init(IEntityFactory factory) InstancesLocal = new XbimInstanceCollection(this); var r = new Random(); UserDefinedId = (short)r.Next(short.MaxValue); // initialise value at random to reduce chance of duplicates - Metadata = ExpressMetaData.GetMetadata(factory.GetType().Module); + Metadata = ExpressMetaData.GetMetadata(factory); ModelFactors = new XbimModelFactors(Math.PI / 180, 1e-3, 1e-5); } catch(Exception ex) diff --git a/Xbim.IO.Esent/Esent/XbimP21Indexer.cs b/Xbim.IO.Esent/Esent/XbimP21Indexer.cs index 4047ccb82..80a5539d5 100644 --- a/Xbim.IO.Esent/Esent/XbimP21Indexer.cs +++ b/Xbim.IO.Esent/Esent/XbimP21Indexer.cs @@ -19,6 +19,7 @@ using System.Diagnostics; using System.Globalization; using System.IO; +using System.Linq; using System.Threading.Tasks; using Xbim.Common; using Xbim.Common.Step21; @@ -75,6 +76,7 @@ public class P21ToIndexParser : P21Parser, IDisposable private PropertyValue _propertyValue; private int _listNestLevel = -1; private readonly StepFileHeader _header = new StepFileHeader(StepFileHeader.HeaderCreationMode.LeaveEmpty, new EsentModel()); + private readonly ILogger _logger; public StepFileHeader Header { @@ -107,16 +109,17 @@ internal P21ToIndexParser(Stream inputP21, long streamSize, EsentEntityCursor t _entityCount = 0; _streamSize = streamSize; _codePageOverride = codePageOverride; + _logger = loggerFactory.CreateLogger(); } protected override void SetErrorMessage() { - Debug.WriteLine("TODO"); + _logger.LogWarning("Parse Error at [{line}, {col}-{endCol}] on #{entityId}={entityType} : {value}", Scanner.yylloc.StartLine, Scanner.yylloc.StartColumn, Scanner.yylloc.EndColumn, _currentLabel, _currentType, Scanner.yylval.strVal); } protected override void CharacterError() { - Debug.WriteLine("TODO"); + _logger?.LogWarning("Error parsing IFC File, illegal character found"); } protected override void BeginParse() @@ -445,6 +448,20 @@ protected override void SetStringValue(string value) _currentInstance.CurrentParamIndex++; } + protected override void SetInvalidStringValue(string value) + { + var last = GetLastEntity(); + _logger.LogWarning("Incorrectly escaped string found on #{entityId}={entity} at Line {line} Col {pos} : {string}", + last.EntityLabel, last.Entity.GetType().Name.ToUpperInvariant(), + Scanner.yylloc.StartLine, Scanner.yylloc.StartColumn, Scanner.yylval.strVal); + SetStringValue(value); + } + + protected Part21Entity GetLastEntity() + { + return _processStack.FirstOrDefault(e => e.EntityLabel > 0) ?? _processStack.Peek(); + } + protected override void SetEnumValue(string value) { if (InHeader) diff --git a/Xbim.IO.Esent/HeuristicModelProvider.cs b/Xbim.IO.Esent/HeuristicModelProvider.cs index 93bbfcae1..f3ae17f50 100644 --- a/Xbim.IO.Esent/HeuristicModelProvider.cs +++ b/Xbim.IO.Esent/HeuristicModelProvider.cs @@ -333,10 +333,6 @@ public override IModel Open(string path, XbimSchemaVersion schemaVersion, double else if (storageType.HasFlag(StorageType.IfcXml)) model.LoadXml(path, progDelegate); - // if we are looking at a memory model loaded from a file it might be safe to fix the file name in the - // header with the actual file loaded - FileInfo f = new FileInfo(path); - model.Header.FileName.Name = f.FullName; return model; } } diff --git a/Xbim.IO.MemoryModel/Xml/IfcXmlWriter3.cs b/Xbim.IO.MemoryModel/Xml/IfcXmlWriter3.cs index 2cd79dda3..d65216f79 100644 --- a/Xbim.IO.MemoryModel/Xml/IfcXmlWriter3.cs +++ b/Xbim.IO.MemoryModel/Xml/IfcXmlWriter3.cs @@ -3,6 +3,7 @@ using System; using System.Collections.Generic; using System.Reflection; +using System.Text; using System.Xml; using Xbim.Common; using Xbim.Common.Metadata; @@ -151,7 +152,8 @@ private void WriteInHeader(XmlWriter output, string prefix, string localName, st { try { - output.WriteElementString(prefix, localName, ns, value); + var encoded = XmlString(value); + output.WriteElementString(prefix, localName, ns, encoded); } catch (Exception e) { @@ -429,5 +431,65 @@ private void WriteProperty(string propName, Type propType, object propVal, objec //else // throw new Exception(string.Format("Entity of type {0} has illegal property {1} of type {2}", entity.GetType().ToString(), propType.Name, propType.Name)); } + + // Based on https://github.com/RickStrahl/Westwind.Utilities/blob/master/Westwind.Utilities/Utilities/XmlUtils.c + /// + /// Turns a string into a properly XML Encoded string. + /// Uses simple string replacement. + /// + /// Plain text to convert to XML Encoded string + /// + /// If true encodes single and double quotes. + /// When embedding element values quotes don't need to be encoded. + /// When embedding attributes quotes need to be encoded. + /// + /// XML encoded string + private static string XmlString(string text, bool isAttribute = false) + { + if (string.IsNullOrEmpty(text)) + return text; + + var sb = new StringBuilder(text.Length); + foreach (var chr in text) + { + if (chr == '<') + sb.Append("<"); + else if (chr == '>') + sb.Append(">"); + else if (chr == '&') + sb.Append("&"); + + if (isAttribute) + { + // special handling for quotes + if (chr == '\"') + sb.Append("""); + else if (chr == '\'') + sb.Append("'"); + + // Legal sub-chr32 characters + else if (chr == '\n') + sb.Append(" "); + else if (chr == '\r') + sb.Append(" "); + else if (chr == '\t') + sb.Append(" "); + } + else + { + if (chr < 32) + { + uint c = Convert.ToUInt32(chr); + sb.AppendFormat(@"&#{0:X};", c); + } + else + { + sb.Append(chr); + } + } + } + + return sb.ToString(); + } } } \ No newline at end of file diff --git a/Xbim.Ifc/Extensions/IIfcAppliedValueExtensions.cs b/Xbim.Ifc/Extensions/IIfcAppliedValueExtensions.cs new file mode 100644 index 000000000..c79cb178c --- /dev/null +++ b/Xbim.Ifc/Extensions/IIfcAppliedValueExtensions.cs @@ -0,0 +1,104 @@ +using System; +using System.Text; +using Xbim.Ifc4.Interfaces; +using Xbim.Ifc4.MeasureResource; + +namespace Xbim.Ifc +{ + public static class IIfcAppliedValueExtensions + { + public static string AsString(this IIfcAppliedValue obj) + { + + StringBuilder value = new StringBuilder(); + if ((obj.Description.HasValue) && + (!string.IsNullOrEmpty(obj.Description)) + ) + { + value.Append(obj.Description); + value.Append(", "); + } + + if (obj.AppliedValue != null)//not nullable should be? incorrect name? + { + value.Append("AppliedValue: "); + if (obj.AppliedValue is IfcRatioMeasure) + { + var ifcRatioMeasure = (IfcRatioMeasure)obj.AppliedValue; + value.Append(string.Format("{0,0:N2}", ifcRatioMeasure.Value)); + } + if (obj.AppliedValue is IfcMonetaryMeasure) + { + IfcMonetaryMeasure ifcMonetaryMeasure = (IfcMonetaryMeasure)obj.AppliedValue; + value.Append(string.Format("{0,0:N2}", ifcMonetaryMeasure.Value)); + } + if (obj.AppliedValue is IfcMeasureWithUnit) + { + value.Append(((IfcMeasureWithUnit)obj.AppliedValue).AsString()); + + } + value.Append(", "); + } + + if (obj.UnitBasis != null) //not nullable should be? + { + value.Append("UnitBase: "); + value.Append(((IfcMeasureWithUnit)obj.UnitBasis).AsString()); + value.Append(", "); + } + if (obj.ApplicableDate != null) //not nullable should be? + { + value.Append("ApplicableDate: "); + value.Append(obj.ApplicableDate.ToString()); + value.Append(", "); + } + if (obj.FixedUntilDate != null) //not nullable should be? + { + value.Append("FixedUntilDate: "); + value.Append(obj.FixedUntilDate.ToString()); + value.Append(", "); + } + + if (obj is IIfcCostValue) + { + IIfcCostValue ifcCostValue = (IIfcCostValue)obj; + if (ifcCostValue.Category != null) + { + value.Append("CostType: "); + value.Append(ifcCostValue.Category); + value.Append(", "); + } + + if (ifcCostValue.Condition != null)//not nullable should be? + { + value.Append("Condition: "); + value.Append(ifcCostValue.Condition); + value.Append(", "); + } + } + if (obj is Ifc2x3.CostResource.IfcEnvironmentalImpactValue) + { + Ifc2x3.CostResource.IfcEnvironmentalImpactValue ifcEnvironmentalImpactValue = (Ifc2x3.CostResource.IfcEnvironmentalImpactValue)obj; + if (ifcEnvironmentalImpactValue.ImpactType != null) + { + value.Append("ImpactType: "); + value.Append(ifcEnvironmentalImpactValue.ImpactType); + value.Append(", "); + } + + //enum so should have a value as not nullable + value.Append("Category: "); + value.Append(ifcEnvironmentalImpactValue.Category.ToString()); + value.Append(", "); + + if (ifcEnvironmentalImpactValue.UserDefinedCategory != null)//not nullable should be? + { + value.Append("UserDefinedCategory: "); + value.Append(ifcEnvironmentalImpactValue.UserDefinedCategory); + value.Append(", "); + } + } + return value.ToString(); + } + } +} diff --git a/Xbim.Ifc/Extensions/IIfcAxis2Placement2DExtensions.cs b/Xbim.Ifc/Extensions/IIfcAxis2Placement2DExtensions.cs new file mode 100644 index 000000000..8608122f2 --- /dev/null +++ b/Xbim.Ifc/Extensions/IIfcAxis2Placement2DExtensions.cs @@ -0,0 +1,28 @@ +using System.Collections.Concurrent; +using Xbim.Common.Geometry; +using Xbim.Ifc4.Interfaces; + +namespace Xbim.Ifc +{ + public static class IIfcAxis2Placement2DExtensions + { + public static XbimMatrix3D ToMatrix3D(this IIfcAxis2Placement2D obj, ConcurrentDictionary maps = null) + { + object transform; + if (maps != null && maps.TryGetValue(obj.EntityLabel, out transform)) //already converted it just return cached + return (XbimMatrix3D)transform; + if (obj.RefDirection != null) + { + XbimVector3D v = obj.RefDirection.XbimVector3D(); + v.Normalized(); + transform = new XbimMatrix3D(v.X, v.Y, 0, 0, v.Y, v.X, 0, 0, 0, 0, 1, 0, obj.Location.X, obj.Location.Y, 0, 1); + } + else + transform = new XbimMatrix3D(1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, obj.Location.X, obj.Location.Y, + obj.Location.Z, 1); + if (maps != null) maps.TryAdd(obj.EntityLabel, transform); + return (XbimMatrix3D)transform; + } + + } +} diff --git a/Xbim.Ifc/Extensions/IIfcAxis2Placement3DExtensions.cs b/Xbim.Ifc/Extensions/IIfcAxis2Placement3DExtensions.cs new file mode 100644 index 000000000..1be31ff56 --- /dev/null +++ b/Xbim.Ifc/Extensions/IIfcAxis2Placement3DExtensions.cs @@ -0,0 +1,43 @@ +using System; +using System.Collections.Concurrent; +using System.Collections.Generic; +using System.Text; +using Xbim.Common.Geometry; +using Xbim.Ifc4.Interfaces; + +namespace Xbim.Ifc +{ + public static class IIfcAxis2Placement3DExtensions + { + public static XbimMatrix3D ToMatrix3D(this IIfcAxis2Placement3D obj, ConcurrentDictionary maps = null) + { + if (maps == null) + return obj.ConvertAxis3D(); + + object transform; + if (maps.TryGetValue(obj.EntityLabel, out transform)) //already converted it just return cached + return (XbimMatrix3D)transform; + + transform = obj.ConvertAxis3D(); + maps.TryAdd(obj.EntityLabel, transform); + return (XbimMatrix3D)transform; + } + + private static XbimMatrix3D ConvertAxis3D(this IIfcAxis2Placement3D obj) + { + if (obj.RefDirection == null || obj.Axis == null) + return new XbimMatrix3D(1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, obj.Location.X, obj.Location.Y, + obj.Location.Z, 1); + + var za = obj.Axis.XbimVector3D(); + za.Normalized(); + var xa = obj.RefDirection.XbimVector3D(); + xa.Normalized(); + var ya = XbimVector3D.CrossProduct(za, xa); + ya.Normalized(); + return new XbimMatrix3D(xa.X, xa.Y, xa.Z, 0, ya.X, ya.Y, ya.Z, 0, za.X, za.Y, za.Z, 0, obj.Location.X, + obj.Location.Y, obj.Location.Z, 1); + } + + } +} diff --git a/Xbim.Ifc/Extensions/IIfcAxis2PlacementExtensions.cs b/Xbim.Ifc/Extensions/IIfcAxis2PlacementExtensions.cs new file mode 100644 index 000000000..14fee4602 --- /dev/null +++ b/Xbim.Ifc/Extensions/IIfcAxis2PlacementExtensions.cs @@ -0,0 +1,19 @@ +using Xbim.Common.Geometry; +using Xbim.Ifc4.Interfaces; + +namespace Xbim.Ifc +{ + public static class IIfcAxis2PlacementExtensions + { + public static XbimMatrix3D ToMatrix3D(this IIfcAxis2Placement placement) + { + return placement switch + { + IIfcAxis2Placement3D ax3 => ax3.ToMatrix3D(), + IIfcAxis2Placement2D ax2 => ax2.ToMatrix3D(), + _ => XbimMatrix3D.Identity + }; + } + + } +} diff --git a/Xbim.Ifc/Extensions/IIfcCartesianPointExtensions.cs b/Xbim.Ifc/Extensions/IIfcCartesianPointExtensions.cs new file mode 100644 index 000000000..028d8a52f --- /dev/null +++ b/Xbim.Ifc/Extensions/IIfcCartesianPointExtensions.cs @@ -0,0 +1,63 @@ +using Xbim.Common.Geometry; +using Xbim.Ifc4.Interfaces; + +namespace Xbim.Ifc +{ + public static class IIfcCartesianPointExtensions + { + public static void SetXY(this IIfcCartesianPoint obj, double x, double y) + { + obj.Coordinates.Clear(); + obj.Coordinates.Add(x); + obj.Coordinates.Add(y); + } + + public static void SetXYZ(this IIfcCartesianPoint obj, double x, double y, double z) + { + obj.Coordinates.Clear(); + obj.Coordinates.Add(x); + obj.Coordinates.Add(y); + obj.Coordinates.Add(z); + } + + public static XbimPoint3D ToXbimPoint3D(this IIfcCartesianPoint obj) + { + return new XbimPoint3D(obj.X, obj.Y, obj.Z); + } + + public static bool IsEqual(this IIfcCartesianPoint obj, IIfcCartesianPoint p, double tolerance) + { + return obj.DistanceSquared(p) <= (tolerance * tolerance); + } + + public static double DistanceSquared(this IIfcCartesianPoint obj, IIfcCartesianPoint p) + { + double d = 0, dd; + double x1, y1, z1, x2, y2, z2; + obj.XYZ(out x1, out y1, out z1); + p.XYZ(out x2, out y2, out z2); + dd = x1; dd -= x2; dd *= dd; d += dd; + dd = y1; dd -= y2; dd *= dd; d += dd; + dd = z1; dd -= z2; dd *= dd; d += dd; + return d; + } + + public static void XYZ(this IIfcCartesianPoint obj, out double x, out double y, out double z) + { + if (obj.Dim == 3) + { + + x = obj.Coordinates[0]; y = obj.Coordinates[1]; z = obj.Coordinates[2]; + } + else if (obj.Dim == 2) + { + + x = obj.Coordinates[0]; y = obj.Coordinates[1]; z = 0; + } + else + { + z = y = x = double.NaN; + } + } + } +} diff --git a/Xbim.Ifc/Extensions/IIfcDirectionExtensions.cs b/Xbim.Ifc/Extensions/IIfcDirectionExtensions.cs new file mode 100644 index 000000000..10bbf398f --- /dev/null +++ b/Xbim.Ifc/Extensions/IIfcDirectionExtensions.cs @@ -0,0 +1,64 @@ +using Xbim.Common.Geometry; +using Xbim.Ifc4.Interfaces; + +namespace Xbim.Ifc +{ + public static class IIfcDirectionExtensions + { + public static XbimVector3D XbimVector3D(this IIfcDirection obj) + { + return new XbimVector3D(obj.X, obj.Y, double.IsNaN(obj.Z) ? 0 : obj.Z); + } + + + /// + /// Computes and returns the normalised vector for the direction. + /// + /// A 1-length vector if the direction is meaningful or a 0-length vector otherwise + public static XbimVector3D Normalise(this IIfcDirection obj) + { + if (obj.Dim == 3) + { + var v3D = new XbimVector3D(obj.X, obj.Y, obj.Z); + v3D.Normalized(); + return v3D; + } + // Since the return value is not stored in any field or property + // and the function return variable is intrinsically 3D it's reasonable do + // deal with dimensions lower than 3 + // + var compX = obj.X; // each value is nan if the dimension is not specified + var compY = obj.Y; + var compZ = obj.Z; + + // substitite nan for 0 + if (double.IsNaN(compX)) + compX = 0; + if (double.IsNaN(compY)) + compY = 0; + if (double.IsNaN(compZ)) + compZ = 0; + + var otherCases = new XbimVector3D(compX, compY, compZ); + // normalied return a 0-len-vector if no significant direction exists + otherCases.Normalized(); + return otherCases; + } + + + public static void SetXY(this IIfcDirection obj, double x, double y) + { + obj.DirectionRatios.Clear(); + obj.DirectionRatios.Add(x); + obj.DirectionRatios.Add(y); + } + + public static void SetXYZ(this IIfcDirection obj,double x, double y, double z) + { + obj.DirectionRatios.Clear(); + obj.DirectionRatios.Add(x); + obj.DirectionRatios.Add(y); + obj.DirectionRatios.Add(z); + } + } +} diff --git a/Xbim.Ifc/Extensions/IIfcObjectExtensions.cs b/Xbim.Ifc/Extensions/IIfcObjectExtensions.cs new file mode 100644 index 000000000..6e548043e --- /dev/null +++ b/Xbim.Ifc/Extensions/IIfcObjectExtensions.cs @@ -0,0 +1,395 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Reflection; +using Xbim.Ifc4.Interfaces; + +namespace Xbim.Ifc +{ + public static class IIfcObjectExtensions + { + /// + /// Adds an element type to the object if it doesn't already have one, return the new or existing relationship that holds the type and this element. If there is a relationship for this type but this element is not related it adds it to the exosting relationship + /// + /// + /// + /// + public static IIfcRelDefinesByType AddDefiningType(this IIfcObject obj, IIfcTypeObject theType) + { + + var typedefs = obj.Model.Instances.Where(r => r.RelatingType == theType).ToList(); + var thisTypeDef = typedefs.FirstOrDefault(r => r.RelatedObjects.Contains(obj)); + if (thisTypeDef != null) return thisTypeDef; // it is already type related + var anyTypeDef = typedefs.FirstOrDefault(); //take any one of the rels of the type + if (anyTypeDef != null) + { + anyTypeDef.RelatedObjects.Add(obj); + return anyTypeDef; + } + var factory = new EntityCreator(obj.Model); + var newdef = factory.RelDefinesByType(r => r.RelatingType = theType); + newdef.RelatedObjects.Add(obj); + + return newdef; + } + + /// + /// Adds an existing property set to the object, NB no check is done for duplicate psets + /// + /// + /// + public static void AddPropertySet(this IIfcObject obj, IIfcPropertySet pSet) + { + + var relDef = obj.Model.Instances.OfType().FirstOrDefault(r => pSet.Equals(r.RelatingPropertyDefinition)); + if (relDef == null) + { + var factory = new EntityCreator(obj.Model); + relDef = factory.RelDefinesByProperties(r => r.RelatingPropertyDefinition = pSet); + } + relDef.RelatedObjects.Add(obj); + } + + private static IEnumerable GetPropertySets(this IIfcObject obj) + { + var pSets = obj.IsDefinedBy.SelectMany(r => r.RelatingPropertyDefinition.PropertySetDefinitions); + return pSets.OfType(); + } + + /// + /// Returns the propertyset of the specified name, null if it does not exist + /// + /// + /// + /// + /// + public static IIfcPropertySet GetPropertySet(this IIfcObject obj, string pSetName, bool caseSensitive = true) + { + return obj.GetPropertySets().FirstOrDefault(pset => string.Compare(pSetName, pset.Name, !caseSensitive) == 0); + } + + /// + /// Returns the first single property matching the pset and property name, null if none exists + /// + /// + /// + /// + /// + public static IIfcPropertySingleValue GetPropertySingleValue(this IIfcObject obj, string pSetName, string propertyName) + { + var pset = obj.GetPropertySet(pSetName); + return pset != null ? pset.HasProperties.OfType().FirstOrDefault(p => p.Name == propertyName) : null; + } + + /// + /// Returns the value of the first single property matching the pset and property name, null if none exists + /// + /// + /// + /// + /// + /// + public static TValueType GetPropertySingleValue(this IIfcObject obj, string pSetName, string propertyName) where TValueType : IIfcValue + { + var pset = obj.GetPropertySet(pSetName); + if (pset == null) return default; + var pVal = + pset.HasProperties.OfType().FirstOrDefault(p => p.Name == propertyName); + if (pVal != null && pVal.NominalValue is TValueType) return (TValueType)pVal.NominalValue; + return default; + } + + /// + /// If the property value exists, returns the Nominal Value of the contents + /// + /// + /// + /// + /// + public static IIfcValue GetPropertySingleNominalValue(this IIfcObject obj, string pSetName, string propertyName) + { + var psv = obj.GetPropertySingleValue(pSetName, propertyName); + return psv == null ? null : psv.NominalValue; + } + + + /// + /// Creates property single value with specified type and default value of this type (0 for numeric types, empty string or string types and false for bool types) + /// + /// + /// + /// + /// + /// + public static IIfcPropertySingleValue SetPropertySingleValue(this IIfcObject obj, string pSetName, string propertyName) where T : IIfcValue + { + return obj.SetPropertySingleValue(pSetName, propertyName, typeof(T)); + } + + /// + /// Creates property single value with specified type and default value of this type (0 for numeric types, empty string or string types and false for bool types) + /// + /// + /// Property set name + /// Property name + /// Type of the property + /// Property single value with default value of the specified type + public static IIfcPropertySingleValue SetPropertySingleValue(this IIfcObject obj, string pSetName, string propertyName, Type type) + { + if (typeof(IIfcValue).GetTypeInfo().IsAssignableFrom(type)) + { + IIfcValue value; + if (typeof(Ifc4.MeasureResource.IfcPositiveLengthMeasure).GetTypeInfo().IsAssignableFrom(type)) + value = Activator.CreateInstance(type, 1.0) as IIfcValue; + else + value = Activator.CreateInstance(type) as IIfcValue; + + if (value != null) + return obj.SetPropertySingleValue(pSetName, propertyName, value); + throw new Exception("Type '" + type.Name + "' can't be initialized."); + } + throw new ArgumentException("Type '" + type.Name + "' is not compatible with IfcValue type."); + } + + /// + /// Creates a property single, or updates an existing matching one with the supplied + /// + /// + /// + /// + /// + /// + public static IIfcPropertySingleValue SetPropertySingleValue(this IIfcObject obj, string pSetName, string propertyName, IIfcValue value) + { + var pset = obj.GetPropertySet(pSetName); + var factory = new EntityCreator(obj.Model); + if (pset == null) + { + pset = factory.PropertySet(); + pset.Name = pSetName; + var relDef = factory.RelDefinesByProperties(r => + { + r.RelatingPropertyDefinition = pset; + r.RelatedObjects.Add(obj); + }); + } + + //change existing property of the same name from the property set + var singleVal = obj.GetPropertySingleValue(pSetName, propertyName); + if (singleVal != null) + { + singleVal.NominalValue = value; + } + else + { + singleVal = factory.PropertySingleValue(psv => { psv.Name = propertyName; psv.NominalValue = value; }); + pset.HasProperties.Add(singleVal); + } + + return singleVal; + } + + //TODO: would this be more logical on IIfcBuilding not IIfcObject + /// + /// Returns a list of all the elements that bound the external of the building + /// + /// + /// + public static IEnumerable GetExternalElements(this IIfcObject obj) + { + return obj.Model.Instances.OfType().Where(r => r.InternalOrExternalBoundary == IfcInternalOrExternalEnum.EXTERNAL + && r.PhysicalOrVirtualBoundary == IfcPhysicalOrVirtualEnum.PHYSICAL + && r.RelatedBuildingElement != null).Select(rsb => rsb.RelatedBuildingElement).Distinct(); + } + + public static IIfcElementQuantity GetElementQuantity(this IIfcObject obj, string quantityName, bool caseSensitive = true) + { + var qSets = obj.IsDefinedBy.SelectMany(r => r.RelatingPropertyDefinition.PropertySetDefinitions).OfType(); + return qSets.FirstOrDefault(qset => string.Compare(quantityName, qset.Name, !caseSensitive) == 0); + } + + /// + /// Returns the first quantity in the property set pSetName of name qName + /// + /// + /// + /// + /// + /// + public static TQType GetQuantity(this IIfcObject obj, string pSetName, string quantityName) where TQType : IIfcPhysicalQuantity + { + var propSets = obj.IsDefinedBy.SelectMany(r => r.RelatingPropertyDefinition.PropertySetDefinitions); + var rel = propSets.FirstOrDefault(r => r is IIfcElementQuantity && r.Name == pSetName); + if (rel == null) return default; + var eQ = rel as IIfcElementQuantity; + return eQ == null ? default : eQ.Quantities.OfType().FirstOrDefault(q => q.Name == quantityName); + } + + /// + /// Returns the first quantity that matches the quantity name + /// + /// + /// + /// + /// + public static TQType GetQuantity(this IIfcObject obj, string quantityName) where TQType : IIfcPhysicalQuantity + { + var qSets = obj.IsDefinedBy.SelectMany(r => r.RelatingPropertyDefinition.PropertySetDefinitions).OfType(); + return qSets.SelectMany(qset => qset.Quantities).OfType().FirstOrDefault(q => q.Name == quantityName); + } + + + /// + /// Adds a new IfcPhysicalQuantity to the IfcElementQuantity called propertySetName + /// + /// + /// Name of the IfcElementQuantity property set + /// quantity to be added + /// Sets the method of measurement, if not null overrides previous value + public static IIfcElementQuantity AddQuantity(this IIfcObject obj, string psetName, IIfcPhysicalQuantity quantity, string methodOfMeasurement = null) + { + var pset = obj.GetElementQuantity(psetName); + + if (pset == null) + { + var factory = new EntityCreator(obj.Model); + pset = factory.ElementQuantity(p => p.Name = psetName); + var relDef = factory.RelDefinesByProperties(r => + { + r.RelatingPropertyDefinition = pset; + r.RelatedObjects.Add(obj); + + }); + } + pset.Quantities.Add(quantity); + if (!string.IsNullOrEmpty(methodOfMeasurement)) pset.MethodOfMeasurement = methodOfMeasurement; + return pset; + } + + + /// + /// Returns simple physical quality of the element. + /// + /// + /// + /// + /// + public static IIfcPhysicalSimpleQuantity GetElementPhysicalSimpleQuantity(this IIfcObject obj, string pSetName, string qualityName) + { + var elementQuality = obj.GetElementQuantity(pSetName); + if (elementQuality != null) + { + return elementQuality.Quantities.FirstOrDefault(sq => sq.Name == qualityName); + } + return null; + } + + /// + /// Removes a matching single value property + /// + /// + /// + /// + public static void RemovePropertySingleValue(this IIfcObject obj, string pSetName, string propertyName) + { + var pset = obj.GetPropertySet(pSetName); + if (pset != null) + { + var singleValue = pset.HasProperties.FirstOrDefault(p => p.Name == propertyName); + if (singleValue != null) + { + pset.HasProperties.Remove(singleValue); + } + } + + } + + /// + /// Removes a matching simple quantity + /// + /// + /// + /// + public static void RemoveElementPhysicalSimpleQuantity(this IIfcObject obj, string pSetName, string qualityName) + { + var elementQuality = obj.GetElementQuantity(pSetName); + if (elementQuality != null) + { + var simpleQuality = elementQuality.Quantities.FirstOrDefault(sq => sq.Name == qualityName); + if (simpleQuality != null) + { + elementQuality.Quantities.Remove(simpleQuality); + } + } + } + + /// + /// Sets a simple Physical Quantity and value on this object. + /// + /// + /// + /// + /// + /// + /// + public static void SetElementPhysicalSimpleQuantity(this IIfcObject obj, string qSetName, string qualityName, double value, XbimQuantityTypeEnum quantityType, + IIfcNamedUnit unit) + { + + var factory = new EntityCreator(obj.Model); + var qset = obj.GetElementQuantity(qSetName); + if (qset == null) + { + qset = factory.ElementQuantity(q => + { + q.Name = qSetName; + }); + var relDef = factory.RelDefinesByProperties(prop => + { + prop.RelatingPropertyDefinition = qset; + prop.RelatedObjects.Add(obj); + }); + + } + + //remove existing simple quality + var simpleQuantity = obj.GetElementPhysicalSimpleQuantity(qSetName, qualityName); + if (simpleQuantity != null) + { + var elementQuality = obj.GetElementQuantity(qSetName); + elementQuality.Quantities.Remove(simpleQuantity); + obj.Model.Delete(simpleQuantity); + } + + simpleQuantity = quantityType switch + { + XbimQuantityTypeEnum.Area => factory.QuantityArea(sq => sq.AreaValue = (Ifc4.MeasureResource.IfcAreaMeasure)value), + XbimQuantityTypeEnum.Length => factory.QuantityLength(sq => sq.LengthValue = (Ifc4.MeasureResource.IfcLengthMeasure)value), + XbimQuantityTypeEnum.Volume => factory.QuantityVolume(sq => sq.VolumeValue = (Ifc4.MeasureResource.IfcVolumeMeasure)value), + XbimQuantityTypeEnum.Count => factory.QuantityCount(sq => sq.CountValue = (Ifc4.MeasureResource.IfcCountMeasure)value), + XbimQuantityTypeEnum.Weight => factory.QuantityWeight(sq => sq.WeightValue = (Ifc4.MeasureResource.IfcMassMeasure)value), + XbimQuantityTypeEnum.Time => factory.QuantityTime(sq => sq.TimeValue = (Ifc4.MeasureResource.IfcTimeMeasure)value), + _ => default, + + }; + + if (simpleQuantity == null) + return; + + simpleQuantity.Unit = unit; + simpleQuantity.Name = qualityName; + + qset.Quantities.Add(simpleQuantity); + } + + } + public enum XbimQuantityTypeEnum + { + Length, + Area, + Volume, + Count, + Weight, + Time + } +} diff --git a/Xbim.Ifc/Extensions/IIfcProjectExtension.cs b/Xbim.Ifc/Extensions/IIfcProjectExtension.cs deleted file mode 100644 index 8b54fe468..000000000 --- a/Xbim.Ifc/Extensions/IIfcProjectExtension.cs +++ /dev/null @@ -1,14 +0,0 @@ -using System.Collections.Generic; -using System.Linq; -using Xbim.Ifc4.Interfaces; - -namespace Xbim.Ifc -{ - public static class IIfcProjectExtension - { - public static IEnumerable GetSpatialStructuralElements(this IIfcProject project) - { - return project.IsDecomposedBy.SelectMany(rel => rel.RelatedObjects.OfType()); - } - } -} diff --git a/Xbim.Ifc/Extensions/IIfcProjectExtensions.cs b/Xbim.Ifc/Extensions/IIfcProjectExtensions.cs new file mode 100644 index 000000000..b80a154e8 --- /dev/null +++ b/Xbim.Ifc/Extensions/IIfcProjectExtensions.cs @@ -0,0 +1,73 @@ +using System.Collections.Generic; +using System.Linq; +using Xbim.Ifc4.Interfaces; + +namespace Xbim.Ifc +{ + public static class IIfcProjectExtensions + { + public static IEnumerable GetSpatialStructuralElements(this IIfcProject project) + { + return project.IsDecomposedBy.SelectMany(rel => rel.RelatedObjects.OfType()); + } + + + + /// + /// Adds Site to the IsDecomposedBy Collection. + /// + public static void AddSite(this IIfcProject proj, IIfcSite site) + { + var decomposition = proj.IsDecomposedBy.FirstOrDefault(); + if (decomposition == null) //none defined create the relationship + { + var factory = new EntityCreator(proj.Model); + var relSub = factory.RelAggregates(r => + { + r.RelatingObject = proj; + r.RelatedObjects.Add(site); + }); + } + else + decomposition.RelatedObjects.Add(site); + } + + /// + /// Adds Building to the IsDecomposedBy Collection. + /// + public static void AddBuilding(this IIfcProject proj, IIfcBuilding building) + { + var decomposition = proj.IsDecomposedBy.FirstOrDefault(); + if (decomposition == null) //none defined create the relationship + { + var factory = new EntityCreator(proj.Model); + var relSub = factory.RelAggregates(r => + { + r.RelatingObject = proj; + r.RelatedObjects.Add(building); + }); + } + else + decomposition.RelatedObjects.Add(building); + } + + /// + /// Adds Ifc4x3 Facility to the IsDecomposedBy Collection. + /// + public static void AddFacility(this IIfcProject proj, Ifc4x3.ProductExtension.IfcFacility facility) + { + var decomposition = proj.IsDecomposedBy.FirstOrDefault(); + if (decomposition == null) //none defined create the relationship + { + var factory = new EntityCreator(proj.Model); + var relSub = factory.RelAggregates(r => + { + r.RelatingObject = proj; + r.RelatedObjects.Add(facility); + }); + } + else + decomposition.RelatedObjects.Add(facility); + } + } +} diff --git a/Xbim.Ifc/Extensions/IIfcUnitAssignmentExtensions.cs b/Xbim.Ifc/Extensions/IIfcUnitAssignmentExtensions.cs new file mode 100644 index 000000000..561e8387a --- /dev/null +++ b/Xbim.Ifc/Extensions/IIfcUnitAssignmentExtensions.cs @@ -0,0 +1,367 @@ +using System; +using System.Linq; +using Xbim.Common; +using Xbim.Ifc4.Interfaces; + +namespace Xbim.Ifc +{ + public enum ConversionBasedUnit + { + Inch, + Foot, + Yard, + Mile, + Acre, + Litre, + PintUk, + PintUs, + GallonUk, + GallonUs, + Ounce, + Pound, + SquareFoot, + CubicFoot + } + public static class IIfcUnitAssignmentExtensions + { + public static double Power(this IIfcUnitAssignment obj, IfcUnitEnum unitType) + { + var siUnit = obj.Units.OfType().FirstOrDefault(u => u.UnitType == unitType); + if (siUnit != null && siUnit.Prefix.HasValue) + return siUnit.Power; + var conversionUnit = + obj.Units.OfType().FirstOrDefault(u => u.UnitType == unitType); + if (conversionUnit == null) return 1.0; + var measureUnit = conversionUnit.ConversionFactor; + var uc = measureUnit.UnitComponent as IIfcSIUnit; + //some BIM tools such as StruCAD write the conversion value out as a Length Measure + if (uc == null) return 1.0; + + + var et = ((IExpressValueType)measureUnit.ValueComponent); + var cFactor = 1.0; + if (et.UnderlyingSystemType == typeof(double)) + cFactor = (double)et.Value; + else if (et.UnderlyingSystemType == typeof(int)) + cFactor = (int)et.Value; + else if (et.UnderlyingSystemType == typeof(long)) + cFactor = (long)et.Value; + + return uc.Power * cFactor; + } + + /// + /// Sets the Length Unit to be SIUnit and SIPrefix, returns false if the units are not SI + /// + /// + /// + /// + /// + public static bool SetSiLengthUnits(this IIfcUnitAssignment obj, IfcSIUnitName siUnitName, IfcSIPrefix? siPrefix) + { + var si = obj.Units.OfType().FirstOrDefault(u => u.UnitType == IfcUnitEnum.LENGTHUNIT); + if (si != null) + { + si.Prefix = siPrefix; + si.Name = siUnitName; + return true; + } + return false; + } + + public static void SetOrChangeSiUnit(this IIfcUnitAssignment obj, IfcUnitEnum unitType, IfcSIUnitName siUnitName, + IfcSIPrefix? siUnitPrefix) + { + var model = obj.Model; + var si = obj.Units.OfType().FirstOrDefault(u => u.UnitType == unitType); + if (si != null) + { + si.Prefix = siUnitPrefix; + si.Name = siUnitName; + } + else + { + var factory = new EntityCreator(model); + obj.Units.Add(factory.SIUnit(s => + { + s.UnitType = unitType; + s.Name = siUnitName; + s.Prefix = siUnitPrefix; + })); + } + } + + /// + /// Gets the unit for a + /// + /// + /// + /// + public static IIfcNamedUnit GetUnitFor(this IIfcUnitAssignment obj, IIfcPropertySingleValue property) + { + + if (property.Unit != null) + return (IIfcNamedUnit)property.Unit; + + // nominal value can be of types with subtypes: + // IfcMeasureValue, IfcSimpleValue, IfcDerivedMeasureValue + + IfcUnitEnum? requiredUnit = property.NominalValue switch + { + Ifc4.MeasureResource.IfcVolumeMeasure => (IfcUnitEnum?)IfcUnitEnum.VOLUMEUNIT, + Ifc4.MeasureResource.IfcAreaMeasure => (IfcUnitEnum?)IfcUnitEnum.AREAUNIT, + Ifc4.MeasureResource.IfcLengthMeasure => (IfcUnitEnum?)IfcUnitEnum.LENGTHUNIT, + Ifc4.MeasureResource.IfcPositiveLengthMeasure => (IfcUnitEnum?)IfcUnitEnum.LENGTHUNIT, + Ifc4.MeasureResource.IfcNonNegativeLengthMeasure => (IfcUnitEnum?)IfcUnitEnum.LENGTHUNIT, + Ifc4.MeasureResource.IfcAmountOfSubstanceMeasure => (IfcUnitEnum?)IfcUnitEnum.AMOUNTOFSUBSTANCEUNIT, + Ifc4.MeasureResource.IfcElectricCurrentMeasure => (IfcUnitEnum?)IfcUnitEnum.ELECTRICCURRENTUNIT, + Ifc4.MeasureResource.IfcLuminousIntensityMeasure => (IfcUnitEnum?)IfcUnitEnum.LUMINOUSINTENSITYUNIT, + Ifc4.MeasureResource.IfcMassMeasure => (IfcUnitEnum?)IfcUnitEnum.MASSUNIT, + Ifc4.MeasureResource.IfcPlaneAngleMeasure => (IfcUnitEnum?)IfcUnitEnum.PLANEANGLEUNIT, + Ifc4.MeasureResource.IfcPositivePlaneAngleMeasure => (IfcUnitEnum?)IfcUnitEnum.PLANEANGLEUNIT, + Ifc4.MeasureResource.IfcThermodynamicTemperatureMeasure => (IfcUnitEnum?)IfcUnitEnum.THERMODYNAMICTEMPERATUREUNIT, + Ifc4.MeasureResource.IfcSolidAngleMeasure => (IfcUnitEnum?)IfcUnitEnum.SOLIDANGLEUNIT, + Ifc4.MeasureResource.IfcTimeMeasure => (IfcUnitEnum?)IfcUnitEnum.TIMEUNIT, + + Ifc4.MeasureResource.IfcContextDependentMeasure => null,// todo: not sure what to do here + Ifc4.MeasureResource.IfcCountMeasure => null,// todo: not sure what to do here + Ifc4.MeasureResource.IfcDescriptiveMeasure => null,// todo: not sure what to do here + Ifc4.MeasureResource.IfcNormalisedRatioMeasure => null,// todo: not sure what to do here + Ifc4.MeasureResource.IfcNumericMeasure => null,// todo: not sure what to do here. + Ifc4.MeasureResource.IfcParameterValue => null,// todo: not sure what to do here. + Ifc4.MeasureResource.IfcPositiveRatioMeasure => null,// todo: not sure what to do here. + Ifc4.MeasureResource.IfcRatioMeasure => null,// todo: not sure what to do here. + Ifc4.MeasureResource.IfcComplexNumber => null,// todo: not sure what to do here. + // types from IfcSimpleValue + Ifc4.MeasureResource.IfcSimpleValue => null, + _ => null, + }; + // more measures types to be taken from http://www.buildingsmart-tech.org/ifc/IFC2x3/TC1/html/ifcmeasureresource/lexical/ifcderivedmeasurevalue.htm + + if (requiredUnit == null) + return null; + + IIfcNamedUnit nu = obj.Units.OfType().FirstOrDefault(u => u.UnitType == (IfcUnitEnum)requiredUnit) ?? + (IIfcNamedUnit)obj.Units.OfType().FirstOrDefault(u => u.UnitType == (IfcUnitEnum)requiredUnit); + return nu; + } + + /// + /// Gets the unit for a + /// + /// + /// + /// + public static IIfcNamedUnit GetUnitFor(this IIfcUnitAssignment obj, IIfcPhysicalSimpleQuantity quantity) + { + if (quantity.Unit != null) + return quantity.Unit; + + //IfcUnitEnum? requiredUnit = null; + + // list of possible types taken from: + // http://www.buildingsmart-tech.org/ifc/IFC2x3/TC1/html/ifcquantityresource/lexical/ifcphysicalsimplequantity.htm + // + IfcUnitEnum? requiredUnit = quantity switch + { + Ifc2x3.QuantityResource.IfcQuantityLength => IfcUnitEnum.LENGTHUNIT, + Ifc2x3.QuantityResource.IfcQuantityArea => IfcUnitEnum.AREAUNIT, + Ifc2x3.QuantityResource.IfcQuantityVolume => IfcUnitEnum.VOLUMEUNIT, + Ifc2x3.QuantityResource.IfcQuantityCount => null, + Ifc2x3.QuantityResource.IfcQuantityWeight => IfcUnitEnum.MASSUNIT, + Ifc2x3.QuantityResource.IfcQuantityTime => IfcUnitEnum.TIMEUNIT, + + Ifc4.QuantityResource.IfcQuantityLength => IfcUnitEnum.LENGTHUNIT, + Ifc4.QuantityResource.IfcQuantityArea => IfcUnitEnum.AREAUNIT, + Ifc4.QuantityResource.IfcQuantityVolume => IfcUnitEnum.VOLUMEUNIT, + Ifc4.QuantityResource.IfcQuantityCount => null, + Ifc4.QuantityResource.IfcQuantityWeight => IfcUnitEnum.MASSUNIT, + Ifc4.QuantityResource.IfcQuantityTime => IfcUnitEnum.TIMEUNIT, + + Ifc4x3.QuantityResource.IfcQuantityLength => IfcUnitEnum.LENGTHUNIT, + Ifc4x3.QuantityResource.IfcQuantityArea => IfcUnitEnum.AREAUNIT, + Ifc4x3.QuantityResource.IfcQuantityVolume => IfcUnitEnum.VOLUMEUNIT, + Ifc4x3.QuantityResource.IfcQuantityCount => null, + Ifc4x3.QuantityResource.IfcQuantityNumber => null, + Ifc4x3.QuantityResource.IfcQuantityWeight => IfcUnitEnum.MASSUNIT, + Ifc4x3.QuantityResource.IfcQuantityTime => IfcUnitEnum.TIMEUNIT, + _ => null, + }; + + if (requiredUnit == null) + return null; + + IIfcNamedUnit nu = obj.Units.OfType().FirstOrDefault(u => u.UnitType == (IfcUnitEnum)requiredUnit) ?? + (IIfcNamedUnit)obj.Units.OfType().FirstOrDefault(u => u.UnitType == (IfcUnitEnum)requiredUnit); + return nu; + } + + /// + /// Gets the unit for an + /// + /// + /// + /// + public static IIfcNamedUnit GetUnitFor(this IIfcUnitAssignment obj, IfcUnitEnum unitType) + { + return obj.Units.OfType().FirstOrDefault(u => u.UnitType == unitType) ?? + (IIfcNamedUnit)obj.Units.OfType().FirstOrDefault(u => u.UnitType == unitType); + } + + public static void SetOrChangeConversionUnit(this IIfcUnitAssignment obj, IfcUnitEnum unitType, ConversionBasedUnit unit) + { + + var si = obj.Units.OfType().FirstOrDefault(u => u.UnitType == unitType); + if (si != null) + { + obj.Units.Remove(si); + try + { + obj.Model.Delete(si); + } + catch (Exception) + { + // ignored + } + } + obj.Units.Add(GetNewConversionUnit(obj.Model, unitType, unit)); + } + + private static IIfcConversionBasedUnit GetNewConversionUnit(IModel model, IfcUnitEnum unitType, ConversionBasedUnit unitEnum) + { + var factory = new EntityCreator(model); + var unit = factory.ConversionBasedUnit(); + unit.UnitType = unitType; + + switch (unitEnum) + { + case ConversionBasedUnit.Inch: + SetConversionUnitsParameters(model, unit, "inch", 25.4, IfcUnitEnum.LENGTHUNIT, IfcSIUnitName.METRE, + IfcSIPrefix.MILLI, GetLengthDimension(factory)); + break; + case ConversionBasedUnit.Foot: + SetConversionUnitsParameters(model, unit, "foot", 304.8, IfcUnitEnum.LENGTHUNIT, IfcSIUnitName.METRE, + IfcSIPrefix.MILLI, GetLengthDimension(factory)); + break; + case ConversionBasedUnit.Yard: + SetConversionUnitsParameters(model, unit, "yard", 914, IfcUnitEnum.LENGTHUNIT, IfcSIUnitName.METRE, + IfcSIPrefix.MILLI, GetLengthDimension(factory)); + break; + case ConversionBasedUnit.Mile: + SetConversionUnitsParameters(model, unit, "mile", 1609, IfcUnitEnum.LENGTHUNIT, IfcSIUnitName.METRE, + null, GetLengthDimension(factory)); + break; + case ConversionBasedUnit.Acre: + SetConversionUnitsParameters(model, unit, "acre", 4046.86, IfcUnitEnum.AREAUNIT, + IfcSIUnitName.SQUARE_METRE, null, GetAreaDimension(factory)); + break; + case ConversionBasedUnit.Litre: + SetConversionUnitsParameters(model, unit, "litre", 0.001, IfcUnitEnum.VOLUMEUNIT, + IfcSIUnitName.CUBIC_METRE, null, GetVolumeDimension(factory)); + break; + case ConversionBasedUnit.PintUk: + SetConversionUnitsParameters(model, unit, "pint UK", 0.000568, IfcUnitEnum.VOLUMEUNIT, + IfcSIUnitName.CUBIC_METRE, null, GetVolumeDimension(factory)); + break; + case ConversionBasedUnit.PintUs: + SetConversionUnitsParameters(model, unit, "pint US", 0.000473, IfcUnitEnum.VOLUMEUNIT, + IfcSIUnitName.CUBIC_METRE, null, GetVolumeDimension(factory)); + break; + case ConversionBasedUnit.GallonUk: + SetConversionUnitsParameters(model, unit, "gallon UK", 0.004546, IfcUnitEnum.VOLUMEUNIT, + IfcSIUnitName.CUBIC_METRE, null, GetVolumeDimension(factory)); + break; + case ConversionBasedUnit.GallonUs: + SetConversionUnitsParameters(model, unit, "gallon US", 0.003785, IfcUnitEnum.VOLUMEUNIT, + IfcSIUnitName.CUBIC_METRE, null, GetVolumeDimension(factory)); + break; + case ConversionBasedUnit.Ounce: + SetConversionUnitsParameters(model, unit, "ounce", 28.35, IfcUnitEnum.MASSUNIT, IfcSIUnitName.GRAM, + null, GetMassDimension(factory)); + break; + case ConversionBasedUnit.Pound: + SetConversionUnitsParameters(model, unit, "pound", 0.454, IfcUnitEnum.MASSUNIT, IfcSIUnitName.GRAM, + IfcSIPrefix.KILO, GetMassDimension(factory)); + break; + case ConversionBasedUnit.SquareFoot: + SetConversionUnitsParameters(model, unit, "square foot", 92903.04, IfcUnitEnum.AREAUNIT, IfcSIUnitName.METRE, + IfcSIPrefix.MILLI, GetAreaDimension(factory)); + break; + case ConversionBasedUnit.CubicFoot: + SetConversionUnitsParameters(model, unit, "cubic foot", 28316846.6, IfcUnitEnum.VOLUMEUNIT, IfcSIUnitName.METRE, + IfcSIPrefix.MILLI, GetVolumeDimension(factory)); + break; + } + + return unit; + } + private static void SetConversionUnitsParameters(IModel model, IIfcConversionBasedUnit unit, Ifc4.MeasureResource.IfcLabel name, + Ifc4.MeasureResource.IfcRatioMeasure ratio, IfcUnitEnum unitType, IfcSIUnitName siUnitName, + IfcSIPrefix? siUnitPrefix, IIfcDimensionalExponents dimensions) + { + var factory = new EntityCreator(model); + unit.Name = name; + unit.ConversionFactor = factory.MeasureWithUnit(); + unit.ConversionFactor.ValueComponent = ratio; + unit.ConversionFactor.UnitComponent = factory.SIUnit(s => + { + s.UnitType = unitType; + s.Name = siUnitName; + s.Prefix = siUnitPrefix; + }); + unit.Dimensions = dimensions; + } + private static IIfcDimensionalExponents GetLengthDimension(EntityCreator factory) + { + var dimension = factory.DimensionalExponents(); + dimension.AmountOfSubstanceExponent = 0; + dimension.ElectricCurrentExponent = 0; + dimension.LengthExponent = 1; + dimension.LuminousIntensityExponent = 0; + dimension.MassExponent = 0; + dimension.ThermodynamicTemperatureExponent = 0; + dimension.TimeExponent = 0; + + return dimension; + } + private static IIfcDimensionalExponents GetVolumeDimension(EntityCreator factory) + { + var dimension = factory.DimensionalExponents(); + dimension.AmountOfSubstanceExponent = 0; + dimension.ElectricCurrentExponent = 0; + dimension.LengthExponent = 3; + dimension.LuminousIntensityExponent = 0; + dimension.MassExponent = 0; + dimension.ThermodynamicTemperatureExponent = 0; + dimension.TimeExponent = 0; + + return dimension; + } + private static IIfcDimensionalExponents GetAreaDimension(EntityCreator factory) + { + var dimension = factory.DimensionalExponents(); + dimension.AmountOfSubstanceExponent = 0; + dimension.ElectricCurrentExponent = 0; + dimension.LengthExponent = 2; + dimension.LuminousIntensityExponent = 0; + dimension.MassExponent = 0; + dimension.ThermodynamicTemperatureExponent = 0; + dimension.TimeExponent = 0; + + return dimension; + } + private static IIfcDimensionalExponents GetMassDimension(EntityCreator factory) + { + var dimension = factory.DimensionalExponents(); + dimension.AmountOfSubstanceExponent = 0; + dimension.ElectricCurrentExponent = 0; + dimension.LengthExponent = 0; + dimension.LuminousIntensityExponent = 0; + dimension.MassExponent = 1; + dimension.ThermodynamicTemperatureExponent = 0; + dimension.TimeExponent = 0; + + return dimension; + } + } +} diff --git a/Xbim.Ifc/Extensions/IIfcUnitExtensions.cs b/Xbim.Ifc/Extensions/IIfcUnitExtensions.cs new file mode 100644 index 000000000..07bac80b7 --- /dev/null +++ b/Xbim.Ifc/Extensions/IIfcUnitExtensions.cs @@ -0,0 +1,76 @@ +using Xbim.Ifc4.Interfaces; +using CrossSchema = Xbim.Ifc4; + +namespace Xbim.Ifc +{ + public static class IIfcUnitExtensions + { + public static string AsString(this IIfcMeasureWithUnit obj) + { + string value = string.Format("{0,0:N2}", obj.ValueComponent.Value); + var ifcUnit = obj.UnitComponent; + string unit = ifcUnit.Symbol(); + if (!string.IsNullOrEmpty(unit)) + { + value += unit; + } + return value; + } + + /// + /// Get the full name of the IfcUnit + /// + /// string holding full name + public static string Name(this IIfcUnit ifcUnit) + { + // Delegate to Ifc4/Cross schema implementation + return CrossSchema.MeasureResource.UnitExtensions.Name(ifcUnit); + } + /// + /// Get the symbol of the IfcUnit + /// + /// string holding symbol + public static string Symbol(this IIfcUnit ifcUnit) + { + // Delegate to Ifc4/Cross schema implementation + return CrossSchema.MeasureResource.UnitExtensions.Symbol(ifcUnit); + } + + /// + /// Gets the currency symbol (e.g. $, £, €, kr etc) for the + /// + /// + /// + public static string Symbol(this IIfcMonetaryUnit obj) + { + // Delegate to Ifc4/Cross schema implementation + return CrossSchema.MeasureResource.UnitExtensions.Symbol(obj); + } + + /// + /// Gets the currency name in English for the + /// + /// + /// + public static string FullEnglishName(this IIfcMonetaryUnit obj) + { + // Delegate to Ifc4/Cross schema implementation + return CrossSchema.MeasureResource.UnitExtensions.FullEnglishName(obj); + } + + /// + /// Gets the currency name in local culture for the + /// + /// Note: this is imprecise and inherently ambiguous due to different cultures installed, but for example + /// Polish PLN might be known natively as 'złoty polski' rather than 'Polish Zloty' + /// + /// + public static string FullNativeName(this IIfcMonetaryUnit obj) + { + // Delegate to Ifc4/Cross schema implementation + return CrossSchema.MeasureResource.UnitExtensions.FullNativeName(obj); + } + } + + +} diff --git a/Xbim.Ifc/IfcStore.cs b/Xbim.Ifc/IfcStore.cs index 03481cdd7..285e9b8e6 100644 --- a/Xbim.Ifc/IfcStore.cs +++ b/Xbim.Ifc/IfcStore.cs @@ -97,7 +97,7 @@ protected IfcStore() protected IfcStore(string filepath, XbimSchemaVersion ifcVersion, XbimEditorCredentials editorDetails) : this() { var model = ModelProvider.Create(ifcVersion, filepath); - AssignModel(model, editorDetails, ifcVersion); + AssignModel(model, editorDetails, ifcVersion, filepath); } /// @@ -150,16 +150,16 @@ public static IModelProviderFactory ModelProviderFactory set; } - private void AssignModel(IModel model, XbimEditorCredentials editorDetails, XbimSchemaVersion schema) + private void AssignModel(IModel model, XbimEditorCredentials editorDetails, XbimSchemaVersion schema, string modelPath = null) { Model = model; Model.EntityNew += Model_EntityNew; Model.EntityDeleted += Model_EntityDeleted; Model.EntityModified += Model_EntityModified; - FileName = Model.Header.FileName.Name; + FileName = modelPath ?? Model.Header.FileName.Name; SetupEditing(editorDetails); - LoadReferenceModels(); + LoadReferenceModels(modelPath); IO.Memory.MemoryModel.CalculateModelFactors(model); } @@ -343,8 +343,16 @@ public static IfcStore Open(string path, XbimEditorCredentials editorDetails = n } var model = newStore.ModelProvider.Open(path, ifcVersion, ifcDatabaseSizeThreshHold, progDelegate, accessMode, codePageOverride); - - newStore.AssignModel(model, editorDetails, ifcVersion); + if (string.IsNullOrEmpty(model.Header.FileName.Name)) + { + // if we are looking at a memory model loaded from a file it might be safe to fix the file name in the + // header with the actual file loaded + // historically setting this Filename to local IFC Path isd what enabled + // Federations to find their relative child models. + FileInfo f = new FileInfo(path); + model.Header.FileName.Name = f.FullName; + } + newStore.AssignModel(model, editorDetails, ifcVersion, path); return newStore; } @@ -516,11 +524,24 @@ private void IfcRootModified(IPersistEntity entity, int property) if (root.OwnerHistory != _ownerHistoryModifyObject) { + var originalHistory = root.OwnerHistory; + MergeOwnerHistory(originalHistory); + root.OwnerHistory = OwnerHistoryModifyObject; - OwnerHistoryModifyObject.LastModifiedDate = DateTime.Now; + OwnerHistoryModifyObject.LastModifiedDate = DateTime.UtcNow; } } + private void MergeOwnerHistory(IIfcOwnerHistory originalHistory) + { + // This is naive. We have a store-wide OwnerHistory for modifications when really we + // should clone one from the original history, and apply to those items we edit. + // OwnerHistory is not really fit for purpose + OwnerHistoryModifyObject.CreationDate = originalHistory.CreationDate; + OwnerHistoryModifyObject.OwningApplication = originalHistory.OwningApplication; + OwnerHistoryModifyObject.OwningUser = originalHistory.OwningUser; + } + private void IfcRootInit(IPersistEntity entity) { if (!ManageOwnerHistory) @@ -530,7 +551,9 @@ private void IfcRootInit(IPersistEntity entity) { root.OwnerHistory = OwnerHistoryAddObject; root.GlobalId = Guid.NewGuid().ToPart21(); - OwnerHistoryAddObject.LastModifiedDate = DateTime.Now; + OwnerHistoryAddObject.LastModifiedDate = DateTime.UtcNow; + if(OwnerHistoryAddObject.CreationDate.Value == null) + OwnerHistoryAddObject.CreationDate = DateTime.UtcNow; } } @@ -548,51 +571,39 @@ public IIfcPersonAndOrganization DefaultOwningUser if (EditorDetails == null) return null; - if (SchemaVersion == XbimSchemaVersion.Ifc4 || SchemaVersion == XbimSchemaVersion.Ifc4x1) - { - var person = Instances.New(p => - { - p.GivenName = EditorDetails.EditorsGivenName; - p.FamilyName = EditorDetails.EditorsFamilyName; - }); - var organization = Instances.OfType().FirstOrDefault(o => o.Name == EditorDetails.EditorsOrganisationName) - ?? Instances.New(o => o.Name = EditorDetails.EditorsOrganisationName); - _defaultOwningUser = Instances.New(po => - { - po.TheOrganization = organization; - po.ThePerson = person; - }); - } - else if (SchemaVersion == XbimSchemaVersion.Ifc4x3) - { - var person = Instances.New(p => + var factory = new EntityCreator(this); + + var person = Instances.OfType() + .FirstOrDefault(p => // Look up by identifier and then Given/Family name + EditorDetails.EditorsIdentifier != null && p.Identification == EditorDetails.EditorsIdentifier || + (p.GivenName == EditorDetails.EditorsGivenName && p.FamilyName == EditorDetails.EditorsFamilyName)) + ?? factory.Person(p => { + p.Identification = EditorDetails.EditorsIdentifier; p.GivenName = EditorDetails.EditorsGivenName; p.FamilyName = EditorDetails.EditorsFamilyName; }); - var organization = Instances.OfType().FirstOrDefault(o => o.Name == EditorDetails.EditorsOrganisationName) - ?? Instances.New(o => o.Name = EditorDetails.EditorsOrganisationName); - _defaultOwningUser = Instances.New(po => - { - po.TheOrganization = organization; - po.ThePerson = person; - }); - } - else - { - var person = Instances.New(p => + + var organization = Instances.OfType() + .FirstOrDefault(o => // Look up by identifier and then Organisation name + EditorDetails.EditorsOrganisationIdentifier != null && o.Identification == EditorDetails.EditorsOrganisationIdentifier || + (o.Name == EditorDetails.EditorsOrganisationName)) + ?? factory.Organization(o => { - p.GivenName = EditorDetails.EditorsGivenName; - p.FamilyName = EditorDetails.EditorsFamilyName; + o.Name = EditorDetails.EditorsOrganisationName; + o.Identification = EditorDetails.EditorsOrganisationIdentifier; }); - var organization = Instances.OfType().FirstOrDefault(o => o.Name == EditorDetails.EditorsOrganisationName) - ?? Instances.New(o => o.Name = EditorDetails.EditorsOrganisationName); - _defaultOwningUser = Instances.New(po => + + _defaultOwningUser = + Instances.OfType() + .FirstOrDefault(po => po.ThePerson == person && po.TheOrganization == organization) + ?? factory.PersonAndOrganization(po => { po.TheOrganization = organization; po.ThePerson = person; }); - } + + return _defaultOwningUser; } } @@ -611,41 +622,38 @@ public IIfcApplication DefaultOwningApplication if (EditorDetails == null) return null; - if (SchemaVersion == XbimSchemaVersion.Ifc4 || SchemaVersion == XbimSchemaVersion.Ifc4x1) - return _defaultOwningApplication ?? - (_defaultOwningApplication = - Instances.New(a => - { - a.ApplicationDeveloper = Instances.OfType().FirstOrDefault(o => o.Name == EditorDetails.ApplicationDevelopersName) - ?? Instances.New(o => o.Name = EditorDetails.ApplicationDevelopersName); - a.ApplicationFullName = EditorDetails.ApplicationFullName; - a.ApplicationIdentifier = EditorDetails.ApplicationIdentifier; - a.Version = EditorDetails.ApplicationVersion; - } - )); - else if (SchemaVersion == XbimSchemaVersion.Ifc4x3) - return _defaultOwningApplication ?? - (_defaultOwningApplication = - Instances.New(a => - { - a.ApplicationDeveloper = Instances.OfType().FirstOrDefault(o => o.Name == EditorDetails.EditorsOrganisationName) - ?? Instances.New(o => o.Name = EditorDetails.EditorsOrganisationName); - a.ApplicationFullName = EditorDetails.ApplicationFullName; - a.ApplicationIdentifier = EditorDetails.ApplicationIdentifier; - a.Version = EditorDetails.ApplicationVersion; - } - )); - return _defaultOwningApplication ?? - (_defaultOwningApplication = - Instances.New(a => + var existingApplication = Instances.OfType() + .Where(a => a.ApplicationFullName == EditorDetails.ApplicationFullName) + .Where(a => a.ApplicationIdentifier == EditorDetails.ApplicationIdentifier) + .Where(a => a.Version == EditorDetails.ApplicationVersion) + .FirstOrDefault(); + if(existingApplication != null) + { + // use existing to avoid duplicate applications + _defaultOwningApplication = existingApplication; + } + else + { + // Create new application + var factory = new EntityCreator(this); + _defaultOwningApplication = factory.Application(a => + { + a.ApplicationDeveloper = Instances.OfType().FirstOrDefault(o => o.Name == EditorDetails.ApplicationDevelopersName) + ?? factory.Organization(o => { - a.ApplicationDeveloper = Instances.OfType().FirstOrDefault(o => o.Name == EditorDetails.ApplicationDevelopersName) - ?? Instances.New(o => o.Name = EditorDetails.ApplicationDevelopersName); - a.ApplicationFullName = EditorDetails.ApplicationFullName; - a.ApplicationIdentifier = EditorDetails.ApplicationIdentifier; - a.Version = EditorDetails.ApplicationVersion; - } - )); + o.Name = EditorDetails.ApplicationDevelopersName; + o.Roles.Add(factory.ActorRole(r => + { + r.Role = IfcRoleEnum.USERDEFINED; + r.UserDefinedRole = "Software Provider"; + })); + }); + a.ApplicationFullName = EditorDetails.ApplicationFullName; + a.ApplicationIdentifier = EditorDetails.ApplicationIdentifier; + a.Version = EditorDetails.ApplicationVersion; + }); + } + return _defaultOwningApplication; } } @@ -655,30 +663,16 @@ public IIfcOwnerHistory OwnerHistoryAddObject { if (_ownerHistoryAddObject != null) return _ownerHistoryAddObject; - if (SchemaVersion == XbimSchemaVersion.Ifc4 || SchemaVersion == XbimSchemaVersion.Ifc4x1) + var factory = new EntityCreator(this); + _ownerHistoryAddObject = factory.OwnerHistory(owner => { - var histAdd = Instances.New(); - histAdd.OwningUser = (Ifc4.ActorResource.IfcPersonAndOrganization)DefaultOwningUser; - histAdd.OwningApplication = (Ifc4.UtilityResource.IfcApplication)DefaultOwningApplication; - histAdd.ChangeAction = IfcChangeActionEnum.ADDED; - _ownerHistoryAddObject = histAdd; - } - else if (SchemaVersion == XbimSchemaVersion.Ifc4x3) - { - var histAdd = Instances.New(); - histAdd.OwningUser = (Ifc4x3.ActorResource.IfcPersonAndOrganization)DefaultOwningUser; - histAdd.OwningApplication = (Ifc4x3.UtilityResource.IfcApplication)DefaultOwningApplication; - histAdd.ChangeAction = Ifc4x3.UtilityResource.IfcChangeActionEnum.ADDED; - _ownerHistoryAddObject = histAdd; - } - else - { - var histAdd = Instances.New(); - histAdd.OwningUser = (Ifc2x3.ActorResource.IfcPersonAndOrganization)DefaultOwningUser; - histAdd.OwningApplication = (Ifc2x3.UtilityResource.IfcApplication)DefaultOwningApplication; - histAdd.ChangeAction = Ifc2x3.UtilityResource.IfcChangeActionEnum.ADDED; - _ownerHistoryAddObject = histAdd; - } + owner.OwningUser = DefaultOwningUser; + owner.OwningApplication = DefaultOwningApplication; + owner.ChangeAction = IfcChangeActionEnum.ADDED; + owner.LastModifyingUser = DefaultOwningUser; + owner.LastModifyingApplication = DefaultOwningApplication; + + }); return _ownerHistoryAddObject; } } @@ -689,30 +683,18 @@ internal IIfcOwnerHistory OwnerHistoryModifyObject { if (_ownerHistoryModifyObject != null) return _ownerHistoryModifyObject; - if (SchemaVersion == XbimSchemaVersion.Ifc4 || SchemaVersion == XbimSchemaVersion.Ifc4x1) - { - var histmod = Instances.New(); - histmod.OwningUser = (Ifc4.ActorResource.IfcPersonAndOrganization)DefaultOwningUser; - histmod.OwningApplication = (Ifc4.UtilityResource.IfcApplication)DefaultOwningApplication; - histmod.ChangeAction = IfcChangeActionEnum.MODIFIED; - _ownerHistoryModifyObject = histmod; - } - else if (SchemaVersion == XbimSchemaVersion.Ifc4x3) - { - var histmod = Instances.New(); - histmod.OwningUser = (Ifc4x3.ActorResource.IfcPersonAndOrganization)DefaultOwningUser; - histmod.OwningApplication = (Ifc4x3.UtilityResource.IfcApplication)DefaultOwningApplication; - histmod.ChangeAction = Ifc4x3.UtilityResource.IfcChangeActionEnum.MODIFIED; - _ownerHistoryModifyObject = histmod; - } - else + + var factory = new EntityCreator(this); + _ownerHistoryModifyObject = factory.OwnerHistory(owner => { - var histmod = Instances.New(); - histmod.OwningUser = (Ifc2x3.ActorResource.IfcPersonAndOrganization)DefaultOwningUser; - histmod.OwningApplication = (Ifc2x3.UtilityResource.IfcApplication)DefaultOwningApplication; - histmod.ChangeAction = Ifc2x3.UtilityResource.IfcChangeActionEnum.MODIFIED; - _ownerHistoryModifyObject = histmod; - } + owner.OwningUser = DefaultOwningUser; + owner.OwningApplication = DefaultOwningApplication; + + owner.ChangeAction = IfcChangeActionEnum.MODIFIED; + owner.LastModifyingUser = DefaultOwningUser; + owner.LastModifyingApplication = DefaultOwningApplication; + }); + return _ownerHistoryModifyObject; } } @@ -829,26 +811,22 @@ public XbimReferencedModel AddModelReference(string refModelPath, string organis XbimReferencedModel retVal; using (var txn = BeginTransaction()) { - if (SchemaVersion == XbimSchemaVersion.Ifc4 || SchemaVersion == XbimSchemaVersion.Ifc4x1) + var factory = new EntityCreator(this); + // TODO: should look up an existing matching role/organisatuon + var role = factory.ActorRole(r => { - var role = Instances.New(); - role.RoleString = organisationRole; - // the string is converted appropriately by the IfcActorRoleClass - var org = Instances.New(); - org.Name = organisationName; - org.Roles.Add(role); - retVal = AddModelReference(refModelPath, org); - } - else + r.Role = IfcRoleEnum.USERDEFINED; + r.UserDefinedRole = organisationRole; + }); + // the string is converted appropriately by the IfcActorRoleClass + + var org = factory.Organization(org => { - var role = Instances.New(); - role.RoleString = organisationRole; - // the string is converted appropriately by the IfcActorRoleClass - var org = Instances.New(); org.Name = organisationName; org.Roles.Add(role); - retVal = AddModelReference(refModelPath, org); - } + }); + retVal = AddModelReference(refModelPath, org); + txn.Commit(); } return retVal; @@ -860,18 +838,21 @@ public XbimReferencedModel AddModelReference(string refModelPath, string organis /// the file path of the xbim model to reference, this must be an xbim file /// the actor who supplied the model /// - private XbimReferencedModel AddModelReference(string refModelPath, Ifc2x3.ActorResource.IfcOrganization owner) + private XbimReferencedModel AddModelReference(string refModelPath, IIfcOrganization owner) { XbimReferencedModel retVal; + var factory = new EntityCreator(this); if (CurrentTransaction == null) { using (var txn = BeginTransaction()) { - var docInfo = Instances.New(); - docInfo.DocumentId = new Ifc2x3.MeasureResource.IfcIdentifier(_referencedModels.NextIdentifer()); - docInfo.Name = refModelPath; - docInfo.DocumentOwner = owner; - docInfo.IntendedUse = RefDocument; + var docInfo = factory.DocumentInformation(d => + { + d.Identification = new IfcIdentifier(_referencedModels.NextIdentifer()); + d.Name = refModelPath; + d.DocumentOwner = owner; + d.IntendedUse = RefDocument; + }); retVal = new XbimReferencedModel(docInfo); AddModelReference(retVal); txn.Commit(); @@ -879,84 +860,48 @@ private XbimReferencedModel AddModelReference(string refModelPath, Ifc2x3.ActorR } else { - var docInfo = Instances.New(); - docInfo.DocumentId = new Ifc2x3.MeasureResource.IfcIdentifier(_referencedModels.NextIdentifer()); - docInfo.Name = refModelPath; - docInfo.DocumentOwner = owner; - docInfo.IntendedUse = RefDocument; - retVal = new XbimReferencedModel(docInfo); - AddModelReference(retVal); - } - return retVal; - } - - /// - /// adds a model as a reference model can be called inside a transaction - /// - /// the file path of the xbim model to reference, this must be an xbim file - /// the actor who supplied the model - /// - private XbimReferencedModel AddModelReference(string refModelPath, Ifc4.ActorResource.IfcOrganization owner) - { - XbimReferencedModel retVal; - if (CurrentTransaction == null) - { - using (var txn = BeginTransaction()) + var docInfo = factory.DocumentInformation(d => { - var docInfo = Instances.New(); - docInfo.Identification = new IfcIdentifier(_referencedModels.NextIdentifer()); - docInfo.Name = refModelPath; - docInfo.DocumentOwner = owner; - docInfo.IntendedUse = RefDocument; - retVal = new XbimReferencedModel(docInfo); - AddModelReference(retVal); - txn.Commit(); - } - } - else - { - var docInfo = Instances.New(); - docInfo.Identification = new IfcIdentifier(_referencedModels.NextIdentifer()); - docInfo.Name = refModelPath; - docInfo.DocumentOwner = owner; - docInfo.IntendedUse = RefDocument; + d.Identification = new IfcIdentifier(_referencedModels.NextIdentifer()); + d.Name = refModelPath; + d.DocumentOwner = owner; + d.IntendedUse = RefDocument; + }); retVal = new XbimReferencedModel(docInfo); AddModelReference(retVal); } return retVal; } + + /// /// All reference models are opened in a readonly mode. /// Their children reference models is invoked iteratively. /// /// Loading referenced models defaults to avoiding Exception on file not found; in this way the federated model can still be opened and the error rectified. /// + /// Path to the root model /// Set to true to enable your own error handling - private void LoadReferenceModels(bool throwErrorOnReferenceModelExceptions = false) + private void LoadReferenceModels(string rootModelPath, bool throwErrorOnReferenceModelExceptions = false) { var docInfos = Instances.OfType().Where(d => d.IntendedUse == RefDocument); foreach (var docInfo in docInfos) { - if (throwErrorOnReferenceModelExceptions) + try { - // throw exception on referenceModel Creation - AddModelReference(new XbimReferencedModel(docInfo)); + AddModelReference(new XbimReferencedModel(docInfo, rootModelPath)); } - else + catch (Exception ex) { // do not throw exception on referenceModel Creation - try - { - AddModelReference(new XbimReferencedModel(docInfo)); - } - catch (Exception ex) - { - Logger?.LogError( - string.Format("Ignored exception on modelreference load for #{0}.", docInfo.EntityLabel), - ex); - } + if (throwErrorOnReferenceModelExceptions) + throw; + Logger?.LogError( + string.Format("Ignored exception on modelreference load for #{0}.", docInfo.EntityLabel), + ex); } + } } diff --git a/Xbim.Ifc/XbimEditorCredentials.cs b/Xbim.Ifc/XbimEditorCredentials.cs index 05a74d959..53ac6661d 100644 --- a/Xbim.Ifc/XbimEditorCredentials.cs +++ b/Xbim.Ifc/XbimEditorCredentials.cs @@ -1,13 +1,49 @@ -namespace Xbim.Ifc +using Xbim.Ifc4.Interfaces; + +namespace Xbim.Ifc { + /// + /// Defines baseline details of any user and application used to make changes to a model. + /// + /// Used to build the linked to an additions or modifications + /// made on a model public class XbimEditorCredentials { + /// + /// The unique Identifier of the end user - e.g. email address or UUID + /// + public string EditorsIdentifier; + /// + /// The family name of the end user + /// public string EditorsFamilyName; + /// + /// The given name of the end user + /// public string EditorsGivenName; + /// + /// The name of the organisation the editor belongs to + /// public string EditorsOrganisationName; + /// + /// Identification of the organization - e.g. an Org code or UUID + /// + public string EditorsOrganisationIdentifier; + /// + /// The full name of the application as specified by the application developer. + /// public string ApplicationFullName; + /// + /// The version number of this software as specified by the developer of the application. + /// public string ApplicationVersion; + /// + /// A short identifying name for the application + /// public string ApplicationIdentifier; + /// + /// The name of the organisation responsible for the IFC authoring tool + /// public string ApplicationDevelopersName; } } diff --git a/Xbim.Ifc/XbimReferencedModel.cs b/Xbim.Ifc/XbimReferencedModel.cs index cd737fd92..dd0b5ad52 100644 --- a/Xbim.Ifc/XbimReferencedModel.cs +++ b/Xbim.Ifc/XbimReferencedModel.cs @@ -29,7 +29,12 @@ public ITransaction DocumentInfoTransaction } } - public XbimReferencedModel(IIfcDocumentInformation documentInformation) + public XbimReferencedModel(IIfcDocumentInformation documentInformation) : this(documentInformation, "") + { + + } + + public XbimReferencedModel(IIfcDocumentInformation documentInformation, string rootModelPath) { DocumentInformation = documentInformation; @@ -45,6 +50,11 @@ public XbimReferencedModel(IIfcDocumentInformation documentInformation) var fi = new FileInfo(referencingStore.FileName); searchPaths.Add(fi.DirectoryName); } + if(!string.IsNullOrEmpty(rootModelPath)) + { + var fi = new FileInfo(rootModelPath); + searchPaths.Add(fi.DirectoryName); + } var headerFileName = documentInformation.Model?.Header?.FileName?.Name; if (Path.IsPathRooted(headerFileName)) { diff --git a/Xbim.Ifc2x3/Interfaces/IFC4/IfcStyledItem.cs b/Xbim.Ifc2x3/Interfaces/IFC4/IfcStyledItem.cs index f9417aa4c..47438584e 100644 --- a/Xbim.Ifc2x3/Interfaces/IFC4/IfcStyledItem.cs +++ b/Xbim.Ifc2x3/Interfaces/IFC4/IfcStyledItem.cs @@ -55,7 +55,12 @@ private static IIfcStyleAssignmentSelect StylesToIfc4 (IfcPresentationStyleAssig } //transformation function to convert/cast IFC4 data to appear as IFC2x3 if possible - private static IfcPresentationStyleAssignment StylesToIfc2X3 (IIfcStyleAssignmentSelect member){ + private IfcPresentationStyleAssignment StylesToIfc2X3 (IIfcStyleAssignmentSelect member){ + + if(member is IIfcPresentationStyleSelect ps && Model.CurrentTransaction != null) + { + return Model.Instances.New(pa => ((IIfcPresentationStyleAssignment)pa).Styles.Add(ps)); + } return member as IfcPresentationStyleAssignment; } diff --git a/Xbim.Ifc2x3/MeasureResource/IfcMonetaryUnitPartial.cs b/Xbim.Ifc2x3/MeasureResource/IfcMonetaryUnitPartial.cs index c9eff28d4..603035726 100644 --- a/Xbim.Ifc2x3/MeasureResource/IfcMonetaryUnitPartial.cs +++ b/Xbim.Ifc2x3/MeasureResource/IfcMonetaryUnitPartial.cs @@ -1,65 +1,50 @@ -using System.Globalization; -using System.Linq; +using Xbim.Ifc4.MeasureResource; namespace Xbim.Ifc2x3.MeasureResource { public partial class IfcMonetaryUnit { /// - /// Get Symbol string for money unit + /// Gets the Symbol string for money unit /// /// String holding symbol public string Symbol { get { - //string value = CultureInfo.GetCultures(CultureTypes.SpecificCultures) - // .Where(c => new RegionInfo(c.LCID).ISOCurrencySymbol == Currency.ToString()) - // .Select(c => new RegionInfo(c.LCID).CurrencySymbol) - // .FirstOrDefault(); - //return string.IsNullOrEmpty(value) ? Currency.ToString() : value; - return Currency.ToString(); + return this.Symbol(); } } /// - ///Get full English name of the currency + /// ets the name of the currency as its known internationally /// /// String as full name - public string FullEnglishName + public string FullEnglishName { get { - //string value = CultureInfo.GetCultures(CultureTypes.SpecificCultures) - // .Where(c => new RegionInfo(c.LCID).ISOCurrencySymbol == Currency.ToString()) - // .Select(c => new RegionInfo(c.LCID).CurrencyEnglishName) - // .FirstOrDefault(); - //return string.IsNullOrEmpty(value) ? Currency.ToString() : value; - return Currency.ToString(); + return this.FullEnglishName(); } } /// - ///Get full Native name of the currency + /// Gets the name of the currency as its known natively /// /// String holding full name - public string FullNativeName + public string FullNativeName { get { - //string value = CultureInfo.GetCultures(CultureTypes.SpecificCultures) - // .Where(c => new RegionInfo(c.LCID).ISOCurrencySymbol == Currency.ToString()) - // .Select(c => new RegionInfo(c.LCID).CurrencyNativeName) - // .FirstOrDefault(); - //return string.IsNullOrEmpty(value) ? Currency.ToString() : value; - return Currency.ToString(); + return this.FullNativeName(); } } + public string FullName { get { - return FullNativeName; + return FullEnglishName; } } diff --git a/Xbim.Ifc2x3/MeasureResource/IfcUnitExtensions.cs b/Xbim.Ifc2x3/MeasureResource/IfcUnitExtensions.cs index 9bbfb1166..519885c9a 100644 --- a/Xbim.Ifc2x3/MeasureResource/IfcUnitExtensions.cs +++ b/Xbim.Ifc2x3/MeasureResource/IfcUnitExtensions.cs @@ -9,12 +9,7 @@ public static class UnitExtensions /// string holding full name public static string Name(this IfcUnit ifcUnit) { - var unit = ifcUnit as IfcDerivedUnit; - if (unit != null) return unit.FullName; - var namedUnit = ifcUnit as IfcNamedUnit; - if (namedUnit != null) return namedUnit.FullName; - var monetaryUnit = ifcUnit as IfcMonetaryUnit; - return monetaryUnit != null ? monetaryUnit.FullEnglishName : string.Empty; + return Xbim.Ifc4.MeasureResource.UnitExtensions.Name(ifcUnit); } /// /// Get the symbol of the IfcUnit @@ -22,12 +17,7 @@ public static string Name(this IfcUnit ifcUnit) /// string holding symbol public static string Symbol(this IfcUnit ifcUnit) { - var unit = ifcUnit as IfcDerivedUnit; - if (unit != null) return unit.FullName; - var namedUnit = ifcUnit as IfcNamedUnit; - if (namedUnit != null) return namedUnit.Symbol; - var monetaryUnit = ifcUnit as IfcMonetaryUnit; - return monetaryUnit != null ? monetaryUnit.Symbol : string.Empty; + return Xbim.Ifc4.MeasureResource.UnitExtensions.Symbol(ifcUnit); } } diff --git a/Xbim.Ifc4/DateTimeResource/IfcDatePartial.cs b/Xbim.Ifc4/DateTimeResource/IfcDatePartial.cs index b0447a949..bec32678b 100644 --- a/Xbim.Ifc4/DateTimeResource/IfcDatePartial.cs +++ b/Xbim.Ifc4/DateTimeResource/IfcDatePartial.cs @@ -12,10 +12,9 @@ public DateTime ToDateTime() public static implicit operator DateTime(IfcDate obj) { - DateTime result; - DateTime.TryParse(obj._value, null, DateTimeStyles.RoundtripKind, out result); - return result; - + if (DateTime.TryParse(obj._value, null, DateTimeStyles.RoundtripKind, out DateTime result)) + return result; + return default; } public static implicit operator IfcDate(DateTime obj) diff --git a/Xbim.Ifc4/DateTimeResource/IfcDateTimePartial.cs b/Xbim.Ifc4/DateTimeResource/IfcDateTimePartial.cs index 76fab3988..e5721e708 100644 --- a/Xbim.Ifc4/DateTimeResource/IfcDateTimePartial.cs +++ b/Xbim.Ifc4/DateTimeResource/IfcDateTimePartial.cs @@ -12,10 +12,9 @@ public DateTime ToDateTime() public static implicit operator DateTime(IfcDateTime obj) { - DateTime result; - DateTime.TryParse(obj._value, null, DateTimeStyles.RoundtripKind, out result); - return result; - + if (DateTime.TryParse(obj._value, null, DateTimeStyles.RoundtripKind, out DateTime result)) + return result; + return default; } public static implicit operator IfcDateTime(DateTime obj) diff --git a/Xbim.Ifc4/DateTimeResource/IfcDurationPartial.cs b/Xbim.Ifc4/DateTimeResource/IfcDurationPartial.cs index 59a3f5eab..d7a98dc3b 100644 --- a/Xbim.Ifc4/DateTimeResource/IfcDurationPartial.cs +++ b/Xbim.Ifc4/DateTimeResource/IfcDurationPartial.cs @@ -1,10 +1,6 @@ using System; -using System.Collections.Generic; -using System.Globalization; -using System.Linq; -using System.Text; -using System.Text.RegularExpressions; using System.Xml; +using Xbim.Common.XbimExtensions; namespace Xbim.Ifc4.DateTimeResource { @@ -25,55 +21,7 @@ public static implicit operator IfcDuration(TimeSpan value) public static implicit operator TimeSpan(IfcDuration obj) { string value = obj; - if (string.IsNullOrWhiteSpace(value) || value[0] != 'P') - if (value[0] != '-' && value[1] != 'P') - return new TimeSpan(); - - var negative = value[0] == '-'; - var sign = negative ? -1 : 1; - - //https://www.w3.org/TR/xmlschema-2/#duration - //PnYnMnDTnHnMnS - - var daysTotal = 0; - var yReg = new Regex("(?[0-9]+)Y", RegexOptions.Compiled); - var yMatch = yReg.Match(value); - if (yMatch.Success) - daysTotal += (int)(int.Parse(yMatch.Groups["Y"].Value) * 365.25); - var mReg = new Regex("^[^T]+(?[0-9]+)M", RegexOptions.Compiled); - var mMatch = mReg.Match(value); - if (mMatch.Success) - daysTotal += (int)(int.Parse(mMatch.Groups["M"].Value) * 30.4166780729); - var dReg = new Regex("(?[0-9]+)D", RegexOptions.Compiled); - var dMatch = dReg.Match(value); - if (dMatch.Success) - daysTotal += int.Parse(dMatch.Groups["D"].Value); - - var hours = 0; - var hReg = new Regex("(?[0-9]+)H", RegexOptions.Compiled); - var hMatch = hReg.Match(value); - if (hMatch.Success) - hours = int.Parse(hMatch.Groups["H"].Value); - - var minutes = 0; - var miReg = new Regex("T[0-9]*H?(?[0-9]+)M", RegexOptions.Compiled); - var miMatch = miReg.Match(value); - if (miMatch.Success) - minutes = int.Parse(miMatch.Groups["M"].Value); - - var seconds = 0.0; - var sReg = new Regex("(?[0-9]+\\.?[0-9]*)S", RegexOptions.Compiled); - var sMatch = sReg.Match(value); - if (sMatch.Success) - seconds = float.Parse(sMatch.Groups["S"].Value, NumberStyles.Any, CultureInfo.InvariantCulture); - - return new TimeSpan( - sign * daysTotal, - sign * hours, - sign * minutes, - sign * (int)seconds, - sign * (int)((seconds - (int)seconds) * 1000)); - + return value.Iso8601DurationToTimeSpan(); } /// @@ -82,48 +30,7 @@ public static implicit operator TimeSpan(IfcDuration obj) /// private static string TimeSpanToString(TimeSpan span) { - StringBuilder sb = new StringBuilder(20); - var isNegative = span.Days < 0 || span.Hours < 0 || span.Minutes < 0 || span.Seconds < 0 || span.Milliseconds < 0; - - if (isNegative) - sb.Append('-'); - - sb.Append('P'); - - if (span.Days != 0) - { - sb.Append(Math.Abs(span.Days)); - sb.Append('D'); - } - - if (span.Hours != 0 || span.Minutes != 0 || span.Seconds != 0 || span.Milliseconds != 0) - { - sb.Append('T'); - if (span.Hours != 0) - { - sb.Append(Math.Abs(span.Hours)); - sb.Append('H'); - } - - if (span.Minutes != 0) - { - sb.Append(Math.Abs(span.Minutes)); - sb.Append('M'); - } - - if (span.Seconds != 0 || span.Milliseconds != 0) - { - var value = Math.Abs(span.Seconds) + Math.Abs(span.Milliseconds) / 1000f; - sb.Append(value.ToString("F3",CultureInfo.InvariantCulture)); - sb.Append('S'); - } - } - - // Zero is represented as "PT0S" - if (sb[sb.Length - 1] == 'P') - sb.Append("T0S"); - - return sb.ToString(); + return span.ToIso8601Representation(); } } diff --git a/Xbim.Ifc4/DateTimeResource/IfcTimePartial.cs b/Xbim.Ifc4/DateTimeResource/IfcTimePartial.cs index 36dc60d9e..52cef0491 100644 --- a/Xbim.Ifc4/DateTimeResource/IfcTimePartial.cs +++ b/Xbim.Ifc4/DateTimeResource/IfcTimePartial.cs @@ -6,9 +6,9 @@ public partial struct IfcTime { public static implicit operator DateTime(IfcTime obj) { - DateTime d; - DateTime.TryParse(obj, out d); - return d; + if(DateTime.TryParse(obj, out DateTime d)) + return d; + return default; } public static implicit operator IfcTime(DateTime obj) diff --git a/Xbim.Ifc4/MeasureResource/IfcMonetaryUnitPartial.cs b/Xbim.Ifc4/MeasureResource/IfcMonetaryUnitPartial.cs index 7f49b53db..287b264f4 100644 --- a/Xbim.Ifc4/MeasureResource/IfcMonetaryUnitPartial.cs +++ b/Xbim.Ifc4/MeasureResource/IfcMonetaryUnitPartial.cs @@ -1,61 +1,42 @@ -using System.Globalization; -using System.Linq; + namespace Xbim.Ifc4.MeasureResource { public partial class IfcMonetaryUnit { /// - /// Get Symbol string for money unit + /// Gets the Symbol string for money unit /// /// String holding symbol public string Symbol { get { - //TODO resolve this, net standard and core do not support culture iteration and it is apparently very slow - //string value = CultureInfo.GetCultures(CultureTypes.SpecificCultures) - // .Where(c => new RegionInfo(c.LCID).ISOCurrencySymbol == Currency.ToString()) - // .Select(c => new RegionInfo(c.LCID).CurrencySymbol) - // .FirstOrDefault(); - //return string.IsNullOrEmpty(value) ? Currency.ToString() : value; - return Currency.ToString(); + return this.Symbol(); } } /// - ///Get full English name of the currency + /// Gets the name of the currency as its known internationally /// /// String as full name - public string FullEnglishName + public string FullEnglishName { get { - //TODO resolve this - //string value = CultureInfo.GetCultures(CultureTypes.SpecificCultures) - // .Where(c => new RegionInfo(c.LCID).ISOCurrencySymbol == Currency.ToString()) - // .Select(c => new RegionInfo(c.LCID).CurrencyEnglishName) - // .FirstOrDefault(); - //return string.IsNullOrEmpty(value) ? Currency.ToString() : value; - return Currency.ToString(); + return this.FullEnglishName(); } } /// - ///Get full Native name of the currency + /// Gets the name of the currency as its known natively /// /// String holding full name public string FullNativeName { get { - //TODO resolve this - //string value = CultureInfo.GetCultures(CultureTypes.SpecificCultures) - // .Where(c => new RegionInfo(c.LCID).ISOCurrencySymbol == Currency.ToString()) - // .Select(c => new RegionInfo(c.LCID).CurrencyNativeName) - // .FirstOrDefault(); - //return string.IsNullOrEmpty(value) ? Currency.ToString() : value; - return Currency.ToString(); + return this.FullNativeName(); } } @@ -63,7 +44,7 @@ public string FullName { get { - return FullNativeName; + return FullEnglishName; } } diff --git a/Xbim.Ifc4/MeasureResource/IfcUnitExtensions.cs b/Xbim.Ifc4/MeasureResource/IfcUnitExtensions.cs index 9fe2bdb7c..1b3432079 100644 --- a/Xbim.Ifc4/MeasureResource/IfcUnitExtensions.cs +++ b/Xbim.Ifc4/MeasureResource/IfcUnitExtensions.cs @@ -1,33 +1,104 @@ -namespace Xbim.Ifc4.MeasureResource +using System.Collections.Generic; +using System.Globalization; +using System; +using Xbim.Ifc4.Interfaces; +using System.Linq; + +namespace Xbim.Ifc4.MeasureResource { public static class UnitExtensions { + /// /// Get the full name of the IfcUnit /// /// string holding full name - public static string Name(this IfcUnit ifcUnit) + public static string Name(this IIfcUnit ifcUnit) { - var unit = ifcUnit as IfcDerivedUnit; - if (unit != null) return unit.FullName; - var namedUnit = ifcUnit as IfcNamedUnit; - if (namedUnit != null) return namedUnit.FullName; - var monetaryUnit = ifcUnit as IfcMonetaryUnit; - return monetaryUnit != null ? monetaryUnit.FullEnglishName : string.Empty; + return ifcUnit switch + { + IIfcDerivedUnit unit => unit.FullName, + IIfcNamedUnit namedUnit => namedUnit.FullName, + IIfcMonetaryUnit monetaryUnit => monetaryUnit.FullEnglishName(), + _ => string.Empty + }; } /// /// Get the symbol of the IfcUnit /// /// string holding symbol - public static string Symbol(this IfcUnit ifcUnit) + public static string Symbol(this IIfcUnit ifcUnit) + { + return ifcUnit switch + { + IIfcDerivedUnit unit => unit.FullName, + IIfcNamedUnit namedUnit => namedUnit.Symbol, + IIfcMonetaryUnit monetaryUnit => monetaryUnit.Symbol(), + _ => string.Empty + }; + } + + + /// + /// Gets the currency symbol (e.g. $, £, €, kr etc) for the + /// + /// + /// + public static string Symbol(this IIfcMonetaryUnit obj) + { + return CurrencyMap.ContainsKey(obj.Currency) ? CurrencyMap[obj.Currency].CurrencySymbol : obj.Currency.ToString(); + } + + /// + /// Gets the currency name in English for the + /// + /// + /// + public static string FullEnglishName(this IIfcMonetaryUnit obj) { - var unit = ifcUnit as IfcDerivedUnit; - if (unit != null) return unit.FullName; - var namedUnit = ifcUnit as IfcNamedUnit; - if (namedUnit != null) return namedUnit.Symbol; - var monetaryUnit = ifcUnit as IfcMonetaryUnit; - return monetaryUnit != null ? monetaryUnit.Symbol : string.Empty; + return CurrencyMap.ContainsKey(obj.Currency) ? CurrencyMap[obj.Currency].CurrencyEnglishName : obj.Currency.ToString(); + } + + /// + /// Gets the currency name in local culture for the + /// + /// Note: this is imprecise and inherently ambiguous due to different cultures installed, but for example + /// Polish PLN might be known natively as 'złoty polski' rather than 'Polish Zloty' + /// + /// + public static string FullNativeName(this IIfcMonetaryUnit obj) + { + return CurrencyMap.ContainsKey(obj.Currency) ? CurrencyMap[obj.Currency].CurrencyNativeName : obj.Currency.ToString(); + } + private static IDictionary CurrencyMap => LazyCurrencyMap.Value; + + + // Lazily constructed dictionary of 'Regioninfo' by ISO Currency codes, acquired from all installed specific cultures. + // eg. en-GB => {GBP}, en-US => {USD}, fr-FR => {Euro} etc. This mapping is slightly imperfect in terms of + // Cultural labling but good enough? See below + private static Lazy> LazyCurrencyMap = new Lazy>(() => + CultureInfo.GetCultures(CultureTypes.SpecificCultures) + .Where(c => !skippedCountryCodes.Any(i => c.Name == i)) + .Select(c => new RegionInfo(c.LCID)) + .Distinct(new RegionInfoComparer()) + .ToDictionary(r => r.ISOCurrencySymbol, r => r)); + + // We're acquiring currency symbols and localised names etc indirectly from all installed cultures on the platform. + // But the first culture we locate a currency in may not be the most natural/prevalent. E.g. Locating GBP on Windows, + // 'cy-GB' (Welsh UK) comes before 'en-GB' (English UK), based on the order of cultures, meaning the GBP + // CurrencyNativeName appears as 'Punt Prydain' rather than the more natural 'Pound Sterling'. + // + // Note: There are probably many other countries where a currency is shared across cultures and the first culture + // is not the most natural one. (e.g INR, ZAR), so this list may need updating + // This only affects currency lookups, not any other Culture/Locale feature. + private static string[] skippedCountryCodes = new[] { "cy-GB", "gd-GB" }; + + private class RegionInfoComparer : IEqualityComparer + { + public bool Equals(RegionInfo x, RegionInfo y) => x.ISOCurrencySymbol == y.ISOCurrencySymbol; + + public int GetHashCode(RegionInfo obj) => obj.ISOCurrencySymbol.GetHashCode(); } } diff --git a/Xbim.Ifc4x3/ActorResource/IfcActorRole.Partial.cs b/Xbim.Ifc4x3/ActorResource/IfcActorRole.Partial.cs new file mode 100644 index 000000000..27f12bdbf --- /dev/null +++ b/Xbim.Ifc4x3/ActorResource/IfcActorRole.Partial.cs @@ -0,0 +1,54 @@ +using System; +using Xbim.Ifc4x3.MeasureResource; + +namespace Xbim.Ifc4x3.ActorResource +{ + public partial class IfcActorRole + { + /// + /// Converts a string to a Role or a User defined role if necessary + /// + /// + /// + /// + private static void ConvertRoleString(string value, ref IfcRoleEnum role, ref IfcLabel? userDefinedRole) + { + if (string.IsNullOrEmpty(value)) return; //illegal to set a role to nothing + var roleStr = value.Trim(); + + var roleWithoutSpaces = roleStr.Replace(" ", ""); + if (Enum.IsDefined(typeof(IfcRoleEnum), roleWithoutSpaces)) + { + var roleEnum = (IfcRoleEnum)Enum.Parse(typeof(IfcRoleEnum), roleWithoutSpaces, true); + role = roleEnum; //call this to ensure correct change notification + userDefinedRole = null; + } + else + { + userDefinedRole = roleStr; + role = IfcRoleEnum.USERDEFINED; + } + } + + /// + /// Gets or Sets the Role, if the name provided matches on of the Role enums, the enum is selected, otherwise a userdefined role is created. Use this to simplify binding + /// + public string RoleString + { + get + { + if(Role==IfcRoleEnum.USERDEFINED) + return UserDefinedRole; + return Role.ToString(); + } + set + { + IfcLabel? userDefinedRole = ""; + var role = new IfcRoleEnum(); + ConvertRoleString(value, ref role, ref userDefinedRole); + Role = role; + UserDefinedRole = userDefinedRole; + } + } + } +} diff --git a/Xbim.Ifc4x3/DateTimeResource/IfcDate.Partial.cs b/Xbim.Ifc4x3/DateTimeResource/IfcDate.Partial.cs new file mode 100644 index 000000000..eaeb008bd --- /dev/null +++ b/Xbim.Ifc4x3/DateTimeResource/IfcDate.Partial.cs @@ -0,0 +1,26 @@ +using System; +using System.Globalization; + +namespace Xbim.Ifc4x3.DateTimeResource +{ + public partial struct IfcDate + { + public DateTime ToDateTime() + { + return this; + } + + public static implicit operator DateTime(IfcDate obj) + { + if(DateTime.TryParse(obj._value, null, DateTimeStyles.RoundtripKind, out DateTime result)) + return result; + return default; + } + + public static implicit operator IfcDate(DateTime obj) + { + obj = DateTime.SpecifyKind(obj, DateTimeKind.Unspecified); + return obj.ToString("yyyy-MM-dd"); + } + } +} diff --git a/Xbim.Ifc4x3/DateTimeResource/IfcDateTime.Partial.cs b/Xbim.Ifc4x3/DateTimeResource/IfcDateTime.Partial.cs new file mode 100644 index 000000000..a67112ac5 --- /dev/null +++ b/Xbim.Ifc4x3/DateTimeResource/IfcDateTime.Partial.cs @@ -0,0 +1,26 @@ +using System; +using System.Globalization; + +namespace Xbim.Ifc4x3.DateTimeResource +{ + public partial struct IfcDateTime + { + public DateTime ToDateTime() + { + return this; + } + + public static implicit operator DateTime(IfcDateTime obj) + { + if(DateTime.TryParse(obj._value, null, DateTimeStyles.RoundtripKind, out DateTime result)) + return result; + return default; + } + + public static implicit operator IfcDateTime(DateTime obj) + { + obj = DateTime.SpecifyKind(obj, DateTimeKind.Unspecified); + return obj.ToString("o"); + } + } +} diff --git a/Xbim.Ifc4x3/DateTimeResource/IfcDuration.Partial.cs b/Xbim.Ifc4x3/DateTimeResource/IfcDuration.Partial.cs new file mode 100644 index 000000000..61d29edd6 --- /dev/null +++ b/Xbim.Ifc4x3/DateTimeResource/IfcDuration.Partial.cs @@ -0,0 +1,37 @@ +using System; +using System.Xml; +using Xbim.Common.XbimExtensions; + +namespace Xbim.Ifc4x3.DateTimeResource +{ + public partial struct IfcDuration + { + public TimeSpan ToTimeSpan() + { + return XmlConvert.ToTimeSpan(Value.ToString()); + } + + public static implicit operator IfcDuration(TimeSpan value) + { + + //https://www.w3.org/TR/xmlschema-2/#duration + return new IfcDuration(TimeSpanToString(value)); + } + + public static implicit operator TimeSpan(IfcDuration obj) + { + string value = obj; + return value.Iso8601DurationToTimeSpan(); + } + + /// + /// Return the string representation according to xsd:duration rules, xdt:dayTimeDuration rules, or + /// xdt:yearMonthDuration rules. + /// + private static string TimeSpanToString(TimeSpan span) + { + return span.ToIso8601Representation(); + } + + } +} diff --git a/Xbim.Ifc4x3/DateTimeResource/IfcTime.Partial.cs b/Xbim.Ifc4x3/DateTimeResource/IfcTime.Partial.cs new file mode 100644 index 000000000..9ae5884ef --- /dev/null +++ b/Xbim.Ifc4x3/DateTimeResource/IfcTime.Partial.cs @@ -0,0 +1,22 @@ +using System; + +namespace Xbim.Ifc4x3.DateTimeResource +{ + public partial struct IfcTime + { + public static implicit operator DateTime(IfcTime obj) + { + if (DateTime.TryParse(obj, out DateTime d)) + return d; + return default; + } + + public static implicit operator IfcTime(DateTime obj) + { + var s = obj.ToString("O"); + //2009-06-15T13:45:30.0000000-07:00 + // ^ + return s.Substring(11); + } + } +} diff --git a/Xbim.Ifc4x3/DateTimeResource/IfcTimeStamp.Partial.cs b/Xbim.Ifc4x3/DateTimeResource/IfcTimeStamp.Partial.cs new file mode 100644 index 000000000..106a1169d --- /dev/null +++ b/Xbim.Ifc4x3/DateTimeResource/IfcTimeStamp.Partial.cs @@ -0,0 +1,40 @@ +using System; +using System.Globalization; + +namespace Xbim.Ifc4x3.DateTimeResource +{ + + public partial struct IfcTimeStamp + { + public DateTime ToDateTime() + { + var dt = new DateTime(1970, 1, 1, 0, 0, 0, 0, DateTimeKind.Utc); //from 1970/1/1 00:00:00 + return dt.AddSeconds(this); + } + + public static implicit operator DateTime(IfcTimeStamp obj) + { + return obj.ToDateTime(); + + } + + public static implicit operator IfcTimeStamp(DateTime obj) + { + var dt = new DateTime(1970, 1, 1, 0, 0, 0, 0, DateTimeKind.Utc); //from 1970/1/1 00:00:00 + var s = obj - dt; + return (long)s.TotalSeconds; + } + + public static implicit operator TimeSpan(IfcTimeStamp obj) + { + return TimeSpan.FromSeconds(obj); + } + + public static implicit operator IfcTimeStamp(TimeSpan obj) + { + return (long)obj.TotalSeconds; + } + + } + +} diff --git a/Xbim.Ifc4x3/Interfaces/Conversions/IfcValueHelper.cs b/Xbim.Ifc4x3/Interfaces/Conversions/IfcValueHelper.cs index fc71fd211..397768359 100644 --- a/Xbim.Ifc4x3/Interfaces/Conversions/IfcValueHelper.cs +++ b/Xbim.Ifc4x3/Interfaces/Conversions/IfcValueHelper.cs @@ -17,8 +17,8 @@ public static class IfcValueHelper private static ExpressMetaData _ifc4meta; private static ExpressMetaData _ifc4x3meta; - private static ExpressMetaData Ifc4Meta => _ifc4meta ?? (_ifc4meta = ExpressMetaData.GetMetadata(typeof(Ifc4.Interfaces.IIfcValue).Module)); - private static ExpressMetaData Ifc4x3Meta => _ifc4x3meta ?? (_ifc4x3meta = ExpressMetaData.GetMetadata(typeof(Ifc4x3.MeasureResource.IfcValue).Module)); + private static ExpressMetaData Ifc4Meta => _ifc4meta ?? (_ifc4meta = ExpressMetaData.GetMetadata(new Ifc4.EntityFactoryIfc4())); + private static ExpressMetaData Ifc4x3Meta => _ifc4x3meta ?? (_ifc4x3meta = ExpressMetaData.GetMetadata(new Ifc4x3.EntityFactoryIfc4x3Add2())); public static Ifc4.Interfaces.IIfcValue ToIfc4(this Ifc4x3.MeasureResource.IfcValue value) { diff --git a/Xbim.Ifc4x3/Interfaces/IFC4/IfcAlarm.cs b/Xbim.Ifc4x3/Interfaces/IFC4/IfcAlarm.cs index cf178bee4..029ccbaa0 100644 --- a/Xbim.Ifc4x3/Interfaces/IFC4/IfcAlarm.cs +++ b/Xbim.Ifc4x3/Interfaces/IFC4/IfcAlarm.cs @@ -39,16 +39,14 @@ public partial class @IfcAlarm : IIfcAlarm case IfcAlarmTypeEnum.MANUALPULLBOX: return Ifc4.Interfaces.IfcAlarmTypeEnum.MANUALPULLBOX; case IfcAlarmTypeEnum.RAILWAYCROCODILE: - //## Handle translation of RAILWAYCROCODILE member from IfcAlarmTypeEnum in property PredefinedType - //TODO: Handle translation of RAILWAYCROCODILE member from IfcAlarmTypeEnum in property PredefinedType - throw new System.NotImplementedException(); + //## Handle translation of RAILWAYCROCODILE member from IfcAlarmTypeEnum in property PredefinedType + return this.GetUserDefined(); //## - case IfcAlarmTypeEnum.RAILWAYDETONATOR: - //## Handle translation of RAILWAYDETONATOR member from IfcAlarmTypeEnum in property PredefinedType - //TODO: Handle translation of RAILWAYDETONATOR member from IfcAlarmTypeEnum in property PredefinedType - throw new System.NotImplementedException(); + case IfcAlarmTypeEnum.RAILWAYDETONATOR: + //## Handle translation of RAILWAYDETONATOR member from IfcAlarmTypeEnum in property PredefinedType + return this.GetUserDefined(); //## - case IfcAlarmTypeEnum.SIREN: + case IfcAlarmTypeEnum.SIREN: return Ifc4.Interfaces.IfcAlarmTypeEnum.SIREN; case IfcAlarmTypeEnum.WHISTLE: return Ifc4.Interfaces.IfcAlarmTypeEnum.WHISTLE; diff --git a/Xbim.Ifc4x3/Interfaces/IFC4/IfcAlarmType.cs b/Xbim.Ifc4x3/Interfaces/IFC4/IfcAlarmType.cs index d1affa1d7..4ba63ad4a 100644 --- a/Xbim.Ifc4x3/Interfaces/IFC4/IfcAlarmType.cs +++ b/Xbim.Ifc4x3/Interfaces/IFC4/IfcAlarmType.cs @@ -39,16 +39,14 @@ Ifc4.Interfaces.IfcAlarmTypeEnum IIfcAlarmType.PredefinedType case IfcAlarmTypeEnum.MANUALPULLBOX: return Ifc4.Interfaces.IfcAlarmTypeEnum.MANUALPULLBOX; case IfcAlarmTypeEnum.RAILWAYCROCODILE: - //## Handle translation of RAILWAYCROCODILE member from IfcAlarmTypeEnum in property PredefinedType - //TODO: Handle translation of RAILWAYCROCODILE member from IfcAlarmTypeEnum in property PredefinedType - throw new System.NotImplementedException(); + //## Handle translation of RAILWAYCROCODILE member from IfcAlarmTypeEnum in property PredefinedType + return this.GetUserDefined(); //## - case IfcAlarmTypeEnum.RAILWAYDETONATOR: - //## Handle translation of RAILWAYDETONATOR member from IfcAlarmTypeEnum in property PredefinedType - //TODO: Handle translation of RAILWAYDETONATOR member from IfcAlarmTypeEnum in property PredefinedType - throw new System.NotImplementedException(); - //## - case IfcAlarmTypeEnum.SIREN: + case IfcAlarmTypeEnum.RAILWAYDETONATOR: + //## Handle translation of RAILWAYDETONATOR member from IfcAlarmTypeEnum in property PredefinedType + return this.GetUserDefined(); + //## + case IfcAlarmTypeEnum.SIREN: return Ifc4.Interfaces.IfcAlarmTypeEnum.SIREN; case IfcAlarmTypeEnum.WHISTLE: return Ifc4.Interfaces.IfcAlarmTypeEnum.WHISTLE; diff --git a/Xbim.Ifc4x3/Interfaces/IFC4/IfcAppliedValue.cs b/Xbim.Ifc4x3/Interfaces/IFC4/IfcAppliedValue.cs index e86923b61..b8c6001d2 100644 --- a/Xbim.Ifc4x3/Interfaces/IFC4/IfcAppliedValue.cs +++ b/Xbim.Ifc4x3/Interfaces/IFC4/IfcAppliedValue.cs @@ -1175,8 +1175,7 @@ IIfcMeasureWithUnit IIfcAppliedValue.UnitBasis return Ifc4.Interfaces.IfcArithmeticOperatorEnum.DIVIDE; case IfcArithmeticOperatorEnum.MODULO: //## Handle translation of MODULO member from IfcArithmeticOperatorEnum in property ArithmeticOperator - //TODO: Handle translation of MODULO member from IfcArithmeticOperatorEnum in property ArithmeticOperator - throw new System.NotImplementedException(); + throw new System.NotSupportedException("MODULO operation only supported in IFC4.3+"); //## case IfcArithmeticOperatorEnum.MULTIPLY: return Ifc4.Interfaces.IfcArithmeticOperatorEnum.MULTIPLY; diff --git a/Xbim.Ifc4x3/Interfaces/IFC4/IfcAudioVisualAppliance.cs b/Xbim.Ifc4x3/Interfaces/IFC4/IfcAudioVisualAppliance.cs index d12796488..289d9c9b2 100644 --- a/Xbim.Ifc4x3/Interfaces/IFC4/IfcAudioVisualAppliance.cs +++ b/Xbim.Ifc4x3/Interfaces/IFC4/IfcAudioVisualAppliance.cs @@ -35,11 +35,10 @@ public partial class @IfcAudioVisualAppliance : IIfcAudioVisualAppliance case IfcAudioVisualApplianceTypeEnum.CAMERA: return Ifc4.Interfaces.IfcAudioVisualApplianceTypeEnum.CAMERA; case IfcAudioVisualApplianceTypeEnum.COMMUNICATIONTERMINAL: - //## Handle translation of COMMUNICATIONTERMINAL member from IfcAudioVisualApplianceTypeEnum in property PredefinedType - //TODO: Handle translation of COMMUNICATIONTERMINAL member from IfcAudioVisualApplianceTypeEnum in property PredefinedType - throw new System.NotImplementedException(); + //## Handle translation of COMMUNICATIONTERMINAL member from IfcAudioVisualApplianceTypeEnum in property PredefinedType + return this.GetUserDefined(); //## - case IfcAudioVisualApplianceTypeEnum.DISPLAY: + case IfcAudioVisualApplianceTypeEnum.DISPLAY: return Ifc4.Interfaces.IfcAudioVisualApplianceTypeEnum.DISPLAY; case IfcAudioVisualApplianceTypeEnum.MICROPHONE: return Ifc4.Interfaces.IfcAudioVisualApplianceTypeEnum.MICROPHONE; @@ -50,11 +49,10 @@ public partial class @IfcAudioVisualAppliance : IIfcAudioVisualAppliance case IfcAudioVisualApplianceTypeEnum.RECEIVER: return Ifc4.Interfaces.IfcAudioVisualApplianceTypeEnum.RECEIVER; case IfcAudioVisualApplianceTypeEnum.RECORDINGEQUIPMENT: - //## Handle translation of RECORDINGEQUIPMENT member from IfcAudioVisualApplianceTypeEnum in property PredefinedType - //TODO: Handle translation of RECORDINGEQUIPMENT member from IfcAudioVisualApplianceTypeEnum in property PredefinedType - throw new System.NotImplementedException(); + //## Handle translation of RECORDINGEQUIPMENT member from IfcAudioVisualApplianceTypeEnum in property PredefinedType + return this.GetUserDefined(); //## - case IfcAudioVisualApplianceTypeEnum.SPEAKER: + case IfcAudioVisualApplianceTypeEnum.SPEAKER: return Ifc4.Interfaces.IfcAudioVisualApplianceTypeEnum.SPEAKER; case IfcAudioVisualApplianceTypeEnum.SWITCHER: return Ifc4.Interfaces.IfcAudioVisualApplianceTypeEnum.SWITCHER; @@ -68,9 +66,9 @@ public partial class @IfcAudioVisualAppliance : IIfcAudioVisualAppliance return Ifc4.Interfaces.IfcAudioVisualApplianceTypeEnum.USERDEFINED; case IfcAudioVisualApplianceTypeEnum.NOTDEFINED: return Ifc4.Interfaces.IfcAudioVisualApplianceTypeEnum.NOTDEFINED; - case null: + case null: return null; - + default: throw new System.ArgumentOutOfRangeException(); } diff --git a/Xbim.Ifc4x3/Interfaces/IFC4/IfcAudioVisualApplianceType.cs b/Xbim.Ifc4x3/Interfaces/IFC4/IfcAudioVisualApplianceType.cs index 2931111de..bbd4f3c95 100644 --- a/Xbim.Ifc4x3/Interfaces/IFC4/IfcAudioVisualApplianceType.cs +++ b/Xbim.Ifc4x3/Interfaces/IFC4/IfcAudioVisualApplianceType.cs @@ -35,11 +35,10 @@ Ifc4.Interfaces.IfcAudioVisualApplianceTypeEnum IIfcAudioVisualApplianceType.Pre case IfcAudioVisualApplianceTypeEnum.CAMERA: return Ifc4.Interfaces.IfcAudioVisualApplianceTypeEnum.CAMERA; case IfcAudioVisualApplianceTypeEnum.COMMUNICATIONTERMINAL: - //## Handle translation of COMMUNICATIONTERMINAL member from IfcAudioVisualApplianceTypeEnum in property PredefinedType - //TODO: Handle translation of COMMUNICATIONTERMINAL member from IfcAudioVisualApplianceTypeEnum in property PredefinedType - throw new System.NotImplementedException(); + //## Handle translation of COMMUNICATIONTERMINAL member from IfcAudioVisualApplianceTypeEnum in property PredefinedType + return this.GetUserDefined(); //## - case IfcAudioVisualApplianceTypeEnum.DISPLAY: + case IfcAudioVisualApplianceTypeEnum.DISPLAY: return Ifc4.Interfaces.IfcAudioVisualApplianceTypeEnum.DISPLAY; case IfcAudioVisualApplianceTypeEnum.MICROPHONE: return Ifc4.Interfaces.IfcAudioVisualApplianceTypeEnum.MICROPHONE; @@ -50,11 +49,10 @@ Ifc4.Interfaces.IfcAudioVisualApplianceTypeEnum IIfcAudioVisualApplianceType.Pre case IfcAudioVisualApplianceTypeEnum.RECEIVER: return Ifc4.Interfaces.IfcAudioVisualApplianceTypeEnum.RECEIVER; case IfcAudioVisualApplianceTypeEnum.RECORDINGEQUIPMENT: - //## Handle translation of RECORDINGEQUIPMENT member from IfcAudioVisualApplianceTypeEnum in property PredefinedType - //TODO: Handle translation of RECORDINGEQUIPMENT member from IfcAudioVisualApplianceTypeEnum in property PredefinedType - throw new System.NotImplementedException(); + //## Handle translation of RECORDINGEQUIPMENT member from IfcAudioVisualApplianceTypeEnum in property PredefinedType + return this.GetUserDefined(); //## - case IfcAudioVisualApplianceTypeEnum.SPEAKER: + case IfcAudioVisualApplianceTypeEnum.SPEAKER: return Ifc4.Interfaces.IfcAudioVisualApplianceTypeEnum.SPEAKER; case IfcAudioVisualApplianceTypeEnum.SWITCHER: return Ifc4.Interfaces.IfcAudioVisualApplianceTypeEnum.SWITCHER; diff --git a/Xbim.Ifc4x3/Interfaces/IFC4/IfcBeam.cs b/Xbim.Ifc4x3/Interfaces/IFC4/IfcBeam.cs index 6db9835dc..1062d1798 100644 --- a/Xbim.Ifc4x3/Interfaces/IFC4/IfcBeam.cs +++ b/Xbim.Ifc4x3/Interfaces/IFC4/IfcBeam.cs @@ -33,42 +33,36 @@ public partial class @IfcBeam : IIfcBeam case IfcBeamTypeEnum.BEAM: return Ifc4.Interfaces.IfcBeamTypeEnum.BEAM; case IfcBeamTypeEnum.CORNICE: - //## Handle translation of CORNICE member from IfcBeamTypeEnum in property PredefinedType - //TODO: Handle translation of CORNICE member from IfcBeamTypeEnum in property PredefinedType - throw new System.NotImplementedException(); - //## - case IfcBeamTypeEnum.DIAPHRAGM: - //## Handle translation of DIAPHRAGM member from IfcBeamTypeEnum in property PredefinedType - //TODO: Handle translation of DIAPHRAGM member from IfcBeamTypeEnum in property PredefinedType - throw new System.NotImplementedException(); - //## - case IfcBeamTypeEnum.EDGEBEAM: - //## Handle translation of EDGEBEAM member from IfcBeamTypeEnum in property PredefinedType - //TODO: Handle translation of EDGEBEAM member from IfcBeamTypeEnum in property PredefinedType - throw new System.NotImplementedException(); - //## - case IfcBeamTypeEnum.GIRDER_SEGMENT: - //## Handle translation of GIRDER_SEGMENT member from IfcBeamTypeEnum in property PredefinedType - //TODO: Handle translation of GIRDER_SEGMENT member from IfcBeamTypeEnum in property PredefinedType - throw new System.NotImplementedException(); - //## - case IfcBeamTypeEnum.HATSTONE: - //## Handle translation of HATSTONE member from IfcBeamTypeEnum in property PredefinedType - //TODO: Handle translation of HATSTONE member from IfcBeamTypeEnum in property PredefinedType - throw new System.NotImplementedException(); - //## - case IfcBeamTypeEnum.HOLLOWCORE: + //## Handle translation of CORNICE member from IfcBeamTypeEnum in property PredefinedType + return this.GetUserDefined(); + //## + case IfcBeamTypeEnum.DIAPHRAGM: + //## Handle translation of DIAPHRAGM member from IfcBeamTypeEnum in property PredefinedType + return this.GetUserDefined(); + //## + case IfcBeamTypeEnum.EDGEBEAM: + //## Handle translation of EDGEBEAM member from IfcBeamTypeEnum in property PredefinedType + return this.GetUserDefined(); + //## + case IfcBeamTypeEnum.GIRDER_SEGMENT: + //## Handle translation of GIRDER_SEGMENT member from IfcBeamTypeEnum in property PredefinedType + return this.GetUserDefined(); + //## + case IfcBeamTypeEnum.HATSTONE: + //## Handle translation of HATSTONE member from IfcBeamTypeEnum in property PredefinedType + return this.GetUserDefined(); + //## + case IfcBeamTypeEnum.HOLLOWCORE: return Ifc4.Interfaces.IfcBeamTypeEnum.HOLLOWCORE; case IfcBeamTypeEnum.JOIST: return Ifc4.Interfaces.IfcBeamTypeEnum.JOIST; case IfcBeamTypeEnum.LINTEL: return Ifc4.Interfaces.IfcBeamTypeEnum.LINTEL; case IfcBeamTypeEnum.PIERCAP: - //## Handle translation of PIERCAP member from IfcBeamTypeEnum in property PredefinedType - //TODO: Handle translation of PIERCAP member from IfcBeamTypeEnum in property PredefinedType - throw new System.NotImplementedException(); - //## - case IfcBeamTypeEnum.SPANDREL: + //## Handle translation of PIERCAP member from IfcBeamTypeEnum in property PredefinedType + return this.GetUserDefined(); + //## + case IfcBeamTypeEnum.SPANDREL: return Ifc4.Interfaces.IfcBeamTypeEnum.SPANDREL; case IfcBeamTypeEnum.T_BEAM: return Ifc4.Interfaces.IfcBeamTypeEnum.T_BEAM; diff --git a/Xbim.Ifc4x3/Interfaces/IFC4/IfcBeamType.cs b/Xbim.Ifc4x3/Interfaces/IFC4/IfcBeamType.cs index ec1979eba..d0ebc069d 100644 --- a/Xbim.Ifc4x3/Interfaces/IFC4/IfcBeamType.cs +++ b/Xbim.Ifc4x3/Interfaces/IFC4/IfcBeamType.cs @@ -33,42 +33,36 @@ Ifc4.Interfaces.IfcBeamTypeEnum IIfcBeamType.PredefinedType case IfcBeamTypeEnum.BEAM: return Ifc4.Interfaces.IfcBeamTypeEnum.BEAM; case IfcBeamTypeEnum.CORNICE: - //## Handle translation of CORNICE member from IfcBeamTypeEnum in property PredefinedType - //TODO: Handle translation of CORNICE member from IfcBeamTypeEnum in property PredefinedType - throw new System.NotImplementedException(); - //## - case IfcBeamTypeEnum.DIAPHRAGM: - //## Handle translation of DIAPHRAGM member from IfcBeamTypeEnum in property PredefinedType - //TODO: Handle translation of DIAPHRAGM member from IfcBeamTypeEnum in property PredefinedType - throw new System.NotImplementedException(); - //## - case IfcBeamTypeEnum.EDGEBEAM: - //## Handle translation of EDGEBEAM member from IfcBeamTypeEnum in property PredefinedType - //TODO: Handle translation of EDGEBEAM member from IfcBeamTypeEnum in property PredefinedType - throw new System.NotImplementedException(); - //## - case IfcBeamTypeEnum.GIRDER_SEGMENT: - //## Handle translation of GIRDER_SEGMENT member from IfcBeamTypeEnum in property PredefinedType - //TODO: Handle translation of GIRDER_SEGMENT member from IfcBeamTypeEnum in property PredefinedType - throw new System.NotImplementedException(); - //## - case IfcBeamTypeEnum.HATSTONE: - //## Handle translation of HATSTONE member from IfcBeamTypeEnum in property PredefinedType - //TODO: Handle translation of HATSTONE member from IfcBeamTypeEnum in property PredefinedType - throw new System.NotImplementedException(); - //## - case IfcBeamTypeEnum.HOLLOWCORE: + //## Handle translation of CORNICE member from IfcBeamTypeEnum in property PredefinedType + return this.GetUserDefined(); + //## + case IfcBeamTypeEnum.DIAPHRAGM: + //## Handle translation of DIAPHRAGM member from IfcBeamTypeEnum in property PredefinedType + return this.GetUserDefined(); + //## + case IfcBeamTypeEnum.EDGEBEAM: + //## Handle translation of EDGEBEAM member from IfcBeamTypeEnum in property PredefinedType + return this.GetUserDefined(); + //## + case IfcBeamTypeEnum.GIRDER_SEGMENT: + //## Handle translation of GIRDER_SEGMENT member from IfcBeamTypeEnum in property PredefinedType + return this.GetUserDefined(); + //## + case IfcBeamTypeEnum.HATSTONE: + //## Handle translation of HATSTONE member from IfcBeamTypeEnum in property PredefinedType + return this.GetUserDefined(); + //## + case IfcBeamTypeEnum.HOLLOWCORE: return Ifc4.Interfaces.IfcBeamTypeEnum.HOLLOWCORE; case IfcBeamTypeEnum.JOIST: return Ifc4.Interfaces.IfcBeamTypeEnum.JOIST; case IfcBeamTypeEnum.LINTEL: return Ifc4.Interfaces.IfcBeamTypeEnum.LINTEL; case IfcBeamTypeEnum.PIERCAP: - //## Handle translation of PIERCAP member from IfcBeamTypeEnum in property PredefinedType - //TODO: Handle translation of PIERCAP member from IfcBeamTypeEnum in property PredefinedType - throw new System.NotImplementedException(); - //## - case IfcBeamTypeEnum.SPANDREL: + //## Handle translation of PIERCAP member from IfcBeamTypeEnum in property PredefinedType + return this.GetUserDefined(); + //## + case IfcBeamTypeEnum.SPANDREL: return Ifc4.Interfaces.IfcBeamTypeEnum.SPANDREL; case IfcBeamTypeEnum.T_BEAM: return Ifc4.Interfaces.IfcBeamTypeEnum.T_BEAM; diff --git a/Xbim.Ifc4x3/Interfaces/IFC4/IfcBuildingElementPart.cs b/Xbim.Ifc4x3/Interfaces/IFC4/IfcBuildingElementPart.cs index c4a31e05a..779d3e521 100644 --- a/Xbim.Ifc4x3/Interfaces/IFC4/IfcBuildingElementPart.cs +++ b/Xbim.Ifc4x3/Interfaces/IFC4/IfcBuildingElementPart.cs @@ -31,25 +31,20 @@ public partial class @IfcBuildingElementPart : IIfcBuildingElementPart switch (PredefinedType) { case IfcBuildingElementPartTypeEnum.APRON: - //## Handle translation of APRON member from IfcBuildingElementPartTypeEnum in property PredefinedType - //TODO: Handle translation of APRON member from IfcBuildingElementPartTypeEnum in property PredefinedType - throw new System.NotImplementedException(); + return this.GetUserDefined(); + case IfcBuildingElementPartTypeEnum.ARMOURUNIT: + //## Handle translation of ARMOURUNIT member from IfcBuildingElementPartTypeEnum in property PredefinedType + return this.GetUserDefined(); //## - case IfcBuildingElementPartTypeEnum.ARMOURUNIT: - //## Handle translation of ARMOURUNIT member from IfcBuildingElementPartTypeEnum in property PredefinedType - //TODO: Handle translation of ARMOURUNIT member from IfcBuildingElementPartTypeEnum in property PredefinedType - throw new System.NotImplementedException(); - //## - case IfcBuildingElementPartTypeEnum.INSULATION: + case IfcBuildingElementPartTypeEnum.INSULATION: return Ifc4.Interfaces.IfcBuildingElementPartTypeEnum.INSULATION; case IfcBuildingElementPartTypeEnum.PRECASTPANEL: return Ifc4.Interfaces.IfcBuildingElementPartTypeEnum.PRECASTPANEL; case IfcBuildingElementPartTypeEnum.SAFETYCAGE: - //## Handle translation of SAFETYCAGE member from IfcBuildingElementPartTypeEnum in property PredefinedType - //TODO: Handle translation of SAFETYCAGE member from IfcBuildingElementPartTypeEnum in property PredefinedType - throw new System.NotImplementedException(); - //## - case IfcBuildingElementPartTypeEnum.USERDEFINED: + //## Handle translation of SAFETYCAGE member from IfcBuildingElementPartTypeEnum in property PredefinedType + return this.GetUserDefined(); + //## + case IfcBuildingElementPartTypeEnum.USERDEFINED: //## Optional custom handling of PredefinedType == .USERDEFINED. //## return Ifc4.Interfaces.IfcBuildingElementPartTypeEnum.USERDEFINED; diff --git a/Xbim.Ifc4x3/Interfaces/IFC4/IfcBuildingElementPartType.cs b/Xbim.Ifc4x3/Interfaces/IFC4/IfcBuildingElementPartType.cs index 6d34886e6..3285bfe90 100644 --- a/Xbim.Ifc4x3/Interfaces/IFC4/IfcBuildingElementPartType.cs +++ b/Xbim.Ifc4x3/Interfaces/IFC4/IfcBuildingElementPartType.cs @@ -31,25 +31,22 @@ Ifc4.Interfaces.IfcBuildingElementPartTypeEnum IIfcBuildingElementPartType.Prede switch (PredefinedType) { case IfcBuildingElementPartTypeEnum.APRON: - //## Handle translation of APRON member from IfcBuildingElementPartTypeEnum in property PredefinedType - //TODO: Handle translation of APRON member from IfcBuildingElementPartTypeEnum in property PredefinedType - throw new System.NotImplementedException(); - //## - case IfcBuildingElementPartTypeEnum.ARMOURUNIT: - //## Handle translation of ARMOURUNIT member from IfcBuildingElementPartTypeEnum in property PredefinedType - //TODO: Handle translation of ARMOURUNIT member from IfcBuildingElementPartTypeEnum in property PredefinedType - throw new System.NotImplementedException(); - //## - case IfcBuildingElementPartTypeEnum.INSULATION: + //## Handle translation of APRON member from IfcBuildingElementPartTypeEnum in property PredefinedType + return this.GetUserDefined(); + //## + case IfcBuildingElementPartTypeEnum.ARMOURUNIT: + //## Handle translation of ARMOURUNIT member from IfcBuildingElementPartTypeEnum in property PredefinedType + return this.GetUserDefined(); + //## + case IfcBuildingElementPartTypeEnum.INSULATION: return Ifc4.Interfaces.IfcBuildingElementPartTypeEnum.INSULATION; case IfcBuildingElementPartTypeEnum.PRECASTPANEL: return Ifc4.Interfaces.IfcBuildingElementPartTypeEnum.PRECASTPANEL; case IfcBuildingElementPartTypeEnum.SAFETYCAGE: - //## Handle translation of SAFETYCAGE member from IfcBuildingElementPartTypeEnum in property PredefinedType - //TODO: Handle translation of SAFETYCAGE member from IfcBuildingElementPartTypeEnum in property PredefinedType - throw new System.NotImplementedException(); - //## - case IfcBuildingElementPartTypeEnum.USERDEFINED: + //## Handle translation of SAFETYCAGE member from IfcBuildingElementPartTypeEnum in property PredefinedType + return this.GetUserDefined(); + //## + case IfcBuildingElementPartTypeEnum.USERDEFINED: //## Optional custom handling of PredefinedType == .USERDEFINED. //## return Ifc4.Interfaces.IfcBuildingElementPartTypeEnum.USERDEFINED; diff --git a/Xbim.Ifc4x3/Interfaces/IFC4/IfcCableCarrierFitting.cs b/Xbim.Ifc4x3/Interfaces/IFC4/IfcCableCarrierFitting.cs index a9f785473..938c9b07c 100644 --- a/Xbim.Ifc4x3/Interfaces/IFC4/IfcCableCarrierFitting.cs +++ b/Xbim.Ifc4x3/Interfaces/IFC4/IfcCableCarrierFitting.cs @@ -33,27 +33,24 @@ public partial class @IfcCableCarrierFitting : IIfcCableCarrierFitting case IfcCableCarrierFittingTypeEnum.BEND: return Ifc4.Interfaces.IfcCableCarrierFittingTypeEnum.BEND; case IfcCableCarrierFittingTypeEnum.CONNECTOR: - //## Handle translation of CONNECTOR member from IfcCableCarrierFittingTypeEnum in property PredefinedType - //TODO: Handle translation of CONNECTOR member from IfcCableCarrierFittingTypeEnum in property PredefinedType - throw new System.NotImplementedException(); - //## - case IfcCableCarrierFittingTypeEnum.CROSS: + //## Handle translation of CONNECTOR member from IfcCableCarrierFittingTypeEnum in property PredefinedType + return this.GetUserDefined(); + //## + case IfcCableCarrierFittingTypeEnum.CROSS: return Ifc4.Interfaces.IfcCableCarrierFittingTypeEnum.CROSS; case IfcCableCarrierFittingTypeEnum.JUNCTION: - //## Handle translation of JUNCTION member from IfcCableCarrierFittingTypeEnum in property PredefinedType - //TODO: Handle translation of JUNCTION member from IfcCableCarrierFittingTypeEnum in property PredefinedType - throw new System.NotImplementedException(); - //## - case IfcCableCarrierFittingTypeEnum.REDUCER: + //## Handle translation of JUNCTION member from IfcCableCarrierFittingTypeEnum in property PredefinedType + return this.GetUserDefined(); + //## + case IfcCableCarrierFittingTypeEnum.REDUCER: return Ifc4.Interfaces.IfcCableCarrierFittingTypeEnum.REDUCER; case IfcCableCarrierFittingTypeEnum.TEE: return Ifc4.Interfaces.IfcCableCarrierFittingTypeEnum.TEE; case IfcCableCarrierFittingTypeEnum.TRANSITION: - //## Handle translation of TRANSITION member from IfcCableCarrierFittingTypeEnum in property PredefinedType - //TODO: Handle translation of TRANSITION member from IfcCableCarrierFittingTypeEnum in property PredefinedType - throw new System.NotImplementedException(); - //## - case IfcCableCarrierFittingTypeEnum.USERDEFINED: + //## Handle translation of TRANSITION member from IfcCableCarrierFittingTypeEnum in property PredefinedType + return this.GetUserDefined(); + //## + case IfcCableCarrierFittingTypeEnum.USERDEFINED: //## Optional custom handling of PredefinedType == .USERDEFINED. //## return Ifc4.Interfaces.IfcCableCarrierFittingTypeEnum.USERDEFINED; diff --git a/Xbim.Ifc4x3/Interfaces/IFC4/IfcCableCarrierFittingType.cs b/Xbim.Ifc4x3/Interfaces/IFC4/IfcCableCarrierFittingType.cs index f97d58d84..f14f27d9c 100644 --- a/Xbim.Ifc4x3/Interfaces/IFC4/IfcCableCarrierFittingType.cs +++ b/Xbim.Ifc4x3/Interfaces/IFC4/IfcCableCarrierFittingType.cs @@ -33,27 +33,24 @@ Ifc4.Interfaces.IfcCableCarrierFittingTypeEnum IIfcCableCarrierFittingType.Prede case IfcCableCarrierFittingTypeEnum.BEND: return Ifc4.Interfaces.IfcCableCarrierFittingTypeEnum.BEND; case IfcCableCarrierFittingTypeEnum.CONNECTOR: - //## Handle translation of CONNECTOR member from IfcCableCarrierFittingTypeEnum in property PredefinedType - //TODO: Handle translation of CONNECTOR member from IfcCableCarrierFittingTypeEnum in property PredefinedType - throw new System.NotImplementedException(); - //## - case IfcCableCarrierFittingTypeEnum.CROSS: + //## Handle translation of CONNECTOR member from IfcCableCarrierFittingTypeEnum in property PredefinedType + return this.GetUserDefined(); + //## + case IfcCableCarrierFittingTypeEnum.CROSS: return Ifc4.Interfaces.IfcCableCarrierFittingTypeEnum.CROSS; case IfcCableCarrierFittingTypeEnum.JUNCTION: - //## Handle translation of JUNCTION member from IfcCableCarrierFittingTypeEnum in property PredefinedType - //TODO: Handle translation of JUNCTION member from IfcCableCarrierFittingTypeEnum in property PredefinedType - throw new System.NotImplementedException(); - //## - case IfcCableCarrierFittingTypeEnum.REDUCER: + //## Handle translation of JUNCTION member from IfcCableCarrierFittingTypeEnum in property PredefinedType + return this.GetUserDefined(); + //## + case IfcCableCarrierFittingTypeEnum.REDUCER: return Ifc4.Interfaces.IfcCableCarrierFittingTypeEnum.REDUCER; case IfcCableCarrierFittingTypeEnum.TEE: return Ifc4.Interfaces.IfcCableCarrierFittingTypeEnum.TEE; case IfcCableCarrierFittingTypeEnum.TRANSITION: - //## Handle translation of TRANSITION member from IfcCableCarrierFittingTypeEnum in property PredefinedType - //TODO: Handle translation of TRANSITION member from IfcCableCarrierFittingTypeEnum in property PredefinedType - throw new System.NotImplementedException(); - //## - case IfcCableCarrierFittingTypeEnum.USERDEFINED: + //## Handle translation of TRANSITION member from IfcCableCarrierFittingTypeEnum in property PredefinedType + return this.GetUserDefined(); + //## + case IfcCableCarrierFittingTypeEnum.USERDEFINED: //## Optional custom handling of PredefinedType == .USERDEFINED. //## return Ifc4.Interfaces.IfcCableCarrierFittingTypeEnum.USERDEFINED; diff --git a/Xbim.Ifc4x3/Interfaces/IFC4/IfcCableCarrierSegment.cs b/Xbim.Ifc4x3/Interfaces/IFC4/IfcCableCarrierSegment.cs index a46412f2c..f288503ac 100644 --- a/Xbim.Ifc4x3/Interfaces/IFC4/IfcCableCarrierSegment.cs +++ b/Xbim.Ifc4x3/Interfaces/IFC4/IfcCableCarrierSegment.cs @@ -31,29 +31,26 @@ public partial class @IfcCableCarrierSegment : IIfcCableCarrierSegment switch (PredefinedType) { case IfcCableCarrierSegmentTypeEnum.CABLEBRACKET: - //## Handle translation of CABLEBRACKET member from IfcCableCarrierSegmentTypeEnum in property PredefinedType - //TODO: Handle translation of CABLEBRACKET member from IfcCableCarrierSegmentTypeEnum in property PredefinedType - throw new System.NotImplementedException(); - //## - case IfcCableCarrierSegmentTypeEnum.CABLELADDERSEGMENT: + //## Handle translation of CABLEBRACKET member from IfcCableCarrierSegmentTypeEnum in property PredefinedType + return this.GetUserDefined(); + //## + case IfcCableCarrierSegmentTypeEnum.CABLELADDERSEGMENT: return Ifc4.Interfaces.IfcCableCarrierSegmentTypeEnum.CABLELADDERSEGMENT; case IfcCableCarrierSegmentTypeEnum.CABLETRAYSEGMENT: return Ifc4.Interfaces.IfcCableCarrierSegmentTypeEnum.CABLETRAYSEGMENT; case IfcCableCarrierSegmentTypeEnum.CABLETRUNKINGSEGMENT: return Ifc4.Interfaces.IfcCableCarrierSegmentTypeEnum.CABLETRUNKINGSEGMENT; case IfcCableCarrierSegmentTypeEnum.CATENARYWIRE: - //## Handle translation of CATENARYWIRE member from IfcCableCarrierSegmentTypeEnum in property PredefinedType - //TODO: Handle translation of CATENARYWIRE member from IfcCableCarrierSegmentTypeEnum in property PredefinedType - throw new System.NotImplementedException(); - //## - case IfcCableCarrierSegmentTypeEnum.CONDUITSEGMENT: + //## Handle translation of CATENARYWIRE member from IfcCableCarrierSegmentTypeEnum in property PredefinedType + return this.GetUserDefined(); + //## + case IfcCableCarrierSegmentTypeEnum.CONDUITSEGMENT: return Ifc4.Interfaces.IfcCableCarrierSegmentTypeEnum.CONDUITSEGMENT; case IfcCableCarrierSegmentTypeEnum.DROPPER: - //## Handle translation of DROPPER member from IfcCableCarrierSegmentTypeEnum in property PredefinedType - //TODO: Handle translation of DROPPER member from IfcCableCarrierSegmentTypeEnum in property PredefinedType - throw new System.NotImplementedException(); - //## - case IfcCableCarrierSegmentTypeEnum.USERDEFINED: + //## Handle translation of DROPPER member from IfcCableCarrierSegmentTypeEnum in property PredefinedType + return this.GetUserDefined(); + //## + case IfcCableCarrierSegmentTypeEnum.USERDEFINED: //## Optional custom handling of PredefinedType == .USERDEFINED. //## return Ifc4.Interfaces.IfcCableCarrierSegmentTypeEnum.USERDEFINED; diff --git a/Xbim.Ifc4x3/Interfaces/IFC4/IfcCableCarrierSegmentType.cs b/Xbim.Ifc4x3/Interfaces/IFC4/IfcCableCarrierSegmentType.cs index 17d59035a..f5f4b6c5a 100644 --- a/Xbim.Ifc4x3/Interfaces/IFC4/IfcCableCarrierSegmentType.cs +++ b/Xbim.Ifc4x3/Interfaces/IFC4/IfcCableCarrierSegmentType.cs @@ -31,29 +31,26 @@ Ifc4.Interfaces.IfcCableCarrierSegmentTypeEnum IIfcCableCarrierSegmentType.Prede switch (PredefinedType) { case IfcCableCarrierSegmentTypeEnum.CABLEBRACKET: - //## Handle translation of CABLEBRACKET member from IfcCableCarrierSegmentTypeEnum in property PredefinedType - //TODO: Handle translation of CABLEBRACKET member from IfcCableCarrierSegmentTypeEnum in property PredefinedType - throw new System.NotImplementedException(); - //## - case IfcCableCarrierSegmentTypeEnum.CABLELADDERSEGMENT: + //## Handle translation of CABLEBRACKET member from IfcCableCarrierSegmentTypeEnum in property PredefinedType + return this.GetUserDefined(); + //## + case IfcCableCarrierSegmentTypeEnum.CABLELADDERSEGMENT: return Ifc4.Interfaces.IfcCableCarrierSegmentTypeEnum.CABLELADDERSEGMENT; case IfcCableCarrierSegmentTypeEnum.CABLETRAYSEGMENT: return Ifc4.Interfaces.IfcCableCarrierSegmentTypeEnum.CABLETRAYSEGMENT; case IfcCableCarrierSegmentTypeEnum.CABLETRUNKINGSEGMENT: return Ifc4.Interfaces.IfcCableCarrierSegmentTypeEnum.CABLETRUNKINGSEGMENT; case IfcCableCarrierSegmentTypeEnum.CATENARYWIRE: - //## Handle translation of CATENARYWIRE member from IfcCableCarrierSegmentTypeEnum in property PredefinedType - //TODO: Handle translation of CATENARYWIRE member from IfcCableCarrierSegmentTypeEnum in property PredefinedType - throw new System.NotImplementedException(); - //## - case IfcCableCarrierSegmentTypeEnum.CONDUITSEGMENT: + //## Handle translation of CATENARYWIRE member from IfcCableCarrierSegmentTypeEnum in property PredefinedType + return this.GetUserDefined(); + //## + case IfcCableCarrierSegmentTypeEnum.CONDUITSEGMENT: return Ifc4.Interfaces.IfcCableCarrierSegmentTypeEnum.CONDUITSEGMENT; case IfcCableCarrierSegmentTypeEnum.DROPPER: - //## Handle translation of DROPPER member from IfcCableCarrierSegmentTypeEnum in property PredefinedType - //TODO: Handle translation of DROPPER member from IfcCableCarrierSegmentTypeEnum in property PredefinedType - throw new System.NotImplementedException(); - //## - case IfcCableCarrierSegmentTypeEnum.USERDEFINED: + //## Handle translation of DROPPER member from IfcCableCarrierSegmentTypeEnum in property PredefinedType + return this.GetUserDefined(); + //## + case IfcCableCarrierSegmentTypeEnum.USERDEFINED: //## Optional custom handling of PredefinedType == .USERDEFINED. //## return Ifc4.Interfaces.IfcCableCarrierSegmentTypeEnum.USERDEFINED; diff --git a/Xbim.Ifc4x3/Interfaces/IFC4/IfcCableFitting.cs b/Xbim.Ifc4x3/Interfaces/IFC4/IfcCableFitting.cs index 322e19339..8af922158 100644 --- a/Xbim.Ifc4x3/Interfaces/IFC4/IfcCableFitting.cs +++ b/Xbim.Ifc4x3/Interfaces/IFC4/IfcCableFitting.cs @@ -37,11 +37,10 @@ public partial class @IfcCableFitting : IIfcCableFitting case IfcCableFittingTypeEnum.EXIT: return Ifc4.Interfaces.IfcCableFittingTypeEnum.EXIT; case IfcCableFittingTypeEnum.FANOUT: - //## Handle translation of FANOUT member from IfcCableFittingTypeEnum in property PredefinedType - //TODO: Handle translation of FANOUT member from IfcCableFittingTypeEnum in property PredefinedType - throw new System.NotImplementedException(); - //## - case IfcCableFittingTypeEnum.JUNCTION: + //## Handle translation of FANOUT member from IfcCableFittingTypeEnum in property PredefinedType + return this.GetUserDefined(); + //## + case IfcCableFittingTypeEnum.JUNCTION: return Ifc4.Interfaces.IfcCableFittingTypeEnum.JUNCTION; case IfcCableFittingTypeEnum.TRANSITION: return Ifc4.Interfaces.IfcCableFittingTypeEnum.TRANSITION; diff --git a/Xbim.Ifc4x3/Interfaces/IFC4/IfcCableFittingType.cs b/Xbim.Ifc4x3/Interfaces/IFC4/IfcCableFittingType.cs index 3b549d345..cc8a6e288 100644 --- a/Xbim.Ifc4x3/Interfaces/IFC4/IfcCableFittingType.cs +++ b/Xbim.Ifc4x3/Interfaces/IFC4/IfcCableFittingType.cs @@ -37,11 +37,10 @@ Ifc4.Interfaces.IfcCableFittingTypeEnum IIfcCableFittingType.PredefinedType case IfcCableFittingTypeEnum.EXIT: return Ifc4.Interfaces.IfcCableFittingTypeEnum.EXIT; case IfcCableFittingTypeEnum.FANOUT: - //## Handle translation of FANOUT member from IfcCableFittingTypeEnum in property PredefinedType - //TODO: Handle translation of FANOUT member from IfcCableFittingTypeEnum in property PredefinedType - throw new System.NotImplementedException(); - //## - case IfcCableFittingTypeEnum.JUNCTION: + //## Handle translation of FANOUT member from IfcCableFittingTypeEnum in property PredefinedType + return this.GetUserDefined(); + //## + case IfcCableFittingTypeEnum.JUNCTION: return Ifc4.Interfaces.IfcCableFittingTypeEnum.JUNCTION; case IfcCableFittingTypeEnum.TRANSITION: return Ifc4.Interfaces.IfcCableFittingTypeEnum.TRANSITION; diff --git a/Xbim.Ifc4x3/Interfaces/IFC4/IfcCableSegment.cs b/Xbim.Ifc4x3/Interfaces/IFC4/IfcCableSegment.cs index bb5101bdc..33f8be683 100644 --- a/Xbim.Ifc4x3/Interfaces/IFC4/IfcCableSegment.cs +++ b/Xbim.Ifc4x3/Interfaces/IFC4/IfcCableSegment.cs @@ -37,38 +37,32 @@ public partial class @IfcCableSegment : IIfcCableSegment case IfcCableSegmentTypeEnum.CONDUCTORSEGMENT: return Ifc4.Interfaces.IfcCableSegmentTypeEnum.CONDUCTORSEGMENT; case IfcCableSegmentTypeEnum.CONTACTWIRESEGMENT: - //## Handle translation of CONTACTWIRESEGMENT member from IfcCableSegmentTypeEnum in property PredefinedType - //TODO: Handle translation of CONTACTWIRESEGMENT member from IfcCableSegmentTypeEnum in property PredefinedType - throw new System.NotImplementedException(); - //## - case IfcCableSegmentTypeEnum.CORESEGMENT: + //## Handle translation of CONTACTWIRESEGMENT member from IfcCableSegmentTypeEnum in property PredefinedType + return this.GetUserDefined(); + //## + case IfcCableSegmentTypeEnum.CORESEGMENT: return Ifc4.Interfaces.IfcCableSegmentTypeEnum.CORESEGMENT; case IfcCableSegmentTypeEnum.FIBERSEGMENT: - //## Handle translation of FIBERSEGMENT member from IfcCableSegmentTypeEnum in property PredefinedType - //TODO: Handle translation of FIBERSEGMENT member from IfcCableSegmentTypeEnum in property PredefinedType - throw new System.NotImplementedException(); - //## - case IfcCableSegmentTypeEnum.FIBERTUBE: - //## Handle translation of FIBERTUBE member from IfcCableSegmentTypeEnum in property PredefinedType - //TODO: Handle translation of FIBERTUBE member from IfcCableSegmentTypeEnum in property PredefinedType - throw new System.NotImplementedException(); - //## - case IfcCableSegmentTypeEnum.OPTICALCABLESEGMENT: - //## Handle translation of OPTICALCABLESEGMENT member from IfcCableSegmentTypeEnum in property PredefinedType - //TODO: Handle translation of OPTICALCABLESEGMENT member from IfcCableSegmentTypeEnum in property PredefinedType - throw new System.NotImplementedException(); - //## - case IfcCableSegmentTypeEnum.STITCHWIRE: - //## Handle translation of STITCHWIRE member from IfcCableSegmentTypeEnum in property PredefinedType - //TODO: Handle translation of STITCHWIRE member from IfcCableSegmentTypeEnum in property PredefinedType - throw new System.NotImplementedException(); - //## - case IfcCableSegmentTypeEnum.WIREPAIRSEGMENT: - //## Handle translation of WIREPAIRSEGMENT member from IfcCableSegmentTypeEnum in property PredefinedType - //TODO: Handle translation of WIREPAIRSEGMENT member from IfcCableSegmentTypeEnum in property PredefinedType - throw new System.NotImplementedException(); - //## - case IfcCableSegmentTypeEnum.USERDEFINED: + //## Handle translation of FIBERSEGMENT member from IfcCableSegmentTypeEnum in property PredefinedType + return this.GetUserDefined(); + //## + case IfcCableSegmentTypeEnum.FIBERTUBE: + //## Handle translation of FIBERTUBE member from IfcCableSegmentTypeEnum in property PredefinedType + return this.GetUserDefined(); + //## + case IfcCableSegmentTypeEnum.OPTICALCABLESEGMENT: + //## Handle translation of OPTICALCABLESEGMENT member from IfcCableSegmentTypeEnum in property PredefinedType + return this.GetUserDefined(); + //## + case IfcCableSegmentTypeEnum.STITCHWIRE: + //## Handle translation of STITCHWIRE member from IfcCableSegmentTypeEnum in property PredefinedType + return this.GetUserDefined(); + //## + case IfcCableSegmentTypeEnum.WIREPAIRSEGMENT: + //## Handle translation of WIREPAIRSEGMENT member from IfcCableSegmentTypeEnum in property PredefinedType + return this.GetUserDefined(); + //## + case IfcCableSegmentTypeEnum.USERDEFINED: //## Optional custom handling of PredefinedType == .USERDEFINED. //## return Ifc4.Interfaces.IfcCableSegmentTypeEnum.USERDEFINED; diff --git a/Xbim.Ifc4x3/Interfaces/IFC4/IfcCableSegmentType.cs b/Xbim.Ifc4x3/Interfaces/IFC4/IfcCableSegmentType.cs index 00703658f..82c687c0c 100644 --- a/Xbim.Ifc4x3/Interfaces/IFC4/IfcCableSegmentType.cs +++ b/Xbim.Ifc4x3/Interfaces/IFC4/IfcCableSegmentType.cs @@ -37,38 +37,32 @@ Ifc4.Interfaces.IfcCableSegmentTypeEnum IIfcCableSegmentType.PredefinedType case IfcCableSegmentTypeEnum.CONDUCTORSEGMENT: return Ifc4.Interfaces.IfcCableSegmentTypeEnum.CONDUCTORSEGMENT; case IfcCableSegmentTypeEnum.CONTACTWIRESEGMENT: - //## Handle translation of CONTACTWIRESEGMENT member from IfcCableSegmentTypeEnum in property PredefinedType - //TODO: Handle translation of CONTACTWIRESEGMENT member from IfcCableSegmentTypeEnum in property PredefinedType - throw new System.NotImplementedException(); - //## - case IfcCableSegmentTypeEnum.CORESEGMENT: + //## Handle translation of CONTACTWIRESEGMENT member from IfcCableSegmentTypeEnum in property PredefinedType + return this.GetUserDefined(); + //## + case IfcCableSegmentTypeEnum.CORESEGMENT: return Ifc4.Interfaces.IfcCableSegmentTypeEnum.CORESEGMENT; case IfcCableSegmentTypeEnum.FIBERSEGMENT: - //## Handle translation of FIBERSEGMENT member from IfcCableSegmentTypeEnum in property PredefinedType - //TODO: Handle translation of FIBERSEGMENT member from IfcCableSegmentTypeEnum in property PredefinedType - throw new System.NotImplementedException(); - //## - case IfcCableSegmentTypeEnum.FIBERTUBE: - //## Handle translation of FIBERTUBE member from IfcCableSegmentTypeEnum in property PredefinedType - //TODO: Handle translation of FIBERTUBE member from IfcCableSegmentTypeEnum in property PredefinedType - throw new System.NotImplementedException(); - //## - case IfcCableSegmentTypeEnum.OPTICALCABLESEGMENT: - //## Handle translation of OPTICALCABLESEGMENT member from IfcCableSegmentTypeEnum in property PredefinedType - //TODO: Handle translation of OPTICALCABLESEGMENT member from IfcCableSegmentTypeEnum in property PredefinedType - throw new System.NotImplementedException(); - //## - case IfcCableSegmentTypeEnum.STITCHWIRE: - //## Handle translation of STITCHWIRE member from IfcCableSegmentTypeEnum in property PredefinedType - //TODO: Handle translation of STITCHWIRE member from IfcCableSegmentTypeEnum in property PredefinedType - throw new System.NotImplementedException(); - //## - case IfcCableSegmentTypeEnum.WIREPAIRSEGMENT: - //## Handle translation of WIREPAIRSEGMENT member from IfcCableSegmentTypeEnum in property PredefinedType - //TODO: Handle translation of WIREPAIRSEGMENT member from IfcCableSegmentTypeEnum in property PredefinedType - throw new System.NotImplementedException(); - //## - case IfcCableSegmentTypeEnum.USERDEFINED: + //## Handle translation of FIBERSEGMENT member from IfcCableSegmentTypeEnum in property PredefinedType + return this.GetUserDefined(); + //## + case IfcCableSegmentTypeEnum.FIBERTUBE: + //## Handle translation of FIBERTUBE member from IfcCableSegmentTypeEnum in property PredefinedType + return this.GetUserDefined(); + //## + case IfcCableSegmentTypeEnum.OPTICALCABLESEGMENT: + //## Handle translation of OPTICALCABLESEGMENT member from IfcCableSegmentTypeEnum in property PredefinedType + return this.GetUserDefined(); + //## + case IfcCableSegmentTypeEnum.STITCHWIRE: + //## Handle translation of STITCHWIRE member from IfcCableSegmentTypeEnum in property PredefinedType + return this.GetUserDefined(); + //## + case IfcCableSegmentTypeEnum.WIREPAIRSEGMENT: + //## Handle translation of WIREPAIRSEGMENT member from IfcCableSegmentTypeEnum in property PredefinedType + return this.GetUserDefined(); + //## + case IfcCableSegmentTypeEnum.USERDEFINED: //## Optional custom handling of PredefinedType == .USERDEFINED. //## return Ifc4.Interfaces.IfcCableSegmentTypeEnum.USERDEFINED; diff --git a/Xbim.Ifc4x3/Interfaces/IFC4/IfcColumn.cs b/Xbim.Ifc4x3/Interfaces/IFC4/IfcColumn.cs index 958fa0cff..45e58904d 100644 --- a/Xbim.Ifc4x3/Interfaces/IFC4/IfcColumn.cs +++ b/Xbim.Ifc4x3/Interfaces/IFC4/IfcColumn.cs @@ -33,23 +33,20 @@ public partial class @IfcColumn : IIfcColumn case IfcColumnTypeEnum.COLUMN: return Ifc4.Interfaces.IfcColumnTypeEnum.COLUMN; case IfcColumnTypeEnum.PIERSTEM: - //## Handle translation of PIERSTEM member from IfcColumnTypeEnum in property PredefinedType - //TODO: Handle translation of PIERSTEM member from IfcColumnTypeEnum in property PredefinedType - throw new System.NotImplementedException(); - //## - case IfcColumnTypeEnum.PIERSTEM_SEGMENT: - //## Handle translation of PIERSTEM_SEGMENT member from IfcColumnTypeEnum in property PredefinedType - //TODO: Handle translation of PIERSTEM_SEGMENT member from IfcColumnTypeEnum in property PredefinedType - throw new System.NotImplementedException(); - //## - case IfcColumnTypeEnum.PILASTER: + //## Handle translation of PIERSTEM member from IfcColumnTypeEnum in property PredefinedType + return this.GetUserDefined(); + //## + case IfcColumnTypeEnum.PIERSTEM_SEGMENT: + //## Handle translation of PIERSTEM_SEGMENT member from IfcColumnTypeEnum in property PredefinedType + return this.GetUserDefined(); + //## + case IfcColumnTypeEnum.PILASTER: return Ifc4.Interfaces.IfcColumnTypeEnum.PILASTER; case IfcColumnTypeEnum.STANDCOLUMN: - //## Handle translation of STANDCOLUMN member from IfcColumnTypeEnum in property PredefinedType - //TODO: Handle translation of STANDCOLUMN member from IfcColumnTypeEnum in property PredefinedType - throw new System.NotImplementedException(); - //## - case IfcColumnTypeEnum.USERDEFINED: + //## Handle translation of STANDCOLUMN member from IfcColumnTypeEnum in property PredefinedType + return this.GetUserDefined(); + //## + case IfcColumnTypeEnum.USERDEFINED: //## Optional custom handling of PredefinedType == .USERDEFINED. //## return Ifc4.Interfaces.IfcColumnTypeEnum.USERDEFINED; diff --git a/Xbim.Ifc4x3/Interfaces/IFC4/IfcColumnType.cs b/Xbim.Ifc4x3/Interfaces/IFC4/IfcColumnType.cs index e70b0ecb6..f3545af0a 100644 --- a/Xbim.Ifc4x3/Interfaces/IFC4/IfcColumnType.cs +++ b/Xbim.Ifc4x3/Interfaces/IFC4/IfcColumnType.cs @@ -33,23 +33,20 @@ Ifc4.Interfaces.IfcColumnTypeEnum IIfcColumnType.PredefinedType case IfcColumnTypeEnum.COLUMN: return Ifc4.Interfaces.IfcColumnTypeEnum.COLUMN; case IfcColumnTypeEnum.PIERSTEM: - //## Handle translation of PIERSTEM member from IfcColumnTypeEnum in property PredefinedType - //TODO: Handle translation of PIERSTEM member from IfcColumnTypeEnum in property PredefinedType - throw new System.NotImplementedException(); - //## - case IfcColumnTypeEnum.PIERSTEM_SEGMENT: - //## Handle translation of PIERSTEM_SEGMENT member from IfcColumnTypeEnum in property PredefinedType - //TODO: Handle translation of PIERSTEM_SEGMENT member from IfcColumnTypeEnum in property PredefinedType - throw new System.NotImplementedException(); - //## - case IfcColumnTypeEnum.PILASTER: + //## Handle translation of PIERSTEM member from IfcColumnTypeEnum in property PredefinedType + return this.GetUserDefined(); + //## + case IfcColumnTypeEnum.PIERSTEM_SEGMENT: + //## Handle translation of PIERSTEM_SEGMENT member from IfcColumnTypeEnum in property PredefinedType + return this.GetUserDefined(); + //## + case IfcColumnTypeEnum.PILASTER: return Ifc4.Interfaces.IfcColumnTypeEnum.PILASTER; case IfcColumnTypeEnum.STANDCOLUMN: - //## Handle translation of STANDCOLUMN member from IfcColumnTypeEnum in property PredefinedType - //TODO: Handle translation of STANDCOLUMN member from IfcColumnTypeEnum in property PredefinedType - throw new System.NotImplementedException(); - //## - case IfcColumnTypeEnum.USERDEFINED: + //## Handle translation of STANDCOLUMN member from IfcColumnTypeEnum in property PredefinedType + return this.GetUserDefined(); + //## + case IfcColumnTypeEnum.USERDEFINED: //## Optional custom handling of PredefinedType == .USERDEFINED. //## return Ifc4.Interfaces.IfcColumnTypeEnum.USERDEFINED; diff --git a/Xbim.Ifc4x3/Interfaces/IFC4/IfcCommunicationsAppliance.cs b/Xbim.Ifc4x3/Interfaces/IFC4/IfcCommunicationsAppliance.cs index 5cac472af..91422d7a4 100644 --- a/Xbim.Ifc4x3/Interfaces/IFC4/IfcCommunicationsAppliance.cs +++ b/Xbim.Ifc4x3/Interfaces/IFC4/IfcCommunicationsAppliance.cs @@ -33,32 +33,28 @@ public partial class @IfcCommunicationsAppliance : IIfcCommunicationsAppliance case IfcCommunicationsApplianceTypeEnum.ANTENNA: return Ifc4.Interfaces.IfcCommunicationsApplianceTypeEnum.ANTENNA; case IfcCommunicationsApplianceTypeEnum.AUTOMATON: - //## Handle translation of AUTOMATON member from IfcCommunicationsApplianceTypeEnum in property PredefinedType - //TODO: Handle translation of AUTOMATON member from IfcCommunicationsApplianceTypeEnum in property PredefinedType - throw new System.NotImplementedException(); - //## - case IfcCommunicationsApplianceTypeEnum.COMPUTER: + //## Handle translation of AUTOMATON member from IfcCommunicationsApplianceTypeEnum in property PredefinedType + return this.GetUserDefined(); + //## + case IfcCommunicationsApplianceTypeEnum.COMPUTER: return Ifc4.Interfaces.IfcCommunicationsApplianceTypeEnum.COMPUTER; case IfcCommunicationsApplianceTypeEnum.FAX: return Ifc4.Interfaces.IfcCommunicationsApplianceTypeEnum.FAX; case IfcCommunicationsApplianceTypeEnum.GATEWAY: return Ifc4.Interfaces.IfcCommunicationsApplianceTypeEnum.GATEWAY; case IfcCommunicationsApplianceTypeEnum.INTELLIGENTPERIPHERAL: - //## Handle translation of INTELLIGENTPERIPHERAL member from IfcCommunicationsApplianceTypeEnum in property PredefinedType - //TODO: Handle translation of INTELLIGENTPERIPHERAL member from IfcCommunicationsApplianceTypeEnum in property PredefinedType - throw new System.NotImplementedException(); - //## - case IfcCommunicationsApplianceTypeEnum.IPNETWORKEQUIPMENT: - //## Handle translation of IPNETWORKEQUIPMENT member from IfcCommunicationsApplianceTypeEnum in property PredefinedType - //TODO: Handle translation of IPNETWORKEQUIPMENT member from IfcCommunicationsApplianceTypeEnum in property PredefinedType - throw new System.NotImplementedException(); - //## - case IfcCommunicationsApplianceTypeEnum.LINESIDEELECTRONICUNIT: - //## Handle translation of LINESIDEELECTRONICUNIT member from IfcCommunicationsApplianceTypeEnum in property PredefinedType - //TODO: Handle translation of LINESIDEELECTRONICUNIT member from IfcCommunicationsApplianceTypeEnum in property PredefinedType - throw new System.NotImplementedException(); - //## - case IfcCommunicationsApplianceTypeEnum.MODEM: + //## Handle translation of INTELLIGENTPERIPHERAL member from IfcCommunicationsApplianceTypeEnum in property PredefinedType + return this.GetUserDefined(); + //## + case IfcCommunicationsApplianceTypeEnum.IPNETWORKEQUIPMENT: + //## Handle translation of IPNETWORKEQUIPMENT member from IfcCommunicationsApplianceTypeEnum in property PredefinedType + return this.GetUserDefined(); + //## + case IfcCommunicationsApplianceTypeEnum.LINESIDEELECTRONICUNIT: + //## Handle translation of LINESIDEELECTRONICUNIT member from IfcCommunicationsApplianceTypeEnum in property PredefinedType + return this.GetUserDefined(); + //## + case IfcCommunicationsApplianceTypeEnum.MODEM: return Ifc4.Interfaces.IfcCommunicationsApplianceTypeEnum.MODEM; case IfcCommunicationsApplianceTypeEnum.NETWORKAPPLIANCE: return Ifc4.Interfaces.IfcCommunicationsApplianceTypeEnum.NETWORKAPPLIANCE; @@ -67,54 +63,46 @@ public partial class @IfcCommunicationsAppliance : IIfcCommunicationsAppliance case IfcCommunicationsApplianceTypeEnum.NETWORKHUB: return Ifc4.Interfaces.IfcCommunicationsApplianceTypeEnum.NETWORKHUB; case IfcCommunicationsApplianceTypeEnum.OPTICALLINETERMINAL: - //## Handle translation of OPTICALLINETERMINAL member from IfcCommunicationsApplianceTypeEnum in property PredefinedType - //TODO: Handle translation of OPTICALLINETERMINAL member from IfcCommunicationsApplianceTypeEnum in property PredefinedType - throw new System.NotImplementedException(); - //## - case IfcCommunicationsApplianceTypeEnum.OPTICALNETWORKUNIT: - //## Handle translation of OPTICALNETWORKUNIT member from IfcCommunicationsApplianceTypeEnum in property PredefinedType - //TODO: Handle translation of OPTICALNETWORKUNIT member from IfcCommunicationsApplianceTypeEnum in property PredefinedType - throw new System.NotImplementedException(); - //## - case IfcCommunicationsApplianceTypeEnum.PRINTER: + //## Handle translation of OPTICALLINETERMINAL member from IfcCommunicationsApplianceTypeEnum in property PredefinedType + return this.GetUserDefined(); + //## + case IfcCommunicationsApplianceTypeEnum.OPTICALNETWORKUNIT: + //## Handle translation of OPTICALNETWORKUNIT member from IfcCommunicationsApplianceTypeEnum in property PredefinedType + return this.GetUserDefined(); + //## + case IfcCommunicationsApplianceTypeEnum.PRINTER: return Ifc4.Interfaces.IfcCommunicationsApplianceTypeEnum.PRINTER; case IfcCommunicationsApplianceTypeEnum.RADIOBLOCKCENTER: - //## Handle translation of RADIOBLOCKCENTER member from IfcCommunicationsApplianceTypeEnum in property PredefinedType - //TODO: Handle translation of RADIOBLOCKCENTER member from IfcCommunicationsApplianceTypeEnum in property PredefinedType - throw new System.NotImplementedException(); - //## - case IfcCommunicationsApplianceTypeEnum.REPEATER: + //## Handle translation of RADIOBLOCKCENTER member from IfcCommunicationsApplianceTypeEnum in property PredefinedType + return this.GetUserDefined(); + //## + case IfcCommunicationsApplianceTypeEnum.REPEATER: return Ifc4.Interfaces.IfcCommunicationsApplianceTypeEnum.REPEATER; case IfcCommunicationsApplianceTypeEnum.ROUTER: return Ifc4.Interfaces.IfcCommunicationsApplianceTypeEnum.ROUTER; case IfcCommunicationsApplianceTypeEnum.SCANNER: return Ifc4.Interfaces.IfcCommunicationsApplianceTypeEnum.SCANNER; case IfcCommunicationsApplianceTypeEnum.TELECOMMAND: - //## Handle translation of TELECOMMAND member from IfcCommunicationsApplianceTypeEnum in property PredefinedType - //TODO: Handle translation of TELECOMMAND member from IfcCommunicationsApplianceTypeEnum in property PredefinedType - throw new System.NotImplementedException(); - //## - case IfcCommunicationsApplianceTypeEnum.TELEPHONYEXCHANGE: - //## Handle translation of TELEPHONYEXCHANGE member from IfcCommunicationsApplianceTypeEnum in property PredefinedType - //TODO: Handle translation of TELEPHONYEXCHANGE member from IfcCommunicationsApplianceTypeEnum in property PredefinedType - throw new System.NotImplementedException(); - //## - case IfcCommunicationsApplianceTypeEnum.TRANSITIONCOMPONENT: - //## Handle translation of TRANSITIONCOMPONENT member from IfcCommunicationsApplianceTypeEnum in property PredefinedType - //TODO: Handle translation of TRANSITIONCOMPONENT member from IfcCommunicationsApplianceTypeEnum in property PredefinedType - throw new System.NotImplementedException(); - //## - case IfcCommunicationsApplianceTypeEnum.TRANSPONDER: - //## Handle translation of TRANSPONDER member from IfcCommunicationsApplianceTypeEnum in property PredefinedType - //TODO: Handle translation of TRANSPONDER member from IfcCommunicationsApplianceTypeEnum in property PredefinedType - throw new System.NotImplementedException(); - //## - case IfcCommunicationsApplianceTypeEnum.TRANSPORTEQUIPMENT: - //## Handle translation of TRANSPORTEQUIPMENT member from IfcCommunicationsApplianceTypeEnum in property PredefinedType - //TODO: Handle translation of TRANSPORTEQUIPMENT member from IfcCommunicationsApplianceTypeEnum in property PredefinedType - throw new System.NotImplementedException(); - //## - case IfcCommunicationsApplianceTypeEnum.USERDEFINED: + //## Handle translation of TELECOMMAND member from IfcCommunicationsApplianceTypeEnum in property PredefinedType + return this.GetUserDefined(); + //## + case IfcCommunicationsApplianceTypeEnum.TELEPHONYEXCHANGE: + //## Handle translation of TELEPHONYEXCHANGE member from IfcCommunicationsApplianceTypeEnum in property PredefinedType + return this.GetUserDefined(); + //## + case IfcCommunicationsApplianceTypeEnum.TRANSITIONCOMPONENT: + //## Handle translation of TRANSITIONCOMPONENT member from IfcCommunicationsApplianceTypeEnum in property PredefinedType + return this.GetUserDefined(); + //## + case IfcCommunicationsApplianceTypeEnum.TRANSPONDER: + //## Handle translation of TRANSPONDER member from IfcCommunicationsApplianceTypeEnum in property PredefinedType + return this.GetUserDefined(); + //## + case IfcCommunicationsApplianceTypeEnum.TRANSPORTEQUIPMENT: + //## Handle translation of TRANSPORTEQUIPMENT member from IfcCommunicationsApplianceTypeEnum in property PredefinedType + return this.GetUserDefined(); + //## + case IfcCommunicationsApplianceTypeEnum.USERDEFINED: //## Optional custom handling of PredefinedType == .USERDEFINED. //## return Ifc4.Interfaces.IfcCommunicationsApplianceTypeEnum.USERDEFINED; diff --git a/Xbim.Ifc4x3/Interfaces/IFC4/IfcCommunicationsApplianceType.cs b/Xbim.Ifc4x3/Interfaces/IFC4/IfcCommunicationsApplianceType.cs index 394f0a73d..3f68aaf04 100644 --- a/Xbim.Ifc4x3/Interfaces/IFC4/IfcCommunicationsApplianceType.cs +++ b/Xbim.Ifc4x3/Interfaces/IFC4/IfcCommunicationsApplianceType.cs @@ -33,32 +33,28 @@ Ifc4.Interfaces.IfcCommunicationsApplianceTypeEnum IIfcCommunicationsApplianceTy case IfcCommunicationsApplianceTypeEnum.ANTENNA: return Ifc4.Interfaces.IfcCommunicationsApplianceTypeEnum.ANTENNA; case IfcCommunicationsApplianceTypeEnum.AUTOMATON: - //## Handle translation of AUTOMATON member from IfcCommunicationsApplianceTypeEnum in property PredefinedType - //TODO: Handle translation of AUTOMATON member from IfcCommunicationsApplianceTypeEnum in property PredefinedType - throw new System.NotImplementedException(); - //## - case IfcCommunicationsApplianceTypeEnum.COMPUTER: + //## Handle translation of AUTOMATON member from IfcCommunicationsApplianceTypeEnum in property PredefinedType + return this.GetUserDefined(); + //## + case IfcCommunicationsApplianceTypeEnum.COMPUTER: return Ifc4.Interfaces.IfcCommunicationsApplianceTypeEnum.COMPUTER; case IfcCommunicationsApplianceTypeEnum.FAX: return Ifc4.Interfaces.IfcCommunicationsApplianceTypeEnum.FAX; case IfcCommunicationsApplianceTypeEnum.GATEWAY: return Ifc4.Interfaces.IfcCommunicationsApplianceTypeEnum.GATEWAY; case IfcCommunicationsApplianceTypeEnum.INTELLIGENTPERIPHERAL: - //## Handle translation of INTELLIGENTPERIPHERAL member from IfcCommunicationsApplianceTypeEnum in property PredefinedType - //TODO: Handle translation of INTELLIGENTPERIPHERAL member from IfcCommunicationsApplianceTypeEnum in property PredefinedType - throw new System.NotImplementedException(); - //## - case IfcCommunicationsApplianceTypeEnum.IPNETWORKEQUIPMENT: - //## Handle translation of IPNETWORKEQUIPMENT member from IfcCommunicationsApplianceTypeEnum in property PredefinedType - //TODO: Handle translation of IPNETWORKEQUIPMENT member from IfcCommunicationsApplianceTypeEnum in property PredefinedType - throw new System.NotImplementedException(); - //## - case IfcCommunicationsApplianceTypeEnum.LINESIDEELECTRONICUNIT: - //## Handle translation of LINESIDEELECTRONICUNIT member from IfcCommunicationsApplianceTypeEnum in property PredefinedType - //TODO: Handle translation of LINESIDEELECTRONICUNIT member from IfcCommunicationsApplianceTypeEnum in property PredefinedType - throw new System.NotImplementedException(); - //## - case IfcCommunicationsApplianceTypeEnum.MODEM: + //## Handle translation of INTELLIGENTPERIPHERAL member from IfcCommunicationsApplianceTypeEnum in property PredefinedType + return this.GetUserDefined(); + //## + case IfcCommunicationsApplianceTypeEnum.IPNETWORKEQUIPMENT: + //## Handle translation of IPNETWORKEQUIPMENT member from IfcCommunicationsApplianceTypeEnum in property PredefinedType + return this.GetUserDefined(); + //## + case IfcCommunicationsApplianceTypeEnum.LINESIDEELECTRONICUNIT: + //## Handle translation of LINESIDEELECTRONICUNIT member from IfcCommunicationsApplianceTypeEnum in property PredefinedType + return this.GetUserDefined(); + //## + case IfcCommunicationsApplianceTypeEnum.MODEM: return Ifc4.Interfaces.IfcCommunicationsApplianceTypeEnum.MODEM; case IfcCommunicationsApplianceTypeEnum.NETWORKAPPLIANCE: return Ifc4.Interfaces.IfcCommunicationsApplianceTypeEnum.NETWORKAPPLIANCE; @@ -67,54 +63,46 @@ Ifc4.Interfaces.IfcCommunicationsApplianceTypeEnum IIfcCommunicationsApplianceTy case IfcCommunicationsApplianceTypeEnum.NETWORKHUB: return Ifc4.Interfaces.IfcCommunicationsApplianceTypeEnum.NETWORKHUB; case IfcCommunicationsApplianceTypeEnum.OPTICALLINETERMINAL: - //## Handle translation of OPTICALLINETERMINAL member from IfcCommunicationsApplianceTypeEnum in property PredefinedType - //TODO: Handle translation of OPTICALLINETERMINAL member from IfcCommunicationsApplianceTypeEnum in property PredefinedType - throw new System.NotImplementedException(); - //## - case IfcCommunicationsApplianceTypeEnum.OPTICALNETWORKUNIT: - //## Handle translation of OPTICALNETWORKUNIT member from IfcCommunicationsApplianceTypeEnum in property PredefinedType - //TODO: Handle translation of OPTICALNETWORKUNIT member from IfcCommunicationsApplianceTypeEnum in property PredefinedType - throw new System.NotImplementedException(); - //## - case IfcCommunicationsApplianceTypeEnum.PRINTER: + //## Handle translation of OPTICALLINETERMINAL member from IfcCommunicationsApplianceTypeEnum in property PredefinedType + return this.GetUserDefined(); + //## + case IfcCommunicationsApplianceTypeEnum.OPTICALNETWORKUNIT: + //## Handle translation of OPTICALNETWORKUNIT member from IfcCommunicationsApplianceTypeEnum in property PredefinedType + return this.GetUserDefined(); + //## + case IfcCommunicationsApplianceTypeEnum.PRINTER: return Ifc4.Interfaces.IfcCommunicationsApplianceTypeEnum.PRINTER; case IfcCommunicationsApplianceTypeEnum.RADIOBLOCKCENTER: - //## Handle translation of RADIOBLOCKCENTER member from IfcCommunicationsApplianceTypeEnum in property PredefinedType - //TODO: Handle translation of RADIOBLOCKCENTER member from IfcCommunicationsApplianceTypeEnum in property PredefinedType - throw new System.NotImplementedException(); - //## - case IfcCommunicationsApplianceTypeEnum.REPEATER: + //## Handle translation of RADIOBLOCKCENTER member from IfcCommunicationsApplianceTypeEnum in property PredefinedType + return this.GetUserDefined(); + //## + case IfcCommunicationsApplianceTypeEnum.REPEATER: return Ifc4.Interfaces.IfcCommunicationsApplianceTypeEnum.REPEATER; case IfcCommunicationsApplianceTypeEnum.ROUTER: return Ifc4.Interfaces.IfcCommunicationsApplianceTypeEnum.ROUTER; case IfcCommunicationsApplianceTypeEnum.SCANNER: return Ifc4.Interfaces.IfcCommunicationsApplianceTypeEnum.SCANNER; case IfcCommunicationsApplianceTypeEnum.TELECOMMAND: - //## Handle translation of TELECOMMAND member from IfcCommunicationsApplianceTypeEnum in property PredefinedType - //TODO: Handle translation of TELECOMMAND member from IfcCommunicationsApplianceTypeEnum in property PredefinedType - throw new System.NotImplementedException(); - //## - case IfcCommunicationsApplianceTypeEnum.TELEPHONYEXCHANGE: - //## Handle translation of TELEPHONYEXCHANGE member from IfcCommunicationsApplianceTypeEnum in property PredefinedType - //TODO: Handle translation of TELEPHONYEXCHANGE member from IfcCommunicationsApplianceTypeEnum in property PredefinedType - throw new System.NotImplementedException(); - //## - case IfcCommunicationsApplianceTypeEnum.TRANSITIONCOMPONENT: - //## Handle translation of TRANSITIONCOMPONENT member from IfcCommunicationsApplianceTypeEnum in property PredefinedType - //TODO: Handle translation of TRANSITIONCOMPONENT member from IfcCommunicationsApplianceTypeEnum in property PredefinedType - throw new System.NotImplementedException(); - //## - case IfcCommunicationsApplianceTypeEnum.TRANSPONDER: - //## Handle translation of TRANSPONDER member from IfcCommunicationsApplianceTypeEnum in property PredefinedType - //TODO: Handle translation of TRANSPONDER member from IfcCommunicationsApplianceTypeEnum in property PredefinedType - throw new System.NotImplementedException(); - //## - case IfcCommunicationsApplianceTypeEnum.TRANSPORTEQUIPMENT: - //## Handle translation of TRANSPORTEQUIPMENT member from IfcCommunicationsApplianceTypeEnum in property PredefinedType - //TODO: Handle translation of TRANSPORTEQUIPMENT member from IfcCommunicationsApplianceTypeEnum in property PredefinedType - throw new System.NotImplementedException(); - //## - case IfcCommunicationsApplianceTypeEnum.USERDEFINED: + //## Handle translation of TELECOMMAND member from IfcCommunicationsApplianceTypeEnum in property PredefinedType + return this.GetUserDefined(); + //## + case IfcCommunicationsApplianceTypeEnum.TELEPHONYEXCHANGE: + //## Handle translation of TELEPHONYEXCHANGE member from IfcCommunicationsApplianceTypeEnum in property PredefinedType + return this.GetUserDefined(); + //## + case IfcCommunicationsApplianceTypeEnum.TRANSITIONCOMPONENT: + //## Handle translation of TRANSITIONCOMPONENT member from IfcCommunicationsApplianceTypeEnum in property PredefinedType + return this.GetUserDefined(); + //## + case IfcCommunicationsApplianceTypeEnum.TRANSPONDER: + //## Handle translation of TRANSPONDER member from IfcCommunicationsApplianceTypeEnum in property PredefinedType + return this.GetUserDefined(); + //## + case IfcCommunicationsApplianceTypeEnum.TRANSPORTEQUIPMENT: + //## Handle translation of TRANSPORTEQUIPMENT member from IfcCommunicationsApplianceTypeEnum in property PredefinedType + return this.GetUserDefined(); + //## + case IfcCommunicationsApplianceTypeEnum.USERDEFINED: //## Optional custom handling of PredefinedType == .USERDEFINED. //## return Ifc4.Interfaces.IfcCommunicationsApplianceTypeEnum.USERDEFINED; diff --git a/Xbim.Ifc4x3/Interfaces/IFC4/IfcCompositeCurveOnSurface.cs b/Xbim.Ifc4x3/Interfaces/IFC4/IfcCompositeCurveOnSurface.cs index ecd4bac27..a33aa1e5f 100644 --- a/Xbim.Ifc4x3/Interfaces/IFC4/IfcCompositeCurveOnSurface.cs +++ b/Xbim.Ifc4x3/Interfaces/IFC4/IfcCompositeCurveOnSurface.cs @@ -24,11 +24,10 @@ List IIfcCompositeCurveOnSurface.BasisSurface { get { - //## Getter for BasisSurface in an interface - //TODO: Implement getter for derived attribute BasisSurface in an interface - throw new System.NotImplementedException(); - //## - } + //## Getter for BasisSurface in an interface + return IfcGetBasisSurface(this).Cast().ToList(); + //## + } } //## Custom code diff --git a/Xbim.Ifc4x3/Interfaces/IFC4/IfcCoordinateReferenceSystem.cs b/Xbim.Ifc4x3/Interfaces/IFC4/IfcCoordinateReferenceSystem.cs index 4cc59a518..d3b1f00b1 100644 --- a/Xbim.Ifc4x3/Interfaces/IFC4/IfcCoordinateReferenceSystem.cs +++ b/Xbim.Ifc4x3/Interfaces/IFC4/IfcCoordinateReferenceSystem.cs @@ -71,26 +71,7 @@ Ifc4.MeasureResource.IfcLabel IIfcCoordinateReferenceSystem.Name } } - [CrossSchemaAttribute(typeof(IIfcCoordinateReferenceSystem), 4)] - Ifc4.MeasureResource.IfcIdentifier? IIfcCoordinateReferenceSystem.VerticalDatum - { - get - { - //## Handle return of VerticalDatum for which no match was found - //TODO: Handle return of VerticalDatum for which no match was found - throw new System.NotImplementedException(); - //## - } - set - { - //## Handle setting of VerticalDatum for which no match was found - //TODO: Handle setting of VerticalDatum for which no match was found - throw new System.NotImplementedException(); - //## - NotifyPropertyChanged("VerticalDatum"); - - } - } + IEnumerable IIfcCoordinateReferenceSystem.HasCoordinateOperation { get @@ -98,7 +79,33 @@ IEnumerable IIfcCoordinateReferenceSystem.HasCoordinate return Model.Instances.Where(e => (e.SourceCRS as IfcCoordinateReferenceSystem) == this, "SourceCRS", this); } } - //## Custom code - //## - } + //## Custom code + + // IfcCoordinateReferenceSystem was made abstract in 4x3. VerticalDatum has been promoted to IfcProjectedCRS + // Will be null for IfcGeographicCRS + [CrossSchemaAttribute(typeof(IIfcCoordinateReferenceSystem), 4)] + Ifc4.MeasureResource.IfcIdentifier? IIfcCoordinateReferenceSystem.VerticalDatum + { + get + { + if (this is IfcProjectedCRS projected && projected.VerticalDatum.HasValue) + { + return new Ifc4.MeasureResource.IfcIdentifier(projected.VerticalDatum.ToString()); + } + return null; + } + set + { + if (this is IfcProjectedCRS projected) + { + if (value != null) + { + projected.VerticalDatum = value.ToString(); + NotifyPropertyChanged("VerticalDatum"); + } + } + } + } + //## + } } \ No newline at end of file diff --git a/Xbim.Ifc4x3/Interfaces/IFC4/IfcCovering.cs b/Xbim.Ifc4x3/Interfaces/IFC4/IfcCovering.cs index 7c8719040..f89991a2f 100644 --- a/Xbim.Ifc4x3/Interfaces/IFC4/IfcCovering.cs +++ b/Xbim.Ifc4x3/Interfaces/IFC4/IfcCovering.cs @@ -35,11 +35,10 @@ public partial class @IfcCovering : IIfcCovering case IfcCoveringTypeEnum.CLADDING: return Ifc4.Interfaces.IfcCoveringTypeEnum.CLADDING; case IfcCoveringTypeEnum.COPING: - //## Handle translation of COPING member from IfcCoveringTypeEnum in property PredefinedType - //TODO: Handle translation of COPING member from IfcCoveringTypeEnum in property PredefinedType - throw new System.NotImplementedException(); - //## - case IfcCoveringTypeEnum.FLOORING: + //## Handle translation of COPING member from IfcCoveringTypeEnum in property PredefinedType + return this.GetUserDefined(); + //## + case IfcCoveringTypeEnum.FLOORING: return Ifc4.Interfaces.IfcCoveringTypeEnum.FLOORING; case IfcCoveringTypeEnum.INSULATION: return Ifc4.Interfaces.IfcCoveringTypeEnum.INSULATION; @@ -55,8 +54,7 @@ public partial class @IfcCovering : IIfcCovering return Ifc4.Interfaces.IfcCoveringTypeEnum.SLEEVING; case IfcCoveringTypeEnum.TOPPING: //## Handle translation of TOPPING member from IfcCoveringTypeEnum in property PredefinedType - //TODO: Handle translation of TOPPING member from IfcCoveringTypeEnum in property PredefinedType - throw new System.NotImplementedException(); + return this.GetUserDefined(); //## case IfcCoveringTypeEnum.WRAPPING: return Ifc4.Interfaces.IfcCoveringTypeEnum.WRAPPING; diff --git a/Xbim.Ifc4x3/Interfaces/IFC4/IfcCoveringType.cs b/Xbim.Ifc4x3/Interfaces/IFC4/IfcCoveringType.cs index e4a3b3adf..d7369e8dc 100644 --- a/Xbim.Ifc4x3/Interfaces/IFC4/IfcCoveringType.cs +++ b/Xbim.Ifc4x3/Interfaces/IFC4/IfcCoveringType.cs @@ -36,8 +36,7 @@ Ifc4.Interfaces.IfcCoveringTypeEnum IIfcCoveringType.PredefinedType return Ifc4.Interfaces.IfcCoveringTypeEnum.CLADDING; case IfcCoveringTypeEnum.COPING: //## Handle translation of COPING member from IfcCoveringTypeEnum in property PredefinedType - //TODO: Handle translation of COPING member from IfcCoveringTypeEnum in property PredefinedType - throw new System.NotImplementedException(); + return this.GetUserDefined(); //## case IfcCoveringTypeEnum.FLOORING: return Ifc4.Interfaces.IfcCoveringTypeEnum.FLOORING; @@ -55,8 +54,7 @@ Ifc4.Interfaces.IfcCoveringTypeEnum IIfcCoveringType.PredefinedType return Ifc4.Interfaces.IfcCoveringTypeEnum.SLEEVING; case IfcCoveringTypeEnum.TOPPING: //## Handle translation of TOPPING member from IfcCoveringTypeEnum in property PredefinedType - //TODO: Handle translation of TOPPING member from IfcCoveringTypeEnum in property PredefinedType - throw new System.NotImplementedException(); + return this.GetUserDefined(); //## case IfcCoveringTypeEnum.WRAPPING: return Ifc4.Interfaces.IfcCoveringTypeEnum.WRAPPING; diff --git a/Xbim.Ifc4x3/Interfaces/IFC4/IfcDiscreteAccessory.cs b/Xbim.Ifc4x3/Interfaces/IFC4/IfcDiscreteAccessory.cs index fa3b64495..5867a3864 100644 --- a/Xbim.Ifc4x3/Interfaces/IFC4/IfcDiscreteAccessory.cs +++ b/Xbim.Ifc4x3/Interfaces/IFC4/IfcDiscreteAccessory.cs @@ -34,97 +34,79 @@ public partial class @IfcDiscreteAccessory : IIfcDiscreteAccessory return Ifc4.Interfaces.IfcDiscreteAccessoryTypeEnum.ANCHORPLATE; case IfcDiscreteAccessoryTypeEnum.BIRDPROTECTION: //## Handle translation of BIRDPROTECTION member from IfcDiscreteAccessoryTypeEnum in property PredefinedType - //TODO: Handle translation of BIRDPROTECTION member from IfcDiscreteAccessoryTypeEnum in property PredefinedType - throw new System.NotImplementedException(); + return this.GetUserDefined(); //## case IfcDiscreteAccessoryTypeEnum.BRACKET: return Ifc4.Interfaces.IfcDiscreteAccessoryTypeEnum.BRACKET; case IfcDiscreteAccessoryTypeEnum.CABLEARRANGER: //## Handle translation of CABLEARRANGER member from IfcDiscreteAccessoryTypeEnum in property PredefinedType - //TODO: Handle translation of CABLEARRANGER member from IfcDiscreteAccessoryTypeEnum in property PredefinedType - throw new System.NotImplementedException(); + return this.GetUserDefined(); //## case IfcDiscreteAccessoryTypeEnum.ELASTIC_CUSHION: //## Handle translation of ELASTIC_CUSHION member from IfcDiscreteAccessoryTypeEnum in property PredefinedType - //TODO: Handle translation of ELASTIC_CUSHION member from IfcDiscreteAccessoryTypeEnum in property PredefinedType - throw new System.NotImplementedException(); + return this.GetUserDefined(); //## case IfcDiscreteAccessoryTypeEnum.EXPANSION_JOINT_DEVICE: //## Handle translation of EXPANSION_JOINT_DEVICE member from IfcDiscreteAccessoryTypeEnum in property PredefinedType - //TODO: Handle translation of EXPANSION_JOINT_DEVICE member from IfcDiscreteAccessoryTypeEnum in property PredefinedType - throw new System.NotImplementedException(); + return this.GetUserDefined(); //## case IfcDiscreteAccessoryTypeEnum.FILLER: //## Handle translation of FILLER member from IfcDiscreteAccessoryTypeEnum in property PredefinedType - //TODO: Handle translation of FILLER member from IfcDiscreteAccessoryTypeEnum in property PredefinedType - throw new System.NotImplementedException(); + return this.GetUserDefined(); //## case IfcDiscreteAccessoryTypeEnum.FLASHING: //## Handle translation of FLASHING member from IfcDiscreteAccessoryTypeEnum in property PredefinedType - //TODO: Handle translation of FLASHING member from IfcDiscreteAccessoryTypeEnum in property PredefinedType - throw new System.NotImplementedException(); + return this.GetUserDefined(); //## case IfcDiscreteAccessoryTypeEnum.INSULATOR: //## Handle translation of INSULATOR member from IfcDiscreteAccessoryTypeEnum in property PredefinedType - //TODO: Handle translation of INSULATOR member from IfcDiscreteAccessoryTypeEnum in property PredefinedType - throw new System.NotImplementedException(); + return this.GetUserDefined(); //## case IfcDiscreteAccessoryTypeEnum.LOCK: //## Handle translation of LOCK member from IfcDiscreteAccessoryTypeEnum in property PredefinedType - //TODO: Handle translation of LOCK member from IfcDiscreteAccessoryTypeEnum in property PredefinedType - throw new System.NotImplementedException(); + return this.GetUserDefined(); //## case IfcDiscreteAccessoryTypeEnum.PANEL_STRENGTHENING: //## Handle translation of PANEL_STRENGTHENING member from IfcDiscreteAccessoryTypeEnum in property PredefinedType - //TODO: Handle translation of PANEL_STRENGTHENING member from IfcDiscreteAccessoryTypeEnum in property PredefinedType - throw new System.NotImplementedException(); + return this.GetUserDefined(); //## case IfcDiscreteAccessoryTypeEnum.POINTMACHINEMOUNTINGDEVICE: //## Handle translation of POINTMACHINEMOUNTINGDEVICE member from IfcDiscreteAccessoryTypeEnum in property PredefinedType - //TODO: Handle translation of POINTMACHINEMOUNTINGDEVICE member from IfcDiscreteAccessoryTypeEnum in property PredefinedType - throw new System.NotImplementedException(); + return this.GetUserDefined(); //## case IfcDiscreteAccessoryTypeEnum.POINT_MACHINE_LOCKING_DEVICE: //## Handle translation of POINT_MACHINE_LOCKING_DEVICE member from IfcDiscreteAccessoryTypeEnum in property PredefinedType - //TODO: Handle translation of POINT_MACHINE_LOCKING_DEVICE member from IfcDiscreteAccessoryTypeEnum in property PredefinedType - throw new System.NotImplementedException(); + return this.GetUserDefined(); //## case IfcDiscreteAccessoryTypeEnum.RAILBRACE: //## Handle translation of RAILBRACE member from IfcDiscreteAccessoryTypeEnum in property PredefinedType - //TODO: Handle translation of RAILBRACE member from IfcDiscreteAccessoryTypeEnum in property PredefinedType - throw new System.NotImplementedException(); + return this.GetUserDefined(); //## case IfcDiscreteAccessoryTypeEnum.RAILPAD: //## Handle translation of RAILPAD member from IfcDiscreteAccessoryTypeEnum in property PredefinedType - //TODO: Handle translation of RAILPAD member from IfcDiscreteAccessoryTypeEnum in property PredefinedType - throw new System.NotImplementedException(); + return this.GetUserDefined(); //## case IfcDiscreteAccessoryTypeEnum.RAIL_LUBRICATION: //## Handle translation of RAIL_LUBRICATION member from IfcDiscreteAccessoryTypeEnum in property PredefinedType - //TODO: Handle translation of RAIL_LUBRICATION member from IfcDiscreteAccessoryTypeEnum in property PredefinedType - throw new System.NotImplementedException(); + return this.GetUserDefined(); //## case IfcDiscreteAccessoryTypeEnum.RAIL_MECHANICAL_EQUIPMENT: //## Handle translation of RAIL_MECHANICAL_EQUIPMENT member from IfcDiscreteAccessoryTypeEnum in property PredefinedType - //TODO: Handle translation of RAIL_MECHANICAL_EQUIPMENT member from IfcDiscreteAccessoryTypeEnum in property PredefinedType - throw new System.NotImplementedException(); + return this.GetUserDefined(); //## case IfcDiscreteAccessoryTypeEnum.SHOE: return Ifc4.Interfaces.IfcDiscreteAccessoryTypeEnum.SHOE; case IfcDiscreteAccessoryTypeEnum.SLIDINGCHAIR: //## Handle translation of SLIDINGCHAIR member from IfcDiscreteAccessoryTypeEnum in property PredefinedType - //TODO: Handle translation of SLIDINGCHAIR member from IfcDiscreteAccessoryTypeEnum in property PredefinedType - throw new System.NotImplementedException(); + return this.GetUserDefined(); //## case IfcDiscreteAccessoryTypeEnum.SOUNDABSORPTION: //## Handle translation of SOUNDABSORPTION member from IfcDiscreteAccessoryTypeEnum in property PredefinedType - //TODO: Handle translation of SOUNDABSORPTION member from IfcDiscreteAccessoryTypeEnum in property PredefinedType - throw new System.NotImplementedException(); + return this.GetUserDefined(); //## case IfcDiscreteAccessoryTypeEnum.TENSIONINGEQUIPMENT: //## Handle translation of TENSIONINGEQUIPMENT member from IfcDiscreteAccessoryTypeEnum in property PredefinedType - //TODO: Handle translation of TENSIONINGEQUIPMENT member from IfcDiscreteAccessoryTypeEnum in property PredefinedType - throw new System.NotImplementedException(); + return this.GetUserDefined(); //## case IfcDiscreteAccessoryTypeEnum.USERDEFINED: //## Optional custom handling of PredefinedType == .USERDEFINED. diff --git a/Xbim.Ifc4x3/Interfaces/IFC4/IfcDiscreteAccessoryType.cs b/Xbim.Ifc4x3/Interfaces/IFC4/IfcDiscreteAccessoryType.cs index 139b093ec..b05d4c4c7 100644 --- a/Xbim.Ifc4x3/Interfaces/IFC4/IfcDiscreteAccessoryType.cs +++ b/Xbim.Ifc4x3/Interfaces/IFC4/IfcDiscreteAccessoryType.cs @@ -34,97 +34,79 @@ Ifc4.Interfaces.IfcDiscreteAccessoryTypeEnum IIfcDiscreteAccessoryType.Predefine return Ifc4.Interfaces.IfcDiscreteAccessoryTypeEnum.ANCHORPLATE; case IfcDiscreteAccessoryTypeEnum.BIRDPROTECTION: //## Handle translation of BIRDPROTECTION member from IfcDiscreteAccessoryTypeEnum in property PredefinedType - //TODO: Handle translation of BIRDPROTECTION member from IfcDiscreteAccessoryTypeEnum in property PredefinedType - throw new System.NotImplementedException(); + return this.GetUserDefined(); //## case IfcDiscreteAccessoryTypeEnum.BRACKET: return Ifc4.Interfaces.IfcDiscreteAccessoryTypeEnum.BRACKET; case IfcDiscreteAccessoryTypeEnum.CABLEARRANGER: //## Handle translation of CABLEARRANGER member from IfcDiscreteAccessoryTypeEnum in property PredefinedType - //TODO: Handle translation of CABLEARRANGER member from IfcDiscreteAccessoryTypeEnum in property PredefinedType - throw new System.NotImplementedException(); + return this.GetUserDefined(); //## case IfcDiscreteAccessoryTypeEnum.ELASTIC_CUSHION: //## Handle translation of ELASTIC_CUSHION member from IfcDiscreteAccessoryTypeEnum in property PredefinedType - //TODO: Handle translation of ELASTIC_CUSHION member from IfcDiscreteAccessoryTypeEnum in property PredefinedType - throw new System.NotImplementedException(); + return this.GetUserDefined(); //## case IfcDiscreteAccessoryTypeEnum.EXPANSION_JOINT_DEVICE: //## Handle translation of EXPANSION_JOINT_DEVICE member from IfcDiscreteAccessoryTypeEnum in property PredefinedType - //TODO: Handle translation of EXPANSION_JOINT_DEVICE member from IfcDiscreteAccessoryTypeEnum in property PredefinedType - throw new System.NotImplementedException(); + return this.GetUserDefined(); //## case IfcDiscreteAccessoryTypeEnum.FILLER: //## Handle translation of FILLER member from IfcDiscreteAccessoryTypeEnum in property PredefinedType - //TODO: Handle translation of FILLER member from IfcDiscreteAccessoryTypeEnum in property PredefinedType - throw new System.NotImplementedException(); + return this.GetUserDefined(); //## case IfcDiscreteAccessoryTypeEnum.FLASHING: //## Handle translation of FLASHING member from IfcDiscreteAccessoryTypeEnum in property PredefinedType - //TODO: Handle translation of FLASHING member from IfcDiscreteAccessoryTypeEnum in property PredefinedType - throw new System.NotImplementedException(); + return this.GetUserDefined(); //## case IfcDiscreteAccessoryTypeEnum.INSULATOR: //## Handle translation of INSULATOR member from IfcDiscreteAccessoryTypeEnum in property PredefinedType - //TODO: Handle translation of INSULATOR member from IfcDiscreteAccessoryTypeEnum in property PredefinedType - throw new System.NotImplementedException(); + return this.GetUserDefined(); //## case IfcDiscreteAccessoryTypeEnum.LOCK: //## Handle translation of LOCK member from IfcDiscreteAccessoryTypeEnum in property PredefinedType - //TODO: Handle translation of LOCK member from IfcDiscreteAccessoryTypeEnum in property PredefinedType - throw new System.NotImplementedException(); + return this.GetUserDefined(); //## case IfcDiscreteAccessoryTypeEnum.PANEL_STRENGTHENING: //## Handle translation of PANEL_STRENGTHENING member from IfcDiscreteAccessoryTypeEnum in property PredefinedType - //TODO: Handle translation of PANEL_STRENGTHENING member from IfcDiscreteAccessoryTypeEnum in property PredefinedType - throw new System.NotImplementedException(); + return this.GetUserDefined(); //## case IfcDiscreteAccessoryTypeEnum.POINTMACHINEMOUNTINGDEVICE: //## Handle translation of POINTMACHINEMOUNTINGDEVICE member from IfcDiscreteAccessoryTypeEnum in property PredefinedType - //TODO: Handle translation of POINTMACHINEMOUNTINGDEVICE member from IfcDiscreteAccessoryTypeEnum in property PredefinedType - throw new System.NotImplementedException(); + return this.GetUserDefined(); //## case IfcDiscreteAccessoryTypeEnum.POINT_MACHINE_LOCKING_DEVICE: //## Handle translation of POINT_MACHINE_LOCKING_DEVICE member from IfcDiscreteAccessoryTypeEnum in property PredefinedType - //TODO: Handle translation of POINT_MACHINE_LOCKING_DEVICE member from IfcDiscreteAccessoryTypeEnum in property PredefinedType - throw new System.NotImplementedException(); + return this.GetUserDefined(); //## case IfcDiscreteAccessoryTypeEnum.RAILBRACE: //## Handle translation of RAILBRACE member from IfcDiscreteAccessoryTypeEnum in property PredefinedType - //TODO: Handle translation of RAILBRACE member from IfcDiscreteAccessoryTypeEnum in property PredefinedType - throw new System.NotImplementedException(); + return this.GetUserDefined(); //## case IfcDiscreteAccessoryTypeEnum.RAILPAD: //## Handle translation of RAILPAD member from IfcDiscreteAccessoryTypeEnum in property PredefinedType - //TODO: Handle translation of RAILPAD member from IfcDiscreteAccessoryTypeEnum in property PredefinedType - throw new System.NotImplementedException(); + return this.GetUserDefined(); //## case IfcDiscreteAccessoryTypeEnum.RAIL_LUBRICATION: //## Handle translation of RAIL_LUBRICATION member from IfcDiscreteAccessoryTypeEnum in property PredefinedType - //TODO: Handle translation of RAIL_LUBRICATION member from IfcDiscreteAccessoryTypeEnum in property PredefinedType - throw new System.NotImplementedException(); + return this.GetUserDefined(); //## case IfcDiscreteAccessoryTypeEnum.RAIL_MECHANICAL_EQUIPMENT: //## Handle translation of RAIL_MECHANICAL_EQUIPMENT member from IfcDiscreteAccessoryTypeEnum in property PredefinedType - //TODO: Handle translation of RAIL_MECHANICAL_EQUIPMENT member from IfcDiscreteAccessoryTypeEnum in property PredefinedType - throw new System.NotImplementedException(); + return this.GetUserDefined(); //## case IfcDiscreteAccessoryTypeEnum.SHOE: return Ifc4.Interfaces.IfcDiscreteAccessoryTypeEnum.SHOE; case IfcDiscreteAccessoryTypeEnum.SLIDINGCHAIR: //## Handle translation of SLIDINGCHAIR member from IfcDiscreteAccessoryTypeEnum in property PredefinedType - //TODO: Handle translation of SLIDINGCHAIR member from IfcDiscreteAccessoryTypeEnum in property PredefinedType - throw new System.NotImplementedException(); + return this.GetUserDefined(); //## case IfcDiscreteAccessoryTypeEnum.SOUNDABSORPTION: //## Handle translation of SOUNDABSORPTION member from IfcDiscreteAccessoryTypeEnum in property PredefinedType - //TODO: Handle translation of SOUNDABSORPTION member from IfcDiscreteAccessoryTypeEnum in property PredefinedType - throw new System.NotImplementedException(); + return this.GetUserDefined(); //## case IfcDiscreteAccessoryTypeEnum.TENSIONINGEQUIPMENT: //## Handle translation of TENSIONINGEQUIPMENT member from IfcDiscreteAccessoryTypeEnum in property PredefinedType - //TODO: Handle translation of TENSIONINGEQUIPMENT member from IfcDiscreteAccessoryTypeEnum in property PredefinedType - throw new System.NotImplementedException(); + return this.GetUserDefined(); //## case IfcDiscreteAccessoryTypeEnum.USERDEFINED: //## Optional custom handling of PredefinedType == .USERDEFINED. diff --git a/Xbim.Ifc4x3/Interfaces/IFC4/IfcDistributionPort.cs b/Xbim.Ifc4x3/Interfaces/IFC4/IfcDistributionPort.cs index 730a33c43..671f82b34 100644 --- a/Xbim.Ifc4x3/Interfaces/IFC4/IfcDistributionPort.cs +++ b/Xbim.Ifc4x3/Interfaces/IFC4/IfcDistributionPort.cs @@ -93,8 +93,7 @@ public partial class @IfcDistributionPort : IIfcDistributionPort return Ifc4.Interfaces.IfcDistributionPortTypeEnum.PIPE; case IfcDistributionPortTypeEnum.WIRELESS: //## Handle translation of WIRELESS member from IfcDistributionPortTypeEnum in property PredefinedType - //TODO: Handle translation of WIRELESS member from IfcDistributionPortTypeEnum in property PredefinedType - throw new System.NotImplementedException(); + return this.GetUserDefined(); //## case IfcDistributionPortTypeEnum.USERDEFINED: //## Optional custom handling of PredefinedType == .USERDEFINED. @@ -158,11 +157,10 @@ public partial class @IfcDistributionPort : IIfcDistributionPort case IfcDistributionSystemEnum.AUDIOVISUAL: return Ifc4.Interfaces.IfcDistributionSystemEnum.AUDIOVISUAL; case IfcDistributionSystemEnum.CATENARY_SYSTEM: - //## Handle translation of CATENARY_SYSTEM member from IfcDistributionSystemEnum in property SystemType - //TODO: Handle translation of CATENARY_SYSTEM member from IfcDistributionSystemEnum in property SystemType - throw new System.NotImplementedException(); - //## - case IfcDistributionSystemEnum.CHEMICAL: + //## Handle translation of CATENARY_SYSTEM member from IfcDistributionSystemEnum in property SystemType + return this.GetUserDefined(); + //## + case IfcDistributionSystemEnum.CHEMICAL: return Ifc4.Interfaces.IfcDistributionSystemEnum.CHEMICAL; case IfcDistributionSystemEnum.CHILLEDWATER: return Ifc4.Interfaces.IfcDistributionSystemEnum.CHILLEDWATER; @@ -197,11 +195,10 @@ public partial class @IfcDistributionPort : IIfcDistributionPort case IfcDistributionSystemEnum.FIREPROTECTION: return Ifc4.Interfaces.IfcDistributionSystemEnum.FIREPROTECTION; case IfcDistributionSystemEnum.FIXEDTRANSMISSIONNETWORK: - //## Handle translation of FIXEDTRANSMISSIONNETWORK member from IfcDistributionSystemEnum in property SystemType - //TODO: Handle translation of FIXEDTRANSMISSIONNETWORK member from IfcDistributionSystemEnum in property SystemType - throw new System.NotImplementedException(); - //## - case IfcDistributionSystemEnum.FUEL: + //## Handle translation of FIXEDTRANSMISSIONNETWORK member from IfcDistributionSystemEnum in property SystemType + return this.GetUserDefined(); + //## + case IfcDistributionSystemEnum.FUEL: return Ifc4.Interfaces.IfcDistributionSystemEnum.FUEL; case IfcDistributionSystemEnum.GAS: return Ifc4.Interfaces.IfcDistributionSystemEnum.GAS; @@ -214,43 +211,38 @@ public partial class @IfcDistributionPort : IIfcDistributionPort case IfcDistributionSystemEnum.LIGHTNINGPROTECTION: return Ifc4.Interfaces.IfcDistributionSystemEnum.LIGHTNINGPROTECTION; case IfcDistributionSystemEnum.MOBILENETWORK: - //## Handle translation of MOBILENETWORK member from IfcDistributionSystemEnum in property SystemType - //TODO: Handle translation of MOBILENETWORK member from IfcDistributionSystemEnum in property SystemType - throw new System.NotImplementedException(); - //## - case IfcDistributionSystemEnum.MONITORINGSYSTEM: - //## Handle translation of MONITORINGSYSTEM member from IfcDistributionSystemEnum in property SystemType - //TODO: Handle translation of MONITORINGSYSTEM member from IfcDistributionSystemEnum in property SystemType - throw new System.NotImplementedException(); - //## - case IfcDistributionSystemEnum.MUNICIPALSOLIDWASTE: + //## Handle translation of MOBILENETWORK member from IfcDistributionSystemEnum in property SystemType + return this.GetUserDefined(); + //## + case IfcDistributionSystemEnum.MONITORINGSYSTEM: + //## Handle translation of MONITORINGSYSTEM member from IfcDistributionSystemEnum in property SystemType + return this.GetUserDefined(); + //## + case IfcDistributionSystemEnum.MUNICIPALSOLIDWASTE: return Ifc4.Interfaces.IfcDistributionSystemEnum.MUNICIPALSOLIDWASTE; case IfcDistributionSystemEnum.OIL: return Ifc4.Interfaces.IfcDistributionSystemEnum.OIL; case IfcDistributionSystemEnum.OPERATIONAL: return Ifc4.Interfaces.IfcDistributionSystemEnum.OPERATIONAL; case IfcDistributionSystemEnum.OPERATIONALTELEPHONYSYSTEM: - //## Handle translation of OPERATIONALTELEPHONYSYSTEM member from IfcDistributionSystemEnum in property SystemType - //TODO: Handle translation of OPERATIONALTELEPHONYSYSTEM member from IfcDistributionSystemEnum in property SystemType - throw new System.NotImplementedException(); - //## - case IfcDistributionSystemEnum.OVERHEAD_CONTACTLINE_SYSTEM: - //## Handle translation of OVERHEAD_CONTACTLINE_SYSTEM member from IfcDistributionSystemEnum in property SystemType - //TODO: Handle translation of OVERHEAD_CONTACTLINE_SYSTEM member from IfcDistributionSystemEnum in property SystemType - throw new System.NotImplementedException(); - //## - case IfcDistributionSystemEnum.POWERGENERATION: + //## Handle translation of OPERATIONALTELEPHONYSYSTEM member from IfcDistributionSystemEnum in property SystemType + return this.GetUserDefined(); + //## + case IfcDistributionSystemEnum.OVERHEAD_CONTACTLINE_SYSTEM: + //## Handle translation of OVERHEAD_CONTACTLINE_SYSTEM member from IfcDistributionSystemEnum in property SystemType + return this.GetUserDefined(); + //## + case IfcDistributionSystemEnum.POWERGENERATION: return Ifc4.Interfaces.IfcDistributionSystemEnum.POWERGENERATION; case IfcDistributionSystemEnum.RAINWATER: return Ifc4.Interfaces.IfcDistributionSystemEnum.RAINWATER; case IfcDistributionSystemEnum.REFRIGERATION: return Ifc4.Interfaces.IfcDistributionSystemEnum.REFRIGERATION; case IfcDistributionSystemEnum.RETURN_CIRCUIT: - //## Handle translation of RETURN_CIRCUIT member from IfcDistributionSystemEnum in property SystemType - //TODO: Handle translation of RETURN_CIRCUIT member from IfcDistributionSystemEnum in property SystemType - throw new System.NotImplementedException(); - //## - case IfcDistributionSystemEnum.SECURITY: + //## Handle translation of RETURN_CIRCUIT member from IfcDistributionSystemEnum in property SystemType + return this.GetUserDefined(); + //## + case IfcDistributionSystemEnum.SECURITY: return Ifc4.Interfaces.IfcDistributionSystemEnum.SECURITY; case IfcDistributionSystemEnum.SEWAGE: return Ifc4.Interfaces.IfcDistributionSystemEnum.SEWAGE; diff --git a/Xbim.Ifc4x3/Interfaces/IFC4/IfcDistributionSystem.cs b/Xbim.Ifc4x3/Interfaces/IFC4/IfcDistributionSystem.cs index d3a5e0b58..bcb28a87b 100644 --- a/Xbim.Ifc4x3/Interfaces/IFC4/IfcDistributionSystem.cs +++ b/Xbim.Ifc4x3/Interfaces/IFC4/IfcDistributionSystem.cs @@ -53,8 +53,7 @@ public partial class @IfcDistributionSystem : IIfcDistributionSystem return Ifc4.Interfaces.IfcDistributionSystemEnum.AUDIOVISUAL; case IfcDistributionSystemEnum.CATENARY_SYSTEM: //## Handle translation of CATENARY_SYSTEM member from IfcDistributionSystemEnum in property PredefinedType - //TODO: Handle translation of CATENARY_SYSTEM member from IfcDistributionSystemEnum in property PredefinedType - throw new System.NotImplementedException(); + return this.GetUserDefined(); //## case IfcDistributionSystemEnum.CHEMICAL: return Ifc4.Interfaces.IfcDistributionSystemEnum.CHEMICAL; @@ -92,8 +91,7 @@ public partial class @IfcDistributionSystem : IIfcDistributionSystem return Ifc4.Interfaces.IfcDistributionSystemEnum.FIREPROTECTION; case IfcDistributionSystemEnum.FIXEDTRANSMISSIONNETWORK: //## Handle translation of FIXEDTRANSMISSIONNETWORK member from IfcDistributionSystemEnum in property PredefinedType - //TODO: Handle translation of FIXEDTRANSMISSIONNETWORK member from IfcDistributionSystemEnum in property PredefinedType - throw new System.NotImplementedException(); + return this.GetUserDefined(); //## case IfcDistributionSystemEnum.FUEL: return Ifc4.Interfaces.IfcDistributionSystemEnum.FUEL; @@ -109,13 +107,11 @@ public partial class @IfcDistributionSystem : IIfcDistributionSystem return Ifc4.Interfaces.IfcDistributionSystemEnum.LIGHTNINGPROTECTION; case IfcDistributionSystemEnum.MOBILENETWORK: //## Handle translation of MOBILENETWORK member from IfcDistributionSystemEnum in property PredefinedType - //TODO: Handle translation of MOBILENETWORK member from IfcDistributionSystemEnum in property PredefinedType - throw new System.NotImplementedException(); + return this.GetUserDefined(); //## case IfcDistributionSystemEnum.MONITORINGSYSTEM: //## Handle translation of MONITORINGSYSTEM member from IfcDistributionSystemEnum in property PredefinedType - //TODO: Handle translation of MONITORINGSYSTEM member from IfcDistributionSystemEnum in property PredefinedType - throw new System.NotImplementedException(); + return this.GetUserDefined(); //## case IfcDistributionSystemEnum.MUNICIPALSOLIDWASTE: return Ifc4.Interfaces.IfcDistributionSystemEnum.MUNICIPALSOLIDWASTE; @@ -125,13 +121,11 @@ public partial class @IfcDistributionSystem : IIfcDistributionSystem return Ifc4.Interfaces.IfcDistributionSystemEnum.OPERATIONAL; case IfcDistributionSystemEnum.OPERATIONALTELEPHONYSYSTEM: //## Handle translation of OPERATIONALTELEPHONYSYSTEM member from IfcDistributionSystemEnum in property PredefinedType - //TODO: Handle translation of OPERATIONALTELEPHONYSYSTEM member from IfcDistributionSystemEnum in property PredefinedType - throw new System.NotImplementedException(); + return this.GetUserDefined(); //## case IfcDistributionSystemEnum.OVERHEAD_CONTACTLINE_SYSTEM: //## Handle translation of OVERHEAD_CONTACTLINE_SYSTEM member from IfcDistributionSystemEnum in property PredefinedType - //TODO: Handle translation of OVERHEAD_CONTACTLINE_SYSTEM member from IfcDistributionSystemEnum in property PredefinedType - throw new System.NotImplementedException(); + return this.GetUserDefined(); //## case IfcDistributionSystemEnum.POWERGENERATION: return Ifc4.Interfaces.IfcDistributionSystemEnum.POWERGENERATION; @@ -141,8 +135,7 @@ public partial class @IfcDistributionSystem : IIfcDistributionSystem return Ifc4.Interfaces.IfcDistributionSystemEnum.REFRIGERATION; case IfcDistributionSystemEnum.RETURN_CIRCUIT: //## Handle translation of RETURN_CIRCUIT member from IfcDistributionSystemEnum in property PredefinedType - //TODO: Handle translation of RETURN_CIRCUIT member from IfcDistributionSystemEnum in property PredefinedType - throw new System.NotImplementedException(); + return this.GetUserDefined(); //## case IfcDistributionSystemEnum.SECURITY: return Ifc4.Interfaces.IfcDistributionSystemEnum.SECURITY; diff --git a/Xbim.Ifc4x3/Interfaces/IFC4/IfcDoor.cs b/Xbim.Ifc4x3/Interfaces/IFC4/IfcDoor.cs index cbcf2566c..6f1b1511c 100644 --- a/Xbim.Ifc4x3/Interfaces/IFC4/IfcDoor.cs +++ b/Xbim.Ifc4x3/Interfaces/IFC4/IfcDoor.cs @@ -66,8 +66,7 @@ public partial class @IfcDoor : IIfcDoor { case IfcDoorTypeEnum.BOOM_BARRIER: //## Handle translation of BOOM_BARRIER member from IfcDoorTypeEnum in property PredefinedType - //TODO: Handle translation of BOOM_BARRIER member from IfcDoorTypeEnum in property PredefinedType - throw new System.NotImplementedException(); + return this.GetUserDefined(); //## case IfcDoorTypeEnum.DOOR: return Ifc4.Interfaces.IfcDoorTypeEnum.DOOR; @@ -77,8 +76,7 @@ public partial class @IfcDoor : IIfcDoor return Ifc4.Interfaces.IfcDoorTypeEnum.TRAPDOOR; case IfcDoorTypeEnum.TURNSTILE: //## Handle translation of TURNSTILE member from IfcDoorTypeEnum in property PredefinedType - //TODO: Handle translation of TURNSTILE member from IfcDoorTypeEnum in property PredefinedType - throw new System.NotImplementedException(); + return this.GetUserDefined(); //## case IfcDoorTypeEnum.USERDEFINED: //## Optional custom handling of PredefinedType == .USERDEFINED. @@ -139,11 +137,10 @@ public partial class @IfcDoor : IIfcDoor case IfcDoorTypeOperationEnum.DOUBLE_DOOR_FOLDING: return Ifc4.Interfaces.IfcDoorTypeOperationEnum.DOUBLE_DOOR_FOLDING; case IfcDoorTypeOperationEnum.DOUBLE_DOOR_LIFTING_VERTICAL: - //## Handle translation of DOUBLE_DOOR_LIFTING_VERTICAL member from IfcDoorTypeOperationEnum in property OperationType - //TODO: Handle translation of DOUBLE_DOOR_LIFTING_VERTICAL member from IfcDoorTypeOperationEnum in property OperationType - throw new System.NotImplementedException(); - //## - case IfcDoorTypeOperationEnum.DOUBLE_DOOR_SINGLE_SWING: + //## Handle translation of DOUBLE_DOOR_LIFTING_VERTICAL member from IfcDoorTypeOperationEnum in property OperationType + return this.GetUserDefined(); + //## + case IfcDoorTypeOperationEnum.DOUBLE_DOOR_SINGLE_SWING: return Ifc4.Interfaces.IfcDoorTypeOperationEnum.DOUBLE_DOOR_SINGLE_SWING; case IfcDoorTypeOperationEnum.DOUBLE_DOOR_SINGLE_SWING_OPPOSITE_LEFT: return Ifc4.Interfaces.IfcDoorTypeOperationEnum.DOUBLE_DOOR_SINGLE_SWING_OPPOSITE_LEFT; @@ -160,28 +157,24 @@ public partial class @IfcDoor : IIfcDoor case IfcDoorTypeOperationEnum.FOLDING_TO_RIGHT: return Ifc4.Interfaces.IfcDoorTypeOperationEnum.FOLDING_TO_RIGHT; case IfcDoorTypeOperationEnum.LIFTING_HORIZONTAL: - //## Handle translation of LIFTING_HORIZONTAL member from IfcDoorTypeOperationEnum in property OperationType - //TODO: Handle translation of LIFTING_HORIZONTAL member from IfcDoorTypeOperationEnum in property OperationType - throw new System.NotImplementedException(); - //## - case IfcDoorTypeOperationEnum.LIFTING_VERTICAL_LEFT: - //## Handle translation of LIFTING_VERTICAL_LEFT member from IfcDoorTypeOperationEnum in property OperationType - //TODO: Handle translation of LIFTING_VERTICAL_LEFT member from IfcDoorTypeOperationEnum in property OperationType - throw new System.NotImplementedException(); - //## - case IfcDoorTypeOperationEnum.LIFTING_VERTICAL_RIGHT: - //## Handle translation of LIFTING_VERTICAL_RIGHT member from IfcDoorTypeOperationEnum in property OperationType - //TODO: Handle translation of LIFTING_VERTICAL_RIGHT member from IfcDoorTypeOperationEnum in property OperationType - throw new System.NotImplementedException(); - //## - case IfcDoorTypeOperationEnum.REVOLVING: + //## Handle translation of LIFTING_HORIZONTAL member from IfcDoorTypeOperationEnum in property OperationType + return this.GetUserDefined(); + //## + case IfcDoorTypeOperationEnum.LIFTING_VERTICAL_LEFT: + //## Handle translation of LIFTING_VERTICAL_LEFT member from IfcDoorTypeOperationEnum in property OperationType + return this.GetUserDefined(); + //## + case IfcDoorTypeOperationEnum.LIFTING_VERTICAL_RIGHT: + //## Handle translation of LIFTING_VERTICAL_RIGHT member from IfcDoorTypeOperationEnum in property OperationType + return this.GetUserDefined(); + //## + case IfcDoorTypeOperationEnum.REVOLVING: return Ifc4.Interfaces.IfcDoorTypeOperationEnum.REVOLVING; case IfcDoorTypeOperationEnum.REVOLVING_VERTICAL: - //## Handle translation of REVOLVING_VERTICAL member from IfcDoorTypeOperationEnum in property OperationType - //TODO: Handle translation of REVOLVING_VERTICAL member from IfcDoorTypeOperationEnum in property OperationType - throw new System.NotImplementedException(); - //## - case IfcDoorTypeOperationEnum.ROLLINGUP: + //## Handle translation of REVOLVING_VERTICAL member from IfcDoorTypeOperationEnum in property OperationType + return this.GetUserDefined(); + //## + case IfcDoorTypeOperationEnum.ROLLINGUP: return Ifc4.Interfaces.IfcDoorTypeOperationEnum.ROLLINGUP; case IfcDoorTypeOperationEnum.SINGLE_SWING_LEFT: return Ifc4.Interfaces.IfcDoorTypeOperationEnum.SINGLE_SWING_LEFT; diff --git a/Xbim.Ifc4x3/Interfaces/IFC4/IfcDoorType.cs b/Xbim.Ifc4x3/Interfaces/IFC4/IfcDoorType.cs index 5acd6628c..899ad49d3 100644 --- a/Xbim.Ifc4x3/Interfaces/IFC4/IfcDoorType.cs +++ b/Xbim.Ifc4x3/Interfaces/IFC4/IfcDoorType.cs @@ -32,8 +32,7 @@ Ifc4.Interfaces.IfcDoorTypeEnum IIfcDoorType.PredefinedType { case IfcDoorTypeEnum.BOOM_BARRIER: //## Handle translation of BOOM_BARRIER member from IfcDoorTypeEnum in property PredefinedType - //TODO: Handle translation of BOOM_BARRIER member from IfcDoorTypeEnum in property PredefinedType - throw new System.NotImplementedException(); + return this.GetUserDefined(); //## case IfcDoorTypeEnum.DOOR: return Ifc4.Interfaces.IfcDoorTypeEnum.DOOR; @@ -43,8 +42,7 @@ Ifc4.Interfaces.IfcDoorTypeEnum IIfcDoorType.PredefinedType return Ifc4.Interfaces.IfcDoorTypeEnum.TRAPDOOR; case IfcDoorTypeEnum.TURNSTILE: //## Handle translation of TURNSTILE member from IfcDoorTypeEnum in property PredefinedType - //TODO: Handle translation of TURNSTILE member from IfcDoorTypeEnum in property PredefinedType - throw new System.NotImplementedException(); + return this.GetUserDefined(); //## case IfcDoorTypeEnum.USERDEFINED: //## Optional custom handling of PredefinedType == .USERDEFINED. @@ -99,11 +97,10 @@ Ifc4.Interfaces.IfcDoorTypeOperationEnum IIfcDoorType.OperationType case IfcDoorTypeOperationEnum.DOUBLE_DOOR_FOLDING: return Ifc4.Interfaces.IfcDoorTypeOperationEnum.DOUBLE_DOOR_FOLDING; case IfcDoorTypeOperationEnum.DOUBLE_DOOR_LIFTING_VERTICAL: - //## Handle translation of DOUBLE_DOOR_LIFTING_VERTICAL member from IfcDoorTypeOperationEnum in property OperationType - //TODO: Handle translation of DOUBLE_DOOR_LIFTING_VERTICAL member from IfcDoorTypeOperationEnum in property OperationType - throw new System.NotImplementedException(); - //## - case IfcDoorTypeOperationEnum.DOUBLE_DOOR_SINGLE_SWING: + //## Handle translation of DOUBLE_DOOR_LIFTING_VERTICAL member from IfcDoorTypeOperationEnum in property OperationType + return this.GetUserDefined(); + //## + case IfcDoorTypeOperationEnum.DOUBLE_DOOR_SINGLE_SWING: return Ifc4.Interfaces.IfcDoorTypeOperationEnum.DOUBLE_DOOR_SINGLE_SWING; case IfcDoorTypeOperationEnum.DOUBLE_DOOR_SINGLE_SWING_OPPOSITE_LEFT: return Ifc4.Interfaces.IfcDoorTypeOperationEnum.DOUBLE_DOOR_SINGLE_SWING_OPPOSITE_LEFT; @@ -120,28 +117,24 @@ Ifc4.Interfaces.IfcDoorTypeOperationEnum IIfcDoorType.OperationType case IfcDoorTypeOperationEnum.FOLDING_TO_RIGHT: return Ifc4.Interfaces.IfcDoorTypeOperationEnum.FOLDING_TO_RIGHT; case IfcDoorTypeOperationEnum.LIFTING_HORIZONTAL: - //## Handle translation of LIFTING_HORIZONTAL member from IfcDoorTypeOperationEnum in property OperationType - //TODO: Handle translation of LIFTING_HORIZONTAL member from IfcDoorTypeOperationEnum in property OperationType - throw new System.NotImplementedException(); - //## - case IfcDoorTypeOperationEnum.LIFTING_VERTICAL_LEFT: - //## Handle translation of LIFTING_VERTICAL_LEFT member from IfcDoorTypeOperationEnum in property OperationType - //TODO: Handle translation of LIFTING_VERTICAL_LEFT member from IfcDoorTypeOperationEnum in property OperationType - throw new System.NotImplementedException(); - //## - case IfcDoorTypeOperationEnum.LIFTING_VERTICAL_RIGHT: - //## Handle translation of LIFTING_VERTICAL_RIGHT member from IfcDoorTypeOperationEnum in property OperationType - //TODO: Handle translation of LIFTING_VERTICAL_RIGHT member from IfcDoorTypeOperationEnum in property OperationType - throw new System.NotImplementedException(); - //## - case IfcDoorTypeOperationEnum.REVOLVING: + //## Handle translation of LIFTING_HORIZONTAL member from IfcDoorTypeOperationEnum in property OperationType + return this.GetUserDefined(); + //## + case IfcDoorTypeOperationEnum.LIFTING_VERTICAL_LEFT: + //## Handle translation of LIFTING_VERTICAL_LEFT member from IfcDoorTypeOperationEnum in property OperationType + return this.GetUserDefined(); + //## + case IfcDoorTypeOperationEnum.LIFTING_VERTICAL_RIGHT: + //## Handle translation of LIFTING_VERTICAL_RIGHT member from IfcDoorTypeOperationEnum in property OperationType + return this.GetUserDefined(); + //## + case IfcDoorTypeOperationEnum.REVOLVING: return Ifc4.Interfaces.IfcDoorTypeOperationEnum.REVOLVING; case IfcDoorTypeOperationEnum.REVOLVING_VERTICAL: - //## Handle translation of REVOLVING_VERTICAL member from IfcDoorTypeOperationEnum in property OperationType - //TODO: Handle translation of REVOLVING_VERTICAL member from IfcDoorTypeOperationEnum in property OperationType - throw new System.NotImplementedException(); - //## - case IfcDoorTypeOperationEnum.ROLLINGUP: + //## Handle translation of REVOLVING_VERTICAL member from IfcDoorTypeOperationEnum in property OperationType + return this.GetUserDefined(); + //## + case IfcDoorTypeOperationEnum.ROLLINGUP: return Ifc4.Interfaces.IfcDoorTypeOperationEnum.ROLLINGUP; case IfcDoorTypeOperationEnum.SINGLE_SWING_LEFT: return Ifc4.Interfaces.IfcDoorTypeOperationEnum.SINGLE_SWING_LEFT; diff --git a/Xbim.Ifc4x3/Interfaces/IFC4/IfcElectricFlowStorageDevice.cs b/Xbim.Ifc4x3/Interfaces/IFC4/IfcElectricFlowStorageDevice.cs index 5099075e0..3c2dbad91 100644 --- a/Xbim.Ifc4x3/Interfaces/IFC4/IfcElectricFlowStorageDevice.cs +++ b/Xbim.Ifc4x3/Interfaces/IFC4/IfcElectricFlowStorageDevice.cs @@ -34,29 +34,25 @@ public partial class @IfcElectricFlowStorageDevice : IIfcElectricFlowStorageDevi return Ifc4.Interfaces.IfcElectricFlowStorageDeviceTypeEnum.BATTERY; case IfcElectricFlowStorageDeviceTypeEnum.CAPACITOR: //## Handle translation of CAPACITOR member from IfcElectricFlowStorageDeviceTypeEnum in property PredefinedType - //TODO: Handle translation of CAPACITOR member from IfcElectricFlowStorageDeviceTypeEnum in property PredefinedType - throw new System.NotImplementedException(); + return this.GetUserDefined(); //## case IfcElectricFlowStorageDeviceTypeEnum.CAPACITORBANK: return Ifc4.Interfaces.IfcElectricFlowStorageDeviceTypeEnum.CAPACITORBANK; case IfcElectricFlowStorageDeviceTypeEnum.COMPENSATOR: //## Handle translation of COMPENSATOR member from IfcElectricFlowStorageDeviceTypeEnum in property PredefinedType - //TODO: Handle translation of COMPENSATOR member from IfcElectricFlowStorageDeviceTypeEnum in property PredefinedType - throw new System.NotImplementedException(); + return this.GetUserDefined(); //## case IfcElectricFlowStorageDeviceTypeEnum.HARMONICFILTER: return Ifc4.Interfaces.IfcElectricFlowStorageDeviceTypeEnum.HARMONICFILTER; case IfcElectricFlowStorageDeviceTypeEnum.INDUCTOR: //## Handle translation of INDUCTOR member from IfcElectricFlowStorageDeviceTypeEnum in property PredefinedType - //TODO: Handle translation of INDUCTOR member from IfcElectricFlowStorageDeviceTypeEnum in property PredefinedType - throw new System.NotImplementedException(); + return this.GetUserDefined(); //## case IfcElectricFlowStorageDeviceTypeEnum.INDUCTORBANK: return Ifc4.Interfaces.IfcElectricFlowStorageDeviceTypeEnum.INDUCTORBANK; case IfcElectricFlowStorageDeviceTypeEnum.RECHARGER: //## Handle translation of RECHARGER member from IfcElectricFlowStorageDeviceTypeEnum in property PredefinedType - //TODO: Handle translation of RECHARGER member from IfcElectricFlowStorageDeviceTypeEnum in property PredefinedType - throw new System.NotImplementedException(); + return this.GetUserDefined(); //## case IfcElectricFlowStorageDeviceTypeEnum.UPS: return Ifc4.Interfaces.IfcElectricFlowStorageDeviceTypeEnum.UPS; diff --git a/Xbim.Ifc4x3/Interfaces/IFC4/IfcElectricFlowStorageDeviceType.cs b/Xbim.Ifc4x3/Interfaces/IFC4/IfcElectricFlowStorageDeviceType.cs index 156a66bd2..899040a0d 100644 --- a/Xbim.Ifc4x3/Interfaces/IFC4/IfcElectricFlowStorageDeviceType.cs +++ b/Xbim.Ifc4x3/Interfaces/IFC4/IfcElectricFlowStorageDeviceType.cs @@ -34,29 +34,25 @@ Ifc4.Interfaces.IfcElectricFlowStorageDeviceTypeEnum IIfcElectricFlowStorageDevi return Ifc4.Interfaces.IfcElectricFlowStorageDeviceTypeEnum.BATTERY; case IfcElectricFlowStorageDeviceTypeEnum.CAPACITOR: //## Handle translation of CAPACITOR member from IfcElectricFlowStorageDeviceTypeEnum in property PredefinedType - //TODO: Handle translation of CAPACITOR member from IfcElectricFlowStorageDeviceTypeEnum in property PredefinedType - throw new System.NotImplementedException(); + return this.GetUserDefined(); //## case IfcElectricFlowStorageDeviceTypeEnum.CAPACITORBANK: return Ifc4.Interfaces.IfcElectricFlowStorageDeviceTypeEnum.CAPACITORBANK; case IfcElectricFlowStorageDeviceTypeEnum.COMPENSATOR: //## Handle translation of COMPENSATOR member from IfcElectricFlowStorageDeviceTypeEnum in property PredefinedType - //TODO: Handle translation of COMPENSATOR member from IfcElectricFlowStorageDeviceTypeEnum in property PredefinedType - throw new System.NotImplementedException(); + return this.GetUserDefined(); //## case IfcElectricFlowStorageDeviceTypeEnum.HARMONICFILTER: return Ifc4.Interfaces.IfcElectricFlowStorageDeviceTypeEnum.HARMONICFILTER; case IfcElectricFlowStorageDeviceTypeEnum.INDUCTOR: //## Handle translation of INDUCTOR member from IfcElectricFlowStorageDeviceTypeEnum in property PredefinedType - //TODO: Handle translation of INDUCTOR member from IfcElectricFlowStorageDeviceTypeEnum in property PredefinedType - throw new System.NotImplementedException(); + return this.GetUserDefined(); //## case IfcElectricFlowStorageDeviceTypeEnum.INDUCTORBANK: return Ifc4.Interfaces.IfcElectricFlowStorageDeviceTypeEnum.INDUCTORBANK; case IfcElectricFlowStorageDeviceTypeEnum.RECHARGER: //## Handle translation of RECHARGER member from IfcElectricFlowStorageDeviceTypeEnum in property PredefinedType - //TODO: Handle translation of RECHARGER member from IfcElectricFlowStorageDeviceTypeEnum in property PredefinedType - throw new System.NotImplementedException(); + return this.GetUserDefined(); //## case IfcElectricFlowStorageDeviceTypeEnum.UPS: return Ifc4.Interfaces.IfcElectricFlowStorageDeviceTypeEnum.UPS; diff --git a/Xbim.Ifc4x3/Interfaces/IFC4/IfcElementAssembly.cs b/Xbim.Ifc4x3/Interfaces/IFC4/IfcElementAssembly.cs index a3781a86e..7d2db1b4c 100644 --- a/Xbim.Ifc4x3/Interfaces/IFC4/IfcElementAssembly.cs +++ b/Xbim.Ifc4x3/Interfaces/IFC4/IfcElementAssembly.cs @@ -80,8 +80,7 @@ public partial class @IfcElementAssembly : IIfcElementAssembly { case IfcElementAssemblyTypeEnum.ABUTMENT: //## Handle translation of ABUTMENT member from IfcElementAssemblyTypeEnum in property PredefinedType - //TODO: Handle translation of ABUTMENT member from IfcElementAssemblyTypeEnum in property PredefinedType - throw new System.NotImplementedException(); + return this.GetUserDefined(); //## case IfcElementAssemblyTypeEnum.ACCESSORY_ASSEMBLY: return Ifc4.Interfaces.IfcElementAssemblyTypeEnum.ACCESSORY_ASSEMBLY; @@ -93,50 +92,41 @@ public partial class @IfcElementAssembly : IIfcElementAssembly return Ifc4.Interfaces.IfcElementAssemblyTypeEnum.BRACED_FRAME; case IfcElementAssemblyTypeEnum.CROSS_BRACING: //## Handle translation of CROSS_BRACING member from IfcElementAssemblyTypeEnum in property PredefinedType - //TODO: Handle translation of CROSS_BRACING member from IfcElementAssemblyTypeEnum in property PredefinedType - throw new System.NotImplementedException(); + return this.GetUserDefined(); //## case IfcElementAssemblyTypeEnum.DECK: //## Handle translation of DECK member from IfcElementAssemblyTypeEnum in property PredefinedType - //TODO: Handle translation of DECK member from IfcElementAssemblyTypeEnum in property PredefinedType - throw new System.NotImplementedException(); + return this.GetUserDefined(); //## case IfcElementAssemblyTypeEnum.DILATATIONPANEL: //## Handle translation of DILATATIONPANEL member from IfcElementAssemblyTypeEnum in property PredefinedType - //TODO: Handle translation of DILATATIONPANEL member from IfcElementAssemblyTypeEnum in property PredefinedType - throw new System.NotImplementedException(); + return this.GetUserDefined(); //## case IfcElementAssemblyTypeEnum.ENTRANCEWORKS: //## Handle translation of ENTRANCEWORKS member from IfcElementAssemblyTypeEnum in property PredefinedType - //TODO: Handle translation of ENTRANCEWORKS member from IfcElementAssemblyTypeEnum in property PredefinedType - throw new System.NotImplementedException(); + return this.GetUserDefined(); //## case IfcElementAssemblyTypeEnum.GIRDER: return Ifc4.Interfaces.IfcElementAssemblyTypeEnum.GIRDER; case IfcElementAssemblyTypeEnum.GRID: //## Handle translation of GRID member from IfcElementAssemblyTypeEnum in property PredefinedType - //TODO: Handle translation of GRID member from IfcElementAssemblyTypeEnum in property PredefinedType - throw new System.NotImplementedException(); + return this.GetUserDefined(); //## case IfcElementAssemblyTypeEnum.MAST: //## Handle translation of MAST member from IfcElementAssemblyTypeEnum in property PredefinedType - //TODO: Handle translation of MAST member from IfcElementAssemblyTypeEnum in property PredefinedType - throw new System.NotImplementedException(); + return this.GetUserDefined(); //## case IfcElementAssemblyTypeEnum.PIER: //## Handle translation of PIER member from IfcElementAssemblyTypeEnum in property PredefinedType - //TODO: Handle translation of PIER member from IfcElementAssemblyTypeEnum in property PredefinedType - throw new System.NotImplementedException(); + return this.GetUserDefined(); //## case IfcElementAssemblyTypeEnum.PYLON: //## Handle translation of PYLON member from IfcElementAssemblyTypeEnum in property PredefinedType - //TODO: Handle translation of PYLON member from IfcElementAssemblyTypeEnum in property PredefinedType - throw new System.NotImplementedException(); + return this.GetUserDefined(); //## case IfcElementAssemblyTypeEnum.RAIL_MECHANICAL_EQUIPMENT_ASSEMBLY: //## Handle translation of RAIL_MECHANICAL_EQUIPMENT_ASSEMBLY member from IfcElementAssemblyTypeEnum in property PredefinedType - //TODO: Handle translation of RAIL_MECHANICAL_EQUIPMENT_ASSEMBLY member from IfcElementAssemblyTypeEnum in property PredefinedType - throw new System.NotImplementedException(); + return this.GetUserDefined(); //## case IfcElementAssemblyTypeEnum.REINFORCEMENT_UNIT: return Ifc4.Interfaces.IfcElementAssemblyTypeEnum.REINFORCEMENT_UNIT; @@ -144,52 +134,43 @@ public partial class @IfcElementAssembly : IIfcElementAssembly return Ifc4.Interfaces.IfcElementAssemblyTypeEnum.RIGID_FRAME; case IfcElementAssemblyTypeEnum.SHELTER: //## Handle translation of SHELTER member from IfcElementAssemblyTypeEnum in property PredefinedType - //TODO: Handle translation of SHELTER member from IfcElementAssemblyTypeEnum in property PredefinedType - throw new System.NotImplementedException(); + return this.GetUserDefined(); //## case IfcElementAssemblyTypeEnum.SIGNALASSEMBLY: //## Handle translation of SIGNALASSEMBLY member from IfcElementAssemblyTypeEnum in property PredefinedType - //TODO: Handle translation of SIGNALASSEMBLY member from IfcElementAssemblyTypeEnum in property PredefinedType - throw new System.NotImplementedException(); + return this.GetUserDefined(); //## case IfcElementAssemblyTypeEnum.SLAB_FIELD: return Ifc4.Interfaces.IfcElementAssemblyTypeEnum.SLAB_FIELD; case IfcElementAssemblyTypeEnum.SUMPBUSTER: //## Handle translation of SUMPBUSTER member from IfcElementAssemblyTypeEnum in property PredefinedType - //TODO: Handle translation of SUMPBUSTER member from IfcElementAssemblyTypeEnum in property PredefinedType - throw new System.NotImplementedException(); + return this.GetUserDefined(); //## case IfcElementAssemblyTypeEnum.SUPPORTINGASSEMBLY: //## Handle translation of SUPPORTINGASSEMBLY member from IfcElementAssemblyTypeEnum in property PredefinedType - //TODO: Handle translation of SUPPORTINGASSEMBLY member from IfcElementAssemblyTypeEnum in property PredefinedType - throw new System.NotImplementedException(); + return this.GetUserDefined(); //## case IfcElementAssemblyTypeEnum.SUSPENSIONASSEMBLY: //## Handle translation of SUSPENSIONASSEMBLY member from IfcElementAssemblyTypeEnum in property PredefinedType - //TODO: Handle translation of SUSPENSIONASSEMBLY member from IfcElementAssemblyTypeEnum in property PredefinedType - throw new System.NotImplementedException(); + return this.GetUserDefined(); //## case IfcElementAssemblyTypeEnum.TRACKPANEL: //## Handle translation of TRACKPANEL member from IfcElementAssemblyTypeEnum in property PredefinedType - //TODO: Handle translation of TRACKPANEL member from IfcElementAssemblyTypeEnum in property PredefinedType - throw new System.NotImplementedException(); + return this.GetUserDefined(); //## case IfcElementAssemblyTypeEnum.TRACTION_SWITCHING_ASSEMBLY: //## Handle translation of TRACTION_SWITCHING_ASSEMBLY member from IfcElementAssemblyTypeEnum in property PredefinedType - //TODO: Handle translation of TRACTION_SWITCHING_ASSEMBLY member from IfcElementAssemblyTypeEnum in property PredefinedType - throw new System.NotImplementedException(); + return this.GetUserDefined(); //## case IfcElementAssemblyTypeEnum.TRAFFIC_CALMING_DEVICE: //## Handle translation of TRAFFIC_CALMING_DEVICE member from IfcElementAssemblyTypeEnum in property PredefinedType - //TODO: Handle translation of TRAFFIC_CALMING_DEVICE member from IfcElementAssemblyTypeEnum in property PredefinedType - throw new System.NotImplementedException(); + return this.GetUserDefined(); //## case IfcElementAssemblyTypeEnum.TRUSS: return Ifc4.Interfaces.IfcElementAssemblyTypeEnum.TRUSS; case IfcElementAssemblyTypeEnum.TURNOUTPANEL: //## Handle translation of TURNOUTPANEL member from IfcElementAssemblyTypeEnum in property PredefinedType - //TODO: Handle translation of TURNOUTPANEL member from IfcElementAssemblyTypeEnum in property PredefinedType - throw new System.NotImplementedException(); + return this.GetUserDefined(); //## case IfcElementAssemblyTypeEnum.USERDEFINED: //## Optional custom handling of PredefinedType == .USERDEFINED. diff --git a/Xbim.Ifc4x3/Interfaces/IFC4/IfcElementAssemblyType.cs b/Xbim.Ifc4x3/Interfaces/IFC4/IfcElementAssemblyType.cs index a9640cc87..6c4a6f84d 100644 --- a/Xbim.Ifc4x3/Interfaces/IFC4/IfcElementAssemblyType.cs +++ b/Xbim.Ifc4x3/Interfaces/IFC4/IfcElementAssemblyType.cs @@ -32,8 +32,7 @@ Ifc4.Interfaces.IfcElementAssemblyTypeEnum IIfcElementAssemblyType.PredefinedTyp { case IfcElementAssemblyTypeEnum.ABUTMENT: //## Handle translation of ABUTMENT member from IfcElementAssemblyTypeEnum in property PredefinedType - //TODO: Handle translation of ABUTMENT member from IfcElementAssemblyTypeEnum in property PredefinedType - throw new System.NotImplementedException(); + return this.GetUserDefined(); //## case IfcElementAssemblyTypeEnum.ACCESSORY_ASSEMBLY: return Ifc4.Interfaces.IfcElementAssemblyTypeEnum.ACCESSORY_ASSEMBLY; @@ -45,50 +44,41 @@ Ifc4.Interfaces.IfcElementAssemblyTypeEnum IIfcElementAssemblyType.PredefinedTyp return Ifc4.Interfaces.IfcElementAssemblyTypeEnum.BRACED_FRAME; case IfcElementAssemblyTypeEnum.CROSS_BRACING: //## Handle translation of CROSS_BRACING member from IfcElementAssemblyTypeEnum in property PredefinedType - //TODO: Handle translation of CROSS_BRACING member from IfcElementAssemblyTypeEnum in property PredefinedType - throw new System.NotImplementedException(); + return this.GetUserDefined(); //## case IfcElementAssemblyTypeEnum.DECK: //## Handle translation of DECK member from IfcElementAssemblyTypeEnum in property PredefinedType - //TODO: Handle translation of DECK member from IfcElementAssemblyTypeEnum in property PredefinedType - throw new System.NotImplementedException(); + return this.GetUserDefined(); //## case IfcElementAssemblyTypeEnum.DILATATIONPANEL: //## Handle translation of DILATATIONPANEL member from IfcElementAssemblyTypeEnum in property PredefinedType - //TODO: Handle translation of DILATATIONPANEL member from IfcElementAssemblyTypeEnum in property PredefinedType - throw new System.NotImplementedException(); + return this.GetUserDefined(); //## case IfcElementAssemblyTypeEnum.ENTRANCEWORKS: //## Handle translation of ENTRANCEWORKS member from IfcElementAssemblyTypeEnum in property PredefinedType - //TODO: Handle translation of ENTRANCEWORKS member from IfcElementAssemblyTypeEnum in property PredefinedType - throw new System.NotImplementedException(); + return this.GetUserDefined(); //## case IfcElementAssemblyTypeEnum.GIRDER: return Ifc4.Interfaces.IfcElementAssemblyTypeEnum.GIRDER; case IfcElementAssemblyTypeEnum.GRID: //## Handle translation of GRID member from IfcElementAssemblyTypeEnum in property PredefinedType - //TODO: Handle translation of GRID member from IfcElementAssemblyTypeEnum in property PredefinedType - throw new System.NotImplementedException(); + return this.GetUserDefined(); //## case IfcElementAssemblyTypeEnum.MAST: //## Handle translation of MAST member from IfcElementAssemblyTypeEnum in property PredefinedType - //TODO: Handle translation of MAST member from IfcElementAssemblyTypeEnum in property PredefinedType - throw new System.NotImplementedException(); + return this.GetUserDefined(); //## case IfcElementAssemblyTypeEnum.PIER: //## Handle translation of PIER member from IfcElementAssemblyTypeEnum in property PredefinedType - //TODO: Handle translation of PIER member from IfcElementAssemblyTypeEnum in property PredefinedType - throw new System.NotImplementedException(); + return this.GetUserDefined(); //## case IfcElementAssemblyTypeEnum.PYLON: //## Handle translation of PYLON member from IfcElementAssemblyTypeEnum in property PredefinedType - //TODO: Handle translation of PYLON member from IfcElementAssemblyTypeEnum in property PredefinedType - throw new System.NotImplementedException(); + return this.GetUserDefined(); //## case IfcElementAssemblyTypeEnum.RAIL_MECHANICAL_EQUIPMENT_ASSEMBLY: //## Handle translation of RAIL_MECHANICAL_EQUIPMENT_ASSEMBLY member from IfcElementAssemblyTypeEnum in property PredefinedType - //TODO: Handle translation of RAIL_MECHANICAL_EQUIPMENT_ASSEMBLY member from IfcElementAssemblyTypeEnum in property PredefinedType - throw new System.NotImplementedException(); + return this.GetUserDefined(); //## case IfcElementAssemblyTypeEnum.REINFORCEMENT_UNIT: return Ifc4.Interfaces.IfcElementAssemblyTypeEnum.REINFORCEMENT_UNIT; @@ -96,52 +86,43 @@ Ifc4.Interfaces.IfcElementAssemblyTypeEnum IIfcElementAssemblyType.PredefinedTyp return Ifc4.Interfaces.IfcElementAssemblyTypeEnum.RIGID_FRAME; case IfcElementAssemblyTypeEnum.SHELTER: //## Handle translation of SHELTER member from IfcElementAssemblyTypeEnum in property PredefinedType - //TODO: Handle translation of SHELTER member from IfcElementAssemblyTypeEnum in property PredefinedType - throw new System.NotImplementedException(); + return this.GetUserDefined(); //## case IfcElementAssemblyTypeEnum.SIGNALASSEMBLY: //## Handle translation of SIGNALASSEMBLY member from IfcElementAssemblyTypeEnum in property PredefinedType - //TODO: Handle translation of SIGNALASSEMBLY member from IfcElementAssemblyTypeEnum in property PredefinedType - throw new System.NotImplementedException(); + return this.GetUserDefined(); //## case IfcElementAssemblyTypeEnum.SLAB_FIELD: return Ifc4.Interfaces.IfcElementAssemblyTypeEnum.SLAB_FIELD; case IfcElementAssemblyTypeEnum.SUMPBUSTER: //## Handle translation of SUMPBUSTER member from IfcElementAssemblyTypeEnum in property PredefinedType - //TODO: Handle translation of SUMPBUSTER member from IfcElementAssemblyTypeEnum in property PredefinedType - throw new System.NotImplementedException(); + return this.GetUserDefined(); //## case IfcElementAssemblyTypeEnum.SUPPORTINGASSEMBLY: //## Handle translation of SUPPORTINGASSEMBLY member from IfcElementAssemblyTypeEnum in property PredefinedType - //TODO: Handle translation of SUPPORTINGASSEMBLY member from IfcElementAssemblyTypeEnum in property PredefinedType - throw new System.NotImplementedException(); + return this.GetUserDefined(); //## case IfcElementAssemblyTypeEnum.SUSPENSIONASSEMBLY: //## Handle translation of SUSPENSIONASSEMBLY member from IfcElementAssemblyTypeEnum in property PredefinedType - //TODO: Handle translation of SUSPENSIONASSEMBLY member from IfcElementAssemblyTypeEnum in property PredefinedType - throw new System.NotImplementedException(); + return this.GetUserDefined(); //## case IfcElementAssemblyTypeEnum.TRACKPANEL: //## Handle translation of TRACKPANEL member from IfcElementAssemblyTypeEnum in property PredefinedType - //TODO: Handle translation of TRACKPANEL member from IfcElementAssemblyTypeEnum in property PredefinedType - throw new System.NotImplementedException(); + return this.GetUserDefined(); //## case IfcElementAssemblyTypeEnum.TRACTION_SWITCHING_ASSEMBLY: //## Handle translation of TRACTION_SWITCHING_ASSEMBLY member from IfcElementAssemblyTypeEnum in property PredefinedType - //TODO: Handle translation of TRACTION_SWITCHING_ASSEMBLY member from IfcElementAssemblyTypeEnum in property PredefinedType - throw new System.NotImplementedException(); + return this.GetUserDefined(); //## case IfcElementAssemblyTypeEnum.TRAFFIC_CALMING_DEVICE: //## Handle translation of TRAFFIC_CALMING_DEVICE member from IfcElementAssemblyTypeEnum in property PredefinedType - //TODO: Handle translation of TRAFFIC_CALMING_DEVICE member from IfcElementAssemblyTypeEnum in property PredefinedType - throw new System.NotImplementedException(); + return this.GetUserDefined(); //## case IfcElementAssemblyTypeEnum.TRUSS: return Ifc4.Interfaces.IfcElementAssemblyTypeEnum.TRUSS; case IfcElementAssemblyTypeEnum.TURNOUTPANEL: //## Handle translation of TURNOUTPANEL member from IfcElementAssemblyTypeEnum in property PredefinedType - //TODO: Handle translation of TURNOUTPANEL member from IfcElementAssemblyTypeEnum in property PredefinedType - throw new System.NotImplementedException(); + return this.GetUserDefined(); //## case IfcElementAssemblyTypeEnum.USERDEFINED: //## Optional custom handling of PredefinedType == .USERDEFINED. diff --git a/Xbim.Ifc4x3/Interfaces/IFC4/IfcFireSuppressionTerminal.cs b/Xbim.Ifc4x3/Interfaces/IFC4/IfcFireSuppressionTerminal.cs index 7532ebe84..50a9a860e 100644 --- a/Xbim.Ifc4x3/Interfaces/IFC4/IfcFireSuppressionTerminal.cs +++ b/Xbim.Ifc4x3/Interfaces/IFC4/IfcFireSuppressionTerminal.cs @@ -36,8 +36,7 @@ public partial class @IfcFireSuppressionTerminal : IIfcFireSuppressionTerminal return Ifc4.Interfaces.IfcFireSuppressionTerminalTypeEnum.FIREHYDRANT; case IfcFireSuppressionTerminalTypeEnum.FIREMONITOR: //## Handle translation of FIREMONITOR member from IfcFireSuppressionTerminalTypeEnum in property PredefinedType - //TODO: Handle translation of FIREMONITOR member from IfcFireSuppressionTerminalTypeEnum in property PredefinedType - throw new System.NotImplementedException(); + return this.GetUserDefined(); //## case IfcFireSuppressionTerminalTypeEnum.HOSEREEL: return Ifc4.Interfaces.IfcFireSuppressionTerminalTypeEnum.HOSEREEL; diff --git a/Xbim.Ifc4x3/Interfaces/IFC4/IfcFireSuppressionTerminalType.cs b/Xbim.Ifc4x3/Interfaces/IFC4/IfcFireSuppressionTerminalType.cs index 63c26f0c0..93050adfe 100644 --- a/Xbim.Ifc4x3/Interfaces/IFC4/IfcFireSuppressionTerminalType.cs +++ b/Xbim.Ifc4x3/Interfaces/IFC4/IfcFireSuppressionTerminalType.cs @@ -36,8 +36,7 @@ Ifc4.Interfaces.IfcFireSuppressionTerminalTypeEnum IIfcFireSuppressionTerminalTy return Ifc4.Interfaces.IfcFireSuppressionTerminalTypeEnum.FIREHYDRANT; case IfcFireSuppressionTerminalTypeEnum.FIREMONITOR: //## Handle translation of FIREMONITOR member from IfcFireSuppressionTerminalTypeEnum in property PredefinedType - //TODO: Handle translation of FIREMONITOR member from IfcFireSuppressionTerminalTypeEnum in property PredefinedType - throw new System.NotImplementedException(); + return this.GetUserDefined(); //## case IfcFireSuppressionTerminalTypeEnum.HOSEREEL: return Ifc4.Interfaces.IfcFireSuppressionTerminalTypeEnum.HOSEREEL; diff --git a/Xbim.Ifc4x3/Interfaces/IFC4/IfcFlowInstrument.cs b/Xbim.Ifc4x3/Interfaces/IFC4/IfcFlowInstrument.cs index 755aa9833..ba27a7212 100644 --- a/Xbim.Ifc4x3/Interfaces/IFC4/IfcFlowInstrument.cs +++ b/Xbim.Ifc4x3/Interfaces/IFC4/IfcFlowInstrument.cs @@ -34,8 +34,7 @@ public partial class @IfcFlowInstrument : IIfcFlowInstrument return Ifc4.Interfaces.IfcFlowInstrumentTypeEnum.AMMETER; case IfcFlowInstrumentTypeEnum.COMBINED: //## Handle translation of COMBINED member from IfcFlowInstrumentTypeEnum in property PredefinedType - //TODO: Handle translation of COMBINED member from IfcFlowInstrumentTypeEnum in property PredefinedType - throw new System.NotImplementedException(); + return this.GetUserDefined(); //## case IfcFlowInstrumentTypeEnum.FREQUENCYMETER: return Ifc4.Interfaces.IfcFlowInstrumentTypeEnum.FREQUENCYMETER; @@ -49,8 +48,7 @@ public partial class @IfcFlowInstrument : IIfcFlowInstrument return Ifc4.Interfaces.IfcFlowInstrumentTypeEnum.THERMOMETER; case IfcFlowInstrumentTypeEnum.VOLTMETER: //## Handle translation of VOLTMETER member from IfcFlowInstrumentTypeEnum in property PredefinedType - //TODO: Handle translation of VOLTMETER member from IfcFlowInstrumentTypeEnum in property PredefinedType - throw new System.NotImplementedException(); + return this.GetUserDefined(); //## case IfcFlowInstrumentTypeEnum.VOLTMETER_PEAK: return Ifc4.Interfaces.IfcFlowInstrumentTypeEnum.VOLTMETER_PEAK; diff --git a/Xbim.Ifc4x3/Interfaces/IFC4/IfcFlowInstrumentType.cs b/Xbim.Ifc4x3/Interfaces/IFC4/IfcFlowInstrumentType.cs index 270dcdcb2..616c3ab9e 100644 --- a/Xbim.Ifc4x3/Interfaces/IFC4/IfcFlowInstrumentType.cs +++ b/Xbim.Ifc4x3/Interfaces/IFC4/IfcFlowInstrumentType.cs @@ -34,8 +34,7 @@ Ifc4.Interfaces.IfcFlowInstrumentTypeEnum IIfcFlowInstrumentType.PredefinedType return Ifc4.Interfaces.IfcFlowInstrumentTypeEnum.AMMETER; case IfcFlowInstrumentTypeEnum.COMBINED: //## Handle translation of COMBINED member from IfcFlowInstrumentTypeEnum in property PredefinedType - //TODO: Handle translation of COMBINED member from IfcFlowInstrumentTypeEnum in property PredefinedType - throw new System.NotImplementedException(); + return this.GetUserDefined(); //## case IfcFlowInstrumentTypeEnum.FREQUENCYMETER: return Ifc4.Interfaces.IfcFlowInstrumentTypeEnum.FREQUENCYMETER; @@ -49,8 +48,7 @@ Ifc4.Interfaces.IfcFlowInstrumentTypeEnum IIfcFlowInstrumentType.PredefinedType return Ifc4.Interfaces.IfcFlowInstrumentTypeEnum.THERMOMETER; case IfcFlowInstrumentTypeEnum.VOLTMETER: //## Handle translation of VOLTMETER member from IfcFlowInstrumentTypeEnum in property PredefinedType - //TODO: Handle translation of VOLTMETER member from IfcFlowInstrumentTypeEnum in property PredefinedType - throw new System.NotImplementedException(); + return this.GetUserDefined(); //## case IfcFlowInstrumentTypeEnum.VOLTMETER_PEAK: return Ifc4.Interfaces.IfcFlowInstrumentTypeEnum.VOLTMETER_PEAK; diff --git a/Xbim.Ifc4x3/Interfaces/IFC4/IfcFurniture.cs b/Xbim.Ifc4x3/Interfaces/IFC4/IfcFurniture.cs index c57431970..29a6f85b9 100644 --- a/Xbim.Ifc4x3/Interfaces/IFC4/IfcFurniture.cs +++ b/Xbim.Ifc4x3/Interfaces/IFC4/IfcFurniture.cs @@ -46,8 +46,7 @@ public partial class @IfcFurniture : IIfcFurniture return Ifc4.Interfaces.IfcFurnitureTypeEnum.TABLE; case IfcFurnitureTypeEnum.TECHNICALCABINET: //## Handle translation of TECHNICALCABINET member from IfcFurnitureTypeEnum in property PredefinedType - //TODO: Handle translation of TECHNICALCABINET member from IfcFurnitureTypeEnum in property PredefinedType - throw new System.NotImplementedException(); + return this.GetUserDefined(); //## case IfcFurnitureTypeEnum.USERDEFINED: //## Optional custom handling of PredefinedType == .USERDEFINED. diff --git a/Xbim.Ifc4x3/Interfaces/IFC4/IfcFurnitureType.cs b/Xbim.Ifc4x3/Interfaces/IFC4/IfcFurnitureType.cs index 435c42a18..f8ade6971 100644 --- a/Xbim.Ifc4x3/Interfaces/IFC4/IfcFurnitureType.cs +++ b/Xbim.Ifc4x3/Interfaces/IFC4/IfcFurnitureType.cs @@ -88,8 +88,7 @@ Ifc4.Interfaces.IfcAssemblyPlaceEnum IIfcFurnitureType.AssemblyPlace return Ifc4.Interfaces.IfcFurnitureTypeEnum.TABLE; case IfcFurnitureTypeEnum.TECHNICALCABINET: //## Handle translation of TECHNICALCABINET member from IfcFurnitureTypeEnum in property PredefinedType - //TODO: Handle translation of TECHNICALCABINET member from IfcFurnitureTypeEnum in property PredefinedType - throw new System.NotImplementedException(); + return this.GetUserDefined(); //## case IfcFurnitureTypeEnum.USERDEFINED: //## Optional custom handling of PredefinedType == .USERDEFINED. diff --git a/Xbim.Ifc4x3/Interfaces/IFC4/IfcGeographicElement.cs b/Xbim.Ifc4x3/Interfaces/IFC4/IfcGeographicElement.cs index d0c1a60c8..9b7fe9ffa 100644 --- a/Xbim.Ifc4x3/Interfaces/IFC4/IfcGeographicElement.cs +++ b/Xbim.Ifc4x3/Interfaces/IFC4/IfcGeographicElement.cs @@ -32,15 +32,13 @@ public partial class @IfcGeographicElement : IIfcGeographicElement { case IfcGeographicElementTypeEnum.SOIL_BORING_POINT: //## Handle translation of SOIL_BORING_POINT member from IfcGeographicElementTypeEnum in property PredefinedType - //TODO: Handle translation of SOIL_BORING_POINT member from IfcGeographicElementTypeEnum in property PredefinedType - throw new System.NotImplementedException(); + return this.GetUserDefined(); //## case IfcGeographicElementTypeEnum.TERRAIN: return Ifc4.Interfaces.IfcGeographicElementTypeEnum.TERRAIN; case IfcGeographicElementTypeEnum.VEGETATION: //## Handle translation of VEGETATION member from IfcGeographicElementTypeEnum in property PredefinedType - //TODO: Handle translation of VEGETATION member from IfcGeographicElementTypeEnum in property PredefinedType - throw new System.NotImplementedException(); + return this.GetUserDefined(); //## case IfcGeographicElementTypeEnum.USERDEFINED: //## Optional custom handling of PredefinedType == .USERDEFINED. diff --git a/Xbim.Ifc4x3/Interfaces/IFC4/IfcGeographicElementType.cs b/Xbim.Ifc4x3/Interfaces/IFC4/IfcGeographicElementType.cs index 39283df68..ccc80ffa8 100644 --- a/Xbim.Ifc4x3/Interfaces/IFC4/IfcGeographicElementType.cs +++ b/Xbim.Ifc4x3/Interfaces/IFC4/IfcGeographicElementType.cs @@ -32,15 +32,13 @@ Ifc4.Interfaces.IfcGeographicElementTypeEnum IIfcGeographicElementType.Predefine { case IfcGeographicElementTypeEnum.SOIL_BORING_POINT: //## Handle translation of SOIL_BORING_POINT member from IfcGeographicElementTypeEnum in property PredefinedType - //TODO: Handle translation of SOIL_BORING_POINT member from IfcGeographicElementTypeEnum in property PredefinedType - throw new System.NotImplementedException(); + return this.GetUserDefined(); //## case IfcGeographicElementTypeEnum.TERRAIN: return Ifc4.Interfaces.IfcGeographicElementTypeEnum.TERRAIN; case IfcGeographicElementTypeEnum.VEGETATION: //## Handle translation of VEGETATION member from IfcGeographicElementTypeEnum in property PredefinedType - //TODO: Handle translation of VEGETATION member from IfcGeographicElementTypeEnum in property PredefinedType - throw new System.NotImplementedException(); + return this.GetUserDefined(); //## case IfcGeographicElementTypeEnum.USERDEFINED: //## Optional custom handling of PredefinedType == .USERDEFINED. diff --git a/Xbim.Ifc4x3/Interfaces/IFC4/IfcHeatExchanger.cs b/Xbim.Ifc4x3/Interfaces/IFC4/IfcHeatExchanger.cs index 57d9ca254..e1ec30071 100644 --- a/Xbim.Ifc4x3/Interfaces/IFC4/IfcHeatExchanger.cs +++ b/Xbim.Ifc4x3/Interfaces/IFC4/IfcHeatExchanger.cs @@ -36,8 +36,7 @@ public partial class @IfcHeatExchanger : IIfcHeatExchanger return Ifc4.Interfaces.IfcHeatExchangerTypeEnum.SHELLANDTUBE; case IfcHeatExchangerTypeEnum.TURNOUTHEATING: //## Handle translation of TURNOUTHEATING member from IfcHeatExchangerTypeEnum in property PredefinedType - //TODO: Handle translation of TURNOUTHEATING member from IfcHeatExchangerTypeEnum in property PredefinedType - throw new System.NotImplementedException(); + return this.GetUserDefined(); //## case IfcHeatExchangerTypeEnum.USERDEFINED: //## Optional custom handling of PredefinedType == .USERDEFINED. diff --git a/Xbim.Ifc4x3/Interfaces/IFC4/IfcHeatExchangerType.cs b/Xbim.Ifc4x3/Interfaces/IFC4/IfcHeatExchangerType.cs index dd73f8e26..d697aef18 100644 --- a/Xbim.Ifc4x3/Interfaces/IFC4/IfcHeatExchangerType.cs +++ b/Xbim.Ifc4x3/Interfaces/IFC4/IfcHeatExchangerType.cs @@ -36,8 +36,7 @@ Ifc4.Interfaces.IfcHeatExchangerTypeEnum IIfcHeatExchangerType.PredefinedType return Ifc4.Interfaces.IfcHeatExchangerTypeEnum.SHELLANDTUBE; case IfcHeatExchangerTypeEnum.TURNOUTHEATING: //## Handle translation of TURNOUTHEATING member from IfcHeatExchangerTypeEnum in property PredefinedType - //TODO: Handle translation of TURNOUTHEATING member from IfcHeatExchangerTypeEnum in property PredefinedType - throw new System.NotImplementedException(); + return this.GetUserDefined(); //## case IfcHeatExchangerTypeEnum.USERDEFINED: //## Optional custom handling of PredefinedType == .USERDEFINED. diff --git a/Xbim.Ifc4x3/Interfaces/IFC4/IfcMechanicalFastener.cs b/Xbim.Ifc4x3/Interfaces/IFC4/IfcMechanicalFastener.cs index a3e2fca65..12af6c54f 100644 --- a/Xbim.Ifc4x3/Interfaces/IFC4/IfcMechanicalFastener.cs +++ b/Xbim.Ifc4x3/Interfaces/IFC4/IfcMechanicalFastener.cs @@ -70,13 +70,11 @@ public partial class @IfcMechanicalFastener : IIfcMechanicalFastener return Ifc4.Interfaces.IfcMechanicalFastenerTypeEnum.BOLT; case IfcMechanicalFastenerTypeEnum.CHAIN: //## Handle translation of CHAIN member from IfcMechanicalFastenerTypeEnum in property PredefinedType - //TODO: Handle translation of CHAIN member from IfcMechanicalFastenerTypeEnum in property PredefinedType - throw new System.NotImplementedException(); + return this.GetUserDefined(); //## case IfcMechanicalFastenerTypeEnum.COUPLER: //## Handle translation of COUPLER member from IfcMechanicalFastenerTypeEnum in property PredefinedType - //TODO: Handle translation of COUPLER member from IfcMechanicalFastenerTypeEnum in property PredefinedType - throw new System.NotImplementedException(); + return this.GetUserDefined(); //## case IfcMechanicalFastenerTypeEnum.DOWEL: return Ifc4.Interfaces.IfcMechanicalFastenerTypeEnum.DOWEL; @@ -86,20 +84,17 @@ public partial class @IfcMechanicalFastener : IIfcMechanicalFastener return Ifc4.Interfaces.IfcMechanicalFastenerTypeEnum.NAILPLATE; case IfcMechanicalFastenerTypeEnum.RAILFASTENING: //## Handle translation of RAILFASTENING member from IfcMechanicalFastenerTypeEnum in property PredefinedType - //TODO: Handle translation of RAILFASTENING member from IfcMechanicalFastenerTypeEnum in property PredefinedType - throw new System.NotImplementedException(); + return this.GetUserDefined(); //## case IfcMechanicalFastenerTypeEnum.RAILJOINT: //## Handle translation of RAILJOINT member from IfcMechanicalFastenerTypeEnum in property PredefinedType - //TODO: Handle translation of RAILJOINT member from IfcMechanicalFastenerTypeEnum in property PredefinedType - throw new System.NotImplementedException(); + return this.GetUserDefined(); //## case IfcMechanicalFastenerTypeEnum.RIVET: return Ifc4.Interfaces.IfcMechanicalFastenerTypeEnum.RIVET; case IfcMechanicalFastenerTypeEnum.ROPE: //## Handle translation of ROPE member from IfcMechanicalFastenerTypeEnum in property PredefinedType - //TODO: Handle translation of ROPE member from IfcMechanicalFastenerTypeEnum in property PredefinedType - throw new System.NotImplementedException(); + return this.GetUserDefined(); //## case IfcMechanicalFastenerTypeEnum.SCREW: return Ifc4.Interfaces.IfcMechanicalFastenerTypeEnum.SCREW; diff --git a/Xbim.Ifc4x3/Interfaces/IFC4/IfcMechanicalFastenerType.cs b/Xbim.Ifc4x3/Interfaces/IFC4/IfcMechanicalFastenerType.cs index fa0a0191a..b89731177 100644 --- a/Xbim.Ifc4x3/Interfaces/IFC4/IfcMechanicalFastenerType.cs +++ b/Xbim.Ifc4x3/Interfaces/IFC4/IfcMechanicalFastenerType.cs @@ -36,13 +36,11 @@ Ifc4.Interfaces.IfcMechanicalFastenerTypeEnum IIfcMechanicalFastenerType.Predefi return Ifc4.Interfaces.IfcMechanicalFastenerTypeEnum.BOLT; case IfcMechanicalFastenerTypeEnum.CHAIN: //## Handle translation of CHAIN member from IfcMechanicalFastenerTypeEnum in property PredefinedType - //TODO: Handle translation of CHAIN member from IfcMechanicalFastenerTypeEnum in property PredefinedType - throw new System.NotImplementedException(); + return this.GetUserDefined(); //## case IfcMechanicalFastenerTypeEnum.COUPLER: //## Handle translation of COUPLER member from IfcMechanicalFastenerTypeEnum in property PredefinedType - //TODO: Handle translation of COUPLER member from IfcMechanicalFastenerTypeEnum in property PredefinedType - throw new System.NotImplementedException(); + return this.GetUserDefined(); //## case IfcMechanicalFastenerTypeEnum.DOWEL: return Ifc4.Interfaces.IfcMechanicalFastenerTypeEnum.DOWEL; @@ -52,20 +50,17 @@ Ifc4.Interfaces.IfcMechanicalFastenerTypeEnum IIfcMechanicalFastenerType.Predefi return Ifc4.Interfaces.IfcMechanicalFastenerTypeEnum.NAILPLATE; case IfcMechanicalFastenerTypeEnum.RAILFASTENING: //## Handle translation of RAILFASTENING member from IfcMechanicalFastenerTypeEnum in property PredefinedType - //TODO: Handle translation of RAILFASTENING member from IfcMechanicalFastenerTypeEnum in property PredefinedType - throw new System.NotImplementedException(); + return this.GetUserDefined(); //## case IfcMechanicalFastenerTypeEnum.RAILJOINT: //## Handle translation of RAILJOINT member from IfcMechanicalFastenerTypeEnum in property PredefinedType - //TODO: Handle translation of RAILJOINT member from IfcMechanicalFastenerTypeEnum in property PredefinedType - throw new System.NotImplementedException(); + return this.GetUserDefined(); //## case IfcMechanicalFastenerTypeEnum.RIVET: return Ifc4.Interfaces.IfcMechanicalFastenerTypeEnum.RIVET; case IfcMechanicalFastenerTypeEnum.ROPE: //## Handle translation of ROPE member from IfcMechanicalFastenerTypeEnum in property PredefinedType - //TODO: Handle translation of ROPE member from IfcMechanicalFastenerTypeEnum in property PredefinedType - throw new System.NotImplementedException(); + return this.GetUserDefined(); //## case IfcMechanicalFastenerTypeEnum.SCREW: return Ifc4.Interfaces.IfcMechanicalFastenerTypeEnum.SCREW; diff --git a/Xbim.Ifc4x3/Interfaces/IFC4/IfcMember.cs b/Xbim.Ifc4x3/Interfaces/IFC4/IfcMember.cs index c4f1181dc..dbefe9ac9 100644 --- a/Xbim.Ifc4x3/Interfaces/IFC4/IfcMember.cs +++ b/Xbim.Ifc4x3/Interfaces/IFC4/IfcMember.cs @@ -32,8 +32,7 @@ public partial class @IfcMember : IIfcMember { case IfcMemberTypeEnum.ARCH_SEGMENT: //## Handle translation of ARCH_SEGMENT member from IfcMemberTypeEnum in property PredefinedType - //TODO: Handle translation of ARCH_SEGMENT member from IfcMemberTypeEnum in property PredefinedType - throw new System.NotImplementedException(); + return this.GetUserDefined(); //## case IfcMemberTypeEnum.BRACE: return Ifc4.Interfaces.IfcMemberTypeEnum.BRACE; @@ -55,20 +54,17 @@ public partial class @IfcMember : IIfcMember return Ifc4.Interfaces.IfcMemberTypeEnum.RAFTER; case IfcMemberTypeEnum.STAY_CABLE: //## Handle translation of STAY_CABLE member from IfcMemberTypeEnum in property PredefinedType - //TODO: Handle translation of STAY_CABLE member from IfcMemberTypeEnum in property PredefinedType - throw new System.NotImplementedException(); + return this.GetUserDefined(); //## case IfcMemberTypeEnum.STIFFENING_RIB: //## Handle translation of STIFFENING_RIB member from IfcMemberTypeEnum in property PredefinedType - //TODO: Handle translation of STIFFENING_RIB member from IfcMemberTypeEnum in property PredefinedType - throw new System.NotImplementedException(); + return this.GetUserDefined(); //## case IfcMemberTypeEnum.STRINGER: return Ifc4.Interfaces.IfcMemberTypeEnum.STRINGER; case IfcMemberTypeEnum.STRUCTURALCABLE: //## Handle translation of STRUCTURALCABLE member from IfcMemberTypeEnum in property PredefinedType - //TODO: Handle translation of STRUCTURALCABLE member from IfcMemberTypeEnum in property PredefinedType - throw new System.NotImplementedException(); + return this.GetUserDefined(); //## case IfcMemberTypeEnum.STRUT: return Ifc4.Interfaces.IfcMemberTypeEnum.STRUT; @@ -76,18 +72,15 @@ public partial class @IfcMember : IIfcMember return Ifc4.Interfaces.IfcMemberTypeEnum.STUD; case IfcMemberTypeEnum.SUSPENDER: //## Handle translation of SUSPENDER member from IfcMemberTypeEnum in property PredefinedType - //TODO: Handle translation of SUSPENDER member from IfcMemberTypeEnum in property PredefinedType - throw new System.NotImplementedException(); + return this.GetUserDefined(); //## case IfcMemberTypeEnum.SUSPENSION_CABLE: //## Handle translation of SUSPENSION_CABLE member from IfcMemberTypeEnum in property PredefinedType - //TODO: Handle translation of SUSPENSION_CABLE member from IfcMemberTypeEnum in property PredefinedType - throw new System.NotImplementedException(); + return this.GetUserDefined(); //## case IfcMemberTypeEnum.TIEBAR: //## Handle translation of TIEBAR member from IfcMemberTypeEnum in property PredefinedType - //TODO: Handle translation of TIEBAR member from IfcMemberTypeEnum in property PredefinedType - throw new System.NotImplementedException(); + return this.GetUserDefined(); //## case IfcMemberTypeEnum.USERDEFINED: //## Optional custom handling of PredefinedType == .USERDEFINED. diff --git a/Xbim.Ifc4x3/Interfaces/IFC4/IfcMemberType.cs b/Xbim.Ifc4x3/Interfaces/IFC4/IfcMemberType.cs index d3528052d..165ddfba7 100644 --- a/Xbim.Ifc4x3/Interfaces/IFC4/IfcMemberType.cs +++ b/Xbim.Ifc4x3/Interfaces/IFC4/IfcMemberType.cs @@ -32,8 +32,7 @@ Ifc4.Interfaces.IfcMemberTypeEnum IIfcMemberType.PredefinedType { case IfcMemberTypeEnum.ARCH_SEGMENT: //## Handle translation of ARCH_SEGMENT member from IfcMemberTypeEnum in property PredefinedType - //TODO: Handle translation of ARCH_SEGMENT member from IfcMemberTypeEnum in property PredefinedType - throw new System.NotImplementedException(); + return this.GetUserDefined(); //## case IfcMemberTypeEnum.BRACE: return Ifc4.Interfaces.IfcMemberTypeEnum.BRACE; @@ -55,20 +54,17 @@ Ifc4.Interfaces.IfcMemberTypeEnum IIfcMemberType.PredefinedType return Ifc4.Interfaces.IfcMemberTypeEnum.RAFTER; case IfcMemberTypeEnum.STAY_CABLE: //## Handle translation of STAY_CABLE member from IfcMemberTypeEnum in property PredefinedType - //TODO: Handle translation of STAY_CABLE member from IfcMemberTypeEnum in property PredefinedType - throw new System.NotImplementedException(); + return this.GetUserDefined(); //## case IfcMemberTypeEnum.STIFFENING_RIB: //## Handle translation of STIFFENING_RIB member from IfcMemberTypeEnum in property PredefinedType - //TODO: Handle translation of STIFFENING_RIB member from IfcMemberTypeEnum in property PredefinedType - throw new System.NotImplementedException(); + return this.GetUserDefined(); //## case IfcMemberTypeEnum.STRINGER: return Ifc4.Interfaces.IfcMemberTypeEnum.STRINGER; case IfcMemberTypeEnum.STRUCTURALCABLE: //## Handle translation of STRUCTURALCABLE member from IfcMemberTypeEnum in property PredefinedType - //TODO: Handle translation of STRUCTURALCABLE member from IfcMemberTypeEnum in property PredefinedType - throw new System.NotImplementedException(); + return this.GetUserDefined(); //## case IfcMemberTypeEnum.STRUT: return Ifc4.Interfaces.IfcMemberTypeEnum.STRUT; @@ -76,18 +72,15 @@ Ifc4.Interfaces.IfcMemberTypeEnum IIfcMemberType.PredefinedType return Ifc4.Interfaces.IfcMemberTypeEnum.STUD; case IfcMemberTypeEnum.SUSPENDER: //## Handle translation of SUSPENDER member from IfcMemberTypeEnum in property PredefinedType - //TODO: Handle translation of SUSPENDER member from IfcMemberTypeEnum in property PredefinedType - throw new System.NotImplementedException(); + return this.GetUserDefined(); //## case IfcMemberTypeEnum.SUSPENSION_CABLE: //## Handle translation of SUSPENSION_CABLE member from IfcMemberTypeEnum in property PredefinedType - //TODO: Handle translation of SUSPENSION_CABLE member from IfcMemberTypeEnum in property PredefinedType - throw new System.NotImplementedException(); + return this.GetUserDefined(); //## case IfcMemberTypeEnum.TIEBAR: //## Handle translation of TIEBAR member from IfcMemberTypeEnum in property PredefinedType - //TODO: Handle translation of TIEBAR member from IfcMemberTypeEnum in property PredefinedType - throw new System.NotImplementedException(); + return this.GetUserDefined(); //## case IfcMemberTypeEnum.USERDEFINED: //## Optional custom handling of PredefinedType == .USERDEFINED. diff --git a/Xbim.Ifc4x3/Interfaces/IFC4/IfcPlate.cs b/Xbim.Ifc4x3/Interfaces/IFC4/IfcPlate.cs index 6daa6bb98..81da99112 100644 --- a/Xbim.Ifc4x3/Interfaces/IFC4/IfcPlate.cs +++ b/Xbim.Ifc4x3/Interfaces/IFC4/IfcPlate.cs @@ -32,42 +32,35 @@ public partial class @IfcPlate : IIfcPlate { case IfcPlateTypeEnum.BASE_PLATE: //## Handle translation of BASE_PLATE member from IfcPlateTypeEnum in property PredefinedType - //TODO: Handle translation of BASE_PLATE member from IfcPlateTypeEnum in property PredefinedType - throw new System.NotImplementedException(); + return this.GetUserDefined(); //## case IfcPlateTypeEnum.COVER_PLATE: //## Handle translation of COVER_PLATE member from IfcPlateTypeEnum in property PredefinedType - //TODO: Handle translation of COVER_PLATE member from IfcPlateTypeEnum in property PredefinedType - throw new System.NotImplementedException(); + return this.GetUserDefined(); //## case IfcPlateTypeEnum.CURTAIN_PANEL: return Ifc4.Interfaces.IfcPlateTypeEnum.CURTAIN_PANEL; case IfcPlateTypeEnum.FLANGE_PLATE: //## Handle translation of FLANGE_PLATE member from IfcPlateTypeEnum in property PredefinedType - //TODO: Handle translation of FLANGE_PLATE member from IfcPlateTypeEnum in property PredefinedType - throw new System.NotImplementedException(); + return this.GetUserDefined(); //## case IfcPlateTypeEnum.GUSSET_PLATE: //## Handle translation of GUSSET_PLATE member from IfcPlateTypeEnum in property PredefinedType - //TODO: Handle translation of GUSSET_PLATE member from IfcPlateTypeEnum in property PredefinedType - throw new System.NotImplementedException(); + return this.GetUserDefined(); //## case IfcPlateTypeEnum.SHEET: return Ifc4.Interfaces.IfcPlateTypeEnum.SHEET; case IfcPlateTypeEnum.SPLICE_PLATE: //## Handle translation of SPLICE_PLATE member from IfcPlateTypeEnum in property PredefinedType - //TODO: Handle translation of SPLICE_PLATE member from IfcPlateTypeEnum in property PredefinedType - throw new System.NotImplementedException(); + return this.GetUserDefined(); //## case IfcPlateTypeEnum.STIFFENER_PLATE: //## Handle translation of STIFFENER_PLATE member from IfcPlateTypeEnum in property PredefinedType - //TODO: Handle translation of STIFFENER_PLATE member from IfcPlateTypeEnum in property PredefinedType - throw new System.NotImplementedException(); + return this.GetUserDefined(); //## case IfcPlateTypeEnum.WEB_PLATE: //## Handle translation of WEB_PLATE member from IfcPlateTypeEnum in property PredefinedType - //TODO: Handle translation of WEB_PLATE member from IfcPlateTypeEnum in property PredefinedType - throw new System.NotImplementedException(); + return this.GetUserDefined(); //## case IfcPlateTypeEnum.USERDEFINED: //## Optional custom handling of PredefinedType == .USERDEFINED. diff --git a/Xbim.Ifc4x3/Interfaces/IFC4/IfcPlateType.cs b/Xbim.Ifc4x3/Interfaces/IFC4/IfcPlateType.cs index 94cdceba3..de2b659a8 100644 --- a/Xbim.Ifc4x3/Interfaces/IFC4/IfcPlateType.cs +++ b/Xbim.Ifc4x3/Interfaces/IFC4/IfcPlateType.cs @@ -32,42 +32,35 @@ Ifc4.Interfaces.IfcPlateTypeEnum IIfcPlateType.PredefinedType { case IfcPlateTypeEnum.BASE_PLATE: //## Handle translation of BASE_PLATE member from IfcPlateTypeEnum in property PredefinedType - //TODO: Handle translation of BASE_PLATE member from IfcPlateTypeEnum in property PredefinedType - throw new System.NotImplementedException(); + return this.GetUserDefined(); //## case IfcPlateTypeEnum.COVER_PLATE: //## Handle translation of COVER_PLATE member from IfcPlateTypeEnum in property PredefinedType - //TODO: Handle translation of COVER_PLATE member from IfcPlateTypeEnum in property PredefinedType - throw new System.NotImplementedException(); + return this.GetUserDefined(); //## case IfcPlateTypeEnum.CURTAIN_PANEL: return Ifc4.Interfaces.IfcPlateTypeEnum.CURTAIN_PANEL; case IfcPlateTypeEnum.FLANGE_PLATE: //## Handle translation of FLANGE_PLATE member from IfcPlateTypeEnum in property PredefinedType - //TODO: Handle translation of FLANGE_PLATE member from IfcPlateTypeEnum in property PredefinedType - throw new System.NotImplementedException(); + return this.GetUserDefined(); //## case IfcPlateTypeEnum.GUSSET_PLATE: //## Handle translation of GUSSET_PLATE member from IfcPlateTypeEnum in property PredefinedType - //TODO: Handle translation of GUSSET_PLATE member from IfcPlateTypeEnum in property PredefinedType - throw new System.NotImplementedException(); + return this.GetUserDefined(); //## case IfcPlateTypeEnum.SHEET: return Ifc4.Interfaces.IfcPlateTypeEnum.SHEET; case IfcPlateTypeEnum.SPLICE_PLATE: //## Handle translation of SPLICE_PLATE member from IfcPlateTypeEnum in property PredefinedType - //TODO: Handle translation of SPLICE_PLATE member from IfcPlateTypeEnum in property PredefinedType - throw new System.NotImplementedException(); + return this.GetUserDefined(); //## case IfcPlateTypeEnum.STIFFENER_PLATE: //## Handle translation of STIFFENER_PLATE member from IfcPlateTypeEnum in property PredefinedType - //TODO: Handle translation of STIFFENER_PLATE member from IfcPlateTypeEnum in property PredefinedType - throw new System.NotImplementedException(); + return this.GetUserDefined(); //## case IfcPlateTypeEnum.WEB_PLATE: //## Handle translation of WEB_PLATE member from IfcPlateTypeEnum in property PredefinedType - //TODO: Handle translation of WEB_PLATE member from IfcPlateTypeEnum in property PredefinedType - throw new System.NotImplementedException(); + return this.GetUserDefined(); //## case IfcPlateTypeEnum.USERDEFINED: //## Optional custom handling of PredefinedType == .USERDEFINED. diff --git a/Xbim.Ifc4x3/Interfaces/IFC4/IfcProjectionElement.cs b/Xbim.Ifc4x3/Interfaces/IFC4/IfcProjectionElement.cs index 7ea5d4a19..027613d07 100644 --- a/Xbim.Ifc4x3/Interfaces/IFC4/IfcProjectionElement.cs +++ b/Xbim.Ifc4x3/Interfaces/IFC4/IfcProjectionElement.cs @@ -32,13 +32,11 @@ public partial class @IfcProjectionElement : IIfcProjectionElement { case IfcProjectionElementTypeEnum.BLISTER: //## Handle translation of BLISTER member from IfcProjectionElementTypeEnum in property PredefinedType - //TODO: Handle translation of BLISTER member from IfcProjectionElementTypeEnum in property PredefinedType - throw new System.NotImplementedException(); + return this.GetUserDefined(); //## case IfcProjectionElementTypeEnum.DEVIATOR: //## Handle translation of DEVIATOR member from IfcProjectionElementTypeEnum in property PredefinedType - //TODO: Handle translation of DEVIATOR member from IfcProjectionElementTypeEnum in property PredefinedType - throw new System.NotImplementedException(); + return this.GetUserDefined(); //## case IfcProjectionElementTypeEnum.USERDEFINED: //## Optional custom handling of PredefinedType == .USERDEFINED. diff --git a/Xbim.Ifc4x3/Interfaces/IFC4/IfcProtectiveDevice.cs b/Xbim.Ifc4x3/Interfaces/IFC4/IfcProtectiveDevice.cs index 866e1c46f..5e1704783 100644 --- a/Xbim.Ifc4x3/Interfaces/IFC4/IfcProtectiveDevice.cs +++ b/Xbim.Ifc4x3/Interfaces/IFC4/IfcProtectiveDevice.cs @@ -32,8 +32,7 @@ public partial class @IfcProtectiveDevice : IIfcProtectiveDevice { case IfcProtectiveDeviceTypeEnum.ANTI_ARCING_DEVICE: //## Handle translation of ANTI_ARCING_DEVICE member from IfcProtectiveDeviceTypeEnum in property PredefinedType - //TODO: Handle translation of ANTI_ARCING_DEVICE member from IfcProtectiveDeviceTypeEnum in property PredefinedType - throw new System.NotImplementedException(); + return this.GetUserDefined(); //## case IfcProtectiveDeviceTypeEnum.CIRCUITBREAKER: return Ifc4.Interfaces.IfcProtectiveDeviceTypeEnum.CIRCUITBREAKER; @@ -49,15 +48,13 @@ public partial class @IfcProtectiveDevice : IIfcProtectiveDevice return Ifc4.Interfaces.IfcProtectiveDeviceTypeEnum.RESIDUALCURRENTSWITCH; case IfcProtectiveDeviceTypeEnum.SPARKGAP: //## Handle translation of SPARKGAP member from IfcProtectiveDeviceTypeEnum in property PredefinedType - //TODO: Handle translation of SPARKGAP member from IfcProtectiveDeviceTypeEnum in property PredefinedType - throw new System.NotImplementedException(); + return this.GetUserDefined(); //## case IfcProtectiveDeviceTypeEnum.VARISTOR: return Ifc4.Interfaces.IfcProtectiveDeviceTypeEnum.VARISTOR; case IfcProtectiveDeviceTypeEnum.VOLTAGELIMITER: //## Handle translation of VOLTAGELIMITER member from IfcProtectiveDeviceTypeEnum in property PredefinedType - //TODO: Handle translation of VOLTAGELIMITER member from IfcProtectiveDeviceTypeEnum in property PredefinedType - throw new System.NotImplementedException(); + return this.GetUserDefined(); //## case IfcProtectiveDeviceTypeEnum.USERDEFINED: //## Optional custom handling of PredefinedType == .USERDEFINED. diff --git a/Xbim.Ifc4x3/Interfaces/IFC4/IfcProtectiveDeviceType.cs b/Xbim.Ifc4x3/Interfaces/IFC4/IfcProtectiveDeviceType.cs index c0c23ea55..fd3abb492 100644 --- a/Xbim.Ifc4x3/Interfaces/IFC4/IfcProtectiveDeviceType.cs +++ b/Xbim.Ifc4x3/Interfaces/IFC4/IfcProtectiveDeviceType.cs @@ -32,8 +32,7 @@ Ifc4.Interfaces.IfcProtectiveDeviceTypeEnum IIfcProtectiveDeviceType.PredefinedT { case IfcProtectiveDeviceTypeEnum.ANTI_ARCING_DEVICE: //## Handle translation of ANTI_ARCING_DEVICE member from IfcProtectiveDeviceTypeEnum in property PredefinedType - //TODO: Handle translation of ANTI_ARCING_DEVICE member from IfcProtectiveDeviceTypeEnum in property PredefinedType - throw new System.NotImplementedException(); + return this.GetUserDefined(); //## case IfcProtectiveDeviceTypeEnum.CIRCUITBREAKER: return Ifc4.Interfaces.IfcProtectiveDeviceTypeEnum.CIRCUITBREAKER; @@ -49,15 +48,13 @@ Ifc4.Interfaces.IfcProtectiveDeviceTypeEnum IIfcProtectiveDeviceType.PredefinedT return Ifc4.Interfaces.IfcProtectiveDeviceTypeEnum.RESIDUALCURRENTSWITCH; case IfcProtectiveDeviceTypeEnum.SPARKGAP: //## Handle translation of SPARKGAP member from IfcProtectiveDeviceTypeEnum in property PredefinedType - //TODO: Handle translation of SPARKGAP member from IfcProtectiveDeviceTypeEnum in property PredefinedType - throw new System.NotImplementedException(); + return this.GetUserDefined(); //## case IfcProtectiveDeviceTypeEnum.VARISTOR: return Ifc4.Interfaces.IfcProtectiveDeviceTypeEnum.VARISTOR; case IfcProtectiveDeviceTypeEnum.VOLTAGELIMITER: //## Handle translation of VOLTAGELIMITER member from IfcProtectiveDeviceTypeEnum in property PredefinedType - //TODO: Handle translation of VOLTAGELIMITER member from IfcProtectiveDeviceTypeEnum in property PredefinedType - throw new System.NotImplementedException(); + return this.GetUserDefined(); //## case IfcProtectiveDeviceTypeEnum.USERDEFINED: //## Optional custom handling of PredefinedType == .USERDEFINED. diff --git a/Xbim.Ifc4x3/Interfaces/IFC4/IfcRailing.cs b/Xbim.Ifc4x3/Interfaces/IFC4/IfcRailing.cs index cc1762a84..46753e17a 100644 --- a/Xbim.Ifc4x3/Interfaces/IFC4/IfcRailing.cs +++ b/Xbim.Ifc4x3/Interfaces/IFC4/IfcRailing.cs @@ -34,8 +34,7 @@ public partial class @IfcRailing : IIfcRailing return Ifc4.Interfaces.IfcRailingTypeEnum.BALUSTRADE; case IfcRailingTypeEnum.FENCE: //## Handle translation of FENCE member from IfcRailingTypeEnum in property PredefinedType - //TODO: Handle translation of FENCE member from IfcRailingTypeEnum in property PredefinedType - throw new System.NotImplementedException(); + return this.GetUserDefined(); //## case IfcRailingTypeEnum.GUARDRAIL: return Ifc4.Interfaces.IfcRailingTypeEnum.GUARDRAIL; diff --git a/Xbim.Ifc4x3/Interfaces/IFC4/IfcRailingType.cs b/Xbim.Ifc4x3/Interfaces/IFC4/IfcRailingType.cs index b60c6e86a..2f31ed838 100644 --- a/Xbim.Ifc4x3/Interfaces/IFC4/IfcRailingType.cs +++ b/Xbim.Ifc4x3/Interfaces/IFC4/IfcRailingType.cs @@ -34,8 +34,7 @@ Ifc4.Interfaces.IfcRailingTypeEnum IIfcRailingType.PredefinedType return Ifc4.Interfaces.IfcRailingTypeEnum.BALUSTRADE; case IfcRailingTypeEnum.FENCE: //## Handle translation of FENCE member from IfcRailingTypeEnum in property PredefinedType - //TODO: Handle translation of FENCE member from IfcRailingTypeEnum in property PredefinedType - throw new System.NotImplementedException(); + return this.GetUserDefined(); //## case IfcRailingTypeEnum.GUARDRAIL: return Ifc4.Interfaces.IfcRailingTypeEnum.GUARDRAIL; diff --git a/Xbim.Ifc4x3/Interfaces/IFC4/IfcReinforcingBar.cs b/Xbim.Ifc4x3/Interfaces/IFC4/IfcReinforcingBar.cs index 72c57ec80..c013f1b0e 100644 --- a/Xbim.Ifc4x3/Interfaces/IFC4/IfcReinforcingBar.cs +++ b/Xbim.Ifc4x3/Interfaces/IFC4/IfcReinforcingBar.cs @@ -97,8 +97,7 @@ public partial class @IfcReinforcingBar : IIfcReinforcingBar return Ifc4.Interfaces.IfcReinforcingBarTypeEnum.SHEAR; case IfcReinforcingBarTypeEnum.SPACEBAR: //## Handle translation of SPACEBAR member from IfcReinforcingBarTypeEnum in property PredefinedType - //TODO: Handle translation of SPACEBAR member from IfcReinforcingBarTypeEnum in property PredefinedType - throw new System.NotImplementedException(); + return this.GetUserDefined(); //## case IfcReinforcingBarTypeEnum.STUD: return Ifc4.Interfaces.IfcReinforcingBarTypeEnum.STUD; diff --git a/Xbim.Ifc4x3/Interfaces/IFC4/IfcReinforcingBarType.cs b/Xbim.Ifc4x3/Interfaces/IFC4/IfcReinforcingBarType.cs index d5ee7b0b4..758e4a2d8 100644 --- a/Xbim.Ifc4x3/Interfaces/IFC4/IfcReinforcingBarType.cs +++ b/Xbim.Ifc4x3/Interfaces/IFC4/IfcReinforcingBarType.cs @@ -46,8 +46,7 @@ Ifc4.Interfaces.IfcReinforcingBarTypeEnum IIfcReinforcingBarType.PredefinedType return Ifc4.Interfaces.IfcReinforcingBarTypeEnum.SHEAR; case IfcReinforcingBarTypeEnum.SPACEBAR: //## Handle translation of SPACEBAR member from IfcReinforcingBarTypeEnum in property PredefinedType - //TODO: Handle translation of SPACEBAR member from IfcReinforcingBarTypeEnum in property PredefinedType - throw new System.NotImplementedException(); + return this.GetUserDefined(); //## case IfcReinforcingBarTypeEnum.STUD: return Ifc4.Interfaces.IfcReinforcingBarTypeEnum.STUD; diff --git a/Xbim.Ifc4x3/Interfaces/IFC4/IfcRelAssigns.cs b/Xbim.Ifc4x3/Interfaces/IFC4/IfcRelAssigns.cs index 5248331f9..3102b4cca 100644 --- a/Xbim.Ifc4x3/Interfaces/IFC4/IfcRelAssigns.cs +++ b/Xbim.Ifc4x3/Interfaces/IFC4/IfcRelAssigns.cs @@ -37,15 +37,13 @@ IItemSet IIfcRelAssigns.RelatedObjects get { //## Handle return of RelatedObjectsType for which no match was found - //TODO: Handle return of RelatedObjectsType for which no match was found - throw new System.NotImplementedException(); - //## - } + return Ifc4.Interfaces.IfcObjectTypeEnum.NOTDEFINED; // Not supported in IFC4x3 + //## + } set { //## Handle setting of RelatedObjectsType for which no match was found - //TODO: Handle setting of RelatedObjectsType for which no match was found - throw new System.NotImplementedException(); + // Do nothing. Deprecated in IFC4 //## } diff --git a/Xbim.Ifc4x3/Interfaces/IFC4/IfcRelDefinesByProperties.cs b/Xbim.Ifc4x3/Interfaces/IFC4/IfcRelDefinesByProperties.cs index c01bce726..49339e45a 100644 --- a/Xbim.Ifc4x3/Interfaces/IFC4/IfcRelDefinesByProperties.cs +++ b/Xbim.Ifc4x3/Interfaces/IFC4/IfcRelDefinesByProperties.cs @@ -40,11 +40,10 @@ IIfcPropertySetDefinitionSelect IIfcRelDefinesByProperties.RelatingPropertyDefin var ifcpropertysetdefinition = RelatingPropertyDefinition as IfcPropertySetDefinition; if (ifcpropertysetdefinition != null) return ifcpropertysetdefinition; - if (RelatingPropertyDefinition is IfcPropertySetDefinitionSet) - //## Handle defined type IfcPropertySetDefinitionSet which is not a part of the target select interface IIfcPropertySetDefinitionSelect in property RelatingPropertyDefinition - //TODO: Handle defined type IfcPropertySetDefinitionSet which is not a part of the target select interface IIfcPropertySetDefinitionSelect in property RelatingPropertyDefinition - throw new System.NotImplementedException(); - //## + //## Handle defined type IfcPropertySetDefinitionSet which is not a part of the target select interface IIfcPropertySetDefinitionSelect in property RelatingPropertyDefinition + if (RelatingPropertyDefinition is IfcPropertySetDefinitionSet set) + return set; + //## return null; } set diff --git a/Xbim.Ifc4x3/Interfaces/IFC4/IfcSensor.cs b/Xbim.Ifc4x3/Interfaces/IFC4/IfcSensor.cs index 9f97d0102..e29322b5c 100644 --- a/Xbim.Ifc4x3/Interfaces/IFC4/IfcSensor.cs +++ b/Xbim.Ifc4x3/Interfaces/IFC4/IfcSensor.cs @@ -40,8 +40,7 @@ public partial class @IfcSensor : IIfcSensor return Ifc4.Interfaces.IfcSensorTypeEnum.COSENSOR; case IfcSensorTypeEnum.EARTHQUAKESENSOR: //## Handle translation of EARTHQUAKESENSOR member from IfcSensorTypeEnum in property PredefinedType - //TODO: Handle translation of EARTHQUAKESENSOR member from IfcSensorTypeEnum in property PredefinedType - throw new System.NotImplementedException(); + return this.GetUserDefined(); //## case IfcSensorTypeEnum.FIRESENSOR: return Ifc4.Interfaces.IfcSensorTypeEnum.FIRESENSOR; @@ -49,8 +48,7 @@ public partial class @IfcSensor : IIfcSensor return Ifc4.Interfaces.IfcSensorTypeEnum.FLOWSENSOR; case IfcSensorTypeEnum.FOREIGNOBJECTDETECTIONSENSOR: //## Handle translation of FOREIGNOBJECTDETECTIONSENSOR member from IfcSensorTypeEnum in property PredefinedType - //TODO: Handle translation of FOREIGNOBJECTDETECTIONSENSOR member from IfcSensorTypeEnum in property PredefinedType - throw new System.NotImplementedException(); + return this.GetUserDefined(); //## case IfcSensorTypeEnum.FROSTSENSOR: return Ifc4.Interfaces.IfcSensorTypeEnum.FROSTSENSOR; @@ -74,8 +72,7 @@ public partial class @IfcSensor : IIfcSensor return Ifc4.Interfaces.IfcSensorTypeEnum.MOVEMENTSENSOR; case IfcSensorTypeEnum.OBSTACLESENSOR: //## Handle translation of OBSTACLESENSOR member from IfcSensorTypeEnum in property PredefinedType - //TODO: Handle translation of OBSTACLESENSOR member from IfcSensorTypeEnum in property PredefinedType - throw new System.NotImplementedException(); + return this.GetUserDefined(); //## case IfcSensorTypeEnum.PHSENSOR: return Ifc4.Interfaces.IfcSensorTypeEnum.PHSENSOR; @@ -87,15 +84,13 @@ public partial class @IfcSensor : IIfcSensor return Ifc4.Interfaces.IfcSensorTypeEnum.RADIOACTIVITYSENSOR; case IfcSensorTypeEnum.RAINSENSOR: //## Handle translation of RAINSENSOR member from IfcSensorTypeEnum in property PredefinedType - //TODO: Handle translation of RAINSENSOR member from IfcSensorTypeEnum in property PredefinedType - throw new System.NotImplementedException(); + return this.GetUserDefined(); //## case IfcSensorTypeEnum.SMOKESENSOR: return Ifc4.Interfaces.IfcSensorTypeEnum.SMOKESENSOR; case IfcSensorTypeEnum.SNOWDEPTHSENSOR: //## Handle translation of SNOWDEPTHSENSOR member from IfcSensorTypeEnum in property PredefinedType - //TODO: Handle translation of SNOWDEPTHSENSOR member from IfcSensorTypeEnum in property PredefinedType - throw new System.NotImplementedException(); + return this.GetUserDefined(); //## case IfcSensorTypeEnum.SOUNDSENSOR: return Ifc4.Interfaces.IfcSensorTypeEnum.SOUNDSENSOR; @@ -103,18 +98,15 @@ public partial class @IfcSensor : IIfcSensor return Ifc4.Interfaces.IfcSensorTypeEnum.TEMPERATURESENSOR; case IfcSensorTypeEnum.TRAINSENSOR: //## Handle translation of TRAINSENSOR member from IfcSensorTypeEnum in property PredefinedType - //TODO: Handle translation of TRAINSENSOR member from IfcSensorTypeEnum in property PredefinedType - throw new System.NotImplementedException(); + return this.GetUserDefined(); //## case IfcSensorTypeEnum.TURNOUTCLOSURESENSOR: //## Handle translation of TURNOUTCLOSURESENSOR member from IfcSensorTypeEnum in property PredefinedType - //TODO: Handle translation of TURNOUTCLOSURESENSOR member from IfcSensorTypeEnum in property PredefinedType - throw new System.NotImplementedException(); + return this.GetUserDefined(); //## case IfcSensorTypeEnum.WHEELSENSOR: //## Handle translation of WHEELSENSOR member from IfcSensorTypeEnum in property PredefinedType - //TODO: Handle translation of WHEELSENSOR member from IfcSensorTypeEnum in property PredefinedType - throw new System.NotImplementedException(); + return this.GetUserDefined(); //## case IfcSensorTypeEnum.WINDSENSOR: return Ifc4.Interfaces.IfcSensorTypeEnum.WINDSENSOR; diff --git a/Xbim.Ifc4x3/Interfaces/IFC4/IfcSensorType.cs b/Xbim.Ifc4x3/Interfaces/IFC4/IfcSensorType.cs index 0290d65c2..5abe29398 100644 --- a/Xbim.Ifc4x3/Interfaces/IFC4/IfcSensorType.cs +++ b/Xbim.Ifc4x3/Interfaces/IFC4/IfcSensorType.cs @@ -40,8 +40,7 @@ Ifc4.Interfaces.IfcSensorTypeEnum IIfcSensorType.PredefinedType return Ifc4.Interfaces.IfcSensorTypeEnum.COSENSOR; case IfcSensorTypeEnum.EARTHQUAKESENSOR: //## Handle translation of EARTHQUAKESENSOR member from IfcSensorTypeEnum in property PredefinedType - //TODO: Handle translation of EARTHQUAKESENSOR member from IfcSensorTypeEnum in property PredefinedType - throw new System.NotImplementedException(); + return this.GetUserDefined(); //## case IfcSensorTypeEnum.FIRESENSOR: return Ifc4.Interfaces.IfcSensorTypeEnum.FIRESENSOR; @@ -49,8 +48,7 @@ Ifc4.Interfaces.IfcSensorTypeEnum IIfcSensorType.PredefinedType return Ifc4.Interfaces.IfcSensorTypeEnum.FLOWSENSOR; case IfcSensorTypeEnum.FOREIGNOBJECTDETECTIONSENSOR: //## Handle translation of FOREIGNOBJECTDETECTIONSENSOR member from IfcSensorTypeEnum in property PredefinedType - //TODO: Handle translation of FOREIGNOBJECTDETECTIONSENSOR member from IfcSensorTypeEnum in property PredefinedType - throw new System.NotImplementedException(); + return this.GetUserDefined(); //## case IfcSensorTypeEnum.FROSTSENSOR: return Ifc4.Interfaces.IfcSensorTypeEnum.FROSTSENSOR; @@ -74,8 +72,7 @@ Ifc4.Interfaces.IfcSensorTypeEnum IIfcSensorType.PredefinedType return Ifc4.Interfaces.IfcSensorTypeEnum.MOVEMENTSENSOR; case IfcSensorTypeEnum.OBSTACLESENSOR: //## Handle translation of OBSTACLESENSOR member from IfcSensorTypeEnum in property PredefinedType - //TODO: Handle translation of OBSTACLESENSOR member from IfcSensorTypeEnum in property PredefinedType - throw new System.NotImplementedException(); + return this.GetUserDefined(); //## case IfcSensorTypeEnum.PHSENSOR: return Ifc4.Interfaces.IfcSensorTypeEnum.PHSENSOR; @@ -87,15 +84,13 @@ Ifc4.Interfaces.IfcSensorTypeEnum IIfcSensorType.PredefinedType return Ifc4.Interfaces.IfcSensorTypeEnum.RADIOACTIVITYSENSOR; case IfcSensorTypeEnum.RAINSENSOR: //## Handle translation of RAINSENSOR member from IfcSensorTypeEnum in property PredefinedType - //TODO: Handle translation of RAINSENSOR member from IfcSensorTypeEnum in property PredefinedType - throw new System.NotImplementedException(); + return this.GetUserDefined(); //## case IfcSensorTypeEnum.SMOKESENSOR: return Ifc4.Interfaces.IfcSensorTypeEnum.SMOKESENSOR; case IfcSensorTypeEnum.SNOWDEPTHSENSOR: //## Handle translation of SNOWDEPTHSENSOR member from IfcSensorTypeEnum in property PredefinedType - //TODO: Handle translation of SNOWDEPTHSENSOR member from IfcSensorTypeEnum in property PredefinedType - throw new System.NotImplementedException(); + return this.GetUserDefined(); //## case IfcSensorTypeEnum.SOUNDSENSOR: return Ifc4.Interfaces.IfcSensorTypeEnum.SOUNDSENSOR; @@ -103,18 +98,15 @@ Ifc4.Interfaces.IfcSensorTypeEnum IIfcSensorType.PredefinedType return Ifc4.Interfaces.IfcSensorTypeEnum.TEMPERATURESENSOR; case IfcSensorTypeEnum.TRAINSENSOR: //## Handle translation of TRAINSENSOR member from IfcSensorTypeEnum in property PredefinedType - //TODO: Handle translation of TRAINSENSOR member from IfcSensorTypeEnum in property PredefinedType - throw new System.NotImplementedException(); + return this.GetUserDefined(); //## case IfcSensorTypeEnum.TURNOUTCLOSURESENSOR: //## Handle translation of TURNOUTCLOSURESENSOR member from IfcSensorTypeEnum in property PredefinedType - //TODO: Handle translation of TURNOUTCLOSURESENSOR member from IfcSensorTypeEnum in property PredefinedType - throw new System.NotImplementedException(); + return this.GetUserDefined(); //## case IfcSensorTypeEnum.WHEELSENSOR: //## Handle translation of WHEELSENSOR member from IfcSensorTypeEnum in property PredefinedType - //TODO: Handle translation of WHEELSENSOR member from IfcSensorTypeEnum in property PredefinedType - throw new System.NotImplementedException(); + return this.GetUserDefined(); //## case IfcSensorTypeEnum.WINDSENSOR: return Ifc4.Interfaces.IfcSensorTypeEnum.WINDSENSOR; diff --git a/Xbim.Ifc4x3/Interfaces/IFC4/IfcSlab.cs b/Xbim.Ifc4x3/Interfaces/IFC4/IfcSlab.cs index 068c886e5..c7e7e750e 100644 --- a/Xbim.Ifc4x3/Interfaces/IFC4/IfcSlab.cs +++ b/Xbim.Ifc4x3/Interfaces/IFC4/IfcSlab.cs @@ -32,8 +32,7 @@ public partial class @IfcSlab : IIfcSlab { case IfcSlabTypeEnum.APPROACH_SLAB: //## Handle translation of APPROACH_SLAB member from IfcSlabTypeEnum in property PredefinedType - //TODO: Handle translation of APPROACH_SLAB member from IfcSlabTypeEnum in property PredefinedType - throw new System.NotImplementedException(); + return this.GetUserDefined(); //## case IfcSlabTypeEnum.BASESLAB: return Ifc4.Interfaces.IfcSlabTypeEnum.BASESLAB; @@ -43,25 +42,21 @@ public partial class @IfcSlab : IIfcSlab return Ifc4.Interfaces.IfcSlabTypeEnum.LANDING; case IfcSlabTypeEnum.PAVING: //## Handle translation of PAVING member from IfcSlabTypeEnum in property PredefinedType - //TODO: Handle translation of PAVING member from IfcSlabTypeEnum in property PredefinedType - throw new System.NotImplementedException(); + return this.GetUserDefined(); //## case IfcSlabTypeEnum.ROOF: return Ifc4.Interfaces.IfcSlabTypeEnum.ROOF; case IfcSlabTypeEnum.SIDEWALK: //## Handle translation of SIDEWALK member from IfcSlabTypeEnum in property PredefinedType - //TODO: Handle translation of SIDEWALK member from IfcSlabTypeEnum in property PredefinedType - throw new System.NotImplementedException(); + return this.GetUserDefined(); //## case IfcSlabTypeEnum.TRACKSLAB: //## Handle translation of TRACKSLAB member from IfcSlabTypeEnum in property PredefinedType - //TODO: Handle translation of TRACKSLAB member from IfcSlabTypeEnum in property PredefinedType - throw new System.NotImplementedException(); + return this.GetUserDefined(); //## case IfcSlabTypeEnum.WEARING: //## Handle translation of WEARING member from IfcSlabTypeEnum in property PredefinedType - //TODO: Handle translation of WEARING member from IfcSlabTypeEnum in property PredefinedType - throw new System.NotImplementedException(); + return this.GetUserDefined(); //## case IfcSlabTypeEnum.USERDEFINED: //## Optional custom handling of PredefinedType == .USERDEFINED. diff --git a/Xbim.Ifc4x3/Interfaces/IFC4/IfcSlabType.cs b/Xbim.Ifc4x3/Interfaces/IFC4/IfcSlabType.cs index 7dc932050..b399957c2 100644 --- a/Xbim.Ifc4x3/Interfaces/IFC4/IfcSlabType.cs +++ b/Xbim.Ifc4x3/Interfaces/IFC4/IfcSlabType.cs @@ -32,8 +32,7 @@ Ifc4.Interfaces.IfcSlabTypeEnum IIfcSlabType.PredefinedType { case IfcSlabTypeEnum.APPROACH_SLAB: //## Handle translation of APPROACH_SLAB member from IfcSlabTypeEnum in property PredefinedType - //TODO: Handle translation of APPROACH_SLAB member from IfcSlabTypeEnum in property PredefinedType - throw new System.NotImplementedException(); + return this.GetUserDefined(); //## case IfcSlabTypeEnum.BASESLAB: return Ifc4.Interfaces.IfcSlabTypeEnum.BASESLAB; @@ -43,25 +42,21 @@ Ifc4.Interfaces.IfcSlabTypeEnum IIfcSlabType.PredefinedType return Ifc4.Interfaces.IfcSlabTypeEnum.LANDING; case IfcSlabTypeEnum.PAVING: //## Handle translation of PAVING member from IfcSlabTypeEnum in property PredefinedType - //TODO: Handle translation of PAVING member from IfcSlabTypeEnum in property PredefinedType - throw new System.NotImplementedException(); + return this.GetUserDefined(); //## case IfcSlabTypeEnum.ROOF: return Ifc4.Interfaces.IfcSlabTypeEnum.ROOF; case IfcSlabTypeEnum.SIDEWALK: //## Handle translation of SIDEWALK member from IfcSlabTypeEnum in property PredefinedType - //TODO: Handle translation of SIDEWALK member from IfcSlabTypeEnum in property PredefinedType - throw new System.NotImplementedException(); + return this.GetUserDefined(); //## case IfcSlabTypeEnum.TRACKSLAB: //## Handle translation of TRACKSLAB member from IfcSlabTypeEnum in property PredefinedType - //TODO: Handle translation of TRACKSLAB member from IfcSlabTypeEnum in property PredefinedType - throw new System.NotImplementedException(); + return this.GetUserDefined(); //## case IfcSlabTypeEnum.WEARING: //## Handle translation of WEARING member from IfcSlabTypeEnum in property PredefinedType - //TODO: Handle translation of WEARING member from IfcSlabTypeEnum in property PredefinedType - throw new System.NotImplementedException(); + return this.GetUserDefined(); //## case IfcSlabTypeEnum.USERDEFINED: //## Optional custom handling of PredefinedType == .USERDEFINED. diff --git a/Xbim.Ifc4x3/Interfaces/IFC4/IfcSpace.cs b/Xbim.Ifc4x3/Interfaces/IFC4/IfcSpace.cs index cd1ac0ba3..d8318deba 100644 --- a/Xbim.Ifc4x3/Interfaces/IFC4/IfcSpace.cs +++ b/Xbim.Ifc4x3/Interfaces/IFC4/IfcSpace.cs @@ -32,8 +32,7 @@ public partial class @IfcSpace : IIfcSpace { case IfcSpaceTypeEnum.BERTH: //## Handle translation of BERTH member from IfcSpaceTypeEnum in property PredefinedType - //TODO: Handle translation of BERTH member from IfcSpaceTypeEnum in property PredefinedType - throw new System.NotImplementedException(); + return this.GetUserDefined(); //## case IfcSpaceTypeEnum.EXTERNAL: return Ifc4.Interfaces.IfcSpaceTypeEnum.EXTERNAL; diff --git a/Xbim.Ifc4x3/Interfaces/IFC4/IfcSpaceType.cs b/Xbim.Ifc4x3/Interfaces/IFC4/IfcSpaceType.cs index ee7b56020..9d55e2c73 100644 --- a/Xbim.Ifc4x3/Interfaces/IFC4/IfcSpaceType.cs +++ b/Xbim.Ifc4x3/Interfaces/IFC4/IfcSpaceType.cs @@ -32,8 +32,7 @@ Ifc4.Interfaces.IfcSpaceTypeEnum IIfcSpaceType.PredefinedType { case IfcSpaceTypeEnum.BERTH: //## Handle translation of BERTH member from IfcSpaceTypeEnum in property PredefinedType - //TODO: Handle translation of BERTH member from IfcSpaceTypeEnum in property PredefinedType - throw new System.NotImplementedException(); + return this.GetUserDefined(); //## case IfcSpaceTypeEnum.EXTERNAL: return Ifc4.Interfaces.IfcSpaceTypeEnum.EXTERNAL; diff --git a/Xbim.Ifc4x3/Interfaces/IFC4/IfcSpatialZone.cs b/Xbim.Ifc4x3/Interfaces/IFC4/IfcSpatialZone.cs index ed9196969..3bb542241 100644 --- a/Xbim.Ifc4x3/Interfaces/IFC4/IfcSpatialZone.cs +++ b/Xbim.Ifc4x3/Interfaces/IFC4/IfcSpatialZone.cs @@ -36,8 +36,7 @@ public partial class @IfcSpatialZone : IIfcSpatialZone return Ifc4.Interfaces.IfcSpatialZoneTypeEnum.FIRESAFETY; case IfcSpatialZoneTypeEnum.INTERFERENCE: //## Handle translation of INTERFERENCE member from IfcSpatialZoneTypeEnum in property PredefinedType - //TODO: Handle translation of INTERFERENCE member from IfcSpatialZoneTypeEnum in property PredefinedType - throw new System.NotImplementedException(); + return this.GetUserDefined(); //## case IfcSpatialZoneTypeEnum.LIGHTING: return Ifc4.Interfaces.IfcSpatialZoneTypeEnum.LIGHTING; @@ -45,8 +44,7 @@ public partial class @IfcSpatialZone : IIfcSpatialZone return Ifc4.Interfaces.IfcSpatialZoneTypeEnum.OCCUPANCY; case IfcSpatialZoneTypeEnum.RESERVATION: //## Handle translation of RESERVATION member from IfcSpatialZoneTypeEnum in property PredefinedType - //TODO: Handle translation of RESERVATION member from IfcSpatialZoneTypeEnum in property PredefinedType - throw new System.NotImplementedException(); + return this.GetUserDefined(); //## case IfcSpatialZoneTypeEnum.SECURITY: return Ifc4.Interfaces.IfcSpatialZoneTypeEnum.SECURITY; diff --git a/Xbim.Ifc4x3/Interfaces/IFC4/IfcSpatialZoneType.cs b/Xbim.Ifc4x3/Interfaces/IFC4/IfcSpatialZoneType.cs index 1ce2f9873..f36bda14c 100644 --- a/Xbim.Ifc4x3/Interfaces/IFC4/IfcSpatialZoneType.cs +++ b/Xbim.Ifc4x3/Interfaces/IFC4/IfcSpatialZoneType.cs @@ -36,8 +36,7 @@ Ifc4.Interfaces.IfcSpatialZoneTypeEnum IIfcSpatialZoneType.PredefinedType return Ifc4.Interfaces.IfcSpatialZoneTypeEnum.FIRESAFETY; case IfcSpatialZoneTypeEnum.INTERFERENCE: //## Handle translation of INTERFERENCE member from IfcSpatialZoneTypeEnum in property PredefinedType - //TODO: Handle translation of INTERFERENCE member from IfcSpatialZoneTypeEnum in property PredefinedType - throw new System.NotImplementedException(); + return this.GetUserDefined(); //## case IfcSpatialZoneTypeEnum.LIGHTING: return Ifc4.Interfaces.IfcSpatialZoneTypeEnum.LIGHTING; @@ -45,8 +44,7 @@ Ifc4.Interfaces.IfcSpatialZoneTypeEnum IIfcSpatialZoneType.PredefinedType return Ifc4.Interfaces.IfcSpatialZoneTypeEnum.OCCUPANCY; case IfcSpatialZoneTypeEnum.RESERVATION: //## Handle translation of RESERVATION member from IfcSpatialZoneTypeEnum in property PredefinedType - //TODO: Handle translation of RESERVATION member from IfcSpatialZoneTypeEnum in property PredefinedType - throw new System.NotImplementedException(); + return this.GetUserDefined(); //## case IfcSpatialZoneTypeEnum.SECURITY: return Ifc4.Interfaces.IfcSpatialZoneTypeEnum.SECURITY; diff --git a/Xbim.Ifc4x3/Interfaces/IFC4/IfcStair.cs b/Xbim.Ifc4x3/Interfaces/IFC4/IfcStair.cs index bde3a52bc..7ec333fad 100644 --- a/Xbim.Ifc4x3/Interfaces/IFC4/IfcStair.cs +++ b/Xbim.Ifc4x3/Interfaces/IFC4/IfcStair.cs @@ -40,8 +40,7 @@ public partial class @IfcStair : IIfcStair return Ifc4.Interfaces.IfcStairTypeEnum.HALF_WINDING_STAIR; case IfcStairTypeEnum.LADDER: //## Handle translation of LADDER member from IfcStairTypeEnum in property PredefinedType - //TODO: Handle translation of LADDER member from IfcStairTypeEnum in property PredefinedType - throw new System.NotImplementedException(); + return this.GetUserDefined(); //## case IfcStairTypeEnum.QUARTER_TURN_STAIR: return Ifc4.Interfaces.IfcStairTypeEnum.QUARTER_TURN_STAIR; diff --git a/Xbim.Ifc4x3/Interfaces/IFC4/IfcStairType.cs b/Xbim.Ifc4x3/Interfaces/IFC4/IfcStairType.cs index f02d24423..f421424ed 100644 --- a/Xbim.Ifc4x3/Interfaces/IFC4/IfcStairType.cs +++ b/Xbim.Ifc4x3/Interfaces/IFC4/IfcStairType.cs @@ -40,8 +40,7 @@ Ifc4.Interfaces.IfcStairTypeEnum IIfcStairType.PredefinedType return Ifc4.Interfaces.IfcStairTypeEnum.HALF_WINDING_STAIR; case IfcStairTypeEnum.LADDER: //## Handle translation of LADDER member from IfcStairTypeEnum in property PredefinedType - //TODO: Handle translation of LADDER member from IfcStairTypeEnum in property PredefinedType - throw new System.NotImplementedException(); + return this.GetUserDefined(); //## case IfcStairTypeEnum.QUARTER_TURN_STAIR: return Ifc4.Interfaces.IfcStairTypeEnum.QUARTER_TURN_STAIR; diff --git a/Xbim.Ifc4x3/Interfaces/IFC4/IfcSurfaceFeature.cs b/Xbim.Ifc4x3/Interfaces/IFC4/IfcSurfaceFeature.cs index 40769e41e..a236d93f3 100644 --- a/Xbim.Ifc4x3/Interfaces/IFC4/IfcSurfaceFeature.cs +++ b/Xbim.Ifc4x3/Interfaces/IFC4/IfcSurfaceFeature.cs @@ -32,47 +32,39 @@ public partial class @IfcSurfaceFeature : IIfcSurfaceFeature { case IfcSurfaceFeatureTypeEnum.DEFECT: //## Handle translation of DEFECT member from IfcSurfaceFeatureTypeEnum in property PredefinedType - //TODO: Handle translation of DEFECT member from IfcSurfaceFeatureTypeEnum in property PredefinedType - throw new System.NotImplementedException(); + return this.GetUserDefined(); //## case IfcSurfaceFeatureTypeEnum.HATCHMARKING: //## Handle translation of HATCHMARKING member from IfcSurfaceFeatureTypeEnum in property PredefinedType - //TODO: Handle translation of HATCHMARKING member from IfcSurfaceFeatureTypeEnum in property PredefinedType - throw new System.NotImplementedException(); + return this.GetUserDefined(); //## case IfcSurfaceFeatureTypeEnum.LINEMARKING: //## Handle translation of LINEMARKING member from IfcSurfaceFeatureTypeEnum in property PredefinedType - //TODO: Handle translation of LINEMARKING member from IfcSurfaceFeatureTypeEnum in property PredefinedType - throw new System.NotImplementedException(); + return this.GetUserDefined(); //## case IfcSurfaceFeatureTypeEnum.MARK: return Ifc4.Interfaces.IfcSurfaceFeatureTypeEnum.MARK; case IfcSurfaceFeatureTypeEnum.NONSKIDSURFACING: //## Handle translation of NONSKIDSURFACING member from IfcSurfaceFeatureTypeEnum in property PredefinedType - //TODO: Handle translation of NONSKIDSURFACING member from IfcSurfaceFeatureTypeEnum in property PredefinedType - throw new System.NotImplementedException(); + return this.GetUserDefined(); //## case IfcSurfaceFeatureTypeEnum.PAVEMENTSURFACEMARKING: //## Handle translation of PAVEMENTSURFACEMARKING member from IfcSurfaceFeatureTypeEnum in property PredefinedType - //TODO: Handle translation of PAVEMENTSURFACEMARKING member from IfcSurfaceFeatureTypeEnum in property PredefinedType - throw new System.NotImplementedException(); + return this.GetUserDefined(); //## case IfcSurfaceFeatureTypeEnum.RUMBLESTRIP: //## Handle translation of RUMBLESTRIP member from IfcSurfaceFeatureTypeEnum in property PredefinedType - //TODO: Handle translation of RUMBLESTRIP member from IfcSurfaceFeatureTypeEnum in property PredefinedType - throw new System.NotImplementedException(); + return this.GetUserDefined(); //## case IfcSurfaceFeatureTypeEnum.SYMBOLMARKING: //## Handle translation of SYMBOLMARKING member from IfcSurfaceFeatureTypeEnum in property PredefinedType - //TODO: Handle translation of SYMBOLMARKING member from IfcSurfaceFeatureTypeEnum in property PredefinedType - throw new System.NotImplementedException(); + return this.GetUserDefined(); //## case IfcSurfaceFeatureTypeEnum.TAG: return Ifc4.Interfaces.IfcSurfaceFeatureTypeEnum.TAG; case IfcSurfaceFeatureTypeEnum.TRANSVERSERUMBLESTRIP: //## Handle translation of TRANSVERSERUMBLESTRIP member from IfcSurfaceFeatureTypeEnum in property PredefinedType - //TODO: Handle translation of TRANSVERSERUMBLESTRIP member from IfcSurfaceFeatureTypeEnum in property PredefinedType - throw new System.NotImplementedException(); + return this.GetUserDefined(); //## case IfcSurfaceFeatureTypeEnum.TREATMENT: return Ifc4.Interfaces.IfcSurfaceFeatureTypeEnum.TREATMENT; diff --git a/Xbim.Ifc4x3/Interfaces/IFC4/IfcSwitchingDevice.cs b/Xbim.Ifc4x3/Interfaces/IFC4/IfcSwitchingDevice.cs index d4d5d1184..0b58ce9a9 100644 --- a/Xbim.Ifc4x3/Interfaces/IFC4/IfcSwitchingDevice.cs +++ b/Xbim.Ifc4x3/Interfaces/IFC4/IfcSwitchingDevice.cs @@ -42,8 +42,7 @@ public partial class @IfcSwitchingDevice : IIfcSwitchingDevice return Ifc4.Interfaces.IfcSwitchingDeviceTypeEnum.MOMENTARYSWITCH; case IfcSwitchingDeviceTypeEnum.RELAY: //## Handle translation of RELAY member from IfcSwitchingDeviceTypeEnum in property PredefinedType - //TODO: Handle translation of RELAY member from IfcSwitchingDeviceTypeEnum in property PredefinedType - throw new System.NotImplementedException(); + return this.GetUserDefined(); //## case IfcSwitchingDeviceTypeEnum.SELECTORSWITCH: return Ifc4.Interfaces.IfcSwitchingDeviceTypeEnum.SELECTORSWITCH; @@ -51,8 +50,7 @@ public partial class @IfcSwitchingDevice : IIfcSwitchingDevice return Ifc4.Interfaces.IfcSwitchingDeviceTypeEnum.STARTER; case IfcSwitchingDeviceTypeEnum.START_AND_STOP_EQUIPMENT: //## Handle translation of START_AND_STOP_EQUIPMENT member from IfcSwitchingDeviceTypeEnum in property PredefinedType - //TODO: Handle translation of START_AND_STOP_EQUIPMENT member from IfcSwitchingDeviceTypeEnum in property PredefinedType - throw new System.NotImplementedException(); + return this.GetUserDefined(); //## case IfcSwitchingDeviceTypeEnum.SWITCHDISCONNECTOR: return Ifc4.Interfaces.IfcSwitchingDeviceTypeEnum.SWITCHDISCONNECTOR; diff --git a/Xbim.Ifc4x3/Interfaces/IFC4/IfcSwitchingDeviceType.cs b/Xbim.Ifc4x3/Interfaces/IFC4/IfcSwitchingDeviceType.cs index e9c553873..0a89d937e 100644 --- a/Xbim.Ifc4x3/Interfaces/IFC4/IfcSwitchingDeviceType.cs +++ b/Xbim.Ifc4x3/Interfaces/IFC4/IfcSwitchingDeviceType.cs @@ -42,8 +42,7 @@ Ifc4.Interfaces.IfcSwitchingDeviceTypeEnum IIfcSwitchingDeviceType.PredefinedTyp return Ifc4.Interfaces.IfcSwitchingDeviceTypeEnum.MOMENTARYSWITCH; case IfcSwitchingDeviceTypeEnum.RELAY: //## Handle translation of RELAY member from IfcSwitchingDeviceTypeEnum in property PredefinedType - //TODO: Handle translation of RELAY member from IfcSwitchingDeviceTypeEnum in property PredefinedType - throw new System.NotImplementedException(); + return this.GetUserDefined(); //## case IfcSwitchingDeviceTypeEnum.SELECTORSWITCH: return Ifc4.Interfaces.IfcSwitchingDeviceTypeEnum.SELECTORSWITCH; @@ -51,8 +50,7 @@ Ifc4.Interfaces.IfcSwitchingDeviceTypeEnum IIfcSwitchingDeviceType.PredefinedTyp return Ifc4.Interfaces.IfcSwitchingDeviceTypeEnum.STARTER; case IfcSwitchingDeviceTypeEnum.START_AND_STOP_EQUIPMENT: //## Handle translation of START_AND_STOP_EQUIPMENT member from IfcSwitchingDeviceTypeEnum in property PredefinedType - //TODO: Handle translation of START_AND_STOP_EQUIPMENT member from IfcSwitchingDeviceTypeEnum in property PredefinedType - throw new System.NotImplementedException(); + return this.GetUserDefined(); //## case IfcSwitchingDeviceTypeEnum.SWITCHDISCONNECTOR: return Ifc4.Interfaces.IfcSwitchingDeviceTypeEnum.SWITCHDISCONNECTOR; diff --git a/Xbim.Ifc4x3/Interfaces/IFC4/IfcSystemFurnitureElement.cs b/Xbim.Ifc4x3/Interfaces/IFC4/IfcSystemFurnitureElement.cs index 049d4a7b2..ee1941904 100644 --- a/Xbim.Ifc4x3/Interfaces/IFC4/IfcSystemFurnitureElement.cs +++ b/Xbim.Ifc4x3/Interfaces/IFC4/IfcSystemFurnitureElement.cs @@ -34,8 +34,7 @@ public partial class @IfcSystemFurnitureElement : IIfcSystemFurnitureElement return Ifc4.Interfaces.IfcSystemFurnitureElementTypeEnum.PANEL; case IfcSystemFurnitureElementTypeEnum.SUBRACK: //## Handle translation of SUBRACK member from IfcSystemFurnitureElementTypeEnum in property PredefinedType - //TODO: Handle translation of SUBRACK member from IfcSystemFurnitureElementTypeEnum in property PredefinedType - throw new System.NotImplementedException(); + return this.GetUserDefined(); //## case IfcSystemFurnitureElementTypeEnum.WORKSURFACE: return Ifc4.Interfaces.IfcSystemFurnitureElementTypeEnum.WORKSURFACE; diff --git a/Xbim.Ifc4x3/Interfaces/IFC4/IfcSystemFurnitureElementType.cs b/Xbim.Ifc4x3/Interfaces/IFC4/IfcSystemFurnitureElementType.cs index dc263ad52..5931d03d5 100644 --- a/Xbim.Ifc4x3/Interfaces/IFC4/IfcSystemFurnitureElementType.cs +++ b/Xbim.Ifc4x3/Interfaces/IFC4/IfcSystemFurnitureElementType.cs @@ -34,8 +34,7 @@ public partial class @IfcSystemFurnitureElementType : IIfcSystemFurnitureElement return Ifc4.Interfaces.IfcSystemFurnitureElementTypeEnum.PANEL; case IfcSystemFurnitureElementTypeEnum.SUBRACK: //## Handle translation of SUBRACK member from IfcSystemFurnitureElementTypeEnum in property PredefinedType - //TODO: Handle translation of SUBRACK member from IfcSystemFurnitureElementTypeEnum in property PredefinedType - throw new System.NotImplementedException(); + return this.GetUserDefined(); //## case IfcSystemFurnitureElementTypeEnum.WORKSURFACE: return Ifc4.Interfaces.IfcSystemFurnitureElementTypeEnum.WORKSURFACE; diff --git a/Xbim.Ifc4x3/Interfaces/IFC4/IfcTank.cs b/Xbim.Ifc4x3/Interfaces/IFC4/IfcTank.cs index 04443cca1..0302af859 100644 --- a/Xbim.Ifc4x3/Interfaces/IFC4/IfcTank.cs +++ b/Xbim.Ifc4x3/Interfaces/IFC4/IfcTank.cs @@ -40,8 +40,7 @@ public partial class @IfcTank : IIfcTank return Ifc4.Interfaces.IfcTankTypeEnum.FEEDANDEXPANSION; case IfcTankTypeEnum.OILRETENTIONTRAY: //## Handle translation of OILRETENTIONTRAY member from IfcTankTypeEnum in property PredefinedType - //TODO: Handle translation of OILRETENTIONTRAY member from IfcTankTypeEnum in property PredefinedType - throw new System.NotImplementedException(); + return this.GetUserDefined(); //## case IfcTankTypeEnum.PRESSUREVESSEL: return Ifc4.Interfaces.IfcTankTypeEnum.PRESSUREVESSEL; diff --git a/Xbim.Ifc4x3/Interfaces/IFC4/IfcTankType.cs b/Xbim.Ifc4x3/Interfaces/IFC4/IfcTankType.cs index e5e8607f8..ba93074a2 100644 --- a/Xbim.Ifc4x3/Interfaces/IFC4/IfcTankType.cs +++ b/Xbim.Ifc4x3/Interfaces/IFC4/IfcTankType.cs @@ -40,8 +40,7 @@ Ifc4.Interfaces.IfcTankTypeEnum IIfcTankType.PredefinedType return Ifc4.Interfaces.IfcTankTypeEnum.FEEDANDEXPANSION; case IfcTankTypeEnum.OILRETENTIONTRAY: //## Handle translation of OILRETENTIONTRAY member from IfcTankTypeEnum in property PredefinedType - //TODO: Handle translation of OILRETENTIONTRAY member from IfcTankTypeEnum in property PredefinedType - throw new System.NotImplementedException(); + return this.GetUserDefined(); //## case IfcTankTypeEnum.PRESSUREVESSEL: return Ifc4.Interfaces.IfcTankTypeEnum.PRESSUREVESSEL; diff --git a/Xbim.Ifc4x3/Interfaces/IFC4/IfcTask.cs b/Xbim.Ifc4x3/Interfaces/IFC4/IfcTask.cs index c91115a9d..c309bc1fe 100644 --- a/Xbim.Ifc4x3/Interfaces/IFC4/IfcTask.cs +++ b/Xbim.Ifc4x3/Interfaces/IFC4/IfcTask.cs @@ -111,15 +111,13 @@ IIfcTaskTime IIfcTask.TaskTime { case IfcTaskTypeEnum.ADJUSTMENT: //## Handle translation of ADJUSTMENT member from IfcTaskTypeEnum in property PredefinedType - //TODO: Handle translation of ADJUSTMENT member from IfcTaskTypeEnum in property PredefinedType - throw new System.NotImplementedException(); + return this.GetUserDefined(); //## case IfcTaskTypeEnum.ATTENDANCE: return Ifc4.Interfaces.IfcTaskTypeEnum.ATTENDANCE; case IfcTaskTypeEnum.CALIBRATION: //## Handle translation of CALIBRATION member from IfcTaskTypeEnum in property PredefinedType - //TODO: Handle translation of CALIBRATION member from IfcTaskTypeEnum in property PredefinedType - throw new System.NotImplementedException(); + return this.GetUserDefined(); //## case IfcTaskTypeEnum.CONSTRUCTION: return Ifc4.Interfaces.IfcTaskTypeEnum.CONSTRUCTION; @@ -131,13 +129,11 @@ IIfcTaskTime IIfcTask.TaskTime return Ifc4.Interfaces.IfcTaskTypeEnum.DISPOSAL; case IfcTaskTypeEnum.EMERGENCY: //## Handle translation of EMERGENCY member from IfcTaskTypeEnum in property PredefinedType - //TODO: Handle translation of EMERGENCY member from IfcTaskTypeEnum in property PredefinedType - throw new System.NotImplementedException(); + return this.GetUserDefined(); //## case IfcTaskTypeEnum.INSPECTION: //## Handle translation of INSPECTION member from IfcTaskTypeEnum in property PredefinedType - //TODO: Handle translation of INSPECTION member from IfcTaskTypeEnum in property PredefinedType - throw new System.NotImplementedException(); + return this.GetUserDefined(); //## case IfcTaskTypeEnum.INSTALLATION: return Ifc4.Interfaces.IfcTaskTypeEnum.INSTALLATION; @@ -155,28 +151,23 @@ IIfcTaskTime IIfcTask.TaskTime return Ifc4.Interfaces.IfcTaskTypeEnum.RENOVATION; case IfcTaskTypeEnum.SAFETY: //## Handle translation of SAFETY member from IfcTaskTypeEnum in property PredefinedType - //TODO: Handle translation of SAFETY member from IfcTaskTypeEnum in property PredefinedType - throw new System.NotImplementedException(); + return this.GetUserDefined(); //## case IfcTaskTypeEnum.SHUTDOWN: //## Handle translation of SHUTDOWN member from IfcTaskTypeEnum in property PredefinedType - //TODO: Handle translation of SHUTDOWN member from IfcTaskTypeEnum in property PredefinedType - throw new System.NotImplementedException(); + return this.GetUserDefined(); //## case IfcTaskTypeEnum.STARTUP: //## Handle translation of STARTUP member from IfcTaskTypeEnum in property PredefinedType - //TODO: Handle translation of STARTUP member from IfcTaskTypeEnum in property PredefinedType - throw new System.NotImplementedException(); + return this.GetUserDefined(); //## case IfcTaskTypeEnum.TESTING: //## Handle translation of TESTING member from IfcTaskTypeEnum in property PredefinedType - //TODO: Handle translation of TESTING member from IfcTaskTypeEnum in property PredefinedType - throw new System.NotImplementedException(); + return this.GetUserDefined(); //## case IfcTaskTypeEnum.TROUBLESHOOTING: //## Handle translation of TROUBLESHOOTING member from IfcTaskTypeEnum in property PredefinedType - //TODO: Handle translation of TROUBLESHOOTING member from IfcTaskTypeEnum in property PredefinedType - throw new System.NotImplementedException(); + return this.GetUserDefined(); //## case IfcTaskTypeEnum.USERDEFINED: //## Optional custom handling of PredefinedType == .USERDEFINED. diff --git a/Xbim.Ifc4x3/Interfaces/IFC4/IfcTaskType.cs b/Xbim.Ifc4x3/Interfaces/IFC4/IfcTaskType.cs index 7ed245af5..d0479771c 100644 --- a/Xbim.Ifc4x3/Interfaces/IFC4/IfcTaskType.cs +++ b/Xbim.Ifc4x3/Interfaces/IFC4/IfcTaskType.cs @@ -32,15 +32,13 @@ Ifc4.Interfaces.IfcTaskTypeEnum IIfcTaskType.PredefinedType { case IfcTaskTypeEnum.ADJUSTMENT: //## Handle translation of ADJUSTMENT member from IfcTaskTypeEnum in property PredefinedType - //TODO: Handle translation of ADJUSTMENT member from IfcTaskTypeEnum in property PredefinedType - throw new System.NotImplementedException(); + return this.GetUserDefined(); //## case IfcTaskTypeEnum.ATTENDANCE: return Ifc4.Interfaces.IfcTaskTypeEnum.ATTENDANCE; case IfcTaskTypeEnum.CALIBRATION: //## Handle translation of CALIBRATION member from IfcTaskTypeEnum in property PredefinedType - //TODO: Handle translation of CALIBRATION member from IfcTaskTypeEnum in property PredefinedType - throw new System.NotImplementedException(); + return this.GetUserDefined(); //## case IfcTaskTypeEnum.CONSTRUCTION: return Ifc4.Interfaces.IfcTaskTypeEnum.CONSTRUCTION; @@ -52,13 +50,11 @@ Ifc4.Interfaces.IfcTaskTypeEnum IIfcTaskType.PredefinedType return Ifc4.Interfaces.IfcTaskTypeEnum.DISPOSAL; case IfcTaskTypeEnum.EMERGENCY: //## Handle translation of EMERGENCY member from IfcTaskTypeEnum in property PredefinedType - //TODO: Handle translation of EMERGENCY member from IfcTaskTypeEnum in property PredefinedType - throw new System.NotImplementedException(); + return this.GetUserDefined(); //## case IfcTaskTypeEnum.INSPECTION: //## Handle translation of INSPECTION member from IfcTaskTypeEnum in property PredefinedType - //TODO: Handle translation of INSPECTION member from IfcTaskTypeEnum in property PredefinedType - throw new System.NotImplementedException(); + return this.GetUserDefined(); //## case IfcTaskTypeEnum.INSTALLATION: return Ifc4.Interfaces.IfcTaskTypeEnum.INSTALLATION; @@ -76,28 +72,23 @@ Ifc4.Interfaces.IfcTaskTypeEnum IIfcTaskType.PredefinedType return Ifc4.Interfaces.IfcTaskTypeEnum.RENOVATION; case IfcTaskTypeEnum.SAFETY: //## Handle translation of SAFETY member from IfcTaskTypeEnum in property PredefinedType - //TODO: Handle translation of SAFETY member from IfcTaskTypeEnum in property PredefinedType - throw new System.NotImplementedException(); + return this.GetUserDefined(); //## case IfcTaskTypeEnum.SHUTDOWN: //## Handle translation of SHUTDOWN member from IfcTaskTypeEnum in property PredefinedType - //TODO: Handle translation of SHUTDOWN member from IfcTaskTypeEnum in property PredefinedType - throw new System.NotImplementedException(); + return this.GetUserDefined(); //## case IfcTaskTypeEnum.STARTUP: //## Handle translation of STARTUP member from IfcTaskTypeEnum in property PredefinedType - //TODO: Handle translation of STARTUP member from IfcTaskTypeEnum in property PredefinedType - throw new System.NotImplementedException(); + return this.GetUserDefined(); //## case IfcTaskTypeEnum.TESTING: //## Handle translation of TESTING member from IfcTaskTypeEnum in property PredefinedType - //TODO: Handle translation of TESTING member from IfcTaskTypeEnum in property PredefinedType - throw new System.NotImplementedException(); + return this.GetUserDefined(); //## case IfcTaskTypeEnum.TROUBLESHOOTING: //## Handle translation of TROUBLESHOOTING member from IfcTaskTypeEnum in property PredefinedType - //TODO: Handle translation of TROUBLESHOOTING member from IfcTaskTypeEnum in property PredefinedType - throw new System.NotImplementedException(); + return this.GetUserDefined(); //## case IfcTaskTypeEnum.USERDEFINED: //## Optional custom handling of PredefinedType == .USERDEFINED. diff --git a/Xbim.Ifc4x3/Interfaces/IFC4/IfcTransformer.cs b/Xbim.Ifc4x3/Interfaces/IFC4/IfcTransformer.cs index 9037ea4a9..780ba70a7 100644 --- a/Xbim.Ifc4x3/Interfaces/IFC4/IfcTransformer.cs +++ b/Xbim.Ifc4x3/Interfaces/IFC4/IfcTransformer.cs @@ -32,13 +32,11 @@ public partial class @IfcTransformer : IIfcTransformer { case IfcTransformerTypeEnum.CHOPPER: //## Handle translation of CHOPPER member from IfcTransformerTypeEnum in property PredefinedType - //TODO: Handle translation of CHOPPER member from IfcTransformerTypeEnum in property PredefinedType - throw new System.NotImplementedException(); + return this.GetUserDefined(); //## case IfcTransformerTypeEnum.COMBINED: //## Handle translation of COMBINED member from IfcTransformerTypeEnum in property PredefinedType - //TODO: Handle translation of COMBINED member from IfcTransformerTypeEnum in property PredefinedType - throw new System.NotImplementedException(); + return this.GetUserDefined(); //## case IfcTransformerTypeEnum.CURRENT: return Ifc4.Interfaces.IfcTransformerTypeEnum.CURRENT; diff --git a/Xbim.Ifc4x3/Interfaces/IFC4/IfcTransformerType.cs b/Xbim.Ifc4x3/Interfaces/IFC4/IfcTransformerType.cs index 5df23aa13..bef0c2ddb 100644 --- a/Xbim.Ifc4x3/Interfaces/IFC4/IfcTransformerType.cs +++ b/Xbim.Ifc4x3/Interfaces/IFC4/IfcTransformerType.cs @@ -32,13 +32,11 @@ Ifc4.Interfaces.IfcTransformerTypeEnum IIfcTransformerType.PredefinedType { case IfcTransformerTypeEnum.CHOPPER: //## Handle translation of CHOPPER member from IfcTransformerTypeEnum in property PredefinedType - //TODO: Handle translation of CHOPPER member from IfcTransformerTypeEnum in property PredefinedType - throw new System.NotImplementedException(); + return this.GetUserDefined(); //## case IfcTransformerTypeEnum.COMBINED: //## Handle translation of COMBINED member from IfcTransformerTypeEnum in property PredefinedType - //TODO: Handle translation of COMBINED member from IfcTransformerTypeEnum in property PredefinedType - throw new System.NotImplementedException(); + return this.GetUserDefined(); //## case IfcTransformerTypeEnum.CURRENT: return Ifc4.Interfaces.IfcTransformerTypeEnum.CURRENT; diff --git a/Xbim.Ifc4x3/Interfaces/IFC4/IfcTransportElement.cs b/Xbim.Ifc4x3/Interfaces/IFC4/IfcTransportElement.cs index c6b7f78d0..3c6dd80df 100644 --- a/Xbim.Ifc4x3/Interfaces/IFC4/IfcTransportElement.cs +++ b/Xbim.Ifc4x3/Interfaces/IFC4/IfcTransportElement.cs @@ -38,8 +38,7 @@ public partial class @IfcTransportElement : IIfcTransportElement return Ifc4.Interfaces.IfcTransportElementTypeEnum.ESCALATOR; case IfcTransportElementTypeEnum.HAULINGGEAR: //## Handle translation of HAULINGGEAR member from IfcTransportElementTypeEnum in property PredefinedType - //TODO: Handle translation of HAULINGGEAR member from IfcTransportElementTypeEnum in property PredefinedType - throw new System.NotImplementedException(); + return this.GetUserDefined(); //## case IfcTransportElementTypeEnum.LIFTINGGEAR: return Ifc4.Interfaces.IfcTransportElementTypeEnum.LIFTINGGEAR; diff --git a/Xbim.Ifc4x3/Interfaces/IFC4/IfcTransportElementType.cs b/Xbim.Ifc4x3/Interfaces/IFC4/IfcTransportElementType.cs index 80303874d..7aea988c3 100644 --- a/Xbim.Ifc4x3/Interfaces/IFC4/IfcTransportElementType.cs +++ b/Xbim.Ifc4x3/Interfaces/IFC4/IfcTransportElementType.cs @@ -38,8 +38,7 @@ Ifc4.Interfaces.IfcTransportElementTypeEnum IIfcTransportElementType.PredefinedT return Ifc4.Interfaces.IfcTransportElementTypeEnum.ESCALATOR; case IfcTransportElementTypeEnum.HAULINGGEAR: //## Handle translation of HAULINGGEAR member from IfcTransportElementTypeEnum in property PredefinedType - //TODO: Handle translation of HAULINGGEAR member from IfcTransportElementTypeEnum in property PredefinedType - throw new System.NotImplementedException(); + return this.GetUserDefined(); //## case IfcTransportElementTypeEnum.LIFTINGGEAR: return Ifc4.Interfaces.IfcTransportElementTypeEnum.LIFTINGGEAR; diff --git a/Xbim.Ifc4x3/Interfaces/IFC4/IfcUnitaryControlElement.cs b/Xbim.Ifc4x3/Interfaces/IFC4/IfcUnitaryControlElement.cs index 9717b42e8..b6598885a 100644 --- a/Xbim.Ifc4x3/Interfaces/IFC4/IfcUnitaryControlElement.cs +++ b/Xbim.Ifc4x3/Interfaces/IFC4/IfcUnitaryControlElement.cs @@ -34,13 +34,11 @@ public partial class @IfcUnitaryControlElement : IIfcUnitaryControlElement return Ifc4.Interfaces.IfcUnitaryControlElementTypeEnum.ALARMPANEL; case IfcUnitaryControlElementTypeEnum.BASESTATIONCONTROLLER: //## Handle translation of BASESTATIONCONTROLLER member from IfcUnitaryControlElementTypeEnum in property PredefinedType - //TODO: Handle translation of BASESTATIONCONTROLLER member from IfcUnitaryControlElementTypeEnum in property PredefinedType - throw new System.NotImplementedException(); + return this.GetUserDefined(); //## case IfcUnitaryControlElementTypeEnum.COMBINED: //## Handle translation of COMBINED member from IfcUnitaryControlElementTypeEnum in property PredefinedType - //TODO: Handle translation of COMBINED member from IfcUnitaryControlElementTypeEnum in property PredefinedType - throw new System.NotImplementedException(); + return this.GetUserDefined(); //## case IfcUnitaryControlElementTypeEnum.CONTROLPANEL: return Ifc4.Interfaces.IfcUnitaryControlElementTypeEnum.CONTROLPANEL; diff --git a/Xbim.Ifc4x3/Interfaces/IFC4/IfcUnitaryControlElementType.cs b/Xbim.Ifc4x3/Interfaces/IFC4/IfcUnitaryControlElementType.cs index f0b64ee0c..7694eae83 100644 --- a/Xbim.Ifc4x3/Interfaces/IFC4/IfcUnitaryControlElementType.cs +++ b/Xbim.Ifc4x3/Interfaces/IFC4/IfcUnitaryControlElementType.cs @@ -34,13 +34,11 @@ Ifc4.Interfaces.IfcUnitaryControlElementTypeEnum IIfcUnitaryControlElementType.P return Ifc4.Interfaces.IfcUnitaryControlElementTypeEnum.ALARMPANEL; case IfcUnitaryControlElementTypeEnum.BASESTATIONCONTROLLER: //## Handle translation of BASESTATIONCONTROLLER member from IfcUnitaryControlElementTypeEnum in property PredefinedType - //TODO: Handle translation of BASESTATIONCONTROLLER member from IfcUnitaryControlElementTypeEnum in property PredefinedType - throw new System.NotImplementedException(); + return this.GetUserDefined(); //## case IfcUnitaryControlElementTypeEnum.COMBINED: //## Handle translation of COMBINED member from IfcUnitaryControlElementTypeEnum in property PredefinedType - //TODO: Handle translation of COMBINED member from IfcUnitaryControlElementTypeEnum in property PredefinedType - throw new System.NotImplementedException(); + return this.GetUserDefined(); //## case IfcUnitaryControlElementTypeEnum.CONTROLPANEL: return Ifc4.Interfaces.IfcUnitaryControlElementTypeEnum.CONTROLPANEL; diff --git a/Xbim.Ifc4x3/Interfaces/IFC4/IfcVibrationIsolator.cs b/Xbim.Ifc4x3/Interfaces/IFC4/IfcVibrationIsolator.cs index be120c26b..91b400ad4 100644 --- a/Xbim.Ifc4x3/Interfaces/IFC4/IfcVibrationIsolator.cs +++ b/Xbim.Ifc4x3/Interfaces/IFC4/IfcVibrationIsolator.cs @@ -32,8 +32,7 @@ public partial class @IfcVibrationIsolator : IIfcVibrationIsolator { case IfcVibrationIsolatorTypeEnum.BASE: //## Handle translation of BASE member from IfcVibrationIsolatorTypeEnum in property PredefinedType - //TODO: Handle translation of BASE member from IfcVibrationIsolatorTypeEnum in property PredefinedType - throw new System.NotImplementedException(); + return this.GetUserDefined(); //## case IfcVibrationIsolatorTypeEnum.COMPRESSION: return Ifc4.Interfaces.IfcVibrationIsolatorTypeEnum.COMPRESSION; diff --git a/Xbim.Ifc4x3/Interfaces/IFC4/IfcVibrationIsolatorType.cs b/Xbim.Ifc4x3/Interfaces/IFC4/IfcVibrationIsolatorType.cs index 2312d92ea..61080a556 100644 --- a/Xbim.Ifc4x3/Interfaces/IFC4/IfcVibrationIsolatorType.cs +++ b/Xbim.Ifc4x3/Interfaces/IFC4/IfcVibrationIsolatorType.cs @@ -32,8 +32,7 @@ Ifc4.Interfaces.IfcVibrationIsolatorTypeEnum IIfcVibrationIsolatorType.Predefine { case IfcVibrationIsolatorTypeEnum.BASE: //## Handle translation of BASE member from IfcVibrationIsolatorTypeEnum in property PredefinedType - //TODO: Handle translation of BASE member from IfcVibrationIsolatorTypeEnum in property PredefinedType - throw new System.NotImplementedException(); + return this.GetUserDefined(); //## case IfcVibrationIsolatorTypeEnum.COMPRESSION: return Ifc4.Interfaces.IfcVibrationIsolatorTypeEnum.COMPRESSION; diff --git a/Xbim.Ifc4x3/Interfaces/IFC4/IfcWall.cs b/Xbim.Ifc4x3/Interfaces/IFC4/IfcWall.cs index 398f203b4..da53766f1 100644 --- a/Xbim.Ifc4x3/Interfaces/IFC4/IfcWall.cs +++ b/Xbim.Ifc4x3/Interfaces/IFC4/IfcWall.cs @@ -44,8 +44,7 @@ public partial class @IfcWall : IIfcWall return Ifc4.Interfaces.IfcWallTypeEnum.POLYGONAL; case IfcWallTypeEnum.RETAININGWALL: //## Handle translation of RETAININGWALL member from IfcWallTypeEnum in property PredefinedType - //TODO: Handle translation of RETAININGWALL member from IfcWallTypeEnum in property PredefinedType - throw new System.NotImplementedException(); + return this.GetUserDefined(); //## case IfcWallTypeEnum.SHEAR: return Ifc4.Interfaces.IfcWallTypeEnum.SHEAR; @@ -55,8 +54,7 @@ public partial class @IfcWall : IIfcWall return Ifc4.Interfaces.IfcWallTypeEnum.STANDARD; case IfcWallTypeEnum.WAVEWALL: //## Handle translation of WAVEWALL member from IfcWallTypeEnum in property PredefinedType - //TODO: Handle translation of WAVEWALL member from IfcWallTypeEnum in property PredefinedType - throw new System.NotImplementedException(); + return this.GetUserDefined(); //## case IfcWallTypeEnum.USERDEFINED: //## Optional custom handling of PredefinedType == .USERDEFINED. diff --git a/Xbim.Ifc4x3/Interfaces/IFC4/IfcWallType.cs b/Xbim.Ifc4x3/Interfaces/IFC4/IfcWallType.cs index 8edf24095..acc9ce97c 100644 --- a/Xbim.Ifc4x3/Interfaces/IFC4/IfcWallType.cs +++ b/Xbim.Ifc4x3/Interfaces/IFC4/IfcWallType.cs @@ -44,8 +44,7 @@ Ifc4.Interfaces.IfcWallTypeEnum IIfcWallType.PredefinedType return Ifc4.Interfaces.IfcWallTypeEnum.POLYGONAL; case IfcWallTypeEnum.RETAININGWALL: //## Handle translation of RETAININGWALL member from IfcWallTypeEnum in property PredefinedType - //TODO: Handle translation of RETAININGWALL member from IfcWallTypeEnum in property PredefinedType - throw new System.NotImplementedException(); + return this.GetUserDefined(); //## case IfcWallTypeEnum.SHEAR: return Ifc4.Interfaces.IfcWallTypeEnum.SHEAR; @@ -55,8 +54,7 @@ Ifc4.Interfaces.IfcWallTypeEnum IIfcWallType.PredefinedType return Ifc4.Interfaces.IfcWallTypeEnum.STANDARD; case IfcWallTypeEnum.WAVEWALL: //## Handle translation of WAVEWALL member from IfcWallTypeEnum in property PredefinedType - //TODO: Handle translation of WAVEWALL member from IfcWallTypeEnum in property PredefinedType - throw new System.NotImplementedException(); + return this.GetUserDefined(); //## case IfcWallTypeEnum.USERDEFINED: //## Optional custom handling of PredefinedType == .USERDEFINED. diff --git a/Xbim.Ifc4x3/Interfaces/IFC4X1/IfcReferent.cs b/Xbim.Ifc4x3/Interfaces/IFC4X1/IfcReferent.cs index e10759201..57018df0f 100644 --- a/Xbim.Ifc4x3/Interfaces/IFC4X1/IfcReferent.cs +++ b/Xbim.Ifc4x3/Interfaces/IFC4X1/IfcReferent.cs @@ -33,44 +33,37 @@ public partial class @IfcReferent : IIfcReferent { case IfcReferentTypeEnum.BOUNDARY: //## Handle translation of BOUNDARY member from IfcReferentTypeEnum in property PredefinedType - //TODO: Handle translation of BOUNDARY member from IfcReferentTypeEnum in property PredefinedType - throw new System.NotImplementedException(); + return this.GetUserDefined(); //## case IfcReferentTypeEnum.INTERSECTION: //## Handle translation of INTERSECTION member from IfcReferentTypeEnum in property PredefinedType - //TODO: Handle translation of INTERSECTION member from IfcReferentTypeEnum in property PredefinedType - throw new System.NotImplementedException(); + return this.GetUserDefined(); //## case IfcReferentTypeEnum.KILOPOINT: return Ifc4.Interfaces.IfcReferentTypeEnum.KILOPOINT; case IfcReferentTypeEnum.LANDMARK: //## Handle translation of LANDMARK member from IfcReferentTypeEnum in property PredefinedType - //TODO: Handle translation of LANDMARK member from IfcReferentTypeEnum in property PredefinedType - throw new System.NotImplementedException(); + return this.GetUserDefined(); //## case IfcReferentTypeEnum.MILEPOINT: return Ifc4.Interfaces.IfcReferentTypeEnum.MILEPOINT; case IfcReferentTypeEnum.POSITION: //## Handle translation of POSITION member from IfcReferentTypeEnum in property PredefinedType - //TODO: Handle translation of POSITION member from IfcReferentTypeEnum in property PredefinedType - throw new System.NotImplementedException(); + return this.GetUserDefined(); //## case IfcReferentTypeEnum.REFERENCEMARKER: //## Handle translation of REFERENCEMARKER member from IfcReferentTypeEnum in property PredefinedType - //TODO: Handle translation of REFERENCEMARKER member from IfcReferentTypeEnum in property PredefinedType - throw new System.NotImplementedException(); + return this.GetUserDefined(); //## case IfcReferentTypeEnum.STATION: return Ifc4.Interfaces.IfcReferentTypeEnum.STATION; case IfcReferentTypeEnum.SUPERELEVATIONEVENT: //## Handle translation of SUPERELEVATIONEVENT member from IfcReferentTypeEnum in property PredefinedType - //TODO: Handle translation of SUPERELEVATIONEVENT member from IfcReferentTypeEnum in property PredefinedType - throw new System.NotImplementedException(); + return this.GetUserDefined(); //## case IfcReferentTypeEnum.WIDTHEVENT: //## Handle translation of WIDTHEVENT member from IfcReferentTypeEnum in property PredefinedType - //TODO: Handle translation of WIDTHEVENT member from IfcReferentTypeEnum in property PredefinedType - throw new System.NotImplementedException(); + return this.GetUserDefined(); //## case IfcReferentTypeEnum.USERDEFINED: //## Optional custom handling of PredefinedType == .USERDEFINED. diff --git a/Xbim.Ifc4x3/Interfaces/IfcObjectDefinitionExtensions.cs b/Xbim.Ifc4x3/Interfaces/IfcObjectDefinitionExtensions.cs new file mode 100644 index 000000000..34098dda3 --- /dev/null +++ b/Xbim.Ifc4x3/Interfaces/IfcObjectDefinitionExtensions.cs @@ -0,0 +1,41 @@ +using System; +using System.Collections.Concurrent; + + +namespace Xbim.Ifc4.Interfaces +{ + public static class IfcObjectDefinitionExtensions + { + // map of an Enum Type to its USERDEFINED entry + private static ConcurrentDictionary UserDefinedEnumCache = new ConcurrentDictionary(); + + /// + /// Returns the Enum with value of "USERDEFINED" for the Enum + /// + /// A cache is used for efficiency + /// The target Enum type + /// The object - for future use + /// + public static TOut GetUserDefined(this IIfcObjectDefinition _) where TOut : Enum + { + var enumType = typeof(TOut); + + var undefinedEnum = UserDefinedEnumCache.GetOrAdd(enumType, GetUserdefined(enumType)); + if (undefinedEnum == null) + { + return default; // Doesn't contain USERDEFINED + } + return (TOut)undefinedEnum; + } + + private static Enum GetUserdefined(Type enumType) + { + try + { + return (Enum)Enum.Parse(enumType, "USERDEFINED"); + } + catch { } + return default; + } + } +} diff --git a/Xbim.Ifc4x3/Kernel/IfcObject.Partial.cs b/Xbim.Ifc4x3/Kernel/IfcObject.Partial.cs new file mode 100644 index 000000000..7b1808089 --- /dev/null +++ b/Xbim.Ifc4x3/Kernel/IfcObject.Partial.cs @@ -0,0 +1,30 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using Xbim.Ifc4.Interfaces; + +namespace Xbim.Ifc4x3.Kernel +{ + public partial class IfcObject + { + /// + /// Returns all property sets related to this object + /// + public IEnumerable PropertySets => IsDefinedBy.SelectMany(r => r.RelatingPropertyDefinition.PropertySetDefinitions).OfType(); + + + /// + /// Returns all element quantities related to this object + /// + /// All related element quantities + public IEnumerable ElementQuantities => IsDefinedBy.SelectMany(r => r.RelatingPropertyDefinition.PropertySetDefinitions).OfType(); + + + /// + /// Returne all physical simple quantities (like length, area, volume, count, etc.) + /// + /// All physical simple quantities (like length, area, volume, count, etc.) + public IEnumerable PhysicalSimpleQuantities => ElementQuantities.SelectMany(eq => eq.Quantities).OfType(); + } + +} diff --git a/Xbim.Ifc4x3/Kernel/IfcPropertySetDefinitionSet.Partial.cs b/Xbim.Ifc4x3/Kernel/IfcPropertySetDefinitionSet.Partial.cs new file mode 100644 index 000000000..b79a690e6 --- /dev/null +++ b/Xbim.Ifc4x3/Kernel/IfcPropertySetDefinitionSet.Partial.cs @@ -0,0 +1,12 @@ +using System.Collections.Generic; +using Xbim.Ifc4.Interfaces; + +namespace Xbim.Ifc4x3.Kernel +{ + public partial struct IfcPropertySetDefinitionSet : IIfcPropertySetDefinitionSelect + { + public IEnumerable PropertySetDefinitions => _value; + + IEnumerable IIfcPropertySetDefinitionSelect.PropertySetDefinitions => _value; + } +} diff --git a/Xbim.Ifc4x3/Kernel/IfcPropertySetDefinitionSetPartial.cs b/Xbim.Ifc4x3/Kernel/IfcPropertySetDefinitionSetPartial.cs deleted file mode 100644 index 63975db65..000000000 --- a/Xbim.Ifc4x3/Kernel/IfcPropertySetDefinitionSetPartial.cs +++ /dev/null @@ -1,10 +0,0 @@ -using System.Collections.Generic; - -namespace Xbim.Ifc4x3.Kernel -{ - public partial struct IfcPropertySetDefinitionSet - { - public IEnumerable PropertySetDefinitions => _value; - - } -} diff --git a/Xbim.Ifc4x3/MeasureResource/IfcCompoundPlaneAngleMeasure.Partial.cs b/Xbim.Ifc4x3/MeasureResource/IfcCompoundPlaneAngleMeasure.Partial.cs new file mode 100644 index 000000000..4d205ce6d --- /dev/null +++ b/Xbim.Ifc4x3/MeasureResource/IfcCompoundPlaneAngleMeasure.Partial.cs @@ -0,0 +1,47 @@ +using System; +using System.Collections; +using System.Collections.Generic; +using System.Linq; +using System.Text; + +namespace Xbim.Ifc4x3.MeasureResource +{ + public partial struct IfcCompoundPlaneAngleMeasure : IEnumerable + { + public double AsDouble + { + get + { + var components = _value.Count; + double measure1 = 0; double measure2 = 0; double measure3 = 0; double millionthsOfaSecond = 0; + if (components > 3) millionthsOfaSecond = _value[3]; + if (components > 2) measure3 = _value[2]; + if (components > 1) measure2 = _value[1]; + if (components > 0) measure1 = _value[0]; + double main = measure1 + (measure2 / 60.0) + (measure3 / 3600.0) + (millionthsOfaSecond / 3600e6); + return main; + } + } + + public static IfcCompoundPlaneAngleMeasure FromDouble(double degreeAngle) + { + int measure1; int measure2; int measure3; int measure4; + measure1 = (int)degreeAngle; //integer part + measure2 = (int)((degreeAngle - measure1) * 60); + measure3 = (int)((((degreeAngle - measure1) * 60) - measure2) * 60); + measure4 = (int)((((((degreeAngle - measure1) * 60) - measure2) * 60) - measure3) * 1e6); + var vals = new List() { measure1, measure2, measure3, measure4 }; + return new IfcCompoundPlaneAngleMeasure(vals); + } + + public IEnumerator GetEnumerator() + { + return _value.GetEnumerator(); + } + + IEnumerator IEnumerable.GetEnumerator() + { + return GetEnumerator(); + } + } +} diff --git a/Xbim.Ifc4x3/MeasureResource/IfcConversionBasedUnit.Partial.cs b/Xbim.Ifc4x3/MeasureResource/IfcConversionBasedUnit.Partial.cs new file mode 100644 index 000000000..5aa7bff3c --- /dev/null +++ b/Xbim.Ifc4x3/MeasureResource/IfcConversionBasedUnit.Partial.cs @@ -0,0 +1,42 @@ +using Xbim.Ifc4.Interfaces; + +namespace Xbim.Ifc4x3.MeasureResource +{ + public partial class IfcConversionBasedUnit + { + public override string FullName { get { return Name; } } + + /// + /// Get Symbol string for IfcConversionBasedUnit conversion unit + /// + /// String holding symbol + public new string Symbol + { + get + { + string name = Name; + + if ((UnitType == IfcUnitEnum.LENGTHUNIT) || + (UnitType == IfcUnitEnum.AREAUNIT) || + (UnitType == IfcUnitEnum.VOLUMEUNIT) + ) + { + string pow = string.Empty; + if (Dimensions.LengthExponent == 2) //area + pow += '\u00B2'; //try unicode ((char)0x00B2)add ² + if (Dimensions.LengthExponent == 3) //volume + pow += '\u00B3'; //((char)0x00B3)add ³ + + if ((name.ToUpper().Contains("FEET")) || (name.ToUpper().Contains("FOOT"))) + return "ft" + pow; + + if (name.ToUpper().Contains("INCH")) + return "in" + pow; + + return name + pow; + } + return name; + } + } + } +} diff --git a/Xbim.Ifc4x3/Xbim.Ifc4x3.csproj b/Xbim.Ifc4x3/Xbim.Ifc4x3.csproj index bb9de1073..40c70ccb0 100644 --- a/Xbim.Ifc4x3/Xbim.Ifc4x3.csproj +++ b/Xbim.Ifc4x3/Xbim.Ifc4x3.csproj @@ -12,5 +12,8 @@ + + $([System.String]::Copy(%(Filename)).Replace('.Partial', '.cs')) +