Example #1
0
        public override string ProduceNativeCallConversionCode(string expr, ITypeMember m)
        {
            switch (m.PassedByType)
            {
            case PassedByType.Reference:
            //Could be called from NativeClass producer
            case PassedByType.Value:
                return(expr);

            case PassedByType.Pointer:
                if (IsVoid)
                {
                    return(expr);
                }

                if (m.HasAttribute <ArrayTypeAttribute>())
                {
                    int len = m.GetAttribute <ArrayTypeAttribute>().Length;
                    return("GetValueArrayFromNativeArray<" + FullyQualifiedCLRName + ", " + FullyQualifiedNativeName + ">( " + expr + " , " + len + " )");
                }

                return(expr);

            default:
                throw new Exception("Unexpected");
            }
        }
Example #2
0
        public override string GetCLRTypeName(ITypeMember m)
        {
            switch (m.PassedByType)
            {
            case PassedByType.Value:
                return(Name);

            case PassedByType.Pointer:
                if (IsVoid)
                {
                    return("void*");
                }

                if (m.HasAttribute <ArrayTypeAttribute>())
                {
                    return("array<" + FullyQualifiedCLRName + ">^");
                }

                string name = Name + "*";
                if (m.IsConst)
                {
                    name = "const " + name;
                }
                return(name);

            default:
                throw new Exception("Unexpected");
            }
        }
Example #3
0
        public static bool IsExposed(this ITypeMember member)
        {
            if (member == null)
            {
                return(false);
            }

            var type = member as IType;

            if (type != null)
            {
                if (type.HasGenericParams())
                {
                    return(false);
                }

                if (type.IsTestFixture())
                {
                    return(true);
                }
            }

            var method = member as IMethod;

            if (method != null)
            {
                if (method.DeclaringType.IsTestFixture())
                {
                    if (method.IsConstructor)
                    {
                        return(true);
                    }
                    if (method.IsNUnitMethod())
                    {
                        return(true);
                    }
                }

                if (method.Association != null &&
                    method.Association.IsExposed())
                {
                    return(true);
                }
            }

            return(member.HasAttribute("ExposeAttribute"));
        }
Example #4
0
        public override string ProduceNativeCallConversionCode(string expr, ITypeMember m)
        {
            if (HasAttribute <NativeValueContainerAttribute>())
            {
                switch (m.PassedByType)
                {
                case PassedByType.Pointer:
                    return("reinterpret_cast<" + GetCLRTypeName(m) + ">(" + expr + ")");
                }
            }

            switch (m.PassedByType)
            {
            case PassedByType.Pointer:
                if (IsValueType)
                {
                    if (m.HasAttribute <ArrayTypeAttribute>())
                    {
                        int len = m.GetAttribute <ArrayTypeAttribute>().Length;
                        return("GetValueArrayFromNativeArray<" + FullyQualifiedCLRName + ", " + FullyQualifiedNativeName + ">( " + expr + " , " + len + " )");
                    }
                    else if (HasWrapType(WrapTypes.NativePtrValueType))
                    {
                        return(expr);
                    }
                    else
                    {
                        return("reinterpret_cast<" + GetCLRTypeName(m) + ">(" + expr + ")");
                    }
                }
                else
                {
                    return(base.ProduceNativeCallConversionCode(expr, m));
                }

            default:
                return(base.ProduceNativeCallConversionCode(expr, m));
            }
        }
Example #5
0
 /// <summary>
 /// Indicates whether this member is ignored.
 /// </summary>
 public static bool IsIgnored(this ITypeMember m)
 {
     return(m.HasAttribute <IgnoreAttribute>());
 }
Example #6
0
 private static bool IsImportedMember(ITypeMember Member)
 {
     return(Member.HasAttribute(PrimitiveAttributes.Instance.ImportAttribute.AttributeType));
 }
 public override string GetNativeCallConversion(string expr, ITypeMember m)
 {
     switch (m.PassedByType)
     {
         case PassedByType.Reference:
             //Could be called from NativeClass producer
         case PassedByType.Value:
             return expr;
         case PassedByType.Pointer:
             if (IsVoid)
             {
                 return expr;
             }
             else if (m.HasAttribute<ArrayTypeAttribute>())
             {
                 int len = m.GetAttribute<ArrayTypeAttribute>().Length;
                 return "GetValueArrayFromNativeArray<" + FullCLRName + ", " + FullNativeName + ">( " + expr + " , " + len + " )";
             }
             else
                 return expr;
         case PassedByType.PointerPointer:
         default:
             throw new Exception("Unexpected");
     }
 }
 public override string GetCLRTypeName(ITypeMember m)
 {
     switch (m.PassedByType)
     {
         case PassedByType.Value:
             return Name;
         case PassedByType.Pointer:
             if (IsVoid)
             {
                 return "void*";
             }
             else if (m.HasAttribute<ArrayTypeAttribute>())
             {
                 return "array<" + FullCLRName + ">^";
             }
             else
             {
                 string name = Name + "*";
                 if (m.IsConst) name = "const " + name;
                 return name;
             }
         case PassedByType.Reference:
         case PassedByType.PointerPointer:
         default:
             throw new Exception("Unexpected");
     }
 }
Example #9
0
        public override string GetCLRTypeName(ITypeMember m)
        {
            if (HasAttribute <NativeValueContainerAttribute>())
            {
                switch (m.PassedByType)
                {
                case PassedByType.Pointer:
                    //return "array<" + FullCLRName + "^>^";
                    string name = FullyQualifiedCLRName + "::NativeValue*";
                    if (m.IsConst)
                    {
                        name = "const " + name;
                    }
                    return(name);
                }
            }

            switch (m.PassedByType)
            {
            case PassedByType.Pointer:
                if (IsValueType)
                {
                    if (m.HasAttribute <ArrayTypeAttribute>())
                    {
                        return("array<" + FullyQualifiedCLRName + ">^");
                    }
                    else if (HasWrapType(WrapTypes.NativePtrValueType))
                    {
                        return(FullyQualifiedCLRName);
                    }
                    else
                    {
                        string name = FullyQualifiedCLRName + "*";
                        if (m.IsConst)
                        {
                            name = "const " + name;
                        }
                        return(name);
                    }
                }
                else
                {
                    return(FullyQualifiedCLRName + "^");
                }

            case PassedByType.Reference:
            case PassedByType.Value:
                if (IsSharedPtr)
                {
                    return(FullyQualifiedCLRName + "^");
                }
                else if (IsValueType)
                {
                    return(FullyQualifiedCLRName);
                }
                else
                {
                    return(FullyQualifiedCLRName + "^");
                }

            case PassedByType.PointerPointer:
            default:
                throw new Exception("Unexpected");
            }
        }