Reko.Environments.Windows.MsMangledNameParser.ParseQualifiedTypeCode C# (CSharp) Method

ParseQualifiedTypeCode() public method

public ParseQualifiedTypeCode ( string basicName, string qualification, List compoundArgs ) : Tuple
basicName string
qualification string
compoundArgs List
return Tuple
        public Tuple<string, SerializedType, SerializedType> ParseQualifiedTypeCode(string basicName, string[] qualification, List<Argument_v1> compoundArgs)
        {
            this.compoundArgs = new List<Argument_v1>();
            this.Scope = string.Join("::", qualification);
            SerializedSignature sig = null;
            switch (str[i++])
            {
            case '0':
            case '1':
            case '2':
            case '3':
                return new Tuple<string, SerializedType, SerializedType>(
                    basicName,
                    ParseDataTypeCode(compoundArgs),
                    CreateEnclosingType(Scope));
            case '6':   // Compiler-generated static
                //$TODO: deal with const/volatile modifier
                ParseStorageClass();
                break;
            case 'A': sig = ParseInstanceMethod("private"); break;
            case 'B': sig = ParseInstanceMethod("private far"); break;
            case 'C': sig = ParseStaticMethod("private static"); break;
            case 'D': sig = ParseStaticMethod("private static far"); break;
            case 'E': sig = ParseInstanceMethod("private virtual"); break;
            case 'F': sig = ParseInstanceMethod("private virtual far"); break;

            case 'I': sig = ParseInstanceMethod("protected"); break;
            case 'J': sig = ParseInstanceMethod("protected far"); break;
            case 'K': sig = ParseStaticMethod("protected static"); break;
            case 'L': sig = ParseStaticMethod("protected static far"); break;
            case 'M': sig = ParseInstanceMethod("protected virtual"); break;
            case 'N': sig = ParseInstanceMethod("protected virtual far"); break;

            case 'Q': sig = ParseInstanceMethod("public"); break;
            case 'R': sig = ParseInstanceMethod("public far"); break;
            case 'S': sig = ParseStaticMethod("public static"); break;
            case 'T': sig = ParseStaticMethod("public static far"); break;
            case 'U': sig = ParseInstanceMethod("public virtual"); break;
            case 'V': sig = ParseInstanceMethod("public virtual far"); break;

            case 'Y': sig = ParseGlobalFunction( ""); break;
            case 'Z': sig = ParseGlobalFunction( "far"); break;
            default: throw new NotImplementedException(string.Format("Character '{0}' not supported", str[i - 1]));

            }
            return new Tuple<string, SerializedType, SerializedType>(
                basicName,
                sig,
                sig != null 
                    ? sig.EnclosingType
                    : CreateEnclosingType(Scope));
        }