Esempio n. 1
0
 private void WriteMethodSignature(MethodDeclaration member, ICallSignature signature = null)
 {
     _Writer.WriteAccessibility(member.Accessibility);
     WriteIsStatic(member.IsStatic);
     WriteIsAsync(member.IsAsync);
     WriteIsAbstract(member.IsAbstract);
     _Writer.Write(member.MethodName);
     WriteCallSignature(signature ?? member);
 }
Esempio n. 2
0
 public static string GetComCompatibleName(this ICallSignature sig)
 {
     if (sig.OverloadOrdinal == 0)
     {
         return(sig.Name);
     }
     else
     {
         return(sig.Name + "_" + sig.OverloadOrdinal.ToString());
     }
 }
Esempio n. 3
0
 public static IEnumerable <IVariable> GetABIParametersCs(this ICallSignature sig, bool explicitContext = false)
 {
     foreach (var v in GetABIParametersCpp(sig, explicitContext))
     {
         if (v.IsArray && v.IsWriteable())
         {
             yield return(v.Morph(null, null, BasicTypes.IntPtr, false));
         }
         else
         {
             yield return(v);
         }
     }
 }
Esempio n. 4
0
 private void WriteFunctionSignature(FunctionDeclaration member, ICallSignature signature = null)
 {
     WriteIsDeclare(member.IsDeclare);
     WriteIsExport(member.IsExport);
     WriteIsDefault(member.IsDefault);
     WriteIsAsync(member.IsAsync);
     _Writer.Write("function ");
     if (member.FunctionName != null)
     {
         _Writer.Write(' ');
         _Writer.Write(member.FunctionName);
     }
     WriteCallSignature(signature ?? member);
 }
Esempio n. 5
0
 public static void WriteCallSignature(this TextWriter writer, ICallSignature signature)
 {
     writer.WriteTypeParameters(signature.TypeParameters);
     if (signature.HasParameter)
     {
         writer.WriteParameters(signature.Parameters);
     }
     else
     {
         writer.Write("()");
     }
     if (signature.ReturnType != null)
     {
         writer.Write(": ");
         signature.ReturnType.WriteTypeReference(writer);
     }
 }
Esempio n. 6
0
        public static bool SignatureEquals(this ICallSignature a, ICallSignature b)
        {
            if (!a.Return.Equals(b.Return) || a.Parameters.Count != b.Parameters.Count)
            {
                return(false);
            }

            for (int i = 0; i < a.Parameters.Count; i++)
            {
                if (!a.Parameters[i].Equals(b.Parameters[i]))
                {
                    return(false);
                }
            }

            return(true);
        }
Esempio n. 7
0
 private void WriteCallSignature(ICallSignature signature)
 {
     _Writer.WriteTypeParameters(signature.TypeParameters);
     if (signature.HasParameter)
     {
         WriteParameters(signature.Parameters);
     }
     else
     {
         _Writer.Write("()");
     }
     if (signature.ReturnType != null)
     {
         _Writer.Write(": ");
         signature.ReturnType.WriteTypeReference(_Writer);
     }
 }
Esempio n. 8
0
        public static ICallSignature Rename(this ICallSignature c, string name)
        {
            var m = new Method()
            {
                Access  = Access.Public,
                Name    = name,
                Return  = c.Return,
                Nature  = MemberNature.Abstract,
                IsConst = c.IsConst
            };

            foreach (var arg in c.Parameters)
            {
                m.Parameters.Add(arg);
            }

            return(m);
        }
Esempio n. 9
0
        public static IEnumerable <IVariable> GetABIParametersCpp(this ICallSignature sig, bool explicitContext = false)
        {
            if (explicitContext)
            {
                yield return(new Parameter(BasicTypes.IObject, "__i_", VariableContext.In, false));
            }

            foreach (var arg in sig.Parameters.GetABIParametersCpp())
            {
                yield return(arg);
            }

            if (sig.Return != null && !sig.Return.IsVoid)
            {
                foreach (var arg in sig.Return.Morph("___ret", VariableContext.Out).GetABIParametersCpp())
                {
                    yield return(arg);
                }
            }
        }
Esempio n. 10
0
 public override bool Equals(ICallSignature <CallingConventionSig> other) => Equals(other as MethodBaseSig);
Esempio n. 11
0
 private void WriteConstructorSignature(ConstructorDeclaration member, ICallSignature signature = null)
 {
     _Writer.WriteAccessibility(member.Accessibility);
     _Writer.Write("constructor ");
     WriteCallSignature(signature ?? member);
 }