private static GMethod RegisterCLRCall(GType type, MethodBase method) { var res = new GMethod(); res.Type = type; res.Name = method.Name; res.CLRName = method.Name; res.JVMName = method.Name; res.IsCLRMethod = true; foreach (ParameterInfo info in method.GetParameters()) { Type parameterType = info.ParameterType; if (TestCLRType(parameterType)) { return(null); } // we ignore IsOut when IsIn is set as well, because they are probably just attributes // see System.IO.TextReader.Read([In, Out] char[] buffer, int index, int count) if (info.IsOut && !info.IsIn) { //this is trick how to store out as type parameterType = parameterType.GetElementType().MakePointerType(); } res.ParameterNames.Add(info.Name); res.Parameters.Add(RegisterType(parameterType)); } res.ReturnType = RegisterType(typeof(void)); ConvertCLRAttributes(type, res, method); res.LowerName = (res.JVMName + res.GetSignatureLowerNoRet()); return(res); }
private static void RegisterJVMMethod(GType type, Method method, bool register) { var modifiers = (ModifierFlags)method.getModifiers(); Annotation annotation = HasAnnotation(method, "net.sf.jni4net.attributes.ClrMethod"); if (annotation != null || (modifiers & (ModifierFlags.Private | ModifierFlags.Synthetic)) != ModifierFlags.None) { if (annotation == null) { if (config.Verbose) { Console.WriteLine("Skip " + type + "." + method); } } return; } var res = new GMethod(); res.Type = type; res.Name = method.getName(); res.JVMName = res.Name; res.CLRName = res.JVMName; res.IsJVMMethod = true; var parameterTypes = method.getParameterTypes(); var parameterNames = GetParameterNames(method, parameterTypes.Length); for (int i = 0; i < parameterTypes.Length; i++) { var paramType = parameterTypes[i]; var paramName = parameterNames[i]; res.ParameterNames.Add(paramName); //+ paramType.ShortName res.Parameters.Add(RegisterClass(paramType)); } ConvertJVMAttributes(type, res, method); res.LowerName = res.Name + res.GetSignatureLowerNoRet(); res.ReturnType = RegisterClass(method.getReturnType()); if (register) { bool force = false; if (UseMethodModifier(type, res, res.Name, res.GetJVMSignature(), ref force)) { if (config.Verbose) { Console.WriteLine("Skip " + type + "." + method); } return; } FinishRegistration(method.getName(), type, res, force, res.Name + res.GetCLRSignatureNoRet(), skipCLR); } }
private static void RegisterJVMConstructor(GType type, Constructor ctor, bool register) { var modifiers = (ModifierFlags)ctor.getModifiers(); if ((modifiers & (ModifierFlags.Private | ModifierFlags.Synthetic)) != ModifierFlags.None) { return; } var res = new GMethod(); res.Type = type; res.Name = "<init>"; res.JVMName = res.Name; res.CLRName = "_ctor" + type.JVMType.getSimpleName(); res.ReturnType = voidType; res.IsJVMMethod = true; res.IsConstructor = true; var parameterTypes = ctor.getParameterTypes(); var parameterNames = GetParameterNames(ctor, parameterTypes.Length); for (int i = 0; i < parameterTypes.Length; i++) { var paramType = parameterTypes[i]; var paramName = parameterNames[i]; res.ParameterNames.Add(paramName); //+ paramType.ShortName res.Parameters.Add(RegisterClass(paramType)); } ConvertJVMAttributes(type, res, ctor); res.LowerName = (res.Name + res.GetSignatureLowerNoRet()); if (register) { bool force = false; if (UseMethodModifier(type, res, res.Name, res.GetJVMSignature(), ref force)) { return; } type.Constructors.Add(res); } }
private static GMethod RegisterCLRCall(GType type, MethodBase method) { var res = new GMethod(); res.Type = type; res.Name = method.Name; res.CLRName = method.Name; res.JVMName = method.Name; res.IsCLRMethod = true; foreach (ParameterInfo info in method.GetParameters()) { Type parameterType = info.ParameterType; if (TestCLRType(parameterType)) { return null; } // we ignore IsOut when IsIn is set as well, because they are probably just attributes // see System.IO.TextReader.Read([In, Out] char[] buffer, int index, int count) if (info.IsOut && !info.IsIn) { //this is trick how to store out as type parameterType = parameterType.GetElementType().MakePointerType(); } res.ParameterNames.Add(info.Name); res.Parameters.Add(RegisterType(parameterType)); } res.ReturnType = RegisterType(typeof (void)); ConvertCLRAttributes(type, res, method); res.LowerName = (res.JVMName + res.GetSignatureLowerNoRet()); return res; }
private static void RegisterJVMMethod(GType type, Method method, bool register) { var modifiers = (ModifierFlags)method.getModifiers(); Annotation annotation = HasAnnotation(method, "net.sf.jni4net.attributes.ClrMethod"); if (annotation != null || (modifiers & (ModifierFlags.Private | ModifierFlags.Synthetic)) != ModifierFlags.None) { if (annotation == null) { if (config.Verbose) { Console.WriteLine("Skip " + type + "." + method); } } return; } var res = new GMethod(); res.Type = type; res.Name = method.getName(); res.JVMName = res.Name; res.CLRName = res.JVMName; res.IsJVMMethod = true; Class[] parameterTypes = method.getParameterTypes(); for (int i = 0; i < parameterTypes.Length; i++) { Class paramType = parameterTypes[i]; res.ParameterNames.Add("par" + i); //+ paramType.ShortName res.Parameters.Add(RegisterClass(paramType)); } ConvertJVMAttributes(type, res, method); res.LowerName = res.Name + res.GetSignatureLowerNoRet(); res.ReturnType = RegisterClass(method.getReturnType()); if (register) { bool force = false; if (UseMethodModifier(type, res, res.Name, res.GetJVMSignature(), ref force)) { if (config.Verbose) { Console.WriteLine("Skip " + type + "." + method); } return; } FinishRegistration(method.getName(), type, res, force, res.Name + res.GetCLRSignatureNoRet(), skipCLR); } }
private static void RegisterJVMConstructor(GType type, Constructor ctor, bool register) { var modifiers = (ModifierFlags) ctor.getModifiers(); if ((modifiers & (ModifierFlags.Private | ModifierFlags.Synthetic)) != ModifierFlags.None) { return; } var res = new GMethod(); res.Type = type; res.Name = "<init>"; res.JVMName = res.Name; res.CLRName = "_ctor" + type.JVMType.getSimpleName(); res.ReturnType = voidType; res.IsJVMMethod = true; res.IsConstructor = true; Class[] parameterTypes = ctor.getParameterTypes(); for (int i = 0; i < parameterTypes.Length; i++) { Class paramType = parameterTypes[i]; res.ParameterNames.Add("par" + i); //+ paramType.ShortName res.Parameters.Add(RegisterClass(paramType)); } ConvertJVMAttributes(type, res, ctor); res.LowerName = (res.Name + res.GetSignatureLowerNoRet()); if (register) { bool force = false; if (UseMethodModifier(type, res, res.Name, res.GetJVMSignature(), ref force)) { return; } type.Constructors.Add(res); } }