コード例 #1
0
ファイル: Library.cs プロジェクト: hendryten/ejdb-csharp
        private Library(LibraryHandle libraryHandle)
        {
            LibraryHandle = libraryHandle;

            _getErrorMessage = LibraryHandle.GetUnmanagedDelegate<GetErrorMessage>();

            _freeBson = libraryHandle.GetUnmanagedDelegate<FreeBsonDelegate>();
            _bsonToString = libraryHandle.GetUnmanagedDelegate<BsonToStringDelegate>();
            //_jsonToBson = libraryHandle.GetUnmanagedDelegate<JsonToBsonDelegate>();

            var getVersion = LibraryHandle.GetUnmanagedDelegate<GetVersion>();

            IntPtr version = getVersion(LibraryHandle);

            if (version == IntPtr.Zero)
            {
                throw new Exception("Unable to get ejdb library version");
            }

            _version = Native.StringFromNativeUtf8(version); //UnixMarshal.PtrToString(vres, Encoding.UTF8);
            _hexVersion = Convert.ToInt64("0x" + Version.Replace(".", ""), 16);
        }
コード例 #2
0
        private unsafe Library(LibraryHandle libraryHandle)
        {
            LibraryHandle = libraryHandle;

            Functions = new Functions(libraryHandle);

            _getErrorMessage = LibraryHandle.GetUnmanagedDelegate <GetErrorMessage>();

            _freeBson   = libraryHandle.GetUnmanagedDelegate <FreeBsonDelegate>();
            GetBsonData = libraryHandle.GetUnmanagedDelegate <BsonToStringDelegate>();
            //_jsonToBson = libraryHandle.GetUnmanagedDelegate<JsonToBsonDelegate>();

            var getVersion = LibraryHandle.GetUnmanagedDelegate <GetVersion>();

            var version = getVersion(LibraryHandle);

            if (version == IntPtr.Zero.ToPointer())
            {
                throw new Exception("Unable to get ejdb library version");
            }

            _version    = new string(version); //UnixMarshal.PtrToString(vres, Encoding.UTF8);
            _hexVersion = Convert.ToInt64("0x" + Version.Replace(".", ""), 16);
        }