public Blittable WriteOpsIntoMemory( SystemLevelRuleNativeData dataArray, SymbolSeriesMatcherNativeDataWriter dataWriter) { var structExpressionsSpace = new JaggedIndexing { index = dataWriter.indexInStructExpressionMemory, length = (ushort)evaluators.Length }; var totalOperations = 0; for (int i = 0; i < evaluators.Length; i++) { var opSize = evaluators[i].OperatorSpaceNeeded; dataArray.structExpressionMemorySpace[i + structExpressionsSpace.index] = evaluators[i].WriteIntoOpDataArray( dataArray.dynamicOperatorMemory, new JaggedIndexing { index = dataWriter.indexInOperatorMemory + totalOperations, length = opSize }); totalOperations += opSize; } dataWriter.indexInOperatorMemory += totalOperations; dataWriter.indexInStructExpressionMemory += structExpressionsSpace.length; return(blittable = new Blittable { structExpressionSpace = structExpressionsSpace, replacementSymbol = targetSymbol }); }
public void WriteIntoMemory( SystemLevelRuleNativeData dataArray, SymbolSeriesMatcherNativeDataWriter dataWriter) { var replacementSymbolSpace = new JaggedIndexing { index = dataWriter.indexInReplacementSymbolsMemory, length = (ushort)replacementSymbols.Length }; for (int i = 0; i < replacementSymbols.Length; i++) { var blittableReplacement = replacementSymbols[i].WriteOpsIntoMemory(dataArray, dataWriter); dataArray.replacementsSymbolMemorySpace[i + replacementSymbolSpace.index] = blittableReplacement; } dataWriter.indexInReplacementSymbolsMemory += replacementSymbolSpace.length; blittable = new Blittable { probability = probability, replacementSymbolSize = (ushort)replacementSymbols.Length, replacementParameterCount = replacementParameterCount, replacementSymbols = replacementSymbolSpace }; }
public void Params_Blittable() { Blittable a = new Blittable(1, 2, 3, 4, -5, -6, -7, 8.0f, 9.0, typeof(ITests).GUID); Blittable b; Blittable c = Tests.Param13(a, in a, out b); Assert.True(AllEqual(a, b, c)); }
public void Array_Blittable() { Blittable[] a = new Blittable[] { new Blittable(1, 2, 3, 4, -5, -6, -7, 8.0f, 9.0, typeof(ITests).GUID), new Blittable(10, 20, 30, 40, -50, -60, -70, 80.0f, 90.0, typeof(IStringable).GUID) }; Blittable[] b = new Blittable[a.Length]; Blittable[] c; Blittable[] d = Tests.Array13(a, b, out c); Assert.True(AllEqual(a, b, c, d)); }
public void WriteIntoNativeData(NativeTurtleData nativeData, TurtleNativeDataWriter writer) { var vertexSlice = new JaggedIndexing { index = writer.indexInVertexes, length = (ushort)draft.vertexCount }; for (int i = 0; i < vertexSlice.length; i++) { var vertexDatum = new NativeVertexDatum { vertex = draft.vertices[i], normal = draft.normals[i], uv = draft.uvs[i], tangent = draft.tangents[i] }; nativeData.vertexData[i + writer.indexInVertexes] = vertexDatum; } writer.indexInVertexes += vertexSlice.length; var triangleCount = new JaggedIndexing { index = writer.indexInTriangles, length = (ushort)draft.triangles.Length }; for (int i = 0; i < triangleCount.length; i++) { nativeData.triangleData[i + writer.indexInTriangles] = draft.triangles[i]; } writer.indexInTriangles += triangleCount.length; var existingMaterialIndex = writer.materialsInOrder.IndexOf(material); if (existingMaterialIndex == -1) { existingMaterialIndex = writer.materialsInOrder.Count; writer.materialsInOrder.Add(material); } var blittable = new Blittable { translation = translation, alsoMove = alsoMove, vertexes = vertexSlice, trianges = triangleCount, materialIndex = (byte)existingMaterialIndex }; nativeData.allOrganData[writer.indexInOrganTemplates] = blittable; writer.indexInOrganTemplates++; }
public static unsafe void Main() { int i; object o = new Blittable(); int * ptr = &i; IntPtr addr = (IntPtr)ptr; Console.WriteLine(addr.ToString("x")); GCHandle h = GCHandle.Alloc(o, GCHandleType.Pinned); addr = h.AddrOfPinnedObject(); Console.WriteLine(addr.ToString("x")); h.Free(); }
public unsafe void IsBlittable() { Assert.True(Blittable.IsBlittable <BlittablePointer <byte> >()); Assert.True(Blittable.IsBlittable <BlittablePointer <sbyte> >()); Assert.True(Blittable.IsBlittable <BlittablePointer <short> >()); Assert.True(Blittable.IsBlittable <BlittablePointer <ushort> >()); Assert.True(Blittable.IsBlittable <BlittablePointer <int> >()); Assert.True(Blittable.IsBlittable <BlittablePointer <uint> >()); Assert.True(Blittable.IsBlittable <BlittablePointer <long> >()); Assert.True(Blittable.IsBlittable <BlittablePointer <ulong> >()); Assert.True(Blittable.IsBlittable <BlittablePointer <IntPtr> >()); Assert.True(Blittable.IsBlittable <BlittablePointer <UIntPtr> >()); Assert.True(Blittable.IsBlittable <BlittablePointer <RandomIntStruct> >()); }