All pastes #258554 Raw Edit

Untitled

public cpp v1 · immutable
#258554 ·published 2006-11-26 17:09 UTC
rendered paste body
/* Copyright (C) 2006   db4objects Inc.   http://www.db4o.com */#include "stdafx.h"#include "NativeIoAdapter.h"using namespace System;using namespace System::Runtime::InteropServices;using namespace Db4objects::Db4o::IO;#define LPCWSTR_FROM_MSTR(x) ((LPCWSTR) Marshal::StringToHGlobalUni(x).ToPointer())#define FREE_LPCWSTR(x) (Marshal::FreeHGlobal(IntPtr((void *)x)))IoAdapter ^NativeIoAdapter::Open(String ^path, bool lock, long long initialLength){	LPCWSTR file = LPCWSTR_FROM_MSTR(path);	m_handle = CreateFile(		file,		GENERIC_READ | GENERIC_WRITE,		lock ? NULL : FILE_SHARE_READ | FILE_SHARE_WRITE,		NULL,		OPEN_ALWAYS,		NULL,		NULL);	FREE_LPCWSTR(file);	return this;}long long NativeIoAdapter::GetLength(){	return (long long)GetFileSize(m_handle, NULL);}int NativeIoAdapter::Read(array<unsigned char> ^bytes, int length){	DWORD read;	pin_ptr<unsigned char> pb = &bytes[0];	ReadFile(m_handle, pb, length, &read, NULL);	return (int)read;}void NativeIoAdapter::Seek(long long position){	SetFilePointer(m_handle, position, 0, FILE_BEGIN);}void NativeIoAdapter::Sync(){	FlushFileBuffers(m_handle);}void NativeIoAdapter::Write(array<unsigned char> ^bytes, int length){	pin_ptr<unsigned char> pb = &bytes[0];	WriteFile(m_handle, pb, length, NULL, NULL);}void NativeIoAdapter::Close(){	CloseHandle(m_handle);}void NativeIoAdapter::Delete(String ^path){	LPCWSTR file = LPCWSTR_FROM_MSTR(path);	DeleteFileW(file);	FREE_LPCWSTR(file);}bool NativeIoAdapter::Exists(String ^path){	bool exists;	LPCWSTR file = LPCWSTR_FROM_MSTR(path);	HANDLE handle = CreateFile(		file,		GENERIC_READ,		NULL,		NULL,		OPEN_EXISTING,		NULL,		NULL);	FREE_LPCWSTR(file);	exists = handle != INVALID_HANDLE_VALUE;	CloseHandle(handle);		return exists;}