[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Added a class to MrEd.



Helpful folks on the mailing list,

I recently added a new primitive class, simple%, to MrEd. It doesn't do very
much.
It is equivalent to the following

(define simple%
  (class object% (num)
    (sequence (super-init))
    (public
      [get-num (lambda () num)])))

except that it has been implemented using the C interface.

I intend to implement a prototype OpenGL canvas, that should work with MrEd,
shortly.

Anyway, simple% is my "hello world" version of a new MrEd class. I
successfully, added it
to the MrEd project and compiled it. Along with several other things, I
figured out that 
I needed to add "simple%" to the propgate.ss file and do a makewrap.bat.

I started MrEd and tried it out and my simple% class works as expected, but
with one
quirk.

When I start I get a small MrEd error window with the following:

"
compound-unit/sig: 2nd linkage (mred signature) for hierlist is
missing a value name `simple%', required by hierlist unit's
2nd import (mred^ signature)
"

I suppose that somewhere there is a compound-unit/sig expression that isn't
happy
with the fact that MrEd now implements a new primitve class called simple%.
I suppose
further that the compound-unit/sig must have something to do with this
hierlist thingy.
So I go to \plt\collects\hierlist and find hierlistr.ss which contains this
business:

(unit/sig hierlist^
  (import mzlib:function^
	  mred^)

  ...implementation of hierlist

So it appears that hierlist is a unit who's second import must satisfy mred^

I root around in the collects tree a little more and under
D:\PLT\collects\drscheme\tools\project-manager
I find the file unit.ss containing this business:

(compound-unit/sig
  (import [mred : mred^]
	  [core : mzlib:core^]
	  [fw : framework^]
	  [pc : mzlib:print-convert^]
	  [drscheme : drscheme:export^]
	  [zodiac : zodiac:system^])

  (link
   [hierlist : hierlist^ ((require-library "hierlistr.ss" "hierlist") (core
function) mred)]
   [main : () ((require-library "main.ss" "drscheme" "tools"
"project-manager")
	       mred
	       core
               pc
	       fw
	       drscheme
	       zodiac
	       hierlist)])
  (export))

So this duvalaki, takes several units and combines them together yielding
still another unit, which unit doesn't
export anything. This last unit can be invoked.

So is this the compound-unit/sig that isn't pleased with my addition of
simple%?
What's it complaining about? after all, the new signature file
(plt/collects/mred/sig.ss) for mred that makewrap.bat 
spit out for me has simple% in it.

So is there another version of the mred signature data kicking around which
needs to be kept in sync with
the new version I created? I'm guessing now, but does this have anything to
do with .zo files?

Thanks.