コード例 #1
0
ファイル: String.c プロジェクト: CogDis/craftd
static
void
cd_UpdateLength (CDString* self)
{
	assert(self);

	self->length = CD_UTF8_strnlen(CD_StringContent(self), self->raw->slen);
}
コード例 #2
0
ファイル: minecraft.c プロジェクト: espes/craftd
SVString
SV_StringSanitize (SVString self)
{
	CDString* result = CD_CreateString();

	assert(self);

	for (size_t i = 0, ie = CD_StringLength(self); i < ie; i++) {
		bool      has = false;
		CDString* ch  = CD_CharAt(self, i);

		for (size_t h = 0, he = CD_UTF8_strlen(SVCharset); h < he; h++) {
			const char* che = &SVCharset[CD_UTF8_offset(SVCharset, h)];

			if (strncmp(CD_StringContent(ch), che, CD_StringSize(ch)) == 0) {
				has = true;
				break;
			}
		}

		if (i == ie - 2 && strncmp(CD_StringContent(ch), "§", 2) == 0){
			CD_DestroyString(ch);
			break;
		}

		if (has || strncmp(CD_StringContent(ch), "§", 2) == 0) {
			CD_AppendString(result, ch);
		}
		else {
			CD_AppendCString(result, "?");
		}

		CD_DestroyString(ch);
	}

	self->length = CD_UTF8_strnlen(CD_StringContent(self), self->raw->slen);

	return result;
}