示例#1
0
文件: Translator.cs 项目: ifzz/FDK
 public void MatchMethods(Translator translator)
 {
     if (translator != null)
         this.DoMatchMethods(translator);
     else
         this.DoResetMethods();
 }
示例#2
0
文件: BaseClient.cs 项目: ifzz/FDK
        internal static Translator ParseSignature(string singnature, out Translator[] translators)
        {
            var separators = new char[] {'$'};
            var lines = singnature.Split(separators, StringSplitOptions.RemoveEmptyEntries);
            if (lines.Length > ushort.MaxValue)
                throw new ArgumentOutOfRangeException(singnature, "Signature contains too much components");

            var result = new Translator(lines[0]);
            translators = new Translator[lines.Length - 1];
            for (var index = 1; index < lines.Length; ++index)
            {
                translators[index - 1] = new Translator((ushort)(index - 1), lines[index]);
            }
            return result;
        }
示例#3
0
文件: Translator.cs 项目: ifzz/FDK
        void DoMatchMethods(Translator translator)
        {
            var dict = new Dictionary<string, ushort>();
            foreach (var element in translator.Methods)
            {
                dict[element] = (ushort)dict.Count;
            }

            var count = this.Methods.Length;
            this.methods = new ushort[count];

            for (var index = 0; index < count; ++index)
            {
                ushort methodId;
                if (!dict.TryGetValue(this.Methods[index], out methodId))
                {
                    methodId = ushort.MaxValue;
                }
                this.methods[index] = methodId;
            }
            this.componentId = translator.componentId;
        }
示例#4
0
文件: Translator.cs 项目: ifzz/FDK
        public void MatchExceptions(Translator translator)
        {
            if (translator.Methods.Length > Methods.Length)
                throw new Exception(WrongExceptionsSpecification);

            var count = translator.Methods.Length;
            for (var index = 0; index < count; ++index)
            {
                if (Methods[index] != translator.Methods[index])
                    throw new Exception(WrongExceptionsSpecification);
            }
        }