Exemplo n.º 1
0
//--------------------------------------------------------------------------
VeParallel::VeParallel() noexcept
{
	m_stThreadNum = VeCPUInfo::GetCount();
	m_pkLoopEventArray = VeAlloc(VeThread::Event, m_stThreadNum);
	for (VeSizeT i(0); i < m_stThreadNum; ++i)
	{
		new(m_pkLoopEventArray + i)VeThread::Event();
	}
	m_pkThreadArray = VeAlloc(std::thread, m_stThreadNum);
	for (VeSizeT i(0); i < m_stThreadNum; ++i)
	{
		new(m_pkThreadArray + i)std::thread([this,i]() noexcept
		{
			do
			{
				m_pkLoopEventArray[i].Wait();
				if (m_kTask)
				{
					m_kTask(VeUInt32(i));
				}				
				m_pkLoopEventArray[i].Reset();
				m_kEvent.Set();
			} while (m_bLoop);
		});
	}
}
Exemplo n.º 2
0
//--------------------------------------------------------------------------
void VeWindows::_SetWindowTitle(Window* pkWindow)
{
	WindowData* pkData = (WindowData*)(VeRefObject*)pkWindow->m_spDriverData;
	VeUInt32 u32Len = MultiByteToWideChar(CP_UTF8, 0, pkWindow->m_kTitle, -1, NULL, 0);
	VeChar16* wszGBK = VeAlloc(VeChar16, u32Len + 1);
	VeZeroMemory(wszGBK, sizeof(VeChar16) * (u32Len + 1));
	MultiByteToWideChar(CP_UTF8, 0, pkWindow->m_kTitle, -1, wszGBK, u32Len);
	u32Len = WideCharToMultiByte(CP_ACP, 0, wszGBK, -1, NULL, 0, NULL, NULL);
	VeChar8* szGBK = VeAlloc(VeChar8, u32Len + 1);
	VeZeroMemory(szGBK, sizeof(VeChar8) * (u32Len + 1));
	WideCharToMultiByte(CP_ACP, 0, wszGBK, -1, szGBK, u32Len, NULL, NULL);
	SetWindowText(pkData->m_hWnd, szGBK);
	VeFree(wszGBK);
	VeFree(szGBK);
}
Exemplo n.º 3
0
//--------------------------------------------------------------------------
void VeStringA_S::UpdateGBKToValueData()
{
	if(m_kGBKData.Length())
	{
		VeUInt32 u32Len = MultiByteToWideChar(CP_ACP, 0, m_kGBKData, -1, NULL, 0);
		VeChar16* wszGBK = VeAlloc(VeChar16, u32Len + 1);
		VeZeroMemory(wszGBK, sizeof(VeChar16) * (u32Len + 1));
		MultiByteToWideChar(CP_ACP, 0, m_kGBKData, -1, wszGBK, u32Len);
		u32Len = WideCharToMultiByte(CP_UTF8, 0, wszGBK, -1, NULL, 0, NULL, NULL);
		VeChar8* szUTF8 = VeAlloc(VeChar8, u32Len + 1);
		VeZeroMemory(szUTF8, sizeof(VeChar8) * (u32Len + 1));
		WideCharToMultiByte(CP_UTF8, 0, wszGBK, -1, szUTF8, u32Len, NULL, NULL);
		m_kValue = szUTF8;
		VeFree(wszGBK);
		VeFree(szUTF8);
	}
	else
	{
		m_kValue = "";
	}
}
Exemplo n.º 4
0
//--------------------------------------------------------------------------
VeFileOStream::VeFileOStream(const VeChar8* pcFileName, VeSizeT stCache,
	bool bAppend) noexcept : m_stCacheSize(stCache)
{
	const VeChar8* pcMode = bAppend ? "ab" : "wb";
#	ifdef VE_PLATFORM_WIN
	fopen_s(&m_pkFile, pcFileName, pcMode);
#	else
	m_pkFile = fopen(pcFileName, pcMode);
#	endif
	VE_ASSERT(m_pkFile && m_stCacheSize);
	m_pbyCache = VeAlloc(VeByte, m_stCacheSize);
	VE_ASSERT(m_pbyCache);
}
Exemplo n.º 5
0
//--------------------------------------------------------------------------
D3D12InputLayout::D3D12InputLayout(
	const VeInputLayout::ElementDesc* pkDescs, size_t stNum) noexcept
{
	VE_ASSERT(stNum);
	D3D12_INPUT_ELEMENT_DESC* pkAllocated = VeAlloc(D3D12_INPUT_ELEMENT_DESC, stNum);
	for (size_t i(0); i < stNum; ++i)
	{
		pkAllocated[i] =
		{
			s_apcSematicNameMap[pkDescs[i].m_eName],
			pkDescs[i].m_u32Index,
			(DXGI_FORMAT)pkDescs[i].m_eFormat,
			pkDescs[i].m_u32Slot,
			pkDescs[i].m_u32Offset,
			(D3D12_INPUT_CLASSIFICATION)pkDescs[i].m_eClass,
			pkDescs[i].m_u32Rate
		};
	}
	m_kDesc = { pkAllocated, (UINT)stNum };
}
Exemplo n.º 6
0
//--------------------------------------------------------------------------
VeFileIStream::VeFileIStream(const VeChar8* pcFileName,
	VeSizeT stCache) noexcept : m_stCacheSize(stCache)
{
	if (VE_SUCCEEDED(VeAccess(pcFileName, VeDirectory::ACCESS_F_OK)))
	{
#		ifdef VE_PLATFORM_WIN
		fopen_s(&m_pkFile, pcFileName, "rb");
#		else
		m_pkFile = fopen(pcFileName, "rb");
#		endif
		if (m_pkFile)
		{
			UpdateLenth();
			VE_ASSERT(m_stCacheSize);
			m_pbyCache = VeAlloc(VeByte, m_stCacheSize);
			VE_ASSERT(m_pbyCache);
			return;
		}
	}
	SetError(true);
}