Property definitions

core $ ISO88591Codec :: defaultinit
private class ISO88591Codec
	super Codec

	redef fun char_max_size do return 1

	redef fun codet_size do return 1

	redef fun max_lookahead do return 1

	redef fun encode_char(c) do
		var ns = new CString(c.u8char_len)
		add_char_to(c, ns)
		return ns
	end

	redef fun add_char_to(c, stream) do
		var cp = if c.code_point <= 255 then c else '?'
		stream[0] = cp.code_point
		return 1
	end

	redef fun encode_string(s) do
		var ns = new Bytes.with_capacity(s.byte_length)
		add_string_to(s, ns)
		return ns
	end

	redef fun add_string_to(s, b) do
		var pos = 0
		for i in s.chars do
			var cp = i.code_point
			if cp <= 255 then
				b[pos] = cp
			else
				b[pos] = 0x3F
			end
			pos += 1
		end
		return pos
	end

	redef fun is_valid_char(ns, len) do
		return 0
	end

	redef fun decode_char(b) do
		return b[0].to_i.code_point
	end

	redef fun decode_string(b, len) do
		var buf = new Bytes.with_capacity(len)
		for i in [0 .. len[ do buf.add_char(b[i].to_i.code_point)
		return buf.to_s
	end
end
lib/core/codecs/iso8859_1.nit:21,1--75,3