public InterfaceImpl CopyTo(InterfaceImpl iface) { iface.Interface = this.TypeDefOrRef; iface.CustomAttributes.Clear(); iface.CustomAttributes.AddRange(CustomAttributes); return(iface); }
InterfaceImpl Clone(InterfaceImpl source) { var result = new InterfaceImplUser(Importer.Import(source.Interface)); CopyCustomAttributes(source, result); CopyCustomDebugInfo(source, result); return(result); }
void Add(InterfaceImpl ii) { if (ii == null) { return; } Push(ii.Interface); Add(ii.CustomAttributes); }
public InterfaceImplEntry(PEFile module, byte *ptr, int metadataOffset, int row) { this.module = module; this.metadata = module.Metadata; this.RID = row; var rowOffset = metadata.GetTableMetadataOffset(TableIndex.InterfaceImpl) + metadata.GetTableRowSize(TableIndex.InterfaceImpl) * (row - 1); this.Offset = metadataOffset + rowOffset; this.interfaceImpl = new InterfaceImpl(ptr + rowOffset, metadata.GetTableRowCount(TableIndex.TypeDef) < ushort.MaxValue ? 2 : 4, metadata.ComputeCodedTokenSize(16384, TableMask.TypeDef | TableMask.TypeRef | TableMask.TypeSpec)); }
public void ConvertFromImplementationWithInterfaceConverter() { var format = new InterfaceImpl { Z = 14 }; int conv = 0; Assert.DoesNotThrow(() => conv = (int)ConvertFormat.With <ConverterInterface>(format)); Assert.AreEqual(14, conv); Assert.DoesNotThrow(() => conv = ConvertFormat.To <int>(format)); Assert.AreEqual(14, conv); }
internal void CalcElemSize() { elemSize[(int)MDTable.Assembly] = Assembly.Size(this); elemSize[(int)MDTable.AssemblyOS] = 12; elemSize[(int)MDTable.AssemblyProcessor] = 4; elemSize[(int)MDTable.AssemblyRefOS] = 12 + TableIndexSize(MDTable.AssemblyRef); elemSize[(int)MDTable.AssemblyRefProcessor] = 4 + TableIndexSize(MDTable.AssemblyRef); elemSize[(int)MDTable.Module] = Module.Size(this); elemSize[(int)MDTable.TypeRef] = ClassRef.Size(this); elemSize[(int)MDTable.TypeDef] = ClassDef.Size(this); elemSize[(int)MDTable.Field] = FieldDef.Size(this); elemSize[(int)MDTable.Method] = MethodDef.Size(this); elemSize[(int)MDTable.Param] = Param.Size(this); elemSize[(int)MDTable.InterfaceImpl] = InterfaceImpl.Size(this); elemSize[(int)MDTable.MemberRef] = FieldRef.Size(this); elemSize[(int)MDTable.Constant] = ConstantElem.Size(this); elemSize[(int)MDTable.CustomAttribute] = CustomAttribute.Size(this); elemSize[(int)MDTable.FieldMarshal] = FieldMarshal.Size(this); elemSize[(int)MDTable.DeclSecurity] = DeclSecurity.Size(this); elemSize[(int)MDTable.ClassLayout] = ClassLayout.Size(this); elemSize[(int)MDTable.FieldLayout] = FieldLayout.Size(this); elemSize[(int)MDTable.StandAloneSig] = Signature.Size(this); elemSize[(int)MDTable.EventMap] = MapElem.Size(this, MDTable.EventMap); elemSize[(int)MDTable.Event] = Event.Size(this); elemSize[(int)MDTable.PropertyMap] = MapElem.Size(this, MDTable.PropertyMap); elemSize[(int)MDTable.Property] = Property.Size(this); elemSize[(int)MDTable.MethodSemantics] = MethodSemantics.Size(this); elemSize[(int)MDTable.MethodImpl] = MethodImpl.Size(this); elemSize[(int)MDTable.ModuleRef] = ModuleRef.Size(this); elemSize[(int)MDTable.TypeSpec] = TypeSpec.Size(this); elemSize[(int)MDTable.ImplMap] = ImplMap.Size(this); elemSize[(int)MDTable.FieldRVA] = FieldRVA.Size(this); elemSize[(int)MDTable.Assembly] = Assembly.Size(this); elemSize[(int)MDTable.AssemblyRef] = AssemblyRef.Size(this); elemSize[(int)MDTable.File] = FileRef.Size(this); elemSize[(int)MDTable.ExportedType] = ExternClass.Size(this); elemSize[(int)MDTable.ManifestResource] = ManifestResource.Size(this); elemSize[(int)MDTable.NestedClass] = MapElem.Size(this, MDTable.NestedClass); elemSize[(int)MDTable.GenericParam] = GenericParam.Size(this); elemSize[(int)MDTable.GenericParamConstraint] = GenericParamConstraint.Size(this); elemSize[(int)MDTable.MethodSpec] = MethodSpec.Size(this); }
public static Object FromNamedItem(CodeGenerationConfigBuilder builder, INamedItem namedItem) { Object returnItem = null; if (namedItem is RoslynClassMetadata classMetadata && ClassImpl.FromMetadata(classMetadata, null) is Class @class) { returnItem = @class; } if (namedItem is RoslynEnumMetadata enumMetadata && EnumImpl.FromMetadata(enumMetadata, null) is Enum @enum) { returnItem = @enum; } if (namedItem is RoslynInterfaceMetadata interfaceMetadata && InterfaceImpl.FromMetadata(interfaceMetadata, null) is Interface @interface) { returnItem = @interface; } if (returnItem != null) { returnItem.Template = builder.Input.Template; } return(returnItem); }
public TypeDefOrRefAndCAOptions(InterfaceImpl iface) { this.TypeDefOrRef = iface.Interface; this.CustomAttributes.AddRange(iface.CustomAttributes); }
public Tabels(PEFile p) { //Init this.r = p.MetadataReader; //Read all of the tabels ModuleTabel = new List <Module>(); TypeRefTabel = new List <TypeRef>(); TypeDefTabel = new List <TypeDef>(); FieldTabel = new List <Field>(); MethodTabel = new List <Method>(); ParmTabel = new List <Param>(); InterfaceImplTable = new List <InterfaceImpl>(); MemberRefTabelRow = new List <MemberRef>(); ConstantTabel = new List <Constant>(); CustomAttributeTabel = new List <CustomAttribute>(); FieldMarshalTabel = new List <FieldMarshal>(); DeclSecurityTabel = new List <DeclSecurity>(); ClassLayoutTabel = new List <ClassLayout>(); FieldLayoutTabel = new List <FieldLayout>(); StandAloneSigTabel = new List <StandAloneSig>(); EventMapTabel = new List <EventMap>(); EventTabel = new List <Event>(); PropertyMapTabel = new List <PropertyMap>(); PropertyTabel = new List <PropertyTabel>(); MethodSemanticsTabel = new List <MethodSemantics>(); MethodImplTabel = new List <MethodImpl>(); ModuleRefTabel = new List <ModuleRef>(); TypeSpecTabel = new List <TypeSpec>(); ImplMapTabel = new List <ImplMap>(); FieldRVATabel = new List <FieldRVA>(); AssemblyTabel = new List <Assembly>(); AssemblyRefTabel = new List <AssemblyRef>(); FileTable = new List <File>(); ExportedTypeTable = new List <ExportedType>(); ManifestResourceTable = new List <ManifestResource>(); NestedClassTable = new List <NestedClass>(); GenericParamTable = new List <GenericParam>(); MethodSpecTable = new List <MethodSpec>(); int a = 0; //Read module Tabel (if any) if ((p.ClrMetaDataStreamHeader.TablesFlags & MetadataTableFlags.Module) != 0) { for (int i = 0; i < p.ClrMetaDataStreamHeader.TableSizes[a]; i++) { var m = new Module(); m.Read(r); ModuleTabel.Add(m); } a++; } //Read TypeRef Tabel if ((p.ClrMetaDataStreamHeader.TablesFlags & MetadataTableFlags.TypeRef) != 0) { for (int i = 0; i < p.ClrMetaDataStreamHeader.TableSizes[a]; i++) { var m = new TypeRef(); m.Read(r); TypeRefTabel.Add(m); } a++; } //Read TypeDef Tabel if ((p.ClrMetaDataStreamHeader.TablesFlags & MetadataTableFlags.TypeDef) != 0) { for (int i = 0; i < p.ClrMetaDataStreamHeader.TableSizes[a]; i++) { var m = new TypeDef(); m.Read(r); TypeDefTabel.Add(m); } a++; } //Read Field Tabel if ((p.ClrMetaDataStreamHeader.TablesFlags & MetadataTableFlags.Field) != 0) { for (int i = 0; i < p.ClrMetaDataStreamHeader.TableSizes[a]; i++) { var m = new Field(); m.Read(r); FieldTabel.Add(m); } a++; } //Read Method tabel if ((p.ClrMetaDataStreamHeader.TablesFlags & MetadataTableFlags.Method) != 0) { for (int i = 0; i < p.ClrMetaDataStreamHeader.TableSizes[a]; i++) { var m = new Method(); m.Read(r); MethodTabel.Add(m); } a++; } //Read Parm Tabel if ((p.ClrMetaDataStreamHeader.TablesFlags & MetadataTableFlags.Param) != 0) { for (int i = 0; i < p.ClrMetaDataStreamHeader.TableSizes[a]; i++) { var m = new Param(); m.Read(r); ParmTabel.Add(m); } a++; } //Read interfaceimpl Tabel if ((p.ClrMetaDataStreamHeader.TablesFlags & MetadataTableFlags.InterfaceImpl) != 0) { for (int i = 0; i < p.ClrMetaDataStreamHeader.TableSizes[a]; i++) { var m = new InterfaceImpl(); m.Read(r); InterfaceImplTable.Add(m); } a++; } //Read MemberRef tabel if ((p.ClrMetaDataStreamHeader.TablesFlags & MetadataTableFlags.MemberRef) != 0) { for (int i = 0; i < p.ClrMetaDataStreamHeader.TableSizes[a]; i++) { var m = new MemberRef(); m.Read(r); MemberRefTabelRow.Add(m); } a++; } //Read Constant tabel if ((p.ClrMetaDataStreamHeader.TablesFlags & MetadataTableFlags.Constant) != 0) { for (int i = 0; i < p.ClrMetaDataStreamHeader.TableSizes[a]; i++) { var m = new Constant(); m.Read(r); ConstantTabel.Add(m); } a++; } //Read CustomAttribute tabel if ((p.ClrMetaDataStreamHeader.TablesFlags & MetadataTableFlags.CustomAttribute) != 0) { for (int i = 0; i < p.ClrMetaDataStreamHeader.TableSizes[a]; i++) { var m = new CustomAttribute(); m.Read(r); CustomAttributeTabel.Add(m); } a++; } //Read FieldMarshal tabel (Please test) if ((p.ClrMetaDataStreamHeader.TablesFlags & MetadataTableFlags.FieldMarshal) != 0) { for (int i = 0; i < p.ClrMetaDataStreamHeader.TableSizes[a]; i++) { var m = new FieldMarshal(); m.Read(r); FieldMarshalTabel.Add(m); } a++; } //Read DeclSecurity tabel if ((p.ClrMetaDataStreamHeader.TablesFlags & MetadataTableFlags.DeclSecurity) != 0) { for (int i = 0; i < p.ClrMetaDataStreamHeader.TableSizes[a]; i++) { var m = new DeclSecurity(); m.Read(r); DeclSecurityTabel.Add(m); } a++; } //Read ClassLayout tabel if ((p.ClrMetaDataStreamHeader.TablesFlags & MetadataTableFlags.ClassLayout) != 0) { for (int i = 0; i < p.ClrMetaDataStreamHeader.TableSizes[a]; i++) { var m = new ClassLayout(); m.Read(r); ClassLayoutTabel.Add(m); } a++; } //Read FieldLayout tabel if ((p.ClrMetaDataStreamHeader.TablesFlags & MetadataTableFlags.FieldLayout) != 0) { for (int i = 0; i < p.ClrMetaDataStreamHeader.TableSizes[a]; i++) { var m = new FieldLayout(); m.Read(r); FieldLayoutTabel.Add(m); } a++; } //Read StandAloneSig tabel if ((p.ClrMetaDataStreamHeader.TablesFlags & MetadataTableFlags.StandAloneSig) != 0) { for (int i = 0; i < p.ClrMetaDataStreamHeader.TableSizes[a]; i++) { var m = new StandAloneSig(); m.Read(r); StandAloneSigTabel.Add(m); } a++; } //Read EventMap tabel (please test) if ((p.ClrMetaDataStreamHeader.TablesFlags & MetadataTableFlags.EventMap) != 0) { for (int i = 0; i < p.ClrMetaDataStreamHeader.TableSizes[a]; i++) { var m = new EventMap(); m.Read(r); EventMapTabel.Add(m); } a++; } //Read event tabel if ((p.ClrMetaDataStreamHeader.TablesFlags & MetadataTableFlags.Event) != 0) { for (int i = 0; i < p.ClrMetaDataStreamHeader.TableSizes[a]; i++) { var m = new Event(); m.Read(r); EventTabel.Add(m); } a++; } //Read Property Map tabel if ((p.ClrMetaDataStreamHeader.TablesFlags & MetadataTableFlags.PropertyMap) != 0) { for (int i = 0; i < p.ClrMetaDataStreamHeader.TableSizes[a]; i++) { var m = new PropertyMap(); m.Read(r); PropertyMapTabel.Add(m); } a++; } //Read Property tabel if ((p.ClrMetaDataStreamHeader.TablesFlags & MetadataTableFlags.Property) != 0) { for (int i = 0; i < p.ClrMetaDataStreamHeader.TableSizes[a]; i++) { var m = new PropertyTabel(); m.Read(r); PropertyTabel.Add(m); } a++; } //Read MethodSemantics tabel if ((p.ClrMetaDataStreamHeader.TablesFlags & MetadataTableFlags.MethodSemantics) != 0) { for (int i = 0; i < p.ClrMetaDataStreamHeader.TableSizes[a]; i++) { var m = new MethodSemantics(); m.Read(r); MethodSemanticsTabel.Add(m); } a++; } //Read MethodImpl tabel (Please test) if ((p.ClrMetaDataStreamHeader.TablesFlags & MetadataTableFlags.MethodImpl) != 0) { for (int i = 0; i < p.ClrMetaDataStreamHeader.TableSizes[a]; i++) { var m = new MethodImpl(); m.Read(r); MethodImplTabel.Add(m); } a++; } //Read ModuleRef tabel (pls test) if ((p.ClrMetaDataStreamHeader.TablesFlags & MetadataTableFlags.ModuleRef) != 0) { for (int i = 0; i < p.ClrMetaDataStreamHeader.TableSizes[a]; i++) { var m = new ModuleRef(); m.Read(r); ModuleRefTabel.Add(m); } a++; } //Read TypeSpec tabel (pls test) if ((p.ClrMetaDataStreamHeader.TablesFlags & MetadataTableFlags.TypeSpec) != 0) { for (int i = 0; i < p.ClrMetaDataStreamHeader.TableSizes[a]; i++) { var m = new TypeSpec(); m.Read(r); TypeSpecTabel.Add(m); } a++; } //Read ImplMap tabel (pls test) if ((p.ClrMetaDataStreamHeader.TablesFlags & MetadataTableFlags.ImplMap) != 0) { for (int i = 0; i < p.ClrMetaDataStreamHeader.TableSizes[a]; i++) { var m = new ImplMap(); m.Read(r); ImplMapTabel.Add(m); } a++; } //Read FieldRVA tabel (pls test) if ((p.ClrMetaDataStreamHeader.TablesFlags & MetadataTableFlags.FieldRVA) != 0) { for (int i = 0; i < p.ClrMetaDataStreamHeader.TableSizes[a]; i++) { var m = new FieldRVA(); m.Read(r); FieldRVATabel.Add(m); } a++; } //Read Assembly tabel (pls test) if ((p.ClrMetaDataStreamHeader.TablesFlags & MetadataTableFlags.Assembly) != 0) { for (int i = 0; i < p.ClrMetaDataStreamHeader.TableSizes[a]; i++) { var m = new Assembly(); m.Read(r); AssemblyTabel.Add(m); } a++; } //Read ignored tabels (These never should be present!) if ((p.ClrMetaDataStreamHeader.TablesFlags & MetadataTableFlags.AssemblyProcessor) != 0) { for (int i = 0; i < p.ClrMetaDataStreamHeader.TableSizes[a]; i++) { var proc = r.ReadUInt32(); } a++; } if ((p.ClrMetaDataStreamHeader.TablesFlags & MetadataTableFlags.AssemblyOS) != 0) { for (int i = 0; i < p.ClrMetaDataStreamHeader.TableSizes[a]; i++) { r.BaseStream.Position += 11; //Test please } a++; } //Read AssemblyRef Tabel if ((p.ClrMetaDataStreamHeader.TablesFlags & MetadataTableFlags.AssemblyRef) != 0) { for (int i = 0; i < p.ClrMetaDataStreamHeader.TableSizes[a]; i++) { var m = new AssemblyRef(); m.Read(r); AssemblyRefTabel.Add(m); } a++; } //Read AssemblyRefProcessor Tabel if ((p.ClrMetaDataStreamHeader.TablesFlags & MetadataTableFlags.AssemblyRefProcessor) != 0) { for (int i = 0; i < p.ClrMetaDataStreamHeader.TableSizes[a]; i++) { r.BaseStream.Position += 8; //Test please } a++; } //Read AssemblyRefOS Tabel if ((p.ClrMetaDataStreamHeader.TablesFlags & MetadataTableFlags.AssemblyRefOS) != 0) { for (int i = 0; i < p.ClrMetaDataStreamHeader.TableSizes[a]; i++) { r.BaseStream.Position += 16; //Test please } a++; } //Read File Tabel if ((p.ClrMetaDataStreamHeader.TablesFlags & MetadataTableFlags.File) != 0) { for (int i = 0; i < p.ClrMetaDataStreamHeader.TableSizes[a]; i++) { var m = new File(); m.Read(r); FileTable.Add(m); } a++; } //Read ExportedType Tabel if ((p.ClrMetaDataStreamHeader.TablesFlags & MetadataTableFlags.ExportedType) != 0) { for (int i = 0; i < p.ClrMetaDataStreamHeader.TableSizes[a]; i++) { var m = new ExportedType(); m.Read(r); ExportedTypeTable.Add(m); } a++; } //Read ManifestResource Tabel if ((p.ClrMetaDataStreamHeader.TablesFlags & MetadataTableFlags.ManifestResource) != 0) { for (int i = 0; i < p.ClrMetaDataStreamHeader.TableSizes[a]; i++) { var m = new ManifestResource(); m.Read(r); ManifestResourceTable.Add(m); } a++; } //Read NestedClass Tabel if ((p.ClrMetaDataStreamHeader.TablesFlags & MetadataTableFlags.NestedClass) != 0) { for (int i = 0; i < p.ClrMetaDataStreamHeader.TableSizes[a]; i++) { var m = new NestedClass(); m.Read(r); NestedClassTable.Add(m); } a++; } //Read GenericParam Tabel if ((p.ClrMetaDataStreamHeader.TablesFlags & MetadataTableFlags.GenericParam) != 0) { for (int i = 0; i < p.ClrMetaDataStreamHeader.TableSizes[a]; i++) { var m = new GenericParam(); m.Read(r); GenericParamTable.Add(m); } a++; } //Read MethodSpec Tabel if ((p.ClrMetaDataStreamHeader.TablesFlags & MetadataTableFlags.MethodSpec) != 0) { for (int i = 0; i < p.ClrMetaDataStreamHeader.TableSizes[a]; i++) { var m = new MethodSpec(); m.Read(r); MethodSpecTable.Add(m); } a++; } }
private static int Main() { const int numCalcIters = 1000000; const int countUpIters = 1000000; int x = numCalcIters; S32 s = default; int expected = 0; while (x != 0) { if (x % 2 == 0) { s = default; } Calc(ref x, ref s, ref expected); } bool result = true; void Test <T>(Func <T> f, T expected, string name) { Console.Write("{0}: ", name); Stopwatch timer = Stopwatch.StartNew(); T val = f(); timer.Stop(); if (val.Equals(expected)) { Console.WriteLine("OK in {1} ms", name, timer.ElapsedMilliseconds); return; } Console.WriteLine("FAIL (expected {1}, got {2})", name, expected, val); result = false; } void TestCalc <T>(Func <int, int, T> f, T expected, string name) => Test(() => f(numCalcIters, 0), expected, name); ClassImpl c = new ClassImpl(); c.Other = c; InterfaceImpl i = new InterfaceImpl(); i.Other = i; GenInstance <string, int> g = new GenInstance <string, int>(); IGenInterface <string, int> ig = new GenInterfaceImpl <string, int>(); IGenInterface <string, object> ig2 = new GenInterfaceImpl <string, object>(); GenAbstractImpl <string> ga1 = new GenAbstractImpl <string>(); GenAbstractImpl <int> ga2 = new GenAbstractImpl <int>(); long expectedI8 = (long)(((ulong)(uint)expected << 32) | (uint)expected); S16 expectedS16 = new S16 { A = expected, B = expected, }; S32 expectedS32 = new S32 { A = expected, B = expected, C = expected, D = expected, }; int ten = 10; TestCalc(CalcStatic, expected, "Static non-generic"); TestCalc(CalcStaticSmall, (byte)expected, "Static non-generic small"); TestCalc(CalcStaticRetbuf, expectedS32, "Static non-generic retbuf"); TestCalc(CalcStaticLong, expectedI8, "Static non-generic long"); TestCalc(CalcStaticS16, expectedS16, "Static non-generic S16"); TestCalc((x, s) => { CalcStaticVoid(x, s); return(s_result); }, expected, "Static void"); TestCalc(new Instance().CalcInstance, expected, "Instance non-generic"); TestCalc(new Instance().CalcInstanceRetbuf, expectedS32, "Instance non-generic retbuf"); TestCalc(c.CalcAbstract, expected, "Abstract class non-generic"); TestCalc(c.CalcAbstractRetbuf, expectedS32, "Abstract class non-generic retbuf"); TestCalc(i.CalcInterface, expected, "Interface non-generic"); TestCalc(i.CalcInterfaceRetbuf, expectedS32, "Interface non-generic retbuf"); TestCalc(CalcStaticCalli, expected, "Static calli"); TestCalc(CalcStaticCalliRetbuf, expectedS32, "Static calli retbuf"); TestCalc(new Instance().CalcInstanceCalli, expected, "Instance calli"); TestCalc(new Instance().CalcInstanceCalliRetbuf, expectedS32, "Instance calli retbuf"); Test(() => EmptyCalli(), "Empty calli", "Static calli without args"); Test(() => ValueTypeInstanceMethodCalli(), "Instance method", "calli to an instance method on a value type"); Test(() => ValueTypeExplicitThisInstanceMethodCalli(), "Instance method", "calli to an instance method on a value type with explicit this"); Test(() => { var v = new InstanceValueType(); v.CountUp(countUpIters); return(v.Count); }, countUpIters, "Value type instance call"); Test(() => new Instance().GC("2", 3, "4", 5, "6", "7", "8", 9, ref ten), "2 3 4 5 6 7 8 9 10", "Instance with GC"); Test(() => CountUpHeap(countUpIters, new HeapInt(0)), countUpIters, "Count up with heap int"); Test(() => { int[] val = new int[1]; CountUpRef(countUpIters, ref val[0]); return(val[0]); }, countUpIters, "Count up with byref to heap"); Test(() => GenName1Forward("hello"), "System.String hello", "Static generic string"); Test(() => GenName1Forward <object>("hello"), "System.Object hello", "Static generic object"); Test(() => GenName1Forward(5), "System.Int32 5", "Static generic int"); Test(() => GenName2ForwardBoth("hello", (object)"hello2"), "System.String System.Object hello hello2", "Static generic 2 string object"); Test(() => GenName2ForwardBoth("hello", 5), "System.String System.Int32 hello 5", "Static generic 2 string int"); Test(() => GenName2ForwardOne("hello", "hello2"), "System.String System.String hello hello2", "Static generic 1 string"); Test(() => GenName2ForwardOne((object)"hello", "hello2"), "System.Object System.String hello hello2", "Static generic 1 object"); Test(() => GenName2ForwardOne(5, "hello2"), "System.Int32 System.String 5 hello2", "Static generic 1 int"); Test(() => GenName2ForwardNone("hello", "hello2"), "System.Object System.String hello hello2", "Static generic 0"); Test(() => g.NonVirtForward <object, string>("a", 5, "b", "c"), "System.String System.Int32 System.Object System.String a 5 b c", "Instance generic 4"); Test(() => g.VirtForward <object, string>("a", 5, "b", "c"), "System.String System.Int32 System.Object System.String a 5 b c", "Virtual instance generic 4"); Test(() => GenInterfaceForwardF <string, int, string, object>("a", 5, "c", "d", ig), "System.String System.Int32 System.String System.Object a 5 c d", "Interface generic 4"); Test(() => GenInterfaceForwardG <string, int>("a", 5, ig), "System.String System.Int32 a 5", "Interface generic forward G"); Test(() => GenInterfaceForwardNone("a", "b", 5, "d", ig2), "System.String System.Object System.Int32 System.Object a b 5 d", "Interface generic 0"); Test(() => GenInterfaceForward2("a", "b", ig2), "System.String System.Object a b", "Interface generic without generics on method"); Test(() => GenAbstractFString(ga1), "System.String System.Object", "Abstract generic with generic on method 1"); Test(() => GenAbstractFInt(ga2), "System.Int32 System.Object", "Abstract generic with generic on method 2"); Test(() => GenAbstractGString(ga1), "System.String", "Abstract generic without generic on method 1"); Test(() => GenAbstractGInt(ga2), "System.Int32", "Abstract generic without generic on method 2"); if (result) { Console.WriteLine("All tailcall-via-help succeeded"); } else { Console.WriteLine("One or more failures in tailcall-via-help test"); } return(result ? 100 : 1); }
protected internal virtual void DoRegisterTypes(ModelBuilder bpmnModelBuilder) { ActivationConditionImpl.RegisterType(bpmnModelBuilder); ActivityImpl.RegisterType(bpmnModelBuilder); ArtifactImpl.RegisterType(bpmnModelBuilder); AssignmentImpl.RegisterType(bpmnModelBuilder); AssociationImpl.RegisterType(bpmnModelBuilder); AuditingImpl.RegisterType(bpmnModelBuilder); BaseElementImpl.RegisterType(bpmnModelBuilder); BoundaryEventImpl.RegisterType(bpmnModelBuilder); BusinessRuleTaskImpl.RegisterType(bpmnModelBuilder); CallableElementImpl.RegisterType(bpmnModelBuilder); CallActivityImpl.RegisterType(bpmnModelBuilder); CallConversationImpl.RegisterType(bpmnModelBuilder); CancelEventDefinitionImpl.RegisterType(bpmnModelBuilder); CatchEventImpl.RegisterType(bpmnModelBuilder); CategoryValueImpl.RegisterType(bpmnModelBuilder); CategoryValueRef.RegisterType(bpmnModelBuilder); ChildLaneSet.RegisterType(bpmnModelBuilder); CollaborationImpl.RegisterType(bpmnModelBuilder); CompensateEventDefinitionImpl.RegisterType(bpmnModelBuilder); ConditionImpl.RegisterType(bpmnModelBuilder); ConditionalEventDefinitionImpl.RegisterType(bpmnModelBuilder); CompletionConditionImpl.RegisterType(bpmnModelBuilder); ComplexBehaviorDefinitionImpl.RegisterType(bpmnModelBuilder); ComplexGatewayImpl.RegisterType(bpmnModelBuilder); ConditionExpressionImpl.RegisterType(bpmnModelBuilder); ConversationAssociationImpl.RegisterType(bpmnModelBuilder); ConversationImpl.RegisterType(bpmnModelBuilder); ConversationLinkImpl.RegisterType(bpmnModelBuilder); ConversationNodeImpl.RegisterType(bpmnModelBuilder); CorrelationKeyImpl.RegisterType(bpmnModelBuilder); CorrelationPropertyBindingImpl.RegisterType(bpmnModelBuilder); CorrelationPropertyImpl.RegisterType(bpmnModelBuilder); CorrelationPropertyRef.RegisterType(bpmnModelBuilder); CorrelationPropertyRetrievalExpressionImpl.RegisterType(bpmnModelBuilder); CorrelationSubscriptionImpl.RegisterType(bpmnModelBuilder); DataAssociationImpl.RegisterType(bpmnModelBuilder); DataInputAssociationImpl.RegisterType(bpmnModelBuilder); DataInputImpl.RegisterType(bpmnModelBuilder); DataInputRefs.RegisterType(bpmnModelBuilder); DataOutputAssociationImpl.RegisterType(bpmnModelBuilder); DataOutputImpl.RegisterType(bpmnModelBuilder); DataOutputRefs.RegisterType(bpmnModelBuilder); DataPath.RegisterType(bpmnModelBuilder); DataStateImpl.RegisterType(bpmnModelBuilder); DataObjectImpl.RegisterType(bpmnModelBuilder); DataObjectReferenceImpl.RegisterType(bpmnModelBuilder); DataStoreImpl.RegisterType(bpmnModelBuilder); DefinitionsImpl.RegisterType(bpmnModelBuilder); DocumentationImpl.RegisterType(bpmnModelBuilder); EndEventImpl.RegisterType(bpmnModelBuilder); EndPointImpl.RegisterType(bpmnModelBuilder); EndPointRef.RegisterType(bpmnModelBuilder); ErrorEventDefinitionImpl.RegisterType(bpmnModelBuilder); ErrorImpl.RegisterType(bpmnModelBuilder); ErrorRef.RegisterType(bpmnModelBuilder); EscalationImpl.RegisterType(bpmnModelBuilder); EscalationEventDefinitionImpl.RegisterType(bpmnModelBuilder); EventBasedGatewayImpl.RegisterType(bpmnModelBuilder); EventDefinitionImpl.RegisterType(bpmnModelBuilder); EventDefinitionRef.RegisterType(bpmnModelBuilder); EventImpl.RegisterType(bpmnModelBuilder); ExclusiveGatewayImpl.RegisterType(bpmnModelBuilder); ExpressionImpl.RegisterType(bpmnModelBuilder); ExtensionElementsImpl.RegisterType(bpmnModelBuilder); ExtensionImpl.RegisterType(bpmnModelBuilder); FlowElementImpl.RegisterType(bpmnModelBuilder); FlowNodeImpl.RegisterType(bpmnModelBuilder); FlowNodeRef.RegisterType(bpmnModelBuilder); FormalExpressionImpl.RegisterType(bpmnModelBuilder); From.RegisterType(bpmnModelBuilder); GatewayImpl.RegisterType(bpmnModelBuilder); GlobalConversationImpl.RegisterType(bpmnModelBuilder); HumanPerformerImpl.RegisterType(bpmnModelBuilder); ImportImpl.RegisterType(bpmnModelBuilder); InclusiveGatewayImpl.RegisterType(bpmnModelBuilder); Incoming.RegisterType(bpmnModelBuilder); InMessageRef.RegisterType(bpmnModelBuilder); InnerParticipantRef.RegisterType(bpmnModelBuilder); InputDataItemImpl.RegisterType(bpmnModelBuilder); InputSetImpl.RegisterType(bpmnModelBuilder); InputSetRefs.RegisterType(bpmnModelBuilder); InteractionNodeImpl.RegisterType(bpmnModelBuilder); InterfaceImpl.RegisterType(bpmnModelBuilder); InterfaceRef.RegisterType(bpmnModelBuilder); IntermediateCatchEventImpl.RegisterType(bpmnModelBuilder); IntermediateThrowEventImpl.RegisterType(bpmnModelBuilder); IoBindingImpl.RegisterType(bpmnModelBuilder); IoSpecificationImpl.RegisterType(bpmnModelBuilder); ItemAwareElementImpl.RegisterType(bpmnModelBuilder); ItemDefinitionImpl.RegisterType(bpmnModelBuilder); LaneImpl.RegisterType(bpmnModelBuilder); LaneSetImpl.RegisterType(bpmnModelBuilder); LinkEventDefinitionImpl.RegisterType(bpmnModelBuilder); LoopCardinalityImpl.RegisterType(bpmnModelBuilder); LoopCharacteristicsImpl.RegisterType(bpmnModelBuilder); LoopDataInputRef.RegisterType(bpmnModelBuilder); LoopDataOutputRef.RegisterType(bpmnModelBuilder); ManualTaskImpl.RegisterType(bpmnModelBuilder); MessageEventDefinitionImpl.RegisterType(bpmnModelBuilder); MessageFlowAssociationImpl.RegisterType(bpmnModelBuilder); MessageFlowImpl.RegisterType(bpmnModelBuilder); MessageFlowRef.RegisterType(bpmnModelBuilder); MessageImpl.RegisterType(bpmnModelBuilder); MessagePath.RegisterType(bpmnModelBuilder); ModelElementInstanceImpl.RegisterType(bpmnModelBuilder); MonitoringImpl.RegisterType(bpmnModelBuilder); MultiInstanceLoopCharacteristicsImpl.RegisterType(bpmnModelBuilder); OperationImpl.RegisterType(bpmnModelBuilder); OperationRef.RegisterType(bpmnModelBuilder); OptionalInputRefs.RegisterType(bpmnModelBuilder); OptionalOutputRefs.RegisterType(bpmnModelBuilder); OuterParticipantRef.RegisterType(bpmnModelBuilder); OutMessageRef.RegisterType(bpmnModelBuilder); Outgoing.RegisterType(bpmnModelBuilder); OutputDataItemImpl.RegisterType(bpmnModelBuilder); OutputSetImpl.RegisterType(bpmnModelBuilder); OutputSetRefs.RegisterType(bpmnModelBuilder); ParallelGatewayImpl.RegisterType(bpmnModelBuilder); ParticipantAssociationImpl.RegisterType(bpmnModelBuilder); ParticipantImpl.RegisterType(bpmnModelBuilder); ParticipantMultiplicityImpl.RegisterType(bpmnModelBuilder); ParticipantRef.RegisterType(bpmnModelBuilder); PartitionElement.RegisterType(bpmnModelBuilder); PerformerImpl.RegisterType(bpmnModelBuilder); PotentialOwnerImpl.RegisterType(bpmnModelBuilder); ProcessImpl.RegisterType(bpmnModelBuilder); PropertyImpl.RegisterType(bpmnModelBuilder); ReceiveTaskImpl.RegisterType(bpmnModelBuilder); RelationshipImpl.RegisterType(bpmnModelBuilder); RenderingImpl.RegisterType(bpmnModelBuilder); ResourceAssignmentExpressionImpl.RegisterType(bpmnModelBuilder); ResourceImpl.RegisterType(bpmnModelBuilder); ResourceParameterBindingImpl.RegisterType(bpmnModelBuilder); ResourceParameterImpl.RegisterType(bpmnModelBuilder); ResourceRef.RegisterType(bpmnModelBuilder); ResourceRoleImpl.RegisterType(bpmnModelBuilder); RootElementImpl.RegisterType(bpmnModelBuilder); ScriptImpl.RegisterType(bpmnModelBuilder); ScriptTaskImpl.RegisterType(bpmnModelBuilder); SendTaskImpl.RegisterType(bpmnModelBuilder); SequenceFlowImpl.RegisterType(bpmnModelBuilder); ServiceTaskImpl.RegisterType(bpmnModelBuilder); SignalEventDefinitionImpl.RegisterType(bpmnModelBuilder); SignalImpl.RegisterType(bpmnModelBuilder); Source.RegisterType(bpmnModelBuilder); SourceRef.RegisterType(bpmnModelBuilder); StartEventImpl.RegisterType(bpmnModelBuilder); SubConversationImpl.RegisterType(bpmnModelBuilder); SubProcessImpl.RegisterType(bpmnModelBuilder); SupportedInterfaceRef.RegisterType(bpmnModelBuilder); Supports.RegisterType(bpmnModelBuilder); Target.RegisterType(bpmnModelBuilder); TargetRef.RegisterType(bpmnModelBuilder); TaskImpl.RegisterType(bpmnModelBuilder); TerminateEventDefinitionImpl.RegisterType(bpmnModelBuilder); TextImpl.RegisterType(bpmnModelBuilder); TextAnnotationImpl.RegisterType(bpmnModelBuilder); ThrowEventImpl.RegisterType(bpmnModelBuilder); TimeCycleImpl.RegisterType(bpmnModelBuilder); TimeDateImpl.RegisterType(bpmnModelBuilder); TimeDurationImpl.RegisterType(bpmnModelBuilder); TimerEventDefinitionImpl.RegisterType(bpmnModelBuilder); To.RegisterType(bpmnModelBuilder); TransactionImpl.RegisterType(bpmnModelBuilder); Transformation.RegisterType(bpmnModelBuilder); UserTaskImpl.RegisterType(bpmnModelBuilder); WhileExecutingInputRefs.RegisterType(bpmnModelBuilder); WhileExecutingOutputRefs.RegisterType(bpmnModelBuilder); // DC FontImpl.RegisterType(bpmnModelBuilder); PointImpl.RegisterType(bpmnModelBuilder); BoundsImpl.RegisterType(bpmnModelBuilder); // DI DiagramImpl.RegisterType(bpmnModelBuilder); DiagramElementImpl.RegisterType(bpmnModelBuilder); EdgeImpl.RegisterType(bpmnModelBuilder); impl.instance.di.ExtensionImpl.RegisterType(bpmnModelBuilder); LabelImpl.RegisterType(bpmnModelBuilder); LabeledEdgeImpl.RegisterType(bpmnModelBuilder); LabeledShapeImpl.RegisterType(bpmnModelBuilder); NodeImpl.RegisterType(bpmnModelBuilder); PlaneImpl.RegisterType(bpmnModelBuilder); ShapeImpl.RegisterType(bpmnModelBuilder); StyleImpl.RegisterType(bpmnModelBuilder); WaypointImpl.RegisterType(bpmnModelBuilder); // BPMNDI BpmnDiagramImpl.RegisterType(bpmnModelBuilder); BpmnEdgeImpl.RegisterType(bpmnModelBuilder); BpmnLabelImpl.RegisterType(bpmnModelBuilder); BpmnLabelStyleImpl.RegisterType(bpmnModelBuilder); BpmnPlaneImpl.RegisterType(bpmnModelBuilder); BpmnShapeImpl.RegisterType(bpmnModelBuilder); // camunda extensions CamundaConnectorImpl.RegisterType(bpmnModelBuilder); CamundaConnectorIdImpl.RegisterType(bpmnModelBuilder); CamundaConstraintImpl.RegisterType(bpmnModelBuilder); CamundaEntryImpl.RegisterType(bpmnModelBuilder); CamundaExecutionListenerImpl.RegisterType(bpmnModelBuilder); CamundaExpressionImpl.RegisterType(bpmnModelBuilder); CamundaFailedJobRetryTimeCycleImpl.RegisterType(bpmnModelBuilder); CamundaFieldImpl.RegisterType(bpmnModelBuilder); CamundaFormDataImpl.RegisterType(bpmnModelBuilder); CamundaFormFieldImpl.RegisterType(bpmnModelBuilder); CamundaFormPropertyImpl.RegisterType(bpmnModelBuilder); CamundaInImpl.RegisterType(bpmnModelBuilder); CamundaInputOutputImpl.RegisterType(bpmnModelBuilder); CamundaInputParameterImpl.RegisterType(bpmnModelBuilder); CamundaListImpl.RegisterType(bpmnModelBuilder); CamundaMapImpl.RegisterType(bpmnModelBuilder); CamundaOutputParameterImpl.RegisterType(bpmnModelBuilder); CamundaOutImpl.RegisterType(bpmnModelBuilder); CamundaPotentialStarterImpl.RegisterType(bpmnModelBuilder); CamundaPropertiesImpl.RegisterType(bpmnModelBuilder); CamundaPropertyImpl.RegisterType(bpmnModelBuilder); CamundaScriptImpl.RegisterType(bpmnModelBuilder); CamundaStringImpl.RegisterType(bpmnModelBuilder); CamundaTaskListenerImpl.RegisterType(bpmnModelBuilder); CamundaValidationImpl.RegisterType(bpmnModelBuilder); CamundaValueImpl.RegisterType(bpmnModelBuilder); }