  How to write a bintool command:

  1.  #include "/obj/tool/bin/bincmd.h"
      [Remark: Should be moved to /sys]

  2. Provide the following functions

     [optional] string QueryVersion() {return "Vx.xx";}
         The current version of the command

     [optional] string QueryAuthor() {return "xxxxx";}
         The author(s) of the command

     string *QueryCommands() { return ({"cmd1","cmd2","..."}); }
         A string or an array of strings returning the commands 
         provided by the module

     string *QueryAbrev() { return ({"abrev1","abrev2","..."}); }
         A string or an array of strings returning abreviations
        for the above commands or 0 for no abreviations

     int cmd_xxx(string str )
         The function which will be called when a command is
         typed by teh user. xxx has to correspond with one of
         the commands given in QueryCommands(). E.g. "xlook"
         yields cmd_xlook()

     [optional] string QueryXxxHelp() {return "Helptext...\n";}
         Returns context help for the command xxx. E.g.  "xlook"
         yields QueryXlookHelp(). This function can be subsituted
         by a file "xlook.hlp" in the same directory as the command
         which will be printed then instead.

     [optional] string QueryHelp() {return "Helptext\n";}
         Returns a helptext for the module. E.g. the module is
         called "xtool", then "binhelp xtool" returns that text.
         This function can be subsituted by a file "xtool.hlp" in
         the same directory as the command which will be printed then
         instead.

     [optional] int QueryEUIDRequired()
         Overwrite this and return 1 if you want a seteuid()

     [optional] int QueryDestruct()
         Overwrite this and return 0 if you do not want the command
         destructed after command execution. 
         IMPORTANT: Do this if you use input_to or SMore's

     [optional] int QueryHeartbeat()
        Return 1 if you need a heart_beat in your tool. Use
        few heart_beats or you will slow down the mud massively!!!

  3.  The following functions are provide bny the BASICCMD 

      object QueryDispatcher()
        A reference to the bintool. Can be used for storing
        variables via tool->QueryTempData("xxx") or
        tool->QueryPermData("xxx") as well as tool->SetTempData("xxx",yy)
        and tool->SetPermData("xxx",yy)
        BUG: In Heartbeat use previous_object() instead

      object QueryCloner() 
        Returns a reference to the owner of the tool.
        BUG: Do not use in Heartbeat()

      int CheckHelp(string str)
        Use this function as first comman in your cmd_xxx() function
        if you want context help.
        EXAMPLE:
          int cmd_xxx(string arg)
          {
            if (CheckHelp(arg)) return 1;
            ...
            return 1;
          }

      int HeartBeat(object cloner)
        Will be called if you want a heartbeat in your tool. Return 1
        if you want the heart to continue, 0 for removing the heart_beat
        capability. As argument the owner of the tool is given





