home *** CD-ROM | disk | FTP | other *** search
/ Nebula 1995 August / NEBULA.mdf / Documents / FAQ / Objective-C-faq / answers < prev    next >
Encoding:
Internet Message Format  |  1993-08-17  |  20.7 KB

  1. Path: senator-bedfellow.mit.edu!bloom-beacon.mit.edu!spool.mu.edu!howland.reston.ans.net!europa.eng.gtefsd.com!uunet!mcsun!sun4nl!tuegate.tue.nl!krait.es.ele.tue.nl!tiggr
  2. From: tiggr@es.ele.tue.nl (Tiggr)
  3. Newsgroups: comp.lang.objective-c,comp.answers,news.answers
  4. Subject: comp.lang.objective-c FAQ, part 1/3: Answers
  5. Supersedes: <answers_743346495@es.ele.tue.nl>
  6. Followup-To: comp.lang.objective-c
  7. Date: 17 Aug 1993 10:09:53 GMT
  8. Organization: Eindhoven University of Technology, the Netherlands
  9. Lines: 528
  10. Approved: news-answers-request@mit.edu
  11. Expires: 26 Sep 1993 10:09:52 GMT
  12. Message-ID: <answers_745582192@es.ele.tue.nl>
  13. Reply-To: tiggr@es.ele.tue.nl (Tiggr)
  14. NNTP-Posting-Host: krait.es.ele.tue.nl
  15. Summary: This first part of the comp.lang.objective-c FAQ postings
  16.         tries to answer all your Objective-C questions.
  17. Originator: tiggr@krait.es.ele.tue.nl
  18. Xref: senator-bedfellow.mit.edu comp.lang.objective-c:1503 comp.answers:1638 news.answers:11484
  19.  
  20. Archive-name: Objective-C/answers
  21. Version: $Id: answers,v 1.6 1993/08/06 12:50:51 tiggr Exp $
  22.  
  23.  
  24.                  Answers to
  25.  
  26.              FREQUENTLY ASKED QUESTIONS
  27.  
  28.                concerning Objective-C
  29.  
  30.  
  31. This is the first in a series of three informational postings concerning
  32. comp.lang.objective-c.  This first part answers FAQs; the second part lists
  33. available class libraries and the third part is a simple sample Objective-C
  34. program.
  35.  
  36. Q   What is Objective-C?
  37.  
  38. A   Objective-C is an object oriented computer programming language.  It is
  39.     a superset of ANSI C and provides classes and message passing similar to
  40.     Smalltalk.
  41.  
  42. Q   What is the difference between Objective-C and C?
  43.  
  44. A   Objective-C is a superset of ANSI C.  It is an object oriented language
  45.     that has extensions similar to Smalltalk that are integrated into C
  46.     syntax without taking anything away.
  47.  
  48.     It includes a few more keywords and constructs.
  49.         New Keywords:
  50.      @class
  51.          @interface
  52.          @implementation
  53.          @public
  54.          @selector
  55.      @protocol
  56.      @end
  57.         Constructs:
  58.          [aList add: anObject];  // send a message to an instance
  59.         Types:
  60.          id    // a generic pointer to an object
  61.  
  62.     [This is nowhere near to what I would like it to be.]
  63.  
  64. Q   What is the difference between Objective-C and C++?
  65.  
  66. A   C++ follows the Simula 67 school of OO programming, where Objective-C
  67.     follows the Smalltalk school.  In C++ the static type of an object
  68.     determine whether you can send it a message, in Objective-C the dynamic
  69.     type determine it.  The Simula 67 school is safer, in that more errors
  70.     are detected at compile time.  The Smalltalk school is more flexible, as
  71.     some valid programs will execute correctly in Smalltalk, where they
  72.     would be rejected by Simula 67.
  73.  
  74.     Stepstone's Objective-C allows you to chose between the dynamic and
  75.     static binding, GNU and NeXT do not.  ANSI C++ allows you to use dynamic
  76.     binding, but discourages you from doing so.
  77.  
  78.     In many ways, the difference between C++ and Objective-C is more a
  79.     question of mindset than technical barriers.  Are you willing to offer
  80.     some flexibility for some safety?  Advocates for the Simula 67 school
  81.     claims that a well designed program doesn't need the extra flexibility
  82.     (a lie), while advocates for the Smalltalk school claims that the errors
  83.     are no problem in practice (another lie).
  84.  
  85.     Pragmatic differences between Objective-C and C++ include:
  86.  
  87.     C++ has operator overloading.  Some consider this to be `syntactic
  88.     sugar', and it is, but it can be a quite handy bit of sugar.
  89.  
  90.     C++ has multiple inheritance.  There are several ways to `get
  91.     around' this in Objective-C (see below).
  92.  
  93.     The added syntax and semantics of C++ is huge, while Objective-C is
  94.     C plus just a small number of new features.
  95.  
  96. Q   What exactly is it that makes Objective-C have `classes similar to
  97.     Smalltalk', and what are the resulting capabilities of Objective-C?
  98.  
  99. A   Objective-C is as close to Smalltalk as a compiled language allows.  The
  100.     following is a list of the features `taken' from Smalltalk:
  101.  
  102.       * Objective-C is compiled---Smalltalk is only partially compiled.  The
  103.     current Objective-C implementations are all *much* faster than any
  104.     Smalltalk.  For example ParcPlace Smalltalk-80/4 is at least 3 times
  105.     slower than both the GNU and NeXT Objective-C's.  (This was measured
  106.     using the Self/Smalltalk benchmark suite available by FTP from
  107.     `self.stanford.edu:pub/Self-2.0.1'.)
  108.  
  109.       * You may add or delete methods and classes at runtime.  (This is done
  110.     via dynamic loading of object code.  This is currently supported by
  111.     both NeXT and Stepstone Compilers [?].)
  112.  
  113.       * Much of the syntax, i.e. Smalltalk uses method names like
  114.     `a:method:name:', as does Objective-C.  In Objective-C, the message
  115.     sending construct is enclosed in square brackets, like this:
  116.     `[anObject aMessage: arg]' whereas Smalltalk uses something like
  117.     `anObject aMessage: arg'.
  118.  
  119.       * The basic class hierachy, that is, having class `Object' in the very
  120.     top, and letting most other classes inherit from it.
  121.  
  122.       * Most method names in class object is the same.  E.g. `respondsTo:'.
  123.     What is called `doesNotUnderstand:' in Smalltalk is called
  124.     `doesNotRecognize:' in Objective-C.
  125.  
  126.       * Smalltalk normally uses `doesNotUnderstand:' to implement
  127.     forwarding, delegation, proxies etc.  This is handled via special
  128.     methods `forward::' and a special class (on NeXT named NXProxy)
  129.     which must be used for such purposes.
  130.  
  131.       * Objective-C has meta classes mostly like Smalltalk.  
  132.  
  133.       * Objective-C does not have class variables like Smalltalk, but pool
  134.     variables and globals are easily emulated via static variables.
  135.  
  136. Q   What are the `nice features' of Objective-C?
  137.  
  138.     The possibility to load class definitions and method definitions
  139.     (which extend a class) at run time.
  140.  
  141.     Typing information is available at run time.  [Prime example:
  142.     NeXTSTEP's `-[Application loadNibSection:owner:]'.]
  143.  
  144.     Persistence [...].
  145.  
  146.     Remote objects [...].
  147.  
  148.     Delegation and target/action protocols [...].
  149.  
  150. Q   What are some of the common problems of the language and how can I work
  151.     around them?
  152.  
  153. A   There is no innate multiple inheritance (of course some see this as a
  154.     benefit).
  155.  
  156.     To get around it you can create a compound class, i.e. a class with
  157.     instance variables that are ids of other objects.  Instances can
  158.     specifically redirect messages to any combination of the objects
  159.     they are compounded of.  (It isn't *that* much of a hassle and you
  160.     have direct control over the inheritance logistics.)  [Of course,
  161.     this is not `getting around the problem of not having multiple
  162.     inheritance', but just modeling your world slightly different in
  163.     such a way that you don't need multiple inheritance.]
  164.  
  165.     Protocols address the absence of multiple inheritance (MI) to some
  166.     extent: Technically, protocols are equivalent to MI for purely
  167.     "abstract" classes (see the answer on `Protocols' below).
  168.  
  169.     [** how does Delegation fit in here? **] [Delegation is extending a
  170.     class' functionality in a way anticipated by the designer of that
  171.     class, without the need for subclassing.  One can, of course, be the
  172.     delegate of several objects of different classes...]
  173.  
  174.     There are no class variables.
  175.  
  176.     You can get around this by defining a static variable in the .m
  177.     file, and defining access methods for it.  This is actually a more
  178.     desirable way of designing a class hierarchy, because it allows
  179.     subclasses shouldn't access superclass storage (this would cause the
  180.     subclass to break if the superclass was reimplemented), and allows
  181.     the subclass to override the storage (if the classes access all
  182.     their own variables via methods).
  183.  
  184.     [The question remains what the exact syntax of class variables
  185.     should be: Should a class object A be seen as an instance of its
  186.     meta-class MA, which has a super class MB being the meta-class of
  187.     A's super, B, and, as such, should A have seperate instances of
  188.     class variables defined for B?  Or not?]
  189.  
  190.     You can't forward-declare classes.
  191.  
  192.     In NeXTSTEP 3.0 and GNU CC 2.4, you can:
  193.  
  194.         @class Foo;
  195.  
  196.     declares the class Foo.  [Stepstone?]
  197.  
  198. Q   What are Protocols?
  199.  
  200. A   Protocols are an addition to Objective-C that allows you to organize
  201.     related methods into groups that form high-level behaviors.  Protocols
  202.     are currently available in NeXTSTEP 3.0 and GCC 2.4.
  203.  
  204.     Protocols address the MI issue.  When you design an object with multiple
  205.     inheritance, you usually don't want *all* the features of both A and B,
  206.     you want feature set X from A and feature set Y from B.  If those
  207.     features are methods, then encapsulating X and Y in protocols allows you
  208.     to say exactly what you want in your new object.  Furthermore, if
  209.     someone changes objects A or B, that doesn't break your protocols or
  210.     your new object.  This does not address the question of new instance
  211.     variables from A or B, only methods.
  212.  
  213.     Protocols allow you to get type-checking features without sacrificing
  214.     dynamic binding.  You can say "any object which implements the messages
  215.     in Protocol Foo is ok for this use", which is usually what you want -
  216.     you're constraining the functionality, not the implementation or the
  217.     inheritance.
  218.  
  219.     Protocols give library builders a tool to identify sets of standard
  220.     protocols, independent of the class hierarchy.  Protocols provide
  221.     language support for the reuse of design, whereas classes support the
  222.     reuse of code.  Well designed protocols can help users of an application
  223.     framework when learning or designing new classes.  Here is a simple
  224.     protocol definition for archiving objects:
  225.  
  226.     @protocol Archiving
  227.         -read: (NXTypedStream *) stream;
  228.     -write: (NXTypedStream *) stream;
  229.         @end
  230.  
  231.     Once defined, protocols can be referenced in a class interface as
  232.     follows:
  233.  
  234.     /* MyClass inherits from Object and conforms to the
  235.        Archiving protocol.  */
  236.     @interface MyClass: Object <Archiving>
  237.     @end
  238.  
  239.     Unlike copying methods to/from other class interfaces, any incompatible
  240.     change made to the protocol will immediately be recognized by the
  241.     compiler (the next time the class is compiled).  Protocols also provide
  242.     better type checking without compromising the flexibility of untyped,
  243.     dynamically bound objects.
  244.  
  245.     MyClass *obj1 = [MyClass new];
  246.  
  247.     // legal, obj2 conforms to the Archiving protocol.
  248.     id <Archiving> obj2 = obj1;
  249.  
  250.     // illegal, obj1 does not conform to the TargetAction protocol.
  251.     id <TargetAction> obj3 = obj1;
  252.  
  253.     [The `illegal' remark in the comment is a bit far-sought.  The real use
  254.     of declaring an ID to conform to some protocol is that it can help the
  255.     compiler to resolve method name conficts:
  256.  
  257.     @interface Foo: Object
  258.     -(int) type;
  259.     @end
  260.  
  261.     @protocol Barf
  262.     -(const char *) type;
  263.     @end
  264.  
  265.     -blah1: d
  266.     {
  267.       id t = [d someMethod];
  268.  
  269.       do_something_with ([t type]);
  270.     }
  271.  
  272.     -blah2: d
  273.     {
  274.       id <Barf> t = [d someMethod];
  275.  
  276.       do_something_with ([t type]);
  277.     }
  278.  
  279.     In this example, there are two kinds of the `-type' method.  In the
  280.     method `-blah1:', the compiler doesn't know what to expect from `[t
  281.     type]', since it has seen both declarations of `-type'.  In method
  282.     `-blah2:', it knows that `t' conforms to the `Barf' protocol and thus
  283.     that `t' implements the `-type' method returning a `const char *'.]
  284.  
  285. Q   What is the difference between the NeXTSTEP, Stepstone and GNU CC
  286.     versions of Objective-C?
  287.  
  288. A   NeXT extended Stepstones definition of the language to include new
  289.     constructs, such as protocols, which are touted to deal with some
  290.     aspects of multiple inheritance.
  291.  
  292.     Stepstone supports static _binding_, whereas NeXTSTEP and GNU CC don't.
  293.     All implementations do support static _typing_.
  294.  
  295.     Stepstone has a standard set of class libraries that work across all
  296.     supported machines.  NeXTSTEP comes with its own set of libraries
  297.     (called `kits').  GNU libobjc.a currently only includes the `Object'
  298.     class.
  299.  
  300.     The `Object' class of all implementations differ.
  301.  
  302.     NeXTSTEP and GNU CC support Categories, Stepstone doesn't.
  303.  
  304.     NeXT has a native language debugger, Stepstone and GNU don't.  [This is
  305.     not really true, since NeXT's debugger is gdb, the GNU debugger, and
  306.     their extensions are available.  I think I've seen them on the Fall 1992
  307.     Edu CD.  Their extensions haven't appeared in the official FSF]
  308.  
  309.     NeXTSTEP 3.0 and GCC 2.4 support protocols and forward declarations of
  310.     classes.  [And Stepstone?]
  311.  
  312. Q   What written information concerning Objective-C is available?
  313.  
  314. A   Books:
  315.  
  316.     Object Oriented Programming: An Evolutionary Approach
  317.  
  318.         Author:         Brad J. Cox (, Andrew J. Novobilski second edition)
  319.         Publisher:      Addison-Wesley
  320.         ISBN#:          0-201-10393-1   August, 1986
  321.         ISBN#:          0-201-54834-8   1991
  322.  
  323.     Objective-C: Object Oriented Programming Techniques
  324.  
  325.         Authors:        Lewis J. Pinson, Richard S. Wiener
  326.         Publisher:      Addison-Wesley, 1991
  327.         ISBN#:          0-201-50828-1
  328.         Abstract:       Includes many examples, discusses both Stepstone's
  329.                         and NeXT's versions of Objective-C, and the (minor)
  330.                         differences between the two.
  331.  
  332.     An Introduction to Object-Oriented Programming
  333.  
  334.         Author:         Timothy Budd
  335.         Publisher:      Addison-Wesley
  336.         ISBN#:          0-201-54709-0
  337.         Abstract:       An intro to the topic of OOP, as well as a comparison
  338.                         of C++, Objective-C, Smalltalk, and Object Pascal
  339.  
  340.     NeXTSTEP Programming  Step ONE: Object-Oriented Applications
  341.  
  342.         Authors:        Simson L. Garfinkel, Michael K. Mahoney
  343.         Publisher:      TELOS/Springer-Verlag, 1993   (800)SPR-INGE
  344.         Availablility:  First printing (6000 copies) sold out in 3 months.
  345.         Abstract:       It's updated to discuss NeXTSTEP 3.0 features
  346.                         (Project Builder, new development environment)
  347.                         but doesn't discuss 3DKit or DBKit
  348.  
  349.     NeXTSTEP Object Oriented Programming and the Objective C Language.
  350.     Addison-Wesley Publishing Company, Reading, Massachusetts, 1993.
  351.     ISBN 0-201-63251-9.
  352.  
  353.     Abstract:     This book describes the Objective-C language as it
  354.             is implemented for NeXTSTEP.  While clearly targeted
  355.             at NeXTSTEP, it is a good first-read to get to learn
  356.             Objective-C.
  357.  
  358.     Articles
  359.  
  360.     `Why I need Objective-C', by Christopher Lozinski.
  361.     Journal of Object-Oriented Programming (JOOP) September 1991.
  362.  
  363.     Abstract:    This article discusses the differences between C++
  364.             and Objective-C in great detail and explains why
  365.             Objective-C is a better object oriented language.
  366.  
  367.     `Concurrent Object-Oriented C (cooC)', by Rajiv Trehan et. al.
  368.     ACM SIGPLAN Notices, Vol. 28, No 2, February 1993.
  369.  
  370.     Abstract:    This article discusses cooC, a language based on the
  371.             premise that an object not only provides an
  372.             encapsulation boundary but should also form a
  373.             process boundary.  cooC is a superset of
  374.             Objective-C.
  375.  
  376.     `Porting NEXTSTEP Applications to Microsoft Windows',
  377.     by Christopher Lozinski.  NEXTWORLD EXPO Conference Proceedings,
  378.     San Francisco, CA, May 25-27, 1993.  Updated version of the article
  379.     available from the author.  Contact lozinski@cup.portal.com
  380.  
  381.     Abstract:    This article describes how to develop Objective-C
  382.             applications for both Microsoft Windows and
  383.             NEXTSTEP.
  384.  
  385.     GNU Documentation
  386.  
  387.     The GNU progrects needs a free manual describing the Objective-C
  388.     language features.  Because of its cause, GNU cannot include the
  389.     non-free books in the GNU system, but the system needs to come with
  390.     documentation.
  391.  
  392.     Anyone who can write good documentation, please think about giving
  393.     it to the GNU project.  Contact rms@gnu.ai.mit.edu.
  394.  
  395. Q   What kind of Objective-C support is provided by Stepstone?
  396.  
  397.     Compilers and runtime for:
  398.  
  399.             Apple Macintosh (running Mac Programmers Workshop)
  400.             DEC Stations (ULTRIX)
  401.             Data General AViiON (DG/UX)
  402.             HP9000/300,400,700,800 (HP-UX)
  403.             IBM RISC System/6000 (AIX)
  404.             MIPS
  405.             NeXT
  406.             PC-AT (MS-DOS)
  407.             PS/2 (AIX or OS/2)
  408.             SCO UNIX SYS V
  409.             Sun 3, 4, SPARCstations (SunOS)
  410.             VAX (VMS)
  411.  
  412.         Class libraries are available for a subset of the above.
  413.         [Which?]
  414.  
  415.        The Stepstone Corporation
  416.         (203) 426-1875 - (800) BUY-OBJEct voice / (203) 270-0106 fax
  417.         75 Glen Road
  418.         Sandy Hook, CT 06482
  419.  
  420. Q   What kind of Objective-C support is provided by NeXT?
  421.  
  422.     The Objective-C compiler and libraries come bundled with the
  423.     NEXTSTEP Developer CD.  The compiler essentially is GNU CC.  For
  424.     information on the Kits which are part of NEXTSTEP, see the
  425.     ClassWare Listing (part 2 of this FAQ).
  426.  
  427.     Products are:
  428.  
  429.         NeXTSTEP 3.0
  430.         NEXTSTEP 3.1 for NeXT Computers
  431.  
  432.         NEXTSTEP 3.1 for Intel Processors
  433.         Released on May 25 1993.
  434.         User                $ 795
  435.         Developer            $1895
  436.         Educational (U+D)        $ 295
  437.         Evaluation Kit
  438.           (U+D, no docs/upgrade)    $ 295
  439.  
  440.         ObjectWare Catalogue of available classes, both commercial and
  441.         freely available.
  442.  
  443.     NeXT, Inc.
  444.     [address]
  445.  
  446. Q   What kind of Objective-C support is provided by GNU?
  447.  
  448. A   The current distribution of GNU CC (version 2.4.5) includes an
  449.     Objective-C compiler and runtime library.  The latter includes the
  450.     `Object' class.  Some people are working on the GNU libobjc.
  451.  
  452.     Free Software Foundation
  453.     675 Massachusetts Avenue
  454.     Cambridge, MA  02139
  455.     +1-617-876-3296
  456.  
  457.     General questions about the GNU Project can be asked to
  458.     gnu@prep.ai.mit.edu.
  459.  
  460.     GNU CC comes with an Objective-C compiler and runtime
  461.         library which includes the Object class.
  462.  
  463.         For information on how to order GNU software on tape,
  464.         floppy, or cd-rom, check the file etc/DISTRIB in the GNU
  465.         Emacs distribution, or e-mail a request to:
  466.         gnu@prep.ai.mit.edu
  467.     
  468.     GNU software is available from the following sites:
  469.     
  470.         Asia: utsun.s.u-tokyo.ac.jp:/ftpsync/prep,
  471.           ftp.cs.titech.ac.jp, cair.kaist.ac.kr:/pub/gnu
  472.         Australia: archie.oz.au:/gnu
  473.         Europe: ftp.informatik.tu-muenchen.de,
  474.           src.doc.ic.ac.uk:/gnu, nic.funet.fi:/pub/gnu,
  475.           ugle.unit.no, isy.liu.se, nic.switch.ch:/mirror/gnu,
  476.           archive.eu.net, ftp.informatik.rwth-aachen.de:/pub/gnu,
  477.           ftp.stacken.kth.se, ftp.win.tue.nl, ftp.denet.dk,
  478.           ftp.eunet.ch, irisa.irisa.fr:/pub/gnu
  479.         United States: wuarchive.wustl.edu, ftp.cs.widener.edu,
  480.           uxc.cso.uiuc.edu, col.hp.com:/mirrors/gnu,
  481.           gatekeeper.dec.com:/pub/GNU, ftp.uu.net:/systems/gnu
  482.  
  483. Q.  What kind of Objective-C support is provided by BPG.
  484.  
  485.     BPG provides the Borland Extensions to Objective-C which allows the 
  486.     Objective-C translator to be used with the Borland Compiler, and makes 
  487.     it easy to develop Objective-C application for Microsoft Windows.
  488.   
  489.     BPG provides the Smalltalk Interface to Objective-C which makes
  490.     Objective-C objects look like Smalltalk Objects.  It can be used to 
  491.     build Graphical User Interface on portable Objective-C objects, or to 
  492.     sell Objective-C libraries to Smalltalk developers.
  493.  
  494.     BPG provides the Objective-C Message Bus which sends Objective-C messages
  495.     across heterogeneous computer platforms.
  496.  
  497.     BPG has a library of objects for modelling Objective-C programs.  A browser
  498.     application has been built on this library.  Other potential applications 
  499.     include adding class variables to Objective-C, adding runtime information 
  500.     about instance variables, and method argument types, generating object 
  501.     versions, and eventually building a browser/translator.
  502.  
  503.     Christopher Lozinski
  504.         BPG
  505.         35032 Maidstone Court
  506.         Newark, CA 94560
  507.         Tel: (510) 795-6086
  508.         fax: (510) 795-8077
  509.         email: lozinski@cup.portal.com
  510.  
  511. Q   What are the newsgroups to read or mailinglists to subscribe to in order
  512.     to stay up-to-date on developments for GNU Objective-C?
  513.  
  514. A   Read comp.lang.objective-c, which is bound to discuss current events.
  515.     There is also a mailinglist, gnu-objc@gnu.ai.mit.edu, discussing this
  516.     very topic.  To subscribe to this list, send a mail with your request to
  517.     `gnu-objc-request@gnu.ai.mit.edu.'
  518.  
  519. Q   Are there any FTP sites with Objective C code?  Where?
  520.  
  521. A   NeXTSTEP sites:
  522.     sonata.cc.purdue.edu    128.210.15.30
  523.     cs.orst.edu        128.193.32.1
  524.     ftp.stack.urc.tue.nl    131.155.2.71
  525.     ccrma-ftp.stanford.edu    36.49.0.93    [MusicKit]
  526.  
  527.     [What about other sites?]
  528.  
  529. Q   What class libraries are available for Objective C?
  530.  
  531. A   See the related FAQ file objc-faq/classes.
  532.  
  533. Q   So show me a program, a simple example.
  534.  
  535. A   See the related FAQ file objc-faq/sample.
  536.  
  537. The early version of this FAQ was compiled by Bill Shirley, with the aid of
  538. many people.  The current version is being maintained by Tiggr, aided by a
  539. lot of people, including: Per Abrahamsen, Paul Burchard, Brad Cox,
  540. Christopher Lozinski, Mike Mahoney, Paul Sanchez, Lee Sailer, Bill Shirley,
  541. Subrata Sircar, Ted Slupesky, Richard Stallman and Kersten Krab Thorup,
  542.  
  543. Any text in between `[' and `]' is a comment.  Comments indicate problems
  544. with this FAQ, which should be solved.  Send your suggestions, additions,
  545. bug reports, comments and fixes to `tiggr@es.ele.tue.nl'.
  546. -- 
  547. --Tiggr
  548.