public static void SaveProgram(Stream s, SerializableFLProgram program, FLInstructionSet iset, string[] extraSteps, FLProgramHeader programHeader = null) { Byt3Serializer main = CreateLoader(iset); MemoryStream ms = new MemoryStream(); if (!main.TryWritePacket(ms, program)) { throw new FLDeserializationException("Can not parse stream"); } if (programHeader == null) { programHeader = new FLProgramHeader("Program", "NONE", Version.Parse("0.0.0.1")); } FLHeader header = new FLHeader(FLVersions.HeaderVersion, FLVersions.SerializationVersion, FLVersions.CommonVersion, extraSteps); byte[] p = ms.ToArray(); ms.Close(); FLFileFormat file = new FLFileFormat(header, programHeader, p); if (!main.TryWritePacket(s, file)) { throw new FLDeserializationException("Can not parse stream"); } }
public override FLFileFormat DeserializePacket(PrimitiveValueWrapper s) { FLHeader header = flHs.DeserializePacket(s); if (!header.IsCompatible()) { throw new FLDeserializationException("The Loaded Script is not compatible."); } FLProgramHeader programHeader = phs.DeserializePacket(s); byte[] program = s.ReadBytes(); List <ExtraStage> extraStages = CreateExtraStages(header.ExtraSerializationSteps); for (int i = 0; i < extraStages.Count; i++) { program = extraStages[i].FromFile.Process(program); } return(new FLFileFormat(header, programHeader, program)); }