//----------------------------------------------------------------------- // ----------------------------------------------------------------------- // file="ExpressStepUtil" // Project: StgSharp // AuthorGroup: Nitload Space // Copyright (c) Nitload Space. All rights reserved. // // Permission is hereby granted, free of charge, to any person obtaining a copy // of this software and associated documentation files (the "Software"), to deal // in the Software without restriction, including without limitation the rights // to use, copy, modify, merge, publish, distribute, sublicense, and/or sell // copies of the Software, and to permit persons to whom the Software is // furnished to do so, subject to the following conditions: // // The above copyright notice and this permission notice shall be included in all // copies or substantial portions of the Software. // // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE // AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE // SOFTWARE. // // ----------------------------------------------------------------------- // ----------------------------------------------------------------------- using CommunityToolkit.HighPerformance.Buffers; using StgSharp.Model.Step; using StgSharp.Script; using StgSharp.Script.Express; using System; using System.Collections.Frozen; using System.Collections.Generic; using System.Runtime.CompilerServices; namespace StgSharp.Model.Step { public class ExpressStepUtil : ExpSchema { public const string AdvancedFaceText = "ADVANCED_FACE"; public const string Axis2Placement2DText = "AXIS2_PLACEMENT_2D"; public const string Axis2Placement3DText = "AXIS2_PLACEMENT_3D"; public const string BSplineCurveWithKnotsText = "B_SPLINE_CURVE_WITH_KNOTS"; public const string CartesianPointText = "CARTESIAN_POINT"; public const string CircleText = "CIRCLE"; public const string CylindricalSurfaceText = "CYLINDRICAL_SURFACE"; public const string DirectionText = "DIRECTION"; public const string EdgeCurveText = "EDGE_CURVE"; public const string EdgeLoopText = "EDGE_LOOP"; public const string EllipseText = "ELLIPSE"; public const string FaceBoundText = "FACE_BOUND"; public const string FaceOuterBoundText = "FACE_OUTER_BOUND"; public const string LineText = "LINE"; public const string OrientedEdgeText = "ORIENTED_EDGE"; public const string PlaneText = "PLANE"; public const string RepresentationItemText = "REPRESENTATION_ITEM"; public const string VectorText = "VECTOR"; public const string VertexPointText = "VERTEX_POINT"; private static HashSet names = [ AdvancedFaceText, Axis2Placement2DText, Axis2Placement3DText, BSplineCurveWithKnotsText, CartesianPointText, CircleText, CylindricalSurfaceText, DirectionText, EdgeCurveText, EdgeLoopText, EllipseText, FaceBoundText, FaceOuterBoundText, LineText, OrientedEdgeText, PlaneText, RepresentationItemText, VectorText, VertexPointText, ]; private FrozenDictionary entitiesDefine; private StringPool _entityNamePool = new StringPool(); public ExpressStepUtil() { IEnumerable> defineSource = []; entitiesDefine = new Dictionary(defineSource) .ToFrozenDictionary(); foreach (string item in names) { _entityNamePool.Add(item); } } internal StepModel Current { get; set; } public override void LoadFromSource(ExpSchemaSource source) { return; } public override bool TryGetConst(string name, out ExpElementInstance c) { c = null!; return false; } public override bool TryGetEntity(string name, out ExpEntitySource e) { return entitiesDefine.TryGetValue(name, out e!); } public override bool TryGetFunction(string name, out ExpFunctionSource f) { f = null!; return false; } public override bool TryGetProcedure(string name, out ExpProcedureSource p) { p = null!; return false; } public override bool TryGetRule(string name, out ExpRuleSource r) { r = null!; return false; } public override bool TryGetSchemaInclude(string name, out ExpSchema include) { include = null!; return false; } public override bool TryGetType(string name, out ExpTypeSource t) { t = null!; return false; } } }