[mono-vb] patch for Microsoft.VisualBasic.CompilerServices.Utils

Max V. Irgiznov xeon at ulsu.ru
Fri Mar 16 03:47:06 EDT 2007


Hello, mono-vb.

I call upon you to patch for
Class Microsoft.VisualBasic.CompilerServices.Utils

that supports method GetResourceString (ByVal ResourceKey As String, ByVal ParamArray Args As
String ()) As String


Index: Utils.vb
===================================================================
--- Utils.vb    (revision 74452)
+++ Utils.vb    (working copy)
@@ -29,16 +29,212 @@
 ' WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 
 Imports System
+Imports System.Resources
+Imports System.Reflection
+Imports System.Threading
 Imports System.Runtime.InteropServices
 
 Namespace Microsoft.VisualBasic.CompilerServices
     <System.ComponentModel.EditorBrowsable(ComponentModel.EditorBrowsableState.Never)> _
     Public NotInheritable Class Utils
 
+        Private Shared m_TriedLoadingResourceManager As Boolean
+        Private Shared m_VBAResourceManager As ResourceManager
+        Private Shared ReadOnly ResourceManagerSyncObj As Object
+
         Private Sub New()
             'Nobody should see constructor
         End Sub
+        '----------------------------------
+        Shared Sub New()
+            Utils.ResourceManagerSyncObj = New Object
+        End Sub
 
+        Friend Enum vbErrors
+            ' Fields
+            Abort = &H11F
+            AccessViolation = -2147467261
+            ActionNotSupported = &H1BD
+            AdviseLimit = &H60
+            AmbiguousName = &H802C
+            ArrayLocked = 10
+            BadCallToFriendFunction = &H61
+            BadFileMode = &H36
+            BadFileNameOrNumber = &H34
+            BadFunctionId = &H8006
+            BadLibId = &H88C3
+            BadModuleKind = &H88BD
+            BadPatStr = &H5D
+            BadRecordLen = &H3B
+            BadRecordNum = &H3F
+            BadTypeId = &H88C2
+            BrokenLibRef = &H88CD
+            BufferTooSmall = &H8016
+            CantContinue = &H11
+            CantCreateObject = &H1AD
+            CantCreateTmpFile = &H142
+            CantEvalWatch = &H9C65
+            CantFindDllEntryPoint = &HE741
+            CantPassPrivateObject = &H62
+            CantSaveFileToTemp = &H2DF
+            CantUseNull = &H5E
+            CircularType = &H9C84
+            CodeResourceLockError = &H1C7
+            CodeResourceNotFound = &H1C6
+            CompileError = &H9C64
+            DevUnavailable = &H44
+            DifferentDrive = &H4A
+            DiskFull = &H3D
+            DiskNotReady = &H47
+            DivByZero = 11
+            DLLBadCallingConv = &H31
+            DLLCallException = &H63
+            DLLLoadErr = &H30
+            DoesntImplementICollection = 100
+            DuplicateKey = &H1C9
+            ElementNotFound = &H802B
+            EndOfFile = &H3E
+            Eof = &H88C4
+            ExpectedFuncNotModule = &H88C7
+            ExpectedFuncNotProject = &H88C9
+            ExpectedFuncNotRecord = &H88C8
+            ExpectedFuncNotVar = &H88CA
+            ExpectedTokens = &H9C6F
+            ExpectedTypeNotProj = &H88CB
+            ExprTooComplex = &H10
+            FileAlreadyExists = &H3A
+            FileAlreadyOpen = &H37
+            FileLockViolation = &H8007
+            FileNotFound = &H35
+            FileNotFoundWithName = &H9D33
+            FuncArityMismatch = 450
+            GetNotSupported = &H18A
+            GetNotSupportedAtRuntime = &H189
+            IdentNotMember = &H1CD
+            IdTooLong = &H9C6D
+            IllegalChar = &H9C6C
+            IllegalFor = &H5C
+            IllegalFuncCall = 5
+            InconsistentPropFuncs = &H9C83
+            IncorrectTypeChar = &H9C6A
+            InternalError = &H33
+            InvalidClipboardFormat = 460
+            InvalidDllFunctionName = &H1C5
+            InvalidFileFormat = &H141
+            InvalidNumLit = &H9C6B
+            InvalidOrdinal = &H1C4
+            InvalidPicture = &H1E1
+            InvalidPropertyArrayIndex = &H17D
+            InvalidPropertyValue = 380
+            InvalidResourceFormat = &H145
+            InvalidState = &H8029
+            InvalidTypeInfoKind = &H88D1
+            InvalidTypeLibFunction = &H88D2
+            InvalidTypeLibVariable = &H1CA
+            InvDataRead = &H8018
+            IOError = &H39
+            LastTrappable = &H2EA
+            LibNotRegistered = &H801D
+            LocaleSettingNotSupported = &H1BF
+            LostTLB = &H1BA
+            MissingEndBrack = &H9C69
+            MissingVbaTypeLib = &H9C66
+            ModNameConflict = &H802D
+            ModuleAsType = &H88D0
+            NamedArgsNotSupported = &H1BE
+            NamedParamNotFound = &H1C0
+            NeedPropertyArrayIndex = &H181
+            NoContainingLib = &H88C1
+            None = 0
+            NoSuchControlOrProperty = &H1A7
+            NotEnum = &H1C3
+            NotObject = &H1A8
+            NotYetImplemented = &H8000
+            ObjDoesNotSupportEvents = &H1CB
+            ObjNotRegistered = &H1CF
+            ObjNotSet = &H5B
+            OLEAutomationError = 440
+            OLEFileNotFound = &H1B0
+            OLENoDefault = &H1BB
+            OLENoPropOrMethod = &H1B6
+            OLENotSupported = 430
+            OperationNotAllowedInDll = &H9C63
+            OutOfBounds = 9
+            OutOfMemory = 7
+            OutOfStack = &H1C
+            OutOfStrSpace = 14
+            Overflow = 6
+            ParameterNotOptional = &H1C1
+            PathFileAccess = &H4B
+            PathNotFound = &H4C
+            PermissionDenied = 70
+            PrinterError = &H1E2
+            PropertyNotFound = &H1A6
+            QualifiedNameDisallowed = &H8028
+            ReadFault = &H8004
+            RegistryAccess = &H801C
+            ReplacementsTooLong = &H2EA
+            ResumeWOErr = 20
+            ReturnWOGoSub = 3
+            SearchTextNotFound = &H2E8
+            SeekErr = &H8003
+            ServerNotFound = &H1CE
+            SetNotPermitted = &H183
+            SetNotSupported = &H17F
+            SetNotSupportedAtRuntime = &H17E
+            ShareRequired = &H8015
+            SizeTooBig = &H88C5
+            StatementTooComplex = &H9C6E
+            TooManyClients = &H2F
+            TooManyFiles = &H43
+            TypeMismatch = 13
+            UndefinedProc = &H23
+            UndefinedType = &H8027
+            UNDONE = &H1D
+            UnknownLcid = &H802E
+            UnsuitableFuncPropMatch = &H88CC
+            UnsupFormat = &H8019
+            UnsupportedTypeLibFeature = &H88CE
+            Usage = &H801F
+            UserDefined = &H5F
+            UserInterrupt = &H12
+            UserReset = &H9C68
+            WriteFault = &H8005
+            WrongTypeKind = &H802A
+        End Enum
+
+        Friend Shared ReadOnly Property VBAResourceManager() As ResourceManager
+            Get
+                If (Utils.m_VBAResourceManager Is Nothing) Then
+                    Dim expression As Object = Utils.ResourceManagerSyncObj
+                    ObjectFlowControl.CheckForSyncLockOnValueType(expression)
+                    SyncLock expression
+                        If Not Utils.m_TriedLoadingResourceManager Then
+                            Try
+                                Utils.m_VBAResourceManager = New ResourceManager("Microsoft.VisualBasic", Assembly.GetExecutingAssembly)
+                            Catch exception As StackOverflowException
+                                Throw exception
+                            Catch exception2 As OutOfMemoryException
+                                Throw exception2
+                            Catch exception3 As Threading.ThreadAbortException
+                                Throw exception3
+                            Catch exception6 As Exception
+                            End Try
+                            Utils.m_TriedLoadingResourceManager = True
+                        End If
+                    End SyncLock
+                End If
+                Return Utils.m_VBAResourceManager
+            End Get
+        End Property
+
+        Friend Shared Function GetCultureInfo() As Globalization.CultureInfo
+            Return Thread.CurrentThread.CurrentCulture
+        End Function
+
+
+        '---------------------------------
+
         Public Shared Function CopyArray(ByVal arySrc As System.Array, ByVal aryDest As System.Array) As System.Array
 
             If arySrc Is Nothing Then
@@ -75,11 +271,81 @@
         Public Shared Sub ThrowException(ByVal hr As Integer)
             Throw New NotImplementedException
         End Sub
-#If NET_2_0 Then
+
+        Friend Shared Function GetResourceString(ByVal ResourceId As vbErrors) As String
+            Return Utils.GetResourceString(("ERR" & Conversions.ToString(CInt(ResourceId))))
+        End Function
+
+        <ComponentModel.EditorBrowsable(ComponentModel.EditorBrowsableState.Never)> _
+        Friend Shared Function GetResourceString(ByVal ResourceKey As String) As String
+            Dim text2 As String
+            If (Utils.VBAResourceManager Is Nothing) Then
+                Return "Message text unavailable.  Resource file 'Microsoft.VisualBasic resources' not found."
+            End If
+            Try
+                text2 = Utils.VBAResourceManager.GetString(ResourceKey, Utils.GetCultureInfo)
+                If (text2 Is Nothing) Then
+                    text2 = "Application-defined or object-defined error."                    
+                End If
+            Catch exception As StackOverflowException
+                Throw exception
+            Catch exception2 As OutOfMemoryException
+                Throw exception2
+            Catch exception3 As ThreadAbortException
+                Throw exception3
+            Catch exception6 As Exception
+                text2 = "Message text unavailable.  Resource file 'Microsoft.VisualBasic resources' not found."
+            End Try
+            Return text2
+        End Function
+
+        Friend Shared Function GetResourceString(ByVal ResourceKey As String, ByVal NotUsed As Boolean) As String
+            Dim text2 As String
+            If (Utils.VBAResourceManager Is Nothing) Then
+                Return "Message text unavailable.  Resource file 'Microsoft.VisualBasic resources' not found."
+            End If
+
+            Try
+                text2 = Utils.VBAResourceManager.GetString(ResourceKey, Utils.GetCultureInfo)
+                If (text2 Is Nothing) Then
+                    text2 = Utils.VBAResourceManager.GetString(ResourceKey)
+                End If
+            Catch exception As StackOverflowException
+                Throw exception
+            Catch exception2 As OutOfMemoryException
+                Throw exception2
+            Catch exception3 As ThreadAbortException
+                Throw exception3
+            Catch exception6 As Exception
+                text2 = Nothing
+            End Try
+
+            Return text2
+        End Function
+
         Public Shared Function GetResourceString(ByVal ResourceKey As String, ByVal ParamArray Args As String()) As String
-            Throw New NotImplementedException
+            Dim left As String = Nothing
+            Dim format As String = Nothing
+
+            Try
+                format = Utils.GetResourceString(ResourceKey)
+                left = String.Format(Thread.CurrentThread.CurrentUICulture, format, Args)
+            Catch exception As StackOverflowException
+                Throw exception
+            Catch exception2 As OutOfMemoryException
+                Throw exception2
+            Catch exception3 As ThreadAbortException
+                Throw exception3
+            Catch exception4 As Exception
+
+            End Try
+
+            If (Operators.CompareString(left, "", False) <> 0) Then
+                Return left
+            End If
+            Return format
         End Function
-#End If
+
     End Class
 
 End Namespace 


-- 
Sincerely,
 Max V. Irgiznov    System Administrator of Ulyanovsk State University
 mailto:xeon at ulsu.ru



More information about the Mono-vb mailing list