aboutsummaryrefslogtreecommitdiff
path: root/Src/Plugins/Input/in_vorbis/c_string.cpp
blob: 4310a0dd1a26696634c7ce9cfac947c641e363e3 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
#define STRICT
#include <windows.h>
#include <malloc.h>
#include <stdio.h>
#include "c_string.h"
#include "../nu/ns_wc.h"

extern BOOL is_nt;

template<class myChar>
void string_base<myChar>::makespace(UINT s)
{
	if (size<s)
	{
		int oldSize = size;
		do size<<=1; while(size<s);
		myChar *newPtr = (myChar*)realloc(ptr,size*sizeof(myChar));
		if (!newPtr)
		{
			newPtr = (myChar*)malloc(size*sizeof(myChar));
			if (newPtr)
			{
				memcpy(newPtr, ptr, oldSize*sizeof(myChar));
				free(ptr);
				ptr = newPtr;
			}
			else return ;
		}
		else ptr = newPtr;
	}
}

void String::s_GetWindowText(HWND w)
{
	Reset();
	int len=GetWindowTextLengthA(w)+1;
	GetWindowTextA(w,StringTempA(*this,len),len);
}

void StringW::s_GetWindowText(HWND w)
{
	Reset();
	int len=GetWindowTextLengthW(w)+1;
	GetWindowTextW(w,StringTempW(*this,len),len);
}

void String::SetStringW(const WCHAR * c)
{
	UINT len=(lstrlenW(c)+1)*2;
	WideCharToMultiByteSZ(CP_ACP,0,c,-1,StringTempA(*this,len),len,0,0);
}

void StringW::SetStringA(const char * c)
{
	UINT len=(UINT)strlen(c)+1;
	MultiByteToWideCharSZ(CP_ACP,0,c,-1,StringTempW(*this,len),len);
}

void String::AddStringW(const WCHAR * c)
{
	AddString(String(c));
}

void StringW::AddStringA(const char * c)
{
	AddString(StringW(c));
}

void String::s_SetWindowText(HWND w)
{
	SetWindowTextA(w,*this);
}

void StringW::s_SetWindowText(HWND w)
{
	SetWindowTextW(w,*this);
}


StringPrintf::StringPrintf(const char * fmt,...)
{
	va_list list;
	va_start(list,fmt);
	vsprintf(StringTempA(*this,1024),fmt,list);
	va_end(list);
}

StringPrintfW::StringPrintfW(const WCHAR * fmt,...)
{
	va_list list;
	va_start(list,fmt);
	vswprintf(StringTempW(*this,1024),1024,fmt,list);
	va_end(list);
}

String::String(const StringW & z) {AddStringW(z);}