PageRenderTime 66ms CodeModel.GetById 8ms RepoModel.GetById 0ms app.codeStats 0ms

/IronPython_Main/Languages/Ruby/Ruby/Runtime/Globals/GlobalVariables.cs

#
C# | 118 lines | 81 code | 13 blank | 24 comment | 0 complexity | dab070eabc9289f577554a7215a0d6f1 MD5 | raw file
Possible License(s): GPL-2.0, MPL-2.0-no-copyleft-exception, CPL-1.0, CC-BY-SA-3.0, BSD-3-Clause, ISC, AGPL-3.0, LGPL-2.1, Apache-2.0
  1. /* ****************************************************************************
  2. *
  3. * Copyright (c) Microsoft Corporation.
  4. *
  5. * This source code is subject to terms and conditions of the Apache License, Version 2.0. A
  6. * copy of the license can be found in the License.html file at the root of this distribution. If
  7. * you cannot locate the Apache License, Version 2.0, please send an email to
  8. * ironruby@microsoft.com. By using this source code in any fashion, you are agreeing to be bound
  9. * by the terms of the Apache License, Version 2.0.
  10. *
  11. * You must not remove this notice, or any other, from this software.
  12. *
  13. *
  14. * ***************************************************************************/
  15. using IronRuby.Compiler;
  16. namespace IronRuby.Runtime {
  17. internal enum GlobalVariableId {
  18. MatchData,
  19. EntireMatch,
  20. MatchLastGroup,
  21. PreMatch,
  22. PostMatch,
  23. CurrentException,
  24. CurrentExceptionBacktrace,
  25. ItemSeparator,
  26. StringSeparator,
  27. InputSeparator,
  28. OutputSeparator,
  29. LastInputLine,
  30. InputFileName,
  31. CommandLineProgramPath,
  32. CommandLineArguments,
  33. LoadPath,
  34. LoadedFiles,
  35. InputContent,
  36. OutputStream,
  37. LastInputLineNumber,
  38. InputStream,
  39. ErrorOutputStream,
  40. SafeLevel,
  41. Verbose,
  42. KCode,
  43. ChildProcessExitStatus
  44. }
  45. public static class GlobalVariables {
  46. // regex:
  47. public static readonly GlobalVariable MatchData = new SpecialGlobalVariableInfo(GlobalVariableId.MatchData);
  48. public static readonly GlobalVariable EntireMatch = new SpecialGlobalVariableInfo(GlobalVariableId.EntireMatch);
  49. public static readonly GlobalVariable MatchLastGroup = new SpecialGlobalVariableInfo(GlobalVariableId.MatchLastGroup);
  50. public static readonly GlobalVariable PreMatch = new SpecialGlobalVariableInfo(GlobalVariableId.PreMatch);
  51. public static readonly GlobalVariable PostMatch = new SpecialGlobalVariableInfo(GlobalVariableId.PostMatch);
  52. public static readonly GlobalVariable CurrentException = new SpecialGlobalVariableInfo(GlobalVariableId.CurrentException);
  53. public static readonly GlobalVariable CurrentExceptionBacktrace = new SpecialGlobalVariableInfo(GlobalVariableId.CurrentExceptionBacktrace);
  54. public static readonly GlobalVariable CommandLineArguments = new SpecialGlobalVariableInfo(GlobalVariableId.CommandLineArguments);
  55. public static readonly GlobalVariable LastInputLine = new SpecialGlobalVariableInfo(GlobalVariableId.LastInputLine);
  56. public static readonly GlobalVariable InputFileName = new SpecialGlobalVariableInfo(GlobalVariableId.InputFileName);
  57. public static readonly GlobalVariable CommandLineProgramPath = new SpecialGlobalVariableInfo(GlobalVariableId.CommandLineProgramPath);
  58. public static readonly GlobalVariable InputContent = new SpecialGlobalVariableInfo(GlobalVariableId.InputContent);
  59. public static readonly GlobalVariable LastInputLineNumber = new SpecialGlobalVariableInfo(GlobalVariableId.LastInputLineNumber);
  60. public static readonly GlobalVariable InputSeparator = new SpecialGlobalVariableInfo(GlobalVariableId.InputSeparator);
  61. public static readonly GlobalVariable ItemSeparator = new SpecialGlobalVariableInfo(GlobalVariableId.ItemSeparator);
  62. public static readonly GlobalVariable StringSeparator = new SpecialGlobalVariableInfo(GlobalVariableId.StringSeparator);
  63. public static readonly GlobalVariable OutputSeparator = new SpecialGlobalVariableInfo(GlobalVariableId.OutputSeparator);
  64. public static readonly GlobalVariable LoadPath = new SpecialGlobalVariableInfo(GlobalVariableId.LoadPath);
  65. public static readonly GlobalVariable LoadedFiles = new SpecialGlobalVariableInfo(GlobalVariableId.LoadedFiles);
  66. public static readonly GlobalVariable OutputStream = new SpecialGlobalVariableInfo(GlobalVariableId.OutputStream);
  67. public static readonly GlobalVariable InputStream = new SpecialGlobalVariableInfo(GlobalVariableId.InputStream);
  68. public static readonly GlobalVariable ErrorOutputStream = new SpecialGlobalVariableInfo(GlobalVariableId.ErrorOutputStream);
  69. public static readonly GlobalVariable SafeLevel = new SpecialGlobalVariableInfo(GlobalVariableId.SafeLevel);
  70. public static readonly GlobalVariable Verbose = new SpecialGlobalVariableInfo(GlobalVariableId.Verbose);
  71. public static readonly GlobalVariable KCode = new SpecialGlobalVariableInfo(GlobalVariableId.KCode);
  72. public static readonly GlobalVariable ChildProcessExitStatus = new SpecialGlobalVariableInfo(GlobalVariableId.ChildProcessExitStatus);
  73. //
  74. // Defines variables backed by a field on RubyContext or Scope and variables that derived from them.
  75. // Also variables that need type check on assignment are defined here.
  76. //
  77. // Other variables are simply looked up in the dictionary on RubyContext. All uses of such variables in libraries
  78. // go thru alias table so they don't need a direct reference from RubyContext.
  79. //
  80. internal static void DefineVariablesNoLock(RubyContext/*!*/ context) {
  81. // scope based variables (regex and input line):
  82. context.DefineGlobalVariableNoLock(Symbols.MatchData, MatchData);
  83. context.DefineGlobalVariableNoLock(Symbols.EntireMatch, EntireMatch);
  84. context.DefineGlobalVariableNoLock(Symbols.MatchLastGroup, MatchLastGroup);
  85. context.DefineGlobalVariableNoLock(Symbols.PreMatch, PreMatch);
  86. context.DefineGlobalVariableNoLock(Symbols.PostMatch, PostMatch);
  87. context.DefineGlobalVariableNoLock(Symbols.LastInputLine, LastInputLine);
  88. // directly accessed variables provided by execution context:
  89. context.DefineGlobalVariableNoLock(Symbols.CommandLineProgramPath, CommandLineProgramPath);
  90. context.DefineGlobalVariableNoLock(Symbols.CurrentException, CurrentException);
  91. context.DefineGlobalVariableNoLock(Symbols.CurrentExceptionBacktrace, CurrentExceptionBacktrace);
  92. context.DefineGlobalVariableNoLock(Symbols.CommandLineArguments, CommandLineArguments);
  93. context.DefineGlobalVariableNoLock(Symbols.InputSeparator, InputSeparator);
  94. context.DefineGlobalVariableNoLock(Symbols.ItemSeparator, ItemSeparator);
  95. context.DefineGlobalVariableNoLock(Symbols.StringSeparator, StringSeparator);
  96. context.DefineGlobalVariableNoLock(Symbols.OutputSeparator, OutputSeparator);
  97. context.DefineGlobalVariableNoLock(Symbols.InputContent, InputContent);
  98. context.DefineGlobalVariableNoLock(Symbols.OutputStream, OutputStream);
  99. context.DefineGlobalVariableNoLock(Symbols.LoadedFiles, LoadedFiles);
  100. context.DefineGlobalVariableNoLock(Symbols.LoadPath, LoadPath);
  101. context.DefineGlobalVariableNoLock(Symbols.LastInputLineNumber, LastInputLineNumber);
  102. context.DefineGlobalVariableNoLock(Symbols.ChildProcessExitStatus, ChildProcessExitStatus);
  103. }
  104. }
  105. }