1 // Licensed to the .NET Foundation under one or more agreements.
2 // The .NET Foundation licenses this file to you under the MIT license.
3 // See the LICENSE file in the project root for more information.
4 
5 namespace System.Reflection.Metadata
6 {
7     /// <summary>
8     /// Specifies how arguments in a given signature are passed from the caller to the callee.
9     /// Underlying values correspond to the representation in the leading signature byte
10     /// represented by <see cref="SignatureHeader"/>.
11     /// </summary>
12     public enum SignatureCallingConvention : byte
13     {
14         /// <summary>
15         /// Managed calling convention with fixed-length argument list.
16         /// </summary>
17         Default = 0x0,
18 
19         /// <summary>
20         /// Unmanaged C/C++-style calling convention where the call stack is cleaned by the caller.
21         /// </summary>
22         CDecl = 0x1,
23 
24         /// <summary>
25         /// Unmanaged calling convention where call stack is cleaned up by the callee.
26         /// </summary>
27         StdCall = 0x2,
28 
29         /// <summary>
30         /// Unmanaged C++-style calling convention for calling instance member functions with a fixed argument list.
31         /// </summary>
32         ThisCall = 0x3,
33 
34         /// <summary>
35         /// Unmanaged calling convention where arguments are passed in registers when possible.
36         /// </summary>
37         FastCall = 0x4,
38 
39         /// <summary>
40         /// Managed calling convention for passing extra arguments.
41         /// </summary>
42         VarArgs = 0x5,
43     }
44 }
45