Ejemplo n.º 1
0
format_int::format_int(t_int64 p_val,unsigned p_width,unsigned p_base)
{
	bool neg = false;
	t_uint64 val;
	if (p_val < 0) {neg = true; val = (t_uint64)(-p_val);}
	else val = (t_uint64)p_val;
	
	enum {max_width = PFC_TABSIZE(m_buffer) - 1};

	if (p_width > max_width) p_width = max_width;
	else if (p_width == 0) p_width = 1;

	if (neg && p_width > 1) p_width --;
	
	char temp[max_width];
	
	unsigned n;
	for(n=0;n<max_width;n++)
	{
		temp[max_width-1-n] = format_hex_char((unsigned)(val % p_base));
		val /= p_base;
	}

	for(n=0;n<max_width && temp[n] == '0';n++) {}
	
	if (n > max_width - p_width) n = max_width - p_width;
	
	char * out = m_buffer;

	if (neg) *(out++) = '-';

	for(;n<max_width;n++)
		*(out++) = temp[n];
	*out = 0;
}
Ejemplo n.º 2
0
format_file_size_short::format_file_size_short(t_uint64 size) {
	t_uint64 scale = 1;
	const char * unit = "B";
	const char * const unitTable[] = {"B","KB","MB","GB","TB"};
	for(t_size walk = 1; walk < PFC_TABSIZE(unitTable); ++walk) {
		t_uint64 next = scale * 1024;
		if (size < next) break;
		scale = next; unit = unitTable[walk];
	}
	*this << ( size  / scale );

	if (scale > 1 && length() < 3) {
		t_size digits = 3 - length();
		const t_uint64 mask = pow_int(10,digits);
		t_uint64 remaining = ( (size * mask / scale) % mask );
		while(digits > 0 && (remaining % 10) == 0) {
			remaining /= 10; --digits;
		}
		if (digits > 0) {
			*this << "." << format_uint(remaining, (t_uint32)digits);
		}
	}
	*this << " " << unit;
	m_scale = scale;
}
Ejemplo n.º 3
0
format_uint::format_uint(t_uint64 val,unsigned p_width,unsigned p_base)
{
	
	enum {max_width = PFC_TABSIZE(m_buffer) - 1};

	if (p_width > max_width) p_width = max_width;
	else if (p_width == 0) p_width = 1;

	char temp[max_width];
	
	unsigned n;
	for(n=0;n<max_width;n++)
	{
		temp[max_width-1-n] = format_hex_char((unsigned)(val % p_base));
		val /= p_base;
	}

	for(n=0;n<max_width && temp[n] == '0';n++) {}
	
	if (n > max_width - p_width) n = max_width - p_width;
	
	char * out = m_buffer;

	for(;n<max_width;n++)
		*(out++) = temp[n];
	*out = 0;
}
Ejemplo n.º 4
0
		void configToUI() {
			for ( unsigned i = 0; i < PFC_TABSIZE( flagsAndButtons ); ++ i ) {
				auto rec = flagsAndButtons[i];
				// CCheckBox: WTL-PP class overlaying ToggleCheck(bool) and bool IsChecked() over WTL CButton
				CCheckBox cb ( GetDlgItem( rec.btnID ) );
				cb.ToggleCheck( (m_flags & rec.flag ) != 0 );
			}
		}
unsigned audio_chunk::g_channel_config_from_wfx(DWORD p_wfx)
{
	unsigned ret = 0;
	unsigned n;
	for(n=0;n<PFC_TABSIZE(g_translation_table);n++)
	{
		if (p_wfx & g_translation_table[n].m_wfx) ret |= g_translation_table[n].m_native;
	}
	return ret;
}
DWORD audio_chunk::g_channel_config_to_wfx(unsigned p_config)
{
	DWORD ret = 0;
	unsigned n;
	for(n=0;n<PFC_TABSIZE(g_translation_table);n++)
	{
		if (p_config & g_translation_table[n].m_native) ret |= g_translation_table[n].m_wfx;
	}
	return ret;
}
unsigned audio_chunk::g_channel_config_from_wfx(uint32_t p_wfx)
{
    return p_wfx;
#if 0
	unsigned ret = 0;
	unsigned n;
	for(n=0;n<PFC_TABSIZE(g_translation_table);n++)
	{
		if (p_wfx & g_translation_table[n].m_wfx) ret |= g_translation_table[n].m_native;
	}
	return ret;
#endif
}
Ejemplo n.º 8
0
 char charToASCII( unsigned c ) {
     if (c < 128) return (char)c;
     unsigned lo = 0, hi = PFC_TABSIZE(g_asciiMap);
     while( lo < hi ) {
         const unsigned mid = (lo + hi) / 2;
         const asciiMap_t entry = g_asciiMap[mid];
         if ( c > entry.from ) {
             lo = mid + 1;
         } else if (c < entry.from) {
             hi = mid;
         } else {
             return (char)entry.to;
         }
     }
     return '?';
 }
Ejemplo n.º 9
0
string_extension::string_extension(const char * src)
{
	buffer[0]=0;
	const char * start = src + pfc::scan_filename(src);
	const char * end = start + strlen(start);
	const char * ptr = end-1;
	while(ptr>start && *ptr!='.')
	{
		if (*ptr=='?') end=ptr;
		ptr--;
	}

	if (ptr>=start && *ptr=='.')
	{
		ptr++;
		t_size len = end-ptr;
		if (len<PFC_TABSIZE(buffer))
		{
			memcpy(buffer,ptr,len*sizeof(char));
			buffer[len]=0;
		}
	}
}
Ejemplo n.º 10
0
		void OnButtonClicked(UINT uNotifyCode, int nID, CWindow wndCtl) {

			uint32_t flagToFlip = 0;
			for ( unsigned i = 0; i < PFC_TABSIZE( flagsAndButtons ); ++ i ) {
				auto rec = flagsAndButtons[i];
				if ( rec.btnID == nID ) {
					flagToFlip = rec.flag;
				}
			}
			if ( flagToFlip != 0 ) {
				uint32_t newFlags = m_flags;
				CCheckBox cb ( wndCtl );
				if (cb.IsChecked()) {
					newFlags |= flagToFlip;
				} else {
					newFlags &= ~flagToFlip;
				}
				if ( newFlags != m_flags ) {
					m_flags = newFlags;
					m_callback->on_min_max_info_change();
				}
			}
		}
unsigned audio_chunk::g_guess_channel_config_xiph(unsigned count) {
	if (count == 0 || count >= PFC_TABSIZE(g_audio_channel_config_table_xiph)) throw exception_io_data();
	return g_audio_channel_config_table_xiph[count];
}
unsigned audio_chunk::g_guess_channel_config(unsigned count)
{
	if (count >= PFC_TABSIZE(g_audio_channel_config_table)) return 0;
	return g_audio_channel_config_table[count];
}
Ejemplo n.º 13
0
static const char * optimize_infoname(const char * p_string) {
	t_size index;
	if (!pfc::binarySearch<pfc::comparator_strcmp>::run(standard_infonames,0,PFC_TABSIZE(standard_infonames),p_string,index)) return NULL;
	return standard_infonames[index];
}
Ejemplo n.º 14
0
void GetOSVersionStringAppend(pfc::string_base & out) {

	if (FetchWineInfoAppend(out)) return;

	OSVERSIONINFO ver = {}; ver.dwOSVersionInfoSize = sizeof(ver);
	WIN32_OP( GetVersionEx(&ver) );
	SYSTEM_INFO info = {};
	GetNativeSystemInfo(&info);
	
	out << "Windows " << (int)ver.dwMajorVersion << "." << (int)ver.dwMinorVersion << "." << (int)ver.dwBuildNumber;
	if (ver.szCSDVersion[0] != 0) out << " " << pfc::stringcvt::string_utf8_from_os(ver.szCSDVersion, PFC_TABSIZE(ver.szCSDVersion));
	
	switch(info.wProcessorArchitecture) {
		case PROCESSOR_ARCHITECTURE_AMD64:
			out << " x64"; break;
		case PROCESSOR_ARCHITECTURE_IA64:
			out << " IA64"; break;
		case PROCESSOR_ARCHITECTURE_INTEL:
			out << " x86"; break;
	}
}