Hi Matthew,

I don't think you really need to use the "do" statement here at all. 
I really don't understand what the "stackobject" variable is used 
for, but here's a way to do what you want to do.

Change your "on new" handler to something like this:

  on new me stackScriptName, stackobject, maxsize

amd save stackScriptName in a property variable instead of stackType. 
Then in your "on addnewstackobject, do this:

   if stack.count < maxsizeofstack) then
      newStackObject = new(script stackScriptName)
      append(stack, newStackObject)
      return stack.count
   etc.

If you are trying to create a new object and at the same time are 
trying to pass in a reference to this "manager" object, then you 
probably want to do something like this:

on addnewStackObject me   --   <--   don't forget the "me" variable here
     if stack.count < maxsizeofstack) then
        newStackObject = new(script stackScriptname, me)
        ... <same as above>

Hope this helps,

Irv

At 2:22 PM -0500 2/25/02, Matthew DeSimone wrote:
>I've run into a snag here with the modified stack manager code that Irv
>proposed a few days ago. 
>
>As follows is my script for a type agnostic object stack manager.  The
>problem lies in the fact that I need to say stack[somestackpoint] is
>equal to a new object of type typeofstack and name objectofstack.  I am
>at a loss as to how to properly represent this without using do.
>
>For instance, lets say typeofstack = "xtra" and objectofstack =
>"xmlparser", I need do to execute "new (xtra "xmlparser")".
>Theoretically that is what my do cmd below is doing.  However, I keep
>receiving "variable not defined" errors with the question mark after the
>"new(" string.  Is what I'm doing legal?   If not, any proposed
>suggestions on how I would go about doing it correctly?
>
>
>property stack
>property typeofstack
>property objectofstack
>property maxsizeofstack
>
>on new me, stacktype, stackobject, maxsize
>   me.maxsizeofstack = maxsize
>   me.stack = []
>   me.typeofstack = stacktype
>   me.objectofstack = stackobject
>   return me
>end
>
>on addnewstackobject
>   if (stack.count < maxsizeofstack) then
>     stack.append((do "new(" & typeofstack & " " & QUOTE &
>string(objectofstack) & QUOTE & ")"))          return stack.count
>   else
>     if ((findrecycledstackobject()) <> void) then
>       return findrecycledstackobject()
>     end if
>   end if
>   return void
>end addnewstackobject
>
>
>on findrecycledstackobject
>   repeat with control = 1 to stack.count
>     if (stack[control] = 0) then
>       stack[control] = 0
>       return stack[control]
>     end if
>   end repeat
>   return void
>end findrecycledstackobject
>
>
>~matt desimone
>[EMAIL PROTECTED]
>www.syrupnyc.com
>
>
>
>[To remove yourself from this list, or to change to digest mode, go 
>to http://www.penworks.com/lingo-l.cgi  To post messages to the 
>list, email [EMAIL PROTECTED]  (Problems, email 
>[EMAIL PROTECTED]). Lingo-L is for learning and helping with 
>programming Lingo.  Thanks!]


-- 

Lingo / Director / Shockwave development for all occasions. 
          
   (Home-made Lingo cooked up fresh every day just for you.)
[To remove yourself from this list, or to change to digest mode, go to 
http://www.penworks.com/lingo-l.cgi  To post messages to the list, email 
[EMAIL PROTECTED]  (Problems, email [EMAIL PROTECTED]). Lingo-L is for 
learning and helping with programming Lingo.  Thanks!]

Reply via email to