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 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));
            }
        }
 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");
     }
 }