logo       
Google Custom Search
    AddThis Social Bookmark Button

Re: second proposal of UChar, UTF8 modules: msg#00122

Subject: Re: second proposal of UChar, UTF8 modules
Yamagata Yoriyuki wrote:


Still has the redundant tests here.

let add_uchar buf u =
  let masq = 0b111111 in
  let k = int_of_uchar u in
  if k >= 0 && k <= 0x7f then
    Buffer.add_char buf (Char.chr k)
  else if k >= 0x80 && k <= 0x7ff then begin
    Buffer.add_char buf (Char.chr (0xc0 lor (k lsr 6)));
    Buffer.add_char buf (Char.chr (0x80 lor (k land masq)))
  end else if k >= 0x800 && k <= 0xffff then begin
    Buffer.add_char buf (Char.chr (0xe0 lor (k lsr 12)));
    Buffer.add_char buf (Char.chr (0x80 lor ((k lsr 6) land masq)));
    Buffer.add_char buf (Char.chr (0x80 lor (k land masq)));
  end else if k >= 0x10000 && k <= 0x1fffff then begin
    Buffer.add_char buf (Char.chr (0xf0 + (k lsr 18)));
    Buffer.add_char buf (Char.chr (0x80 lor ((k lsr 12) land masq)));
    Buffer.add_char buf (Char.chr (0x80 lor ((k lsr 6) land masq)));
    Buffer.add_char buf (Char.chr (0x80 lor (k land masq)));
  end  else if k >= 0x200000 && k <= 0x3ffffff then begin
    Buffer.add_char buf (Char.chr (0xf8 + (k lsr 24)));
    Buffer.add_char buf (Char.chr (0x80 lor ((k lsr 18) land masq)));
    Buffer.add_char buf (Char.chr (0x80 lor ((k lsr 12) land masq)));
    Buffer.add_char buf (Char.chr (0x80 lor ((k lsr 6) land masq)));
    Buffer.add_char buf (Char.chr (0x80 lor (k land masq)));
  end else begin
    Buffer.add_char buf (Char.chr (0xfc + (k lsr 30)));
Buffer.add_char buf (Char.chr (0x80 lor ((k lsr 24) land masq))); Buffer.add_char buf (Char.chr (0x80 lor ((k lsr 18) land masq)));
    Buffer.add_char buf (Char.chr (0x80 lor ((k lsr 12) land masq)));
    Buffer.add_char buf (Char.chr (0x80 lor ((k lsr 6) land masq)));
    Buffer.add_char buf (Char.chr (0x80 lor (k land masq)));
  end


--
John Max Skaller, mailto:skaller@xxxxxxxxxxxxxx
snail:10/1 Toxteth Rd, Glebe, NSW 2037, Australia.
voice:61-2-9660-0850




-------------------------------------------------------
This SF.Net email is sponsored by: INetU
Attention Web Developers & Consultants: Become An INetU Hosting Partner.
Refer Dedicated Servers. We Manage Them. You Get 10% Monthly Commission!
INetU Dedicated Managed Hosting http://www.inetu.net/partner/index.php



Try Searching:
servers, voip, java, networking, microsoft ...
<Prev in Thread] Current Thread [Next in Thread>