private static void GenerateLSLConstantTestScript(ILSLLibraryDataProvider dataProvider, TextWriter writer) { writer.WriteLine(); writer.WriteLine("default {"); writer.WriteLine("\tstate_entry(){"); var index = 0; foreach (var constantGroup in ChunkBy(dataProvider.LibraryConstants.Where(x => x.Subsets.Contains("lsl")).ToGenericArray(), 200)) { writer.WriteLine("\t\t#ifdef GROUP_" + index); foreach (var constant in constantGroup) { writer.WriteLine("\t\tif(" + constant.Name + " != " + constant.ValueStringAsCodeLiteral + ") llOwnerSay(\"" + constant.Name + " value is \"+(string)" + constant.Name + "+\", LibLSLCC value is \"+(string)" + constant.ValueStringAsCodeLiteral + ");"); } writer.WriteLine("\t\tllOwnerSay(\"GROUP_" + index + " Test Complete.\");"); writer.WriteLine("\t\t#endif"); index++; } writer.WriteLine("\t}"); writer.WriteLine("}"); }
/// <summary> /// Serialize library signature definitions to an XmlWriter object /// </summary> /// <param name="dataProvider">The data provider to serialize.</param> /// <param name="writer">The XmlWriter object to serialize to.</param> /// <param name="writeRootElement"> /// Boolean defining whether or not to write a root element to the stream that houses the /// signatures, or to just write the signatures without putting them in a root element. /// </param> /// <exception cref="InvalidOperationException"><paramref name="writer" /> is closed.</exception> /// <exception cref="ArgumentNullException"><paramref name="dataProvider"/> or <paramref see="writer"/> is <c>null</c>.</exception> public static void WriteXml(ILSLLibraryDataProvider dataProvider, XmlWriter writer, bool writeRootElement = true) { if (dataProvider == null) { throw new ArgumentNullException("dataProvider"); } if (writer == null) { throw new ArgumentNullException("writer"); } if (writeRootElement) { writer.WriteStartElement(RootElementName); } foreach (var desc in dataProvider.SubsetDescriptions.Values) { writer.WriteStartElement("SubsetDescription"); desc.WriteXml(writer); writer.WriteEndElement(); } foreach (var func in dataProvider.LibraryFunctions.SelectMany(x => x)) { writer.WriteStartElement("LibraryFunction"); func.WriteXml(writer); writer.WriteEndElement(); } foreach (var ev in dataProvider.LibraryEvents) { writer.WriteStartElement("EventHandler"); ev.WriteXml(writer); writer.WriteEndElement(); } foreach (var con in dataProvider.LibraryConstants) { writer.WriteStartElement("LibraryConstant"); con.WriteXml(writer); writer.WriteEndElement(); } if (writeRootElement) { writer.WriteEndElement(); } }
public LibLSLCCCodeGenerator(ILSLLibraryDataProvider libraryDataProvider, LSLOpenSimCompilerSettings compilerSettings) { _libraryData = libraryDataProvider; CompilerSettings = compilerSettings; }