示例#1
0
文件: jnistb10.cs 项目: wclwksn/code
        public static CPtr ReportNullReference(CPtr cPtr)
        {
            if (cPtr.IsNull)
            {
                throw new NullReferenceException();
            }

            return(cPtr);
        }
示例#2
0
文件: jnistb10.cs 项目: wclwksn/code
        static CPtr()
        {
            // http://support.teamdev.com/thread/405
            InternalTryLoadLibrary();

            NULL = new CPtr();

            SIZE = initIDs(NULL);
        }
示例#3
0
文件: jnistb10.cs 项目: wclwksn/code
        /// <summary>
        /// warning: jni must be placed under java path
        /// any other shall be placed on system32 path
        /// </summary>
        /// <param name="lib"></param>
        /// <param name="fname"></param>
        public CFunc(string lib, string fname)
        {
            // X:\jsc.svn\examples\java\hybrid\JVMCLRMSVCRTRand\JVMCLRMSVCRTRand\Program.cs

            // how to make sure its a CDecl method?
            // .A and .W are WINAPI suffixes?

            //System.Console.WriteLine("enter CFunc " + new { lib, fname });

            string r = null;

            r = InternalTryLoadLibrary(lib, fname);

            if (r == null)
            {
                return;
            }

            {
                var xlib = Path.Combine(CPtr.InternalGetHintPath(), lib);
                var xr   = InternalTryLoadLibrary(xlib, fname);

                if (xr == null)
                {
                    return;
                }
            }

            var path = java.lang.JavaSystem.getProperty("java.library.path").Split(';');

            foreach (var item in path)
            {
                var xlib = Path.Combine(item, lib);
                var xr   = InternalTryLoadLibrary(xlib, fname);

                if (xr == null)
                {
                    r = null;
                    break;
                }
            }

            if (r == null)
            {
                return;
            }

            System.Console.WriteLine("crash CFunc " + new { lib, fname });
            throw new System.InvalidOperationException(r);
        }
示例#4
0
文件: jnistb10.cs 项目: wclwksn/code
        public static bool IsNullReferenceOrPointer(CPtr e)
        {
            if (e == null)
            {
                return(true);
            }

            if (e.IsNull)
            {
                return(true);
            }

            return(false);
        }
示例#5
0
        static CPtr()
        {
            // https://sites.google.com/a/jsc-solutions.net/work/knowledge-base/15-dualvr/20150630/jvmclrudpreceiveasync
            //System.Console.WriteLine("CPtr cctor");


            // https://sites.google.com/a/jsc-solutions.net/backlog/knowledge-base/2015/201505/20150503/udp
            // http://support.teamdev.com/thread/405
            InternalTryLoadLibrary();

            NULL = new CPtr();

            SIZE = initIDs(NULL);
        }
示例#6
0
 public override void setCPtr(int offset, CPtr value)
 {
     boundsCheck(offset, SIZE);
     base.setCPtr(offset, value);
 }
示例#7
0
        public static bool IsNullReferenceOrPointer(CPtr e)
        {
            if (e == null)
                return true;

            if (e.IsNull)
                return true;

            return false;
        }
示例#8
0
        public static CPtr ReportNullReference(CPtr cPtr)
        {
            if (cPtr.IsNull)
                throw new NullReferenceException();

            return cPtr;
        }
示例#9
0
        static CPtr()
        {

            // https://sites.google.com/a/jsc-solutions.net/work/knowledge-base/15-dualvr/20150630/jvmclrudpreceiveasync
            //System.Console.WriteLine("CPtr cctor");


            // https://sites.google.com/a/jsc-solutions.net/backlog/knowledge-base/2015/201505/20150503/udp
            // http://support.teamdev.com/thread/405
            InternalTryLoadLibrary();

            NULL = new CPtr();

            SIZE = initIDs(NULL);
        }
示例#10
0
 private static int initIDs(CPtr p) { return default(int); }
示例#11
0
 virtual public void setCPtr(int offset, CPtr value) { }
示例#12
0
文件: jnistb10.cs 项目: wclwksn/code
 public override void setCPtr(int offset, CPtr value)
 {
     boundsCheck(offset, SIZE);
     base.setCPtr(offset, value);
 }
示例#13
0
文件: jnistb10.cs 项目: wclwksn/code
 private static int initIDs(CPtr p)
 {
     return(default(int));
 }
示例#14
0
文件: jnistb10.cs 项目: wclwksn/code
 virtual public void setCPtr(int offset, CPtr value)
 {
 }