예제 #1
0
        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("}");
        }
예제 #2
0
        /// <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;
 }