home *** CD-ROM | disk | FTP | other *** search
/ NetNews Usenet Archive 1992 #16 / NN_1992_16.iso / spool / comp / lang / tcl / 1060 < prev    next >
Encoding:
Text File  |  1992-07-28  |  2.6 KB  |  67 lines

  1. Newsgroups: comp.lang.tcl
  2. Path: sparky!uunet!eco.twg.com!twg.com!news
  3. From: "David Herron" <david@twg.com>
  4. Subject: Re: How do I imbed tcl in an application
  5. Message-ID: <1992Jul28.172451.16671@twg.com>
  6. Sensitivity: Personal
  7. Encoding:  52 TEXT 
  8. Sender: news@twg.com (USENET News System)
  9. Conversion: Prohibited
  10. Organization: The Wollongong Group, Inc., Palo Alto, CA
  11. Conversion-With-Loss: Prohibited
  12. Date: Tue, 28 Jul 1992 17:26:36 GMT
  13. Lines: 52
  14.  
  15. > How do I provide access to structures more complex than just strings?
  16. ..
  17. > typedef struct {
  18. >     char *name;
  19. >     int  rank;
  20. >     int  ssn;
  21. > } Soldier;
  22. > Soldier grunt;
  23. > Now, is there any way I can pass ``grunt'' to a tcl proc and have it be
  24. > able to access grunt.name or grunt.rank ?
  25.  
  26. Traditionally TCL has had you use `handles'.  A handle is a character-string
  27. which is passed back to the TCL program, and which the TCL program supplies
  28. when it wants to manipulate that object.  In the command-handler for each
  29. interested command, there must be a smidgeon of code which takes the handle and
  30. finds the object it refers to.  Once the C code has that object, it can do
  31. whatever it likes with it.
  32.  
  33. Then, if you want the TCL programmer to be able to manipulate things within
  34. the object, you provide a `soldier name <handle>' command.  It looks up the handle
  35. and returns the name.  Or it could look for a fourth argument, and use that to
  36. set the value.
  37.  
  38. This all works.  The supposedly most convenient way of coding the `handle'
  39. stuff is in the NeoSoft extensions.  I have been able to make them work,
  40. but the explanation isn't the most clear and it isn't clear I'm making the
  41. best use of this facility.
  42.  
  43. Another possible way is to use the key'd lists of the NeoSoft extensions.
  44. When returning a structure, instead of returning its handle you'd convert
  45. it into a key'd list.  Then the TCL programmer would have to hand that key'd
  46. list back when it want's to do something.  This seems, however, to cause a
  47. lot more overhead as the key'd list would have to be parsed over and over
  48. again.  Also for lots of cases, the structure you're manipulating is the property
  49. of another module, which makes this strategy difficult.
  50.  
  51. BTW,
  52.  
  53. : jay          jay@vnet.ibm.com    My opinions and ideas, not my employer's.
  54. : shmdgljd@rchland.vnet.ibm.com    (c) Copyright 1992.  All rights reserved.
  55.  
  56. This copyright notice is not compatible with Usenet.  Usenet's inner soul
  57. and being involves copying and widely propogating everything it gets
  58. its hands on.  But, a strict reading of this notice, prevents that sort
  59. of thing.  Are you going to sue every Usenet site because of this?  What is
  60. the point of such a broad claim?
  61.  
  62. No need to respond in public..
  63.  
  64.     David
  65.