You might want to post some example snippets of the code that is causng you trouble.
for the huffman encoding of the jpeg reading it has a method to decode bytes of the file (JPEGReadWriter>>decodeBlockInto:component:dcTable:acTable:). This method then uses other methods within JPEGReadWriter such as getBits and peekBits and they in turn call a method called fillBuffer and fillBuffer accesses things from the stream by doing stream peekFor: 16r00. where stream is an instance variable in ImageReadWriter (parent class of JPEGReadWriter).
so here's the order of the calls with comments below them indicating who they call within their method. JPEGReadWriter>>decodeMCU "calls decodeBlockInto:component:dcTable:acTable:" JPEGReadWriter>>decodeBlockInto:component:dcTable:acTable: "calls getBits and peekBits (among other things)" JPEGReadWriter>>decodeByte:withTable: "calls getBits and peekBits (among other things)" JPEGReadWriter>>getBits "calls fillBuffer (among other things)" JPEGReadWriter>>peekBits "calls fillBuffer (among other things)" JPEGReadWriter>>fillBuffer "makes references to the JPEGReadWriter's stream"
I found after testing different jpegs that the huffman encoding is taking a good bit of time, so it should become a primitive. The two that take the most time in huffman encoding are the decodeBlock... and decodeByte:withTable: messages. So for huffman encoding I just wanted to write primitives for these two. And I thought that these primitives (located in JPEGReadWriterPlugin) could make calls to getBits and peekBits (located in JPEGReadWriter). But this is where the problem of compiling comes. In the translated code, it makes references to these calls which are in JPEGReadWriter not in JPEGReadWriterPlugin, but the receiver of the JPEGReadWriterPlugin is JPEGReadWriter so it is accessable off of the stack so I don't see why it would be a problem.
It would be easy to write the sub-routines for getBits and peekBits (and other such sub-routines) but for things which access the stream (like fillBuffer which is called by getBits and peekBits), it looks like it would be turtles all the way down, just writing sub-routine after sub-routine for stuff that already exists. The same problem occurs in the discrete cosine transfer and the color mapping primitives. They all need access to JPEGReadWriter's methods. thanks in advance for any help.
-eric joseph hudson eric138@cc.gatech.edu
On Wed, 12 Jul 2000, Tim Rowledge wrote:
You might want to post some example snippets of the code that is causng you trouble.
-- Tim Rowledge, tim@sumeru.stanford.edu, http://sumeru.stanford.edu/tim CChheecckk yyoouurr dduupplleexx sswwiittcchh..
squeak-dev@lists.squeakfoundation.org