public SecondlifeWikiLibraryData(IDocumentationProvider documentationProvider, IEnumerable <string> subsets) { _client = new CachedWebDownloader(WebCacheFileDirectory); _subsets = subsets.ToList(); Log.WriteLine("============================"); Log.WriteLine("Starting scrape of " + SecondlifeWikiDomain + " ... "); Log.WriteLine("============================"); foreach (var lslLibraryConstantSignature in GetLSLConstants()) { lslLibraryConstantSignature.DocumentationString = documentationProvider.DocumentConstant(lslLibraryConstantSignature); _constants.Add(lslLibraryConstantSignature.Name, lslLibraryConstantSignature); } foreach (var lslLibraryFunctionSignature in GetLSLFunctions()) { lslLibraryFunctionSignature.DocumentationString = documentationProvider.DocumentFunction(lslLibraryFunctionSignature); if (_functions.ContainsKey(lslLibraryFunctionSignature.Name)) { _functions[lslLibraryFunctionSignature.Name].Add(lslLibraryFunctionSignature); } else { _functions.Add(lslLibraryFunctionSignature.Name, new GenericArray <LSLLibraryFunctionSignature> { lslLibraryFunctionSignature }); } } foreach (var lslLibraryEventSignature in GetLSLEvents()) { lslLibraryEventSignature.DocumentationString = documentationProvider.DocumentEvent(lslLibraryEventSignature); _events.Add(lslLibraryEventSignature.Name, lslLibraryEventSignature); } Log.WriteLine("============================"); Log.WriteLine("Finished scrape of " + SecondlifeWikiDomain); Log.WriteLine("============================"); }
private IEnumerable <LSLLibraryFunctionSignature> InterfaceMethods(Type containerType) { foreach (var v in containerType.GetMethods()) { var subsets = _subsetsMap[containerType]; var returnType = LslTypeFromCsharpType(v.ReturnType); var pTypes = new GenericArray <LSLParameterSignature>(); foreach (var p in v.GetParameters()) { var isVariadic = IsParams(p); if (p.ParameterType == (typeof(object[])) && isVariadic) { pTypes.Add(new LSLParameterSignature(LSLType.Void, p.Name, true)); goto omitRestOfParameters; } if (isVariadic) { Log.WriteLineWithHeader("[OpenSimLibraryDataReflector]: ", "Interface function {0} of type {1}, variadic parameter {2} is an un-recognized data type ({3}), function omitted", v.Name, containerType.Name, p.Name, p.ParameterType.Name); goto omitFunction; } var type = LslTypeFromCsharpParameterType(p.ParameterType); if (type != null) { pTypes.Add(new LSLParameterSignature(type.Value, p.Name, false)); } else { Log.WriteLineWithHeader("[OpenSimLibraryDataReflector]: ", "Interface function {0} of type {1}, parameter {2} is an un-recognized data type ({3}), function omitted", v.Name, containerType.Name, p.Name, p.ParameterType.Name); goto omitFunction; } } omitRestOfParameters: if (returnType != null) { var f = new LSLLibraryFunctionSignature(returnType.Value, v.Name, pTypes); f.DocumentationString = _documentationProvider.DocumentFunction(f); f.Subsets.SetSubsets(subsets); yield return(f); } else { Log.WriteLineWithHeader("[OpenSimLibraryDataReflector]: ", "function {0} of type {1} return type is an un-recognized data type ({2})", v.Name, containerType.Name, v.ReturnType.Name); } omitFunction: ; } }