edit: $/Dev10/feature/vs_langs01/Merlin/Main/Languages/Ruby/Ruby.sln;C403416 File: Ruby.sln =================================================================== --- $/Dev10/feature/vs_langs01/Merlin/Main/Languages/Ruby/Ruby.sln;C403416 (server) 5/17/2008 3:55 PM +++ Shelved Change: $/Dev10/feature/vs_langs01/Merlin/Main/Languages/Ruby/Ruby.sln;RubyLibsAndYaml @@ -17,9 +17,11 @@ EndProject Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Microsoft.Scripting", "..\..\Runtime\Microsoft.Scripting\Microsoft.Scripting.csproj", "{EB66B766-6354-4208-A3D4-AACBDCB5C3B3}" EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "IronRuby.Libraries.Yaml", "..\..\..\External\Languages\IronRuby\yaml\IronRuby.Libraries.Yaml\IronRuby.Libraries.Yaml.csproj", "{AA18A245-E342-4368-A474-83178311A742}" +EndProject Global GlobalSection(TeamFoundationVersionControl) = preSolution - SccNumberOfProjects = 9 + SccNumberOfProjects = 10 SccEnterpriseProvider = {4CA58AB2-18FA-4F8D-95D4-32DDF27D184C} SccTeamFoundationServer = http://vstfdevdiv:8080/ SccLocalPath0 = . @@ -35,18 +37,21 @@ SccProjectUniqueName4 = ClassInitGenerator\\ClassInitGenerator.csproj SccProjectName4 = ClassInitGenerator SccLocalPath4 = ClassInitGenerator - SccProjectUniqueName5 = ..\\..\\Runtime\\Microsoft.Scripting.Core\\Microsoft.Scripting.Core.csproj - SccProjectName5 = ../../Runtime/Microsoft.Scripting.Core - SccLocalPath5 = ..\\..\\Runtime\\Microsoft.Scripting.Core - SccProjectUniqueName6 = Utils\\IronRuby.Libraries.Scanner\\IronRuby.Libraries.Scanner.csproj - SccProjectName6 = Utils/IronRuby.Libraries.Scanner - SccLocalPath6 = Utils\\IronRuby.Libraries.Scanner - SccProjectUniqueName7 = Libraries.LCA_RESTRICTED\\IronRuby.Libraries.csproj - SccProjectName7 = Libraries.LCA_RESTRICTED - SccLocalPath7 = Libraries.LCA_RESTRICTED - SccProjectUniqueName8 = ..\\..\\Runtime\\Microsoft.Scripting\\Microsoft.Scripting.csproj - SccProjectName8 = ../../Runtime/Microsoft.Scripting - SccLocalPath8 = ..\\..\\Runtime\\Microsoft.Scripting + SccProjectUniqueName5 = Utils\\IronRuby.Libraries.Scanner\\IronRuby.Libraries.Scanner.csproj + SccProjectName5 = Utils/IronRuby.Libraries.Scanner + SccLocalPath5 = Utils\\IronRuby.Libraries.Scanner + SccProjectUniqueName6 = Libraries.LCA_RESTRICTED\\IronRuby.Libraries.csproj + SccProjectName6 = Libraries.LCA_RESTRICTED + SccLocalPath6 = Libraries.LCA_RESTRICTED + SccProjectUniqueName7 = ..\\..\\Runtime\\Microsoft.Scripting\\Microsoft.Scripting.csproj + SccProjectName7 = ../../Runtime/Microsoft.Scripting + SccLocalPath7 = ..\\..\\Runtime\\Microsoft.Scripting + SccProjectUniqueName8 = ..\\..\\..\\..\\ndp\\fx\\src\\Core\\Microsoft\\Scripting\\Microsoft.Scripting.Core.csproj + SccProjectName8 = ../../../../ndp/fx/src/Core/Microsoft/Scripting + SccLocalPath8 = ..\\..\\..\\..\\ndp\\fx\\src\\Core\\Microsoft\\Scripting + SccProjectUniqueName9 = ..\\..\\..\\External\\Languages\\IronRuby\\yaml\\IronRuby.Libraries.Yaml\\IronRuby.Libraries.Yaml.csproj + SccProjectName9 = ../../../../../../../Merlin_External/Languages/IronRuby/yaml/IronRuby.Libraries.Yaml + SccLocalPath9 = ..\\..\\..\\External\\Languages\\IronRuby\\yaml\\IronRuby.Libraries.Yaml EndGlobalSection GlobalSection(SolutionConfigurationPlatforms) = preSolution Debug|Any CPU = Debug|Any CPU @@ -128,6 +133,14 @@ {EB66B766-6354-4208-A3D4-AACBDCB5C3B3}.Silverlight Debug|Any CPU.Build.0 = Silverlight Debug|Any CPU {EB66B766-6354-4208-A3D4-AACBDCB5C3B3}.Silverlight Release|Any CPU.ActiveCfg = Silverlight Release|Any CPU {EB66B766-6354-4208-A3D4-AACBDCB5C3B3}.Silverlight Release|Any CPU.Build.0 = Silverlight Release|Any CPU + {AA18A245-E342-4368-A474-83178311A742}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {AA18A245-E342-4368-A474-83178311A742}.Debug|Any CPU.Build.0 = Debug|Any CPU + {AA18A245-E342-4368-A474-83178311A742}.FxCop|Any CPU.ActiveCfg = Release|Any CPU + {AA18A245-E342-4368-A474-83178311A742}.FxCop|Any CPU.Build.0 = Release|Any CPU + {AA18A245-E342-4368-A474-83178311A742}.Release|Any CPU.ActiveCfg = Release|Any CPU + {AA18A245-E342-4368-A474-83178311A742}.Release|Any CPU.Build.0 = Release|Any CPU + {AA18A245-E342-4368-A474-83178311A742}.Silverlight Debug|Any CPU.ActiveCfg = Debug|Any CPU + {AA18A245-E342-4368-A474-83178311A742}.Silverlight Release|Any CPU.ActiveCfg = Release|Any CPU EndGlobalSection GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE =================================================================== edit: $/Dev10/feature/vs_langs01/Merlin/Main/Languages/Ruby/ClassInitGenerator/Program.cs;C442093 File: Program.cs =================================================================== --- $/Dev10/feature/vs_langs01/Merlin/Main/Languages/Ruby/ClassInitGenerator/Program.cs;C442093 (server) 5/17/2008 3:55 PM +++ Shelved Change: $/Dev10/feature/vs_langs01/Merlin/Main/Languages/Ruby/ClassInitGenerator/Program.cs;RubyLibsAndYaml @@ -16,32 +16,39 @@ using System.Collections; using Ruby.Runtime.Calls; -internal class Generator { +internal class LibraryDef { - private readonly string/*!*/ TypeAction0 = TypeName(typeof(Action)); - private readonly string/*!*/ TypeAction1 = GenericTypeName(typeof(Action<>)); - private readonly string/*!*/ TypeActionN = GenericTypeName(typeof(Action<,>)); - private readonly string/*!*/ TypeFunction = GenericTypeName(typeof(Function<>)); - private readonly string/*!*/ TypeDelegate = TypeName(typeof(Delegate)); - private readonly string/*!*/ TypeRubyModule = TypeName(typeof(RubyModule)); - private readonly string/*!*/ TypeRubyClass = TypeName(typeof(RubyClass)); - private readonly string/*!*/ TypeActionOfRubyModule = TypeName(typeof(Action)); - private readonly string/*!*/ TypeRubyExecutionContext = TypeName(typeof(RubyExecutionContext)); - private readonly string/*!*/ TypeLibraryInitializer = TypeName(typeof(LibraryInitializer)); - private readonly string/*!*/ TypeRubyLibraryAttribute = TypeName(typeof(RubyLibraryAttribute)); - - private IndentedTextWriter _output; + private bool Builtins { get { return _namespace == typeof(RubyClass).Namespace; } } + + public static readonly string/*!*/ TypeAction0 = TypeName(typeof(Action)); + public static readonly string/*!*/ TypeAction1 = GenericTypeName(typeof(Action<>)); + public static readonly string/*!*/ TypeActionN = GenericTypeName(typeof(Action<,>)); + public static readonly string/*!*/ TypeFunction = GenericTypeName(typeof(Function<>)); + public static readonly string/*!*/ TypeDelegate = TypeName(typeof(Delegate)); + public static readonly string/*!*/ TypeRubyModule = TypeName(typeof(RubyModule)); + public static readonly string/*!*/ TypeRubyClass = TypeName(typeof(RubyClass)); + public static readonly string/*!*/ TypeActionOfRubyModule = TypeName(typeof(Action)); + public static readonly string/*!*/ TypeRubyExecutionContext = TypeName(typeof(RubyExecutionContext)); + public static readonly string/*!*/ TypeLibraryInitializer = TypeName(typeof(LibraryInitializer)); + public static readonly string/*!*/ TypeRubyLibraryAttribute = TypeName(typeof(RubyLibraryAttribute)); + + // TODO: store defs into LibraryDef private IDictionary _moduleDefs = new SortedDictionary(new TypeComparer()); // sorted to improve diff quality private Dictionary _moduleRefs = new Dictionary(); private Dictionary _classRefs = new Dictionary(); - private Assembly _assembly; + public readonly string/*!*/ _namespace; + public readonly string/*!*/ _initializerName; + public bool AnyErrors; + private IndentedTextWriter _output; - private bool _hasPrimitives = false; - - #region Definitions + public LibraryDef(string/*!*/ ns) { + _namespace = ns; + _initializerName = LibraryInitializer.GetTypeName(ns); + } + private class TypeRef { public ModuleDef Definition; public Type Type; @@ -85,6 +92,7 @@ public string/*!*/ QualifiedName; public string/*!*/ SimpleName; public string/*!*/ Id; + public bool IsExtension; public List/*!*/ Aliases = new List(); public Type/*!*/ Trait; @@ -118,11 +126,11 @@ // Variable name where definition is stored. public string DefVariable; - + public string BuildConfig; private int _dependencyOrder; - + /// /// Indicates the order that things should be generated so mixins/subclasses are always definied before /// they are referenced. Each module gets the value of the max of all the types it refers to @@ -148,20 +156,22 @@ public bool IsPrimitive { get { - return QualifiedName == RubyClass.KernelName + return !IsExtension && ( + QualifiedName == RubyClass.KernelName || QualifiedName == RubyClass.MainSingletonName || QualifiedName == RubyClass.ClassSingletonName || QualifiedName == RubyClass.ClassSingletonSingletonName - || Extends == typeof(Object) - || Extends == typeof(RubyClass) - || Extends == typeof(RubyModule); + || Extends == typeof(Object) + || Extends == typeof(RubyClass) + || Extends == typeof(RubyModule) + ); } } public bool HasInstanceInitializer { - get { + get { return InstanceMethods.Count > 0 || HiddenInstanceMethods.Count > 0 || HasCopyInclusions || IsPrimitive || - Constants.Count > 0; + Constants.Count > 0; } } @@ -227,26 +237,15 @@ #endregion - public Generator(TextWriter/*!*/ output) { - _output = new IndentedTextWriter(output); - _output.NewLine = "\r\n"; - } - - public void Generate(Assembly/*!*/ assembly) { - _assembly = assembly; + #region Reflection - ReflectTypes(); + public void ReflectTypes(Type[]/*!*/ allTypes) { - if (Environment.ExitCode == 0) { - GenerateCode(_namespace, _initializerTypeName, "public"); - } - } - - #region Reflection + foreach (Type trait in allTypes) { + if (trait.Namespace == null || !trait.Namespace.StartsWith(_namespace)) { + continue; + } - private void ReflectTypes() { - - foreach (Type trait in _assembly.GetTypes()) { object[] attrs; try { @@ -266,17 +265,23 @@ def.Kind = ModuleKind.Class; } else if (singleton != null) { def.Kind = ModuleKind.Singleton; + if (module.Extends != null) { + LogError("{0}: Singleton cannot Extend a type", trait.FullName); + module.Extends = null; + } } else { def.Kind = ModuleKind.Module; } if (module.Extends != null && module.Name == null) { - // extends a CLR type, no constant needs to be defined: + // extends a CLR type or an existing Ruby library class/module: + def.IsExtension = true; def.SimpleName = module.Extends.Name.Replace(ReflectionUtils.GenericArityDelimiter, '_'); - def.QualifiedName = RubyUtils.GetQualifiedName(module.Extends); + def.QualifiedName = null; def.DeclaringModule = null; def.IsGlobal = false; } else { + def.IsExtension = false; def.SimpleName = module.Name ?? trait.Name; def.QualifiedName = null; // to be filled in later def.DeclaringModule = null; // to be corrected later for nested modules @@ -288,7 +293,7 @@ def.BuildConfig = module.BuildConfig; def.Super = null; - if (cls != null && def.Extends != typeof(object) && !def.Extends.IsInterface) { + if (cls != null && def.Extends != typeof(object) && !def.Extends.IsInterface && !def.IsExtension) { if (cls != null && cls.Inherits != null) { def.Super = new TypeRef(cls.Inherits); } else { @@ -311,8 +316,8 @@ def.Mixins.Add(new MixinRef(new TypeRef(mixin.Extends), false)); } } - } - + } + _moduleDefs.Add(def.Extends, def); // added Ruby methods and constants: @@ -339,10 +344,6 @@ def.HiddenInstanceMethods[method.Name] = HiddenMethod.Undefined; } } - - if (def.Extends == typeof(Object)) { - _hasPrimitives = true; - } } } @@ -350,7 +351,7 @@ // qualified names, ids, declaring modules: foreach (ModuleDef def in _moduleDefs.Values) { - if (def.QualifiedName == null) { + if (!def.IsExtension) { def.QualifiedName = def.SimpleName; // finds the inner most Ruby module def containing this module def: @@ -376,6 +377,8 @@ break; } } + } else { + def.QualifiedName = RubyUtils.GetQualifiedName(def.Extends); } if (def.Kind == ModuleKind.Singleton) { @@ -389,11 +392,11 @@ } // wire-up supers and mixins: - foreach (ModuleDef def in _moduleDefs.Values) { + foreach (ModuleDef def in _moduleDefs.Values) { if (def.Super != null) { ModuleDef superDef; if (_moduleDefs.TryGetValue(def.Super.Type, out superDef)) { - + // define inheritance relationship: def.Super.Definition = superDef; def.Super.RefName = superDef.GetReference(ref defVariableId); @@ -404,7 +407,7 @@ def.Super.RefName = MakeClassReference(def.Super.Type); } - } else if (def.Kind == ModuleKind.Class && def.Extends != typeof(object)) { + } else if (!def.IsExtension && def.Kind == ModuleKind.Class && def.Extends != typeof(object)) { LogError("Missing super type for type '{0}'", def.QualifiedName); } @@ -412,15 +415,17 @@ foreach (MixinRef mixin in def.Mixins) { ModuleDef mixinDef; if (_moduleDefs.TryGetValue(mixin.Module.Type, out mixinDef)) { - + // define mixin relationship: mixin.Module.Definition = mixinDef; - mixin.Module.RefName = mixinDef.GetReference(ref defVariableId); + if (!mixin.Copy) { + mixin.Module.RefName = mixinDef.GetReference(ref defVariableId); + } - } else { + } else if (!mixin.Copy) { // define a module ref-variable for the type of the mixin: mixin.Module.RefName = MakeModuleReference(mixin.Module.Type); - } + } } } @@ -452,7 +457,7 @@ private void ReflectMethods(ModuleDef/*!*/ moduleDef) { Debug.Assert(moduleDef.Trait != null); - + BindingFlags flags = BindingFlags.Public | BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.Static; foreach (MethodInfo method in moduleDef.Trait.GetMethods(flags)) { object[] attrs = method.GetCustomAttributes(typeof(RubyMethodAttribute), false); @@ -469,7 +474,7 @@ def.Name = attr.Name; def.Attributes = attr.MethodAttributes; def.BuildConfig = attr.BuildConfig; - + methods.Add(attr.Name, def); } def.Overloads.Add(method); @@ -493,7 +498,7 @@ if (moduleDef.Constants.TryGetValue(name, out existing)) { LogError("Constant '{0}' defined by multiple members: '{1}' and '{2}'", name, existing.Field.Name, field.Name); } - + moduleDef.Constants.Add(name, new ConstantDef(name, field)); } } @@ -517,7 +522,7 @@ private bool RequirePublicStatic(MethodBase/*!*/ method) { if (!method.IsStatic) { Console.Error.WriteLine("Instance methods not supported (method '{0}.{1}')", TypeName(method.DeclaringType), method.Name); - Environment.ExitCode = 1; + AnyErrors = true; return false; } return true; @@ -526,19 +531,20 @@ private void LogError(string/*!*/ message, params object[] args) { Console.Error.Write("Error: "); Console.Error.WriteLine(message, args); - Environment.ExitCode = 1; + AnyErrors = true; } #endregion #region Code Generation - private void GenerateCode(string/*!*/ @namespace, string/*!*/ typeName, string/*!*/ typeVisibility) { - _output.WriteLine("[assembly: {2}(typeof({0}.{1}))]", @namespace, typeName, TypeRubyLibraryAttribute); - _output.WriteLine("namespace {0} {{", @namespace); + public void GenerateCode(IndentedTextWriter/*!*/ output) { + _output = output; + + _output.WriteLine("namespace {0} {{", _namespace); _output.Indent++; - _output.WriteLine("{0} sealed partial class {1} : {2} {{", typeVisibility, typeName, TypeLibraryInitializer); + _output.WriteLine("public sealed class {0} : {1} {{", _initializerName, TypeLibraryInitializer); _output.Indent++; _output.WriteLine("protected override void LoadModules() {"); @@ -551,18 +557,19 @@ _output.WriteLine(); GenerateTraitInitializations(_moduleDefs); - + _output.Indent--; _output.WriteLine("}"); _output.Indent--; _output.WriteLine("}"); + _output.WriteLine(); } private void GenerateModuleRegistrations() { // primitives: - if (_hasPrimitives) { + if (Builtins) { _output.WriteLine("Context.RegisterPrimitives("); _output.Indent++; @@ -653,8 +660,6 @@ switch (def.Kind) { case ModuleKind.Class: - Debug.Assert(def.Super != null); - if (def.DefVariable != null) { _output.Write("{0} {1} = ", TypeRubyClass, def.DefVariable); } @@ -683,14 +688,22 @@ pass: extensionType, #endif - _output.Write("Define{5}Class(\"{0}\", typeof({1}), {2}, {3}, {4}, ", - def.QualifiedName, - TypeName(def.Extends), - (def.HasInstanceInitializer) ? String.Format("new {0}(Load{1}_Instance)", TypeActionOfRubyModule, def.Id) : "null", - (def.HasClassInitializer) ? String.Format("new {0}(Load{1}_Class)", TypeActionOfRubyModule, def.Id) : "null", - def.Super.RefName, - def.IsGlobal ? "Global" : "" - ); + if (def.IsExtension) { + _output.Write("ExtendClass(typeof({0}), {1}, {2}, ", + TypeName(def.Extends), + (def.HasInstanceInitializer) ? String.Format("new {0}(Load{1}_Instance)", TypeActionOfRubyModule, def.Id) : "null", + (def.HasClassInitializer) ? String.Format("new {0}(Load{1}_Class)", TypeActionOfRubyModule, def.Id) : "null" + ); + } else { + _output.Write("Define{0}Class(\"{1}\", typeof({2}), {3}, {4}, {5}, ", + def.IsGlobal ? "Global" : "", + def.QualifiedName, + TypeName(def.Extends), + def.Super.RefName, + (def.HasInstanceInitializer) ? String.Format("new {0}(Load{1}_Instance)", TypeActionOfRubyModule, def.Id) : "null", + (def.HasClassInitializer) ? String.Format("new {0}(Load{1}_Class)", TypeActionOfRubyModule, def.Id) : "null" + ); + } GenerateInclusions(def); @@ -710,13 +723,21 @@ _output.Write("{0} {1} = ", TypeRubyModule, def.DefVariable); } - _output.Write("Define{4}Module(\"{0}\", typeof({1}), {2}, {3}, ", - def.QualifiedName, - TypeName(def.Extends), - (def.HasInstanceInitializer) ? String.Format("new {0}(Load{1}_Instance)", TypeActionOfRubyModule, def.Id) : "null", - (def.HasClassInitializer) ? String.Format("new {0}(Load{1}_Class)", TypeActionOfRubyModule, def.Id) : "null", - def.IsGlobal ? "Global" : "" - ); + if (def.IsExtension) { + _output.Write("ExtendModule(typeof({0}), {1}, {2}, ", + TypeName(def.Extends), + (def.HasInstanceInitializer) ? String.Format("new {0}(Load{1}_Instance)", TypeActionOfRubyModule, def.Id) : "null", + (def.HasClassInitializer) ? String.Format("new {0}(Load{1}_Class)", TypeActionOfRubyModule, def.Id) : "null" + ); + } else { + _output.Write("Define{0}Module(\"{1}\", typeof({2}), {3}, {4}, ", + def.IsGlobal ? "Global" : "", + def.QualifiedName, + TypeName(def.Extends), + (def.HasInstanceInitializer) ? String.Format("new {0}(Load{1}_Instance)", TypeActionOfRubyModule, def.Id) : "null", + (def.HasClassInitializer) ? String.Format("new {0}(Load{1}_Class)", TypeActionOfRubyModule, def.Id) : "null" + ); + } GenerateInclusions(def); @@ -732,7 +753,7 @@ (def.HasInstanceInitializer) ? String.Format("new {0}(Load{1}_Instance)", TypeActionOfRubyModule, def.Id) : "null", (def.HasClassInitializer) ? String.Format("new {0}(Load{1}_Class)", TypeActionOfRubyModule, def.Id) : "null" ); - + GenerateInclusions(def); _output.WriteLine(");"); @@ -750,7 +771,7 @@ private void GenerateInclusions(ModuleDef/*!*/ def) { List mixinRefs = new List(); AddMixinRefsRecursive(mixinRefs, def); - + if (mixinRefs.Count > 0) { _output.Write("new {0}[] {{", TypeRubyModule); foreach (string mixinRef in mixinRefs) { @@ -813,7 +834,7 @@ private void GenerateConstants(ModuleDef/*!*/ moduleDef) { // add constants on module foreach (KeyValuePair entry in moduleDef.Constants) { - _output.WriteLine("module.SetConstant(\"{0}\", {1}.{2});", entry.Key, + _output.WriteLine("module.SetConstant(\"{0}\", {1}.{2});", entry.Key, TypeName(entry.Value.Field.DeclaringType), entry.Value.Field.Name); } _output.WriteLine(); @@ -845,7 +866,7 @@ } if (def.IsRuleGenerator) { - _output.WriteLine("module.DefineRuleGenerator(\"{0}\", 0x{1:x}, {2}.{3}());", + _output.WriteLine("module.DefineRuleGenerator(\"{0}\", 0x{1:x}, {2}.{3}());", def.Name, (int)def.Attributes, TypeName(def.Overloads[0].DeclaringType), @@ -904,7 +925,7 @@ method.Name ); } - + #endregion #region Helpers @@ -928,28 +949,107 @@ } #endregion +} - static string _namespace; - static string _initializerTypeName; +class Generator { + private Assembly/*!*/ _assembly; + private string _outFile; + // namespace -> library + private readonly Dictionary/*!*/ _libraries = new Dictionary(); - static void Main(string[]/*!*/ args) { + private Generator() { + } - try { - Assembly assembly; - if (args.Length >= 1) { - assembly = Assembly.LoadFrom(args[0]); - _namespace = args[1]; - _initializerTypeName = args[2]; + public static Generator Create(string[]/*!*/ args) { + Generator gen = new Generator(); + + for (int i = 0; i < args.Length; i++) { + KeyValuePair arg = ToNameValue(args[i]); + + switch (arg.Key) { + case "out": + gen._outFile = arg.Value; + break; + + case "libraries": + foreach (string libararyNamespace in arg.Value.Split(';', ',')) { + gen._libraries[libararyNamespace] = new LibraryDef(libararyNamespace); + } + break; + + case "": + try { + gen._assembly = Assembly.LoadFrom(arg.Value); + } catch (Exception e) { + Console.Error.WriteLine(e.Message); + return null; + } + break; + + default: + Console.Error.WriteLine("Unknown option: {0}", arg.Key); + return null; + } + } + + if (gen._outFile == null) { + Console.Error.WriteLine("Output file not specified"); + return null; + } + + return gen; + } + + private static KeyValuePair ToNameValue(string/*!*/ arg) { + if (arg.StartsWith("/") || arg.StartsWith("-")) { + int colon = arg.IndexOf(':'); + if (colon >= 0) { + return new KeyValuePair(arg.Substring(1, colon - 1), arg.Substring(colon + 1)); } else { - assembly = typeof(RubyContext).Assembly; - _namespace = "Ruby.Builtins"; - _initializerTypeName = "BuiltinsInitializer"; + return new KeyValuePair(arg.Substring(1), String.Empty); } + } else { + return new KeyValuePair(String.Empty, arg); + } + } - new Generator(Console.Out).Generate(assembly); - } catch (Exception e) { - Console.Error.WriteLine(e.Message); - Environment.ExitCode = 1; + public void Generate() { + Type[] allTypes = _assembly.GetTypes(); + bool anyErrors = false; + foreach (LibraryDef library in _libraries.Values) { + library.ReflectTypes(allTypes); + anyErrors |= library.AnyErrors; } + + if (anyErrors) { + Console.Error.WriteLine("Failed."); + return; + } + + using (TextWriter writer = new StreamWriter(File.Open(_outFile, FileMode.Create, FileAccess.Write))) { + IndentedTextWriter output = new IndentedTextWriter(writer, " "); + output.NewLine = "\r\n"; + + foreach (LibraryDef library in _libraries.Values) { + output.WriteLine("[assembly: {2}(typeof({0}.{1}))]", library._namespace, library._initializerName, LibraryDef.TypeRubyLibraryAttribute); + } + + output.WriteLine(); + + foreach (LibraryDef library in _libraries.Values) { + Console.WriteLine("Library {0}", library._namespace); + library.GenerateCode(output); + } + } } + + static void Main(string[]/*!*/ args) { + Generator generator = Generator.Create(args); + if (generator == null) { + Environment.ExitCode = -1; + return; + } + + generator.Generate(); + } } =================================================================== add: $/Dev10/feature/vs_langs01/Merlin/Main/Languages/Ruby/Libraries.LCA_RESTRICTED/digest.rb File: digest.rb =================================================================== --- [no source file] +++ Shelved Change: $/Dev10/feature/vs_langs01/Merlin/Main/Languages/Ruby/Libraries.LCA_RESTRICTED/digest.rb;RubyLibsAndYaml @@ -1,0 +1,1 @@ +load_assembly 'IronRuby.Libraries', 'Ruby.StandardLibrary.Digest' \ No newline at end of file =================================================================== edit: $/Dev10/feature/vs_langs01/Merlin/Main/Languages/Ruby/Libraries.LCA_RESTRICTED/GenerateInitializers.cmd;C390406 File: GenerateInitializers.cmd =================================================================== --- $/Dev10/feature/vs_langs01/Merlin/Main/Languages/Ruby/Libraries.LCA_RESTRICTED/GenerateInitializers.cmd;C390406 (server) 5/17/2008 3:55 PM +++ Shelved Change: $/Dev10/feature/vs_langs01/Merlin/Main/Languages/Ruby/Libraries.LCA_RESTRICTED/GenerateInitializers.cmd;RubyLibsAndYaml @@ -1,1 +1,1 @@ -%~dp0\..\..\..\Bin\Debug\ClassInitGenerator %~dp0\..\..\..\Bin\Debug\IronRuby.Libraries.dll Ruby.Libraries LibrariesInitializer > %~dp0\Initializer.Generated.cs +"%MERLIN_ROOT%\Bin\Debug\ClassInitGenerator" "%MERLIN_ROOT%\Bin\Debug\IronRuby.Libraries.dll" /libraries:Ruby.Builtins;Ruby.StandardLibrary.Threading;Ruby.StandardLibrary.Sockets;Ruby.StandardLibrary.OpenSsl;Ruby.StandardLibrary.Digest;Ruby.StandardLibrary.Zlib /out:%~dp0\Initializers.Generated.cs =================================================================== edit: $/Dev10/feature/vs_langs01/Merlin/Main/Languages/Ruby/Libraries.LCA_RESTRICTED/Initializer.Generated.cs;C442093 File: Initializer.Generated.cs =================================================================== --- $/Dev10/feature/vs_langs01/Merlin/Main/Languages/Ruby/Libraries.LCA_RESTRICTED/Initializer.Generated.cs;C442093 (server) 5/17/2008 3:55 PM +++ Shelved Change: $/Dev10/feature/vs_langs01/Merlin/Main/Languages/Ruby/Libraries.LCA_RESTRICTED/Initializer.Generated.cs;RubyLibsAndYaml @@ -1,6 +1,12 @@ -[assembly: Ruby.RubyLibraryAttribute(typeof(Ruby.Libraries.LibrariesInitializer))] -namespace Ruby.Libraries { - public sealed partial class LibrariesInitializer : Ruby.Builtins.LibraryInitializer { +[assembly: Ruby.RubyLibraryAttribute(typeof(Ruby.Builtins.BuiltinsLibraryInitializer))] +[assembly: Ruby.RubyLibraryAttribute(typeof(Ruby.StandardLibrary.Threading.ThreadingLibraryInitializer))] +[assembly: Ruby.RubyLibraryAttribute(typeof(Ruby.StandardLibrary.Sockets.SocketsLibraryInitializer))] +[assembly: Ruby.RubyLibraryAttribute(typeof(Ruby.StandardLibrary.OpenSsl.OpenSslLibraryInitializer))] +[assembly: Ruby.RubyLibraryAttribute(typeof(Ruby.StandardLibrary.Digest.DigestLibraryInitializer))] +[assembly: Ruby.RubyLibraryAttribute(typeof(Ruby.StandardLibrary.Zlib.ZlibLibraryInitializer))] + +namespace Ruby.Builtins { + public sealed class BuiltinsLibraryInitializer : Ruby.Builtins.LibraryInitializer { protected override void LoadModules() { Context.RegisterPrimitives( new System.Action(Load__ClassSingleton_Instance), @@ -15,43 +21,36 @@ new System.Action(LoadModule_Class), new System.Action(LoadClass_Class) ); - Ruby.Builtins.RubyClass classRef0 = GetClass(typeof(Microsoft.Scripting.Actions.MemberTracker)); - Ruby.Builtins.RubyClass classRef1 = GetClass(typeof(System.ValueType)); - Ruby.Builtins.RubyClass classRef2 = GetClass(typeof(System.Reflection.MemberInfo)); + Ruby.Builtins.RubyClass classRef0 = GetClass(typeof(System.ValueType)); // Skipped primitive: __ClassSingleton // Skipped primitive: __MainSingleton - Ruby.Builtins.RubyModule def38 = DefineGlobalModule("Comparable", typeof(Ruby.Builtins.Comparable), new System.Action(LoadComparable_Instance), null, Ruby.Builtins.RubyModule.EmptyArray); - Ruby.Builtins.RubyModule def11 = DefineGlobalModule("Digest", typeof(Ruby.StandardLibrary.Digest), null, new System.Action(LoadDigest_Class), Ruby.Builtins.RubyModule.EmptyArray); - Ruby.Builtins.RubyModule def14 = DefineModule("Digest::Instance", typeof(Ruby.StandardLibrary.Digest.Instance), new System.Action(LoadDigest__Instance_Instance), null, Ruby.Builtins.RubyModule.EmptyArray); - Ruby.Builtins.RubyModule def28 = DefineGlobalModule("Enumerable", typeof(Ruby.Builtins.Enumerable), new System.Action(LoadEnumerable_Instance), null, Ruby.Builtins.RubyModule.EmptyArray); + Ruby.Builtins.RubyModule def20 = DefineGlobalModule("Comparable", typeof(Ruby.Builtins.Comparable), new System.Action(LoadComparable_Instance), null, Ruby.Builtins.RubyModule.EmptyArray); + Ruby.Builtins.RubyModule def12 = DefineGlobalModule("Enumerable", typeof(Ruby.Builtins.Enumerable), new System.Action(LoadEnumerable_Instance), null, Ruby.Builtins.RubyModule.EmptyArray); Ruby.Builtins.RubyModule def3 = DefineGlobalModule("Errno", typeof(Ruby.Builtins.Errno), null, null, Ruby.Builtins.RubyModule.EmptyArray); // Skipped primitive: Kernel DefineGlobalModule("Marshal", typeof(Ruby.Builtins.RubyMarshal), new System.Action(LoadMarshal_Instance), new System.Action(LoadMarshal_Class), Ruby.Builtins.RubyModule.EmptyArray); - DefineGlobalModule("Math", typeof(Ruby.Builtins.Math), new System.Action(LoadMath_Instance), new System.Action(LoadMath_Class), Ruby.Builtins.RubyModule.EmptyArray); - DefineClass("Microsoft::Scripting::Actions::TypeTracker", typeof(Microsoft.Scripting.Actions.TypeTracker), new System.Action(LoadMicrosoft__Scripting__Actions__TypeTracker_Instance), null, classRef0, Ruby.Builtins.RubyModule.EmptyArray, null); - Ruby.Builtins.RubyModule def16 = DefineGlobalModule("OpenSSL", typeof(Ruby.StandardLibrary.OpenSSL), null, null, Ruby.Builtins.RubyModule.EmptyArray); - Ruby.Builtins.RubyModule def17 = DefineModule("OpenSSL::Digest", typeof(Ruby.StandardLibrary.OpenSSL.DigestFactory), null, null, Ruby.Builtins.RubyModule.EmptyArray); - Ruby.Builtins.RubyModule def35 = DefineGlobalModule("Precision", typeof(Ruby.Builtins.Precision), new System.Action(LoadPrecision_Instance), new System.Action(LoadPrecision_Class), Ruby.Builtins.RubyModule.EmptyArray); - DefineClass("System::Type", typeof(System.Type), new System.Action(LoadSystem__Type_Instance), null, classRef2, Ruby.Builtins.RubyModule.EmptyArray, null); - Ruby.Builtins.RubyModule def20 = DefineGlobalModule("Zlib", typeof(Ruby.StandardLibrary.Zlib), new System.Action(LoadZlib_Instance), null, Ruby.Builtins.RubyModule.EmptyArray); + DefineGlobalModule("Math", typeof(Ruby.Builtins.RubyMath), new System.Action(LoadMath_Instance), new System.Action(LoadMath_Class), Ruby.Builtins.RubyModule.EmptyArray); + ExtendClass(typeof(Microsoft.Scripting.Actions.TypeTracker), new System.Action(LoadMicrosoft__Scripting__Actions__TypeTracker_Instance), null, Ruby.Builtins.RubyModule.EmptyArray, null); + Ruby.Builtins.RubyModule def17 = DefineGlobalModule("Precision", typeof(Ruby.Builtins.Precision), new System.Action(LoadPrecision_Instance), new System.Action(LoadPrecision_Class), Ruby.Builtins.RubyModule.EmptyArray); + ExtendClass(typeof(System.Type), new System.Action(LoadSystem__Type_Instance), null, Ruby.Builtins.RubyModule.EmptyArray, null); // Skipped primitive: __ClassSingletonSingleton #if !SILVERLIGHT - object def1 = DefineSingleton(new System.Action(Load__Singleton_ArgFilesSingletonOps_Instance), null, new Ruby.Builtins.RubyModule[] {def28, }); + object def1 = DefineSingleton(new System.Action(Load__Singleton_ArgFilesSingletonOps_Instance), null, new Ruby.Builtins.RubyModule[] {def12, }); #endif #if !SILVERLIGHT - object def2 = DefineSingleton(new System.Action(Load__Singleton_EnvironmentSingletonOps_Instance), null, new Ruby.Builtins.RubyModule[] {def28, }); + object def2 = DefineSingleton(new System.Action(Load__Singleton_EnvironmentSingletonOps_Instance), null, new Ruby.Builtins.RubyModule[] {def12, }); #endif // Skipped primitive: Object - Ruby.Builtins.RubyModule def33 = DefineModule("System::Collections::Generic::IDictionary", typeof(System.Collections.Generic.IDictionary), new System.Action(LoadSystem__Collections__Generic__IDictionary_Instance), null, new Ruby.Builtins.RubyModule[] {def28, }); - Ruby.Builtins.RubyModule def48 = DefineModule("System::Collections::IEnumerable", typeof(System.Collections.IEnumerable), new System.Action(LoadSystem__Collections__IEnumerable_Instance), null, new Ruby.Builtins.RubyModule[] {def28, }); - Ruby.Builtins.RubyModule def40 = DefineModule("System::Collections::IList", typeof(System.Collections.IList), new System.Action(LoadSystem__Collections__IList_Instance), null, new Ruby.Builtins.RubyModule[] {def28, }); - DefineModule("System::IComparable", typeof(System.IComparable), new System.Action(LoadSystem__IComparable_Instance), null, new Ruby.Builtins.RubyModule[] {def38, }); - DefineGlobalClass("Time", typeof(System.DateTime), new System.Action(LoadTime_Instance), new System.Action(LoadTime_Class), classRef1, new Ruby.Builtins.RubyModule[] {def38, }, new System.Delegate[] { + ExtendModule(typeof(System.Collections.Generic.IDictionary), new System.Action(LoadSystem__Collections__Generic__IDictionary_Instance), null, new Ruby.Builtins.RubyModule[] {def12, }); + Ruby.Builtins.RubyModule def24 = ExtendModule(typeof(System.Collections.IEnumerable), new System.Action(LoadSystem__Collections__IEnumerable_Instance), null, new Ruby.Builtins.RubyModule[] {def12, }); + ExtendModule(typeof(System.Collections.IList), new System.Action(LoadSystem__Collections__IList_Instance), null, new Ruby.Builtins.RubyModule[] {def12, }); + ExtendModule(typeof(System.IComparable), new System.Action(LoadSystem__IComparable_Instance), null, new Ruby.Builtins.RubyModule[] {def20, }); + DefineGlobalClass("Time", typeof(System.DateTime), classRef0, new System.Action(LoadTime_Instance), new System.Action(LoadTime_Class), new Ruby.Builtins.RubyModule[] {def20, }, new System.Delegate[] { new Microsoft.Scripting.Utils.Function(Ruby.Builtins.TimeOps.Create), }); - DefineGlobalClass("Array", typeof(Ruby.Builtins.RubyArray), new System.Action(LoadArray_Instance), new System.Action(LoadArray_Class), Context.ObjectClass, new Ruby.Builtins.RubyModule[] {def28, }, new System.Delegate[] { + DefineGlobalClass("Array", typeof(Ruby.Builtins.RubyArray), Context.ObjectClass, new System.Action(LoadArray_Instance), new System.Action(LoadArray_Class), new Ruby.Builtins.RubyModule[] {def12, }, new System.Delegate[] { new Microsoft.Scripting.Utils.Function(Ruby.Builtins.ArrayOps.CreateArray), new Microsoft.Scripting.Utils.Function(Ruby.Builtins.ArrayOps.CreateArray), new Microsoft.Scripting.Utils.Function(Ruby.Builtins.ArrayOps.CreateArray), @@ -60,41 +59,35 @@ new Microsoft.Scripting.Utils.Function(Ruby.Builtins.ArrayOps.CreateArray), new Microsoft.Scripting.Utils.Function(Ruby.Builtins.ArrayOps.CreateArray), }); - DefineGlobalClass("Binding", typeof(Ruby.Builtins.Binding), null, null, Context.ObjectClass, Ruby.Builtins.RubyModule.EmptyArray, null); - DefineGlobalClass("ClrString", typeof(System.String), new System.Action(LoadClrString_Instance), null, Context.ObjectClass, new Ruby.Builtins.RubyModule[] {def48, }, null); - DefineGlobalClass("ConditionVariable", typeof(Ruby.StandardLibrary.RubyConditionVariable), new System.Action(LoadConditionVariable_Instance), null, Context.ObjectClass, Ruby.Builtins.RubyModule.EmptyArray, null); - Ruby.Builtins.RubyClass def13 = DefineClass("Digest::Class", typeof(Ruby.StandardLibrary.Digest.Class), null, new System.Action(LoadDigest__Class_Class), Context.ObjectClass, new Ruby.Builtins.RubyModule[] {def14, }, null); - DefineGlobalClass("Dir", typeof(Ruby.Builtins.RubyDir), new System.Action(LoadDir_Instance), new System.Action(LoadDir_Class), Context.ObjectClass, new Ruby.Builtins.RubyModule[] {def28, }, null); - Ruby.Builtins.RubyClass def39 = Context.ExceptionClass = DefineGlobalClass("Exception", typeof(System.Exception), new System.Action(LoadException_Instance), new System.Action(LoadException_Class), Context.ObjectClass, Ruby.Builtins.RubyModule.EmptyArray, new System.Delegate[] { + DefineGlobalClass("Binding", typeof(Ruby.Builtins.Binding), Context.ObjectClass, null, null, Ruby.Builtins.RubyModule.EmptyArray, null); + DefineGlobalClass("ClrString", typeof(System.String), Context.ObjectClass, new System.Action(LoadClrString_Instance), null, new Ruby.Builtins.RubyModule[] {def24, }, null); + DefineGlobalClass("Dir", typeof(Ruby.Builtins.RubyDir), Context.ObjectClass, new System.Action(LoadDir_Instance), new System.Action(LoadDir_Class), new Ruby.Builtins.RubyModule[] {def12, }, null); + Ruby.Builtins.RubyClass def21 = Context.ExceptionClass = DefineGlobalClass("Exception", typeof(System.Exception), Context.ObjectClass, new System.Action(LoadException_Instance), new System.Action(LoadException_Class), Ruby.Builtins.RubyModule.EmptyArray, new System.Delegate[] { new Microsoft.Scripting.Utils.Function(Ruby.Builtins.ExceptionOps.Factory), }); - Context.FalseClass = DefineGlobalClass("FalseClass", typeof(Ruby.Builtins.FalseClass), new System.Action(LoadFalseClass_Instance), null, Context.ObjectClass, Ruby.Builtins.RubyModule.EmptyArray, null); - DefineGlobalClass("Hash", typeof(Ruby.Builtins.Hash), new System.Action(LoadHash_Instance), new System.Action(LoadHash_Class), Context.ObjectClass, new Ruby.Builtins.RubyModule[] {def28, }, new System.Delegate[] { + Context.FalseClass = DefineGlobalClass("FalseClass", typeof(Ruby.Builtins.FalseClass), Context.ObjectClass, new System.Action(LoadFalseClass_Instance), null, Ruby.Builtins.RubyModule.EmptyArray, null); + DefineGlobalClass("Hash", typeof(Ruby.Builtins.Hash), Context.ObjectClass, new System.Action(LoadHash_Instance), new System.Action(LoadHash_Class), new Ruby.Builtins.RubyModule[] {def12, }, new System.Delegate[] { new Microsoft.Scripting.Utils.Function(Ruby.Builtins.HashOps.Hash), new Microsoft.Scripting.Utils.Function(Ruby.Builtins.HashOps.Hash), }); - Ruby.Builtins.RubyClass def41 = DefineGlobalClass("IO", typeof(Ruby.Builtins.RubyIO), new System.Action(LoadIO_Instance), new System.Action(LoadIO_Class), Context.ObjectClass, Ruby.Builtins.RubyModule.EmptyArray, new System.Delegate[] { + Ruby.Builtins.RubyClass def22 = DefineGlobalClass("IO", typeof(Ruby.Builtins.RubyIO), Context.ObjectClass, new System.Action(LoadIO_Instance), new System.Action(LoadIO_Class), Ruby.Builtins.RubyModule.EmptyArray, new System.Delegate[] { new Microsoft.Scripting.Utils.Function(Ruby.Builtins.RubyIOOps.CreateIO), new Microsoft.Scripting.Utils.Function(Ruby.Builtins.RubyIOOps.CreateIO), new Microsoft.Scripting.Utils.Function(Ruby.Builtins.RubyIOOps.CreateIO), }); - DefineGlobalClass("MatchData", typeof(Ruby.Builtins.MatchData), new System.Action(LoadMatchData_Instance), null, Context.ObjectClass, Ruby.Builtins.RubyModule.EmptyArray, null); - DefineGlobalClass("Method", typeof(Ruby.Builtins.RubyMethod), new System.Action(LoadMethod_Instance), null, Context.ObjectClass, Ruby.Builtins.RubyModule.EmptyArray, null); + DefineGlobalClass("MatchData", typeof(Ruby.Builtins.MatchData), Context.ObjectClass, new System.Action(LoadMatchData_Instance), null, Ruby.Builtins.RubyModule.EmptyArray, null); + DefineGlobalClass("Method", typeof(Ruby.Builtins.RubyMethod), Context.ObjectClass, new System.Action(LoadMethod_Instance), null, Ruby.Builtins.RubyModule.EmptyArray, null); // Skipped primitive: Module - DefineGlobalClass("Mutex", typeof(Ruby.StandardLibrary.RubyMutex), new System.Action(LoadMutex_Instance), null, Context.ObjectClass, Ruby.Builtins.RubyModule.EmptyArray, null); - Context.NilClass = DefineGlobalClass("NilClass", typeof(Microsoft.Scripting.None), new System.Action(LoadNilClass_Instance), null, Context.ObjectClass, Ruby.Builtins.RubyModule.EmptyArray, null); - Ruby.Builtins.RubyClass def34 = DefineGlobalClass("Numeric", typeof(Ruby.Builtins.Numeric), new System.Action(LoadNumeric_Instance), null, Context.ObjectClass, new Ruby.Builtins.RubyModule[] {def38, }, null); - Ruby.Builtins.RubyClass def18 = DefineClass("OpenSSL::Digest::Digest", typeof(Ruby.StandardLibrary.OpenSSL.DigestFactory.Digest), new System.Action(LoadOpenSSL__Digest__Digest_Instance), null, Context.ObjectClass, Ruby.Builtins.RubyModule.EmptyArray, null); - Ruby.Builtins.RubyClass def19 = DefineClass("OpenSSL::HMAC", typeof(Ruby.StandardLibrary.OpenSSL.HMAC), null, new System.Action(LoadOpenSSL__HMAC_Class), Context.ObjectClass, Ruby.Builtins.RubyModule.EmptyArray, null); - DefineGlobalClass("Proc", typeof(Ruby.Builtins.Proc), new System.Action(LoadProc_Instance), null, Context.ObjectClass, Ruby.Builtins.RubyModule.EmptyArray, new System.Delegate[] { + Context.NilClass = DefineGlobalClass("NilClass", typeof(Microsoft.Scripting.None), Context.ObjectClass, new System.Action(LoadNilClass_Instance), null, Ruby.Builtins.RubyModule.EmptyArray, null); + Ruby.Builtins.RubyClass def16 = DefineGlobalClass("Numeric", typeof(Ruby.Builtins.Numeric), Context.ObjectClass, new System.Action(LoadNumeric_Instance), null, new Ruby.Builtins.RubyModule[] {def20, }, null); + DefineGlobalClass("Proc", typeof(Ruby.Builtins.Proc), Context.ObjectClass, new System.Action(LoadProc_Instance), null, Ruby.Builtins.RubyModule.EmptyArray, new System.Delegate[] { new Microsoft.Scripting.Utils.Function(Ruby.Builtins.ProcOps.CreateProc), new Microsoft.Scripting.Utils.Function(Ruby.Builtins.ProcOps.CreateProc), }); - Ruby.Builtins.RubyClass def43 = DefineGlobalClass("Queue", typeof(Ruby.StandardLibrary.RubyQueue), new System.Action(LoadQueue_Instance), null, Context.ObjectClass, Ruby.Builtins.RubyModule.EmptyArray, null); - DefineGlobalClass("Range", typeof(Ruby.Builtins.Range), new System.Action(LoadRange_Instance), null, Context.ObjectClass, new Ruby.Builtins.RubyModule[] {def28, }, new System.Delegate[] { + DefineGlobalClass("Range", typeof(Ruby.Builtins.Range), Context.ObjectClass, new System.Action(LoadRange_Instance), null, new Ruby.Builtins.RubyModule[] {def12, }, new System.Delegate[] { new Microsoft.Scripting.Utils.Function(Ruby.Builtins.RangeOps.CreateRange), }); - DefineGlobalClass("Regexp", typeof(Ruby.Builtins.RubyRegex), new System.Action(LoadRegexp_Instance), new System.Action(LoadRegexp_Class), Context.ObjectClass, new Ruby.Builtins.RubyModule[] {def28, }, new System.Delegate[] { + DefineGlobalClass("Regexp", typeof(Ruby.Builtins.RubyRegex), Context.ObjectClass, new System.Action(LoadRegexp_Instance), new System.Action(LoadRegexp_Class), new Ruby.Builtins.RubyModule[] {def12, }, new System.Delegate[] { new Microsoft.Scripting.Utils.Function(Ruby.Builtins.RegexpOps.Create), new Microsoft.Scripting.Utils.Function(Ruby.Builtins.RegexpOps.Create), new Microsoft.Scripting.Utils.Function(Ruby.Builtins.RegexpOps.Create), @@ -103,165 +96,106 @@ new Microsoft.Scripting.Utils.Function(Ruby.Builtins.RegexpOps.Create), new Microsoft.Scripting.Utils.Function(Ruby.Builtins.RegexpOps.Create), }); - DefineGlobalClass("String", typeof(Ruby.Builtins.MutableString), new System.Action(LoadString_Instance), null, Context.ObjectClass, new Ruby.Builtins.RubyModule[] {def28, def38, }, new System.Delegate[] { + DefineGlobalClass("String", typeof(Ruby.Builtins.MutableString), Context.ObjectClass, new System.Action(LoadString_Instance), null, new Ruby.Builtins.RubyModule[] {def12, def20, }, new System.Delegate[] { new Microsoft.Scripting.Utils.Function(Ruby.Builtins.MutableStringOps.Create), new Microsoft.Scripting.Utils.Function(Ruby.Builtins.MutableStringOps.Create), new Microsoft.Scripting.Utils.Function(Ruby.Builtins.MutableStringOps.Create), }); - DefineGlobalClass("StringScanner", typeof(Ruby.Builtins.StringScanner), new System.Action(LoadStringScanner_Instance), new System.Action(LoadStringScanner_Class), Context.ObjectClass, Ruby.Builtins.RubyModule.EmptyArray, null); - DefineGlobalClass("Struct", typeof(Ruby.Builtins.RubyStruct), new System.Action(LoadStruct_Instance), null, Context.ObjectClass, new Ruby.Builtins.RubyModule[] {def28, }, new System.Delegate[] { + DefineGlobalClass("StringScanner", typeof(Ruby.Builtins.StringScanner), Context.ObjectClass, new System.Action(LoadStringScanner_Instance), new System.Action(LoadStringScanner_Class), Ruby.Builtins.RubyModule.EmptyArray, null); + DefineGlobalClass("Struct", typeof(Ruby.Builtins.RubyStruct), Context.ObjectClass, new System.Action(LoadStruct_Instance), null, new Ruby.Builtins.RubyModule[] {def12, }, new System.Delegate[] { new Microsoft.Scripting.Utils.Function(Ruby.Builtins.RubyStructOps.CreateNamed), }); - DefineGlobalClass("Symbol", typeof(Microsoft.Scripting.SymbolId), new System.Action(LoadSymbol_Instance), new System.Action(LoadSymbol_Class), Context.ObjectClass, Ruby.Builtins.RubyModule.EmptyArray, null); - DefineGlobalClass("Thread", typeof(System.Threading.Thread), new System.Action(LoadThread_Instance), new System.Action(LoadThread_Class), Context.ObjectClass, Ruby.Builtins.RubyModule.EmptyArray, null); - Context.TrueClass = DefineGlobalClass("TrueClass", typeof(Ruby.Builtins.TrueClass), new System.Action(LoadTrueClass_Instance), null, Context.ObjectClass, Ruby.Builtins.RubyModule.EmptyArray, null); - DefineGlobalClass("UnboundMethod", typeof(Ruby.Builtins.UnboundMethod), new System.Action(LoadUnboundMethod_Instance), null, Context.ObjectClass, Ruby.Builtins.RubyModule.EmptyArray, null); - Ruby.Builtins.RubyClass def22 = DefineClass("Zlib::GzipFile", typeof(Ruby.StandardLibrary.Zlib.GZipFile), null, null, Context.ObjectClass, Ruby.Builtins.RubyModule.EmptyArray, null); - Ruby.Builtins.RubyClass def26 = DefineClass("Zlib::ZStream", typeof(Ruby.StandardLibrary.Zlib.ZStream), new System.Action(LoadZlib__ZStream_Instance), null, Context.ObjectClass, Ruby.Builtins.RubyModule.EmptyArray, null); - #if !SILVERLIGHT - Ruby.Builtins.RubyClass def42 = DefineGlobalClass("BasicSocket", typeof(Ruby.StandardLibrary.RubyBasicSocket), new System.Action(LoadBasicSocket_Instance), new System.Action(LoadBasicSocket_Class), def41, Ruby.Builtins.RubyModule.EmptyArray, null); - #endif + DefineGlobalClass("Symbol", typeof(Microsoft.Scripting.SymbolId), Context.ObjectClass, new System.Action(LoadSymbol_Instance), new System.Action(LoadSymbol_Class), Ruby.Builtins.RubyModule.EmptyArray, null); + DefineGlobalClass("Thread", typeof(System.Threading.Thread), Context.ObjectClass, new System.Action(LoadThread_Instance), new System.Action(LoadThread_Class), Ruby.Builtins.RubyModule.EmptyArray, null); + Context.TrueClass = DefineGlobalClass("TrueClass", typeof(Ruby.Builtins.TrueClass), Context.ObjectClass, new System.Action(LoadTrueClass_Instance), null, Ruby.Builtins.RubyModule.EmptyArray, null); + DefineGlobalClass("UnboundMethod", typeof(Ruby.Builtins.UnboundMethod), Context.ObjectClass, new System.Action(LoadUnboundMethod_Instance), null, Ruby.Builtins.RubyModule.EmptyArray, null); // Skipped primitive: Class - Ruby.Builtins.RubyClass def12 = DefineClass("Digest::Base", typeof(Ruby.StandardLibrary.Digest.Base), new System.Action(LoadDigest__Base_Instance), null, def13, Ruby.Builtins.RubyModule.EmptyArray, null); - DefineGlobalClass("File", typeof(Ruby.Builtins.RubyFile), new System.Action(LoadFile_Instance), new System.Action(LoadFile_Class), def41, Ruby.Builtins.RubyModule.EmptyArray, new System.Delegate[] { + DefineGlobalClass("File", typeof(Ruby.Builtins.RubyFile), def22, new System.Action(LoadFile_Instance), new System.Action(LoadFile_Class), Ruby.Builtins.RubyModule.EmptyArray, new System.Delegate[] { new Microsoft.Scripting.Utils.Function(Ruby.Builtins.RubyFileOps.CreateIO), new Microsoft.Scripting.Utils.Function(Ruby.Builtins.RubyFileOps.CreateIO), }); - DefineGlobalClass("Float", typeof(System.Double), new System.Action(LoadFloat_Instance), new System.Action(LoadFloat_Class), def34, new Ruby.Builtins.RubyModule[] {def35, }, null); - Ruby.Builtins.RubyClass def27 = DefineGlobalClass("Integer", typeof(Ruby.Builtins.Integer), new System.Action(LoadInteger_Instance), new System.Action(LoadInteger_Class), def34, new Ruby.Builtins.RubyModule[] {def35, }, null); - DefineGlobalClass("NoMemoryError", typeof(Ruby.Builtins.NoMemoryError), null, null, def39, Ruby.Builtins.RubyModule.EmptyArray, null); - Ruby.Builtins.RubyClass def36 = DefineGlobalClass("ScriptError", typeof(Ruby.Builtins.ScriptError), null, null, def39, Ruby.Builtins.RubyModule.EmptyArray, new System.Delegate[] { + DefineGlobalClass("Float", typeof(System.Double), def16, new System.Action(LoadFloat_Instance), new System.Action(LoadFloat_Class), new Ruby.Builtins.RubyModule[] {def17, }, null); + Ruby.Builtins.RubyClass def11 = DefineGlobalClass("Integer", typeof(Ruby.Builtins.Integer), def16, new System.Action(LoadInteger_Instance), new System.Action(LoadInteger_Class), new Ruby.Builtins.RubyModule[] {def17, }, null); + DefineGlobalClass("NoMemoryError", typeof(Ruby.Builtins.NoMemoryError), def21, null, null, Ruby.Builtins.RubyModule.EmptyArray, null); + Ruby.Builtins.RubyClass def18 = DefineGlobalClass("ScriptError", typeof(Ruby.Builtins.ScriptError), def21, null, null, Ruby.Builtins.RubyModule.EmptyArray, new System.Delegate[] { new Microsoft.Scripting.Utils.Function(Ruby.Builtins.ScriptErrorOps.Factory), }); - DefineGlobalClass("SizedQueue", typeof(Ruby.StandardLibrary.SizedQueue), new System.Action(LoadSizedQueue_Instance), null, def43, Ruby.Builtins.RubyModule.EmptyArray, null); - Ruby.Builtins.RubyClass def37 = Context.StandardErrorClass = DefineGlobalClass("StandardError", typeof(System.SystemException), null, null, def39, Ruby.Builtins.RubyModule.EmptyArray, new System.Delegate[] { + Ruby.Builtins.RubyClass def19 = Context.StandardErrorClass = DefineGlobalClass("StandardError", typeof(System.SystemException), def21, null, null, Ruby.Builtins.RubyModule.EmptyArray, new System.Delegate[] { new Microsoft.Scripting.Utils.Function(Ruby.Builtins.SystemExceptionOps.Factory), }); - DefineGlobalClass("StringIO", typeof(Ruby.Builtins.StringIO), new System.Action(LoadStringIO_Instance), new System.Action(LoadStringIO_Class), def41, Ruby.Builtins.RubyModule.EmptyArray, new System.Delegate[] { + DefineGlobalClass("StringIO", typeof(Ruby.Builtins.StringIO), def22, new System.Action(LoadStringIO_Instance), new System.Action(LoadStringIO_Class), Ruby.Builtins.RubyModule.EmptyArray, new System.Delegate[] { new Microsoft.Scripting.Utils.Function(Ruby.Builtins.StringIO.CreateIO), }); - DefineGlobalClass("SystemExit", typeof(Ruby.Builtins.SystemExit), new System.Action(LoadSystemExit_Instance), null, def39, Ruby.Builtins.RubyModule.EmptyArray, new System.Delegate[] { + DefineGlobalClass("SystemExit", typeof(Ruby.Builtins.SystemExit), def21, new System.Action(LoadSystemExit_Instance), null, Ruby.Builtins.RubyModule.EmptyArray, new System.Delegate[] { new Microsoft.Scripting.Utils.Function(Ruby.Builtins.SystemExitOps.Factory), }); - DefineGlobalClass("SystemStackError", typeof(Ruby.Builtins.SystemStackError), null, null, def39, Ruby.Builtins.RubyModule.EmptyArray, new System.Delegate[] { + DefineGlobalClass("SystemStackError", typeof(Ruby.Builtins.SystemStackError), def21, null, null, Ruby.Builtins.RubyModule.EmptyArray, new System.Delegate[] { new Microsoft.Scripting.Utils.Function(Ruby.Builtins.SystemStackErrorOps.Factory), }); - Ruby.Builtins.RubyClass def24 = DefineClass("Zlib::GzipReader", typeof(Ruby.StandardLibrary.Zlib.GZipReader), new System.Action(LoadZlib__GzipReader_Instance), new System.Action(LoadZlib__GzipReader_Class), def22, Ruby.Builtins.RubyModule.EmptyArray, new System.Delegate[] { - new Microsoft.Scripting.Utils.Function(Ruby.StandardLibrary.Zlib.GZipReader.Initialize), - }); - Ruby.Builtins.RubyClass def25 = DefineClass("Zlib::Inflate", typeof(Ruby.StandardLibrary.Zlib.Inflate), new System.Action(LoadZlib__Inflate_Instance), new System.Action(LoadZlib__Inflate_Class), def26, Ruby.Builtins.RubyModule.EmptyArray, new System.Delegate[] { - new Microsoft.Scripting.Utils.Function(Ruby.StandardLibrary.Zlib.Inflate.Initialize), - new Microsoft.Scripting.Utils.Function(Ruby.StandardLibrary.Zlib.Inflate.Initialize), - }); - DefineGlobalClass("ArgumentError", typeof(System.ArgumentException), new System.Action(LoadArgumentError_Instance), null, def37, Ruby.Builtins.RubyModule.EmptyArray, new System.Delegate[] { + DefineGlobalClass("ArgumentError", typeof(System.ArgumentException), def19, new System.Action(LoadArgumentError_Instance), null, Ruby.Builtins.RubyModule.EmptyArray, new System.Delegate[] { new Microsoft.Scripting.Utils.Function(Ruby.Builtins.ArgumentErrorOps.Factory), }); - DefineGlobalClass("Bignum", typeof(Microsoft.Scripting.Math.BigInteger), new System.Action(LoadBignum_Instance), null, def27, Ruby.Builtins.RubyModule.EmptyArray, null); - #if !SILVERLIGHT - Ruby.Builtins.RubyClass def15 = DefineClass("Digest::MD5", typeof(Ruby.StandardLibrary.Digest.MD5), null, null, def12, Ruby.Builtins.RubyModule.EmptyArray, null); - #endif - DefineGlobalClass("Fixnum", typeof(System.Int32), new System.Action(LoadFixnum_Instance), new System.Action(LoadFixnum_Class), def27, Ruby.Builtins.RubyModule.EmptyArray, null); - DefineGlobalClass("IndexError", typeof(System.IndexOutOfRangeException), null, null, def37, Ruby.Builtins.RubyModule.EmptyArray, new System.Delegate[] { + DefineGlobalClass("Bignum", typeof(Microsoft.Scripting.Math.BigInteger), def11, new System.Action(LoadBignum_Instance), null, Ruby.Builtins.RubyModule.EmptyArray, null); + DefineGlobalClass("Fixnum", typeof(System.Int32), def11, new System.Action(LoadFixnum_Instance), new System.Action(LoadFixnum_Class), Ruby.Builtins.RubyModule.EmptyArray, null); + DefineGlobalClass("IndexError", typeof(System.IndexOutOfRangeException), def19, null, null, Ruby.Builtins.RubyModule.EmptyArray, new System.Delegate[] { new Microsoft.Scripting.Utils.Function(Ruby.Builtins.IndexErrorOps.Factory), }); - Ruby.Builtins.RubyClass def30 = DefineGlobalClass("IOError", typeof(System.IO.IOException), null, null, def37, Ruby.Builtins.RubyModule.EmptyArray, new System.Delegate[] { + Ruby.Builtins.RubyClass def13 = DefineGlobalClass("IOError", typeof(System.IO.IOException), def19, null, null, Ruby.Builtins.RubyModule.EmptyArray, new System.Delegate[] { new Microsoft.Scripting.Utils.Function(Ruby.Builtins.IOErrorOps.Factory), }); - #if !SILVERLIGHT - Ruby.Builtins.RubyClass def45 = DefineGlobalClass("IPSocket", typeof(Ruby.StandardLibrary.IPSocket), new System.Action(LoadIPSocket_Instance), new System.Action(LoadIPSocket_Class), def42, Ruby.Builtins.RubyModule.EmptyArray, null); - #endif - DefineGlobalClass("LoadError", typeof(Ruby.Builtins.LoadError), null, null, def36, Ruby.Builtins.RubyModule.EmptyArray, new System.Delegate[] { + DefineGlobalClass("LoadError", typeof(Ruby.Builtins.LoadError), def18, null, null, Ruby.Builtins.RubyModule.EmptyArray, new System.Delegate[] { new Microsoft.Scripting.Utils.Function(Ruby.Builtins.LoadErrorOps.Factory), }); - DefineGlobalClass("LocalJumpError", typeof(Ruby.Builtins.LocalJumpError), null, null, def37, Ruby.Builtins.RubyModule.EmptyArray, new System.Delegate[] { + DefineGlobalClass("LocalJumpError", typeof(Ruby.Builtins.LocalJumpError), def19, null, null, Ruby.Builtins.RubyModule.EmptyArray, new System.Delegate[] { new Microsoft.Scripting.Utils.Function(Ruby.Builtins.LocalJumpErrorOps.Factory), }); - Ruby.Builtins.RubyClass def47 = DefineGlobalClass("NameError", typeof(System.MemberAccessException), null, null, def37, Ruby.Builtins.RubyModule.EmptyArray, new System.Delegate[] { + Ruby.Builtins.RubyClass def23 = DefineGlobalClass("NameError", typeof(System.MemberAccessException), def19, null, null, Ruby.Builtins.RubyModule.EmptyArray, new System.Delegate[] { new Microsoft.Scripting.Utils.Function(Ruby.Builtins.NameErrorOps.Factory), }); - DefineGlobalClass("NotImplementedError", typeof(Ruby.Builtins.NotImplementedError), null, null, def36, Ruby.Builtins.RubyModule.EmptyArray, new System.Delegate[] { + DefineGlobalClass("NotImplementedError", typeof(Ruby.Builtins.NotImplementedError), def18, null, null, Ruby.Builtins.RubyModule.EmptyArray, new System.Delegate[] { new Microsoft.Scripting.Utils.Function(Ruby.Builtins.NotImplementedErrorOps.Factory), }); - Ruby.Builtins.RubyClass def32 = DefineGlobalClass("RangeError", typeof(System.ArgumentOutOfRangeException), new System.Action(LoadRangeError_Instance), null, def37, Ruby.Builtins.RubyModule.EmptyArray, new System.Delegate[] { + Ruby.Builtins.RubyClass def15 = DefineGlobalClass("RangeError", typeof(System.ArgumentOutOfRangeException), def19, new System.Action(LoadRangeError_Instance), null, Ruby.Builtins.RubyModule.EmptyArray, new System.Delegate[] { new Microsoft.Scripting.Utils.Function(Ruby.Builtins.RangeErrorOps.Factory), }); - DefineGlobalClass("RegexpError", typeof(Ruby.Builtins.RegexpError), null, null, def37, Ruby.Builtins.RubyModule.EmptyArray, new System.Delegate[] { + DefineGlobalClass("RegexpError", typeof(Ruby.Builtins.RegexpError), def19, null, null, Ruby.Builtins.RubyModule.EmptyArray, new System.Delegate[] { new Microsoft.Scripting.Utils.Function(Ruby.Builtins.RegexpErrorOps.Factory), }); - Ruby.Builtins.RubyClass def46 = DefineGlobalClass("RuntimeError", typeof(Ruby.Builtins.RuntimeError), null, null, def37, Ruby.Builtins.RubyModule.EmptyArray, null); - DefineGlobalClass("SecurityError", typeof(System.Security.SecurityException), null, null, def37, Ruby.Builtins.RubyModule.EmptyArray, new System.Delegate[] { + DefineGlobalClass("RuntimeError", typeof(Ruby.Builtins.RuntimeError), def19, null, null, Ruby.Builtins.RubyModule.EmptyArray, null); + DefineGlobalClass("SecurityError", typeof(System.Security.SecurityException), def19, null, null, Ruby.Builtins.RubyModule.EmptyArray, new System.Delegate[] { new Microsoft.Scripting.Utils.Function(Ruby.Builtins.SecurityErrorOps.Factory), }); - #if !SILVERLIGHT - DefineGlobalClass("Socket", typeof(Ruby.StandardLibrary.RubySocket), new System.Action(LoadSocket_Instance), new System.Action(LoadSocket_Class), def42, Ruby.Builtins.RubyModule.EmptyArray, null); - #endif - #if !SILVERLIGHT - DefineGlobalClass("SocketError", typeof(System.Net.Sockets.SocketException), new System.Action(LoadSocketError_Instance), null, def37, Ruby.Builtins.RubyModule.EmptyArray, new System.Delegate[] { - new Microsoft.Scripting.Utils.Function(Ruby.StandardLibrary.SocketErrorOps.Factory), - }); - #endif - DefineGlobalClass("SyntaxError", typeof(Ruby.Builtins.SyntaxError), null, null, def36, Ruby.Builtins.RubyModule.EmptyArray, new System.Delegate[] { + DefineGlobalClass("SyntaxError", typeof(Ruby.Builtins.SyntaxError), def18, null, null, Ruby.Builtins.RubyModule.EmptyArray, new System.Delegate[] { new Microsoft.Scripting.Utils.Function(Ruby.Builtins.SyntaxErrorOps.Factory), }); - Ruby.Builtins.RubyClass def31 = DefineGlobalClass("SystemCallError", typeof(System.Runtime.InteropServices.ExternalException), null, null, def37, Ruby.Builtins.RubyModule.EmptyArray, new System.Delegate[] { + Ruby.Builtins.RubyClass def14 = DefineGlobalClass("SystemCallError", typeof(System.Runtime.InteropServices.ExternalException), def19, null, null, Ruby.Builtins.RubyModule.EmptyArray, new System.Delegate[] { new Microsoft.Scripting.Utils.Function(Ruby.Builtins.SystemCallErrorOps.Factory), }); - DefineGlobalClass("ThreadError", typeof(Ruby.Builtins.ThreadError), null, null, def37, Ruby.Builtins.RubyModule.EmptyArray, null); - DefineGlobalClass("TypeError", typeof(System.InvalidOperationException), null, null, def37, Ruby.Builtins.RubyModule.EmptyArray, new System.Delegate[] { + DefineGlobalClass("ThreadError", typeof(Ruby.Builtins.ThreadError), def19, null, null, Ruby.Builtins.RubyModule.EmptyArray, null); + DefineGlobalClass("TypeError", typeof(System.InvalidOperationException), def19, null, null, Ruby.Builtins.RubyModule.EmptyArray, new System.Delegate[] { new Microsoft.Scripting.Utils.Function(Ruby.Builtins.TypeErrorOps.Factory), }); - DefineGlobalClass("ZeroDivisionError", typeof(System.DivideByZeroException), null, null, def37, Ruby.Builtins.RubyModule.EmptyArray, new System.Delegate[] { + DefineGlobalClass("ZeroDivisionError", typeof(System.DivideByZeroException), def19, null, null, Ruby.Builtins.RubyModule.EmptyArray, new System.Delegate[] { new Microsoft.Scripting.Utils.Function(Ruby.Builtins.ZeroDivisionErrorOps.Factory), }); - DefineGlobalClass("EOFError", typeof(Ruby.Builtins.EOFError), null, null, def30, Ruby.Builtins.RubyModule.EmptyArray, null); - Ruby.Builtins.RubyClass def4 = DefineClass("Errno::EACCES", typeof(Ruby.Builtins.Errno.AccessError), null, null, def31, Ruby.Builtins.RubyModule.EmptyArray, null); - Ruby.Builtins.RubyClass def5 = DefineClass("Errno::EBADF", typeof(Ruby.Builtins.Errno.BadFileDescriptorError), null, null, def31, Ruby.Builtins.RubyModule.EmptyArray, null); - Ruby.Builtins.RubyClass def6 = DefineClass("Errno::EDOM", typeof(Ruby.Builtins.Errno.DomainError), null, null, def31, Ruby.Builtins.RubyModule.EmptyArray, null); - Ruby.Builtins.RubyClass def7 = DefineClass("Errno::EEXIST", typeof(Ruby.Builtins.Errno.ExistError), null, null, def31, Ruby.Builtins.RubyModule.EmptyArray, null); - Ruby.Builtins.RubyClass def8 = DefineClass("Errno::EINVAL", typeof(Ruby.Builtins.Errno.InvalidError), null, null, def31, Ruby.Builtins.RubyModule.EmptyArray, null); - Ruby.Builtins.RubyClass def9 = DefineClass("Errno::ENOENT", typeof(Ruby.Builtins.Errno.NoEntryError), null, null, def31, Ruby.Builtins.RubyModule.EmptyArray, null); - Ruby.Builtins.RubyClass def10 = DefineClass("Errno::ENOTDIR", typeof(Ruby.Builtins.Errno.NotDirectoryError), null, null, def31, Ruby.Builtins.RubyModule.EmptyArray, null); - DefineGlobalClass("FloatDomainError", typeof(Ruby.Builtins.FloatDomainError), null, null, def32, Ruby.Builtins.RubyModule.EmptyArray, null); - DefineGlobalClass("NoMethodError", typeof(System.MissingMethodException), new System.Action(LoadNoMethodError_Instance), null, def47, Ruby.Builtins.RubyModule.EmptyArray, new System.Delegate[] { + DefineGlobalClass("EOFError", typeof(Ruby.Builtins.EOFError), def13, null, null, Ruby.Builtins.RubyModule.EmptyArray, null); + Ruby.Builtins.RubyClass def4 = DefineClass("Errno::EACCES", typeof(Ruby.Builtins.Errno.AccessError), def14, null, null, Ruby.Builtins.RubyModule.EmptyArray, null); + Ruby.Builtins.RubyClass def5 = DefineClass("Errno::EBADF", typeof(Ruby.Builtins.Errno.BadFileDescriptorError), def14, null, null, Ruby.Builtins.RubyModule.EmptyArray, null); + Ruby.Builtins.RubyClass def6 = DefineClass("Errno::EDOM", typeof(Ruby.Builtins.Errno.DomainError), def14, null, null, Ruby.Builtins.RubyModule.EmptyArray, null); + Ruby.Builtins.RubyClass def7 = DefineClass("Errno::EEXIST", typeof(Ruby.Builtins.Errno.ExistError), def14, null, null, Ruby.Builtins.RubyModule.EmptyArray, null); + Ruby.Builtins.RubyClass def8 = DefineClass("Errno::EINVAL", typeof(Ruby.Builtins.Errno.InvalidError), def14, null, null, Ruby.Builtins.RubyModule.EmptyArray, null); + Ruby.Builtins.RubyClass def9 = DefineClass("Errno::ENOENT", typeof(Ruby.Builtins.Errno.NoEntryError), def14, null, null, Ruby.Builtins.RubyModule.EmptyArray, null); + Ruby.Builtins.RubyClass def10 = DefineClass("Errno::ENOTDIR", typeof(Ruby.Builtins.Errno.NotDirectoryError), def14, null, null, Ruby.Builtins.RubyModule.EmptyArray, null); + DefineGlobalClass("FloatDomainError", typeof(Ruby.Builtins.FloatDomainError), def15, null, null, Ruby.Builtins.RubyModule.EmptyArray, null); + DefineGlobalClass("NoMethodError", typeof(System.MissingMethodException), def23, new System.Action(LoadNoMethodError_Instance), null, Ruby.Builtins.RubyModule.EmptyArray, new System.Delegate[] { new Microsoft.Scripting.Utils.Function(Ruby.Builtins.NoMethodErrorOps.Factory), }); #if !SILVERLIGHT - Ruby.Builtins.RubyClass def44 = DefineGlobalClass("TCPSocket", typeof(Ruby.StandardLibrary.TCPSocket), null, new System.Action(LoadTCPSocket_Class), def45, Ruby.Builtins.RubyModule.EmptyArray, new System.Delegate[] { - new Microsoft.Scripting.Utils.Function(Ruby.StandardLibrary.TCPSocket.CreateTCPSocket), - }); - #endif - #if !SILVERLIGHT - DefineGlobalClass("UDPSocket", typeof(Ruby.StandardLibrary.UDPSocket), new System.Action(LoadUDPSocket_Instance), null, def45, Ruby.Builtins.RubyModule.EmptyArray, new System.Delegate[] { - new Microsoft.Scripting.Utils.Function(Ruby.StandardLibrary.UDPSocket.CreateUDPSocket), - new Microsoft.Scripting.Utils.Function(Ruby.StandardLibrary.UDPSocket.CreateUDPSocket), - }); - #endif - Ruby.Builtins.RubyClass def21 = DefineClass("Zlib::DataError", typeof(Ruby.StandardLibrary.Zlib.DataError), null, null, def46, Ruby.Builtins.RubyModule.EmptyArray, null); - Ruby.Builtins.RubyClass def23 = DefineClass("Zlib::GzipFile::Error", typeof(Ruby.StandardLibrary.Zlib.GZipFile.Error), null, null, def46, Ruby.Builtins.RubyModule.EmptyArray, null); - #if !SILVERLIGHT - DefineGlobalClass("TCPServer", typeof(Ruby.StandardLibrary.TCPServer), new System.Action(LoadTCPServer_Instance), null, def44, Ruby.Builtins.RubyModule.EmptyArray, new System.Delegate[] { - new Microsoft.Scripting.Utils.Function(Ruby.StandardLibrary.TCPServer.CreateTCPServer), - }); - #endif - def11.SetConstant("Instance", def14); - def16.SetConstant("Digest", def17); - #if !SILVERLIGHT Context.ObjectClass.SetConstant("ARGF", def1); #endif #if !SILVERLIGHT Context.ObjectClass.SetConstant("ENV", def2); #endif - def11.SetConstant("Class", def13); - def17.SetConstant("Digest", def18); - def16.SetConstant("HMAC", def19); - def20.SetConstant("GzipFile", def22); - def20.SetConstant("ZStream", def26); - def11.SetConstant("Base", def12); - def20.SetConstant("GzipReader", def24); - def20.SetConstant("Inflate", def25); - #if !SILVERLIGHT - def11.SetConstant("MD5", def15); - #endif def3.SetConstant("EACCES", def4); def3.SetConstant("EBADF", def5); def3.SetConstant("EDOM", def6); @@ -269,8 +203,6 @@ def3.SetConstant("EINVAL", def8); def3.SetConstant("ENOENT", def9); def3.SetConstant("ENOTDIR", def10); - def20.SetConstant("DataError", def21); - def22.SetConstant("Error", def23); } private void Load__ClassSingleton_Instance(Ruby.Builtins.RubyModule/*!*/ module) { @@ -413,77 +345,6 @@ } - #if !SILVERLIGHT - private void LoadBasicSocket_Instance(Ruby.Builtins.RubyModule/*!*/ module) { - - module.DefineMethod("close_read", 0x9, new System.Delegate[] { - new Microsoft.Scripting.Utils.Action(Ruby.StandardLibrary.RubyBasicSocket.CloseRead), - }); - - module.DefineMethod("close_write", 0x9, new System.Delegate[] { - new Microsoft.Scripting.Utils.Action(Ruby.StandardLibrary.RubyBasicSocket.CloseWrite), - }); - - module.DefineMethod("getpeername", 0x9, new System.Delegate[] { - new Microsoft.Scripting.Utils.Function(Ruby.StandardLibrary.RubyBasicSocket.GetPeerName), - }); - - module.DefineMethod("getsockname", 0x9, new System.Delegate[] { - new Microsoft.Scripting.Utils.Function(Ruby.StandardLibrary.RubyBasicSocket.GetSocketName), - }); - - module.DefineMethod("getsockopt", 0x9, new System.Delegate[] { - new Microsoft.Scripting.Utils.Function(Ruby.StandardLibrary.RubyBasicSocket.GetSocketOption), - }); - - module.DefineMethod("recv", 0x9, new System.Delegate[] { - new Microsoft.Scripting.Utils.Function(Ruby.StandardLibrary.RubyBasicSocket.Receive), - new Microsoft.Scripting.Utils.Function(Ruby.StandardLibrary.RubyBasicSocket.Receive), - }); - - module.DefineMethod("recv_nonblock", 0x9, new System.Delegate[] { - new Microsoft.Scripting.Utils.Function(Ruby.StandardLibrary.RubyBasicSocket.ReceiveNonBlocking), - new Microsoft.Scripting.Utils.Function(Ruby.StandardLibrary.RubyBasicSocket.ReceiveNonBlocking), - }); - - module.DefineMethod("send", 0x9, new System.Delegate[] { - new Microsoft.Scripting.Utils.Function(Ruby.StandardLibrary.RubyBasicSocket.Send), - new Microsoft.Scripting.Utils.Function(Ruby.StandardLibrary.RubyBasicSocket.Send), - }); - - module.DefineMethod("setsockopt", 0x9, new System.Delegate[] { - new Microsoft.Scripting.Utils.Action(Ruby.StandardLibrary.RubyBasicSocket.SetSocketOption), - new Microsoft.Scripting.Utils.Action(Ruby.StandardLibrary.RubyBasicSocket.SetSocketOption), - new Microsoft.Scripting.Utils.Action(Ruby.StandardLibrary.RubyBasicSocket.SetSocketOption), - }); - - module.DefineMethod("shutdown", 0x9, new System.Delegate[] { - new Microsoft.Scripting.Utils.Function(Ruby.StandardLibrary.RubyBasicSocket.Shutdown), - new Microsoft.Scripting.Utils.Function(Ruby.StandardLibrary.RubyBasicSocket.Shutdown), - new Microsoft.Scripting.Utils.Function(Ruby.StandardLibrary.RubyBasicSocket.Shutdown), - }); - - } - #endif - - #if !SILVERLIGHT - private void LoadBasicSocket_Class(Ruby.Builtins.RubyModule/*!*/ module) { - - module.DefineMethod("do_not_reverse_lookup", 0x11, new System.Delegate[] { - new Microsoft.Scripting.Utils.Function(Ruby.StandardLibrary.RubyBasicSocket.GetDoNotReverseLookup), - }); - - module.DefineMethod("do_not_reverse_lookup=", 0x11, new System.Delegate[] { - new Microsoft.Scripting.Utils.Action(Ruby.StandardLibrary.RubyBasicSocket.SetDoNotReverseLookup), - }); - - module.DefineMethod("for_fd", 0x11, new System.Delegate[] { - new Microsoft.Scripting.Utils.Function(Ruby.StandardLibrary.RubyBasicSocket.ForFileDescriptor), - }); - - } - #endif - private void LoadBignum_Instance(Ruby.Builtins.RubyModule/*!*/ module) { module.DefineMethod("-", 0x9, new System.Delegate[] { @@ -729,78 +590,6 @@ } - private void LoadConditionVariable_Instance(Ruby.Builtins.RubyModule/*!*/ module) { - - module.DefineMethod("broadcast", 0x9, new System.Delegate[] { - new Microsoft.Scripting.Utils.Function(Ruby.StandardLibrary.RubyConditionVariable.Broadcast), - }); - - module.DefineMethod("signal", 0x9, new System.Delegate[] { - new Microsoft.Scripting.Utils.Function(Ruby.StandardLibrary.RubyConditionVariable.Signal), - }); - - module.DefineMethod("wait", 0x9, new System.Delegate[] { - new Microsoft.Scripting.Utils.Function(Ruby.StandardLibrary.RubyConditionVariable.Wait), - }); - - } - - private void LoadDigest_Class(Ruby.Builtins.RubyModule/*!*/ module) { - - module.DefineMethod("const_missing", 0x11, new System.Delegate[] { - new Microsoft.Scripting.Utils.Function(Ruby.StandardLibrary.Digest.ConstantMissing), - }); - - module.DefineMethod("hexencode", 0x11, new System.Delegate[] { - new Microsoft.Scripting.Utils.Function(Ruby.StandardLibrary.Digest.HexEncode), - }); - - } - - private void LoadDigest__Base_Instance(Ruby.Builtins.RubyModule/*!*/ module) { - - module.DefineMethod("<<", 0x9, new System.Delegate[] { - new Microsoft.Scripting.Utils.Function(Ruby.StandardLibrary.Digest.Base.Update), - }); - - module.DefineMethod("finish", 0xa, new System.Delegate[] { - new Microsoft.Scripting.Utils.Function(Ruby.StandardLibrary.Digest.Base.Finish), - }); - - module.DefineMethod("reset", 0x9, new System.Delegate[] { - new Microsoft.Scripting.Utils.Function(Ruby.StandardLibrary.Digest.Base.Reset), - }); - - module.DefineMethod("update", 0x9, new System.Delegate[] { - new Microsoft.Scripting.Utils.Function(Ruby.StandardLibrary.Digest.Base.Update), - }); - - } - - private void LoadDigest__Class_Class(Ruby.Builtins.RubyModule/*!*/ module) { - - module.DefineMethod("digest", 0x11, new System.Delegate[] { - new Microsoft.Scripting.Utils.Function(Ruby.StandardLibrary.Digest.Class.Digest), - }); - - module.DefineMethod("hexdigest", 0x11, new System.Delegate[] { - new Microsoft.Scripting.Utils.Function(Ruby.StandardLibrary.Digest.Class.HexDigest), - }); - - } - - private void LoadDigest__Instance_Instance(Ruby.Builtins.RubyModule/*!*/ module) { - - module.DefineMethod("digest", 0x9, new System.Delegate[] { - new Microsoft.Scripting.Utils.Function(Ruby.StandardLibrary.Digest.Instance.Digest), - }); - - module.DefineMethod("hexdigest", 0x9, new System.Delegate[] { - new Microsoft.Scripting.Utils.Function(Ruby.StandardLibrary.Digest.Instance.HexDigest), - }); - - } - private void LoadDir_Instance(Ruby.Builtins.RubyModule/*!*/ module) { module.DefineMethod("close", 0x9, new System.Delegate[] { @@ -1864,35 +1653,6 @@ } - #if !SILVERLIGHT - private void LoadIPSocket_Instance(Ruby.Builtins.RubyModule/*!*/ module) { - - module.DefineMethod("addr", 0x9, new System.Delegate[] { - new Microsoft.Scripting.Utils.Function(Ruby.StandardLibrary.IPSocket.GetLocalAddress), - }); - - module.DefineMethod("peeraddr", 0x9, new System.Delegate[] { - new Microsoft.Scripting.Utils.Function(Ruby.StandardLibrary.IPSocket.GetPeerAddress), - }); - - module.DefineMethod("recvfrom", 0x9, new System.Delegate[] { - new Microsoft.Scripting.Utils.Function(Ruby.StandardLibrary.IPSocket.ReceiveFrom), - new Microsoft.Scripting.Utils.Function(Ruby.StandardLibrary.IPSocket.ReceiveFrom), - }); - - } - #endif - - #if !SILVERLIGHT - private void LoadIPSocket_Class(Ruby.Builtins.RubyModule/*!*/ module) { - - module.DefineMethod("getaddress", 0x11, new System.Delegate[] { - new Microsoft.Scripting.Utils.Function(Ruby.StandardLibrary.IPSocket.GetAddress), - }); - - } - #endif - private void LoadKernel_Instance(Ruby.Builtins.RubyModule/*!*/ module) { module.DefineMethod("__id__", 0x9, new System.Delegate[] { @@ -2397,125 +2157,125 @@ } private void LoadMath_Instance(Ruby.Builtins.RubyModule/*!*/ module) { - module.SetConstant("E", Ruby.Builtins.Math.E); - module.SetConstant("PI", Ruby.Builtins.Math.PI); + module.SetConstant("E", Ruby.Builtins.RubyMath.E); + module.SetConstant("PI", Ruby.Builtins.RubyMath.PI); module.DefineMethod("acos", 0xa, new System.Delegate[] { - new Microsoft.Scripting.Utils.Function(Ruby.Builtins.Math.Acos), + new Microsoft.Scripting.Utils.Function(Ruby.Builtins.RubyMath.Acos), }); module.DefineMethod("asin", 0xa, new System.Delegate[] { - new Microsoft.Scripting.Utils.Function(Ruby.Builtins.Math.Asin), + new Microsoft.Scripting.Utils.Function(Ruby.Builtins.RubyMath.Asin), }); module.DefineMethod("atan", 0xa, new System.Delegate[] { - new Microsoft.Scripting.Utils.Function(Ruby.Builtins.Math.Atan), + new Microsoft.Scripting.Utils.Function(Ruby.Builtins.RubyMath.Atan), }); module.DefineMethod("atan2", 0xa, new System.Delegate[] { - new Microsoft.Scripting.Utils.Function(Ruby.Builtins.Math.Atan2), + new Microsoft.Scripting.Utils.Function(Ruby.Builtins.RubyMath.Atan2), }); module.DefineMethod("cos", 0xa, new System.Delegate[] { - new Microsoft.Scripting.Utils.Function(Ruby.Builtins.Math.Cos), + new Microsoft.Scripting.Utils.Function(Ruby.Builtins.RubyMath.Cos), }); module.DefineMethod("cosh", 0xa, new System.Delegate[] { - new Microsoft.Scripting.Utils.Function(Ruby.Builtins.Math.Cosh), + new Microsoft.Scripting.Utils.Function(Ruby.Builtins.RubyMath.Cosh), }); module.DefineMethod("exp", 0xa, new System.Delegate[] { - new Microsoft.Scripting.Utils.Function(Ruby.Builtins.Math.Exp), + new Microsoft.Scripting.Utils.Function(Ruby.Builtins.RubyMath.Exp), }); module.DefineMethod("log", 0xa, new System.Delegate[] { - new Microsoft.Scripting.Utils.Function(Ruby.Builtins.Math.Log), + new Microsoft.Scripting.Utils.Function(Ruby.Builtins.RubyMath.Log), }); module.DefineMethod("log10", 0xa, new System.Delegate[] { - new Microsoft.Scripting.Utils.Function(Ruby.Builtins.Math.Log10), + new Microsoft.Scripting.Utils.Function(Ruby.Builtins.RubyMath.Log10), }); module.DefineMethod("sin", 0xa, new System.Delegate[] { - new Microsoft.Scripting.Utils.Function(Ruby.Builtins.Math.Sin), + new Microsoft.Scripting.Utils.Function(Ruby.Builtins.RubyMath.Sin), }); module.DefineMethod("sinh", 0xa, new System.Delegate[] { - new Microsoft.Scripting.Utils.Function(Ruby.Builtins.Math.Sinh), + new Microsoft.Scripting.Utils.Function(Ruby.Builtins.RubyMath.Sinh), }); module.DefineMethod("sqrt", 0xa, new System.Delegate[] { - new Microsoft.Scripting.Utils.Function(Ruby.Builtins.Math.Sqrt), + new Microsoft.Scripting.Utils.Function(Ruby.Builtins.RubyMath.Sqrt), }); module.DefineMethod("tan", 0xa, new System.Delegate[] { - new Microsoft.Scripting.Utils.Function(Ruby.Builtins.Math.Tan), + new Microsoft.Scripting.Utils.Function(Ruby.Builtins.RubyMath.Tan), }); module.DefineMethod("tanh", 0xa, new System.Delegate[] { - new Microsoft.Scripting.Utils.Function(Ruby.Builtins.Math.Tanh), + new Microsoft.Scripting.Utils.Function(Ruby.Builtins.RubyMath.Tanh), }); } private void LoadMath_Class(Ruby.Builtins.RubyModule/*!*/ module) { - module.SetConstant("E", Ruby.Builtins.Math.E); - module.SetConstant("PI", Ruby.Builtins.Math.PI); + module.SetConstant("E", Ruby.Builtins.RubyMath.E); + module.SetConstant("PI", Ruby.Builtins.RubyMath.PI); module.DefineMethod("acos", 0x11, new System.Delegate[] { - new Microsoft.Scripting.Utils.Function(Ruby.Builtins.Math.Acos), + new Microsoft.Scripting.Utils.Function(Ruby.Builtins.RubyMath.Acos), }); module.DefineMethod("asin", 0x11, new System.Delegate[] { - new Microsoft.Scripting.Utils.Function(Ruby.Builtins.Math.Asin), + new Microsoft.Scripting.Utils.Function(Ruby.Builtins.RubyMath.Asin), }); module.DefineMethod("atan", 0x11, new System.Delegate[] { - new Microsoft.Scripting.Utils.Function(Ruby.Builtins.Math.Atan), + new Microsoft.Scripting.Utils.Function(Ruby.Builtins.RubyMath.Atan), }); module.DefineMethod("atan2", 0x11, new System.Delegate[] { - new Microsoft.Scripting.Utils.Function(Ruby.Builtins.Math.Atan2), + new Microsoft.Scripting.Utils.Function(Ruby.Builtins.RubyMath.Atan2), }); module.DefineMethod("cos", 0x11, new System.Delegate[] { - new Microsoft.Scripting.Utils.Function(Ruby.Builtins.Math.Cos), + new Microsoft.Scripting.Utils.Function(Ruby.Builtins.RubyMath.Cos), }); module.DefineMethod("cosh", 0x11, new System.Delegate[] { - new Microsoft.Scripting.Utils.Function(Ruby.Builtins.Math.Cosh), + new Microsoft.Scripting.Utils.Function(Ruby.Builtins.RubyMath.Cosh), }); module.DefineMethod("exp", 0x11, new System.Delegate[] { - new Microsoft.Scripting.Utils.Function(Ruby.Builtins.Math.Exp), + new Microsoft.Scripting.Utils.Function(Ruby.Builtins.RubyMath.Exp), }); module.DefineMethod("log", 0x11, new System.Delegate[] { - new Microsoft.Scripting.Utils.Function(Ruby.Builtins.Math.Log), + new Microsoft.Scripting.Utils.Function(Ruby.Builtins.RubyMath.Log), }); module.DefineMethod("log10", 0x11, new System.Delegate[] { - new Microsoft.Scripting.Utils.Function(Ruby.Builtins.Math.Log10), + new Microsoft.Scripting.Utils.Function(Ruby.Builtins.RubyMath.Log10), }); module.DefineMethod("sin", 0x11, new System.Delegate[] { - new Microsoft.Scripting.Utils.Function(Ruby.Builtins.Math.Sin), + new Microsoft.Scripting.Utils.Function(Ruby.Builtins.RubyMath.Sin), }); module.DefineMethod("sinh", 0x11, new System.Delegate[] { - new Microsoft.Scripting.Utils.Function(Ruby.Builtins.Math.Sinh), + new Microsoft.Scripting.Utils.Function(Ruby.Builtins.RubyMath.Sinh), }); module.DefineMethod("sqrt", 0x11, new System.Delegate[] { - new Microsoft.Scripting.Utils.Function(Ruby.Builtins.Math.Sqrt), + new Microsoft.Scripting.Utils.Function(Ruby.Builtins.RubyMath.Sqrt), }); module.DefineMethod("tan", 0x11, new System.Delegate[] { - new Microsoft.Scripting.Utils.Function(Ruby.Builtins.Math.Tan), + new Microsoft.Scripting.Utils.Function(Ruby.Builtins.RubyMath.Tan), }); module.DefineMethod("tanh", 0x11, new System.Delegate[] { - new Microsoft.Scripting.Utils.Function(Ruby.Builtins.Math.Tanh), + new Microsoft.Scripting.Utils.Function(Ruby.Builtins.RubyMath.Tanh), }); } @@ -2556,11 +2316,11 @@ private void LoadMicrosoft__Scripting__Actions__TypeTracker_Instance(Ruby.Builtins.RubyModule/*!*/ module) { module.DefineMethod("to_class", 0x9, new System.Delegate[] { - new Microsoft.Scripting.Utils.Function(Ruby.Runtime.TypeTrackerOps.ToClass), + new Microsoft.Scripting.Utils.Function(Ruby.Builtins.TypeTrackerOps.ToClass), }); module.DefineMethod("to_module", 0x9, new System.Delegate[] { - new Microsoft.Scripting.Utils.Function(Ruby.Runtime.TypeTrackerOps.ToModule), + new Microsoft.Scripting.Utils.Function(Ruby.Builtins.TypeTrackerOps.ToModule), }); } @@ -2840,34 +2600,6 @@ } - private void LoadMutex_Instance(Ruby.Builtins.RubyModule/*!*/ module) { - - module.DefineMethod("exclusive_unlock", 0x9, new System.Delegate[] { - new Microsoft.Scripting.Utils.Function(Ruby.StandardLibrary.RubyMutex.ExclusiveUnlock), - }); - - module.DefineMethod("lock", 0x9, new System.Delegate[] { - new Microsoft.Scripting.Utils.Function(Ruby.StandardLibrary.RubyMutex.Lock), - }); - - module.DefineMethod("locked?", 0x9, new System.Delegate[] { - new Microsoft.Scripting.Utils.Function(Ruby.StandardLibrary.RubyMutex.IsLocked), - }); - - module.DefineMethod("synchronize", 0x9, new System.Delegate[] { - new Microsoft.Scripting.Utils.Function(Ruby.StandardLibrary.RubyMutex.Synchronize), - }); - - module.DefineMethod("try_lock", 0x9, new System.Delegate[] { - new Microsoft.Scripting.Utils.Function(Ruby.StandardLibrary.RubyMutex.TryLock), - }); - - module.DefineMethod("unlock", 0x9, new System.Delegate[] { - new Microsoft.Scripting.Utils.Function(Ruby.StandardLibrary.RubyMutex.Unlock), - }); - - } - private void LoadNilClass_Instance(Ruby.Builtins.RubyModule/*!*/ module) { module.DefineMethod("&", 0x9, new System.Delegate[] { @@ -3011,22 +2743,6 @@ } - private void LoadOpenSSL__Digest__Digest_Instance(Ruby.Builtins.RubyModule/*!*/ module) { - - module.DefineMethod("initialize", 0xa, new System.Delegate[] { - new Microsoft.Scripting.Utils.Function(Ruby.StandardLibrary.OpenSSL.DigestFactory.Digest.Initialize), - }); - - } - - private void LoadOpenSSL__HMAC_Class(Ruby.Builtins.RubyModule/*!*/ module) { - - module.DefineMethod("hexdigest", 0x11, new System.Delegate[] { - new Microsoft.Scripting.Utils.Function(Ruby.StandardLibrary.OpenSSL.HMAC.HexDigest), - }); - - } - private void LoadPrecision_Instance(Ruby.Builtins.RubyModule/*!*/ module) { module.DefineMethod("prec", 0x9, new System.Delegate[] { @@ -3059,54 +2775,6 @@ } - private void LoadQueue_Instance(Ruby.Builtins.RubyModule/*!*/ module) { - - module.DefineMethod("<<", 0x9, new System.Delegate[] { - new Microsoft.Scripting.Utils.Function(Ruby.StandardLibrary.RubyQueue.Enqueue), - }); - - module.DefineMethod("clear", 0x9, new System.Delegate[] { - new Microsoft.Scripting.Utils.Function(Ruby.StandardLibrary.RubyQueue.Clear), - }); - - module.DefineMethod("deq", 0x9, new System.Delegate[] { - new Microsoft.Scripting.Utils.Function(Ruby.StandardLibrary.RubyQueue.Dequeue), - }); - - module.DefineMethod("empty?", 0x9, new System.Delegate[] { - new Microsoft.Scripting.Utils.Function(Ruby.StandardLibrary.RubyQueue.IsEmpty), - }); - - module.DefineMethod("enq", 0x9, new System.Delegate[] { - new Microsoft.Scripting.Utils.Function(Ruby.StandardLibrary.RubyQueue.Enqueue), - }); - - module.DefineMethod("length", 0x9, new System.Delegate[] { - new Microsoft.Scripting.Utils.Function(Ruby.StandardLibrary.RubyQueue.GetCount), - }); - - module.DefineMethod("num_waiting", 0x9, new System.Delegate[] { - new Microsoft.Scripting.Utils.Function(Ruby.StandardLibrary.RubyQueue.GetNumberOfWaitingThreads), - }); - - module.DefineMethod("pop", 0x9, new System.Delegate[] { - new Microsoft.Scripting.Utils.Function(Ruby.StandardLibrary.RubyQueue.Dequeue), - }); - - module.DefineMethod("push", 0x9, new System.Delegate[] { - new Microsoft.Scripting.Utils.Function(Ruby.StandardLibrary.RubyQueue.Enqueue), - }); - - module.DefineMethod("shift", 0x9, new System.Delegate[] { - new Microsoft.Scripting.Utils.Function(Ruby.StandardLibrary.RubyQueue.Dequeue), - }); - - module.DefineMethod("size", 0x9, new System.Delegate[] { - new Microsoft.Scripting.Utils.Function(Ruby.StandardLibrary.RubyQueue.GetCount), - }); - - } - private void LoadRange_Instance(Ruby.Builtins.RubyModule/*!*/ module) { module.DefineMethod("==", 0x9, new System.Delegate[] { @@ -3257,312 +2925,6 @@ } - private void LoadSizedQueue_Instance(Ruby.Builtins.RubyModule/*!*/ module) { - - module.DefineMethod("<<", 0x9, new System.Delegate[] { - new Microsoft.Scripting.Utils.Function(Ruby.StandardLibrary.SizedQueue.Enqueue), - }); - - module.DefineMethod("deq", 0x9, new System.Delegate[] { - new Microsoft.Scripting.Utils.Function(Ruby.StandardLibrary.SizedQueue.Dequeue), - }); - - module.DefineMethod("enq", 0x9, new System.Delegate[] { - new Microsoft.Scripting.Utils.Function(Ruby.StandardLibrary.SizedQueue.Enqueue), - }); - - module.DefineMethod("initialize", 0xa, new System.Delegate[] { - new Microsoft.Scripting.Utils.Function(Ruby.StandardLibrary.SizedQueue.Reinitialize), - }); - - module.DefineMethod("max", 0x9, new System.Delegate[] { - new Microsoft.Scripting.Utils.Function(Ruby.StandardLibrary.SizedQueue.GetLimit), - }); - - module.DefineMethod("max=", 0x9, new System.Delegate[] { - new Microsoft.Scripting.Utils.Action(Ruby.StandardLibrary.SizedQueue.SetLimit), - new Microsoft.Scripting.Utils.Action(Ruby.StandardLibrary.SizedQueue.SetLimit), - }); - - module.DefineMethod("pop", 0x9, new System.Delegate[] { - new Microsoft.Scripting.Utils.Function(Ruby.StandardLibrary.SizedQueue.Dequeue), - }); - - module.DefineMethod("push", 0x9, new System.Delegate[] { - new Microsoft.Scripting.Utils.Function(Ruby.StandardLibrary.SizedQueue.Enqueue), - }); - - module.DefineMethod("shift", 0x9, new System.Delegate[] { - new Microsoft.Scripting.Utils.Function(Ruby.StandardLibrary.SizedQueue.Dequeue), - }); - - } - - #if !SILVERLIGHT - private void LoadSocket_Instance(Ruby.Builtins.RubyModule/*!*/ module) { - module.SetConstant("AF_APPLETALK", Ruby.StandardLibrary.RubySocket.AF_APPLETALK); - module.SetConstant("AF_ATM", Ruby.StandardLibrary.RubySocket.AF_ATM); - module.SetConstant("AF_CCITT", Ruby.StandardLibrary.RubySocket.AF_CCITT); - module.SetConstant("AF_CHAOS", Ruby.StandardLibrary.RubySocket.AF_CHAOS); - module.SetConstant("AF_DATAKIT", Ruby.StandardLibrary.RubySocket.AF_DATAKIT); - module.SetConstant("AF_DLI", Ruby.StandardLibrary.RubySocket.AF_DLI); - module.SetConstant("AF_ECMA", Ruby.StandardLibrary.RubySocket.AF_ECMA); - module.SetConstant("AF_HYLINK", Ruby.StandardLibrary.RubySocket.AF_HYLINK); - module.SetConstant("AF_IMPLINK", Ruby.StandardLibrary.RubySocket.AF_IMPLINK); - module.SetConstant("AF_INET", Ruby.StandardLibrary.RubySocket.AF_INET); - module.SetConstant("AF_IPX", Ruby.StandardLibrary.RubySocket.AF_IPX); - module.SetConstant("AF_ISO", Ruby.StandardLibrary.RubySocket.AF_ISO); - module.SetConstant("AF_LAT", Ruby.StandardLibrary.RubySocket.AF_LAT); - module.SetConstant("AF_MAX", Ruby.StandardLibrary.RubySocket.AF_MAX); - module.SetConstant("AF_NETBIOS", Ruby.StandardLibrary.RubySocket.AF_NETBIOS); - module.SetConstant("AF_NS", Ruby.StandardLibrary.RubySocket.AF_NS); - module.SetConstant("AF_OSI", Ruby.StandardLibrary.RubySocket.AF_OSI); - module.SetConstant("AF_PUP", Ruby.StandardLibrary.RubySocket.AF_PUP); - module.SetConstant("AF_SNA", Ruby.StandardLibrary.RubySocket.AF_SNA); - module.SetConstant("AF_UNIX", Ruby.StandardLibrary.RubySocket.AF_UNIX); - module.SetConstant("AF_UNSPEC", Ruby.StandardLibrary.RubySocket.AF_UNSPEC); - module.SetConstant("AI_ADDRCONFIG", Ruby.StandardLibrary.RubySocket.AI_ADDRCONFIG); - module.SetConstant("AI_ALL", Ruby.StandardLibrary.RubySocket.AI_ALL); - module.SetConstant("AI_CANONNAME", Ruby.StandardLibrary.RubySocket.AI_CANONNAME); - module.SetConstant("AI_DEFAULT", Ruby.StandardLibrary.RubySocket.AI_DEFAULT); - module.SetConstant("AI_MASK", Ruby.StandardLibrary.RubySocket.AI_MASK); - module.SetConstant("AI_NUMERICHOST", Ruby.StandardLibrary.RubySocket.AI_NUMERICHOST); - module.SetConstant("AI_PASSIVE", Ruby.StandardLibrary.RubySocket.AI_PASSIVE); - module.SetConstant("AI_V4MAPPED", Ruby.StandardLibrary.RubySocket.AI_V4MAPPED); - module.SetConstant("AI_V4MAPPED_CFG", Ruby.StandardLibrary.RubySocket.AI_V4MAPPED_CFG); - module.SetConstant("EAI_ADDRFAMILY", Ruby.StandardLibrary.RubySocket.EAI_ADDRFAMILY); - module.SetConstant("EAI_AGAIN", Ruby.StandardLibrary.RubySocket.EAI_AGAIN); - module.SetConstant("EAI_BADFLAGS", Ruby.StandardLibrary.RubySocket.EAI_BADFLAGS); - module.SetConstant("EAI_BADHINTS", Ruby.StandardLibrary.RubySocket.EAI_BADHINTS); - module.SetConstant("EAI_FAIL", Ruby.StandardLibrary.RubySocket.EAI_FAIL); - module.SetConstant("EAI_FAMILY", Ruby.StandardLibrary.RubySocket.EAI_FAMILY); - module.SetConstant("EAI_MAX", Ruby.StandardLibrary.RubySocket.EAI_MAX); - module.SetConstant("EAI_MEMORY", Ruby.StandardLibrary.RubySocket.EAI_MEMORY); - module.SetConstant("EAI_NODATA", Ruby.StandardLibrary.RubySocket.EAI_NODATA); - module.SetConstant("EAI_NONAME", Ruby.StandardLibrary.RubySocket.EAI_NONAME); - module.SetConstant("EAI_PROTOCOL", Ruby.StandardLibrary.RubySocket.EAI_PROTOCOL); - module.SetConstant("EAI_SERVICE", Ruby.StandardLibrary.RubySocket.EAI_SERVICE); - module.SetConstant("EAI_SOCKTYPE", Ruby.StandardLibrary.RubySocket.EAI_SOCKTYPE); - module.SetConstant("EAI_SYSTEM", Ruby.StandardLibrary.RubySocket.EAI_SYSTEM); - module.SetConstant("INADDR_ALLHOSTS_GROUP", Ruby.StandardLibrary.RubySocket.INADDR_ALLHOSTS_GROUP); - module.SetConstant("INADDR_ANY", Ruby.StandardLibrary.RubySocket.INADDR_ANY); - module.SetConstant("INADDR_BROADCAST", Ruby.StandardLibrary.RubySocket.INADDR_BROADCAST); - module.SetConstant("INADDR_LOOPBACK", Ruby.StandardLibrary.RubySocket.INADDR_LOOPBACK); - module.SetConstant("INADDR_MAX_LOCAL_GROUP", Ruby.StandardLibrary.RubySocket.INADDR_MAX_LOCAL_GROUP); - module.SetConstant("INADDR_NONE", Ruby.StandardLibrary.RubySocket.INADDR_NONE); - module.SetConstant("INADDR_UNSPEC_GROUP", Ruby.StandardLibrary.RubySocket.INADDR_UNSPEC_GROUP); - module.SetConstant("IPPORT_RESERVED", Ruby.StandardLibrary.RubySocket.IPPORT_RESERVED); - module.SetConstant("IPPORT_USERRESERVED", Ruby.StandardLibrary.RubySocket.IPPORT_USERRESERVED); - module.SetConstant("IPPROTO_GGP", Ruby.StandardLibrary.RubySocket.IPPROTO_GGP); - module.SetConstant("IPPROTO_ICMP", Ruby.StandardLibrary.RubySocket.IPPROTO_ICMP); - module.SetConstant("IPPROTO_IDP", Ruby.StandardLibrary.RubySocket.IPPROTO_IDP); - module.SetConstant("IPPROTO_IGMP", Ruby.StandardLibrary.RubySocket.IPPROTO_IGMP); - module.SetConstant("IPPROTO_IP", Ruby.StandardLibrary.RubySocket.IPPROTO_IP); - module.SetConstant("IPPROTO_MAX", Ruby.StandardLibrary.RubySocket.IPPROTO_MAX); - module.SetConstant("IPPROTO_ND", Ruby.StandardLibrary.RubySocket.IPPROTO_ND); - module.SetConstant("IPPROTO_PUP", Ruby.StandardLibrary.RubySocket.IPPROTO_PUP); - module.SetConstant("IPPROTO_RAW", Ruby.StandardLibrary.RubySocket.IPPROTO_RAW); - module.SetConstant("IPPROTO_TCP", Ruby.StandardLibrary.RubySocket.IPPROTO_TCP); - module.SetConstant("IPPROTO_UDP", Ruby.StandardLibrary.RubySocket.IPPROTO_UDP); - module.SetConstant("MSG_DONTROUTE", Ruby.StandardLibrary.RubySocket.MSG_DONTROUTE); - module.SetConstant("MSG_OOB", Ruby.StandardLibrary.RubySocket.MSG_OOB); - module.SetConstant("MSG_PEEK", Ruby.StandardLibrary.RubySocket.MSG_PEEK); - module.SetConstant("NI_DGRAM", Ruby.StandardLibrary.RubySocket.NI_DGRAM); - module.SetConstant("NI_MAXHOST", Ruby.StandardLibrary.RubySocket.NI_MAXHOST); - module.SetConstant("NI_MAXSERV", Ruby.StandardLibrary.RubySocket.NI_MAXSERV); - module.SetConstant("NI_NAMEREQD", Ruby.StandardLibrary.RubySocket.NI_NAMEREQD); - module.SetConstant("NI_NOFQDN", Ruby.StandardLibrary.RubySocket.NI_NOFQDN); - module.SetConstant("NI_NUMERICHOST", Ruby.StandardLibrary.RubySocket.NI_NUMERICHOST); - module.SetConstant("NI_NUMERICSERV", Ruby.StandardLibrary.RubySocket.NI_NUMERICSERV); - module.SetConstant("PF_APPLETALK", Ruby.StandardLibrary.RubySocket.PF_APPLETALK); - module.SetConstant("PF_ATM", Ruby.StandardLibrary.RubySocket.PF_ATM); - module.SetConstant("PF_CCITT", Ruby.StandardLibrary.RubySocket.PF_CCITT); - module.SetConstant("PF_CHAOS", Ruby.StandardLibrary.RubySocket.PF_CHAOS); - module.SetConstant("PF_DATAKIT", Ruby.StandardLibrary.RubySocket.PF_DATAKIT); - module.SetConstant("PF_DLI", Ruby.StandardLibrary.RubySocket.PF_DLI); - module.SetConstant("PF_ECMA", Ruby.StandardLibrary.RubySocket.PF_ECMA); - module.SetConstant("PF_HYLINK", Ruby.StandardLibrary.RubySocket.PF_HYLINK); - module.SetConstant("PF_IMPLINK", Ruby.StandardLibrary.RubySocket.PF_IMPLINK); - module.SetConstant("PF_INET", Ruby.StandardLibrary.RubySocket.PF_INET); - module.SetConstant("PF_IPX", Ruby.StandardLibrary.RubySocket.PF_IPX); - module.SetConstant("PF_ISO", Ruby.StandardLibrary.RubySocket.PF_ISO); - module.SetConstant("PF_LAT", Ruby.StandardLibrary.RubySocket.PF_LAT); - module.SetConstant("PF_MAX", Ruby.StandardLibrary.RubySocket.PF_MAX); - module.SetConstant("PF_NS", Ruby.StandardLibrary.RubySocket.PF_NS); - module.SetConstant("PF_OSI", Ruby.StandardLibrary.RubySocket.PF_OSI); - module.SetConstant("PF_PUP", Ruby.StandardLibrary.RubySocket.PF_PUP); - module.SetConstant("PF_SNA", Ruby.StandardLibrary.RubySocket.PF_SNA); - module.SetConstant("PF_UNIX", Ruby.StandardLibrary.RubySocket.PF_UNIX); - module.SetConstant("PF_UNSPEC", Ruby.StandardLibrary.RubySocket.PF_UNSPEC); - module.SetConstant("SHUT_RD", Ruby.StandardLibrary.RubySocket.SHUT_RD); - module.SetConstant("SHUT_RDWR", Ruby.StandardLibrary.RubySocket.SHUT_RDWR); - module.SetConstant("SHUT_WR", Ruby.StandardLibrary.RubySocket.SHUT_WR); - module.SetConstant("SO_ACCEPTCONN", Ruby.StandardLibrary.RubySocket.SO_ACCEPTCONN); - module.SetConstant("SO_BROADCAST", Ruby.StandardLibrary.RubySocket.SO_BROADCAST); - module.SetConstant("SO_DEBUG", Ruby.StandardLibrary.RubySocket.SO_DEBUG); - module.SetConstant("SO_DONTROUTE", Ruby.StandardLibrary.RubySocket.SO_DONTROUTE); - module.SetConstant("SO_ERROR", Ruby.StandardLibrary.RubySocket.SO_ERROR); - module.SetConstant("SO_KEEPALIVE", Ruby.StandardLibrary.RubySocket.SO_KEEPALIVE); - module.SetConstant("SO_LINGER", Ruby.StandardLibrary.RubySocket.SO_LINGER); - module.SetConstant("SO_OOBINLINE", Ruby.StandardLibrary.RubySocket.SO_OOBINLINE); - module.SetConstant("SO_RCVBUF", Ruby.StandardLibrary.RubySocket.SO_RCVBUF); - module.SetConstant("SO_RCVLOWAT", Ruby.StandardLibrary.RubySocket.SO_RCVLOWAT); - module.SetConstant("SO_RCVTIMEO", Ruby.StandardLibrary.RubySocket.SO_RCVTIMEO); - module.SetConstant("SO_REUSEADDR", Ruby.StandardLibrary.RubySocket.SO_REUSEADDR); - module.SetConstant("SO_SNDBUF", Ruby.StandardLibrary.RubySocket.SO_SNDBUF); - module.SetConstant("SO_SNDLOWAT", Ruby.StandardLibrary.RubySocket.SO_SNDLOWAT); - module.SetConstant("SO_SNDTIMEO", Ruby.StandardLibrary.RubySocket.SO_SNDTIMEO); - module.SetConstant("SO_TYPE", Ruby.StandardLibrary.RubySocket.SO_TYPE); - module.SetConstant("SO_USELOOPBACK", Ruby.StandardLibrary.RubySocket.SO_USELOOPBACK); - module.SetConstant("SOCK_DGRAM", Ruby.StandardLibrary.RubySocket.SOCK_DGRAM); - module.SetConstant("SOCK_RAW", Ruby.StandardLibrary.RubySocket.SOCK_RAW); - module.SetConstant("SOCK_RDM", Ruby.StandardLibrary.RubySocket.SOCK_RDM); - module.SetConstant("SOCK_SEQPACKET", Ruby.StandardLibrary.RubySocket.SOCK_SEQPACKET); - module.SetConstant("SOCK_STREAM", Ruby.StandardLibrary.RubySocket.SOCK_STREAM); - module.SetConstant("SOL_SOCKET", Ruby.StandardLibrary.RubySocket.SOL_SOCKET); - module.SetConstant("TCP_NODELAY", Ruby.StandardLibrary.RubySocket.TCP_NODELAY); - - } - #endif - - #if !SILVERLIGHT - private void LoadSocket_Class(Ruby.Builtins.RubyModule/*!*/ module) { - module.SetConstant("AF_APPLETALK", Ruby.StandardLibrary.RubySocket.AF_APPLETALK); - module.SetConstant("AF_ATM", Ruby.StandardLibrary.RubySocket.AF_ATM); - module.SetConstant("AF_CCITT", Ruby.StandardLibrary.RubySocket.AF_CCITT); - module.SetConstant("AF_CHAOS", Ruby.StandardLibrary.RubySocket.AF_CHAOS); - module.SetConstant("AF_DATAKIT", Ruby.StandardLibrary.RubySocket.AF_DATAKIT); - module.SetConstant("AF_DLI", Ruby.StandardLibrary.RubySocket.AF_DLI); - module.SetConstant("AF_ECMA", Ruby.StandardLibrary.RubySocket.AF_ECMA); - module.SetConstant("AF_HYLINK", Ruby.StandardLibrary.RubySocket.AF_HYLINK); - module.SetConstant("AF_IMPLINK", Ruby.StandardLibrary.RubySocket.AF_IMPLINK); - module.SetConstant("AF_INET", Ruby.StandardLibrary.RubySocket.AF_INET); - module.SetConstant("AF_IPX", Ruby.StandardLibrary.RubySocket.AF_IPX); - module.SetConstant("AF_ISO", Ruby.StandardLibrary.RubySocket.AF_ISO); - module.SetConstant("AF_LAT", Ruby.StandardLibrary.RubySocket.AF_LAT); - module.SetConstant("AF_MAX", Ruby.StandardLibrary.RubySocket.AF_MAX); - module.SetConstant("AF_NETBIOS", Ruby.StandardLibrary.RubySocket.AF_NETBIOS); - module.SetConstant("AF_NS", Ruby.StandardLibrary.RubySocket.AF_NS); - module.SetConstant("AF_OSI", Ruby.StandardLibrary.RubySocket.AF_OSI); - module.SetConstant("AF_PUP", Ruby.StandardLibrary.RubySocket.AF_PUP); - module.SetConstant("AF_SNA", Ruby.StandardLibrary.RubySocket.AF_SNA); - module.SetConstant("AF_UNIX", Ruby.StandardLibrary.RubySocket.AF_UNIX); - module.SetConstant("AF_UNSPEC", Ruby.StandardLibrary.RubySocket.AF_UNSPEC); - module.SetConstant("AI_ADDRCONFIG", Ruby.StandardLibrary.RubySocket.AI_ADDRCONFIG); - module.SetConstant("AI_ALL", Ruby.StandardLibrary.RubySocket.AI_ALL); - module.SetConstant("AI_CANONNAME", Ruby.StandardLibrary.RubySocket.AI_CANONNAME); - module.SetConstant("AI_DEFAULT", Ruby.StandardLibrary.RubySocket.AI_DEFAULT); - module.SetConstant("AI_MASK", Ruby.StandardLibrary.RubySocket.AI_MASK); - module.SetConstant("AI_NUMERICHOST", Ruby.StandardLibrary.RubySocket.AI_NUMERICHOST); - module.SetConstant("AI_PASSIVE", Ruby.StandardLibrary.RubySocket.AI_PASSIVE); - module.SetConstant("AI_V4MAPPED", Ruby.StandardLibrary.RubySocket.AI_V4MAPPED); - module.SetConstant("AI_V4MAPPED_CFG", Ruby.StandardLibrary.RubySocket.AI_V4MAPPED_CFG); - module.SetConstant("EAI_ADDRFAMILY", Ruby.StandardLibrary.RubySocket.EAI_ADDRFAMILY); - module.SetConstant("EAI_AGAIN", Ruby.StandardLibrary.RubySocket.EAI_AGAIN); - module.SetConstant("EAI_BADFLAGS", Ruby.StandardLibrary.RubySocket.EAI_BADFLAGS); - module.SetConstant("EAI_BADHINTS", Ruby.StandardLibrary.RubySocket.EAI_BADHINTS); - module.SetConstant("EAI_FAIL", Ruby.StandardLibrary.RubySocket.EAI_FAIL); - module.SetConstant("EAI_FAMILY", Ruby.StandardLibrary.RubySocket.EAI_FAMILY); - module.SetConstant("EAI_MAX", Ruby.StandardLibrary.RubySocket.EAI_MAX); - module.SetConstant("EAI_MEMORY", Ruby.StandardLibrary.RubySocket.EAI_MEMORY); - module.SetConstant("EAI_NODATA", Ruby.StandardLibrary.RubySocket.EAI_NODATA); - module.SetConstant("EAI_NONAME", Ruby.StandardLibrary.RubySocket.EAI_NONAME); - module.SetConstant("EAI_PROTOCOL", Ruby.StandardLibrary.RubySocket.EAI_PROTOCOL); - module.SetConstant("EAI_SERVICE", Ruby.StandardLibrary.RubySocket.EAI_SERVICE); - module.SetConstant("EAI_SOCKTYPE", Ruby.StandardLibrary.RubySocket.EAI_SOCKTYPE); - module.SetConstant("EAI_SYSTEM", Ruby.StandardLibrary.RubySocket.EAI_SYSTEM); - module.SetConstant("INADDR_ALLHOSTS_GROUP", Ruby.StandardLibrary.RubySocket.INADDR_ALLHOSTS_GROUP); - module.SetConstant("INADDR_ANY", Ruby.StandardLibrary.RubySocket.INADDR_ANY); - module.SetConstant("INADDR_BROADCAST", Ruby.StandardLibrary.RubySocket.INADDR_BROADCAST); - module.SetConstant("INADDR_LOOPBACK", Ruby.StandardLibrary.RubySocket.INADDR_LOOPBACK); - module.SetConstant("INADDR_MAX_LOCAL_GROUP", Ruby.StandardLibrary.RubySocket.INADDR_MAX_LOCAL_GROUP); - module.SetConstant("INADDR_NONE", Ruby.StandardLibrary.RubySocket.INADDR_NONE); - module.SetConstant("INADDR_UNSPEC_GROUP", Ruby.StandardLibrary.RubySocket.INADDR_UNSPEC_GROUP); - module.SetConstant("IPPORT_RESERVED", Ruby.StandardLibrary.RubySocket.IPPORT_RESERVED); - module.SetConstant("IPPORT_USERRESERVED", Ruby.StandardLibrary.RubySocket.IPPORT_USERRESERVED); - module.SetConstant("IPPROTO_GGP", Ruby.StandardLibrary.RubySocket.IPPROTO_GGP); - module.SetConstant("IPPROTO_ICMP", Ruby.StandardLibrary.RubySocket.IPPROTO_ICMP); - module.SetConstant("IPPROTO_IDP", Ruby.StandardLibrary.RubySocket.IPPROTO_IDP); - module.SetConstant("IPPROTO_IGMP", Ruby.StandardLibrary.RubySocket.IPPROTO_IGMP); - module.SetConstant("IPPROTO_IP", Ruby.StandardLibrary.RubySocket.IPPROTO_IP); - module.SetConstant("IPPROTO_MAX", Ruby.StandardLibrary.RubySocket.IPPROTO_MAX); - module.SetConstant("IPPROTO_ND", Ruby.StandardLibrary.RubySocket.IPPROTO_ND); - module.SetConstant("IPPROTO_PUP", Ruby.StandardLibrary.RubySocket.IPPROTO_PUP); - module.SetConstant("IPPROTO_RAW", Ruby.StandardLibrary.RubySocket.IPPROTO_RAW); - module.SetConstant("IPPROTO_TCP", Ruby.StandardLibrary.RubySocket.IPPROTO_TCP); - module.SetConstant("IPPROTO_UDP", Ruby.StandardLibrary.RubySocket.IPPROTO_UDP); - module.SetConstant("MSG_DONTROUTE", Ruby.StandardLibrary.RubySocket.MSG_DONTROUTE); - module.SetConstant("MSG_OOB", Ruby.StandardLibrary.RubySocket.MSG_OOB); - module.SetConstant("MSG_PEEK", Ruby.StandardLibrary.RubySocket.MSG_PEEK); - module.SetConstant("NI_DGRAM", Ruby.StandardLibrary.RubySocket.NI_DGRAM); - module.SetConstant("NI_MAXHOST", Ruby.StandardLibrary.RubySocket.NI_MAXHOST); - module.SetConstant("NI_MAXSERV", Ruby.StandardLibrary.RubySocket.NI_MAXSERV); - module.SetConstant("NI_NAMEREQD", Ruby.StandardLibrary.RubySocket.NI_NAMEREQD); - module.SetConstant("NI_NOFQDN", Ruby.StandardLibrary.RubySocket.NI_NOFQDN); - module.SetConstant("NI_NUMERICHOST", Ruby.StandardLibrary.RubySocket.NI_NUMERICHOST); - module.SetConstant("NI_NUMERICSERV", Ruby.StandardLibrary.RubySocket.NI_NUMERICSERV); - module.SetConstant("PF_APPLETALK", Ruby.StandardLibrary.RubySocket.PF_APPLETALK); - module.SetConstant("PF_ATM", Ruby.StandardLibrary.RubySocket.PF_ATM); - module.SetConstant("PF_CCITT", Ruby.StandardLibrary.RubySocket.PF_CCITT); - module.SetConstant("PF_CHAOS", Ruby.StandardLibrary.RubySocket.PF_CHAOS); - module.SetConstant("PF_DATAKIT", Ruby.StandardLibrary.RubySocket.PF_DATAKIT); - module.SetConstant("PF_DLI", Ruby.StandardLibrary.RubySocket.PF_DLI); - module.SetConstant("PF_ECMA", Ruby.StandardLibrary.RubySocket.PF_ECMA); - module.SetConstant("PF_HYLINK", Ruby.StandardLibrary.RubySocket.PF_HYLINK); - module.SetConstant("PF_IMPLINK", Ruby.StandardLibrary.RubySocket.PF_IMPLINK); - module.SetConstant("PF_INET", Ruby.StandardLibrary.RubySocket.PF_INET); - module.SetConstant("PF_IPX", Ruby.StandardLibrary.RubySocket.PF_IPX); - module.SetConstant("PF_ISO", Ruby.StandardLibrary.RubySocket.PF_ISO); - module.SetConstant("PF_LAT", Ruby.StandardLibrary.RubySocket.PF_LAT); - module.SetConstant("PF_MAX", Ruby.StandardLibrary.RubySocket.PF_MAX); - module.SetConstant("PF_NS", Ruby.StandardLibrary.RubySocket.PF_NS); - module.SetConstant("PF_OSI", Ruby.StandardLibrary.RubySocket.PF_OSI); - module.SetConstant("PF_PUP", Ruby.StandardLibrary.RubySocket.PF_PUP); - module.SetConstant("PF_SNA", Ruby.StandardLibrary.RubySocket.PF_SNA); - module.SetConstant("PF_UNIX", Ruby.StandardLibrary.RubySocket.PF_UNIX); - module.SetConstant("PF_UNSPEC", Ruby.StandardLibrary.RubySocket.PF_UNSPEC); - module.SetConstant("SHUT_RD", Ruby.StandardLibrary.RubySocket.SHUT_RD); - module.SetConstant("SHUT_RDWR", Ruby.StandardLibrary.RubySocket.SHUT_RDWR); - module.SetConstant("SHUT_WR", Ruby.StandardLibrary.RubySocket.SHUT_WR); - module.SetConstant("SO_ACCEPTCONN", Ruby.StandardLibrary.RubySocket.SO_ACCEPTCONN); - module.SetConstant("SO_BROADCAST", Ruby.StandardLibrary.RubySocket.SO_BROADCAST); - module.SetConstant("SO_DEBUG", Ruby.StandardLibrary.RubySocket.SO_DEBUG); - module.SetConstant("SO_DONTROUTE", Ruby.StandardLibrary.RubySocket.SO_DONTROUTE); - module.SetConstant("SO_ERROR", Ruby.StandardLibrary.RubySocket.SO_ERROR); - module.SetConstant("SO_KEEPALIVE", Ruby.StandardLibrary.RubySocket.SO_KEEPALIVE); - module.SetConstant("SO_LINGER", Ruby.StandardLibrary.RubySocket.SO_LINGER); - module.SetConstant("SO_OOBINLINE", Ruby.StandardLibrary.RubySocket.SO_OOBINLINE); - module.SetConstant("SO_RCVBUF", Ruby.StandardLibrary.RubySocket.SO_RCVBUF); - module.SetConstant("SO_RCVLOWAT", Ruby.StandardLibrary.RubySocket.SO_RCVLOWAT); - module.SetConstant("SO_RCVTIMEO", Ruby.StandardLibrary.RubySocket.SO_RCVTIMEO); - module.SetConstant("SO_REUSEADDR", Ruby.StandardLibrary.RubySocket.SO_REUSEADDR); - module.SetConstant("SO_SNDBUF", Ruby.StandardLibrary.RubySocket.SO_SNDBUF); - module.SetConstant("SO_SNDLOWAT", Ruby.StandardLibrary.RubySocket.SO_SNDLOWAT); - module.SetConstant("SO_SNDTIMEO", Ruby.StandardLibrary.RubySocket.SO_SNDTIMEO); - module.SetConstant("SO_TYPE", Ruby.StandardLibrary.RubySocket.SO_TYPE); - module.SetConstant("SO_USELOOPBACK", Ruby.StandardLibrary.RubySocket.SO_USELOOPBACK); - module.SetConstant("SOCK_DGRAM", Ruby.StandardLibrary.RubySocket.SOCK_DGRAM); - module.SetConstant("SOCK_RAW", Ruby.StandardLibrary.RubySocket.SOCK_RAW); - module.SetConstant("SOCK_RDM", Ruby.StandardLibrary.RubySocket.SOCK_RDM); - module.SetConstant("SOCK_SEQPACKET", Ruby.StandardLibrary.RubySocket.SOCK_SEQPACKET); - module.SetConstant("SOCK_STREAM", Ruby.StandardLibrary.RubySocket.SOCK_STREAM); - module.SetConstant("SOL_SOCKET", Ruby.StandardLibrary.RubySocket.SOL_SOCKET); - module.SetConstant("TCP_NODELAY", Ruby.StandardLibrary.RubySocket.TCP_NODELAY); - - module.DefineMethod("getaddrinfo", 0x11, new System.Delegate[] { - new Microsoft.Scripting.Utils.Function(Ruby.StandardLibrary.RubySocket.GetAddressInfo), - }); - - } - #endif - - #if !SILVERLIGHT - private void LoadSocketError_Instance(Ruby.Builtins.RubyModule/*!*/ module) { - - module.HideMethod("message"); - } - #endif - private void LoadString_Instance(Ruby.Builtins.RubyModule/*!*/ module) { module.DefineMethod("%", 0x9, new System.Delegate[] { @@ -4312,179 +3674,179 @@ private void LoadSystem__Collections__Generic__IDictionary_Instance(Ruby.Builtins.RubyModule/*!*/ module) { module.DefineMethod("[]", 0x9, new System.Delegate[] { - new Microsoft.Scripting.Utils.Function, System.Object, System.Object>(Ruby.Extensions.IDictionaryOps.GetElement), + new Microsoft.Scripting.Utils.Function, System.Object, System.Object>(Ruby.Builtins.IDictionaryOps.GetElement), }); module.DefineMethod("[]=", 0x9, new System.Delegate[] { - new Microsoft.Scripting.Utils.Function, System.Object, System.Object, System.Object>(Ruby.Extensions.IDictionaryOps.SetElement), + new Microsoft.Scripting.Utils.Function, System.Object, System.Object, System.Object>(Ruby.Builtins.IDictionaryOps.SetElement), }); module.DefineMethod("==", 0x9, new System.Delegate[] { - new Microsoft.Scripting.Utils.Function, System.Object, System.Boolean>(Ruby.Extensions.IDictionaryOps.Equals), + new Microsoft.Scripting.Utils.Function, System.Object, System.Boolean>(Ruby.Builtins.IDictionaryOps.Equals), }); module.DefineMethod("clear", 0x9, new System.Delegate[] { - new Microsoft.Scripting.Utils.Function, System.Collections.Generic.IDictionary>(Ruby.Extensions.IDictionaryOps.Clear), + new Microsoft.Scripting.Utils.Function, System.Collections.Generic.IDictionary>(Ruby.Builtins.IDictionaryOps.Clear), }); module.DefineMethod("default", 0x9, new System.Delegate[] { - new Microsoft.Scripting.Utils.Function, System.Object, System.Object>(Ruby.Extensions.IDictionaryOps.GetDefaultValue), + new Microsoft.Scripting.Utils.Function, System.Object, System.Object>(Ruby.Builtins.IDictionaryOps.GetDefaultValue), }); module.DefineMethod("default_proc", 0x9, new System.Delegate[] { - new Microsoft.Scripting.Utils.Function, Ruby.Builtins.Proc>(Ruby.Extensions.IDictionaryOps.GetDefaultProc), + new Microsoft.Scripting.Utils.Function, Ruby.Builtins.Proc>(Ruby.Builtins.IDictionaryOps.GetDefaultProc), }); module.DefineMethod("delete", 0x9, new System.Delegate[] { - new Microsoft.Scripting.Utils.Function, Ruby.Runtime.BlockParam, System.Object, System.Object>(Ruby.Extensions.IDictionaryOps.Delete), + new Microsoft.Scripting.Utils.Function, Ruby.Runtime.BlockParam, System.Object, System.Object>(Ruby.Builtins.IDictionaryOps.Delete), }); module.DefineMethod("delete_if", 0x9, new System.Delegate[] { - new Microsoft.Scripting.Utils.Function, Ruby.Runtime.BlockParam, System.Object>(Ruby.Extensions.IDictionaryOps.DeleteIf), + new Microsoft.Scripting.Utils.Function, Ruby.Runtime.BlockParam, System.Object>(Ruby.Builtins.IDictionaryOps.DeleteIf), }); module.DefineMethod("each", 0x9, new System.Delegate[] { - new Microsoft.Scripting.Utils.Function, Ruby.Runtime.BlockParam, System.Object>(Ruby.Extensions.IDictionaryOps.Each), + new Microsoft.Scripting.Utils.Function, Ruby.Runtime.BlockParam, System.Object>(Ruby.Builtins.IDictionaryOps.Each), }); module.DefineMethod("each_key", 0x9, new System.Delegate[] { - new Microsoft.Scripting.Utils.Function, Ruby.Runtime.BlockParam, System.Object>(Ruby.Extensions.IDictionaryOps.EachKey), + new Microsoft.Scripting.Utils.Function, Ruby.Runtime.BlockParam, System.Object>(Ruby.Builtins.IDictionaryOps.EachKey), }); module.DefineMethod("each_pair", 0x9, new System.Delegate[] { - new Microsoft.Scripting.Utils.Function, Ruby.Runtime.BlockParam, System.Object>(Ruby.Extensions.IDictionaryOps.EachPair), + new Microsoft.Scripting.Utils.Function, Ruby.Runtime.BlockParam, System.Object>(Ruby.Builtins.IDictionaryOps.EachPair), }); module.DefineMethod("each_value", 0x9, new System.Delegate[] { - new Microsoft.Scripting.Utils.Function, Ruby.Runtime.BlockParam, System.Object>(Ruby.Extensions.IDictionaryOps.EachValue), + new Microsoft.Scripting.Utils.Function, Ruby.Runtime.BlockParam, System.Object>(Ruby.Builtins.IDictionaryOps.EachValue), }); module.DefineMethod("empty?", 0x9, new System.Delegate[] { - new Microsoft.Scripting.Utils.Function, System.Boolean>(Ruby.Extensions.IDictionaryOps.Empty), + new Microsoft.Scripting.Utils.Function, System.Boolean>(Ruby.Builtins.IDictionaryOps.Empty), }); module.DefineMethod("fetch", 0x9, new System.Delegate[] { - new Microsoft.Scripting.Utils.Function, Ruby.Runtime.BlockParam, System.Object, System.Object, System.Object>(Ruby.Extensions.IDictionaryOps.Fetch), + new Microsoft.Scripting.Utils.Function, Ruby.Runtime.BlockParam, System.Object, System.Object, System.Object>(Ruby.Builtins.IDictionaryOps.Fetch), }); module.DefineMethod("has_key?", 0x9, new System.Delegate[] { - new Microsoft.Scripting.Utils.Function, System.Object, System.Boolean>(Ruby.Extensions.IDictionaryOps.HasKey), + new Microsoft.Scripting.Utils.Function, System.Object, System.Boolean>(Ruby.Builtins.IDictionaryOps.HasKey), }); module.DefineMethod("has_value?", 0x9, new System.Delegate[] { - new Microsoft.Scripting.Utils.Function, System.Object, System.Boolean>(Ruby.Extensions.IDictionaryOps.HasValue), + new Microsoft.Scripting.Utils.Function, System.Object, System.Boolean>(Ruby.Builtins.IDictionaryOps.HasValue), }); module.DefineMethod("include?", 0x9, new System.Delegate[] { - new Microsoft.Scripting.Utils.Function, System.Object, System.Boolean>(Ruby.Extensions.IDictionaryOps.HasKey), + new Microsoft.Scripting.Utils.Function, System.Object, System.Boolean>(Ruby.Builtins.IDictionaryOps.HasKey), }); module.DefineMethod("index", 0x9, new System.Delegate[] { - new Microsoft.Scripting.Utils.Function, System.Object, System.Object>(Ruby.Extensions.IDictionaryOps.Index), + new Microsoft.Scripting.Utils.Function, System.Object, System.Object>(Ruby.Builtins.IDictionaryOps.Index), }); module.DefineMethod("indexes", 0x9, new System.Delegate[] { - new Microsoft.Scripting.Utils.Function, System.Object[], Ruby.Builtins.RubyArray>(Ruby.Extensions.IDictionaryOps.Indexes), + new Microsoft.Scripting.Utils.Function, System.Object[], Ruby.Builtins.RubyArray>(Ruby.Builtins.IDictionaryOps.Indexes), }); module.DefineMethod("indices", 0x9, new System.Delegate[] { - new Microsoft.Scripting.Utils.Function, System.Object[], Ruby.Builtins.RubyArray>(Ruby.Extensions.IDictionaryOps.Indexes), + new Microsoft.Scripting.Utils.Function, System.Object[], Ruby.Builtins.RubyArray>(Ruby.Builtins.IDictionaryOps.Indexes), }); module.DefineMethod("inspect", 0x9, new System.Delegate[] { - new Microsoft.Scripting.Utils.Function, Ruby.Builtins.MutableString>(Ruby.Extensions.IDictionaryOps.Inspect), + new Microsoft.Scripting.Utils.Function, Ruby.Builtins.MutableString>(Ruby.Builtins.IDictionaryOps.Inspect), }); module.DefineMethod("invert", 0x9, new System.Delegate[] { - new Microsoft.Scripting.Utils.Function, Ruby.Builtins.Hash>(Ruby.Extensions.IDictionaryOps.Invert), + new Microsoft.Scripting.Utils.Function, Ruby.Builtins.Hash>(Ruby.Builtins.IDictionaryOps.Invert), }); module.DefineMethod("key?", 0x9, new System.Delegate[] { - new Microsoft.Scripting.Utils.Function, System.Object, System.Boolean>(Ruby.Extensions.IDictionaryOps.HasKey), + new Microsoft.Scripting.Utils.Function, System.Object, System.Boolean>(Ruby.Builtins.IDictionaryOps.HasKey), }); module.DefineMethod("keys", 0x9, new System.Delegate[] { - new Microsoft.Scripting.Utils.Function, Ruby.Builtins.RubyArray>(Ruby.Extensions.IDictionaryOps.GetKeys), + new Microsoft.Scripting.Utils.Function, Ruby.Builtins.RubyArray>(Ruby.Builtins.IDictionaryOps.GetKeys), }); module.DefineMethod("length", 0x9, new System.Delegate[] { - new Microsoft.Scripting.Utils.Function, System.Int32>(Ruby.Extensions.IDictionaryOps.Length), + new Microsoft.Scripting.Utils.Function, System.Int32>(Ruby.Builtins.IDictionaryOps.Length), }); module.DefineMethod("member?", 0x9, new System.Delegate[] { - new Microsoft.Scripting.Utils.Function, System.Object, System.Boolean>(Ruby.Extensions.IDictionaryOps.HasKey), + new Microsoft.Scripting.Utils.Function, System.Object, System.Boolean>(Ruby.Builtins.IDictionaryOps.HasKey), }); module.DefineMethod("merge", 0x9, new System.Delegate[] { - new Microsoft.Scripting.Utils.Function, Ruby.Runtime.BlockParam, System.Object, System.Object>(Ruby.Extensions.IDictionaryOps.Merge), + new Microsoft.Scripting.Utils.Function, Ruby.Runtime.BlockParam, System.Object, System.Object>(Ruby.Builtins.IDictionaryOps.Merge), }); module.DefineMethod("merge!", 0x9, new System.Delegate[] { - new Microsoft.Scripting.Utils.Function, Ruby.Runtime.BlockParam, System.Object, System.Object>(Ruby.Extensions.IDictionaryOps.Update), + new Microsoft.Scripting.Utils.Function, Ruby.Runtime.BlockParam, System.Object, System.Object>(Ruby.Builtins.IDictionaryOps.Update), }); module.DefineMethod("rehash", 0x9, new System.Delegate[] { - new Microsoft.Scripting.Utils.Function, System.Collections.Generic.IDictionary>(Ruby.Extensions.IDictionaryOps.Rehash), + new Microsoft.Scripting.Utils.Function, System.Collections.Generic.IDictionary>(Ruby.Builtins.IDictionaryOps.Rehash), }); module.DefineMethod("reject", 0x9, new System.Delegate[] { - new Microsoft.Scripting.Utils.Function, Ruby.Runtime.BlockParam, System.Object>(Ruby.Extensions.IDictionaryOps.Reject), + new Microsoft.Scripting.Utils.Function, Ruby.Runtime.BlockParam, System.Object>(Ruby.Builtins.IDictionaryOps.Reject), }); module.DefineMethod("reject!", 0x9, new System.Delegate[] { - new Microsoft.Scripting.Utils.Function, Ruby.Runtime.BlockParam, System.Object>(Ruby.Extensions.IDictionaryOps.RejectMutate), + new Microsoft.Scripting.Utils.Function, Ruby.Runtime.BlockParam, System.Object>(Ruby.Builtins.IDictionaryOps.RejectMutate), }); module.DefineMethod("replace", 0x9, new System.Delegate[] { - new Microsoft.Scripting.Utils.Function, System.Object, System.Collections.Generic.IDictionary>(Ruby.Extensions.IDictionaryOps.Replace), + new Microsoft.Scripting.Utils.Function, System.Object, System.Collections.Generic.IDictionary>(Ruby.Builtins.IDictionaryOps.Replace), }); module.DefineMethod("select", 0x9, new System.Delegate[] { - new Microsoft.Scripting.Utils.Function, Ruby.Runtime.BlockParam, System.Object>(Ruby.Extensions.IDictionaryOps.Select), + new Microsoft.Scripting.Utils.Function, Ruby.Runtime.BlockParam, System.Object>(Ruby.Builtins.IDictionaryOps.Select), }); module.DefineMethod("shift", 0x9, new System.Delegate[] { - new Microsoft.Scripting.Utils.Function, System.Object>(Ruby.Extensions.IDictionaryOps.Shift), + new Microsoft.Scripting.Utils.Function, System.Object>(Ruby.Builtins.IDictionaryOps.Shift), }); module.DefineMethod("size", 0x9, new System.Delegate[] { - new Microsoft.Scripting.Utils.Function, System.Int32>(Ruby.Extensions.IDictionaryOps.Length), + new Microsoft.Scripting.Utils.Function, System.Int32>(Ruby.Builtins.IDictionaryOps.Length), }); module.DefineMethod("sort", 0x9, new System.Delegate[] { - new Microsoft.Scripting.Utils.Function, Ruby.Runtime.BlockParam, System.Object>(Ruby.Extensions.IDictionaryOps.Sort), + new Microsoft.Scripting.Utils.Function, Ruby.Runtime.BlockParam, System.Object>(Ruby.Builtins.IDictionaryOps.Sort), }); module.DefineMethod("store", 0x9, new System.Delegate[] { - new Microsoft.Scripting.Utils.Function, System.Object, System.Object, System.Object>(Ruby.Extensions.IDictionaryOps.SetElement), + new Microsoft.Scripting.Utils.Function, System.Object, System.Object, System.Object>(Ruby.Builtins.IDictionaryOps.SetElement), }); module.DefineMethod("to_a", 0x9, new System.Delegate[] { - new Microsoft.Scripting.Utils.Function, Ruby.Builtins.RubyArray>(Ruby.Extensions.IDictionaryOps.ToArray), + new Microsoft.Scripting.Utils.Function, Ruby.Builtins.RubyArray>(Ruby.Builtins.IDictionaryOps.ToArray), }); module.DefineMethod("to_hash", 0x9, new System.Delegate[] { - new Microsoft.Scripting.Utils.Function, System.Collections.Generic.IDictionary>(Ruby.Extensions.IDictionaryOps.ToHash), + new Microsoft.Scripting.Utils.Function, System.Collections.Generic.IDictionary>(Ruby.Builtins.IDictionaryOps.ToHash), }); module.DefineMethod("to_s", 0x9, new System.Delegate[] { - new Microsoft.Scripting.Utils.Function, Ruby.Builtins.MutableString>(Ruby.Extensions.IDictionaryOps.ToString), + new Microsoft.Scripting.Utils.Function, Ruby.Builtins.MutableString>(Ruby.Builtins.IDictionaryOps.ToString), }); module.DefineMethod("update", 0x9, new System.Delegate[] { - new Microsoft.Scripting.Utils.Function, Ruby.Runtime.BlockParam, System.Object, System.Object>(Ruby.Extensions.IDictionaryOps.Update), + new Microsoft.Scripting.Utils.Function, Ruby.Runtime.BlockParam, System.Object, System.Object>(Ruby.Builtins.IDictionaryOps.Update), }); module.DefineMethod("value?", 0x9, new System.Delegate[] { - new Microsoft.Scripting.Utils.Function, System.Object, System.Boolean>(Ruby.Extensions.IDictionaryOps.HasValue), + new Microsoft.Scripting.Utils.Function, System.Object, System.Boolean>(Ruby.Builtins.IDictionaryOps.HasValue), }); module.DefineMethod("values", 0x9, new System.Delegate[] { - new Microsoft.Scripting.Utils.Function, Ruby.Builtins.RubyArray>(Ruby.Extensions.IDictionaryOps.GetValues), + new Microsoft.Scripting.Utils.Function, Ruby.Builtins.RubyArray>(Ruby.Builtins.IDictionaryOps.GetValues), }); module.DefineMethod("values_at", 0x9, new System.Delegate[] { - new Microsoft.Scripting.Utils.Function, System.Object[], Ruby.Builtins.RubyArray>(Ruby.Extensions.IDictionaryOps.ValuesAt), + new Microsoft.Scripting.Utils.Function, System.Object[], Ruby.Builtins.RubyArray>(Ruby.Builtins.IDictionaryOps.ValuesAt), }); } @@ -4492,7 +3854,7 @@ private void LoadSystem__Collections__IEnumerable_Instance(Ruby.Builtins.RubyModule/*!*/ module) { module.DefineMethod("each", 0x9, new System.Delegate[] { - new Microsoft.Scripting.Utils.Function(Ruby.Extensions.IEnumerableOps.Each), + new Microsoft.Scripting.Utils.Function(Ruby.Builtins.IEnumerableOps.Each), }); } @@ -4500,300 +3862,300 @@ private void LoadSystem__Collections__IList_Instance(Ruby.Builtins.RubyModule/*!*/ module) { module.DefineMethod("-", 0x9, new System.Delegate[] { - new Microsoft.Scripting.Utils.Function(Ruby.Extensions.IListOps.Difference), - new Microsoft.Scripting.Utils.Function(Ruby.Extensions.IListOps.Difference), + new Microsoft.Scripting.Utils.Function(Ruby.Builtins.IListOps.Difference), + new Microsoft.Scripting.Utils.Function(Ruby.Builtins.IListOps.Difference), }); module.DefineMethod("&", 0x9, new System.Delegate[] { - new Microsoft.Scripting.Utils.Function(Ruby.Extensions.IListOps.Intersection), - new Microsoft.Scripting.Utils.Function(Ruby.Extensions.IListOps.Intersection), + new Microsoft.Scripting.Utils.Function(Ruby.Builtins.IListOps.Intersection), + new Microsoft.Scripting.Utils.Function(Ruby.Builtins.IListOps.Intersection), }); module.DefineMethod("*", 0x9, new System.Delegate[] { - new Microsoft.Scripting.Utils.Function(Ruby.Extensions.IListOps.Repetition), - new Microsoft.Scripting.Utils.Function(Ruby.Extensions.IListOps.Repetition), - new Microsoft.Scripting.Utils.Function(Ruby.Extensions.IListOps.Repetition), - new Microsoft.Scripting.Utils.Function(Ruby.Extensions.IListOps.Repetition), + new Microsoft.Scripting.Utils.Function(Ruby.Builtins.IListOps.Repetition), + new Microsoft.Scripting.Utils.Function(Ruby.Builtins.IListOps.Repetition), + new Microsoft.Scripting.Utils.Function(Ruby.Builtins.IListOps.Repetition), + new Microsoft.Scripting.Utils.Function(Ruby.Builtins.IListOps.Repetition), }); module.DefineMethod("[]", 0x9, new System.Delegate[] { - new Microsoft.Scripting.Utils.Function(Ruby.Extensions.IListOps.GetElement), - new Microsoft.Scripting.Utils.Function(Ruby.Extensions.IListOps.GetElement), - new Microsoft.Scripting.Utils.Function(Ruby.Extensions.IListOps.GetElements), - new Microsoft.Scripting.Utils.Function(Ruby.Extensions.IListOps.GetElement), - new Microsoft.Scripting.Utils.Function(Ruby.Extensions.IListOps.GetElement), - new Microsoft.Scripting.Utils.Function(Ruby.Extensions.IListOps.GetElement), - new Microsoft.Scripting.Utils.Function(Ruby.Extensions.IListOps.GetElement), + new Microsoft.Scripting.Utils.Function(Ruby.Builtins.IListOps.GetElement), + new Microsoft.Scripting.Utils.Function(Ruby.Builtins.IListOps.GetElement), + new Microsoft.Scripting.Utils.Function(Ruby.Builtins.IListOps.GetElements), + new Microsoft.Scripting.Utils.Function(Ruby.Builtins.IListOps.GetElement), + new Microsoft.Scripting.Utils.Function(Ruby.Builtins.IListOps.GetElement), + new Microsoft.Scripting.Utils.Function(Ruby.Builtins.IListOps.GetElement), + new Microsoft.Scripting.Utils.Function(Ruby.Builtins.IListOps.GetElement), }); module.DefineMethod("[]=", 0x9, new System.Delegate[] { - new Microsoft.Scripting.Utils.Function(Ruby.Extensions.IListOps.SetElement), - new Microsoft.Scripting.Utils.Function(Ruby.Extensions.IListOps.SetElement), - new Microsoft.Scripting.Utils.Function(Ruby.Extensions.IListOps.SetElement), - new Microsoft.Scripting.Utils.Function(Ruby.Extensions.IListOps.SetElement), - new Microsoft.Scripting.Utils.Function(Ruby.Extensions.IListOps.SetElement), - new Microsoft.Scripting.Utils.Function(Ruby.Extensions.IListOps.SetElement), - new Microsoft.Scripting.Utils.Function(Ruby.Extensions.IListOps.SetElement), + new Microsoft.Scripting.Utils.Function(Ruby.Builtins.IListOps.SetElement), + new Microsoft.Scripting.Utils.Function(Ruby.Builtins.IListOps.SetElement), + new Microsoft.Scripting.Utils.Function(Ruby.Builtins.IListOps.SetElement), + new Microsoft.Scripting.Utils.Function(Ruby.Builtins.IListOps.SetElement), + new Microsoft.Scripting.Utils.Function(Ruby.Builtins.IListOps.SetElement), + new Microsoft.Scripting.Utils.Function(Ruby.Builtins.IListOps.SetElement), + new Microsoft.Scripting.Utils.Function(Ruby.Builtins.IListOps.SetElement), }); module.DefineMethod("|", 0x9, new System.Delegate[] { - new Microsoft.Scripting.Utils.Function(Ruby.Extensions.IListOps.Union), - new Microsoft.Scripting.Utils.Function(Ruby.Extensions.IListOps.Union), + new Microsoft.Scripting.Utils.Function(Ruby.Builtins.IListOps.Union), + new Microsoft.Scripting.Utils.Function(Ruby.Builtins.IListOps.Union), }); module.DefineMethod("+", 0x9, new System.Delegate[] { - new Microsoft.Scripting.Utils.Function(Ruby.Extensions.IListOps.Concatenate), - new Microsoft.Scripting.Utils.Function(Ruby.Extensions.IListOps.Concatenate), + new Microsoft.Scripting.Utils.Function(Ruby.Builtins.IListOps.Concatenate), + new Microsoft.Scripting.Utils.Function(Ruby.Builtins.IListOps.Concatenate), }); module.DefineMethod("<<", 0x9, new System.Delegate[] { - new Microsoft.Scripting.Utils.Function(Ruby.Extensions.IListOps.Append), + new Microsoft.Scripting.Utils.Function(Ruby.Builtins.IListOps.Append), }); module.DefineMethod("<=>", 0x9, new System.Delegate[] { - new Microsoft.Scripting.Utils.Function(Ruby.Extensions.IListOps.Compare), - new Microsoft.Scripting.Utils.Function(Ruby.Extensions.IListOps.Compare), + new Microsoft.Scripting.Utils.Function(Ruby.Builtins.IListOps.Compare), + new Microsoft.Scripting.Utils.Function(Ruby.Builtins.IListOps.Compare), }); module.DefineMethod("==", 0x9, new System.Delegate[] { - new Microsoft.Scripting.Utils.Function(Ruby.Extensions.IListOps.Equals), - new Microsoft.Scripting.Utils.Function(Ruby.Extensions.IListOps.Equals), + new Microsoft.Scripting.Utils.Function(Ruby.Builtins.IListOps.Equals), + new Microsoft.Scripting.Utils.Function(Ruby.Builtins.IListOps.Equals), }); module.DefineMethod("assoc", 0x9, new System.Delegate[] { - new Microsoft.Scripting.Utils.Function(Ruby.Extensions.IListOps.GetContainerOfFirstItem), + new Microsoft.Scripting.Utils.Function(Ruby.Builtins.IListOps.GetContainerOfFirstItem), }); module.DefineMethod("at", 0x9, new System.Delegate[] { - new Microsoft.Scripting.Utils.Function(Ruby.Extensions.IListOps.At), - new Microsoft.Scripting.Utils.Function(Ruby.Extensions.IListOps.At), + new Microsoft.Scripting.Utils.Function(Ruby.Builtins.IListOps.At), + new Microsoft.Scripting.Utils.Function(Ruby.Builtins.IListOps.At), }); module.DefineMethod("clear", 0x9, new System.Delegate[] { - new Microsoft.Scripting.Utils.Function(Ruby.Extensions.IListOps.Clear), + new Microsoft.Scripting.Utils.Function(Ruby.Builtins.IListOps.Clear), }); module.DefineMethod("collect!", 0x9, new System.Delegate[] { - new Microsoft.Scripting.Utils.Function(Ruby.Extensions.IListOps.CollectInPlace), + new Microsoft.Scripting.Utils.Function(Ruby.Builtins.IListOps.CollectInPlace), }); module.DefineMethod("compact", 0x9, new System.Delegate[] { - new Microsoft.Scripting.Utils.Function(Ruby.Extensions.IListOps.Compact), + new Microsoft.Scripting.Utils.Function(Ruby.Builtins.IListOps.Compact), }); module.DefineMethod("compact!", 0x9, new System.Delegate[] { - new Microsoft.Scripting.Utils.Function(Ruby.Extensions.IListOps.CompactInPlace), + new Microsoft.Scripting.Utils.Function(Ruby.Builtins.IListOps.CompactInPlace), }); module.DefineMethod("concat", 0x9, new System.Delegate[] { - new Microsoft.Scripting.Utils.Function(Ruby.Extensions.IListOps.Concat), - new Microsoft.Scripting.Utils.Function(Ruby.Extensions.IListOps.Concat), + new Microsoft.Scripting.Utils.Function(Ruby.Builtins.IListOps.Concat), + new Microsoft.Scripting.Utils.Function(Ruby.Builtins.IListOps.Concat), }); module.DefineMethod("delete", 0x9, new System.Delegate[] { - new Microsoft.Scripting.Utils.Function(Ruby.Extensions.IListOps.Delete), - new Microsoft.Scripting.Utils.Function(Ruby.Extensions.IListOps.Delete), + new Microsoft.Scripting.Utils.Function(Ruby.Builtins.IListOps.Delete), + new Microsoft.Scripting.Utils.Function(Ruby.Builtins.IListOps.Delete), }); module.DefineMethod("delete_at", 0x9, new System.Delegate[] { - new Microsoft.Scripting.Utils.Function(Ruby.Extensions.IListOps.DeleteAt), + new Microsoft.Scripting.Utils.Function(Ruby.Builtins.IListOps.DeleteAt), }); module.DefineMethod("delete_if", 0x9, new System.Delegate[] { - new Microsoft.Scripting.Utils.Function(Ruby.Extensions.IListOps.DeleteIf), + new Microsoft.Scripting.Utils.Function(Ruby.Builtins.IListOps.DeleteIf), }); module.DefineMethod("each", 0x9, new System.Delegate[] { - new Microsoft.Scripting.Utils.Function(Ruby.Extensions.IListOps.Each), + new Microsoft.Scripting.Utils.Function(Ruby.Builtins.IListOps.Each), }); module.DefineMethod("each_index", 0x9, new System.Delegate[] { - new Microsoft.Scripting.Utils.Function(Ruby.Extensions.IListOps.EachIndex), + new Microsoft.Scripting.Utils.Function(Ruby.Builtins.IListOps.EachIndex), }); module.DefineMethod("empty?", 0x9, new System.Delegate[] { - new Microsoft.Scripting.Utils.Function(Ruby.Extensions.IListOps.Empty), + new Microsoft.Scripting.Utils.Function(Ruby.Builtins.IListOps.Empty), }); module.DefineMethod("eql?", 0x9, new System.Delegate[] { - new Microsoft.Scripting.Utils.Function(Ruby.Extensions.IListOps.HashEquals), + new Microsoft.Scripting.Utils.Function(Ruby.Builtins.IListOps.HashEquals), }); module.DefineMethod("fetch", 0x9, new System.Delegate[] { - new Microsoft.Scripting.Utils.Function(Ruby.Extensions.IListOps.Fetch), - new Microsoft.Scripting.Utils.Function(Ruby.Extensions.IListOps.Fetch), + new Microsoft.Scripting.Utils.Function(Ruby.Builtins.IListOps.Fetch), + new Microsoft.Scripting.Utils.Function(Ruby.Builtins.IListOps.Fetch), }); module.DefineMethod("fill", 0x9, new System.Delegate[] { - new Microsoft.Scripting.Utils.Function(Ruby.Extensions.IListOps.Fill), - new Microsoft.Scripting.Utils.Function(Ruby.Extensions.IListOps.Fill), - new Microsoft.Scripting.Utils.Function(Ruby.Extensions.IListOps.Fill), - new Microsoft.Scripting.Utils.Function(Ruby.Extensions.IListOps.Fill), - new Microsoft.Scripting.Utils.Function(Ruby.Extensions.IListOps.Fill), - new Microsoft.Scripting.Utils.Function(Ruby.Extensions.IListOps.Fill), - new Microsoft.Scripting.Utils.Function(Ruby.Extensions.IListOps.Fill), - new Microsoft.Scripting.Utils.Function(Ruby.Extensions.IListOps.Fill), + new Microsoft.Scripting.Utils.Function(Ruby.Builtins.IListOps.Fill), + new Microsoft.Scripting.Utils.Function(Ruby.Builtins.IListOps.Fill), + new Microsoft.Scripting.Utils.Function(Ruby.Builtins.IListOps.Fill), + new Microsoft.Scripting.Utils.Function(Ruby.Builtins.IListOps.Fill), + new Microsoft.Scripting.Utils.Function(Ruby.Builtins.IListOps.Fill), + new Microsoft.Scripting.Utils.Function(Ruby.Builtins.IListOps.Fill), + new Microsoft.Scripting.Utils.Function(Ruby.Builtins.IListOps.Fill), + new Microsoft.Scripting.Utils.Function(Ruby.Builtins.IListOps.Fill), }); module.DefineMethod("first", 0x9, new System.Delegate[] { - new Microsoft.Scripting.Utils.Function(Ruby.Extensions.IListOps.First), - new Microsoft.Scripting.Utils.Function(Ruby.Extensions.IListOps.First), - new Microsoft.Scripting.Utils.Function(Ruby.Extensions.IListOps.First), + new Microsoft.Scripting.Utils.Function(Ruby.Builtins.IListOps.First), + new Microsoft.Scripting.Utils.Function(Ruby.Builtins.IListOps.First), + new Microsoft.Scripting.Utils.Function(Ruby.Builtins.IListOps.First), }); module.DefineMethod("flatten", 0x9, new System.Delegate[] { - new Microsoft.Scripting.Utils.Function(Ruby.Extensions.IListOps.Flatten), + new Microsoft.Scripting.Utils.Function(Ruby.Builtins.IListOps.Flatten), }); module.DefineMethod("flatten!", 0x9, new System.Delegate[] { - new Microsoft.Scripting.Utils.Function(Ruby.Extensions.IListOps.FlattenInPlace), + new Microsoft.Scripting.Utils.Function(Ruby.Builtins.IListOps.FlattenInPlace), }); module.DefineMethod("hash", 0x9, new System.Delegate[] { - new Microsoft.Scripting.Utils.Function(Ruby.Extensions.IListOps.GetHashCode), + new Microsoft.Scripting.Utils.Function(Ruby.Builtins.IListOps.GetHashCode), }); module.DefineMethod("include?", 0x9, new System.Delegate[] { - new Microsoft.Scripting.Utils.Function(Ruby.Extensions.IListOps.Include), + new Microsoft.Scripting.Utils.Function(Ruby.Builtins.IListOps.Include), }); module.DefineMethod("index", 0x9, new System.Delegate[] { - new Microsoft.Scripting.Utils.Function(Ruby.Extensions.IListOps.Index), + new Microsoft.Scripting.Utils.Function(Ruby.Builtins.IListOps.Index), }); module.DefineMethod("indexes", 0x9, new System.Delegate[] { - new Microsoft.Scripting.Utils.Function(Ruby.Extensions.IListOps.Indexes), + new Microsoft.Scripting.Utils.Function(Ruby.Builtins.IListOps.Indexes), }); module.DefineMethod("indices", 0x9, new System.Delegate[] { - new Microsoft.Scripting.Utils.Function(Ruby.Extensions.IListOps.Indexes), + new Microsoft.Scripting.Utils.Function(Ruby.Builtins.IListOps.Indexes), }); module.DefineMethod("insert", 0x9, new System.Delegate[] { - new Microsoft.Scripting.Utils.Function(Ruby.Extensions.IListOps.Insert), + new Microsoft.Scripting.Utils.Function(Ruby.Builtins.IListOps.Insert), }); module.DefineMethod("inspect", 0x9, new System.Delegate[] { - new Microsoft.Scripting.Utils.Function(Ruby.Extensions.IListOps.Inspect), + new Microsoft.Scripting.Utils.Function(Ruby.Builtins.IListOps.Inspect), }); module.DefineMethod("join", 0x9, new System.Delegate[] { - new Microsoft.Scripting.Utils.Function(Ruby.Extensions.IListOps.Join), - new Microsoft.Scripting.Utils.Function(Ruby.Extensions.IListOps.Join), - new Microsoft.Scripting.Utils.Function(Ruby.Extensions.IListOps.Join), + new Microsoft.Scripting.Utils.Function(Ruby.Builtins.IListOps.Join), + new Microsoft.Scripting.Utils.Function(Ruby.Builtins.IListOps.Join), + new Microsoft.Scripting.Utils.Function(Ruby.Builtins.IListOps.Join), }); module.DefineMethod("last", 0x9, new System.Delegate[] { - new Microsoft.Scripting.Utils.Function(Ruby.Extensions.IListOps.Last), - new Microsoft.Scripting.Utils.Function(Ruby.Extensions.IListOps.Last), - new Microsoft.Scripting.Utils.Function(Ruby.Extensions.IListOps.Last), + new Microsoft.Scripting.Utils.Function(Ruby.Builtins.IListOps.Last), + new Microsoft.Scripting.Utils.Function(Ruby.Builtins.IListOps.Last), + new Microsoft.Scripting.Utils.Function(Ruby.Builtins.IListOps.Last), }); module.DefineMethod("length", 0x9, new System.Delegate[] { - new Microsoft.Scripting.Utils.Function(Ruby.Extensions.IListOps.Length), + new Microsoft.Scripting.Utils.Function(Ruby.Builtins.IListOps.Length), }); module.DefineMethod("map!", 0x9, new System.Delegate[] { - new Microsoft.Scripting.Utils.Function(Ruby.Extensions.IListOps.CollectInPlace), + new Microsoft.Scripting.Utils.Function(Ruby.Builtins.IListOps.CollectInPlace), }); module.DefineMethod("nitems", 0x9, new System.Delegate[] { - new Microsoft.Scripting.Utils.Function(Ruby.Extensions.IListOps.NumberOfNonNilItems), + new Microsoft.Scripting.Utils.Function(Ruby.Builtins.IListOps.NumberOfNonNilItems), }); module.DefineMethod("pop", 0x9, new System.Delegate[] { - new Microsoft.Scripting.Utils.Function(Ruby.Extensions.IListOps.Pop), + new Microsoft.Scripting.Utils.Function(Ruby.Builtins.IListOps.Pop), }); module.DefineMethod("push", 0x9, new System.Delegate[] { - new Microsoft.Scripting.Utils.Function(Ruby.Extensions.IListOps.Push), + new Microsoft.Scripting.Utils.Function(Ruby.Builtins.IListOps.Push), }); module.DefineMethod("rassoc", 0x9, new System.Delegate[] { - new Microsoft.Scripting.Utils.Function(Ruby.Extensions.IListOps.GetContainerOfSecondItem), + new Microsoft.Scripting.Utils.Function(Ruby.Builtins.IListOps.GetContainerOfSecondItem), }); module.DefineMethod("replace", 0x9, new System.Delegate[] { - new Microsoft.Scripting.Utils.Function(Ruby.Extensions.IListOps.Replace), - new Microsoft.Scripting.Utils.Function(Ruby.Extensions.IListOps.Replace), + new Microsoft.Scripting.Utils.Function(Ruby.Builtins.IListOps.Replace), + new Microsoft.Scripting.Utils.Function(Ruby.Builtins.IListOps.Replace), }); module.DefineMethod("reverse", 0x9, new System.Delegate[] { - new Microsoft.Scripting.Utils.Function(Ruby.Extensions.IListOps.Reverse), + new Microsoft.Scripting.Utils.Function(Ruby.Builtins.IListOps.Reverse), }); module.DefineMethod("reverse!", 0x9, new System.Delegate[] { - new Microsoft.Scripting.Utils.Function(Ruby.Extensions.IListOps.InPlaceReverse), + new Microsoft.Scripting.Utils.Function(Ruby.Builtins.IListOps.InPlaceReverse), }); module.DefineMethod("rindex", 0x9, new System.Delegate[] { - new Microsoft.Scripting.Utils.Function(Ruby.Extensions.IListOps.ReverseIndex), + new Microsoft.Scripting.Utils.Function(Ruby.Builtins.IListOps.ReverseIndex), }); module.DefineMethod("shift", 0x9, new System.Delegate[] { - new Microsoft.Scripting.Utils.Function(Ruby.Extensions.IListOps.Shift), + new Microsoft.Scripting.Utils.Function(Ruby.Builtins.IListOps.Shift), }); module.DefineMethod("size", 0x9, new System.Delegate[] { - new Microsoft.Scripting.Utils.Function(Ruby.Extensions.IListOps.Length), + new Microsoft.Scripting.Utils.Function(Ruby.Builtins.IListOps.Length), }); module.DefineMethod("slice", 0x9, new System.Delegate[] { - new Microsoft.Scripting.Utils.Function(Ruby.Extensions.IListOps.GetElement), - new Microsoft.Scripting.Utils.Function(Ruby.Extensions.IListOps.GetElement), - new Microsoft.Scripting.Utils.Function(Ruby.Extensions.IListOps.GetElements), - new Microsoft.Scripting.Utils.Function(Ruby.Extensions.IListOps.GetElement), - new Microsoft.Scripting.Utils.Function(Ruby.Extensions.IListOps.GetElement), - new Microsoft.Scripting.Utils.Function(Ruby.Extensions.IListOps.GetElement), - new Microsoft.Scripting.Utils.Function(Ruby.Extensions.IListOps.GetElement), + new Microsoft.Scripting.Utils.Function(Ruby.Builtins.IListOps.GetElement), + new Microsoft.Scripting.Utils.Function(Ruby.Builtins.IListOps.GetElement), + new Microsoft.Scripting.Utils.Function(Ruby.Builtins.IListOps.GetElements), + new Microsoft.Scripting.Utils.Function(Ruby.Builtins.IListOps.GetElement), + new Microsoft.Scripting.Utils.Function(Ruby.Builtins.IListOps.GetElement), + new Microsoft.Scripting.Utils.Function(Ruby.Builtins.IListOps.GetElement), + new Microsoft.Scripting.Utils.Function(Ruby.Builtins.IListOps.GetElement), }); module.DefineMethod("slice!", 0x9, new System.Delegate[] { - new Microsoft.Scripting.Utils.Function(Ruby.Extensions.IListOps.SliceInPlace), - new Microsoft.Scripting.Utils.Function(Ruby.Extensions.IListOps.SliceInPlace), - new Microsoft.Scripting.Utils.Function(Ruby.Extensions.IListOps.SliceInPlace), - new Microsoft.Scripting.Utils.Function(Ruby.Extensions.IListOps.SliceInPlace), - new Microsoft.Scripting.Utils.Function(Ruby.Extensions.IListOps.SliceInPlace), + new Microsoft.Scripting.Utils.Function(Ruby.Builtins.IListOps.SliceInPlace), + new Microsoft.Scripting.Utils.Function(Ruby.Builtins.IListOps.SliceInPlace), + new Microsoft.Scripting.Utils.Function(Ruby.Builtins.IListOps.SliceInPlace), + new Microsoft.Scripting.Utils.Function(Ruby.Builtins.IListOps.SliceInPlace), + new Microsoft.Scripting.Utils.Function(Ruby.Builtins.IListOps.SliceInPlace), }); module.DefineMethod("sort", 0x9, new System.Delegate[] { - new Microsoft.Scripting.Utils.Function(Ruby.Extensions.IListOps.Sort), + new Microsoft.Scripting.Utils.Function(Ruby.Builtins.IListOps.Sort), }); module.DefineMethod("sort!", 0x9, new System.Delegate[] { - new Microsoft.Scripting.Utils.Function(Ruby.Extensions.IListOps.SortInPlace), + new Microsoft.Scripting.Utils.Function(Ruby.Builtins.IListOps.SortInPlace), }); module.DefineMethod("to_a", 0x9, new System.Delegate[] { - new Microsoft.Scripting.Utils.Function(Ruby.Extensions.IListOps.ToArray), + new Microsoft.Scripting.Utils.Function(Ruby.Builtins.IListOps.ToArray), }); module.DefineMethod("to_ary", 0x9, new System.Delegate[] { - new Microsoft.Scripting.Utils.Function(Ruby.Extensions.IListOps.ToArray), + new Microsoft.Scripting.Utils.Function(Ruby.Builtins.IListOps.ToArray), }); module.DefineMethod("to_s", 0x9, new System.Delegate[] { - new Microsoft.Scripting.Utils.Function(Ruby.Extensions.IListOps.Join), + new Microsoft.Scripting.Utils.Function(Ruby.Builtins.IListOps.Join), }); module.DefineMethod("transpose", 0x9, new System.Delegate[] { - new Microsoft.Scripting.Utils.Function(Ruby.Extensions.IListOps.Transpose), + new Microsoft.Scripting.Utils.Function(Ruby.Builtins.IListOps.Transpose), }); module.DefineMethod("uniq", 0x9, new System.Delegate[] { - new Microsoft.Scripting.Utils.Function(Ruby.Extensions.IListOps.Unique), + new Microsoft.Scripting.Utils.Function(Ruby.Builtins.IListOps.Unique), }); module.DefineMethod("uniq!", 0x9, new System.Delegate[] { - new Microsoft.Scripting.Utils.Function(Ruby.Extensions.IListOps.UniqueSelf), + new Microsoft.Scripting.Utils.Function(Ruby.Builtins.IListOps.UniqueSelf), }); module.DefineMethod("unshift", 0x9, new System.Delegate[] { - new Microsoft.Scripting.Utils.Function(Ruby.Extensions.IListOps.Unshift), + new Microsoft.Scripting.Utils.Function(Ruby.Builtins.IListOps.Unshift), }); module.DefineMethod("values_at", 0x9, new System.Delegate[] { - new Microsoft.Scripting.Utils.Function(Ruby.Extensions.IListOps.ValuesAt), + new Microsoft.Scripting.Utils.Function(Ruby.Builtins.IListOps.ValuesAt), }); } @@ -4801,7 +4163,7 @@ private void LoadSystem__IComparable_Instance(Ruby.Builtins.RubyModule/*!*/ module) { module.DefineMethod("<=>", 0x9, new System.Delegate[] { - new Microsoft.Scripting.Utils.Function(Ruby.Extensions.IComparableOps.Compare), + new Microsoft.Scripting.Utils.Function(Ruby.Builtins.IComparableOps.Compare), }); } @@ -4809,11 +4171,11 @@ private void LoadSystem__Type_Instance(Ruby.Builtins.RubyModule/*!*/ module) { module.DefineMethod("to_class", 0x9, new System.Delegate[] { - new Microsoft.Scripting.Utils.Function(Ruby.Runtime.TypeOps.ToClass), + new Microsoft.Scripting.Utils.Function(Ruby.Builtins.TypeOps.ToClass), }); module.DefineMethod("to_module", 0x9, new System.Delegate[] { - new Microsoft.Scripting.Utils.Function(Ruby.Runtime.TypeOps.ToModule), + new Microsoft.Scripting.Utils.Function(Ruby.Builtins.TypeOps.ToModule), }); } @@ -4830,38 +4192,6 @@ } - #if !SILVERLIGHT - private void LoadTCPServer_Instance(Ruby.Builtins.RubyModule/*!*/ module) { - - module.DefineMethod("accept", 0x9, new System.Delegate[] { - new Microsoft.Scripting.Utils.Function(Ruby.StandardLibrary.TCPServer.Accept), - }); - - module.DefineMethod("accept_nonblock", 0x9, new System.Delegate[] { - new Microsoft.Scripting.Utils.Function(Ruby.StandardLibrary.TCPServer.AcceptNonBlocking), - }); - - module.DefineMethod("listen", 0x9, new System.Delegate[] { - new Microsoft.Scripting.Utils.Action(Ruby.StandardLibrary.TCPServer.Listen), - }); - - module.DefineMethod("sysaccept", 0x9, new System.Delegate[] { - new Microsoft.Scripting.Utils.Function(Ruby.StandardLibrary.TCPServer.SysAccept), - }); - - } - #endif - - #if !SILVERLIGHT - private void LoadTCPSocket_Class(Ruby.Builtins.RubyModule/*!*/ module) { - - module.DefineMethod("gethostbyname", 0x11, new System.Delegate[] { - new Microsoft.Scripting.Utils.Function(Ruby.StandardLibrary.TCPSocket.GetHostByName), - }); - - } - #endif - private void LoadThread_Instance(Ruby.Builtins.RubyModule/*!*/ module) { module.DefineMethod("join", 0x9, new System.Delegate[] { @@ -5081,102 +4411,833 @@ } + private void LoadUnboundMethod_Instance(Ruby.Builtins.RubyModule/*!*/ module) { + + module.DefineMethod("==", 0x9, new System.Delegate[] { + new Microsoft.Scripting.Utils.Function(Ruby.Builtins.UnboundMethod.Equal), + new Microsoft.Scripting.Utils.Function(Ruby.Builtins.UnboundMethod.Equal), + }); + + module.DefineMethod("arity", 0x9, new System.Delegate[] { + new Microsoft.Scripting.Utils.Function(Ruby.Builtins.UnboundMethod.GetArity), + }); + + module.DefineMethod("bind", 0x9, new System.Delegate[] { + new Microsoft.Scripting.Utils.Function(Ruby.Builtins.UnboundMethod.Bind), + }); + + module.DefineMethod("clone", 0x9, new System.Delegate[] { + new Microsoft.Scripting.Utils.Function(Ruby.Builtins.UnboundMethod.Clone), + }); + + module.DefineMethod("to_s", 0x9, new System.Delegate[] { + new Microsoft.Scripting.Utils.Function(Ruby.Builtins.UnboundMethod.ToS), + }); + + } + + } +} + +namespace Ruby.StandardLibrary.Threading { + public sealed class ThreadingLibraryInitializer : Ruby.Builtins.LibraryInitializer { + protected override void LoadModules() { + Ruby.Builtins.RubyClass classRef0 = GetClass(typeof(System.Object)); + + + DefineGlobalClass("ConditionVariable", typeof(Ruby.StandardLibrary.Threading.RubyConditionVariable), classRef0, new System.Action(LoadConditionVariable_Instance), null, Ruby.Builtins.RubyModule.EmptyArray, null); + DefineGlobalClass("Mutex", typeof(Ruby.StandardLibrary.Threading.RubyMutex), classRef0, new System.Action(LoadMutex_Instance), null, Ruby.Builtins.RubyModule.EmptyArray, null); + Ruby.Builtins.RubyClass def1 = DefineGlobalClass("Queue", typeof(Ruby.StandardLibrary.Threading.RubyQueue), classRef0, new System.Action(LoadQueue_Instance), null, Ruby.Builtins.RubyModule.EmptyArray, null); + DefineGlobalClass("SizedQueue", typeof(Ruby.StandardLibrary.Threading.SizedQueue), def1, new System.Action(LoadSizedQueue_Instance), null, Ruby.Builtins.RubyModule.EmptyArray, null); + } + + private void LoadConditionVariable_Instance(Ruby.Builtins.RubyModule/*!*/ module) { + + module.DefineMethod("broadcast", 0x9, new System.Delegate[] { + new Microsoft.Scripting.Utils.Function(Ruby.StandardLibrary.Threading.RubyConditionVariable.Broadcast), + }); + + module.DefineMethod("signal", 0x9, new System.Delegate[] { + new Microsoft.Scripting.Utils.Function(Ruby.StandardLibrary.Threading.RubyConditionVariable.Signal), + }); + + module.DefineMethod("wait", 0x9, new System.Delegate[] { + new Microsoft.Scripting.Utils.Function(Ruby.StandardLibrary.Threading.RubyConditionVariable.Wait), + }); + + } + + private void LoadMutex_Instance(Ruby.Builtins.RubyModule/*!*/ module) { + + module.DefineMethod("exclusive_unlock", 0x9, new System.Delegate[] { + new Microsoft.Scripting.Utils.Function(Ruby.StandardLibrary.Threading.RubyMutex.ExclusiveUnlock), + }); + + module.DefineMethod("lock", 0x9, new System.Delegate[] { + new Microsoft.Scripting.Utils.Function(Ruby.StandardLibrary.Threading.RubyMutex.Lock), + }); + + module.DefineMethod("locked?", 0x9, new System.Delegate[] { + new Microsoft.Scripting.Utils.Function(Ruby.StandardLibrary.Threading.RubyMutex.IsLocked), + }); + + module.DefineMethod("synchronize", 0x9, new System.Delegate[] { + new Microsoft.Scripting.Utils.Function(Ruby.StandardLibrary.Threading.RubyMutex.Synchronize), + }); + + module.DefineMethod("try_lock", 0x9, new System.Delegate[] { + new Microsoft.Scripting.Utils.Function(Ruby.StandardLibrary.Threading.RubyMutex.TryLock), + }); + + module.DefineMethod("unlock", 0x9, new System.Delegate[] { + new Microsoft.Scripting.Utils.Function(Ruby.StandardLibrary.Threading.RubyMutex.Unlock), + }); + + } + + private void LoadQueue_Instance(Ruby.Builtins.RubyModule/*!*/ module) { + + module.DefineMethod("<<", 0x9, new System.Delegate[] { + new Microsoft.Scripting.Utils.Function(Ruby.StandardLibrary.Threading.RubyQueue.Enqueue), + }); + + module.DefineMethod("clear", 0x9, new System.Delegate[] { + new Microsoft.Scripting.Utils.Function(Ruby.StandardLibrary.Threading.RubyQueue.Clear), + }); + + module.DefineMethod("deq", 0x9, new System.Delegate[] { + new Microsoft.Scripting.Utils.Function(Ruby.StandardLibrary.Threading.RubyQueue.Dequeue), + }); + + module.DefineMethod("empty?", 0x9, new System.Delegate[] { + new Microsoft.Scripting.Utils.Function(Ruby.StandardLibrary.Threading.RubyQueue.IsEmpty), + }); + + module.DefineMethod("enq", 0x9, new System.Delegate[] { + new Microsoft.Scripting.Utils.Function(Ruby.StandardLibrary.Threading.RubyQueue.Enqueue), + }); + + module.DefineMethod("length", 0x9, new System.Delegate[] { + new Microsoft.Scripting.Utils.Function(Ruby.StandardLibrary.Threading.RubyQueue.GetCount), + }); + + module.DefineMethod("num_waiting", 0x9, new System.Delegate[] { + new Microsoft.Scripting.Utils.Function(Ruby.StandardLibrary.Threading.RubyQueue.GetNumberOfWaitingThreads), + }); + + module.DefineMethod("pop", 0x9, new System.Delegate[] { + new Microsoft.Scripting.Utils.Function(Ruby.StandardLibrary.Threading.RubyQueue.Dequeue), + }); + + module.DefineMethod("push", 0x9, new System.Delegate[] { + new Microsoft.Scripting.Utils.Function(Ruby.StandardLibrary.Threading.RubyQueue.Enqueue), + }); + + module.DefineMethod("shift", 0x9, new System.Delegate[] { + new Microsoft.Scripting.Utils.Function(Ruby.StandardLibrary.Threading.RubyQueue.Dequeue), + }); + + module.DefineMethod("size", 0x9, new System.Delegate[] { + new Microsoft.Scripting.Utils.Function(Ruby.StandardLibrary.Threading.RubyQueue.GetCount), + }); + + } + + private void LoadSizedQueue_Instance(Ruby.Builtins.RubyModule/*!*/ module) { + + module.DefineMethod("<<", 0x9, new System.Delegate[] { + new Microsoft.Scripting.Utils.Function(Ruby.StandardLibrary.Threading.SizedQueue.Enqueue), + }); + + module.DefineMethod("deq", 0x9, new System.Delegate[] { + new Microsoft.Scripting.Utils.Function(Ruby.StandardLibrary.Threading.SizedQueue.Dequeue), + }); + + module.DefineMethod("enq", 0x9, new System.Delegate[] { + new Microsoft.Scripting.Utils.Function(Ruby.StandardLibrary.Threading.SizedQueue.Enqueue), + }); + + module.DefineMethod("initialize", 0xa, new System.Delegate[] { + new Microsoft.Scripting.Utils.Function(Ruby.StandardLibrary.Threading.SizedQueue.Reinitialize), + }); + + module.DefineMethod("max", 0x9, new System.Delegate[] { + new Microsoft.Scripting.Utils.Function(Ruby.StandardLibrary.Threading.SizedQueue.GetLimit), + }); + + module.DefineMethod("max=", 0x9, new System.Delegate[] { + new Microsoft.Scripting.Utils.Action(Ruby.StandardLibrary.Threading.SizedQueue.SetLimit), + new Microsoft.Scripting.Utils.Action(Ruby.StandardLibrary.Threading.SizedQueue.SetLimit), + }); + + module.DefineMethod("pop", 0x9, new System.Delegate[] { + new Microsoft.Scripting.Utils.Function(Ruby.StandardLibrary.Threading.SizedQueue.Dequeue), + }); + + module.DefineMethod("push", 0x9, new System.Delegate[] { + new Microsoft.Scripting.Utils.Function(Ruby.StandardLibrary.Threading.SizedQueue.Enqueue), + }); + + module.DefineMethod("shift", 0x9, new System.Delegate[] { + new Microsoft.Scripting.Utils.Function(Ruby.StandardLibrary.Threading.SizedQueue.Dequeue), + }); + + } + + } +} + +namespace Ruby.StandardLibrary.Sockets { + public sealed class SocketsLibraryInitializer : Ruby.Builtins.LibraryInitializer { + protected override void LoadModules() { + Ruby.Builtins.RubyClass classRef0 = GetClass(typeof(Ruby.Builtins.RubyIO)); + Ruby.Builtins.RubyClass classRef1 = GetClass(typeof(System.SystemException)); + + + #if !SILVERLIGHT + Ruby.Builtins.RubyClass def1 = DefineGlobalClass("BasicSocket", typeof(Ruby.StandardLibrary.Sockets.RubyBasicSocket), classRef0, new System.Action(LoadBasicSocket_Instance), new System.Action(LoadBasicSocket_Class), Ruby.Builtins.RubyModule.EmptyArray, null); + #endif + #if !SILVERLIGHT + DefineGlobalClass("SocketError", typeof(System.Net.Sockets.SocketException), classRef1, new System.Action(LoadSocketError_Instance), null, Ruby.Builtins.RubyModule.EmptyArray, new System.Delegate[] { + new Microsoft.Scripting.Utils.Function(Ruby.StandardLibrary.Sockets.SocketErrorOps.Factory), + }); + #endif + #if !SILVERLIGHT + Ruby.Builtins.RubyClass def3 = DefineGlobalClass("IPSocket", typeof(Ruby.StandardLibrary.Sockets.IPSocket), def1, new System.Action(LoadIPSocket_Instance), new System.Action(LoadIPSocket_Class), Ruby.Builtins.RubyModule.EmptyArray, null); + #endif + #if !SILVERLIGHT + DefineGlobalClass("Socket", typeof(Ruby.StandardLibrary.Sockets.RubySocket), def1, new System.Action(LoadSocket_Instance), new System.Action(LoadSocket_Class), Ruby.Builtins.RubyModule.EmptyArray, null); + #endif + #if !SILVERLIGHT + Ruby.Builtins.RubyClass def2 = DefineGlobalClass("TCPSocket", typeof(Ruby.StandardLibrary.Sockets.TCPSocket), def3, null, new System.Action(LoadTCPSocket_Class), Ruby.Builtins.RubyModule.EmptyArray, new System.Delegate[] { + new Microsoft.Scripting.Utils.Function(Ruby.StandardLibrary.Sockets.TCPSocket.CreateTCPSocket), + }); + #endif + #if !SILVERLIGHT + DefineGlobalClass("UDPSocket", typeof(Ruby.StandardLibrary.Sockets.UDPSocket), def3, new System.Action(LoadUDPSocket_Instance), null, Ruby.Builtins.RubyModule.EmptyArray, new System.Delegate[] { + new Microsoft.Scripting.Utils.Function(Ruby.StandardLibrary.Sockets.UDPSocket.CreateUDPSocket), + new Microsoft.Scripting.Utils.Function(Ruby.StandardLibrary.Sockets.UDPSocket.CreateUDPSocket), + }); + #endif + #if !SILVERLIGHT + DefineGlobalClass("TCPServer", typeof(Ruby.StandardLibrary.Sockets.TCPServer), def2, new System.Action(LoadTCPServer_Instance), null, Ruby.Builtins.RubyModule.EmptyArray, new System.Delegate[] { + new Microsoft.Scripting.Utils.Function(Ruby.StandardLibrary.Sockets.TCPServer.CreateTCPServer), + }); + #endif + } + #if !SILVERLIGHT + private void LoadBasicSocket_Instance(Ruby.Builtins.RubyModule/*!*/ module) { + + module.DefineMethod("close_read", 0x9, new System.Delegate[] { + new Microsoft.Scripting.Utils.Action(Ruby.StandardLibrary.Sockets.RubyBasicSocket.CloseRead), + }); + + module.DefineMethod("close_write", 0x9, new System.Delegate[] { + new Microsoft.Scripting.Utils.Action(Ruby.StandardLibrary.Sockets.RubyBasicSocket.CloseWrite), + }); + + module.DefineMethod("getpeername", 0x9, new System.Delegate[] { + new Microsoft.Scripting.Utils.Function(Ruby.StandardLibrary.Sockets.RubyBasicSocket.GetPeerName), + }); + + module.DefineMethod("getsockname", 0x9, new System.Delegate[] { + new Microsoft.Scripting.Utils.Function(Ruby.StandardLibrary.Sockets.RubyBasicSocket.GetSocketName), + }); + + module.DefineMethod("getsockopt", 0x9, new System.Delegate[] { + new Microsoft.Scripting.Utils.Function(Ruby.StandardLibrary.Sockets.RubyBasicSocket.GetSocketOption), + }); + + module.DefineMethod("recv", 0x9, new System.Delegate[] { + new Microsoft.Scripting.Utils.Function(Ruby.StandardLibrary.Sockets.RubyBasicSocket.Receive), + new Microsoft.Scripting.Utils.Function(Ruby.StandardLibrary.Sockets.RubyBasicSocket.Receive), + }); + + module.DefineMethod("recv_nonblock", 0x9, new System.Delegate[] { + new Microsoft.Scripting.Utils.Function(Ruby.StandardLibrary.Sockets.RubyBasicSocket.ReceiveNonBlocking), + new Microsoft.Scripting.Utils.Function(Ruby.StandardLibrary.Sockets.RubyBasicSocket.ReceiveNonBlocking), + }); + + module.DefineMethod("send", 0x9, new System.Delegate[] { + new Microsoft.Scripting.Utils.Function(Ruby.StandardLibrary.Sockets.RubyBasicSocket.Send), + new Microsoft.Scripting.Utils.Function(Ruby.StandardLibrary.Sockets.RubyBasicSocket.Send), + }); + + module.DefineMethod("setsockopt", 0x9, new System.Delegate[] { + new Microsoft.Scripting.Utils.Action(Ruby.StandardLibrary.Sockets.RubyBasicSocket.SetSocketOption), + new Microsoft.Scripting.Utils.Action(Ruby.StandardLibrary.Sockets.RubyBasicSocket.SetSocketOption), + new Microsoft.Scripting.Utils.Action(Ruby.StandardLibrary.Sockets.RubyBasicSocket.SetSocketOption), + }); + + module.DefineMethod("shutdown", 0x9, new System.Delegate[] { + new Microsoft.Scripting.Utils.Function(Ruby.StandardLibrary.Sockets.RubyBasicSocket.Shutdown), + new Microsoft.Scripting.Utils.Function(Ruby.StandardLibrary.Sockets.RubyBasicSocket.Shutdown), + new Microsoft.Scripting.Utils.Function(Ruby.StandardLibrary.Sockets.RubyBasicSocket.Shutdown), + }); + + } + #endif + + #if !SILVERLIGHT + private void LoadBasicSocket_Class(Ruby.Builtins.RubyModule/*!*/ module) { + + module.DefineMethod("do_not_reverse_lookup", 0x11, new System.Delegate[] { + new Microsoft.Scripting.Utils.Function(Ruby.StandardLibrary.Sockets.RubyBasicSocket.GetDoNotReverseLookup), + }); + + module.DefineMethod("do_not_reverse_lookup=", 0x11, new System.Delegate[] { + new Microsoft.Scripting.Utils.Action(Ruby.StandardLibrary.Sockets.RubyBasicSocket.SetDoNotReverseLookup), + }); + + module.DefineMethod("for_fd", 0x11, new System.Delegate[] { + new Microsoft.Scripting.Utils.Function(Ruby.StandardLibrary.Sockets.RubyBasicSocket.ForFileDescriptor), + }); + + } + #endif + + #if !SILVERLIGHT + private void LoadIPSocket_Instance(Ruby.Builtins.RubyModule/*!*/ module) { + + module.DefineMethod("addr", 0x9, new System.Delegate[] { + new Microsoft.Scripting.Utils.Function(Ruby.StandardLibrary.Sockets.IPSocket.GetLocalAddress), + }); + + module.DefineMethod("peeraddr", 0x9, new System.Delegate[] { + new Microsoft.Scripting.Utils.Function(Ruby.StandardLibrary.Sockets.IPSocket.GetPeerAddress), + }); + + module.DefineMethod("recvfrom", 0x9, new System.Delegate[] { + new Microsoft.Scripting.Utils.Function(Ruby.StandardLibrary.Sockets.IPSocket.ReceiveFrom), + new Microsoft.Scripting.Utils.Function(Ruby.StandardLibrary.Sockets.IPSocket.ReceiveFrom), + }); + + } + #endif + + #if !SILVERLIGHT + private void LoadIPSocket_Class(Ruby.Builtins.RubyModule/*!*/ module) { + + module.DefineMethod("getaddress", 0x11, new System.Delegate[] { + new Microsoft.Scripting.Utils.Function(Ruby.StandardLibrary.Sockets.IPSocket.GetAddress), + }); + + } + #endif + + #if !SILVERLIGHT + private void LoadSocket_Instance(Ruby.Builtins.RubyModule/*!*/ module) { + module.SetConstant("AF_APPLETALK", Ruby.StandardLibrary.Sockets.RubySocket.AF_APPLETALK); + module.SetConstant("AF_ATM", Ruby.StandardLibrary.Sockets.RubySocket.AF_ATM); + module.SetConstant("AF_CCITT", Ruby.StandardLibrary.Sockets.RubySocket.AF_CCITT); + module.SetConstant("AF_CHAOS", Ruby.StandardLibrary.Sockets.RubySocket.AF_CHAOS); + module.SetConstant("AF_DATAKIT", Ruby.StandardLibrary.Sockets.RubySocket.AF_DATAKIT); + module.SetConstant("AF_DLI", Ruby.StandardLibrary.Sockets.RubySocket.AF_DLI); + module.SetConstant("AF_ECMA", Ruby.StandardLibrary.Sockets.RubySocket.AF_ECMA); + module.SetConstant("AF_HYLINK", Ruby.StandardLibrary.Sockets.RubySocket.AF_HYLINK); + module.SetConstant("AF_IMPLINK", Ruby.StandardLibrary.Sockets.RubySocket.AF_IMPLINK); + module.SetConstant("AF_INET", Ruby.StandardLibrary.Sockets.RubySocket.AF_INET); + module.SetConstant("AF_IPX", Ruby.StandardLibrary.Sockets.RubySocket.AF_IPX); + module.SetConstant("AF_ISO", Ruby.StandardLibrary.Sockets.RubySocket.AF_ISO); + module.SetConstant("AF_LAT", Ruby.StandardLibrary.Sockets.RubySocket.AF_LAT); + module.SetConstant("AF_MAX", Ruby.StandardLibrary.Sockets.RubySocket.AF_MAX); + module.SetConstant("AF_NETBIOS", Ruby.StandardLibrary.Sockets.RubySocket.AF_NETBIOS); + module.SetConstant("AF_NS", Ruby.StandardLibrary.Sockets.RubySocket.AF_NS); + module.SetConstant("AF_OSI", Ruby.StandardLibrary.Sockets.RubySocket.AF_OSI); + module.SetConstant("AF_PUP", Ruby.StandardLibrary.Sockets.RubySocket.AF_PUP); + module.SetConstant("AF_SNA", Ruby.StandardLibrary.Sockets.RubySocket.AF_SNA); + module.SetConstant("AF_UNIX", Ruby.StandardLibrary.Sockets.RubySocket.AF_UNIX); + module.SetConstant("AF_UNSPEC", Ruby.StandardLibrary.Sockets.RubySocket.AF_UNSPEC); + module.SetConstant("AI_ADDRCONFIG", Ruby.StandardLibrary.Sockets.RubySocket.AI_ADDRCONFIG); + module.SetConstant("AI_ALL", Ruby.StandardLibrary.Sockets.RubySocket.AI_ALL); + module.SetConstant("AI_CANONNAME", Ruby.StandardLibrary.Sockets.RubySocket.AI_CANONNAME); + module.SetConstant("AI_DEFAULT", Ruby.StandardLibrary.Sockets.RubySocket.AI_DEFAULT); + module.SetConstant("AI_MASK", Ruby.StandardLibrary.Sockets.RubySocket.AI_MASK); + module.SetConstant("AI_NUMERICHOST", Ruby.StandardLibrary.Sockets.RubySocket.AI_NUMERICHOST); + module.SetConstant("AI_PASSIVE", Ruby.StandardLibrary.Sockets.RubySocket.AI_PASSIVE); + module.SetConstant("AI_V4MAPPED", Ruby.StandardLibrary.Sockets.RubySocket.AI_V4MAPPED); + module.SetConstant("AI_V4MAPPED_CFG", Ruby.StandardLibrary.Sockets.RubySocket.AI_V4MAPPED_CFG); + module.SetConstant("EAI_ADDRFAMILY", Ruby.StandardLibrary.Sockets.RubySocket.EAI_ADDRFAMILY); + module.SetConstant("EAI_AGAIN", Ruby.StandardLibrary.Sockets.RubySocket.EAI_AGAIN); + module.SetConstant("EAI_BADFLAGS", Ruby.StandardLibrary.Sockets.RubySocket.EAI_BADFLAGS); + module.SetConstant("EAI_BADHINTS", Ruby.StandardLibrary.Sockets.RubySocket.EAI_BADHINTS); + module.SetConstant("EAI_FAIL", Ruby.StandardLibrary.Sockets.RubySocket.EAI_FAIL); + module.SetConstant("EAI_FAMILY", Ruby.StandardLibrary.Sockets.RubySocket.EAI_FAMILY); + module.SetConstant("EAI_MAX", Ruby.StandardLibrary.Sockets.RubySocket.EAI_MAX); + module.SetConstant("EAI_MEMORY", Ruby.StandardLibrary.Sockets.RubySocket.EAI_MEMORY); + module.SetConstant("EAI_NODATA", Ruby.StandardLibrary.Sockets.RubySocket.EAI_NODATA); + module.SetConstant("EAI_NONAME", Ruby.StandardLibrary.Sockets.RubySocket.EAI_NONAME); + module.SetConstant("EAI_PROTOCOL", Ruby.StandardLibrary.Sockets.RubySocket.EAI_PROTOCOL); + module.SetConstant("EAI_SERVICE", Ruby.StandardLibrary.Sockets.RubySocket.EAI_SERVICE); + module.SetConstant("EAI_SOCKTYPE", Ruby.StandardLibrary.Sockets.RubySocket.EAI_SOCKTYPE); + module.SetConstant("EAI_SYSTEM", Ruby.StandardLibrary.Sockets.RubySocket.EAI_SYSTEM); + module.SetConstant("INADDR_ALLHOSTS_GROUP", Ruby.StandardLibrary.Sockets.RubySocket.INADDR_ALLHOSTS_GROUP); + module.SetConstant("INADDR_ANY", Ruby.StandardLibrary.Sockets.RubySocket.INADDR_ANY); + module.SetConstant("INADDR_BROADCAST", Ruby.StandardLibrary.Sockets.RubySocket.INADDR_BROADCAST); + module.SetConstant("INADDR_LOOPBACK", Ruby.StandardLibrary.Sockets.RubySocket.INADDR_LOOPBACK); + module.SetConstant("INADDR_MAX_LOCAL_GROUP", Ruby.StandardLibrary.Sockets.RubySocket.INADDR_MAX_LOCAL_GROUP); + module.SetConstant("INADDR_NONE", Ruby.StandardLibrary.Sockets.RubySocket.INADDR_NONE); + module.SetConstant("INADDR_UNSPEC_GROUP", Ruby.StandardLibrary.Sockets.RubySocket.INADDR_UNSPEC_GROUP); + module.SetConstant("IPPORT_RESERVED", Ruby.StandardLibrary.Sockets.RubySocket.IPPORT_RESERVED); + module.SetConstant("IPPORT_USERRESERVED", Ruby.StandardLibrary.Sockets.RubySocket.IPPORT_USERRESERVED); + module.SetConstant("IPPROTO_GGP", Ruby.StandardLibrary.Sockets.RubySocket.IPPROTO_GGP); + module.SetConstant("IPPROTO_ICMP", Ruby.StandardLibrary.Sockets.RubySocket.IPPROTO_ICMP); + module.SetConstant("IPPROTO_IDP", Ruby.StandardLibrary.Sockets.RubySocket.IPPROTO_IDP); + module.SetConstant("IPPROTO_IGMP", Ruby.StandardLibrary.Sockets.RubySocket.IPPROTO_IGMP); + module.SetConstant("IPPROTO_IP", Ruby.StandardLibrary.Sockets.RubySocket.IPPROTO_IP); + module.SetConstant("IPPROTO_MAX", Ruby.StandardLibrary.Sockets.RubySocket.IPPROTO_MAX); + module.SetConstant("IPPROTO_ND", Ruby.StandardLibrary.Sockets.RubySocket.IPPROTO_ND); + module.SetConstant("IPPROTO_PUP", Ruby.StandardLibrary.Sockets.RubySocket.IPPROTO_PUP); + module.SetConstant("IPPROTO_RAW", Ruby.StandardLibrary.Sockets.RubySocket.IPPROTO_RAW); + module.SetConstant("IPPROTO_TCP", Ruby.StandardLibrary.Sockets.RubySocket.IPPROTO_TCP); + module.SetConstant("IPPROTO_UDP", Ruby.StandardLibrary.Sockets.RubySocket.IPPROTO_UDP); + module.SetConstant("MSG_DONTROUTE", Ruby.StandardLibrary.Sockets.RubySocket.MSG_DONTROUTE); + module.SetConstant("MSG_OOB", Ruby.StandardLibrary.Sockets.RubySocket.MSG_OOB); + module.SetConstant("MSG_PEEK", Ruby.StandardLibrary.Sockets.RubySocket.MSG_PEEK); + module.SetConstant("NI_DGRAM", Ruby.StandardLibrary.Sockets.RubySocket.NI_DGRAM); + module.SetConstant("NI_MAXHOST", Ruby.StandardLibrary.Sockets.RubySocket.NI_MAXHOST); + module.SetConstant("NI_MAXSERV", Ruby.StandardLibrary.Sockets.RubySocket.NI_MAXSERV); + module.SetConstant("NI_NAMEREQD", Ruby.StandardLibrary.Sockets.RubySocket.NI_NAMEREQD); + module.SetConstant("NI_NOFQDN", Ruby.StandardLibrary.Sockets.RubySocket.NI_NOFQDN); + module.SetConstant("NI_NUMERICHOST", Ruby.StandardLibrary.Sockets.RubySocket.NI_NUMERICHOST); + module.SetConstant("NI_NUMERICSERV", Ruby.StandardLibrary.Sockets.RubySocket.NI_NUMERICSERV); + module.SetConstant("PF_APPLETALK", Ruby.StandardLibrary.Sockets.RubySocket.PF_APPLETALK); + module.SetConstant("PF_ATM", Ruby.StandardLibrary.Sockets.RubySocket.PF_ATM); + module.SetConstant("PF_CCITT", Ruby.StandardLibrary.Sockets.RubySocket.PF_CCITT); + module.SetConstant("PF_CHAOS", Ruby.StandardLibrary.Sockets.RubySocket.PF_CHAOS); + module.SetConstant("PF_DATAKIT", Ruby.StandardLibrary.Sockets.RubySocket.PF_DATAKIT); + module.SetConstant("PF_DLI", Ruby.StandardLibrary.Sockets.RubySocket.PF_DLI); + module.SetConstant("PF_ECMA", Ruby.StandardLibrary.Sockets.RubySocket.PF_ECMA); + module.SetConstant("PF_HYLINK", Ruby.StandardLibrary.Sockets.RubySocket.PF_HYLINK); + module.SetConstant("PF_IMPLINK", Ruby.StandardLibrary.Sockets.RubySocket.PF_IMPLINK); + module.SetConstant("PF_INET", Ruby.StandardLibrary.Sockets.RubySocket.PF_INET); + module.SetConstant("PF_IPX", Ruby.StandardLibrary.Sockets.RubySocket.PF_IPX); + module.SetConstant("PF_ISO", Ruby.StandardLibrary.Sockets.RubySocket.PF_ISO); + module.SetConstant("PF_LAT", Ruby.StandardLibrary.Sockets.RubySocket.PF_LAT); + module.SetConstant("PF_MAX", Ruby.StandardLibrary.Sockets.RubySocket.PF_MAX); + module.SetConstant("PF_NS", Ruby.StandardLibrary.Sockets.RubySocket.PF_NS); + module.SetConstant("PF_OSI", Ruby.StandardLibrary.Sockets.RubySocket.PF_OSI); + module.SetConstant("PF_PUP", Ruby.StandardLibrary.Sockets.RubySocket.PF_PUP); + module.SetConstant("PF_SNA", Ruby.StandardLibrary.Sockets.RubySocket.PF_SNA); + module.SetConstant("PF_UNIX", Ruby.StandardLibrary.Sockets.RubySocket.PF_UNIX); + module.SetConstant("PF_UNSPEC", Ruby.StandardLibrary.Sockets.RubySocket.PF_UNSPEC); + module.SetConstant("SHUT_RD", Ruby.StandardLibrary.Sockets.RubySocket.SHUT_RD); + module.SetConstant("SHUT_RDWR", Ruby.StandardLibrary.Sockets.RubySocket.SHUT_RDWR); + module.SetConstant("SHUT_WR", Ruby.StandardLibrary.Sockets.RubySocket.SHUT_WR); + module.SetConstant("SO_ACCEPTCONN", Ruby.StandardLibrary.Sockets.RubySocket.SO_ACCEPTCONN); + module.SetConstant("SO_BROADCAST", Ruby.StandardLibrary.Sockets.RubySocket.SO_BROADCAST); + module.SetConstant("SO_DEBUG", Ruby.StandardLibrary.Sockets.RubySocket.SO_DEBUG); + module.SetConstant("SO_DONTROUTE", Ruby.StandardLibrary.Sockets.RubySocket.SO_DONTROUTE); + module.SetConstant("SO_ERROR", Ruby.StandardLibrary.Sockets.RubySocket.SO_ERROR); + module.SetConstant("SO_KEEPALIVE", Ruby.StandardLibrary.Sockets.RubySocket.SO_KEEPALIVE); + module.SetConstant("SO_LINGER", Ruby.StandardLibrary.Sockets.RubySocket.SO_LINGER); + module.SetConstant("SO_OOBINLINE", Ruby.StandardLibrary.Sockets.RubySocket.SO_OOBINLINE); + module.SetConstant("SO_RCVBUF", Ruby.StandardLibrary.Sockets.RubySocket.SO_RCVBUF); + module.SetConstant("SO_RCVLOWAT", Ruby.StandardLibrary.Sockets.RubySocket.SO_RCVLOWAT); + module.SetConstant("SO_RCVTIMEO", Ruby.StandardLibrary.Sockets.RubySocket.SO_RCVTIMEO); + module.SetConstant("SO_REUSEADDR", Ruby.StandardLibrary.Sockets.RubySocket.SO_REUSEADDR); + module.SetConstant("SO_SNDBUF", Ruby.StandardLibrary.Sockets.RubySocket.SO_SNDBUF); + module.SetConstant("SO_SNDLOWAT", Ruby.StandardLibrary.Sockets.RubySocket.SO_SNDLOWAT); + module.SetConstant("SO_SNDTIMEO", Ruby.StandardLibrary.Sockets.RubySocket.SO_SNDTIMEO); + module.SetConstant("SO_TYPE", Ruby.StandardLibrary.Sockets.RubySocket.SO_TYPE); + module.SetConstant("SO_USELOOPBACK", Ruby.StandardLibrary.Sockets.RubySocket.SO_USELOOPBACK); + module.SetConstant("SOCK_DGRAM", Ruby.StandardLibrary.Sockets.RubySocket.SOCK_DGRAM); + module.SetConstant("SOCK_RAW", Ruby.StandardLibrary.Sockets.RubySocket.SOCK_RAW); + module.SetConstant("SOCK_RDM", Ruby.StandardLibrary.Sockets.RubySocket.SOCK_RDM); + module.SetConstant("SOCK_SEQPACKET", Ruby.StandardLibrary.Sockets.RubySocket.SOCK_SEQPACKET); + module.SetConstant("SOCK_STREAM", Ruby.StandardLibrary.Sockets.RubySocket.SOCK_STREAM); + module.SetConstant("SOL_SOCKET", Ruby.StandardLibrary.Sockets.RubySocket.SOL_SOCKET); + module.SetConstant("TCP_NODELAY", Ruby.StandardLibrary.Sockets.RubySocket.TCP_NODELAY); + + } + #endif + + #if !SILVERLIGHT + private void LoadSocket_Class(Ruby.Builtins.RubyModule/*!*/ module) { + module.SetConstant("AF_APPLETALK", Ruby.StandardLibrary.Sockets.RubySocket.AF_APPLETALK); + module.SetConstant("AF_ATM", Ruby.StandardLibrary.Sockets.RubySocket.AF_ATM); + module.SetConstant("AF_CCITT", Ruby.StandardLibrary.Sockets.RubySocket.AF_CCITT); + module.SetConstant("AF_CHAOS", Ruby.StandardLibrary.Sockets.RubySocket.AF_CHAOS); + module.SetConstant("AF_DATAKIT", Ruby.StandardLibrary.Sockets.RubySocket.AF_DATAKIT); + module.SetConstant("AF_DLI", Ruby.StandardLibrary.Sockets.RubySocket.AF_DLI); + module.SetConstant("AF_ECMA", Ruby.StandardLibrary.Sockets.RubySocket.AF_ECMA); + module.SetConstant("AF_HYLINK", Ruby.StandardLibrary.Sockets.RubySocket.AF_HYLINK); + module.SetConstant("AF_IMPLINK", Ruby.StandardLibrary.Sockets.RubySocket.AF_IMPLINK); + module.SetConstant("AF_INET", Ruby.StandardLibrary.Sockets.RubySocket.AF_INET); + module.SetConstant("AF_IPX", Ruby.StandardLibrary.Sockets.RubySocket.AF_IPX); + module.SetConstant("AF_ISO", Ruby.StandardLibrary.Sockets.RubySocket.AF_ISO); + module.SetConstant("AF_LAT", Ruby.StandardLibrary.Sockets.RubySocket.AF_LAT); + module.SetConstant("AF_MAX", Ruby.StandardLibrary.Sockets.RubySocket.AF_MAX); + module.SetConstant("AF_NETBIOS", Ruby.StandardLibrary.Sockets.RubySocket.AF_NETBIOS); + module.SetConstant("AF_NS", Ruby.StandardLibrary.Sockets.RubySocket.AF_NS); + module.SetConstant("AF_OSI", Ruby.StandardLibrary.Sockets.RubySocket.AF_OSI); + module.SetConstant("AF_PUP", Ruby.StandardLibrary.Sockets.RubySocket.AF_PUP); + module.SetConstant("AF_SNA", Ruby.StandardLibrary.Sockets.RubySocket.AF_SNA); + module.SetConstant("AF_UNIX", Ruby.StandardLibrary.Sockets.RubySocket.AF_UNIX); + module.SetConstant("AF_UNSPEC", Ruby.StandardLibrary.Sockets.RubySocket.AF_UNSPEC); + module.SetConstant("AI_ADDRCONFIG", Ruby.StandardLibrary.Sockets.RubySocket.AI_ADDRCONFIG); + module.SetConstant("AI_ALL", Ruby.StandardLibrary.Sockets.RubySocket.AI_ALL); + module.SetConstant("AI_CANONNAME", Ruby.StandardLibrary.Sockets.RubySocket.AI_CANONNAME); + module.SetConstant("AI_DEFAULT", Ruby.StandardLibrary.Sockets.RubySocket.AI_DEFAULT); + module.SetConstant("AI_MASK", Ruby.StandardLibrary.Sockets.RubySocket.AI_MASK); + module.SetConstant("AI_NUMERICHOST", Ruby.StandardLibrary.Sockets.RubySocket.AI_NUMERICHOST); + module.SetConstant("AI_PASSIVE", Ruby.StandardLibrary.Sockets.RubySocket.AI_PASSIVE); + module.SetConstant("AI_V4MAPPED", Ruby.StandardLibrary.Sockets.RubySocket.AI_V4MAPPED); + module.SetConstant("AI_V4MAPPED_CFG", Ruby.StandardLibrary.Sockets.RubySocket.AI_V4MAPPED_CFG); + module.SetConstant("EAI_ADDRFAMILY", Ruby.StandardLibrary.Sockets.RubySocket.EAI_ADDRFAMILY); + module.SetConstant("EAI_AGAIN", Ruby.StandardLibrary.Sockets.RubySocket.EAI_AGAIN); + module.SetConstant("EAI_BADFLAGS", Ruby.StandardLibrary.Sockets.RubySocket.EAI_BADFLAGS); + module.SetConstant("EAI_BADHINTS", Ruby.StandardLibrary.Sockets.RubySocket.EAI_BADHINTS); + module.SetConstant("EAI_FAIL", Ruby.StandardLibrary.Sockets.RubySocket.EAI_FAIL); + module.SetConstant("EAI_FAMILY", Ruby.StandardLibrary.Sockets.RubySocket.EAI_FAMILY); + module.SetConstant("EAI_MAX", Ruby.StandardLibrary.Sockets.RubySocket.EAI_MAX); + module.SetConstant("EAI_MEMORY", Ruby.StandardLibrary.Sockets.RubySocket.EAI_MEMORY); + module.SetConstant("EAI_NODATA", Ruby.StandardLibrary.Sockets.RubySocket.EAI_NODATA); + module.SetConstant("EAI_NONAME", Ruby.StandardLibrary.Sockets.RubySocket.EAI_NONAME); + module.SetConstant("EAI_PROTOCOL", Ruby.StandardLibrary.Sockets.RubySocket.EAI_PROTOCOL); + module.SetConstant("EAI_SERVICE", Ruby.StandardLibrary.Sockets.RubySocket.EAI_SERVICE); + module.SetConstant("EAI_SOCKTYPE", Ruby.StandardLibrary.Sockets.RubySocket.EAI_SOCKTYPE); + module.SetConstant("EAI_SYSTEM", Ruby.StandardLibrary.Sockets.RubySocket.EAI_SYSTEM); + module.SetConstant("INADDR_ALLHOSTS_GROUP", Ruby.StandardLibrary.Sockets.RubySocket.INADDR_ALLHOSTS_GROUP); + module.SetConstant("INADDR_ANY", Ruby.StandardLibrary.Sockets.RubySocket.INADDR_ANY); + module.SetConstant("INADDR_BROADCAST", Ruby.StandardLibrary.Sockets.RubySocket.INADDR_BROADCAST); + module.SetConstant("INADDR_LOOPBACK", Ruby.StandardLibrary.Sockets.RubySocket.INADDR_LOOPBACK); + module.SetConstant("INADDR_MAX_LOCAL_GROUP", Ruby.StandardLibrary.Sockets.RubySocket.INADDR_MAX_LOCAL_GROUP); + module.SetConstant("INADDR_NONE", Ruby.StandardLibrary.Sockets.RubySocket.INADDR_NONE); + module.SetConstant("INADDR_UNSPEC_GROUP", Ruby.StandardLibrary.Sockets.RubySocket.INADDR_UNSPEC_GROUP); + module.SetConstant("IPPORT_RESERVED", Ruby.StandardLibrary.Sockets.RubySocket.IPPORT_RESERVED); + module.SetConstant("IPPORT_USERRESERVED", Ruby.StandardLibrary.Sockets.RubySocket.IPPORT_USERRESERVED); + module.SetConstant("IPPROTO_GGP", Ruby.StandardLibrary.Sockets.RubySocket.IPPROTO_GGP); + module.SetConstant("IPPROTO_ICMP", Ruby.StandardLibrary.Sockets.RubySocket.IPPROTO_ICMP); + module.SetConstant("IPPROTO_IDP", Ruby.StandardLibrary.Sockets.RubySocket.IPPROTO_IDP); + module.SetConstant("IPPROTO_IGMP", Ruby.StandardLibrary.Sockets.RubySocket.IPPROTO_IGMP); + module.SetConstant("IPPROTO_IP", Ruby.StandardLibrary.Sockets.RubySocket.IPPROTO_IP); + module.SetConstant("IPPROTO_MAX", Ruby.StandardLibrary.Sockets.RubySocket.IPPROTO_MAX); + module.SetConstant("IPPROTO_ND", Ruby.StandardLibrary.Sockets.RubySocket.IPPROTO_ND); + module.SetConstant("IPPROTO_PUP", Ruby.StandardLibrary.Sockets.RubySocket.IPPROTO_PUP); + module.SetConstant("IPPROTO_RAW", Ruby.StandardLibrary.Sockets.RubySocket.IPPROTO_RAW); + module.SetConstant("IPPROTO_TCP", Ruby.StandardLibrary.Sockets.RubySocket.IPPROTO_TCP); + module.SetConstant("IPPROTO_UDP", Ruby.StandardLibrary.Sockets.RubySocket.IPPROTO_UDP); + module.SetConstant("MSG_DONTROUTE", Ruby.StandardLibrary.Sockets.RubySocket.MSG_DONTROUTE); + module.SetConstant("MSG_OOB", Ruby.StandardLibrary.Sockets.RubySocket.MSG_OOB); + module.SetConstant("MSG_PEEK", Ruby.StandardLibrary.Sockets.RubySocket.MSG_PEEK); + module.SetConstant("NI_DGRAM", Ruby.StandardLibrary.Sockets.RubySocket.NI_DGRAM); + module.SetConstant("NI_MAXHOST", Ruby.StandardLibrary.Sockets.RubySocket.NI_MAXHOST); + module.SetConstant("NI_MAXSERV", Ruby.StandardLibrary.Sockets.RubySocket.NI_MAXSERV); + module.SetConstant("NI_NAMEREQD", Ruby.StandardLibrary.Sockets.RubySocket.NI_NAMEREQD); + module.SetConstant("NI_NOFQDN", Ruby.StandardLibrary.Sockets.RubySocket.NI_NOFQDN); + module.SetConstant("NI_NUMERICHOST", Ruby.StandardLibrary.Sockets.RubySocket.NI_NUMERICHOST); + module.SetConstant("NI_NUMERICSERV", Ruby.StandardLibrary.Sockets.RubySocket.NI_NUMERICSERV); + module.SetConstant("PF_APPLETALK", Ruby.StandardLibrary.Sockets.RubySocket.PF_APPLETALK); + module.SetConstant("PF_ATM", Ruby.StandardLibrary.Sockets.RubySocket.PF_ATM); + module.SetConstant("PF_CCITT", Ruby.StandardLibrary.Sockets.RubySocket.PF_CCITT); + module.SetConstant("PF_CHAOS", Ruby.StandardLibrary.Sockets.RubySocket.PF_CHAOS); + module.SetConstant("PF_DATAKIT", Ruby.StandardLibrary.Sockets.RubySocket.PF_DATAKIT); + module.SetConstant("PF_DLI", Ruby.StandardLibrary.Sockets.RubySocket.PF_DLI); + module.SetConstant("PF_ECMA", Ruby.StandardLibrary.Sockets.RubySocket.PF_ECMA); + module.SetConstant("PF_HYLINK", Ruby.StandardLibrary.Sockets.RubySocket.PF_HYLINK); + module.SetConstant("PF_IMPLINK", Ruby.StandardLibrary.Sockets.RubySocket.PF_IMPLINK); + module.SetConstant("PF_INET", Ruby.StandardLibrary.Sockets.RubySocket.PF_INET); + module.SetConstant("PF_IPX", Ruby.StandardLibrary.Sockets.RubySocket.PF_IPX); + module.SetConstant("PF_ISO", Ruby.StandardLibrary.Sockets.RubySocket.PF_ISO); + module.SetConstant("PF_LAT", Ruby.StandardLibrary.Sockets.RubySocket.PF_LAT); + module.SetConstant("PF_MAX", Ruby.StandardLibrary.Sockets.RubySocket.PF_MAX); + module.SetConstant("PF_NS", Ruby.StandardLibrary.Sockets.RubySocket.PF_NS); + module.SetConstant("PF_OSI", Ruby.StandardLibrary.Sockets.RubySocket.PF_OSI); + module.SetConstant("PF_PUP", Ruby.StandardLibrary.Sockets.RubySocket.PF_PUP); + module.SetConstant("PF_SNA", Ruby.StandardLibrary.Sockets.RubySocket.PF_SNA); + module.SetConstant("PF_UNIX", Ruby.StandardLibrary.Sockets.RubySocket.PF_UNIX); + module.SetConstant("PF_UNSPEC", Ruby.StandardLibrary.Sockets.RubySocket.PF_UNSPEC); + module.SetConstant("SHUT_RD", Ruby.StandardLibrary.Sockets.RubySocket.SHUT_RD); + module.SetConstant("SHUT_RDWR", Ruby.StandardLibrary.Sockets.RubySocket.SHUT_RDWR); + module.SetConstant("SHUT_WR", Ruby.StandardLibrary.Sockets.RubySocket.SHUT_WR); + module.SetConstant("SO_ACCEPTCONN", Ruby.StandardLibrary.Sockets.RubySocket.SO_ACCEPTCONN); + module.SetConstant("SO_BROADCAST", Ruby.StandardLibrary.Sockets.RubySocket.SO_BROADCAST); + module.SetConstant("SO_DEBUG", Ruby.StandardLibrary.Sockets.RubySocket.SO_DEBUG); + module.SetConstant("SO_DONTROUTE", Ruby.StandardLibrary.Sockets.RubySocket.SO_DONTROUTE); + module.SetConstant("SO_ERROR", Ruby.StandardLibrary.Sockets.RubySocket.SO_ERROR); + module.SetConstant("SO_KEEPALIVE", Ruby.StandardLibrary.Sockets.RubySocket.SO_KEEPALIVE); + module.SetConstant("SO_LINGER", Ruby.StandardLibrary.Sockets.RubySocket.SO_LINGER); + module.SetConstant("SO_OOBINLINE", Ruby.StandardLibrary.Sockets.RubySocket.SO_OOBINLINE); + module.SetConstant("SO_RCVBUF", Ruby.StandardLibrary.Sockets.RubySocket.SO_RCVBUF); + module.SetConstant("SO_RCVLOWAT", Ruby.StandardLibrary.Sockets.RubySocket.SO_RCVLOWAT); + module.SetConstant("SO_RCVTIMEO", Ruby.StandardLibrary.Sockets.RubySocket.SO_RCVTIMEO); + module.SetConstant("SO_REUSEADDR", Ruby.StandardLibrary.Sockets.RubySocket.SO_REUSEADDR); + module.SetConstant("SO_SNDBUF", Ruby.StandardLibrary.Sockets.RubySocket.SO_SNDBUF); + module.SetConstant("SO_SNDLOWAT", Ruby.StandardLibrary.Sockets.RubySocket.SO_SNDLOWAT); + module.SetConstant("SO_SNDTIMEO", Ruby.StandardLibrary.Sockets.RubySocket.SO_SNDTIMEO); + module.SetConstant("SO_TYPE", Ruby.StandardLibrary.Sockets.RubySocket.SO_TYPE); + module.SetConstant("SO_USELOOPBACK", Ruby.StandardLibrary.Sockets.RubySocket.SO_USELOOPBACK); + module.SetConstant("SOCK_DGRAM", Ruby.StandardLibrary.Sockets.RubySocket.SOCK_DGRAM); + module.SetConstant("SOCK_RAW", Ruby.StandardLibrary.Sockets.RubySocket.SOCK_RAW); + module.SetConstant("SOCK_RDM", Ruby.StandardLibrary.Sockets.RubySocket.SOCK_RDM); + module.SetConstant("SOCK_SEQPACKET", Ruby.StandardLibrary.Sockets.RubySocket.SOCK_SEQPACKET); + module.SetConstant("SOCK_STREAM", Ruby.StandardLibrary.Sockets.RubySocket.SOCK_STREAM); + module.SetConstant("SOL_SOCKET", Ruby.StandardLibrary.Sockets.RubySocket.SOL_SOCKET); + module.SetConstant("TCP_NODELAY", Ruby.StandardLibrary.Sockets.RubySocket.TCP_NODELAY); + + module.DefineMethod("getaddrinfo", 0x11, new System.Delegate[] { + new Microsoft.Scripting.Utils.Function(Ruby.StandardLibrary.Sockets.RubySocket.GetAddressInfo), + }); + + } + #endif + + #if !SILVERLIGHT + private void LoadSocketError_Instance(Ruby.Builtins.RubyModule/*!*/ module) { + + module.HideMethod("message"); + } + #endif + + #if !SILVERLIGHT + private void LoadTCPServer_Instance(Ruby.Builtins.RubyModule/*!*/ module) { + + module.DefineMethod("accept", 0x9, new System.Delegate[] { + new Microsoft.Scripting.Utils.Function(Ruby.StandardLibrary.Sockets.TCPServer.Accept), + }); + + module.DefineMethod("accept_nonblock", 0x9, new System.Delegate[] { + new Microsoft.Scripting.Utils.Function(Ruby.StandardLibrary.Sockets.TCPServer.AcceptNonBlocking), + }); + + module.DefineMethod("listen", 0x9, new System.Delegate[] { + new Microsoft.Scripting.Utils.Action(Ruby.StandardLibrary.Sockets.TCPServer.Listen), + }); + + module.DefineMethod("sysaccept", 0x9, new System.Delegate[] { + new Microsoft.Scripting.Utils.Function(Ruby.StandardLibrary.Sockets.TCPServer.SysAccept), + }); + + } + #endif + + #if !SILVERLIGHT + private void LoadTCPSocket_Class(Ruby.Builtins.RubyModule/*!*/ module) { + + module.DefineMethod("gethostbyname", 0x11, new System.Delegate[] { + new Microsoft.Scripting.Utils.Function(Ruby.StandardLibrary.Sockets.TCPSocket.GetHostByName), + }); + + } + #endif + + #if !SILVERLIGHT private void LoadUDPSocket_Instance(Ruby.Builtins.RubyModule/*!*/ module) { module.DefineMethod("bind", 0x9, new System.Delegate[] { - new Microsoft.Scripting.Utils.Function(Ruby.StandardLibrary.UDPSocket.Bind), + new Microsoft.Scripting.Utils.Function(Ruby.StandardLibrary.Sockets.UDPSocket.Bind), }); module.DefineMethod("connect", 0x9, new System.Delegate[] { - new Microsoft.Scripting.Utils.Function(Ruby.StandardLibrary.UDPSocket.Connect), + new Microsoft.Scripting.Utils.Function(Ruby.StandardLibrary.Sockets.UDPSocket.Connect), }); module.DefineMethod("recvfrom_nonblock", 0x9, new System.Delegate[] { - new Microsoft.Scripting.Utils.Function(Ruby.StandardLibrary.UDPSocket.ReceiveFromNonBlocking), - new Microsoft.Scripting.Utils.Function(Ruby.StandardLibrary.UDPSocket.ReceiveFromNonBlocking), + new Microsoft.Scripting.Utils.Function(Ruby.StandardLibrary.Sockets.UDPSocket.ReceiveFromNonBlocking), + new Microsoft.Scripting.Utils.Function(Ruby.StandardLibrary.Sockets.UDPSocket.ReceiveFromNonBlocking), }); module.DefineMethod("send", 0x9, new System.Delegate[] { - new Microsoft.Scripting.Utils.Function(Ruby.StandardLibrary.UDPSocket.Send), - new Microsoft.Scripting.Utils.Function(Ruby.StandardLibrary.UDPSocket.Send), - new Microsoft.Scripting.Utils.Function(Ruby.StandardLibrary.UDPSocket.Send), + new Microsoft.Scripting.Utils.Function(Ruby.StandardLibrary.Sockets.UDPSocket.Send), + new Microsoft.Scripting.Utils.Function(Ruby.StandardLibrary.Sockets.UDPSocket.Send), + new Microsoft.Scripting.Utils.Function(Ruby.StandardLibrary.Sockets.UDPSocket.Send), }); } #endif - private void LoadUnboundMethod_Instance(Ruby.Builtins.RubyModule/*!*/ module) { + } +} + +namespace Ruby.StandardLibrary.OpenSsl { + public sealed class OpenSslLibraryInitializer : Ruby.Builtins.LibraryInitializer { + protected override void LoadModules() { + Ruby.Builtins.RubyClass classRef0 = GetClass(typeof(System.Object)); - module.DefineMethod("==", 0x9, new System.Delegate[] { - new Microsoft.Scripting.Utils.Function(Ruby.Builtins.UnboundMethod.Equal), - new Microsoft.Scripting.Utils.Function(Ruby.Builtins.UnboundMethod.Equal), + + Ruby.Builtins.RubyModule def1 = DefineGlobalModule("OpenSSL", typeof(Ruby.StandardLibrary.OpenSsl.OpenSsl), null, null, Ruby.Builtins.RubyModule.EmptyArray); + Ruby.Builtins.RubyModule def2 = DefineModule("OpenSSL::Digest", typeof(Ruby.StandardLibrary.OpenSsl.OpenSsl.DigestFactory), null, null, Ruby.Builtins.RubyModule.EmptyArray); + Ruby.Builtins.RubyClass def3 = DefineClass("OpenSSL::Digest::Digest", typeof(Ruby.StandardLibrary.OpenSsl.OpenSsl.DigestFactory.Digest), classRef0, new System.Action(LoadOpenSSL__Digest__Digest_Instance), null, Ruby.Builtins.RubyModule.EmptyArray, null); + Ruby.Builtins.RubyClass def4 = DefineClass("OpenSSL::HMAC", typeof(Ruby.StandardLibrary.OpenSsl.OpenSsl.HMAC), classRef0, null, new System.Action(LoadOpenSSL__HMAC_Class), Ruby.Builtins.RubyModule.EmptyArray, null); + def1.SetConstant("Digest", def2); + def2.SetConstant("Digest", def3); + def1.SetConstant("HMAC", def4); + } + + private void LoadOpenSSL__Digest__Digest_Instance(Ruby.Builtins.RubyModule/*!*/ module) { + + module.DefineMethod("initialize", 0xa, new System.Delegate[] { + new Microsoft.Scripting.Utils.Function(Ruby.StandardLibrary.OpenSsl.OpenSsl.DigestFactory.Digest.Initialize), }); - module.DefineMethod("arity", 0x9, new System.Delegate[] { - new Microsoft.Scripting.Utils.Function(Ruby.Builtins.UnboundMethod.GetArity), + } + + private void LoadOpenSSL__HMAC_Class(Ruby.Builtins.RubyModule/*!*/ module) { + + module.DefineMethod("hexdigest", 0x11, new System.Delegate[] { + new Microsoft.Scripting.Utils.Function(Ruby.StandardLibrary.OpenSsl.OpenSsl.HMAC.HexDigest), }); - module.DefineMethod("bind", 0x9, new System.Delegate[] { - new Microsoft.Scripting.Utils.Function(Ruby.Builtins.UnboundMethod.Bind), + } + + } +} + +namespace Ruby.StandardLibrary.Digest { + public sealed class DigestLibraryInitializer : Ruby.Builtins.LibraryInitializer { + protected override void LoadModules() { + Ruby.Builtins.RubyClass classRef0 = GetClass(typeof(System.Object)); + + + Ruby.Builtins.RubyModule def1 = DefineGlobalModule("Digest", typeof(Ruby.StandardLibrary.Digest.Digest), null, new System.Action(LoadDigest_Class), Ruby.Builtins.RubyModule.EmptyArray); + Ruby.Builtins.RubyModule def4 = DefineModule("Digest::Instance", typeof(Ruby.StandardLibrary.Digest.Digest.Instance), new System.Action(LoadDigest__Instance_Instance), null, Ruby.Builtins.RubyModule.EmptyArray); + Ruby.Builtins.RubyClass def3 = DefineClass("Digest::Class", typeof(Ruby.StandardLibrary.Digest.Digest.Class), classRef0, null, new System.Action(LoadDigest__Class_Class), new Ruby.Builtins.RubyModule[] {def4, }, null); + Ruby.Builtins.RubyClass def2 = DefineClass("Digest::Base", typeof(Ruby.StandardLibrary.Digest.Digest.Base), def3, new System.Action(LoadDigest__Base_Instance), null, Ruby.Builtins.RubyModule.EmptyArray, null); + #if !SILVERLIGHT + Ruby.Builtins.RubyClass def5 = DefineClass("Digest::MD5", typeof(Ruby.StandardLibrary.Digest.Digest.MD5), def2, null, null, Ruby.Builtins.RubyModule.EmptyArray, null); + #endif + def1.SetConstant("Instance", def4); + def1.SetConstant("Class", def3); + def1.SetConstant("Base", def2); + #if !SILVERLIGHT + def1.SetConstant("MD5", def5); + #endif + } + + private void LoadDigest_Class(Ruby.Builtins.RubyModule/*!*/ module) { + + module.DefineMethod("const_missing", 0x11, new System.Delegate[] { + new Microsoft.Scripting.Utils.Function(Ruby.StandardLibrary.Digest.Digest.ConstantMissing), }); - module.DefineMethod("clone", 0x9, new System.Delegate[] { - new Microsoft.Scripting.Utils.Function(Ruby.Builtins.UnboundMethod.Clone), + module.DefineMethod("hexencode", 0x11, new System.Delegate[] { + new Microsoft.Scripting.Utils.Function(Ruby.StandardLibrary.Digest.Digest.HexEncode), }); - module.DefineMethod("to_s", 0x9, new System.Delegate[] { - new Microsoft.Scripting.Utils.Function(Ruby.Builtins.UnboundMethod.ToS), + } + + private void LoadDigest__Base_Instance(Ruby.Builtins.RubyModule/*!*/ module) { + + module.DefineMethod("<<", 0x9, new System.Delegate[] { + new Microsoft.Scripting.Utils.Function(Ruby.StandardLibrary.Digest.Digest.Base.Update), }); + module.DefineMethod("finish", 0xa, new System.Delegate[] { + new Microsoft.Scripting.Utils.Function(Ruby.StandardLibrary.Digest.Digest.Base.Finish), + }); + + module.DefineMethod("reset", 0x9, new System.Delegate[] { + new Microsoft.Scripting.Utils.Function(Ruby.StandardLibrary.Digest.Digest.Base.Reset), + }); + + module.DefineMethod("update", 0x9, new System.Delegate[] { + new Microsoft.Scripting.Utils.Function(Ruby.StandardLibrary.Digest.Digest.Base.Update), + }); + } + private void LoadDigest__Class_Class(Ruby.Builtins.RubyModule/*!*/ module) { + + module.DefineMethod("digest", 0x11, new System.Delegate[] { + new Microsoft.Scripting.Utils.Function(Ruby.StandardLibrary.Digest.Digest.Class.Digest), + }); + + module.DefineMethod("hexdigest", 0x11, new System.Delegate[] { + new Microsoft.Scripting.Utils.Function(Ruby.StandardLibrary.Digest.Digest.Class.HexDigest), + }); + + } + + private void LoadDigest__Instance_Instance(Ruby.Builtins.RubyModule/*!*/ module) { + + module.DefineMethod("digest", 0x9, new System.Delegate[] { + new Microsoft.Scripting.Utils.Function(Ruby.StandardLibrary.Digest.Digest.Instance.Digest), + }); + + module.DefineMethod("hexdigest", 0x9, new System.Delegate[] { + new Microsoft.Scripting.Utils.Function(Ruby.StandardLibrary.Digest.Digest.Instance.HexDigest), + }); + + } + + } +} + +namespace Ruby.StandardLibrary.Zlib { + public sealed class ZlibLibraryInitializer : Ruby.Builtins.LibraryInitializer { + protected override void LoadModules() { + Ruby.Builtins.RubyClass classRef0 = GetClass(typeof(Ruby.Builtins.RuntimeError)); + Ruby.Builtins.RubyClass classRef1 = GetClass(typeof(System.Object)); + + + Ruby.Builtins.RubyModule def1 = DefineGlobalModule("Zlib", typeof(Ruby.StandardLibrary.Zlib.Zlib), new System.Action(LoadZlib_Instance), null, Ruby.Builtins.RubyModule.EmptyArray); + Ruby.Builtins.RubyClass def2 = DefineClass("Zlib::DataError", typeof(Ruby.StandardLibrary.Zlib.Zlib.DataError), classRef0, null, null, Ruby.Builtins.RubyModule.EmptyArray, null); + Ruby.Builtins.RubyClass def3 = DefineClass("Zlib::GzipFile", typeof(Ruby.StandardLibrary.Zlib.Zlib.GZipFile), classRef1, null, null, Ruby.Builtins.RubyModule.EmptyArray, null); + Ruby.Builtins.RubyClass def4 = DefineClass("Zlib::GzipFile::Error", typeof(Ruby.StandardLibrary.Zlib.Zlib.GZipFile.Error), classRef0, null, null, Ruby.Builtins.RubyModule.EmptyArray, null); + Ruby.Builtins.RubyClass def7 = DefineClass("Zlib::ZStream", typeof(Ruby.StandardLibrary.Zlib.Zlib.ZStream), classRef1, new System.Action(LoadZlib__ZStream_Instance), null, Ruby.Builtins.RubyModule.EmptyArray, null); + Ruby.Builtins.RubyClass def5 = DefineClass("Zlib::GzipReader", typeof(Ruby.StandardLibrary.Zlib.Zlib.GZipReader), def3, new System.Action(LoadZlib__GzipReader_Instance), new System.Action(LoadZlib__GzipReader_Class), Ruby.Builtins.RubyModule.EmptyArray, new System.Delegate[] { + new Microsoft.Scripting.Utils.Function(Ruby.StandardLibrary.Zlib.Zlib.GZipReader.Initialize), + }); + Ruby.Builtins.RubyClass def6 = DefineClass("Zlib::Inflate", typeof(Ruby.StandardLibrary.Zlib.Zlib.Inflate), def7, new System.Action(LoadZlib__Inflate_Instance), new System.Action(LoadZlib__Inflate_Class), Ruby.Builtins.RubyModule.EmptyArray, new System.Delegate[] { + new Microsoft.Scripting.Utils.Function(Ruby.StandardLibrary.Zlib.Zlib.Inflate.Initialize), + new Microsoft.Scripting.Utils.Function(Ruby.StandardLibrary.Zlib.Zlib.Inflate.Initialize), + }); + def1.SetConstant("DataError", def2); + def1.SetConstant("GzipFile", def3); + def3.SetConstant("Error", def4); + def1.SetConstant("ZStream", def7); + def1.SetConstant("GzipReader", def5); + def1.SetConstant("Inflate", def6); + } + private void LoadZlib_Instance(Ruby.Builtins.RubyModule/*!*/ module) { - module.SetConstant("FIXLCODES", Ruby.StandardLibrary.Zlib.FIXLCODES); - module.SetConstant("MAX_WBITS", Ruby.StandardLibrary.Zlib.MAX_WBITS); - module.SetConstant("MAXBITS", Ruby.StandardLibrary.Zlib.MAXBITS); - module.SetConstant("MAXCODES", Ruby.StandardLibrary.Zlib.MAXCODES); - module.SetConstant("MAXDCODES", Ruby.StandardLibrary.Zlib.MAXDCODES); - module.SetConstant("MAXLCODES", Ruby.StandardLibrary.Zlib.MAXLCODES); - module.SetConstant("VERSION", Ruby.StandardLibrary.Zlib.VERSION); - module.SetConstant("Z_DEFLATED", Ruby.StandardLibrary.Zlib.Z_DEFLATED); - module.SetConstant("ZLIB_VERSION", Ruby.StandardLibrary.Zlib.ZLIB_VERSION); + module.SetConstant("FIXLCODES", Ruby.StandardLibrary.Zlib.Zlib.FIXLCODES); + module.SetConstant("MAX_WBITS", Ruby.StandardLibrary.Zlib.Zlib.MAX_WBITS); + module.SetConstant("MAXBITS", Ruby.StandardLibrary.Zlib.Zlib.MAXBITS); + module.SetConstant("MAXCODES", Ruby.StandardLibrary.Zlib.Zlib.MAXCODES); + module.SetConstant("MAXDCODES", Ruby.StandardLibrary.Zlib.Zlib.MAXDCODES); + module.SetConstant("MAXLCODES", Ruby.StandardLibrary.Zlib.Zlib.MAXLCODES); + module.SetConstant("VERSION", Ruby.StandardLibrary.Zlib.Zlib.VERSION); + module.SetConstant("Z_DEFLATED", Ruby.StandardLibrary.Zlib.Zlib.Z_DEFLATED); + module.SetConstant("ZLIB_VERSION", Ruby.StandardLibrary.Zlib.Zlib.ZLIB_VERSION); } private void LoadZlib__GzipReader_Instance(Ruby.Builtins.RubyModule/*!*/ module) { - module.SetConstant("OSES", Ruby.StandardLibrary.Zlib.GZipReader.OSES); + module.SetConstant("OSES", Ruby.StandardLibrary.Zlib.Zlib.GZipReader.OSES); module.DefineMethod("comment", 0x9, new System.Delegate[] { - new Microsoft.Scripting.Utils.Function(Ruby.StandardLibrary.Zlib.GZipReader.Comment), + new Microsoft.Scripting.Utils.Function(Ruby.StandardLibrary.Zlib.Zlib.GZipReader.Comment), }); module.DefineMethod("open", 0xa, new System.Delegate[] { - new Microsoft.Scripting.Utils.Function(Ruby.StandardLibrary.Zlib.GZipReader.Open), + new Microsoft.Scripting.Utils.Function(Ruby.StandardLibrary.Zlib.Zlib.GZipReader.Open), }); module.DefineMethod("original_name", 0x9, new System.Delegate[] { - new Microsoft.Scripting.Utils.Function(Ruby.StandardLibrary.Zlib.GZipReader.OriginalName), + new Microsoft.Scripting.Utils.Function(Ruby.StandardLibrary.Zlib.Zlib.GZipReader.OriginalName), }); module.DefineMethod("read", 0x9, new System.Delegate[] { - new Microsoft.Scripting.Utils.Function(Ruby.StandardLibrary.Zlib.GZipReader.Read), + new Microsoft.Scripting.Utils.Function(Ruby.StandardLibrary.Zlib.Zlib.GZipReader.Read), }); module.DefineMethod("xtra_field", 0x9, new System.Delegate[] { - new Microsoft.Scripting.Utils.Function>(Ruby.StandardLibrary.Zlib.GZipReader.ExtraField), + new Microsoft.Scripting.Utils.Function>(Ruby.StandardLibrary.Zlib.Zlib.GZipReader.ExtraField), }); } private void LoadZlib__GzipReader_Class(Ruby.Builtins.RubyModule/*!*/ module) { - module.SetConstant("OSES", Ruby.StandardLibrary.Zlib.GZipReader.OSES); + module.SetConstant("OSES", Ruby.StandardLibrary.Zlib.Zlib.GZipReader.OSES); module.DefineMethod("open", 0x11, new System.Delegate[] { - new Microsoft.Scripting.Utils.Function(Ruby.StandardLibrary.Zlib.GZipReader.Open), - new Microsoft.Scripting.Utils.Function(Ruby.StandardLibrary.Zlib.GZipReader.Open), - new Microsoft.Scripting.Utils.Action(Ruby.StandardLibrary.Zlib.GZipReader.Open), - new Microsoft.Scripting.Utils.Action(Ruby.StandardLibrary.Zlib.GZipReader.Open), + new Microsoft.Scripting.Utils.Function(Ruby.StandardLibrary.Zlib.Zlib.GZipReader.Open), + new Microsoft.Scripting.Utils.Function(Ruby.StandardLibrary.Zlib.Zlib.GZipReader.Open), + new Microsoft.Scripting.Utils.Action(Ruby.StandardLibrary.Zlib.Zlib.GZipReader.Open), + new Microsoft.Scripting.Utils.Action(Ruby.StandardLibrary.Zlib.Zlib.GZipReader.Open), }); } @@ -5184,11 +5245,11 @@ private void LoadZlib__Inflate_Instance(Ruby.Builtins.RubyModule/*!*/ module) { module.DefineMethod("close", 0x9, new System.Delegate[] { - new Microsoft.Scripting.Utils.Function(Ruby.StandardLibrary.Zlib.Inflate.Close), + new Microsoft.Scripting.Utils.Function(Ruby.StandardLibrary.Zlib.Zlib.Inflate.Close), }); module.DefineMethod("inflate", 0x9, new System.Delegate[] { - new Microsoft.Scripting.Utils.Function(Ruby.StandardLibrary.Zlib.Inflate.InflateStream), + new Microsoft.Scripting.Utils.Function(Ruby.StandardLibrary.Zlib.Zlib.Inflate.InflateStream), }); } @@ -5196,7 +5257,7 @@ private void LoadZlib__Inflate_Class(Ruby.Builtins.RubyModule/*!*/ module) { module.DefineMethod("inflate", 0x11, new System.Delegate[] { - new Microsoft.Scripting.Utils.Function(Ruby.StandardLibrary.Zlib.Inflate.InflateStream), + new Microsoft.Scripting.Utils.Function(Ruby.StandardLibrary.Zlib.Zlib.Inflate.InflateStream), }); } @@ -5204,66 +5265,67 @@ private void LoadZlib__ZStream_Instance(Ruby.Builtins.RubyModule/*!*/ module) { module.DefineMethod("adler", 0x9, new System.Delegate[] { - new Microsoft.Scripting.Utils.Function(Ruby.StandardLibrary.Zlib.ZStream.Adler), + new Microsoft.Scripting.Utils.Function(Ruby.StandardLibrary.Zlib.Zlib.ZStream.Adler), }); module.DefineMethod("avail_in", 0x9, new System.Delegate[] { - new Microsoft.Scripting.Utils.Function(Ruby.StandardLibrary.Zlib.ZStream.AvailIn), + new Microsoft.Scripting.Utils.Function(Ruby.StandardLibrary.Zlib.Zlib.ZStream.AvailIn), }); module.DefineMethod("avail_out", 0x9, new System.Delegate[] { - new Microsoft.Scripting.Utils.Function(Ruby.StandardLibrary.Zlib.ZStream.GetAvailOut), + new Microsoft.Scripting.Utils.Function(Ruby.StandardLibrary.Zlib.Zlib.ZStream.GetAvailOut), }); module.DefineMethod("avail_out=", 0x9, new System.Delegate[] { - new Microsoft.Scripting.Utils.Function(Ruby.StandardLibrary.Zlib.ZStream.SetAvailOut), + new Microsoft.Scripting.Utils.Function(Ruby.StandardLibrary.Zlib.Zlib.ZStream.SetAvailOut), }); module.DefineMethod("close", 0x9, new System.Delegate[] { - new Microsoft.Scripting.Utils.Function(Ruby.StandardLibrary.Zlib.ZStream.Close), + new Microsoft.Scripting.Utils.Function(Ruby.StandardLibrary.Zlib.Zlib.ZStream.Close), }); module.DefineMethod("closed?", 0x9, new System.Delegate[] { - new Microsoft.Scripting.Utils.Function(Ruby.StandardLibrary.Zlib.ZStream.IsClosed), + new Microsoft.Scripting.Utils.Function(Ruby.StandardLibrary.Zlib.Zlib.ZStream.IsClosed), }); module.DefineMethod("data_type", 0x9, new System.Delegate[] { - new System.Action(Ruby.StandardLibrary.Zlib.ZStream.DataType), + new System.Action(Ruby.StandardLibrary.Zlib.Zlib.ZStream.DataType), }); module.DefineMethod("finish", 0x9, new System.Delegate[] { - new Microsoft.Scripting.Utils.Function(Ruby.StandardLibrary.Zlib.ZStream.Close), + new Microsoft.Scripting.Utils.Function(Ruby.StandardLibrary.Zlib.Zlib.ZStream.Close), }); module.DefineMethod("finished?", 0x9, new System.Delegate[] { - new Microsoft.Scripting.Utils.Function(Ruby.StandardLibrary.Zlib.ZStream.IsClosed), + new Microsoft.Scripting.Utils.Function(Ruby.StandardLibrary.Zlib.Zlib.ZStream.IsClosed), }); module.DefineMethod("flush_next_in", 0x9, new System.Delegate[] { - new Microsoft.Scripting.Utils.Function>(Ruby.StandardLibrary.Zlib.ZStream.FlushNextIn), + new Microsoft.Scripting.Utils.Function>(Ruby.StandardLibrary.Zlib.Zlib.ZStream.FlushNextIn), }); module.DefineMethod("flush_next_out", 0x9, new System.Delegate[] { - new Microsoft.Scripting.Utils.Function>(Ruby.StandardLibrary.Zlib.ZStream.FlushNextOut), + new Microsoft.Scripting.Utils.Function>(Ruby.StandardLibrary.Zlib.Zlib.ZStream.FlushNextOut), }); module.DefineMethod("reset", 0x9, new System.Delegate[] { - new System.Action(Ruby.StandardLibrary.Zlib.ZStream.Reset), + new System.Action(Ruby.StandardLibrary.Zlib.Zlib.ZStream.Reset), }); module.DefineMethod("stream_end?", 0x9, new System.Delegate[] { - new Microsoft.Scripting.Utils.Function(Ruby.StandardLibrary.Zlib.ZStream.IsClosed), + new Microsoft.Scripting.Utils.Function(Ruby.StandardLibrary.Zlib.Zlib.ZStream.IsClosed), }); module.DefineMethod("total_in", 0x9, new System.Delegate[] { - new Microsoft.Scripting.Utils.Function(Ruby.StandardLibrary.Zlib.ZStream.TotalIn), + new Microsoft.Scripting.Utils.Function(Ruby.StandardLibrary.Zlib.Zlib.ZStream.TotalIn), }); module.DefineMethod("total_out", 0x9, new System.Delegate[] { - new Microsoft.Scripting.Utils.Function(Ruby.StandardLibrary.Zlib.ZStream.TotalOut), + new Microsoft.Scripting.Utils.Function(Ruby.StandardLibrary.Zlib.Zlib.ZStream.TotalOut), }); } } } + =================================================================== edit: $/Dev10/feature/vs_langs01/Merlin/Main/Languages/Ruby/Libraries.LCA_RESTRICTED/IronRuby.Libraries.csproj;C441923 File: IronRuby.Libraries.csproj =================================================================== --- $/Dev10/feature/vs_langs01/Merlin/Main/Languages/Ruby/Libraries.LCA_RESTRICTED/IronRuby.Libraries.csproj;C441923 (server) 5/17/2008 3:55 PM +++ Shelved Change: $/Dev10/feature/vs_langs01/Merlin/Main/Languages/Ruby/Libraries.LCA_RESTRICTED/IronRuby.Libraries.csproj;RubyLibsAndYaml @@ -95,7 +95,7 @@ - + @@ -125,7 +125,9 @@ - + + Code + @@ -174,6 +176,31 @@ False + + + PreserveNewest + + + + + PreserveNewest + + + + + PreserveNewest + + + + + PreserveNewest + + + + + PreserveNewest + + =================================================================== add: $/Dev10/feature/vs_langs01/Merlin/Main/Languages/Ruby/Libraries.LCA_RESTRICTED/openssl.rb File: openssl.rb =================================================================== --- [no source file] +++ Shelved Change: $/Dev10/feature/vs_langs01/Merlin/Main/Languages/Ruby/Libraries.LCA_RESTRICTED/openssl.rb;RubyLibsAndYaml @@ -1,0 +1,1 @@ +load_assembly 'IronRuby.Libraries', 'Ruby.StandardLibrary.OpenSsl' \ No newline at end of file =================================================================== add: $/Dev10/feature/vs_langs01/Merlin/Main/Languages/Ruby/Libraries.LCA_RESTRICTED/socket.rb File: socket.rb =================================================================== --- [no source file] +++ Shelved Change: $/Dev10/feature/vs_langs01/Merlin/Main/Languages/Ruby/Libraries.LCA_RESTRICTED/socket.rb;RubyLibsAndYaml @@ -1,0 +1,1 @@ +load_assembly 'IronRuby.Libraries', 'Ruby.StandardLibrary.Sockets' =================================================================== add: $/Dev10/feature/vs_langs01/Merlin/Main/Languages/Ruby/Libraries.LCA_RESTRICTED/thread.rb File: thread.rb =================================================================== --- [no source file] +++ Shelved Change: $/Dev10/feature/vs_langs01/Merlin/Main/Languages/Ruby/Libraries.LCA_RESTRICTED/thread.rb;RubyLibsAndYaml @@ -1,0 +1,1 @@ +load_assembly 'IronRuby.Libraries', 'Ruby.StandardLibrary.Threading' =================================================================== add: $/Dev10/feature/vs_langs01/Merlin/Main/Languages/Ruby/Libraries.LCA_RESTRICTED/zlib.rb File: zlib.rb =================================================================== --- [no source file] +++ Shelved Change: $/Dev10/feature/vs_langs01/Merlin/Main/Languages/Ruby/Libraries.LCA_RESTRICTED/zlib.rb;RubyLibsAndYaml @@ -1,0 +1,1 @@ +load_assembly 'IronRuby.Libraries', 'Ruby.StandardLibrary.Zlib' =================================================================== edit: $/Dev10/feature/vs_langs01/Merlin/Main/Languages/Ruby/Libraries.LCA_RESTRICTED/Builtins/ArrayOps.cs;C438696 File: ArrayOps.cs =================================================================== --- $/Dev10/feature/vs_langs01/Merlin/Main/Languages/Ruby/Libraries.LCA_RESTRICTED/Builtins/ArrayOps.cs;C438696 (server) 5/17/2008 3:55 PM +++ Shelved Change: $/Dev10/feature/vs_langs01/Merlin/Main/Languages/Ruby/Libraries.LCA_RESTRICTED/Builtins/ArrayOps.cs;RubyLibsAndYaml @@ -24,7 +24,6 @@ using Microsoft.Scripting.Actions; using Microsoft.Scripting.Utils; using Ruby.Compiler; -using Ruby.Extensions; using Ruby.Hosting; using Ruby.Runtime; =================================================================== edit: $/Dev10/feature/vs_langs01/Merlin/Main/Languages/Ruby/Libraries.LCA_RESTRICTED/Builtins/BigNumOps.cs;C435539 File: BigNumOps.cs =================================================================== --- $/Dev10/feature/vs_langs01/Merlin/Main/Languages/Ruby/Libraries.LCA_RESTRICTED/Builtins/BigNumOps.cs;C435539 (server) 5/17/2008 3:55 PM +++ Shelved Change: $/Dev10/feature/vs_langs01/Merlin/Main/Languages/Ruby/Libraries.LCA_RESTRICTED/Builtins/BigNumOps.cs;RubyLibsAndYaml @@ -674,6 +674,7 @@ #region Conversion methods: coerce, to_f, to_s #region coerce + /// /// Attempts to coerce other to a Bignum. /// @@ -682,16 +683,16 @@ public static RubyArray Coerce(BigInteger/*!*/ self, [NotNull]BigInteger/*!*/ other) { return RubyOps.MakeArray2(other, self); } + /// /// Attempts to coerce other to a Bignum, where other is not Fixnum or Bignum. /// /// For any value of other. [RubyMethod("coerce")] public static RubyArray Coerce(CodeContext/*!*/ context, BigInteger/*!*/ self, object other) { - RubyExecutionContext ec = RubyUtils.GetExecutionContext(context); - string otherClass = SymbolTable.IdToString(ec.GetClassOf(other).Name); - throw RubyExceptions.CreateTypeError("can't coerce " + otherClass + " to Bignum"); + throw RubyExceptions.CreateTypeError(String.Format("can't coerce {0} to Bignum", RubyUtils.GetClassName(context, other))); } + #endregion #region to_f =================================================================== edit: $/Dev10/feature/vs_langs01/Merlin/Main/Languages/Ruby/Libraries.LCA_RESTRICTED/Builtins/ExceptionOps.cs;C438696 File: ExceptionOps.cs =================================================================== --- $/Dev10/feature/vs_langs01/Merlin/Main/Languages/Ruby/Libraries.LCA_RESTRICTED/Builtins/ExceptionOps.cs;C438696 (server) 5/17/2008 3:55 PM +++ Shelved Change: $/Dev10/feature/vs_langs01/Merlin/Main/Languages/Ruby/Libraries.LCA_RESTRICTED/Builtins/ExceptionOps.cs;RubyLibsAndYaml @@ -109,7 +109,7 @@ Assert.NotNull(self); if (message == null) { - message = MutableString.Create(SymbolTable.IdToString(RubyUtils.GetExecutionContext(context).GetClassOf(self).Name)); + message = MutableString.Create(RubyUtils.GetClassName(context, self)); } RubyExceptionData data = RubyExceptionData.GetInstance(self); @@ -170,9 +170,9 @@ public static MutableString/*!*/ Inspect(CodeContext/*!*/ context, Exception/*!*/ self) { MutableString message = RubyExceptionData.GetInstance(self).Message; - MutableString className = SymbolOps.ToString(RubyUtils.GetExecutionContext(context).GetClassOf(self).Name); + string className = RubyUtils.GetClassName(context, self); if (message.Length == 0) { - return className; + return MutableString.Create(className); } MutableString result = MutableString.CreateMutable(); =================================================================== edit: $/Dev10/feature/vs_langs01/Merlin/Main/Languages/Ruby/Libraries.LCA_RESTRICTED/Builtins/FloatOps.cs;C435539 File: FloatOps.cs =================================================================== --- $/Dev10/feature/vs_langs01/Merlin/Main/Languages/Ruby/Libraries.LCA_RESTRICTED/Builtins/FloatOps.cs;C435539 (server) 5/17/2008 3:55 PM +++ Shelved Change: $/Dev10/feature/vs_langs01/Merlin/Main/Languages/Ruby/Libraries.LCA_RESTRICTED/Builtins/FloatOps.cs;RubyLibsAndYaml @@ -89,39 +89,43 @@ #endregion #region induced_from + /// /// Convert value to Float, where value is Float. /// /// Float [RubyMethod("induced_from", RubyMethodAttributes.PublicSingleton)] - public static double InducedFrom(CodeContext/*!*/ context, RubyClass/*!*/ klass, double value) { + public static double InducedFrom(CodeContext/*!*/ context, RubyClass/*!*/ self, double value) { return value; } + /// /// Convert value to Float, where value is Fixnum. /// /// Float [RubyMethod("induced_from", RubyMethodAttributes.PublicSingleton)] - public static double InducedFrom(CodeContext/*!*/ context, RubyClass/*!*/ klass, int value) { + public static double InducedFrom(CodeContext/*!*/ context, RubyClass/*!*/ self, int value) { return RubySites.ToF(context, value); } + /// /// Convert value to Float, where value is Bignum. /// /// Float [RubyMethod("induced_from", RubyMethodAttributes.PublicSingleton)] - public static double InducedFrom(CodeContext/*!*/ context, RubyClass/*!*/ klass, [NotNull]BigInteger/*!*/ value) { + public static double InducedFrom(CodeContext/*!*/ context, RubyClass/*!*/ self, [NotNull]BigInteger/*!*/ value) { return RubySites.ToF(context, value); } + /// /// Convert value to Float, where value is not Float, Fixnum or Bignum. /// /// Float [RubyMethod("induced_from", RubyMethodAttributes.PublicSingleton)] - public static double InducedFrom(CodeContext/*!*/ context, RubyClass/*!*/ klass, object value) { - string className = SymbolTable.IdToString(RubyUtils.GetExecutionContext(context).GetClassOf(value).Name); - throw RubyExceptions.CreateTypeError("failed to convert " + className + " into Float"); + public static double InducedFrom(CodeContext/*!*/ context, RubyClass/*!*/ self, object value) { + throw RubyExceptions.CreateTypeError(String.Format("failed to convert {0} into Float", RubyUtils.GetClassName(context, value))); } + #endregion #region Arithmetic Operators =================================================================== edit: $/Dev10/feature/vs_langs01/Merlin/Main/Languages/Ruby/Libraries.LCA_RESTRICTED/Builtins/HashOps.cs;C417565 File: HashOps.cs =================================================================== --- $/Dev10/feature/vs_langs01/Merlin/Main/Languages/Ruby/Libraries.LCA_RESTRICTED/Builtins/HashOps.cs;C417565 (server) 5/17/2008 3:55 PM +++ Shelved Change: $/Dev10/feature/vs_langs01/Merlin/Main/Languages/Ruby/Libraries.LCA_RESTRICTED/Builtins/HashOps.cs;RubyLibsAndYaml @@ -22,7 +22,6 @@ using Microsoft.Scripting.Actions; using Microsoft.Scripting.Ast; using Microsoft.Scripting.Runtime; -using Ruby.Extensions; using Ruby.Runtime; namespace Ruby.Builtins { =================================================================== edit: $/Dev10/feature/vs_langs01/Merlin/Main/Languages/Ruby/Libraries.LCA_RESTRICTED/Builtins/Integer.cs;C435539 File: Integer.cs =================================================================== --- $/Dev10/feature/vs_langs01/Merlin/Main/Languages/Ruby/Libraries.LCA_RESTRICTED/Builtins/Integer.cs;C435539 (server) 5/17/2008 3:55 PM +++ Shelved Change: $/Dev10/feature/vs_langs01/Merlin/Main/Languages/Ruby/Libraries.LCA_RESTRICTED/Builtins/Integer.cs;RubyLibsAndYaml @@ -29,40 +29,43 @@ public abstract class Integer : Numeric { #region induced_from + /// /// Convert obj to an Integer, where obj is Fixnum /// /// Just returns the Fixnum [RubyMethod("induced_from", RubyMethodAttributes.PublicSingleton)] - public static object InducedFrom(RubyClass klass, int obj) { + public static object InducedFrom(RubyClass/*!*/ self, int obj) { return obj; } + /// /// Convert obj to an Integer, where obj is Bignum /// /// Just returns the Bignum [RubyMethod("induced_from", RubyMethodAttributes.PublicSingleton)] - public static object InducedFrom(RubyClass klass, [NotNull]BigInteger/*!*/ obj) { + public static object InducedFrom(RubyClass/*!*/ self, [NotNull]BigInteger/*!*/ obj) { return obj; } + /// /// Convert obj to an Integer, where obj is Float /// [RubyMethod("induced_from", RubyMethodAttributes.PublicSingleton)] - public static object InducedFrom(CodeContext/*!*/ context, RubyClass/*!*/ klass, double obj) { + public static object InducedFrom(CodeContext/*!*/ context, RubyClass/*!*/ self, double obj) { return RubySites.ToI(context, obj); } + /// /// Convert obj to an Integer, where obj is not Fixnum, Bignum or Float /// /// Just throws an error /// Assumption is object cannot be induced to Integer [RubyMethod("induced_from", RubyMethodAttributes.PublicSingleton)] - public static int InducedFrom(CodeContext/*!*/ context, RubyClass/*!*/ klass, object obj) { - RubyExecutionContext ec = RubyUtils.GetExecutionContext(context); - string objClass = SymbolTable.IdToString(ec.GetClassOf(obj).Name); - throw RubyExceptions.CreateTypeError("failed to convert " + objClass +" into Integer"); + public static int InducedFrom(CodeContext/*!*/ context, RubyClass/*!*/ self, object obj) { + throw RubyExceptions.CreateTypeError(String.Format("failed to convert {0} into Integer", RubyUtils.GetClassName(context, obj))); } + #endregion #region to_i, to_int, floor, ceil, round, truncate =================================================================== edit: $/Dev10/feature/vs_langs01/Merlin/Main/Languages/Ruby/Libraries.LCA_RESTRICTED/Builtins/IoOps.cs;C440068 File: IoOps.cs =================================================================== --- $/Dev10/feature/vs_langs01/Merlin/Main/Languages/Ruby/Libraries.LCA_RESTRICTED/Builtins/IoOps.cs;C440068 (server) 5/17/2008 3:55 PM +++ Shelved Change: $/Dev10/feature/vs_langs01/Merlin/Main/Languages/Ruby/Libraries.LCA_RESTRICTED/Builtins/IoOps.cs;RubyLibsAndYaml @@ -22,7 +22,6 @@ using System.Text; using System.Collections.Generic; using Microsoft.Scripting.Utils; -using Ruby.Extensions; using Microsoft.Scripting.Ast; using Microsoft.Scripting.Runtime; =================================================================== edit: $/Dev10/feature/vs_langs01/Merlin/Main/Languages/Ruby/Libraries.LCA_RESTRICTED/Builtins/Kernel.cs;C440810 File: Kernel.cs =================================================================== --- $/Dev10/feature/vs_langs01/Merlin/Main/Languages/Ruby/Libraries.LCA_RESTRICTED/Builtins/Kernel.cs;C440810 (server) 5/17/2008 3:55 PM +++ Shelved Change: $/Dev10/feature/vs_langs01/Merlin/Main/Languages/Ruby/Libraries.LCA_RESTRICTED/Builtins/Kernel.cs;RubyLibsAndYaml @@ -247,8 +247,9 @@ [RubyMethod("load_assembly", RubyMethodAttributes.PrivateInstance)] [RubyMethod("load_assembly", RubyMethodAttributes.PublicSingleton)] - public static bool LoadAssembly(CodeContext/*!*/ context, object self, [NotNull]MutableString/*!*/ assemblyName, [Optional, NotNull]MutableString typeName) { - return RubyUtils.GetExecutionContext(context).Loader.LoadAssembly(assemblyName.ConvertToString(), typeName != null ? typeName.ConvertToString() : null, true); + public static bool LoadAssembly(CodeContext/*!*/ context, object self, [NotNull]MutableString/*!*/ assemblyName, [Optional, NotNull]MutableString libraryNamespace) { + string initializer = libraryNamespace != null ? LibraryInitializer.GetFullTypeName(libraryNamespace.ConvertToString()) : null; + return RubyUtils.GetExecutionContext(context).Loader.LoadAssembly(assemblyName.ConvertToString(), initializer, true); } [RubyMethod("load", RubyMethodAttributes.PrivateInstance)] @@ -517,17 +518,11 @@ #region clone, dup - // TODO: dup/clone need to be pluggable (via an interface?) - // Currently, many classes end up implementing "dup" and "clone" - // as instance methods to get correct copy semantics. This isn't - // correct; MRI just "knows" how to copy objects without the - // object doing it itself. - [RubyMethod("clone")] public static object/*!*/ Clone(CodeContext/*!*/ context, object self) { object result; if (!RubyUtils.TryCopyObject(context, self, true, out result)) { - throw RubyExceptions.CreateTypeError("can't clone " + RubyUtils.GetExecutionContext(context).GetClassOf(self).Name); + throw RubyExceptions.CreateTypeError(String.Format("can't clone {0}", RubyUtils.GetClassName(context, self))); } return Kernel.FlowTaint(context, self, result); } @@ -536,7 +531,7 @@ public static object/*!*/ Duplicate(CodeContext/*!*/ context, object self) { object result; if (!RubyUtils.TryCopyObject(context, self, false, out result)) { - throw RubyExceptions.CreateTypeError("can't dup " + RubyUtils.GetExecutionContext(context).GetClassOf(self).Name); + throw RubyExceptions.CreateTypeError(String.Format("can't dup {0}", RubyUtils.GetClassName(context, self))); } return Kernel.FlowTaint(context, self, result); } =================================================================== edit: $/Dev10/feature/vs_langs01/Merlin/Main/Languages/Ruby/Libraries.LCA_RESTRICTED/Builtins/LibrarySites.cs;C435539 File: LibrarySites.cs =================================================================== --- $/Dev10/feature/vs_langs01/Merlin/Main/Languages/Ruby/Libraries.LCA_RESTRICTED/Builtins/LibrarySites.cs;C435539 (server) 5/17/2008 3:55 PM +++ Shelved Change: $/Dev10/feature/vs_langs01/Merlin/Main/Languages/Ruby/Libraries.LCA_RESTRICTED/Builtins/LibrarySites.cs;RubyLibsAndYaml @@ -22,7 +22,7 @@ namespace Ruby.Builtins { - class LibrarySites { + public class LibrarySites { private static DynamicSite _EqlSite = DynamicSite.Create( InstanceCallAction("eql?", ArgumentKind.Simple)); public static bool Eql(CodeContext/*!*/ context, object self, object other) { =================================================================== edit: $/Dev10/feature/vs_langs01/Merlin/Main/Languages/Ruby/Libraries.LCA_RESTRICTED/Builtins/Marshal.cs;C440068 File: Marshal.cs =================================================================== --- $/Dev10/feature/vs_langs01/Merlin/Main/Languages/Ruby/Libraries.LCA_RESTRICTED/Builtins/Marshal.cs;C440068 (server) 5/17/2008 3:55 PM +++ Shelved Change: $/Dev10/feature/vs_langs01/Merlin/Main/Languages/Ruby/Libraries.LCA_RESTRICTED/Builtins/Marshal.cs;RubyLibsAndYaml @@ -29,9 +29,7 @@ using Microsoft.Scripting.Runtime; using Microsoft.Scripting.Utils; -using Ruby.Extensions; using Ruby.Runtime; -using System.ComponentModel; namespace Ruby.Builtins { =================================================================== edit: $/Dev10/feature/vs_langs01/Merlin/Main/Languages/Ruby/Libraries.LCA_RESTRICTED/Builtins/MatchDataOps.cs;C436237 File: MatchDataOps.cs =================================================================== --- $/Dev10/feature/vs_langs01/Merlin/Main/Languages/Ruby/Libraries.LCA_RESTRICTED/Builtins/MatchDataOps.cs;C436237 (server) 5/17/2008 3:55 PM +++ Shelved Change: $/Dev10/feature/vs_langs01/Merlin/Main/Languages/Ruby/Libraries.LCA_RESTRICTED/Builtins/MatchDataOps.cs;RubyLibsAndYaml @@ -16,7 +16,6 @@ using System; using Microsoft.Scripting.Actions; using Microsoft.Scripting.Runtime; -using Ruby.Extensions; using Ruby.Runtime; namespace Ruby.Builtins { =================================================================== edit: $/Dev10/feature/vs_langs01/Merlin/Main/Languages/Ruby/Libraries.LCA_RESTRICTED/Builtins/MutableStringOps.cs;C440810 File: MutableStringOps.cs =================================================================== --- $/Dev10/feature/vs_langs01/Merlin/Main/Languages/Ruby/Libraries.LCA_RESTRICTED/Builtins/MutableStringOps.cs;C440810 (server) 5/17/2008 3:55 PM +++ Shelved Change: $/Dev10/feature/vs_langs01/Merlin/Main/Languages/Ruby/Libraries.LCA_RESTRICTED/Builtins/MutableStringOps.cs;RubyLibsAndYaml @@ -29,7 +29,6 @@ using Ruby.Hosting; using Ruby.Runtime; using Microsoft.Scripting.Runtime; -using Ruby.Extensions; using Microsoft.Scripting.Math; namespace Ruby.Builtins { =================================================================== edit: $/Dev10/feature/vs_langs01/Merlin/Main/Languages/Ruby/Libraries.LCA_RESTRICTED/Builtins/RangeOps.cs;C440810 File: RangeOps.cs =================================================================== --- $/Dev10/feature/vs_langs01/Merlin/Main/Languages/Ruby/Libraries.LCA_RESTRICTED/Builtins/RangeOps.cs;C440810 (server) 5/17/2008 3:55 PM +++ Shelved Change: $/Dev10/feature/vs_langs01/Merlin/Main/Languages/Ruby/Libraries.LCA_RESTRICTED/Builtins/RangeOps.cs;RubyLibsAndYaml @@ -273,6 +273,7 @@ #endregion #region Private Helper Stuff + /// /// Step through a Range of Fixnums. /// @@ -294,6 +295,7 @@ } return self; } + /// /// Step through a Range of Strings. /// @@ -321,6 +323,7 @@ } return self; } + /// /// Step through a Range of Numerics. /// @@ -343,6 +346,7 @@ } return self; } + /// /// Step through a Range of objects that are not Numeric or String. /// @@ -363,6 +367,7 @@ } return self; } + /// /// Check that the int is not less than or equal to zero. /// @@ -374,6 +379,7 @@ throw RubyExceptions.CreateArgumentError("step can't be negative"); } } + /// /// Check that the object, when converted to an integer, is not less than or equal to zero. /// @@ -385,16 +391,18 @@ throw RubyExceptions.CreateArgumentError("step can't be negative"); } } + /// /// Check that the object responds to "succ". /// private static void CheckBegin(CodeContext/*!*/ context, object begin) { if (!RubySites.RespondTo(context, begin, "succ")) { - string beginClass = SymbolTable.IdToString(RubyUtils.GetExecutionContext(context).GetClassOf(begin).Name); - throw RubyExceptions.CreateTypeError("can't iterate from " + beginClass); + throw RubyExceptions.CreateTypeError(String.Format("can't iterate from {0}", RubyUtils.GetClassName(context, begin))); } } + private static DynamicSite _BlockSite = CallSiteFactory.CreateSimpleCallSite(RubyContext.RubyBinder); + #endregion } } =================================================================== rename, edit: $/Dev10/feature/vs_langs01/Merlin/Main/Languages/Ruby/Libraries.LCA_RESTRICTED/Builtins/RubyMath.cs;C390406 File: RubyMath.cs =================================================================== --- $/Dev10/feature/vs_langs01/Merlin/Main/Languages/Ruby/Libraries.LCA_RESTRICTED/Builtins/RubyMath.cs;C390406 (server) 5/17/2008 3:55 PM +++ Shelved Change: $/Dev10/feature/vs_langs01/Merlin/Main/Languages/Ruby/Libraries.LCA_RESTRICTED/Builtins/RubyMath.cs;RubyLibsAndYaml @@ -22,7 +22,7 @@ namespace Ruby.Builtins { [RubyModule("Math")] - public static class Math { + public static class RubyMath { [RubyConstant] public const double E = System.Math.E; =================================================================== edit: $/Dev10/feature/vs_langs01/Merlin/Main/Languages/Ruby/Libraries.LCA_RESTRICTED/Digest/Digest.cs;C435539 File: Digest.cs =================================================================== --- $/Dev10/feature/vs_langs01/Merlin/Main/Languages/Ruby/Libraries.LCA_RESTRICTED/Digest/Digest.cs;C435539 (server) 5/17/2008 3:55 PM +++ Shelved Change: $/Dev10/feature/vs_langs01/Merlin/Main/Languages/Ruby/Libraries.LCA_RESTRICTED/Digest/Digest.cs;RubyLibsAndYaml @@ -26,7 +26,7 @@ using Ruby.Builtins; using Microsoft.Scripting.Utils; -namespace Ruby.StandardLibrary { +namespace Ruby.StandardLibrary.Digest { [RubyModule("Digest")] public static class Digest { =================================================================== edit: $/Dev10/feature/vs_langs01/Merlin/Main/Languages/Ruby/Libraries.LCA_RESTRICTED/Extensions/IComparableOps.cs;C390406 File: IComparableOps.cs =================================================================== --- $/Dev10/feature/vs_langs01/Merlin/Main/Languages/Ruby/Libraries.LCA_RESTRICTED/Extensions/IComparableOps.cs;C390406 (server) 5/17/2008 3:55 PM +++ Shelved Change: $/Dev10/feature/vs_langs01/Merlin/Main/Languages/Ruby/Libraries.LCA_RESTRICTED/Extensions/IComparableOps.cs;RubyLibsAndYaml @@ -20,7 +20,7 @@ using Ruby.Builtins; using Ruby.Runtime; -namespace Ruby.Extensions { +namespace Ruby.Builtins { [RubyModule(Extends = typeof(IComparable)), Includes(typeof(Comparable))] public static class IComparableOps { [RubyMethod("<=>", RubyMethodAttributes.PublicInstance)] =================================================================== edit: $/Dev10/feature/vs_langs01/Merlin/Main/Languages/Ruby/Libraries.LCA_RESTRICTED/Extensions/IDictionaryOps.cs;C435539 File: IDictionaryOps.cs =================================================================== --- $/Dev10/feature/vs_langs01/Merlin/Main/Languages/Ruby/Libraries.LCA_RESTRICTED/Extensions/IDictionaryOps.cs;C435539 (server) 5/17/2008 3:55 PM +++ Shelved Change: $/Dev10/feature/vs_langs01/Merlin/Main/Languages/Ruby/Libraries.LCA_RESTRICTED/Extensions/IDictionaryOps.cs;RubyLibsAndYaml @@ -26,7 +26,7 @@ using Ruby.Builtins; using Ruby.Runtime; -namespace Ruby.Extensions { +namespace Ruby.Builtins { // TODO: IDictionary instead of IDictionary? // (need support for extension methods on generic interfaces first) @@ -90,8 +90,7 @@ IDictionary dict = hash as IDictionary; return dict != null ? dict : RubySites.ToHash(context, hash); } catch (MissingMethodException e) { - RubyClass rubyClass = RubyUtils.GetExecutionContext(context).GetClassOf(hash); - throw new InvalidOperationException("can't convert " + rubyClass.Name + " into Hash", e); + throw new InvalidOperationException(String.Format("can't convert {0} into Hash", RubyUtils.GetClassName(context, hash)), e); } } =================================================================== edit: $/Dev10/feature/vs_langs01/Merlin/Main/Languages/Ruby/Libraries.LCA_RESTRICTED/Extensions/IEnumerableOps.cs;C415805 File: IEnumerableOps.cs =================================================================== --- $/Dev10/feature/vs_langs01/Merlin/Main/Languages/Ruby/Libraries.LCA_RESTRICTED/Extensions/IEnumerableOps.cs;C415805 (server) 5/17/2008 3:55 PM +++ Shelved Change: $/Dev10/feature/vs_langs01/Merlin/Main/Languages/Ruby/Libraries.LCA_RESTRICTED/Extensions/IEnumerableOps.cs;RubyLibsAndYaml @@ -22,7 +22,7 @@ using Ruby.Builtins; using Ruby.Runtime; -namespace Ruby.Extensions { +namespace Ruby.Builtins { // For every .NET type that implements IEnumerable, extend it to include the Ruby Enumerable // module, and inject an "each" method. =================================================================== edit: $/Dev10/feature/vs_langs01/Merlin/Main/Languages/Ruby/Libraries.LCA_RESTRICTED/Extensions/IListOps.cs;C438696 File: IListOps.cs =================================================================== --- $/Dev10/feature/vs_langs01/Merlin/Main/Languages/Ruby/Libraries.LCA_RESTRICTED/Extensions/IListOps.cs;C438696 (server) 5/17/2008 3:55 PM +++ Shelved Change: $/Dev10/feature/vs_langs01/Merlin/Main/Languages/Ruby/Libraries.LCA_RESTRICTED/Extensions/IListOps.cs;RubyLibsAndYaml @@ -29,7 +29,7 @@ using Ruby.Hosting; using Ruby.Runtime; -namespace Ruby.Extensions { +namespace Ruby.Builtins { using MSA = Microsoft.Scripting.Ast; using Math = System.Math; @@ -189,7 +189,7 @@ [RubyMethod("<=>")] public static int Compare(CodeContext/*!*/ context, IList/*!*/ self, IList other) { - int limit = Math.Min(self.Count, other.Count); + int limit = System.Math.Min(self.Count, other.Count); for (int i = 0; i < limit; ++i) { int result = Protocols.Compare(context, self[i], other[i]); =================================================================== edit: $/Dev10/feature/vs_langs01/Merlin/Main/Languages/Ruby/Libraries.LCA_RESTRICTED/Extensions/TypeOps.cs;C390406 File: TypeOps.cs =================================================================== --- $/Dev10/feature/vs_langs01/Merlin/Main/Languages/Ruby/Libraries.LCA_RESTRICTED/Extensions/TypeOps.cs;C390406 (server) 5/17/2008 3:55 PM +++ Shelved Change: $/Dev10/feature/vs_langs01/Merlin/Main/Languages/Ruby/Libraries.LCA_RESTRICTED/Extensions/TypeOps.cs;RubyLibsAndYaml @@ -20,8 +20,9 @@ using Microsoft.Scripting; using Ruby.Builtins; using Microsoft.Scripting.Runtime; +using Ruby.Runtime; -namespace Ruby.Runtime { +namespace Ruby.Builtins { [RubyClass(Extends = typeof(Type))] public static class TypeOps { [RubyMethod("to_module")] =================================================================== edit: $/Dev10/feature/vs_langs01/Merlin/Main/Languages/Ruby/Libraries.LCA_RESTRICTED/Extensions/TypeTrackerOps.cs;C390406 File: TypeTrackerOps.cs =================================================================== --- $/Dev10/feature/vs_langs01/Merlin/Main/Languages/Ruby/Libraries.LCA_RESTRICTED/Extensions/TypeTrackerOps.cs;C390406 (server) 5/17/2008 3:55 PM +++ Shelved Change: $/Dev10/feature/vs_langs01/Merlin/Main/Languages/Ruby/Libraries.LCA_RESTRICTED/Extensions/TypeTrackerOps.cs;RubyLibsAndYaml @@ -13,15 +13,11 @@ * * ***************************************************************************/ -using System; -using System.Collections.Generic; -using System.Text; using Microsoft.Scripting.Actions; -using Microsoft.Scripting; -using Ruby.Builtins; using Microsoft.Scripting.Runtime; +using Ruby.Runtime; -namespace Ruby.Runtime { +namespace Ruby.Builtins { [RubyClass(Extends = typeof(TypeTracker))] public static class TypeTrackerOps { [RubyMethod("to_module")] =================================================================== edit: $/Dev10/feature/vs_langs01/Merlin/Main/Languages/Ruby/Libraries.LCA_RESTRICTED/OpenSSL/OpenSSL.cs;C438696 File: OpenSSL.cs =================================================================== --- $/Dev10/feature/vs_langs01/Merlin/Main/Languages/Ruby/Libraries.LCA_RESTRICTED/OpenSSL/OpenSSL.cs;C438696 (server) 5/17/2008 3:55 PM +++ Shelved Change: $/Dev10/feature/vs_langs01/Merlin/Main/Languages/Ruby/Libraries.LCA_RESTRICTED/OpenSSL/OpenSSL.cs;RubyLibsAndYaml @@ -21,10 +21,10 @@ using Ruby.Builtins; using Microsoft.Scripting.Runtime; -namespace Ruby.StandardLibrary { +namespace Ruby.StandardLibrary.OpenSsl { [RubyModule("OpenSSL")] - public static class OpenSSL { + public static class OpenSsl { // TODO: constants // Config,HMACError,PKCS12,Random,OPENSSL_VERSION,PKCS7,BN,ConfigError,PKey,Engine,BNError,Netscape,OCSP // OpenSSLError,CipherError,SSL,VERSION,X509,ASN1,OPENSSL_VERSION_NUMBER,Cipher =================================================================== edit: $/Dev10/feature/vs_langs01/Merlin/Main/Languages/Ruby/Libraries.LCA_RESTRICTED/socket/BasicSocket.cs;C437366 File: BasicSocket.cs =================================================================== --- $/Dev10/feature/vs_langs01/Merlin/Main/Languages/Ruby/Libraries.LCA_RESTRICTED/socket/BasicSocket.cs;C437366 (server) 5/17/2008 3:55 PM +++ Shelved Change: $/Dev10/feature/vs_langs01/Merlin/Main/Languages/Ruby/Libraries.LCA_RESTRICTED/socket/BasicSocket.cs;RubyLibsAndYaml @@ -7,7 +7,7 @@ using Ruby.Builtins; using Ruby.Runtime; -namespace Ruby.StandardLibrary { +namespace Ruby.StandardLibrary.Sockets { [RubyClass("BasicSocket", BuildConfig = "!SILVERLIGHT")] public abstract class RubyBasicSocket : RubyIO { private static bool _doNotReverseLookup = false; =================================================================== edit: $/Dev10/feature/vs_langs01/Merlin/Main/Languages/Ruby/Libraries.LCA_RESTRICTED/socket/IPSocket.cs;C437366 File: IPSocket.cs =================================================================== --- $/Dev10/feature/vs_langs01/Merlin/Main/Languages/Ruby/Libraries.LCA_RESTRICTED/socket/IPSocket.cs;C437366 (server) 5/17/2008 3:55 PM +++ Shelved Change: $/Dev10/feature/vs_langs01/Merlin/Main/Languages/Ruby/Libraries.LCA_RESTRICTED/socket/IPSocket.cs;RubyLibsAndYaml @@ -6,7 +6,7 @@ using Ruby.Builtins; using Ruby.Runtime; -namespace Ruby.StandardLibrary { +namespace Ruby.StandardLibrary.Sockets { [RubyClass("IPSocket", BuildConfig = "!SILVERLIGHT")] public abstract class IPSocket : RubyBasicSocket { =================================================================== edit: $/Dev10/feature/vs_langs01/Merlin/Main/Languages/Ruby/Libraries.LCA_RESTRICTED/socket/Socket.cs;C437366 File: Socket.cs =================================================================== --- $/Dev10/feature/vs_langs01/Merlin/Main/Languages/Ruby/Libraries.LCA_RESTRICTED/socket/Socket.cs;C437366 (server) 5/17/2008 3:55 PM +++ Shelved Change: $/Dev10/feature/vs_langs01/Merlin/Main/Languages/Ruby/Libraries.LCA_RESTRICTED/socket/Socket.cs;RubyLibsAndYaml @@ -7,7 +7,7 @@ using Ruby.Builtins; using Ruby.Runtime; -namespace Ruby.StandardLibrary { +namespace Ruby.StandardLibrary.Sockets { [RubyClass("Socket", BuildConfig = "!SILVERLIGHT")] public class RubySocket : RubyBasicSocket { @@ -17,7 +17,7 @@ private static Socket/*!*/ CreateSocket(CodeContext/*!*/ context, MutableString/*!*/ domain, MutableString/*!*/ type, object/*Numeric*/ protocol) { RubyExecutionContext ec = RubyUtils.GetExecutionContext(context); - RubyClass rubySocketClass = ec.GetClass(typeof(Ruby.StandardLibrary.RubySocket)); + RubyClass rubySocketClass = ec.GetClass(typeof(RubySocket)); AddressFamily addressFamily = (AddressFamily)RubyUtils.GetConstant(context, rubySocketClass, SymbolTable.StringToId(domain.ConvertToString()), true); ProtocolType protocolType = (ProtocolType)(Protocols.CastToFixnum(context, protocol)); =================================================================== edit: $/Dev10/feature/vs_langs01/Merlin/Main/Languages/Ruby/Libraries.LCA_RESTRICTED/socket/SocketError.cs;C437366 File: SocketError.cs =================================================================== --- $/Dev10/feature/vs_langs01/Merlin/Main/Languages/Ruby/Libraries.LCA_RESTRICTED/socket/SocketError.cs;C437366 (server) 5/17/2008 3:55 PM +++ Shelved Change: $/Dev10/feature/vs_langs01/Merlin/Main/Languages/Ruby/Libraries.LCA_RESTRICTED/socket/SocketError.cs;RubyLibsAndYaml @@ -5,7 +5,7 @@ using System.Runtime.InteropServices; using Ruby.Builtins; -namespace Ruby.StandardLibrary { +namespace Ruby.StandardLibrary.Sockets { [RubyClass("SocketError", BuildConfig = "!SILVERLIGHT", Extends = typeof(SocketException), Inherits = typeof(SystemException))] [HideMethod("message")] // SocketException overrides Message so we have to hide it here public static class SocketErrorOps { =================================================================== edit: $/Dev10/feature/vs_langs01/Merlin/Main/Languages/Ruby/Libraries.LCA_RESTRICTED/socket/SocketStream.cs;C437366 File: SocketStream.cs =================================================================== --- $/Dev10/feature/vs_langs01/Merlin/Main/Languages/Ruby/Libraries.LCA_RESTRICTED/socket/SocketStream.cs;C437366 (server) 5/17/2008 3:55 PM +++ Shelved Change: $/Dev10/feature/vs_langs01/Merlin/Main/Languages/Ruby/Libraries.LCA_RESTRICTED/socket/SocketStream.cs;RubyLibsAndYaml @@ -4,7 +4,7 @@ using System.Collections.Generic; using System.Net.Sockets; -namespace Ruby.StandardLibrary { +namespace Ruby.StandardLibrary.Sockets { internal class SocketStream : System.IO.Stream { public SocketStream(/*!*/Socket s) { _socket = s; =================================================================== edit: $/Dev10/feature/vs_langs01/Merlin/Main/Languages/Ruby/Libraries.LCA_RESTRICTED/socket/TCPServer.cs;C437366 File: TCPServer.cs =================================================================== --- $/Dev10/feature/vs_langs01/Merlin/Main/Languages/Ruby/Libraries.LCA_RESTRICTED/socket/TCPServer.cs;C437366 (server) 5/17/2008 3:55 PM +++ Shelved Change: $/Dev10/feature/vs_langs01/Merlin/Main/Languages/Ruby/Libraries.LCA_RESTRICTED/socket/TCPServer.cs;RubyLibsAndYaml @@ -10,7 +10,7 @@ using Ruby.Builtins; using Ruby.Runtime; -namespace Ruby.StandardLibrary { +namespace Ruby.StandardLibrary.Sockets { [RubyClass("TCPServer", BuildConfig = "!SILVERLIGHT")] public class TCPServer : TCPSocket { public TCPServer(CodeContext/*!*/ context, Socket/*!*/ socket) : base(context, socket) { =================================================================== edit: $/Dev10/feature/vs_langs01/Merlin/Main/Languages/Ruby/Libraries.LCA_RESTRICTED/socket/TCPSocket.cs;C437366 File: TCPSocket.cs =================================================================== --- $/Dev10/feature/vs_langs01/Merlin/Main/Languages/Ruby/Libraries.LCA_RESTRICTED/socket/TCPSocket.cs;C437366 (server) 5/17/2008 3:55 PM +++ Shelved Change: $/Dev10/feature/vs_langs01/Merlin/Main/Languages/Ruby/Libraries.LCA_RESTRICTED/socket/TCPSocket.cs;RubyLibsAndYaml @@ -6,7 +6,7 @@ using Ruby.Builtins; using Ruby.Runtime; -namespace Ruby.StandardLibrary { +namespace Ruby.StandardLibrary.Sockets { [RubyClass("TCPSocket", BuildConfig = "!SILVERLIGHT")] public class TCPSocket : IPSocket { public TCPSocket(CodeContext/*!*/ context, Socket/*!*/ socket) =================================================================== edit: $/Dev10/feature/vs_langs01/Merlin/Main/Languages/Ruby/Libraries.LCA_RESTRICTED/socket/UDPSocket.cs;C437366 File: UDPSocket.cs =================================================================== --- $/Dev10/feature/vs_langs01/Merlin/Main/Languages/Ruby/Libraries.LCA_RESTRICTED/socket/UDPSocket.cs;C437366 (server) 5/17/2008 3:55 PM +++ Shelved Change: $/Dev10/feature/vs_langs01/Merlin/Main/Languages/Ruby/Libraries.LCA_RESTRICTED/socket/UDPSocket.cs;RubyLibsAndYaml @@ -6,7 +6,7 @@ using Ruby.Builtins; using Ruby.Runtime; -namespace Ruby.StandardLibrary { +namespace Ruby.StandardLibrary.Sockets { [RubyClass("UDPSocket", BuildConfig = "!SILVERLIGHT")] class UDPSocket : IPSocket { public UDPSocket(CodeContext/*!*/ context, Socket/*!*/ socket) =================================================================== edit: $/Dev10/feature/vs_langs01/Merlin/Main/Languages/Ruby/Libraries.LCA_RESTRICTED/Thread/RubyConditionVariable.cs;C441923 File: RubyConditionVariable.cs =================================================================== --- $/Dev10/feature/vs_langs01/Merlin/Main/Languages/Ruby/Libraries.LCA_RESTRICTED/Thread/RubyConditionVariable.cs;C441923 (server) 5/17/2008 3:55 PM +++ Shelved Change: $/Dev10/feature/vs_langs01/Merlin/Main/Languages/Ruby/Libraries.LCA_RESTRICTED/Thread/RubyConditionVariable.cs;RubyLibsAndYaml @@ -25,7 +25,7 @@ using Ruby.Runtime.Calls; using Microsoft.Scripting.Runtime; -namespace Ruby.StandardLibrary { +namespace Ruby.StandardLibrary.Threading { [RubyClass("ConditionVariable")] public class RubyConditionVariable { private RubyMutex _mutex; =================================================================== edit: $/Dev10/feature/vs_langs01/Merlin/Main/Languages/Ruby/Libraries.LCA_RESTRICTED/Thread/RubyMutex.cs;C441923 File: RubyMutex.cs =================================================================== --- $/Dev10/feature/vs_langs01/Merlin/Main/Languages/Ruby/Libraries.LCA_RESTRICTED/Thread/RubyMutex.cs;C441923 (server) 5/17/2008 3:55 PM +++ Shelved Change: $/Dev10/feature/vs_langs01/Merlin/Main/Languages/Ruby/Libraries.LCA_RESTRICTED/Thread/RubyMutex.cs;RubyLibsAndYaml @@ -25,7 +25,7 @@ using Ruby.Runtime.Calls; using Microsoft.Scripting.Runtime; -namespace Ruby.StandardLibrary { +namespace Ruby.StandardLibrary.Threading { // TODO: // Ruby mutex is not recursive. // It can be unlocked from non-owning thread. =================================================================== edit: $/Dev10/feature/vs_langs01/Merlin/Main/Languages/Ruby/Libraries.LCA_RESTRICTED/Thread/RubyQueue.cs;C441923 File: RubyQueue.cs =================================================================== --- $/Dev10/feature/vs_langs01/Merlin/Main/Languages/Ruby/Libraries.LCA_RESTRICTED/Thread/RubyQueue.cs;C441923 (server) 5/17/2008 3:55 PM +++ Shelved Change: $/Dev10/feature/vs_langs01/Merlin/Main/Languages/Ruby/Libraries.LCA_RESTRICTED/Thread/RubyQueue.cs;RubyLibsAndYaml @@ -25,7 +25,7 @@ using System.Runtime.InteropServices; using Ruby.Builtins; -namespace Ruby.StandardLibrary { +namespace Ruby.StandardLibrary.Threading { // Synchronized queue. [RubyClass("Queue")] public class RubyQueue { =================================================================== edit: $/Dev10/feature/vs_langs01/Merlin/Main/Languages/Ruby/Libraries.LCA_RESTRICTED/Thread/SizedQueue.cs;C441923 File: SizedQueue.cs =================================================================== --- $/Dev10/feature/vs_langs01/Merlin/Main/Languages/Ruby/Libraries.LCA_RESTRICTED/Thread/SizedQueue.cs;C441923 (server) 5/17/2008 3:55 PM +++ Shelved Change: $/Dev10/feature/vs_langs01/Merlin/Main/Languages/Ruby/Libraries.LCA_RESTRICTED/Thread/SizedQueue.cs;RubyLibsAndYaml @@ -24,7 +24,7 @@ using Microsoft.Scripting.Runtime; using System.Diagnostics; -namespace Ruby.StandardLibrary { +namespace Ruby.StandardLibrary.Threading { // Synchronized queue. [RubyClass] public class SizedQueue : RubyQueue { =================================================================== edit: $/Dev10/feature/vs_langs01/Merlin/Main/Languages/Ruby/Libraries.LCA_RESTRICTED/Zlib/zlib.cs;C435539 File: zlib.cs =================================================================== --- $/Dev10/feature/vs_langs01/Merlin/Main/Languages/Ruby/Libraries.LCA_RESTRICTED/Zlib/zlib.cs;C435539 (server) 5/17/2008 3:55 PM +++ Shelved Change: $/Dev10/feature/vs_langs01/Merlin/Main/Languages/Ruby/Libraries.LCA_RESTRICTED/Zlib/zlib.cs;RubyLibsAndYaml @@ -22,7 +22,7 @@ using Ruby.Builtins; using Ruby.Runtime; -namespace Ruby.StandardLibrary { +namespace Ruby.StandardLibrary.Zlib { [RubyModule("Zlib")] public static class Zlib { =================================================================== edit: $/Dev10/feature/vs_langs01/Merlin/Main/Languages/Ruby/Ruby/Builtins/Initializer.cs;C442093 File: Initializer.cs =================================================================== --- $/Dev10/feature/vs_langs01/Merlin/Main/Languages/Ruby/Ruby/Builtins/Initializer.cs;C442093 (server) 5/17/2008 3:55 PM +++ Shelved Change: $/Dev10/feature/vs_langs01/Merlin/Main/Languages/Ruby/Ruby/Builtins/Initializer.cs;RubyLibsAndYaml @@ -39,21 +39,27 @@ LoadModules(); } - protected RubyClass/*!*/ DefineGlobalClass(string/*!*/ name, Type/*!*/ type, Action instanceTrait, Action classTrait, - RubyClass/*!*/ super, RubyModule[]/*!*/ mixins, Delegate[] factories) { + protected RubyClass/*!*/ DefineGlobalClass(string/*!*/ name, Type/*!*/ type, RubyClass/*!*/ super, + Action instanceTrait, Action classTrait, RubyModule[]/*!*/ mixins, Delegate[] factories) { + RubyClass result = _context.DefineLibraryClass(name, type, instanceTrait, classTrait, super, mixins, factories); _context.ObjectClass.SetConstant(result.Name, result); return result; } - protected RubyClass/*!*/ DefineClass(string/*!*/ name, Type/*!*/ type, Action instanceTrait, Action classTrait, - RubyClass/*!*/ super, RubyModule[]/*!*/ mixins, Delegate[] factories) { + protected RubyClass/*!*/ DefineClass(string/*!*/ name, Type/*!*/ type, RubyClass/*!*/ super, + Action instanceTrait, Action classTrait, RubyModule[]/*!*/ mixins, Delegate[] factories) { return _context.DefineLibraryClass(name, type, instanceTrait, classTrait, super, mixins, factories); } + protected RubyClass/*!*/ ExtendClass(Type/*!*/ type, Action instanceTrait, Action classTrait, + RubyModule[]/*!*/ mixins, Delegate[] factories) { + return _context.DefineLibraryClass(null, type, instanceTrait, classTrait, null, mixins, factories); + } + protected RubyModule/*!*/ DefineGlobalModule(string/*!*/ name, Type/*!*/ type, Action instanceTrait, Action classTrait, RubyModule[]/*!*/ mixins) { - RubyModule module = DefineModule(name, type, instanceTrait, classTrait, mixins); + RubyModule module = _context.DefineLibraryModule(name, type, instanceTrait, classTrait, mixins); _context.ObjectClass.SetConstant(module.Name, module); return module; } @@ -72,6 +78,11 @@ return _context.DefineLibraryModule(name, type, instanceTrait, classTrait, mixins); } + protected RubyModule/*!*/ ExtendModule(Type/*!*/ type, Action instanceTrait, Action classTrait, + RubyModule[]/*!*/ mixins) { + return _context.DefineLibraryModule(null, type, instanceTrait, classTrait, mixins); + } + protected object/*!*/ DefineSingleton(Action instanceTrait, Action classTrait, RubyModule[]/*!*/ mixins) { Assert.NotNullItems(mixins); Debug.Assert(_context.ObjectClass != null); @@ -99,5 +110,18 @@ protected virtual void LoadModules() { throw new NotImplementedException(); } + + public static string/*!*/ GetTypeName(string/*!*/ libraryNamespace) { + ContractUtils.RequiresNotNull(libraryNamespace, "libraryNamespace"); + return libraryNamespace.Substring(libraryNamespace.LastIndexOf(Type.Delimiter) + 1) + "LibraryInitializer"; + } + + public static string/*!*/ GetFullTypeName(string/*!*/ libraryNamespace) { + return libraryNamespace + Type.Delimiter + GetTypeName(libraryNamespace); + } + + public static string/*!*/ GetBuiltinsFullTypeName() { + return GetFullTypeName(typeof(RubyClass).Namespace); + } } } =================================================================== edit: $/Dev10/feature/vs_langs01/Merlin/Main/Languages/Ruby/Ruby/Builtins/IO.cs;C440068 File: IO.cs =================================================================== --- $/Dev10/feature/vs_langs01/Merlin/Main/Languages/Ruby/Ruby/Builtins/IO.cs;C440068 (server) 5/17/2008 3:55 PM +++ Shelved Change: $/Dev10/feature/vs_langs01/Merlin/Main/Languages/Ruby/Ruby/Builtins/IO.cs;RubyLibsAndYaml @@ -269,6 +269,13 @@ _stream.WriteByte((byte)val); } + public void Write(char[]/*!*/ buffer, int index, int count) { + count += index; + while (index < count) { + _stream.WriteByte((byte)buffer[index++]); + } + } + public void Write(string/*!*/ value) { // TODO: byte[] bytes = StringUtils.DefaultEncoding.GetBytes(value); =================================================================== edit: $/Dev10/feature/vs_langs01/Merlin/Main/Languages/Ruby/Ruby/Hosting/RubyOptionsParser.cs;C438696 File: RubyOptionsParser.cs =================================================================== --- $/Dev10/feature/vs_langs01/Merlin/Main/Languages/Ruby/Ruby/Hosting/RubyOptionsParser.cs;C438696 (server) 5/17/2008 3:55 PM +++ Shelved Change: $/Dev10/feature/vs_langs01/Merlin/Main/Languages/Ruby/Ruby/Hosting/RubyOptionsParser.cs;RubyLibsAndYaml @@ -29,6 +29,7 @@ using Ruby.Runtime; using Ruby.Builtins; using Ruby.Compiler; +using System.Reflection; namespace Ruby.Hosting { @@ -71,6 +72,10 @@ if (options.MainFile != null) { context.ExecutionContext.SetGlobalVariable(null, Symbols.CommandLineProgramPath, MutableString.Create(options.MainFile)); } + + // default load path: + string exeDir = Path.GetDirectoryName(new Uri(Assembly.GetEntryAssembly().CodeBase).AbsolutePath); + context.ExecutionContext.Loader.InsertLoadPaths(new string[] { exeDir }); } public override void Parse(string[] args) { =================================================================== edit: $/Dev10/feature/vs_langs01/Merlin/Main/Languages/Ruby/Ruby/Runtime/Loader.cs;C440810 File: Loader.cs =================================================================== --- $/Dev10/feature/vs_langs01/Merlin/Main/Languages/Ruby/Ruby/Runtime/Loader.cs;C440810 (server) 5/17/2008 3:55 PM +++ Shelved Change: $/Dev10/feature/vs_langs01/Merlin/Main/Languages/Ruby/Ruby/Runtime/Loader.cs;RubyLibsAndYaml @@ -87,8 +87,6 @@ // TODO: initialization _loadPaths = new RubyArray(); - _loadPaths.Add(MutableString.Create(".")); - _loadedFiles = new RubyArray(); _unfinishedFiles = new Stack(); } @@ -131,7 +129,7 @@ if (typeName != null) { // load Ruby library: try { - initializerType = assembly.GetType(typeName); + initializerType = assembly.GetType(typeName, true, false); } catch (Exception e) { if (throwOnError) throw new LoadError(e.Message, e); return false; @@ -445,22 +443,17 @@ /// internal bool TryLoadStandardRubyLibraries() { - Assembly assembly; + Type initializerType; try { - assembly = _executionContext.Context.DomainManager.Platform.LoadAssembly(GetIronRubyAssemblyLongName("IronRuby.Libraries")); + Assembly assembly = _executionContext.Context.DomainManager.Platform.LoadAssembly(GetIronRubyAssemblyLongName("IronRuby.Libraries")); + initializerType = assembly.GetType(LibraryInitializer.GetBuiltinsFullTypeName()); } catch (FileNotFoundException) { return false; } catch (Exception e) { throw new LoadError(e.Message, e); } - object[] attributes = assembly.GetCustomAttributes(typeof(RubyLibraryAttribute), false); - if (attributes.Length == 1) { - LoadLibrary(((RubyLibraryAttribute)attributes[0]).Initializer); - } else { - throw new LoadError(String.Format("Missing attribute {0} on {1}", typeof(RubyLibraryAttribute).FullName, assembly.FullName)); - } - + LoadLibrary(initializerType); return true; } =================================================================== edit: $/Dev10/feature/vs_langs01/Merlin/Main/Languages/Ruby/Ruby/Runtime/RubyExceptions.cs;C436237 File: RubyExceptions.cs =================================================================== --- $/Dev10/feature/vs_langs01/Merlin/Main/Languages/Ruby/Ruby/Runtime/RubyExceptions.cs;C436237 (server) 5/17/2008 3:55 PM +++ Shelved Change: $/Dev10/feature/vs_langs01/Merlin/Main/Languages/Ruby/Ruby/Runtime/RubyExceptions.cs;RubyLibsAndYaml @@ -40,19 +40,18 @@ } public static Exception/*!*/ CreateUnexpectedTypeError(CodeContext/*!*/ context, object param, string/*!*/ type) { - string paramType = SymbolTable.IdToString(RubyUtils.GetExecutionContext(context).GetClassOf(param).Name); - return CreateTypeError(String.Format("wrong argument type {0} (expected {1})", paramType, type)); + return CreateTypeError(String.Format("wrong argument type {0} (expected {1})", RubyUtils.GetClassName(context, param), type)); } public static Exception/*!*/ CannotConvertTypeToTargetType(CodeContext/*!*/ context, object param, string/*!*/ toType) { Assert.NotNull(context, toType); - return CreateTypeConversionError(SymbolTable.IdToString(RubyUtils.GetExecutionContext(context).GetClassOf(param).Name), toType); + return CreateTypeConversionError(RubyUtils.GetClassName(context, param), toType); } public static Exception/*!*/ MethodShouldReturnType(CodeContext/*!*/ context, object param, string/*!*/ method, string/*!*/ targetType) { Assert.NotNull(context, method, targetType); - return new InvalidOperationException(String.Format("{0}#{1} should return {2}", - SymbolTable.IdToString(RubyUtils.GetExecutionContext(context).GetClassOf(param).Name), method, targetType + return new InvalidOperationException(String.Format("{0}#{1} should return {2}", + RubyUtils.GetClassName(context, param), method, targetType )); } =================================================================== edit: $/Dev10/feature/vs_langs01/Merlin/Main/Languages/Ruby/Ruby/Runtime/RubyExecutionContext.cs;C442093 File: RubyExecutionContext.cs =================================================================== --- $/Dev10/feature/vs_langs01/Merlin/Main/Languages/Ruby/Ruby/Runtime/RubyExecutionContext.cs;C442093 (server) 5/17/2008 3:55 PM +++ Shelved Change: $/Dev10/feature/vs_langs01/Merlin/Main/Languages/Ruby/Ruby/Runtime/RubyExecutionContext.cs;RubyLibsAndYaml @@ -664,9 +664,9 @@ #region Libraries - internal RubyModule/*!*/ DefineLibraryModule(string/*!*/ name, Type/*!*/ type, Action instanceTrait, + internal RubyModule/*!*/ DefineLibraryModule(string name, Type/*!*/ type, Action instanceTrait, Action classTrait, RubyModule[]/*!*/ mixins) { - Assert.NotNull(name, type); + Assert.NotNull(type); Assert.NotNullItems(mixins); lock (ModuleCacheSyncRoot) { @@ -675,6 +675,10 @@ if (TryGetModuleNoLock(type, out module)) { module.IncludeLibraryModule(instanceTrait, classTrait, mixins); return module; + } + + if (name == null) { + name = RubyUtils.GetQualifiedName(type); } // setting tracker for interfaces: @@ -688,15 +692,15 @@ } } - internal RubyClass/*!*/ DefineLibraryClass(string/*!*/ name, Type/*!*/ type, Action instanceTrait, Action classTrait, - RubyClass/*!*/ super, RubyModule[]/*!*/ mixins, Delegate[] factories) { + internal RubyClass/*!*/ DefineLibraryClass(string name, Type/*!*/ type, Action instanceTrait, Action classTrait, + RubyClass super, RubyModule[]/*!*/ mixins, Delegate[] factories) { - Assert.NotNull(name, type, super); + Assert.NotNull(type); lock (ModuleCacheSyncRoot) { RubyClass result; if (TryGetClassNoLock(type, out result)) { - if (super != result.SuperClass) { + if (super != null && super != result.SuperClass) { // TODO: better message throw new InvalidOperationException("Cannot change super class"); } @@ -707,8 +711,16 @@ } return result; + } + + if (name == null) { + name = RubyUtils.GetQualifiedName(type); } + if (super == null) { + super = GetOrCreateClassNoLock(type.BaseType); + } + // setting tracker on the class makes CLR methods visible: TypeTracker tracker = ReflectionCache.GetTypeTracker(type); =================================================================== edit: $/Dev10/feature/vs_langs01/Merlin/Main/Languages/Ruby/Ruby/Runtime/RubyUtils.cs;C438696 File: RubyUtils.cs =================================================================== --- $/Dev10/feature/vs_langs01/Merlin/Main/Languages/Ruby/Ruby/Runtime/RubyUtils.cs;C438696 (server) 5/17/2008 3:55 PM +++ Shelved Change: $/Dev10/feature/vs_langs01/Merlin/Main/Languages/Ruby/Ruby/Runtime/RubyUtils.cs;RubyLibsAndYaml @@ -87,6 +87,10 @@ return obj[key] = value; } + public static string GetClassName(CodeContext/*!*/ context, object self) { + return SymbolTable.IdToString(RubyUtils.GetExecutionContext(context).GetClassOf(self).Name); + } + public static MutableString/*!*/ ObjectToMutableString(CodeContext/*!*/ context, object obj) { RubyExecutionContext ec = RubyUtils.GetExecutionContext(context); =================================================================== edit: $/Dev10/feature/vs_langs01/Merlin/Main/Languages/Ruby/Utils/IronRuby.Libraries.Scanner/Program.cs;C391294 File: Program.cs =================================================================== --- $/Dev10/feature/vs_langs01/Merlin/Main/Languages/Ruby/Utils/IronRuby.Libraries.Scanner/Program.cs;C391294 (server) 5/17/2008 3:55 PM +++ Shelved Change: $/Dev10/feature/vs_langs01/Merlin/Main/Languages/Ruby/Utils/IronRuby.Libraries.Scanner/Program.cs;RubyLibsAndYaml @@ -4,7 +4,6 @@ using System.Reflection; using System.Text; using Ruby; -using Ruby.Extensions; using Microsoft.Scripting.Utils; using Ruby.Runtime; using Ruby.Builtins; =================================================================== branch, delete: $/Merlin_External/Languages/IronRuby/yaml/IronRuby.Libraries.Yaml/ArrayOps.cs File: ArrayOps.cs =================================================================== --- RubyYaml.cs (server) 5/17/2008 3:55 PM +++ [no target file] @@ -1,508 +1,0 @@ -?/***** BEGIN LICENSE BLOCK ***** - * Version: CPL 1.0 - * - * The contents of this file are subject to the Common Public - * License Version 1.0 (the "License"); you may not use this file - * except in compliance with the License. You may obtain a copy of - * the License at http://www.eclipse.org/legal/cpl-v10.html - * - * Software distributed under the License is distributed on an "AS - * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or - * implied. See the License for the specific language governing - * rights and limitations under the License. - * - * Copyright (C) 2007 Ola Bini - * Copyright (c) Microsoft Corporation. - * - ***** END LICENSE BLOCK *****/ - -using System; -using System.Collections; -using System.IO; -using System.Runtime.InteropServices; -using System.Text; -using Microsoft.Scripting; -using Microsoft.Scripting.Actions; -using Microsoft.Scripting.Ast; -using Microsoft.Scripting.Runtime; -using Ruby; -using Ruby.Builtins; -using Ruby.Extensions; -using Ruby.Runtime; - -namespace IronRuby.Libraries.Yaml { - - [RubyModule("YAML")] - public static class RubyYaml { - private readonly static DynamicSite _Block = CallSiteFactory.CreateSimpleCallSite(RubyContext.RubyBinder); - private static readonly DynamicSite _New = DynamicSite.Create(LibrarySites.InstanceCallAction("new", ArgumentKind.Simple)); - private static readonly DynamicSite _Add = DynamicSite.Create(LibrarySites.InstanceCallAction("add", ArgumentKind.Simple)); - private static readonly DynamicSite _Emit = DynamicSite.Create(LibrarySites.InstanceCallAction("emit")); - - [RubyMethod("dump", RubyMethodAttributes.PrivateSingleton)] - public static object Dump(CodeContext context, RubyModule self, object obj, [Optional]RubyIO io) { - return DumpAll(context, self, new object[] { obj }, io); - } - - [RubyMethod("dump_all", RubyMethodAttributes.PrivateSingleton)] - public static object DumpAll(CodeContext context, RubyModule self, [NotNull]IEnumerable objs, [Optional]RubyIO io) { - TextWriter writer; - if (io != null) { - writer = new RubyIOWriter(io); - } else { - writer = new MutableStringWriter(); - } - YamlOptions cfg = YamlDocument.DefaultOptions; - using (Serializer s = new Serializer(new Emitter(writer, cfg), cfg)) { - RubyRepresenter r = new RubyRepresenter(context, s, cfg); - foreach (object obj in objs) { - r.Represent(obj); - } - } - if (null != io) { - return io; - } else { - return ((MutableStringWriter)writer).String; - } - } - - [RubyMethod("load", RubyMethodAttributes.PrivateSingleton)] - public static object Load(CodeContext context, RubyModule self, object io) { - foreach (object obj in MakeContructor(CheckYamlPort(io))) { - return obj; - } - return null; - } - - [RubyMethod("load_file", RubyMethodAttributes.PrivateSingleton)] - public static object LoadFile(CodeContext context, RubyModule self, object arg) { - RubyClass file = RubyUtils.GetExecutionContext(context).GetClass(typeof(RubyFile)); - object io = RubyIOOps.Open(context, file, null, arg, MutableString.Create("r")); - return Load(context, self, io as RubyIO); - } - - [RubyMethod("each_document", RubyMethodAttributes.PrivateSingleton)] - [RubyMethod("load_documents", RubyMethodAttributes.PrivateSingleton)] - public static object EachDocument(CodeContext context, RubyModule self, BlockParam block, object io) { - RubyConstructor rc = MakeContructor(CheckYamlPort(io)); - if (block == null && rc.CheckData()) { - throw new LocalJumpError("no block given"); - } - foreach (object obj in rc) { - _Block.Invoke(context, block, obj); - } - return null; - } - - [RubyMethod("load_stream", RubyMethodAttributes.PrivateSingleton)] - public static object LoadStream(CodeContext context, RubyModule self, object io) { - RubyConstructor rc = MakeContructor(CheckYamlPort(io)); - object d = null; - foreach (object obj in rc) { - if (d == null) { - object streamClass; - self.TryResolveConstant(SymbolTable.StringToId("Stream"), out streamClass); - d = _New.Invoke(context, streamClass as RubyModule, null); - } - _Add.Invoke(context, d, obj); - } - return d; - } - - [RubyMethod("dump_stream", RubyMethodAttributes.PrivateSingleton)] - public static object DumpStream(CodeContext context, RubyModule self, [NotNull]params object[] args) { - object streamClass; - self.TryResolveConstant(SymbolTable.StringToId("Stream"), out streamClass); - object stream = _New.Invoke(context, streamClass as RubyModule, null); - foreach (object arg in args) { - _Add.Invoke(context, stream, arg); - } - return _Emit.Invoke(context, stream); - } - - [RubyMethod("quick_emit_node", RubyMethodAttributes.PrivateSingleton)] - public static object QuickEmitNode(CodeContext context, RubyModule self, BlockParam block, object arg, params object[] rest) { - if (block != null) { - return _Block.Invoke(context, block, arg); - } - return null; - } - - [RubyMethod("tagurize", RubyMethodAttributes.PrivateSingleton)] - public static object Tagurize(CodeContext context, RubyModule self, object arg) { - return RubyRepresenter.TagUri(context, self); - } - - private static RubyConstructor MakeContructor(TextReader reader) { - return new RubyConstructor(new Composer(new Parser(new Scanner(reader), YamlDocument.DefaultOptions.Version))); - } - - private static TextReader CheckYamlPort(object port) { - MutableString ms = port as MutableString; - if (ms != null) { - return new MutableStringReader(ms); - } - - string str = port as string; - if (str != null) { - return new StringReader(str); - } - - RubyIO io = port as RubyIO; - if (io != null) { - RubyIOOps.Binmode(io); - return new RubyIOReader(io); - } - - throw RubyExceptions.CreateTypeError("instance of IO needed"); - } - } - - [RubyModuleExtension(typeof(object))] - public static class YamlObjectOps { - private static readonly DynamicSite _Dump = DynamicSite.Create(LibrarySites.InstanceCallAction("dump")); - - [RubyMethod("to_yaml_properties")] - public static RubyArray/*!*/ ToYamlProperties(CodeContext/*!*/ context, object self) { - return ArrayOps.SortInPlace(context, Kernel.InstanceVariables(context, self), null); - } - - [RubyMethod("to_yaml_style")] - public static object ToYamlStyle(CodeContext/*!*/ context, object self) { - return null; - } - - [RubyMethod("to_yaml_node")] - public static object ToYamlProperties(CodeContext/*!*/ context, object self, RubyRepresenter rep) { - Hash map = new Hash(context); - RubyRepresenter.AddYamlProperties(context, self, map); - return rep.Map(context, self, map); - } - - [RubyMethod("to_yaml")] - public static object ToYaml(CodeContext/*!*/ context, object self, params object[] args) { - // TODO: does this need to be a dynamic call? - return _Dump.Invoke(context, RubyUtils.GetExecutionContext(context).GetModule(typeof(RubyYaml)), self); - } - - [RubyMethod("taguri")] - public static MutableString TagUri(CodeContext/*!*/ context, object self) { - MutableString str = MutableString.Create("!ruby/object:"); - str.Append(RubyUtils.GetClassName(context, self)); - return str; - } - } - - [RubyModuleExtension(typeof(RubyClass))] - public static class YamlClassOps { - [RubyMethod("to_yaml_node")] - public static Node ToYamlNode(CodeContext/*!*/ context, object self, RubyRepresenter rep) { - throw RubyExceptions.CreateTypeError("can't dump anonymous class " + RubyUtils.GetClassName(context, self)); - } - } - - [RubyModuleExtension(typeof(Hash))] - public static class YamlHashOps { - [RubyMethod("to_yaml_node")] - public static Node ToYamlNode(CodeContext/*!*/ context, Hash/*!*/ self, RubyRepresenter rep) { - return rep.Map(context, self, self); - } - } - - [RubyModuleExtension(typeof(RubyArray))] - public static class YamlArrayOps { - [RubyMethod("to_yaml_node")] - public static Node ToYamlNode(CodeContext/*!*/ context, RubyArray/*!*/ self, RubyRepresenter rep) { - return rep.Sequence(context, self, self); - } - } - - [RubyModuleExtension(typeof(RubyStruct))] - public static class YamlStructOps { - private static readonly DynamicSite _Members = DynamicSite.Create(LibrarySites.InstanceCallAction("members")); - private static readonly DynamicSite _Values = DynamicSite.Create(LibrarySites.InstanceCallAction("values")); - - [RubyMethod("to_yaml_node")] - public static Node ToYamlNode(CodeContext/*!*/ context, RubyStruct/*!*/ self, RubyRepresenter rep) { - RubyArray members = _Members.Invoke(context, self); - RubyArray values = _Values.Invoke(context, self); - if (members.Count != values.Count) { - throw new ArgumentException("Struct values and members returned arrays of different lengths"); - } - - Hash map = new Hash(context); - for (int i = 0; i < members.Count; i++) { - IDictionaryOps.SetElement(context, map, members[i], values[i]); - } - RubyRepresenter.AddYamlProperties(context, self, map); - return rep.Map(context, self, map); - } - - [RubyMethod("taguri")] - public static MutableString TagUri(CodeContext/*!*/ context, object self) { - MutableString str = MutableString.Create("!ruby/struct:"); - str.Append(RubyUtils.GetClassName(context, self)); - return str; - } - } - - [RubyModuleExtension(typeof(Exception))] - public static class YamlExceptionOps { - private static readonly DynamicSite _Message = DynamicSite.Create(LibrarySites.InstanceCallAction("message")); - - [RubyMethod("to_yaml_node")] - public static Node ToYamlNode(CodeContext/*!*/ context, Exception/*!*/ self, RubyRepresenter rep) { - Hash map = new Hash(context); - map.Add(MutableString.Create("message"), _Message.Invoke(context, self)); - RubyRepresenter.AddYamlProperties(context, self, map); - return rep.Map(context, self, map); - } - - [RubyMethod("taguri")] - public static MutableString TagUri(CodeContext/*!*/ context, object self) { - MutableString str = MutableString.Create("!ruby/exception:"); - str.Append(RubyUtils.GetClassName(context, self)); - return str; - } - } - - [RubyModuleExtension(typeof(MutableString))] - public static class YamlStringOps { - [RubyMethod("is_complex_yaml?")] - public static bool IsComplexYaml(CodeContext/*!*/ context, MutableString/*!*/ self) { - return RubyOps.IsTrue(RubyRepresenter.ToYamlStyle(context, self)) || - RubyRepresenter.ToYamlProperties(context, self).Count == 0 || - AFTER_NEWLINE(self.ConvertToString()); - } - - // True if has a newline & something is after it - private static bool AFTER_NEWLINE(string str) { - int i = str.IndexOf('\n'); - return i >= 0 && i < str.Length - 1; - } - - private static readonly DynamicSite _Empty = DynamicSite.Create(LibrarySites.InstanceCallAction("empty?")); - private static readonly DynamicSite _IsBinaryData = DynamicSite.Create(LibrarySites.InstanceCallAction("is_binary_data?")); - - [RubyMethod("is_binary_data?")] - public static object IsBinaryData(CodeContext/*!*/ context, MutableString/*!*/ self) { - if (RubyOps.IsTrue(_Empty.Invoke(context, self))) { - return null; - } - // TODO: should be self.IndexOf(0)? - return self.IndexOf('\0') != -1; - } - - [RubyMethod("to_yaml_node")] - public static Node ToYamlNode(CodeContext/*!*/ context, MutableString/*!*/ self, RubyRepresenter rep) { - if (RubyOps.IsTrue(_IsBinaryData.Invoke(context, self))) { - return rep.BaseCreateNode(self.ConvertToBytes()); - } - - string str = self.ConvertToString(); - RubyArray props = RubyRepresenter.ToYamlProperties(context, self); - if (props.Count == 0) { - MutableString taguri = RubyRepresenter.TagUri(context, self); - - char style = (char)0; - if (str.StartsWith(":")) { - style = '"'; - } else { - MutableString styleStr = RubyRepresenter.ToYamlStyle(context, self) as MutableString; - if (styleStr != null && styleStr.Length > 0) { - style = styleStr.GetChar(0); - } - } - - return rep.Scalar(taguri != null ? taguri.ConvertToString() : "", str, style); - } - - Hash map = new Hash(context); - map.Add(MutableString.Create("str"), str); - RubyRepresenter.AddYamlProperties(context, self, map, props); - return rep.Map(context, self, map); - } - } - - [RubyModuleExtension(typeof(Numeric))] - public static class YamlNumericOps { - [RubyMethod("to_yaml_node")] - public static Node ToYaml(CodeContext context, object self, RubyRepresenter rep) { - MutableString str = RubySites.ToS(context, self); - if (str != null) { - if (str.Equals("Infinity")) { - str = MutableString.Create(".Inf"); - } else if (str.Equals("-Infinity")) { - str = MutableString.Create("-.Inf"); - } else if (str.Equals("NaN")) { - str = MutableString.Create(".NaN"); - } - } - return rep.Scalar(context, self, str); - } - } - - [RubyModuleExtension(typeof(Range))] - public static class YamlRangeOps { - private static readonly DynamicSite _Begin = DynamicSite.Create(LibrarySites.InstanceCallAction("begin")); - private static readonly DynamicSite _End = DynamicSite.Create(LibrarySites.InstanceCallAction("end")); - private static readonly DynamicSite _ExcludeEnd = DynamicSite.Create(LibrarySites.InstanceCallAction("exclude_end?")); - - [RubyMethod("to_yaml_node")] - public static Node ToYaml(CodeContext context, object self, RubyRepresenter rep) { - Hash map = new Hash(context); - map.Add(MutableString.Create("begin"), _Begin.Invoke(context, self)); - map.Add(MutableString.Create("end"), _End.Invoke(context, self)); - map.Add(MutableString.Create("excl"), _ExcludeEnd.Invoke(context, self)); - RubyRepresenter.AddYamlProperties(context, self, map); - return rep.Map(context, self, map); - } - } - - [RubyModuleExtension(typeof(RubyRegex))] - public static class YamlRegexpOps { - [RubyMethod("to_yaml_node")] - public static Node ToYaml(CodeContext context, object self, RubyRepresenter rep) { - return rep.Scalar(context, self, RubySites.Inspect(context, self)); - } - } - - [RubyModuleExtension(typeof(SymbolId))] - public static class YamlSymbolOps { - [RubyMethod("to_yaml_node")] - public static Node ToYaml(CodeContext context, object self, RubyRepresenter rep) { - return rep.Scalar(context, self, RubySites.Inspect(context, self)); - } - } - - [RubyModuleExtension(typeof(TrueClass))] - public static class YamlTrueOps { - [RubyMethod("to_yaml_node")] - public static Node ToYaml(CodeContext context, object self, RubyRepresenter rep) { - return rep.Scalar(context, self, RubySites.ToS(context, self)); - } - [RubyMethod("taguri")] - public static MutableString TagUri(object self) { - return MutableString.Create("tag:yaml.org,2002:bool"); - } - } - - [RubyModuleExtension(typeof(FalseClass))] - public static class YamlFalseOps { - [RubyMethod("to_yaml_node")] - public static Node ToYaml(CodeContext context, object self, RubyRepresenter rep) { - return rep.Scalar(context, self, RubySites.ToS(context, self)); - } - [RubyMethod("taguri")] - public static MutableString TagUri(object self) { - return MutableString.Create("tag:yaml.org,2002:bool"); - } - } - - [RubyModuleExtension(typeof(None))] - public static class YamlNilOps { - [RubyMethod("to_yaml_node")] - public static Node ToYaml(CodeContext context, object self, RubyRepresenter rep) { - return rep.Scalar(context, self, null); - } - } - - #region helper classes - - internal class RubyIOWriter : TextWriter { - private readonly RubyIO _io; - - internal RubyIOWriter(RubyIO io) { - _io = io; - } - - public override Encoding Encoding { - get { - // TODO: return RubyIO encoding - throw new NotImplementedException(); - } - } - - public override void Write(char value) { - _io.Write(value); - } - - public override void Write(char[] buffer, int index, int count) { - _io.Write(buffer, index, count); - } - - public override void Flush() { - _io.Flush(); - } - } - - internal class RubyIOReader : TextReader { - private readonly RubyIO _io; - - internal RubyIOReader(RubyIO io) { - _io = io; - } - - public override int Peek() { - return _io.PeekChar() ?? -1; - } - public override int Read() { - return _io.GetChar() ?? -1; - } - } - - internal class MutableStringWriter : TextWriter { - private readonly MutableString _str = MutableString.Create(""); - - public override Encoding Encoding { - get { - // TODO: return MutableString encoding - throw new NotImplementedException(); - } - } - - public override void Write(char value) { - _str.Append(value); - } - - public override void Write(char[] buffer, int index, int count) { - // TODO: MutableString needs Append(char[], index, count) - _str.Append(new string(buffer), index, count); - } - - internal MutableString String { - get { return _str; } - } - } - - internal class MutableStringReader : TextReader { - private readonly MutableString _str; - private int _pos = 0; - - internal MutableStringReader(MutableString str) { - _str = str; - } - - public override int Peek() { - return _str.GetChar(_pos); - } - - public override int Read() { - return _pos < _str.Length ? _str.GetChar(_pos++) : -1; - } - - public override int Read(char[] buffer, int index, int count) { - int read = _str.Length - _pos; - if (read > 0) { - if (read > count) { - read = count; - } - _str.ConvertToString().CopyTo(_pos, buffer, index, read); - _pos += read; - } - return read; - } - } - - #endregion -} =================================================================== branch, edit: $/Merlin_External/Languages/IronRuby/yaml/IronRuby.Libraries.Yaml/BuiltinsOps.cs File: BuiltinsOps.cs =================================================================== --- RubyYaml.cs (server) 5/17/2008 3:55 PM +++ Shelved Change: $/Merlin_External/Languages/IronRuby/yaml/IronRuby.Libraries.Yaml/BuiltinsOps.cs;RubyLibsAndYaml @@ -27,138 +27,11 @@ using Microsoft.Scripting.Runtime; using Ruby; using Ruby.Builtins; -using Ruby.Extensions; using Ruby.Runtime; -namespace IronRuby.Libraries.Yaml { +namespace Ruby.StandardLibrary.Yaml { - [RubyModule("YAML")] - public static class RubyYaml { - private readonly static DynamicSite _Block = CallSiteFactory.CreateSimpleCallSite(RubyContext.RubyBinder); - private static readonly DynamicSite _New = DynamicSite.Create(LibrarySites.InstanceCallAction("new", ArgumentKind.Simple)); - private static readonly DynamicSite _Add = DynamicSite.Create(LibrarySites.InstanceCallAction("add", ArgumentKind.Simple)); - private static readonly DynamicSite _Emit = DynamicSite.Create(LibrarySites.InstanceCallAction("emit")); - - [RubyMethod("dump", RubyMethodAttributes.PrivateSingleton)] - public static object Dump(CodeContext context, RubyModule self, object obj, [Optional]RubyIO io) { - return DumpAll(context, self, new object[] { obj }, io); - } - - [RubyMethod("dump_all", RubyMethodAttributes.PrivateSingleton)] - public static object DumpAll(CodeContext context, RubyModule self, [NotNull]IEnumerable objs, [Optional]RubyIO io) { - TextWriter writer; - if (io != null) { - writer = new RubyIOWriter(io); - } else { - writer = new MutableStringWriter(); - } - YamlOptions cfg = YamlDocument.DefaultOptions; - using (Serializer s = new Serializer(new Emitter(writer, cfg), cfg)) { - RubyRepresenter r = new RubyRepresenter(context, s, cfg); - foreach (object obj in objs) { - r.Represent(obj); - } - } - if (null != io) { - return io; - } else { - return ((MutableStringWriter)writer).String; - } - } - - [RubyMethod("load", RubyMethodAttributes.PrivateSingleton)] - public static object Load(CodeContext context, RubyModule self, object io) { - foreach (object obj in MakeContructor(CheckYamlPort(io))) { - return obj; - } - return null; - } - - [RubyMethod("load_file", RubyMethodAttributes.PrivateSingleton)] - public static object LoadFile(CodeContext context, RubyModule self, object arg) { - RubyClass file = RubyUtils.GetExecutionContext(context).GetClass(typeof(RubyFile)); - object io = RubyIOOps.Open(context, file, null, arg, MutableString.Create("r")); - return Load(context, self, io as RubyIO); - } - - [RubyMethod("each_document", RubyMethodAttributes.PrivateSingleton)] - [RubyMethod("load_documents", RubyMethodAttributes.PrivateSingleton)] - public static object EachDocument(CodeContext context, RubyModule self, BlockParam block, object io) { - RubyConstructor rc = MakeContructor(CheckYamlPort(io)); - if (block == null && rc.CheckData()) { - throw new LocalJumpError("no block given"); - } - foreach (object obj in rc) { - _Block.Invoke(context, block, obj); - } - return null; - } - - [RubyMethod("load_stream", RubyMethodAttributes.PrivateSingleton)] - public static object LoadStream(CodeContext context, RubyModule self, object io) { - RubyConstructor rc = MakeContructor(CheckYamlPort(io)); - object d = null; - foreach (object obj in rc) { - if (d == null) { - object streamClass; - self.TryResolveConstant(SymbolTable.StringToId("Stream"), out streamClass); - d = _New.Invoke(context, streamClass as RubyModule, null); - } - _Add.Invoke(context, d, obj); - } - return d; - } - - [RubyMethod("dump_stream", RubyMethodAttributes.PrivateSingleton)] - public static object DumpStream(CodeContext context, RubyModule self, [NotNull]params object[] args) { - object streamClass; - self.TryResolveConstant(SymbolTable.StringToId("Stream"), out streamClass); - object stream = _New.Invoke(context, streamClass as RubyModule, null); - foreach (object arg in args) { - _Add.Invoke(context, stream, arg); - } - return _Emit.Invoke(context, stream); - } - - [RubyMethod("quick_emit_node", RubyMethodAttributes.PrivateSingleton)] - public static object QuickEmitNode(CodeContext context, RubyModule self, BlockParam block, object arg, params object[] rest) { - if (block != null) { - return _Block.Invoke(context, block, arg); - } - return null; - } - - [RubyMethod("tagurize", RubyMethodAttributes.PrivateSingleton)] - public static object Tagurize(CodeContext context, RubyModule self, object arg) { - return RubyRepresenter.TagUri(context, self); - } - - private static RubyConstructor MakeContructor(TextReader reader) { - return new RubyConstructor(new Composer(new Parser(new Scanner(reader), YamlDocument.DefaultOptions.Version))); - } - - private static TextReader CheckYamlPort(object port) { - MutableString ms = port as MutableString; - if (ms != null) { - return new MutableStringReader(ms); - } - - string str = port as string; - if (str != null) { - return new StringReader(str); - } - - RubyIO io = port as RubyIO; - if (io != null) { - RubyIOOps.Binmode(io); - return new RubyIOReader(io); - } - - throw RubyExceptions.CreateTypeError("instance of IO needed"); - } - } - - [RubyModuleExtension(typeof(object))] + [RubyClass(Extends = typeof(object))] public static class YamlObjectOps { private static readonly DynamicSite _Dump = DynamicSite.Create(LibrarySites.InstanceCallAction("dump")); @@ -193,7 +66,7 @@ } } - [RubyModuleExtension(typeof(RubyClass))] + [RubyClass(Extends = typeof(RubyClass))] public static class YamlClassOps { [RubyMethod("to_yaml_node")] public static Node ToYamlNode(CodeContext/*!*/ context, object self, RubyRepresenter rep) { @@ -201,7 +74,7 @@ } } - [RubyModuleExtension(typeof(Hash))] + [RubyClass(Extends = typeof(Hash))] public static class YamlHashOps { [RubyMethod("to_yaml_node")] public static Node ToYamlNode(CodeContext/*!*/ context, Hash/*!*/ self, RubyRepresenter rep) { @@ -209,7 +82,7 @@ } } - [RubyModuleExtension(typeof(RubyArray))] + [RubyModule(Extends = typeof(RubyArray))] public static class YamlArrayOps { [RubyMethod("to_yaml_node")] public static Node ToYamlNode(CodeContext/*!*/ context, RubyArray/*!*/ self, RubyRepresenter rep) { @@ -217,7 +90,7 @@ } } - [RubyModuleExtension(typeof(RubyStruct))] + [RubyModule(Extends = typeof(RubyStruct))] public static class YamlStructOps { private static readonly DynamicSite _Members = DynamicSite.Create(LibrarySites.InstanceCallAction("members")); private static readonly DynamicSite _Values = DynamicSite.Create(LibrarySites.InstanceCallAction("values")); @@ -246,7 +119,7 @@ } } - [RubyModuleExtension(typeof(Exception))] + [RubyModule(Extends = typeof(Exception))] public static class YamlExceptionOps { private static readonly DynamicSite _Message = DynamicSite.Create(LibrarySites.InstanceCallAction("message")); @@ -266,7 +139,7 @@ } } - [RubyModuleExtension(typeof(MutableString))] + [RubyModule(Extends = typeof(MutableString))] public static class YamlStringOps { [RubyMethod("is_complex_yaml?")] public static bool IsComplexYaml(CodeContext/*!*/ context, MutableString/*!*/ self) { @@ -324,7 +197,7 @@ } } - [RubyModuleExtension(typeof(Numeric))] + [RubyModule(Extends = typeof(Numeric))] public static class YamlNumericOps { [RubyMethod("to_yaml_node")] public static Node ToYaml(CodeContext context, object self, RubyRepresenter rep) { @@ -342,7 +215,7 @@ } } - [RubyModuleExtension(typeof(Range))] + [RubyModule(Extends = typeof(Range))] public static class YamlRangeOps { private static readonly DynamicSite _Begin = DynamicSite.Create(LibrarySites.InstanceCallAction("begin")); private static readonly DynamicSite _End = DynamicSite.Create(LibrarySites.InstanceCallAction("end")); @@ -359,7 +232,7 @@ } } - [RubyModuleExtension(typeof(RubyRegex))] + [RubyModule(Extends = typeof(RubyRegex))] public static class YamlRegexpOps { [RubyMethod("to_yaml_node")] public static Node ToYaml(CodeContext context, object self, RubyRepresenter rep) { @@ -367,7 +240,7 @@ } } - [RubyModuleExtension(typeof(SymbolId))] + [RubyModule(Extends = typeof(SymbolId))] public static class YamlSymbolOps { [RubyMethod("to_yaml_node")] public static Node ToYaml(CodeContext context, object self, RubyRepresenter rep) { @@ -375,7 +248,7 @@ } } - [RubyModuleExtension(typeof(TrueClass))] + [RubyModule(Extends = typeof(TrueClass))] public static class YamlTrueOps { [RubyMethod("to_yaml_node")] public static Node ToYaml(CodeContext context, object self, RubyRepresenter rep) { @@ -387,7 +260,7 @@ } } - [RubyModuleExtension(typeof(FalseClass))] + [RubyModule(Extends = typeof(FalseClass))] public static class YamlFalseOps { [RubyMethod("to_yaml_node")] public static Node ToYaml(CodeContext context, object self, RubyRepresenter rep) { @@ -399,110 +272,11 @@ } } - [RubyModuleExtension(typeof(None))] + [RubyModule(Extends = typeof(None))] public static class YamlNilOps { [RubyMethod("to_yaml_node")] public static Node ToYaml(CodeContext context, object self, RubyRepresenter rep) { return rep.Scalar(context, self, null); } } - - #region helper classes - - internal class RubyIOWriter : TextWriter { - private readonly RubyIO _io; - - internal RubyIOWriter(RubyIO io) { - _io = io; - } - - public override Encoding Encoding { - get { - // TODO: return RubyIO encoding - throw new NotImplementedException(); - } - } - - public override void Write(char value) { - _io.Write(value); - } - - public override void Write(char[] buffer, int index, int count) { - _io.Write(buffer, index, count); - } - - public override void Flush() { - _io.Flush(); - } - } - - internal class RubyIOReader : TextReader { - private readonly RubyIO _io; - - internal RubyIOReader(RubyIO io) { - _io = io; - } - - public override int Peek() { - return _io.PeekChar() ?? -1; - } - public override int Read() { - return _io.GetChar() ?? -1; - } - } - - internal class MutableStringWriter : TextWriter { - private readonly MutableString _str = MutableString.Create(""); - - public override Encoding Encoding { - get { - // TODO: return MutableString encoding - throw new NotImplementedException(); - } - } - - public override void Write(char value) { - _str.Append(value); - } - - public override void Write(char[] buffer, int index, int count) { - // TODO: MutableString needs Append(char[], index, count) - _str.Append(new string(buffer), index, count); - } - - internal MutableString String { - get { return _str; } - } - } - - internal class MutableStringReader : TextReader { - private readonly MutableString _str; - private int _pos = 0; - - internal MutableStringReader(MutableString str) { - _str = str; - } - - public override int Peek() { - return _str.GetChar(_pos); - } - - public override int Read() { - return _pos < _str.Length ? _str.GetChar(_pos++) : -1; - } - - public override int Read(char[] buffer, int index, int count) { - int read = _str.Length - _pos; - if (read > 0) { - if (read > count) { - read = count; - } - _str.ConvertToString().CopyTo(_pos, buffer, index, read); - _pos += read; - } - return read; - } - } - - #endregion } =================================================================== branch, delete: $/Merlin_External/Languages/IronRuby/yaml/IronRuby.Libraries.Yaml/ClassOps.cs File: ClassOps.cs =================================================================== --- RubyYaml.cs (server) 5/17/2008 3:55 PM +++ [no target file] @@ -1,508 +1,0 @@ -?/***** BEGIN LICENSE BLOCK ***** - * Version: CPL 1.0 - * - * The contents of this file are subject to the Common Public - * License Version 1.0 (the "License"); you may not use this file - * except in compliance with the License. You may obtain a copy of - * the License at http://www.eclipse.org/legal/cpl-v10.html - * - * Software distributed under the License is distributed on an "AS - * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or - * implied. See the License for the specific language governing - * rights and limitations under the License. - * - * Copyright (C) 2007 Ola Bini - * Copyright (c) Microsoft Corporation. - * - ***** END LICENSE BLOCK *****/ - -using System; -using System.Collections; -using System.IO; -using System.Runtime.InteropServices; -using System.Text; -using Microsoft.Scripting; -using Microsoft.Scripting.Actions; -using Microsoft.Scripting.Ast; -using Microsoft.Scripting.Runtime; -using Ruby; -using Ruby.Builtins; -using Ruby.Extensions; -using Ruby.Runtime; - -namespace IronRuby.Libraries.Yaml { - - [RubyModule("YAML")] - public static class RubyYaml { - private readonly static DynamicSite _Block = CallSiteFactory.CreateSimpleCallSite(RubyContext.RubyBinder); - private static readonly DynamicSite _New = DynamicSite.Create(LibrarySites.InstanceCallAction("new", ArgumentKind.Simple)); - private static readonly DynamicSite _Add = DynamicSite.Create(LibrarySites.InstanceCallAction("add", ArgumentKind.Simple)); - private static readonly DynamicSite _Emit = DynamicSite.Create(LibrarySites.InstanceCallAction("emit")); - - [RubyMethod("dump", RubyMethodAttributes.PrivateSingleton)] - public static object Dump(CodeContext context, RubyModule self, object obj, [Optional]RubyIO io) { - return DumpAll(context, self, new object[] { obj }, io); - } - - [RubyMethod("dump_all", RubyMethodAttributes.PrivateSingleton)] - public static object DumpAll(CodeContext context, RubyModule self, [NotNull]IEnumerable objs, [Optional]RubyIO io) { - TextWriter writer; - if (io != null) { - writer = new RubyIOWriter(io); - } else { - writer = new MutableStringWriter(); - } - YamlOptions cfg = YamlDocument.DefaultOptions; - using (Serializer s = new Serializer(new Emitter(writer, cfg), cfg)) { - RubyRepresenter r = new RubyRepresenter(context, s, cfg); - foreach (object obj in objs) { - r.Represent(obj); - } - } - if (null != io) { - return io; - } else { - return ((MutableStringWriter)writer).String; - } - } - - [RubyMethod("load", RubyMethodAttributes.PrivateSingleton)] - public static object Load(CodeContext context, RubyModule self, object io) { - foreach (object obj in MakeContructor(CheckYamlPort(io))) { - return obj; - } - return null; - } - - [RubyMethod("load_file", RubyMethodAttributes.PrivateSingleton)] - public static object LoadFile(CodeContext context, RubyModule self, object arg) { - RubyClass file = RubyUtils.GetExecutionContext(context).GetClass(typeof(RubyFile)); - object io = RubyIOOps.Open(context, file, null, arg, MutableString.Create("r")); - return Load(context, self, io as RubyIO); - } - - [RubyMethod("each_document", RubyMethodAttributes.PrivateSingleton)] - [RubyMethod("load_documents", RubyMethodAttributes.PrivateSingleton)] - public static object EachDocument(CodeContext context, RubyModule self, BlockParam block, object io) { - RubyConstructor rc = MakeContructor(CheckYamlPort(io)); - if (block == null && rc.CheckData()) { - throw new LocalJumpError("no block given"); - } - foreach (object obj in rc) { - _Block.Invoke(context, block, obj); - } - return null; - } - - [RubyMethod("load_stream", RubyMethodAttributes.PrivateSingleton)] - public static object LoadStream(CodeContext context, RubyModule self, object io) { - RubyConstructor rc = MakeContructor(CheckYamlPort(io)); - object d = null; - foreach (object obj in rc) { - if (d == null) { - object streamClass; - self.TryResolveConstant(SymbolTable.StringToId("Stream"), out streamClass); - d = _New.Invoke(context, streamClass as RubyModule, null); - } - _Add.Invoke(context, d, obj); - } - return d; - } - - [RubyMethod("dump_stream", RubyMethodAttributes.PrivateSingleton)] - public static object DumpStream(CodeContext context, RubyModule self, [NotNull]params object[] args) { - object streamClass; - self.TryResolveConstant(SymbolTable.StringToId("Stream"), out streamClass); - object stream = _New.Invoke(context, streamClass as RubyModule, null); - foreach (object arg in args) { - _Add.Invoke(context, stream, arg); - } - return _Emit.Invoke(context, stream); - } - - [RubyMethod("quick_emit_node", RubyMethodAttributes.PrivateSingleton)] - public static object QuickEmitNode(CodeContext context, RubyModule self, BlockParam block, object arg, params object[] rest) { - if (block != null) { - return _Block.Invoke(context, block, arg); - } - return null; - } - - [RubyMethod("tagurize", RubyMethodAttributes.PrivateSingleton)] - public static object Tagurize(CodeContext context, RubyModule self, object arg) { - return RubyRepresenter.TagUri(context, self); - } - - private static RubyConstructor MakeContructor(TextReader reader) { - return new RubyConstructor(new Composer(new Parser(new Scanner(reader), YamlDocument.DefaultOptions.Version))); - } - - private static TextReader CheckYamlPort(object port) { - MutableString ms = port as MutableString; - if (ms != null) { - return new MutableStringReader(ms); - } - - string str = port as string; - if (str != null) { - return new StringReader(str); - } - - RubyIO io = port as RubyIO; - if (io != null) { - RubyIOOps.Binmode(io); - return new RubyIOReader(io); - } - - throw RubyExceptions.CreateTypeError("instance of IO needed"); - } - } - - [RubyModuleExtension(typeof(object))] - public static class YamlObjectOps { - private static readonly DynamicSite _Dump = DynamicSite.Create(LibrarySites.InstanceCallAction("dump")); - - [RubyMethod("to_yaml_properties")] - public static RubyArray/*!*/ ToYamlProperties(CodeContext/*!*/ context, object self) { - return ArrayOps.SortInPlace(context, Kernel.InstanceVariables(context, self), null); - } - - [RubyMethod("to_yaml_style")] - public static object ToYamlStyle(CodeContext/*!*/ context, object self) { - return null; - } - - [RubyMethod("to_yaml_node")] - public static object ToYamlProperties(CodeContext/*!*/ context, object self, RubyRepresenter rep) { - Hash map = new Hash(context); - RubyRepresenter.AddYamlProperties(context, self, map); - return rep.Map(context, self, map); - } - - [RubyMethod("to_yaml")] - public static object ToYaml(CodeContext/*!*/ context, object self, params object[] args) { - // TODO: does this need to be a dynamic call? - return _Dump.Invoke(context, RubyUtils.GetExecutionContext(context).GetModule(typeof(RubyYaml)), self); - } - - [RubyMethod("taguri")] - public static MutableString TagUri(CodeContext/*!*/ context, object self) { - MutableString str = MutableString.Create("!ruby/object:"); - str.Append(RubyUtils.GetClassName(context, self)); - return str; - } - } - - [RubyModuleExtension(typeof(RubyClass))] - public static class YamlClassOps { - [RubyMethod("to_yaml_node")] - public static Node ToYamlNode(CodeContext/*!*/ context, object self, RubyRepresenter rep) { - throw RubyExceptions.CreateTypeError("can't dump anonymous class " + RubyUtils.GetClassName(context, self)); - } - } - - [RubyModuleExtension(typeof(Hash))] - public static class YamlHashOps { - [RubyMethod("to_yaml_node")] - public static Node ToYamlNode(CodeContext/*!*/ context, Hash/*!*/ self, RubyRepresenter rep) { - return rep.Map(context, self, self); - } - } - - [RubyModuleExtension(typeof(RubyArray))] - public static class YamlArrayOps { - [RubyMethod("to_yaml_node")] - public static Node ToYamlNode(CodeContext/*!*/ context, RubyArray/*!*/ self, RubyRepresenter rep) { - return rep.Sequence(context, self, self); - } - } - - [RubyModuleExtension(typeof(RubyStruct))] - public static class YamlStructOps { - private static readonly DynamicSite _Members = DynamicSite.Create(LibrarySites.InstanceCallAction("members")); - private static readonly DynamicSite _Values = DynamicSite.Create(LibrarySites.InstanceCallAction("values")); - - [RubyMethod("to_yaml_node")] - public static Node ToYamlNode(CodeContext/*!*/ context, RubyStruct/*!*/ self, RubyRepresenter rep) { - RubyArray members = _Members.Invoke(context, self); - RubyArray values = _Values.Invoke(context, self); - if (members.Count != values.Count) { - throw new ArgumentException("Struct values and members returned arrays of different lengths"); - } - - Hash map = new Hash(context); - for (int i = 0; i < members.Count; i++) { - IDictionaryOps.SetElement(context, map, members[i], values[i]); - } - RubyRepresenter.AddYamlProperties(context, self, map); - return rep.Map(context, self, map); - } - - [RubyMethod("taguri")] - public static MutableString TagUri(CodeContext/*!*/ context, object self) { - MutableString str = MutableString.Create("!ruby/struct:"); - str.Append(RubyUtils.GetClassName(context, self)); - return str; - } - } - - [RubyModuleExtension(typeof(Exception))] - public static class YamlExceptionOps { - private static readonly DynamicSite _Message = DynamicSite.Create(LibrarySites.InstanceCallAction("message")); - - [RubyMethod("to_yaml_node")] - public static Node ToYamlNode(CodeContext/*!*/ context, Exception/*!*/ self, RubyRepresenter rep) { - Hash map = new Hash(context); - map.Add(MutableString.Create("message"), _Message.Invoke(context, self)); - RubyRepresenter.AddYamlProperties(context, self, map); - return rep.Map(context, self, map); - } - - [RubyMethod("taguri")] - public static MutableString TagUri(CodeContext/*!*/ context, object self) { - MutableString str = MutableString.Create("!ruby/exception:"); - str.Append(RubyUtils.GetClassName(context, self)); - return str; - } - } - - [RubyModuleExtension(typeof(MutableString))] - public static class YamlStringOps { - [RubyMethod("is_complex_yaml?")] - public static bool IsComplexYaml(CodeContext/*!*/ context, MutableString/*!*/ self) { - return RubyOps.IsTrue(RubyRepresenter.ToYamlStyle(context, self)) || - RubyRepresenter.ToYamlProperties(context, self).Count == 0 || - AFTER_NEWLINE(self.ConvertToString()); - } - - // True if has a newline & something is after it - private static bool AFTER_NEWLINE(string str) { - int i = str.IndexOf('\n'); - return i >= 0 && i < str.Length - 1; - } - - private static readonly DynamicSite _Empty = DynamicSite.Create(LibrarySites.InstanceCallAction("empty?")); - private static readonly DynamicSite _IsBinaryData = DynamicSite.Create(LibrarySites.InstanceCallAction("is_binary_data?")); - - [RubyMethod("is_binary_data?")] - public static object IsBinaryData(CodeContext/*!*/ context, MutableString/*!*/ self) { - if (RubyOps.IsTrue(_Empty.Invoke(context, self))) { - return null; - } - // TODO: should be self.IndexOf(0)? - return self.IndexOf('\0') != -1; - } - - [RubyMethod("to_yaml_node")] - public static Node ToYamlNode(CodeContext/*!*/ context, MutableString/*!*/ self, RubyRepresenter rep) { - if (RubyOps.IsTrue(_IsBinaryData.Invoke(context, self))) { - return rep.BaseCreateNode(self.ConvertToBytes()); - } - - string str = self.ConvertToString(); - RubyArray props = RubyRepresenter.ToYamlProperties(context, self); - if (props.Count == 0) { - MutableString taguri = RubyRepresenter.TagUri(context, self); - - char style = (char)0; - if (str.StartsWith(":")) { - style = '"'; - } else { - MutableString styleStr = RubyRepresenter.ToYamlStyle(context, self) as MutableString; - if (styleStr != null && styleStr.Length > 0) { - style = styleStr.GetChar(0); - } - } - - return rep.Scalar(taguri != null ? taguri.ConvertToString() : "", str, style); - } - - Hash map = new Hash(context); - map.Add(MutableString.Create("str"), str); - RubyRepresenter.AddYamlProperties(context, self, map, props); - return rep.Map(context, self, map); - } - } - - [RubyModuleExtension(typeof(Numeric))] - public static class YamlNumericOps { - [RubyMethod("to_yaml_node")] - public static Node ToYaml(CodeContext context, object self, RubyRepresenter rep) { - MutableString str = RubySites.ToS(context, self); - if (str != null) { - if (str.Equals("Infinity")) { - str = MutableString.Create(".Inf"); - } else if (str.Equals("-Infinity")) { - str = MutableString.Create("-.Inf"); - } else if (str.Equals("NaN")) { - str = MutableString.Create(".NaN"); - } - } - return rep.Scalar(context, self, str); - } - } - - [RubyModuleExtension(typeof(Range))] - public static class YamlRangeOps { - private static readonly DynamicSite _Begin = DynamicSite.Create(LibrarySites.InstanceCallAction("begin")); - private static readonly DynamicSite _End = DynamicSite.Create(LibrarySites.InstanceCallAction("end")); - private static readonly DynamicSite _ExcludeEnd = DynamicSite.Create(LibrarySites.InstanceCallAction("exclude_end?")); - - [RubyMethod("to_yaml_node")] - public static Node ToYaml(CodeContext context, object self, RubyRepresenter rep) { - Hash map = new Hash(context); - map.Add(MutableString.Create("begin"), _Begin.Invoke(context, self)); - map.Add(MutableString.Create("end"), _End.Invoke(context, self)); - map.Add(MutableString.Create("excl"), _ExcludeEnd.Invoke(context, self)); - RubyRepresenter.AddYamlProperties(context, self, map); - return rep.Map(context, self, map); - } - } - - [RubyModuleExtension(typeof(RubyRegex))] - public static class YamlRegexpOps { - [RubyMethod("to_yaml_node")] - public static Node ToYaml(CodeContext context, object self, RubyRepresenter rep) { - return rep.Scalar(context, self, RubySites.Inspect(context, self)); - } - } - - [RubyModuleExtension(typeof(SymbolId))] - public static class YamlSymbolOps { - [RubyMethod("to_yaml_node")] - public static Node ToYaml(CodeContext context, object self, RubyRepresenter rep) { - return rep.Scalar(context, self, RubySites.Inspect(context, self)); - } - } - - [RubyModuleExtension(typeof(TrueClass))] - public static class YamlTrueOps { - [RubyMethod("to_yaml_node")] - public static Node ToYaml(CodeContext context, object self, RubyRepresenter rep) { - return rep.Scalar(context, self, RubySites.ToS(context, self)); - } - [RubyMethod("taguri")] - public static MutableString TagUri(object self) { - return MutableString.Create("tag:yaml.org,2002:bool"); - } - } - - [RubyModuleExtension(typeof(FalseClass))] - public static class YamlFalseOps { - [RubyMethod("to_yaml_node")] - public static Node ToYaml(CodeContext context, object self, RubyRepresenter rep) { - return rep.Scalar(context, self, RubySites.ToS(context, self)); - } - [RubyMethod("taguri")] - public static MutableString TagUri(object self) { - return MutableString.Create("tag:yaml.org,2002:bool"); - } - } - - [RubyModuleExtension(typeof(None))] - public static class YamlNilOps { - [RubyMethod("to_yaml_node")] - public static Node ToYaml(CodeContext context, object self, RubyRepresenter rep) { - return rep.Scalar(context, self, null); - } - } - - #region helper classes - - internal class RubyIOWriter : TextWriter { - private readonly RubyIO _io; - - internal RubyIOWriter(RubyIO io) { - _io = io; - } - - public override Encoding Encoding { - get { - // TODO: return RubyIO encoding - throw new NotImplementedException(); - } - } - - public override void Write(char value) { - _io.Write(value); - } - - public override void Write(char[] buffer, int index, int count) { - _io.Write(buffer, index, count); - } - - public override void Flush() { - _io.Flush(); - } - } - - internal class RubyIOReader : TextReader { - private readonly RubyIO _io; - - internal RubyIOReader(RubyIO io) { - _io = io; - } - - public override int Peek() { - return _io.PeekChar() ?? -1; - } - public override int Read() { - return _io.GetChar() ?? -1; - } - } - - internal class MutableStringWriter : TextWriter { - private readonly MutableString _str = MutableString.Create(""); - - public override Encoding Encoding { - get { - // TODO: return MutableString encoding - throw new NotImplementedException(); - } - } - - public override void Write(char value) { - _str.Append(value); - } - - public override void Write(char[] buffer, int index, int count) { - // TODO: MutableString needs Append(char[], index, count) - _str.Append(new string(buffer), index, count); - } - - internal MutableString String { - get { return _str; } - } - } - - internal class MutableStringReader : TextReader { - private readonly MutableString _str; - private int _pos = 0; - - internal MutableStringReader(MutableString str) { - _str = str; - } - - public override int Peek() { - return _str.GetChar(_pos); - } - - public override int Read() { - return _pos < _str.Length ? _str.GetChar(_pos++) : -1; - } - - public override int Read(char[] buffer, int index, int count) { - int read = _str.Length - _pos; - if (read > 0) { - if (read > count) { - read = count; - } - _str.ConvertToString().CopyTo(_pos, buffer, index, read); - _pos += read; - } - return read; - } - } - - #endregion -} =================================================================== branch, delete: $/Merlin_External/Languages/IronRuby/yaml/IronRuby.Libraries.Yaml/ExceptionOps.cs File: ExceptionOps.cs =================================================================== --- RubyYaml.cs (server) 5/17/2008 3:55 PM +++ [no target file] @@ -1,508 +1,0 @@ -?/***** BEGIN LICENSE BLOCK ***** - * Version: CPL 1.0 - * - * The contents of this file are subject to the Common Public - * License Version 1.0 (the "License"); you may not use this file - * except in compliance with the License. You may obtain a copy of - * the License at http://www.eclipse.org/legal/cpl-v10.html - * - * Software distributed under the License is distributed on an "AS - * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or - * implied. See the License for the specific language governing - * rights and limitations under the License. - * - * Copyright (C) 2007 Ola Bini - * Copyright (c) Microsoft Corporation. - * - ***** END LICENSE BLOCK *****/ - -using System; -using System.Collections; -using System.IO; -using System.Runtime.InteropServices; -using System.Text; -using Microsoft.Scripting; -using Microsoft.Scripting.Actions; -using Microsoft.Scripting.Ast; -using Microsoft.Scripting.Runtime; -using Ruby; -using Ruby.Builtins; -using Ruby.Extensions; -using Ruby.Runtime; - -namespace IronRuby.Libraries.Yaml { - - [RubyModule("YAML")] - public static class RubyYaml { - private readonly static DynamicSite _Block = CallSiteFactory.CreateSimpleCallSite(RubyContext.RubyBinder); - private static readonly DynamicSite _New = DynamicSite.Create(LibrarySites.InstanceCallAction("new", ArgumentKind.Simple)); - private static readonly DynamicSite _Add = DynamicSite.Create(LibrarySites.InstanceCallAction("add", ArgumentKind.Simple)); - private static readonly DynamicSite _Emit = DynamicSite.Create(LibrarySites.InstanceCallAction("emit")); - - [RubyMethod("dump", RubyMethodAttributes.PrivateSingleton)] - public static object Dump(CodeContext context, RubyModule self, object obj, [Optional]RubyIO io) { - return DumpAll(context, self, new object[] { obj }, io); - } - - [RubyMethod("dump_all", RubyMethodAttributes.PrivateSingleton)] - public static object DumpAll(CodeContext context, RubyModule self, [NotNull]IEnumerable objs, [Optional]RubyIO io) { - TextWriter writer; - if (io != null) { - writer = new RubyIOWriter(io); - } else { - writer = new MutableStringWriter(); - } - YamlOptions cfg = YamlDocument.DefaultOptions; - using (Serializer s = new Serializer(new Emitter(writer, cfg), cfg)) { - RubyRepresenter r = new RubyRepresenter(context, s, cfg); - foreach (object obj in objs) { - r.Represent(obj); - } - } - if (null != io) { - return io; - } else { - return ((MutableStringWriter)writer).String; - } - } - - [RubyMethod("load", RubyMethodAttributes.PrivateSingleton)] - public static object Load(CodeContext context, RubyModule self, object io) { - foreach (object obj in MakeContructor(CheckYamlPort(io))) { - return obj; - } - return null; - } - - [RubyMethod("load_file", RubyMethodAttributes.PrivateSingleton)] - public static object LoadFile(CodeContext context, RubyModule self, object arg) { - RubyClass file = RubyUtils.GetExecutionContext(context).GetClass(typeof(RubyFile)); - object io = RubyIOOps.Open(context, file, null, arg, MutableString.Create("r")); - return Load(context, self, io as RubyIO); - } - - [RubyMethod("each_document", RubyMethodAttributes.PrivateSingleton)] - [RubyMethod("load_documents", RubyMethodAttributes.PrivateSingleton)] - public static object EachDocument(CodeContext context, RubyModule self, BlockParam block, object io) { - RubyConstructor rc = MakeContructor(CheckYamlPort(io)); - if (block == null && rc.CheckData()) { - throw new LocalJumpError("no block given"); - } - foreach (object obj in rc) { - _Block.Invoke(context, block, obj); - } - return null; - } - - [RubyMethod("load_stream", RubyMethodAttributes.PrivateSingleton)] - public static object LoadStream(CodeContext context, RubyModule self, object io) { - RubyConstructor rc = MakeContructor(CheckYamlPort(io)); - object d = null; - foreach (object obj in rc) { - if (d == null) { - object streamClass; - self.TryResolveConstant(SymbolTable.StringToId("Stream"), out streamClass); - d = _New.Invoke(context, streamClass as RubyModule, null); - } - _Add.Invoke(context, d, obj); - } - return d; - } - - [RubyMethod("dump_stream", RubyMethodAttributes.PrivateSingleton)] - public static object DumpStream(CodeContext context, RubyModule self, [NotNull]params object[] args) { - object streamClass; - self.TryResolveConstant(SymbolTable.StringToId("Stream"), out streamClass); - object stream = _New.Invoke(context, streamClass as RubyModule, null); - foreach (object arg in args) { - _Add.Invoke(context, stream, arg); - } - return _Emit.Invoke(context, stream); - } - - [RubyMethod("quick_emit_node", RubyMethodAttributes.PrivateSingleton)] - public static object QuickEmitNode(CodeContext context, RubyModule self, BlockParam block, object arg, params object[] rest) { - if (block != null) { - return _Block.Invoke(context, block, arg); - } - return null; - } - - [RubyMethod("tagurize", RubyMethodAttributes.PrivateSingleton)] - public static object Tagurize(CodeContext context, RubyModule self, object arg) { - return RubyRepresenter.TagUri(context, self); - } - - private static RubyConstructor MakeContructor(TextReader reader) { - return new RubyConstructor(new Composer(new Parser(new Scanner(reader), YamlDocument.DefaultOptions.Version))); - } - - private static TextReader CheckYamlPort(object port) { - MutableString ms = port as MutableString; - if (ms != null) { - return new MutableStringReader(ms); - } - - string str = port as string; - if (str != null) { - return new StringReader(str); - } - - RubyIO io = port as RubyIO; - if (io != null) { - RubyIOOps.Binmode(io); - return new RubyIOReader(io); - } - - throw RubyExceptions.CreateTypeError("instance of IO needed"); - } - } - - [RubyModuleExtension(typeof(object))] - public static class YamlObjectOps { - private static readonly DynamicSite _Dump = DynamicSite.Create(LibrarySites.InstanceCallAction("dump")); - - [RubyMethod("to_yaml_properties")] - public static RubyArray/*!*/ ToYamlProperties(CodeContext/*!*/ context, object self) { - return ArrayOps.SortInPlace(context, Kernel.InstanceVariables(context, self), null); - } - - [RubyMethod("to_yaml_style")] - public static object ToYamlStyle(CodeContext/*!*/ context, object self) { - return null; - } - - [RubyMethod("to_yaml_node")] - public static object ToYamlProperties(CodeContext/*!*/ context, object self, RubyRepresenter rep) { - Hash map = new Hash(context); - RubyRepresenter.AddYamlProperties(context, self, map); - return rep.Map(context, self, map); - } - - [RubyMethod("to_yaml")] - public static object ToYaml(CodeContext/*!*/ context, object self, params object[] args) { - // TODO: does this need to be a dynamic call? - return _Dump.Invoke(context, RubyUtils.GetExecutionContext(context).GetModule(typeof(RubyYaml)), self); - } - - [RubyMethod("taguri")] - public static MutableString TagUri(CodeContext/*!*/ context, object self) { - MutableString str = MutableString.Create("!ruby/object:"); - str.Append(RubyUtils.GetClassName(context, self)); - return str; - } - } - - [RubyModuleExtension(typeof(RubyClass))] - public static class YamlClassOps { - [RubyMethod("to_yaml_node")] - public static Node ToYamlNode(CodeContext/*!*/ context, object self, RubyRepresenter rep) { - throw RubyExceptions.CreateTypeError("can't dump anonymous class " + RubyUtils.GetClassName(context, self)); - } - } - - [RubyModuleExtension(typeof(Hash))] - public static class YamlHashOps { - [RubyMethod("to_yaml_node")] - public static Node ToYamlNode(CodeContext/*!*/ context, Hash/*!*/ self, RubyRepresenter rep) { - return rep.Map(context, self, self); - } - } - - [RubyModuleExtension(typeof(RubyArray))] - public static class YamlArrayOps { - [RubyMethod("to_yaml_node")] - public static Node ToYamlNode(CodeContext/*!*/ context, RubyArray/*!*/ self, RubyRepresenter rep) { - return rep.Sequence(context, self, self); - } - } - - [RubyModuleExtension(typeof(RubyStruct))] - public static class YamlStructOps { - private static readonly DynamicSite _Members = DynamicSite.Create(LibrarySites.InstanceCallAction("members")); - private static readonly DynamicSite _Values = DynamicSite.Create(LibrarySites.InstanceCallAction("values")); - - [RubyMethod("to_yaml_node")] - public static Node ToYamlNode(CodeContext/*!*/ context, RubyStruct/*!*/ self, RubyRepresenter rep) { - RubyArray members = _Members.Invoke(context, self); - RubyArray values = _Values.Invoke(context, self); - if (members.Count != values.Count) { - throw new ArgumentException("Struct values and members returned arrays of different lengths"); - } - - Hash map = new Hash(context); - for (int i = 0; i < members.Count; i++) { - IDictionaryOps.SetElement(context, map, members[i], values[i]); - } - RubyRepresenter.AddYamlProperties(context, self, map); - return rep.Map(context, self, map); - } - - [RubyMethod("taguri")] - public static MutableString TagUri(CodeContext/*!*/ context, object self) { - MutableString str = MutableString.Create("!ruby/struct:"); - str.Append(RubyUtils.GetClassName(context, self)); - return str; - } - } - - [RubyModuleExtension(typeof(Exception))] - public static class YamlExceptionOps { - private static readonly DynamicSite _Message = DynamicSite.Create(LibrarySites.InstanceCallAction("message")); - - [RubyMethod("to_yaml_node")] - public static Node ToYamlNode(CodeContext/*!*/ context, Exception/*!*/ self, RubyRepresenter rep) { - Hash map = new Hash(context); - map.Add(MutableString.Create("message"), _Message.Invoke(context, self)); - RubyRepresenter.AddYamlProperties(context, self, map); - return rep.Map(context, self, map); - } - - [RubyMethod("taguri")] - public static MutableString TagUri(CodeContext/*!*/ context, object self) { - MutableString str = MutableString.Create("!ruby/exception:"); - str.Append(RubyUtils.GetClassName(context, self)); - return str; - } - } - - [RubyModuleExtension(typeof(MutableString))] - public static class YamlStringOps { - [RubyMethod("is_complex_yaml?")] - public static bool IsComplexYaml(CodeContext/*!*/ context, MutableString/*!*/ self) { - return RubyOps.IsTrue(RubyRepresenter.ToYamlStyle(context, self)) || - RubyRepresenter.ToYamlProperties(context, self).Count == 0 || - AFTER_NEWLINE(self.ConvertToString()); - } - - // True if has a newline & something is after it - private static bool AFTER_NEWLINE(string str) { - int i = str.IndexOf('\n'); - return i >= 0 && i < str.Length - 1; - } - - private static readonly DynamicSite _Empty = DynamicSite.Create(LibrarySites.InstanceCallAction("empty?")); - private static readonly DynamicSite _IsBinaryData = DynamicSite.Create(LibrarySites.InstanceCallAction("is_binary_data?")); - - [RubyMethod("is_binary_data?")] - public static object IsBinaryData(CodeContext/*!*/ context, MutableString/*!*/ self) { - if (RubyOps.IsTrue(_Empty.Invoke(context, self))) { - return null; - } - // TODO: should be self.IndexOf(0)? - return self.IndexOf('\0') != -1; - } - - [RubyMethod("to_yaml_node")] - public static Node ToYamlNode(CodeContext/*!*/ context, MutableString/*!*/ self, RubyRepresenter rep) { - if (RubyOps.IsTrue(_IsBinaryData.Invoke(context, self))) { - return rep.BaseCreateNode(self.ConvertToBytes()); - } - - string str = self.ConvertToString(); - RubyArray props = RubyRepresenter.ToYamlProperties(context, self); - if (props.Count == 0) { - MutableString taguri = RubyRepresenter.TagUri(context, self); - - char style = (char)0; - if (str.StartsWith(":")) { - style = '"'; - } else { - MutableString styleStr = RubyRepresenter.ToYamlStyle(context, self) as MutableString; - if (styleStr != null && styleStr.Length > 0) { - style = styleStr.GetChar(0); - } - } - - return rep.Scalar(taguri != null ? taguri.ConvertToString() : "", str, style); - } - - Hash map = new Hash(context); - map.Add(MutableString.Create("str"), str); - RubyRepresenter.AddYamlProperties(context, self, map, props); - return rep.Map(context, self, map); - } - } - - [RubyModuleExtension(typeof(Numeric))] - public static class YamlNumericOps { - [RubyMethod("to_yaml_node")] - public static Node ToYaml(CodeContext context, object self, RubyRepresenter rep) { - MutableString str = RubySites.ToS(context, self); - if (str != null) { - if (str.Equals("Infinity")) { - str = MutableString.Create(".Inf"); - } else if (str.Equals("-Infinity")) { - str = MutableString.Create("-.Inf"); - } else if (str.Equals("NaN")) { - str = MutableString.Create(".NaN"); - } - } - return rep.Scalar(context, self, str); - } - } - - [RubyModuleExtension(typeof(Range))] - public static class YamlRangeOps { - private static readonly DynamicSite _Begin = DynamicSite.Create(LibrarySites.InstanceCallAction("begin")); - private static readonly DynamicSite _End = DynamicSite.Create(LibrarySites.InstanceCallAction("end")); - private static readonly DynamicSite _ExcludeEnd = DynamicSite.Create(LibrarySites.InstanceCallAction("exclude_end?")); - - [RubyMethod("to_yaml_node")] - public static Node ToYaml(CodeContext context, object self, RubyRepresenter rep) { - Hash map = new Hash(context); - map.Add(MutableString.Create("begin"), _Begin.Invoke(context, self)); - map.Add(MutableString.Create("end"), _End.Invoke(context, self)); - map.Add(MutableString.Create("excl"), _ExcludeEnd.Invoke(context, self)); - RubyRepresenter.AddYamlProperties(context, self, map); - return rep.Map(context, self, map); - } - } - - [RubyModuleExtension(typeof(RubyRegex))] - public static class YamlRegexpOps { - [RubyMethod("to_yaml_node")] - public static Node ToYaml(CodeContext context, object self, RubyRepresenter rep) { - return rep.Scalar(context, self, RubySites.Inspect(context, self)); - } - } - - [RubyModuleExtension(typeof(SymbolId))] - public static class YamlSymbolOps { - [RubyMethod("to_yaml_node")] - public static Node ToYaml(CodeContext context, object self, RubyRepresenter rep) { - return rep.Scalar(context, self, RubySites.Inspect(context, self)); - } - } - - [RubyModuleExtension(typeof(TrueClass))] - public static class YamlTrueOps { - [RubyMethod("to_yaml_node")] - public static Node ToYaml(CodeContext context, object self, RubyRepresenter rep) { - return rep.Scalar(context, self, RubySites.ToS(context, self)); - } - [RubyMethod("taguri")] - public static MutableString TagUri(object self) { - return MutableString.Create("tag:yaml.org,2002:bool"); - } - } - - [RubyModuleExtension(typeof(FalseClass))] - public static class YamlFalseOps { - [RubyMethod("to_yaml_node")] - public static Node ToYaml(CodeContext context, object self, RubyRepresenter rep) { - return rep.Scalar(context, self, RubySites.ToS(context, self)); - } - [RubyMethod("taguri")] - public static MutableString TagUri(object self) { - return MutableString.Create("tag:yaml.org,2002:bool"); - } - } - - [RubyModuleExtension(typeof(None))] - public static class YamlNilOps { - [RubyMethod("to_yaml_node")] - public static Node ToYaml(CodeContext context, object self, RubyRepresenter rep) { - return rep.Scalar(context, self, null); - } - } - - #region helper classes - - internal class RubyIOWriter : TextWriter { - private readonly RubyIO _io; - - internal RubyIOWriter(RubyIO io) { - _io = io; - } - - public override Encoding Encoding { - get { - // TODO: return RubyIO encoding - throw new NotImplementedException(); - } - } - - public override void Write(char value) { - _io.Write(value); - } - - public override void Write(char[] buffer, int index, int count) { - _io.Write(buffer, index, count); - } - - public override void Flush() { - _io.Flush(); - } - } - - internal class RubyIOReader : TextReader { - private readonly RubyIO _io; - - internal RubyIOReader(RubyIO io) { - _io = io; - } - - public override int Peek() { - return _io.PeekChar() ?? -1; - } - public override int Read() { - return _io.GetChar() ?? -1; - } - } - - internal class MutableStringWriter : TextWriter { - private readonly MutableString _str = MutableString.Create(""); - - public override Encoding Encoding { - get { - // TODO: return MutableString encoding - throw new NotImplementedException(); - } - } - - public override void Write(char value) { - _str.Append(value); - } - - public override void Write(char[] buffer, int index, int count) { - // TODO: MutableString needs Append(char[], index, count) - _str.Append(new string(buffer), index, count); - } - - internal MutableString String { - get { return _str; } - } - } - - internal class MutableStringReader : TextReader { - private readonly MutableString _str; - private int _pos = 0; - - internal MutableStringReader(MutableString str) { - _str = str; - } - - public override int Peek() { - return _str.GetChar(_pos); - } - - public override int Read() { - return _pos < _str.Length ? _str.GetChar(_pos++) : -1; - } - - public override int Read(char[] buffer, int index, int count) { - int read = _str.Length - _pos; - if (read > 0) { - if (read > count) { - read = count; - } - _str.ConvertToString().CopyTo(_pos, buffer, index, read); - _pos += read; - } - return read; - } - } - - #endregion -} =================================================================== add: $/Merlin_External/Languages/IronRuby/yaml/IronRuby.Libraries.Yaml/GenerateInitializers.cmd File: GenerateInitializers.cmd =================================================================== --- [no source file] +++ Shelved Change: $/Merlin_External/Languages/IronRuby/yaml/IronRuby.Libraries.Yaml/GenerateInitializers.cmd;RubyLibsAndYaml @@ -1,0 +1,1 @@ +"%MERLIN_ROOT%\Bin\Debug\ClassInitGenerator" "%MERLIN_ROOT%\Bin\Debug\IronRuby.Libraries.Yaml.dll" /libraries:Ruby.StandardLibrary.Yaml /out:%~dp0\Initializer.Generated.cs =================================================================== branch, delete: $/Merlin_External/Languages/IronRuby/yaml/IronRuby.Libraries.Yaml/HashOps.cs File: HashOps.cs =================================================================== --- RubyYaml.cs (server) 5/17/2008 3:55 PM +++ [no target file] @@ -1,508 +1,0 @@ -?/***** BEGIN LICENSE BLOCK ***** - * Version: CPL 1.0 - * - * The contents of this file are subject to the Common Public - * License Version 1.0 (the "License"); you may not use this file - * except in compliance with the License. You may obtain a copy of - * the License at http://www.eclipse.org/legal/cpl-v10.html - * - * Software distributed under the License is distributed on an "AS - * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or - * implied. See the License for the specific language governing - * rights and limitations under the License. - * - * Copyright (C) 2007 Ola Bini - * Copyright (c) Microsoft Corporation. - * - ***** END LICENSE BLOCK *****/ - -using System; -using System.Collections; -using System.IO; -using System.Runtime.InteropServices; -using System.Text; -using Microsoft.Scripting; -using Microsoft.Scripting.Actions; -using Microsoft.Scripting.Ast; -using Microsoft.Scripting.Runtime; -using Ruby; -using Ruby.Builtins; -using Ruby.Extensions; -using Ruby.Runtime; - -namespace IronRuby.Libraries.Yaml { - - [RubyModule("YAML")] - public static class RubyYaml { - private readonly static DynamicSite _Block = CallSiteFactory.CreateSimpleCallSite(RubyContext.RubyBinder); - private static readonly DynamicSite _New = DynamicSite.Create(LibrarySites.InstanceCallAction("new", ArgumentKind.Simple)); - private static readonly DynamicSite _Add = DynamicSite.Create(LibrarySites.InstanceCallAction("add", ArgumentKind.Simple)); - private static readonly DynamicSite _Emit = DynamicSite.Create(LibrarySites.InstanceCallAction("emit")); - - [RubyMethod("dump", RubyMethodAttributes.PrivateSingleton)] - public static object Dump(CodeContext context, RubyModule self, object obj, [Optional]RubyIO io) { - return DumpAll(context, self, new object[] { obj }, io); - } - - [RubyMethod("dump_all", RubyMethodAttributes.PrivateSingleton)] - public static object DumpAll(CodeContext context, RubyModule self, [NotNull]IEnumerable objs, [Optional]RubyIO io) { - TextWriter writer; - if (io != null) { - writer = new RubyIOWriter(io); - } else { - writer = new MutableStringWriter(); - } - YamlOptions cfg = YamlDocument.DefaultOptions; - using (Serializer s = new Serializer(new Emitter(writer, cfg), cfg)) { - RubyRepresenter r = new RubyRepresenter(context, s, cfg); - foreach (object obj in objs) { - r.Represent(obj); - } - } - if (null != io) { - return io; - } else { - return ((MutableStringWriter)writer).String; - } - } - - [RubyMethod("load", RubyMethodAttributes.PrivateSingleton)] - public static object Load(CodeContext context, RubyModule self, object io) { - foreach (object obj in MakeContructor(CheckYamlPort(io))) { - return obj; - } - return null; - } - - [RubyMethod("load_file", RubyMethodAttributes.PrivateSingleton)] - public static object LoadFile(CodeContext context, RubyModule self, object arg) { - RubyClass file = RubyUtils.GetExecutionContext(context).GetClass(typeof(RubyFile)); - object io = RubyIOOps.Open(context, file, null, arg, MutableString.Create("r")); - return Load(context, self, io as RubyIO); - } - - [RubyMethod("each_document", RubyMethodAttributes.PrivateSingleton)] - [RubyMethod("load_documents", RubyMethodAttributes.PrivateSingleton)] - public static object EachDocument(CodeContext context, RubyModule self, BlockParam block, object io) { - RubyConstructor rc = MakeContructor(CheckYamlPort(io)); - if (block == null && rc.CheckData()) { - throw new LocalJumpError("no block given"); - } - foreach (object obj in rc) { - _Block.Invoke(context, block, obj); - } - return null; - } - - [RubyMethod("load_stream", RubyMethodAttributes.PrivateSingleton)] - public static object LoadStream(CodeContext context, RubyModule self, object io) { - RubyConstructor rc = MakeContructor(CheckYamlPort(io)); - object d = null; - foreach (object obj in rc) { - if (d == null) { - object streamClass; - self.TryResolveConstant(SymbolTable.StringToId("Stream"), out streamClass); - d = _New.Invoke(context, streamClass as RubyModule, null); - } - _Add.Invoke(context, d, obj); - } - return d; - } - - [RubyMethod("dump_stream", RubyMethodAttributes.PrivateSingleton)] - public static object DumpStream(CodeContext context, RubyModule self, [NotNull]params object[] args) { - object streamClass; - self.TryResolveConstant(SymbolTable.StringToId("Stream"), out streamClass); - object stream = _New.Invoke(context, streamClass as RubyModule, null); - foreach (object arg in args) { - _Add.Invoke(context, stream, arg); - } - return _Emit.Invoke(context, stream); - } - - [RubyMethod("quick_emit_node", RubyMethodAttributes.PrivateSingleton)] - public static object QuickEmitNode(CodeContext context, RubyModule self, BlockParam block, object arg, params object[] rest) { - if (block != null) { - return _Block.Invoke(context, block, arg); - } - return null; - } - - [RubyMethod("tagurize", RubyMethodAttributes.PrivateSingleton)] - public static object Tagurize(CodeContext context, RubyModule self, object arg) { - return RubyRepresenter.TagUri(context, self); - } - - private static RubyConstructor MakeContructor(TextReader reader) { - return new RubyConstructor(new Composer(new Parser(new Scanner(reader), YamlDocument.DefaultOptions.Version))); - } - - private static TextReader CheckYamlPort(object port) { - MutableString ms = port as MutableString; - if (ms != null) { - return new MutableStringReader(ms); - } - - string str = port as string; - if (str != null) { - return new StringReader(str); - } - - RubyIO io = port as RubyIO; - if (io != null) { - RubyIOOps.Binmode(io); - return new RubyIOReader(io); - } - - throw RubyExceptions.CreateTypeError("instance of IO needed"); - } - } - - [RubyModuleExtension(typeof(object))] - public static class YamlObjectOps { - private static readonly DynamicSite _Dump = DynamicSite.Create(LibrarySites.InstanceCallAction("dump")); - - [RubyMethod("to_yaml_properties")] - public static RubyArray/*!*/ ToYamlProperties(CodeContext/*!*/ context, object self) { - return ArrayOps.SortInPlace(context, Kernel.InstanceVariables(context, self), null); - } - - [RubyMethod("to_yaml_style")] - public static object ToYamlStyle(CodeContext/*!*/ context, object self) { - return null; - } - - [RubyMethod("to_yaml_node")] - public static object ToYamlProperties(CodeContext/*!*/ context, object self, RubyRepresenter rep) { - Hash map = new Hash(context); - RubyRepresenter.AddYamlProperties(context, self, map); - return rep.Map(context, self, map); - } - - [RubyMethod("to_yaml")] - public static object ToYaml(CodeContext/*!*/ context, object self, params object[] args) { - // TODO: does this need to be a dynamic call? - return _Dump.Invoke(context, RubyUtils.GetExecutionContext(context).GetModule(typeof(RubyYaml)), self); - } - - [RubyMethod("taguri")] - public static MutableString TagUri(CodeContext/*!*/ context, object self) { - MutableString str = MutableString.Create("!ruby/object:"); - str.Append(RubyUtils.GetClassName(context, self)); - return str; - } - } - - [RubyModuleExtension(typeof(RubyClass))] - public static class YamlClassOps { - [RubyMethod("to_yaml_node")] - public static Node ToYamlNode(CodeContext/*!*/ context, object self, RubyRepresenter rep) { - throw RubyExceptions.CreateTypeError("can't dump anonymous class " + RubyUtils.GetClassName(context, self)); - } - } - - [RubyModuleExtension(typeof(Hash))] - public static class YamlHashOps { - [RubyMethod("to_yaml_node")] - public static Node ToYamlNode(CodeContext/*!*/ context, Hash/*!*/ self, RubyRepresenter rep) { - return rep.Map(context, self, self); - } - } - - [RubyModuleExtension(typeof(RubyArray))] - public static class YamlArrayOps { - [RubyMethod("to_yaml_node")] - public static Node ToYamlNode(CodeContext/*!*/ context, RubyArray/*!*/ self, RubyRepresenter rep) { - return rep.Sequence(context, self, self); - } - } - - [RubyModuleExtension(typeof(RubyStruct))] - public static class YamlStructOps { - private static readonly DynamicSite _Members = DynamicSite.Create(LibrarySites.InstanceCallAction("members")); - private static readonly DynamicSite _Values = DynamicSite.Create(LibrarySites.InstanceCallAction("values")); - - [RubyMethod("to_yaml_node")] - public static Node ToYamlNode(CodeContext/*!*/ context, RubyStruct/*!*/ self, RubyRepresenter rep) { - RubyArray members = _Members.Invoke(context, self); - RubyArray values = _Values.Invoke(context, self); - if (members.Count != values.Count) { - throw new ArgumentException("Struct values and members returned arrays of different lengths"); - } - - Hash map = new Hash(context); - for (int i = 0; i < members.Count; i++) { - IDictionaryOps.SetElement(context, map, members[i], values[i]); - } - RubyRepresenter.AddYamlProperties(context, self, map); - return rep.Map(context, self, map); - } - - [RubyMethod("taguri")] - public static MutableString TagUri(CodeContext/*!*/ context, object self) { - MutableString str = MutableString.Create("!ruby/struct:"); - str.Append(RubyUtils.GetClassName(context, self)); - return str; - } - } - - [RubyModuleExtension(typeof(Exception))] - public static class YamlExceptionOps { - private static readonly DynamicSite _Message = DynamicSite.Create(LibrarySites.InstanceCallAction("message")); - - [RubyMethod("to_yaml_node")] - public static Node ToYamlNode(CodeContext/*!*/ context, Exception/*!*/ self, RubyRepresenter rep) { - Hash map = new Hash(context); - map.Add(MutableString.Create("message"), _Message.Invoke(context, self)); - RubyRepresenter.AddYamlProperties(context, self, map); - return rep.Map(context, self, map); - } - - [RubyMethod("taguri")] - public static MutableString TagUri(CodeContext/*!*/ context, object self) { - MutableString str = MutableString.Create("!ruby/exception:"); - str.Append(RubyUtils.GetClassName(context, self)); - return str; - } - } - - [RubyModuleExtension(typeof(MutableString))] - public static class YamlStringOps { - [RubyMethod("is_complex_yaml?")] - public static bool IsComplexYaml(CodeContext/*!*/ context, MutableString/*!*/ self) { - return RubyOps.IsTrue(RubyRepresenter.ToYamlStyle(context, self)) || - RubyRepresenter.ToYamlProperties(context, self).Count == 0 || - AFTER_NEWLINE(self.ConvertToString()); - } - - // True if has a newline & something is after it - private static bool AFTER_NEWLINE(string str) { - int i = str.IndexOf('\n'); - return i >= 0 && i < str.Length - 1; - } - - private static readonly DynamicSite _Empty = DynamicSite.Create(LibrarySites.InstanceCallAction("empty?")); - private static readonly DynamicSite _IsBinaryData = DynamicSite.Create(LibrarySites.InstanceCallAction("is_binary_data?")); - - [RubyMethod("is_binary_data?")] - public static object IsBinaryData(CodeContext/*!*/ context, MutableString/*!*/ self) { - if (RubyOps.IsTrue(_Empty.Invoke(context, self))) { - return null; - } - // TODO: should be self.IndexOf(0)? - return self.IndexOf('\0') != -1; - } - - [RubyMethod("to_yaml_node")] - public static Node ToYamlNode(CodeContext/*!*/ context, MutableString/*!*/ self, RubyRepresenter rep) { - if (RubyOps.IsTrue(_IsBinaryData.Invoke(context, self))) { - return rep.BaseCreateNode(self.ConvertToBytes()); - } - - string str = self.ConvertToString(); - RubyArray props = RubyRepresenter.ToYamlProperties(context, self); - if (props.Count == 0) { - MutableString taguri = RubyRepresenter.TagUri(context, self); - - char style = (char)0; - if (str.StartsWith(":")) { - style = '"'; - } else { - MutableString styleStr = RubyRepresenter.ToYamlStyle(context, self) as MutableString; - if (styleStr != null && styleStr.Length > 0) { - style = styleStr.GetChar(0); - } - } - - return rep.Scalar(taguri != null ? taguri.ConvertToString() : "", str, style); - } - - Hash map = new Hash(context); - map.Add(MutableString.Create("str"), str); - RubyRepresenter.AddYamlProperties(context, self, map, props); - return rep.Map(context, self, map); - } - } - - [RubyModuleExtension(typeof(Numeric))] - public static class YamlNumericOps { - [RubyMethod("to_yaml_node")] - public static Node ToYaml(CodeContext context, object self, RubyRepresenter rep) { - MutableString str = RubySites.ToS(context, self); - if (str != null) { - if (str.Equals("Infinity")) { - str = MutableString.Create(".Inf"); - } else if (str.Equals("-Infinity")) { - str = MutableString.Create("-.Inf"); - } else if (str.Equals("NaN")) { - str = MutableString.Create(".NaN"); - } - } - return rep.Scalar(context, self, str); - } - } - - [RubyModuleExtension(typeof(Range))] - public static class YamlRangeOps { - private static readonly DynamicSite _Begin = DynamicSite.Create(LibrarySites.InstanceCallAction("begin")); - private static readonly DynamicSite _End = DynamicSite.Create(LibrarySites.InstanceCallAction("end")); - private static readonly DynamicSite _ExcludeEnd = DynamicSite.Create(LibrarySites.InstanceCallAction("exclude_end?")); - - [RubyMethod("to_yaml_node")] - public static Node ToYaml(CodeContext context, object self, RubyRepresenter rep) { - Hash map = new Hash(context); - map.Add(MutableString.Create("begin"), _Begin.Invoke(context, self)); - map.Add(MutableString.Create("end"), _End.Invoke(context, self)); - map.Add(MutableString.Create("excl"), _ExcludeEnd.Invoke(context, self)); - RubyRepresenter.AddYamlProperties(context, self, map); - return rep.Map(context, self, map); - } - } - - [RubyModuleExtension(typeof(RubyRegex))] - public static class YamlRegexpOps { - [RubyMethod("to_yaml_node")] - public static Node ToYaml(CodeContext context, object self, RubyRepresenter rep) { - return rep.Scalar(context, self, RubySites.Inspect(context, self)); - } - } - - [RubyModuleExtension(typeof(SymbolId))] - public static class YamlSymbolOps { - [RubyMethod("to_yaml_node")] - public static Node ToYaml(CodeContext context, object self, RubyRepresenter rep) { - return rep.Scalar(context, self, RubySites.Inspect(context, self)); - } - } - - [RubyModuleExtension(typeof(TrueClass))] - public static class YamlTrueOps { - [RubyMethod("to_yaml_node")] - public static Node ToYaml(CodeContext context, object self, RubyRepresenter rep) { - return rep.Scalar(context, self, RubySites.ToS(context, self)); - } - [RubyMethod("taguri")] - public static MutableString TagUri(object self) { - return MutableString.Create("tag:yaml.org,2002:bool"); - } - } - - [RubyModuleExtension(typeof(FalseClass))] - public static class YamlFalseOps { - [RubyMethod("to_yaml_node")] - public static Node ToYaml(CodeContext context, object self, RubyRepresenter rep) { - return rep.Scalar(context, self, RubySites.ToS(context, self)); - } - [RubyMethod("taguri")] - public static MutableString TagUri(object self) { - return MutableString.Create("tag:yaml.org,2002:bool"); - } - } - - [RubyModuleExtension(typeof(None))] - public static class YamlNilOps { - [RubyMethod("to_yaml_node")] - public static Node ToYaml(CodeContext context, object self, RubyRepresenter rep) { - return rep.Scalar(context, self, null); - } - } - - #region helper classes - - internal class RubyIOWriter : TextWriter { - private readonly RubyIO _io; - - internal RubyIOWriter(RubyIO io) { - _io = io; - } - - public override Encoding Encoding { - get { - // TODO: return RubyIO encoding - throw new NotImplementedException(); - } - } - - public override void Write(char value) { - _io.Write(value); - } - - public override void Write(char[] buffer, int index, int count) { - _io.Write(buffer, index, count); - } - - public override void Flush() { - _io.Flush(); - } - } - - internal class RubyIOReader : TextReader { - private readonly RubyIO _io; - - internal RubyIOReader(RubyIO io) { - _io = io; - } - - public override int Peek() { - return _io.PeekChar() ?? -1; - } - public override int Read() { - return _io.GetChar() ?? -1; - } - } - - internal class MutableStringWriter : TextWriter { - private readonly MutableString _str = MutableString.Create(""); - - public override Encoding Encoding { - get { - // TODO: return MutableString encoding - throw new NotImplementedException(); - } - } - - public override void Write(char value) { - _str.Append(value); - } - - public override void Write(char[] buffer, int index, int count) { - // TODO: MutableString needs Append(char[], index, count) - _str.Append(new string(buffer), index, count); - } - - internal MutableString String { - get { return _str; } - } - } - - internal class MutableStringReader : TextReader { - private readonly MutableString _str; - private int _pos = 0; - - internal MutableStringReader(MutableString str) { - _str = str; - } - - public override int Peek() { - return _str.GetChar(_pos); - } - - public override int Read() { - return _pos < _str.Length ? _str.GetChar(_pos++) : -1; - } - - public override int Read(char[] buffer, int index, int count) { - int read = _str.Length - _pos; - if (read > 0) { - if (read > count) { - read = count; - } - _str.ConvertToString().CopyTo(_pos, buffer, index, read); - _pos += read; - } - return read; - } - } - - #endregion -} =================================================================== add: $/Merlin_External/Languages/IronRuby/yaml/IronRuby.Libraries.Yaml/Initializer.Generated.cs File: Initializer.Generated.cs =================================================================== --- [no source file] +++ Shelved Change: $/Merlin_External/Languages/IronRuby/yaml/IronRuby.Libraries.Yaml/Initializer.Generated.cs;RubyLibsAndYaml @@ -1,0 +1,223 @@ +[assembly: Ruby.RubyLibraryAttribute(typeof(Ruby.StandardLibrary.Yaml.YamlLibraryInitializer))] + +namespace Ruby.StandardLibrary.Yaml { + public sealed class YamlLibraryInitializer : Ruby.Builtins.LibraryInitializer { + protected override void LoadModules() { + + + ExtendModule(typeof(Microsoft.Scripting.None), new System.Action(LoadMicrosoft__Scripting__None_Instance), null, Ruby.Builtins.RubyModule.EmptyArray); + ExtendModule(typeof(Microsoft.Scripting.SymbolId), new System.Action(LoadMicrosoft__Scripting__SymbolId_Instance), null, Ruby.Builtins.RubyModule.EmptyArray); + ExtendModule(typeof(Ruby.Builtins.FalseClass), new System.Action(LoadRuby__Builtins__FalseClass_Instance), null, Ruby.Builtins.RubyModule.EmptyArray); + ExtendClass(typeof(Ruby.Builtins.Hash), new System.Action(LoadRuby__Builtins__Hash_Instance), null, Ruby.Builtins.RubyModule.EmptyArray, null); + ExtendModule(typeof(Ruby.Builtins.MutableString), new System.Action(LoadRuby__Builtins__MutableString_Instance), null, Ruby.Builtins.RubyModule.EmptyArray); + ExtendModule(typeof(Ruby.Builtins.Numeric), new System.Action(LoadRuby__Builtins__Numeric_Instance), null, Ruby.Builtins.RubyModule.EmptyArray); + ExtendModule(typeof(Ruby.Builtins.Range), new System.Action(LoadRuby__Builtins__Range_Instance), null, Ruby.Builtins.RubyModule.EmptyArray); + ExtendModule(typeof(Ruby.Builtins.RubyArray), new System.Action(LoadRuby__Builtins__RubyArray_Instance), null, Ruby.Builtins.RubyModule.EmptyArray); + ExtendClass(typeof(Ruby.Builtins.RubyClass), new System.Action(LoadRuby__Builtins__RubyClass_Instance), null, Ruby.Builtins.RubyModule.EmptyArray, null); + ExtendModule(typeof(Ruby.Builtins.RubyRegex), new System.Action(LoadRuby__Builtins__RubyRegex_Instance), null, Ruby.Builtins.RubyModule.EmptyArray); + ExtendModule(typeof(Ruby.Builtins.RubyStruct), new System.Action(LoadRuby__Builtins__RubyStruct_Instance), null, Ruby.Builtins.RubyModule.EmptyArray); + ExtendModule(typeof(Ruby.Builtins.TrueClass), new System.Action(LoadRuby__Builtins__TrueClass_Instance), null, Ruby.Builtins.RubyModule.EmptyArray); + ExtendModule(typeof(System.Exception), new System.Action(LoadSystem__Exception_Instance), null, Ruby.Builtins.RubyModule.EmptyArray); + ExtendClass(typeof(System.Object), new System.Action(LoadSystem__Object_Instance), null, Ruby.Builtins.RubyModule.EmptyArray, null); + DefineGlobalModule("YAML", typeof(Ruby.StandardLibrary.Yaml.RubyYaml), null, new System.Action(LoadYAML_Class), Ruby.Builtins.RubyModule.EmptyArray); + } + + private void LoadMicrosoft__Scripting__None_Instance(Ruby.Builtins.RubyModule/*!*/ module) { + + module.DefineMethod("to_yaml_node", 0x9, new System.Delegate[] { + new Microsoft.Scripting.Utils.Function(Ruby.StandardLibrary.Yaml.YamlNilOps.ToYaml), + }); + + } + + private void LoadMicrosoft__Scripting__SymbolId_Instance(Ruby.Builtins.RubyModule/*!*/ module) { + + module.DefineMethod("to_yaml_node", 0x9, new System.Delegate[] { + new Microsoft.Scripting.Utils.Function(Ruby.StandardLibrary.Yaml.YamlSymbolOps.ToYaml), + }); + + } + + private void LoadRuby__Builtins__FalseClass_Instance(Ruby.Builtins.RubyModule/*!*/ module) { + + module.DefineMethod("taguri", 0x9, new System.Delegate[] { + new Microsoft.Scripting.Utils.Function(Ruby.StandardLibrary.Yaml.YamlFalseOps.TagUri), + }); + + module.DefineMethod("to_yaml_node", 0x9, new System.Delegate[] { + new Microsoft.Scripting.Utils.Function(Ruby.StandardLibrary.Yaml.YamlFalseOps.ToYaml), + }); + + } + + private void LoadRuby__Builtins__Hash_Instance(Ruby.Builtins.RubyModule/*!*/ module) { + + module.DefineMethod("to_yaml_node", 0x9, new System.Delegate[] { + new Microsoft.Scripting.Utils.Function(Ruby.StandardLibrary.Yaml.YamlHashOps.ToYamlNode), + }); + + } + + private void LoadRuby__Builtins__MutableString_Instance(Ruby.Builtins.RubyModule/*!*/ module) { + + module.DefineMethod("is_binary_data?", 0x9, new System.Delegate[] { + new Microsoft.Scripting.Utils.Function(Ruby.StandardLibrary.Yaml.YamlStringOps.IsBinaryData), + }); + + module.DefineMethod("is_complex_yaml?", 0x9, new System.Delegate[] { + new Microsoft.Scripting.Utils.Function(Ruby.StandardLibrary.Yaml.YamlStringOps.IsComplexYaml), + }); + + module.DefineMethod("to_yaml_node", 0x9, new System.Delegate[] { + new Microsoft.Scripting.Utils.Function(Ruby.StandardLibrary.Yaml.YamlStringOps.ToYamlNode), + }); + + } + + private void LoadRuby__Builtins__Numeric_Instance(Ruby.Builtins.RubyModule/*!*/ module) { + + module.DefineMethod("to_yaml_node", 0x9, new System.Delegate[] { + new Microsoft.Scripting.Utils.Function(Ruby.StandardLibrary.Yaml.YamlNumericOps.ToYaml), + }); + + } + + private void LoadRuby__Builtins__Range_Instance(Ruby.Builtins.RubyModule/*!*/ module) { + + module.DefineMethod("to_yaml_node", 0x9, new System.Delegate[] { + new Microsoft.Scripting.Utils.Function(Ruby.StandardLibrary.Yaml.YamlRangeOps.ToYaml), + }); + + } + + private void LoadRuby__Builtins__RubyArray_Instance(Ruby.Builtins.RubyModule/*!*/ module) { + + module.DefineMethod("to_yaml_node", 0x9, new System.Delegate[] { + new Microsoft.Scripting.Utils.Function(Ruby.StandardLibrary.Yaml.YamlArrayOps.ToYamlNode), + }); + + } + + private void LoadRuby__Builtins__RubyClass_Instance(Ruby.Builtins.RubyModule/*!*/ module) { + + module.DefineMethod("to_yaml_node", 0x9, new System.Delegate[] { + new Microsoft.Scripting.Utils.Function(Ruby.StandardLibrary.Yaml.YamlClassOps.ToYamlNode), + }); + + } + + private void LoadRuby__Builtins__RubyRegex_Instance(Ruby.Builtins.RubyModule/*!*/ module) { + + module.DefineMethod("to_yaml_node", 0x9, new System.Delegate[] { + new Microsoft.Scripting.Utils.Function(Ruby.StandardLibrary.Yaml.YamlRegexpOps.ToYaml), + }); + + } + + private void LoadRuby__Builtins__RubyStruct_Instance(Ruby.Builtins.RubyModule/*!*/ module) { + + module.DefineMethod("taguri", 0x9, new System.Delegate[] { + new Microsoft.Scripting.Utils.Function(Ruby.StandardLibrary.Yaml.YamlStructOps.TagUri), + }); + + module.DefineMethod("to_yaml_node", 0x9, new System.Delegate[] { + new Microsoft.Scripting.Utils.Function(Ruby.StandardLibrary.Yaml.YamlStructOps.ToYamlNode), + }); + + } + + private void LoadRuby__Builtins__TrueClass_Instance(Ruby.Builtins.RubyModule/*!*/ module) { + + module.DefineMethod("taguri", 0x9, new System.Delegate[] { + new Microsoft.Scripting.Utils.Function(Ruby.StandardLibrary.Yaml.YamlTrueOps.TagUri), + }); + + module.DefineMethod("to_yaml_node", 0x9, new System.Delegate[] { + new Microsoft.Scripting.Utils.Function(Ruby.StandardLibrary.Yaml.YamlTrueOps.ToYaml), + }); + + } + + private void LoadSystem__Exception_Instance(Ruby.Builtins.RubyModule/*!*/ module) { + + module.DefineMethod("taguri", 0x9, new System.Delegate[] { + new Microsoft.Scripting.Utils.Function(Ruby.StandardLibrary.Yaml.YamlExceptionOps.TagUri), + }); + + module.DefineMethod("to_yaml_node", 0x9, new System.Delegate[] { + new Microsoft.Scripting.Utils.Function(Ruby.StandardLibrary.Yaml.YamlExceptionOps.ToYamlNode), + }); + + } + + private void LoadSystem__Object_Instance(Ruby.Builtins.RubyModule/*!*/ module) { + + module.DefineMethod("taguri", 0x9, new System.Delegate[] { + new Microsoft.Scripting.Utils.Function(Ruby.StandardLibrary.Yaml.YamlObjectOps.TagUri), + }); + + module.DefineMethod("to_yaml", 0x9, new System.Delegate[] { + new Microsoft.Scripting.Utils.Function(Ruby.StandardLibrary.Yaml.YamlObjectOps.ToYaml), + }); + + module.DefineMethod("to_yaml_node", 0x9, new System.Delegate[] { + new Microsoft.Scripting.Utils.Function(Ruby.StandardLibrary.Yaml.YamlObjectOps.ToYamlProperties), + }); + + module.DefineMethod("to_yaml_properties", 0x9, new System.Delegate[] { + new Microsoft.Scripting.Utils.Function(Ruby.StandardLibrary.Yaml.YamlObjectOps.ToYamlProperties), + }); + + module.DefineMethod("to_yaml_style", 0x9, new System.Delegate[] { + new Microsoft.Scripting.Utils.Function(Ruby.StandardLibrary.Yaml.YamlObjectOps.ToYamlStyle), + }); + + } + + private void LoadYAML_Class(Ruby.Builtins.RubyModule/*!*/ module) { + + module.DefineMethod("dump", 0x12, new System.Delegate[] { + new Microsoft.Scripting.Utils.Function(Ruby.StandardLibrary.Yaml.RubyYaml.Dump), + }); + + module.DefineMethod("dump_all", 0x12, new System.Delegate[] { + new Microsoft.Scripting.Utils.Function(Ruby.StandardLibrary.Yaml.RubyYaml.DumpAll), + }); + + module.DefineMethod("dump_stream", 0x12, new System.Delegate[] { + new Microsoft.Scripting.Utils.Function(Ruby.StandardLibrary.Yaml.RubyYaml.DumpStream), + }); + + module.DefineMethod("each_document", 0x12, new System.Delegate[] { + new Microsoft.Scripting.Utils.Function(Ruby.StandardLibrary.Yaml.RubyYaml.EachDocument), + }); + + module.DefineMethod("load", 0x12, new System.Delegate[] { + new Microsoft.Scripting.Utils.Function(Ruby.StandardLibrary.Yaml.RubyYaml.Load), + }); + + module.DefineMethod("load_documents", 0x12, new System.Delegate[] { + new Microsoft.Scripting.Utils.Function(Ruby.StandardLibrary.Yaml.RubyYaml.EachDocument), + }); + + module.DefineMethod("load_file", 0x12, new System.Delegate[] { + new Microsoft.Scripting.Utils.Function(Ruby.StandardLibrary.Yaml.RubyYaml.LoadFile), + }); + + module.DefineMethod("load_stream", 0x12, new System.Delegate[] { + new Microsoft.Scripting.Utils.Function(Ruby.StandardLibrary.Yaml.RubyYaml.LoadStream), + }); + + module.DefineMethod("quick_emit_node", 0x12, new System.Delegate[] { + new Microsoft.Scripting.Utils.Function(Ruby.StandardLibrary.Yaml.RubyYaml.QuickEmitNode), + }); + + module.DefineMethod("tagurize", 0x12, new System.Delegate[] { + new Microsoft.Scripting.Utils.Function(Ruby.StandardLibrary.Yaml.RubyYaml.Tagurize), + }); + + } + + } +} + =================================================================== edit: $/Merlin_External/Languages/IronRuby/yaml/IronRuby.Libraries.Yaml/IronRuby.Libraries.Yaml.csproj;C436739 File: IronRuby.Libraries.Yaml.csproj =================================================================== --- $/Merlin_External/Languages/IronRuby/yaml/IronRuby.Libraries.Yaml/IronRuby.Libraries.Yaml.csproj;C436739 (server) 5/17/2008 3:55 PM +++ Shelved Change: $/Merlin_External/Languages/IronRuby/yaml/IronRuby.Libraries.Yaml/IronRuby.Libraries.Yaml.csproj;RubyLibsAndYaml @@ -12,12 +12,16 @@ IronRuby.Libraries.Yaml v2.0 512 + %24/Merlin_External/Languages/IronRuby/yaml/IronRuby.Libraries.Yaml + . + http://vstfdevdiv:8080 + {4CA58AB2-18FA-4F8D-95D4-32DDF27D184C} true full false - bin\Debug\ + ..\..\..\..\..\Main\bin\Debug\ DEBUG;TRACE prompt 4 @@ -25,64 +29,76 @@ pdbonly true - bin\Release\ + ..\..\..\..\..\Main\bin\Release\ TRACE prompt 4 - - False - ..\..\..\..\..\Main\Bin\$(Configuration)\IronRuby.dll - - - False - ..\..\..\..\..\Main\Bin\$(Configuration)\IronRuby.Libraries.dll - - - False - ..\..\..\..\..\Main\Bin\$(Configuration)\Microsoft.Scripting.dll - - - False - ..\..\..\..\..\Main\Bin\$(Configuration)\Microsoft.Scripting.Core.dll - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + Code + + + + + Code + + - - - + + {2AE75F5A-CD1F-4925-9647-AF4D1C282FB4} + Microsoft.Scripting.Core + + + {77323B06-15A2-4CF4-8A7A-86EAA2B66498} + IronRuby.Libraries + + + {7F6984B4-EE6D-4E6F-ABB1-E210D7DC4FDD} + Ruby + + + {EB66B766-6354-4208-A3D4-AACBDCB5C3B3} + Microsoft.Scripting + + + + + PreserveNewest + +