Пример #1
0
    private string[] GetMethodArgs(Smoke *smoke, Smoke.Method *method)
    {
        if (method->numArgs == 0)
        {
            return(new string[0]);
        }
        string className = ByteArrayManager.GetString(smoke->classes[method->classId].className);

        className = className.Substring(className.LastIndexOf(":") + 1);
        StringBuilder keyBuilder =
            new StringBuilder(className + "," + ByteArrayManager.GetString(smoke->methodNames[method->name]));

        for (short *typeIndex = smoke->argumentList + method->args; *typeIndex > 0; typeIndex++)
        {
            keyBuilder.Append(',');
            keyBuilder.Append(*typeIndex);
        }
        string key = keyBuilder.ToString();

        if (data.ArgumentNames.ContainsKey(key))
        {
            return(data.ArgumentNames[key]);
        }
        string argNamesFile = data.GetArgNamesFile(smoke);

        if (File.Exists(argNamesFile))
        {
            foreach (string[] strings in File.ReadAllLines(argNamesFile).Select(line => line.Split(';')))
            {
                data.ArgumentNames[strings[0]] = strings[1].Split(',');
            }
            return(data.ArgumentNames[key]);
        }
        return(null);
    }