public int RegisterCode(MemberInfoData callee, string value) { StringData data; if (!this.methodCodes.TryGetValue(value, out data)) { data = new StringData(this.methodCodes.Count, value); this.methodCodes[value] = data; } this.addDependency(callee, data); return data.Index; }
public int RegisterNative(MemberInfoData callee, MemberInfo member) { NativeData data; if (!this.nativeMembers.TryGetValue(member, out data)) { var native = NativesManager.Instance.GetNative(member); //w tych przypadkach nie rejestrujemy bo nie ma takiej potrzeby if ( native.Value == null && native.OpCode == null && native.CommandType == NativeCommandType.None && !native.Ignore ) { data = new NativeData(0, native.AdditionalCode == null ? null : Program.PackCode(native.AdditionalCode, true)); data.Index = native.Code == null ? this.Register(data, NativesManager.Instance.Get_native_Value(native, member)) : this.RegisterCode(data, Program.PackCode(native.Code, true)); this.nativeMembers[member] = data; } else { return 0; } } this.addDependency(callee, data); return data.Index; }
public TypeData Register(MemberInfoData callee, Type type) { if (NativesManager.Instance.IsNative(type)) { //nie potrzebne bo nigdzie sie do tego nie odwoluje //this.RegisterNative(type); //try { // var native = NativesManager.Instance.GetNative(type); // Console.WriteLine(native.Name ?? type.Name); //} catch { } return null; } else { TypeData data = doRegister(type); var moduleCompiler = this.GetModuleCompiler(type); if (moduleCompiler == null) { this.addDependency(callee, data); } return data; } }
public int Register(MemberInfoData callee, MethodBase member) { if (NativesManager.Instance.IsNative(member)) { return this.RegisterNative(callee, member); } else { if ((member.IsVirtual || member.IsAbstract) && member.DeclaringType.IsSubclassOf(typeof(MK.JavaScript.Window))) { ThrowHelper.Throw("{0} cannot be called as it is virtual or abstract method of subclass of Window.", member.GetSignature()); } MethodBaseData data; if (this.Methods.TryGetValue(member, out data)) { ++data.HitCount; } else { //zaczynam numeracje metod od 1 a nie od zera... ciekawe kiedy to spowoduje problemy //dlaczego tak numeruje? bo if(0) zwraca false w .js data = new MethodBaseData(member, this.Methods.Count + 1); this.Methods[member] = data; if ((member.IsVirtual || member.IsAbstract)) {// && ((MethodInfo)member).GetBaseDefinition() == member) { var typeData = this.Resolve(member.DeclaringType); VirtualMethodCallData vmcd; if (!typeData.VirtualMethods.TryGetValue(data, out vmcd)) { typeData.VirtualMethods[data] = new VirtualMethodCallData(); } } if (!member.IsAbstract) this.methodsToCompile.Enqueue(data); } if (this.PageCompiler.WindowAttribute.MethodsOnTop && member.DeclaringType.GetDeclaringTypesWithType().Any(t => t == this.PageCompiler.WindowType)) { this.addDependency(this.PageCompiler.TypeData, data); } if (this.PageCompiler.WindowAttribute.RunAtThis.Any(t => member.DeclaringType.GetDeclaringTypesWithType().Contains(t))) { this.addDependency(this.PageCompiler.TypeData, data); } else { var moduleCompiler = this.GetModuleCompiler(member.DeclaringType); if (moduleCompiler != null) { this.addDependency(moduleCompiler.TypeData, data); } else { this.addDependency(callee, data); } } return data.Index; } }
public MemberInfoData RegisterFrameType(Type type) { #warning .. to bylo poto by css'y sie dobrze dodawaly var value = new MemberInfoData(null, 0); this.Dependencies.AddVertice(value); this.Dependencies.AddEdge(value, doRegister(type)); return value; //TypeData data = doRegister(type); //this.Dependencies.AddVertice(data); //return data; }
public int Register(MemberInfoData callee, FieldInfo member) { if (NativesManager.Instance.IsNative(member)) { return this.RegisterNative(callee, member); } else if (member.IsStatic) { Static_FieldInfoData data; if (this.staticFields.TryGetValue(member, out data)) { ++data.HitCount; } else { data = new Static_FieldInfoData(member, this.staticFields.Count); this.staticFields[member] = data; } this.addDependency(callee, data); return data.Index; } else { return 0; } }
private void addDependency(MemberInfoData calee, MemberInfoData data) { this.Dependencies.AddEdge(calee, data); //if (data.Member != null && data.Member.MemberType != MemberTypes.TypeInfo && data.Member.DeclaringType!=null) { // try { // //this.dependencies.AddEdge(this.types[data.Member.DeclaringType], data); // } catch { } //} }