Initial community commit
This commit is contained in:
parent
537bcbc862
commit
fc06254474
16440 changed files with 4239995 additions and 2 deletions
40
Src/replicant/nx/win/nxmutablestring.c
Normal file
40
Src/replicant/nx/win/nxmutablestring.c
Normal file
|
@ -0,0 +1,40 @@
|
|||
#include "nxmutablestring.h"
|
||||
#include "foundation/error.h"
|
||||
|
||||
/* currently this is closely coupled with the nx_string_t implementation. beware! */
|
||||
extern HANDLE string_heap;
|
||||
|
||||
void NXMutableStringDestroy(nx_mutable_string_t mutable_string)
|
||||
{
|
||||
if (mutable_string)
|
||||
{
|
||||
if (mutable_string->nx_string_data)
|
||||
NXStringRelease(mutable_string->nx_string_data);
|
||||
HeapFree(string_heap, 0, mutable_string);
|
||||
}
|
||||
}
|
||||
|
||||
nx_mutable_string_t NXMutableStringCreateFromXML(const nsxml_char_t *characters, size_t num_characters)
|
||||
{
|
||||
nx_mutable_string_t mutable_string = (nx_mutable_string_t)HeapAlloc(string_heap, 0, sizeof(nx_mutable_string_struct_t));
|
||||
NXStringCreateWithBytes(&mutable_string->nx_string_data, characters, num_characters*2, nx_charset_utf16le);
|
||||
mutable_string->allocation_length = num_characters;
|
||||
return mutable_string;
|
||||
}
|
||||
|
||||
int NXMutableStringGrowFromXML(nx_mutable_string_t mutable_string, const nsxml_char_t *characters, size_t num_characters)
|
||||
{
|
||||
if (mutable_string->nx_string_data->len + num_characters + 1 > mutable_string->allocation_length)
|
||||
{
|
||||
nx_string_t new_string = NXStringRealloc(mutable_string->nx_string_data, mutable_string->nx_string_data->len + num_characters + 1);
|
||||
if (!new_string)
|
||||
return NErr_OutOfMemory;
|
||||
mutable_string->nx_string_data = new_string;
|
||||
mutable_string->allocation_length = mutable_string->nx_string_data->len + num_characters + 1;
|
||||
}
|
||||
memcpy(mutable_string->nx_string_data->string + mutable_string->nx_string_data->len, characters, num_characters*sizeof(wchar_t));
|
||||
mutable_string->nx_string_data->len += num_characters;
|
||||
mutable_string->nx_string_data->string[mutable_string->nx_string_data->len]=0; /* well null terminate */
|
||||
|
||||
return NErr_Success;
|
||||
}
|
Loading…
Add table
Add a link
Reference in a new issue