<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML><HEAD>
<META http-equiv=Content-Type content="text/html; charset=iso-8859-1">
<META content="MSHTML 6.00.2600.0" name=GENERATOR>
<STYLE></STYLE>
</HEAD>
<BODY bgColor=#ffffff>
<DIV><FONT face=Arial size=2>Ok i am trying to brake down the
clipboard-responsible code so that i can add unicode clipboard support.. the
news are not so good.</FONT></DIV>
<DIV><FONT face=Arial size=2></FONT> </DIV>
<DIV><FONT face=Arial size=2>First, i saw that the code for sending text to the
clipboard is </FONT></DIV>
<DIV><FONT face=Arial size=2></FONT> </DIV>
<DIV><FONT face=Arial size=2> int clipboardWriteFromAt(int
count, int byteArrayIndex, int startIndex) </FONT></DIV>
<DIV><FONT face=Arial size=2>in</FONT></DIV>
<DIV><FONT face=Arial size=2> sqWin32Window.c</FONT></DIV>
<DIV><FONT face=Arial size=2></FONT> </DIV>
<DIV><FONT face=Arial size=2>The thing is that we are trying to create a fully
Unicode VM...this means that the characters that are sent to the VM are Unicode
(> 256) and we are using a unicode TT font to render them.</FONT></DIV>
<DIV><FONT face=Arial size=2>Now... when i evaluate this </FONT></DIV>
<DIV><FONT face=Arial size=2></FONT> </DIV>
<DIV><FONT face=Arial size=2>c:=Clipboard new.<BR>c
primitiveClipboardText:'α' "α is unicode char
945"</FONT></DIV>
<DIV><FONT face=Arial size=2></FONT> </DIV>
<DIV><FONT face=Arial size=2>the </FONT><FONT face=Arial
size=2>clipboardWriteFromAt is never invoked.</FONT></DIV>
<DIV><FONT face=Arial size=2>That's because in </FONT></DIV>
<DIV><FONT face=Arial size=2> interp.c </FONT></DIV>
<DIV><FONT face=Arial size=2>at</FONT></DIV>
<DIV><FONT face=Arial size=2> sqInt
primitiveClipboardText(void)</FONT></DIV>
<DIV><FONT face=Arial size=2></FONT> </DIV>
<DIV><FONT face=Arial size=2>the following expression is evaluated to
TRUE</FONT></DIV>
<DIV><FONT face=Arial size=2></FONT> </DIV>
<DIV><FONT face=Arial size=2>if (!(((s & 1) == 0) && (((((usqInt)
(longAt(s))) >> 8) & 15) >= 8))) {<BR> /* begin
primitiveFail */<BR> successFlag =
0;<BR> printf("primitive failed 1\n"); "This
printf is mine"<BR> return null;<BR> }</FONT></DIV>
<DIV><FONT face=Arial size=2></FONT> </DIV>
<DIV><FONT face=Arial size=2>Now what in earth is THIS?</FONT></DIV>
<DIV><FONT face=Arial size=2> (!(((s & 1) == 0) &&
(((((usqInt) (longAt(s))) >> 8) & 15) >= 8)))</FONT></DIV>
<DIV><FONT face=Arial size=2>Also further down it has</FONT></DIV>
<DIV><FONT face=Arial size=2></FONT> </DIV>
<DIV><FONT face=Arial size=2>if (successFlag) {<BR> sz =
stSizeOf(s);<BR> clipboardWriteFromAt(sz, s + BaseHeaderSize,
0);<BR> /* begin pop: */<BR> stackPointer -= 1
* BytesPerWord;<BR> }</FONT></DIV>
<DIV><FONT face=Arial size=2></FONT> </DIV>
<DIV><FONT face=Arial size=2>where stSizeOf goes down to
assembly...</FONT></DIV>
<DIV><FONT face=Arial size=2>I think i am starting to abandon the fully-unicode
vision and follow your instructions from the start to use code pages and
preserve the internal representation of Squeak...</FONT></DIV>
<DIV><FONT face=Arial size=2>I don't think that i will be able to make
everything unicode in a life time (does it worth it?)...</FONT></DIV>
<DIV><FONT face=Arial size=2></FONT> </DIV>
<DIV><FONT face=Arial size=2>Christos.</FONT></DIV></BODY></HTML>