Exemple #1
0
int Xml_encode(lua_State *L) {
	if(lua_gettop(L)!=1)
		return 0;
	luaL_checkstring(L,-1);
	size_t i;
	for(i=0; i<sv_code_size; i+=2) {
		luaL_gsub(L, lua_tostring(L,-1), sv_code[i], sv_code[i+1]);
		lua_remove(L,-2);
	}
	char buf[8];
	const char* s=lua_tostring(L,1);
	size_t start, pos;
	luaL_Buffer b;
	luaL_buffinit(L, &b);
	for(start=pos=0; s[pos]!=0; ++pos) if(s[pos]<0) {
		if(pos>start) luaL_addlstring(&b,s+start, pos-start);
		luaL_addstring(&b,char2code((unsigned char)(s[pos]),buf));
		start=pos+1;
	}
	if(pos>start)
		luaL_addlstring(&b,s+start, pos-start);
	luaL_pushresult(&b);
	lua_remove(L,-2);
	return 1;
}
Exemple #2
0
int Xml_encode(HSQUIRRELVM v) {
    SQ_FUNC_VARS(v);
	SQ_GET_STRING(v, 2, s);
	size_t i;
	for(i=0; i<sv_code_size; i+=2) {
		sq_str_replace(v, s, sv_code[i], sv_code[i+1]);
		sq_remove(v,-2);
	}
	SQChar buf[8];
	SQ_GET_STRING(v, 2, s);
	size_t start, pos;
	SQBlob b(0, BLOB_BUFSIZE);
	for(start=pos=0; s[pos]!=0; ++pos) if(s[pos]<0) {
		if(pos>start) b.Write(s+start, pos-start);
		b.WriteZstr(char2code(uchar(s[pos]),buf));
		start=pos+1;
	}
	if(pos>start) b.Write(s+start, pos-start);
	sq_pushstring(v, (const SQChar*)b.GetBuf(), b.Len());
    return 1;
}