   The short Command

   The  short  command  is  the  SmartEiffel interface generator. Using a
   plain  Eiffel  source  file,  the short command prints on the standard
   output  the  interface of this class. The short command is also a good
   tool  to  performs  many  validity  checks  of  a given class (syntax,
   exportation rules, inheritance, etc.). There are two invocation modes:
   traditional and ACE.
   Note  that  features from ANY are not printed unless the class you are
   shorting is ANY or feature from ANY is redefined.

   Usage

   Traditional mode
   short [format] [options] <Class>

   ACE mode
   short [format] [options] <ACEfile.ace> <Class>

   Command short prints on the standard output the interface of the given
   <Class>.
   The default format is -plain: no special characters are added.
   Command  short is customisable and some predefined formats are already
   available  (see  below  for  predefined  formats  and how to add a new
   output  format). When ACE mode is used, as usual, the [1]"loadpath.se"
   is  ignored  and  only the content of the ACE file is used to look for
   the Eiffel source code.

   Options

   -help:
          Display  a  brief  summary  of  the  command-line  syntax and a
          complete list of compiler options.
   -verbose:
          Print  system  information during the compilation (full path of
          files loaded, type inference score, removed files, etc.).
   -version:
          Display  the  version  number of the SmartEiffel release you're
          using.
   -loadpath <loadpath_file>:
          Adds  a  loadpath  file  for  class  lookup. See details in the
          [2]finder man page.
   -sort:
          Features are sorted alphabetically.
   -short:
          Does not consider inherited features.
   -no_style_warning:
          Suppress  output for warning messages related to non respect of
          standard  Eiffel  style  guidelines  (for example ItEm will not
          trigger a warning).
   -case_insensitive:
          Switch case insensitive mode on.
          For  example,  when  this  mode  is selected, the Eiffel parser
          considers  that  the  following  identifiers  refer to the same
          feature: item, ITEM, ItEm, ...
   -no_warning:
          Suppresses  output for all warning messages (error messages are
          still printed). Implies -no_style_warning.
   -client <client_class>:
          Specify  the  class  whom  the  point of view is taken of. This
          command allow to know all features visible to client_class from
          the class you short.
          Note1: default is equivalent to -client ANY.
          Note2:  short  -client  class  class does not show all features
          from  class,  only  features  exported  to  itself  are printed
          (callable  via qualified calls). You can see all features using
          short -client NONE class. All these features are accessible via
          unqualified calls.
          Note3:  short -client NONE class may be useful for whole static
          analysis of your class.

   Predefined Output Formats

   -plain:
          The default compact output format. No special character added.
   -pretty:
          Basically,  it  is  similar  to  -plain except that there are a
          couple  of  additional  line-feeds (e.g. between features) that
          make  the  structure  of the output easier to read. (It sort of
          appears  like  the  "pretty" printer would have done it, that's
          why "-pretty").
   -tex1:
          Simple  output mode for TeX. Encloses the interface in a simple
          verbatim TeX environment.
   -tex2:
          Output  mode  for  TeX. Uses a TeX alltt environment with a \bf
          font  for  keywords,  \it  font  for  comments and \tt font for
          identifiers.
   -tex3:
          Output  mode  for  TeX.  Follows  style guidelines given in ETL
          appendix  A.  As  the  previous mode, this mode also uses a TeX
          alltt environment.
   -html1:
          A nice HTML output (provided by Matthias Klose).
   -html2:
          Another  nice  HTML  output  too.  This  one is the one used to
          generate the [3]library interface of the SmartEiffel WEB site.

   Adding a New Output Format

   To  define a new output format, you have to add a new sub-directory in
   the SmartEiffel "short" directory. In order to change the output, this
   new  directory  must  contains  various hook files, which contain text
   used to replace the default output.
   Here is the current list of hook files.

       1. Changing the output for the class interface header
          "hook000" - If this hook file exists, the contents of this file
          is printed very first.
          "hook010"  -  If  this  hook  file exists, and if the processed
          class  is an expanded one, the contents of this file is printed
          before  the  class name to replace the default string "expanded
          class interface ".
          "hook011"  -  If  this  hook  file exists, and if the processed
          class  is an deferred one, the contents of this file is printed
          before  the  class name to replace the default string "deferred
          class interface ".
          "hook012"  -  If  this  hook  file exists, and if the processed
          class  is  an  ordinary  one  (not  deferred  nor expanded) the
          contents  of  this  file  is  printed  before the class name to
          replace the default string "class interface ".
          "hook013" _ If this hook file exists, the contents of this file
          is  printed  before  the  class name whatever the kind of class
          (expanded,  deferred  or ordinary) to replace the default empty
          string "".
          "hook014"  -  If  this hook exists, the contents of the file is
          printed  after  the  class  name  to replace the default string
          "%N".
          "hook015"  -  If  this  hook file exists, and if a class header
          comment  is  present,  this  file  is  printed  once before the
          heading class comment.
          "hook016" - If this hook file exists, and if an heading comment
          is present, the contents of this file is printed to replace the
          default string " --" at the beginning of each comment line.
          "hook017" - If this hook file exists, and if an heading comment
          is present, the contents of this file is printed to replace the
          default string "%N" at the end of each comment line.
          "hook018"  -  If  this hook file exists, and if a class heading
          comment  is  present, the contents of this file is printed once
          after the heading comment.
          "hook019"  -  If  this  hook  file exists, and if the processed
          class has no heading comment, this file is printed once.

       2. Changing the output for the creation list
          "hook100"  -  If  it  exists,  this  file is printed before the
          creation list to replace the default string "creation%N".
          "hook101"  -  If  it  exists,  this  file  is printed after the
          creation list to replace the default empty string "".
          "hook102"  -  If it exists, this file is printed when the class
          has no creation list.

       3. Changing the output for the feature list
          "hook200"  -  If  exists,  printed before the feature list when
          option   -sort  is  selected  to  replace  the  default  string
          "feature(s)%N".
          "hook201"  -  If  exists,  printed  after the feature list when
          option  -sort  is  selected to replace the default empty string
          "".
          "hook202" - If exists, printed before each feature list with no
          heading  comment to replace the default string "feature(s) from
          ".
          "hook203"  -  If  exists,  printed  after  the  class  name  of
          "hook202" to replace the default string "%N".
          "hook204"  -  If  exists,  printed before a feature list with a
          heading  comment to replace the default string "feature(s) from
          ".
          "hook205"  - If exists, printed after the class name introduced
          at "hook204" to replace the default string "%N".
          "hook206"  - If exists, printed before each line of the feature
          list comment to replace the default string " --".
          "hook207"  -  If exists, printed after each line of the feature
          list comment to replace the default string "%N".
          "hook208"  - If exists, printed after a feature list comment to
          replace the default empty string "".

       4. Changing the output for a feature signature
          "hook300"  -  If this hook exists, the contents of this file is
          printed before each feature to replace the default string " ".
          "hook301"  -  If this hook exists, the contents of this file is
          printed  once  when the feature has no arguments to replace the
          default empty string "".
          "hook302"  -  If this hook exists, the contents of this file is
          printed  once  when  the  feature  has arguments to replace the
          default string " (".
          "hook303"  -  If this hook exists, the contents of this file is
          printed  when  the feature has arguments to replace the default
          string " ;".
          "hook304"  -  If this hook exists, the contents of this file is
          printed  when  the feature has arguments to replace the default
          string ", ".
          "hook305"  -  If this hook exists, the contents of this file is
          printed  when  the feature has arguments to replace the default
          string ": ".
          "hook306"  -  If this hook exists, the contents of this file is
          printed  once  when  the  feature  has arguments to replace the
          default string ")".
          "hook307"  -  If this hook exists, the contents of this file is
          printed  once  when  the  feature  has no result to replace the
          default string "%N".
          "hook308"  -  If this hook exists, the contents of this file is
          printed  once  before the result type of the feature to replace
          the default string ": ".
          "hook309"  -  If this hook exists, the contents of this file is
          printed  once  after  the result type of the feature to replace
          the default string "%N".

       5. Changing the output for a feature comment
          "hook310"  -  If  this hook file exists, and if a feature has a
          heading comment, this file is printed once before the comment.
          "hook311"  -  If  this hook file exists, and if a feature has a
          heading  comment,  the  contents  of  this  file  is printed to
          replace  the  default  string  "  --"  at the beginning of each
          comment line.
          "hook312"  -  If  this hook file exists, and if a feature has a
          heading  comment,  the  contents  of  this  file  is printed to
          replace  the  default  string  "%N"  at the end of each comment
          line.
          "hook313"  -  If  this hook file exists, and if a feature has a
          heading  comment,  the  contents  of  this file is printed once
          after this comment.
          "hook314"  -  If this hook file exists, and if a feature has no
          heading comment, the contents of this file is printed.

       6. Changing the output for require clauses
           6.1. For the header of a require clause
          "hook400"  -  If this hook file exists, and if a feature has no
          require  assertion,  the  contents  of  this file is printed to
          replace the default empty string "".
          "hook401"  - If this hook file exists, and if a feature has one
          require  assertion, the contents of this file is printed before
          the  latest inherited assertion to replace the default string "
          require%N".
          "hook402" - If this hook file exists, and if a feature has more
          than  one  require  assertion,  the  contents  of  this file is
          printed  before  the  require  assertion to replace the default
          string " require else%N".
          "hook403"  -  If this hook file exists, and if a feature has at
          least  one  require  assertion,  the  contents  of this file is
          printed  to finish the job (once after the last printed require
          assertion) to replace the default empty string "".
          "hook412"  -  If  exists,  printed when a require clause has no
          heading comment to replace the default empty string "".
          "hook413"  -  If exists, printed once before the require clause
          heading comment to replace the default empty string "".
          "hook414"  - If exists, printed before each line of the heading
          comment to replace the default string " --".
          "hook415"  -  If exists, printed after each line of the heading
          comment to replace the default string "%N".
          "hook416"  -  If  exists, printed once after the require clause
          heading comment.
          "hook417"  -  If  exists,  printed when a require clause has no
          assertion to replace the default empty string "".
          "hook418"  - If exists, printed once before the first assertion
          of a require clause to replace the default empty string "".
          "hook433" - If exists, printed once after the last assertion of
          a require clause to replace the default empty string "".
          "hook434"  -  If  exists, printed to finish a require clause to
          replace the default empty string "".

           6.2. For each assertion in a require clause
          "hook419"  -  If  exists,  printed  before  each assertion of a
          require clause to replace the default string " ".
          "hook420"  - If exists, printed when an assertion has no tag to
          replace the default empty string "".
          "hook421"  -  If  exists,  printed  before a tag to replace the
          default empty string "".
          "hook422"  -  If  exists,  printed  after  a tag to replace the
          default string ": ".
          "hook423"  -  If  exists,  printed  when  the  assertion has no
          expression to replace the default empty string "".
          "hook424" - If exists, printed before the expression to replace
          the default empty string "".
          "hook425" - If exists, printed after the expression (except for
          the last assertion) to replace the default string ";".
          "hook426" - If exists, printed when an assertion has no comment
          to replace the default string "%N".
          "hook427"  -  If  exists,  printed  once  before  the assertion
          comment to replace the default empty string "".
          "hook428"  -  If  exists,  printed  before  each  line  of  the
          expression comment to replace the default string " --".
          "hook429"   -  If  exists,  printed  after  each  line  of  the
          expression comment to replace the default string "%N".
          "hook430"  -  If  exists,  printed  once  after the assertion's
          comment to replace the default string "".
          "hook431"  -  If exists, printed after the assertion to replace
          the default empty string "".

           6.3. For the last assertion in a require clause

           Same  hook  file  list  as  described  in  section  6.2 except
   "hook425" which becomes :
          "hook432"  -  If  exists,  printed after the last expression to
          replace the default empty string "".

       7. Changing the output for ensure clauses
           7.1. For the header of the ensure clause
          "hook500"  -  If  this  hook  file exists, and a feature has no
          ensure  clause, the contents of this file is printed to replace
          the default empty string "".
          "hook511" - If this hook file exists, the contents of this file
          is  printed  before  each  ensure clause to replace the default
          string " ensure%N".
          "hook512"  -  If  exists,  printed  when  ensure  clause has no
          heading comment to replace default empty string "".
          "hook513"  -  If  exists, printed once before the ensure clause
          heading comment to replace the default empty string "".
          "hook514"  - If exists, printed before each line of the heading
          comment to replace the default string " --".
          "hook555"  -  If exists, printed after each line of the heading
          comment to replace the default string "%N".
          "hook516"  -  If  exists,  printed once after the ensure clause
          heading comment.
          "hook517"  -  If  exists,  printed when an ensure clause has no
          assertion to replace the default empty string "".
          "hook518"  - If exists, printed once before the first assertion
          of the ensure clause to replace the default empty string "".
          "hook533" - If exists, printed once after the last assertion of
          the ensure clause to replace the default empty string "".
          "hook534"  -  If exists, printed to finish the ensure clause to
          replace the default empty string "".

           7.2. For each assertion in the ensure assertion
          "hook519"  -  If  exists,  printed before each assertion of the
          ensure clause to replace the default string " ".
          "hook520"  - If exists, printed when an assertion has no tag to
          replace the default empty string "".
          "hook521"  -  If  exists,  printed  before a tag to replace the
          default empty string "".
          "hook522"  -  If  exists,  printed  after  a tag to replace the
          default string ": ".
          "hook523"  -  If  exists,  printed  when  the  assertion has no
          expression to replace the default empty string "".
          "hook524" - If exists, printed before the expression to replace
          the default empty string "".
          "hook525" - If exists, printed after the expression (except for
          the last assertion) to replace the default string ";".
          "hook526" - If exists, printed when an assertion has no comment
          to replace the default string "%N".
          "hook527"  -  If  exists,  printed  once  before  the assertion
          comment to replace the default empty string "".
          "hook528"  -  If  exists,  printed  before  each  line  of  the
          expression comment to replace the default string " --".
          "hook529"   -  If  exists,  printed  after  each  line  of  the
          expression comment to replace the default string "%N".
          "hook530"  -  If  exists,  printed  once  after the assertion's
          comment to replace the default string "".
          "hook531"  -  If exists, printed after the assertion to replace
          the default empty string "".

           7.3. For the last assertion in the ensure clause

           Same  hook  files  list  as  described  in  section 7.2 except
   "hook525" which becomes :
          "hook532"  -  If  exists,  printed after the last expression to
          replace the default empty string "".

       8. Changing the output after each feature
          "hook599"  -  If  exists, printed after each feature to replace
          the default empty string "".

       9. Changing the output for the class invariant
           9.1. For the header of the class invariant
          "hook800"  -  If  this  hook  file  exists,  and  when no class
          invariant  exists,  the  contents  of  this  file is printed to
          replace the default empty string "".
          "hook811" - If this hook file exists, the contents of this file
          is  printed  before  the class invariant to replace the default
          string "invariant%N".
          "hook812"  -  If  exists,  printed  when class invariant has no
          heading comment to replace default empty string "".
          "hook813"  -  If  exists,  printed  once  before  the invariant
          heading comment to replace the default empty string "".
          "hook814"  - If exists, printed before each line of the heading
          comment to replace the default string " --".
          "hook855"  -  If exists, printed after each line of the heading
          comment to replace the default string "%N".
          "hook816" - If exists, printed once after the invariant heading
          comment.
          "hook817"  -  If  exists,  printed  when class invariant has no
          assertion to replace the default empty string "".
          "hook818"  - If exists, printed once before the first assertion
          of the class invariant to replace the default empty string "".
          "hook833" - If exists, printed once after the last assertion of
          the class invariant to replace the default empty string "".
          "hook834" - If exists, printed to finish the class invariant to
          replace the default empty string "".

           9.2. For each assertion in the class invariant
          "hook819"  -  If  exists,  printed before each assertion of the
          class invariant to replace the default string " ".
          "hook820"  - If exists, printed when an assertion has no tag to
          replace the default empty string "".
          "hook821"  -  If  exists,  printed  before a tag to replace the
          default empty string "".
          "hook822"  -  If  exists,  printed  after  a tag to replace the
          default string ": ".
          "hook823"  -  If  exists,  printed  when  the  assertion has no
          expression to replace the default empty string "".
          "hook824" - If exists, printed before the expression to replace
          the default empty string "".
          "hook825" - If exists, printed after the expression (except for
          the last assertion) to replace the default string ";".
          "hook826" - If exists, printed when an assertion has no comment
          to replace the default string "%N".
          "hook827"  -  If  exists,  printed  once  before  the assertion
          comment to replace the default empty string "".
          "hook828"  -  If  exists,  printed  before  each  line  of  the
          expression comment to replace the default string " --".
          "hook829"   -  If  exists,  printed  after  each  line  of  the
          expression comment to replace the default string "%N".
          "hook830"  -  If  exists,  printed  once  after the assertion's
          comment to replace the default string "".
          "hook831"  -  If exists, printed after the assertion to replace
          the default empty string "".

           9.3. For the last assertion in the class invariant

           Same  hook  files  list  as  described  in  section 9.2 except
   "hook825" which becomes :
          "hook832"  -  If  exists,  printed after the last expression to
          replace the default string ";".

       10. Changing the output for the class interface footer
          "hook900"  -  When  exists, printed once before class footer to
          replace the default empty string "".
          "hook901" - When exists, printed once at the end of an expanded
          class  before  the  class  name  to replace the default "end of
          expanded ".
          "hook902"  - When exists, printed once at the end of a deferred
          class  before  the  class  name  to replace the default "end of
          deferred ".
          "hook903" - When exists, printed once at the end of an ordinary
          (not  expanded  nor  deferred)  class, before the class name to
          replace the default string "end of ".
          "hook904"  -  When exist, printed just before the class name to
          replace the default empty string "".
          "hook905"  -  When exists, the contents of this file is printed
          after the class name to replace the default string "%N".
          "hook999" - If this hook file exists, the contents of this file
          is printed once to finish the job.

       11. Class name and formal generic arguments
           11.1 Changing the output for class names
          "Bcn" - When exists, printed Before each class name.
          "Mcn"  -  When  exists, the corresponding class name is printed
          one  more  time  (using  lower  case  letters)  just before the
          contents of this hook file.
          "Acn" - When exists, printed After each class name.
          "Ucn" - To replace the Underscore character in a class name.

           11.2 Changing the output for formal generic arguments
          "Bfga"  -  When  exists,  printed  Before  each  formal generic
          argument.
          "Mfga" - When exists, the corresponding formal generic argument
          is printed one more time (using lower case letters) just before
          the contents of this hook file.
          "Afga"  -  When  exists,  printed  After  each  formal  generic
          argument.
          "Ufga"  -  To  replace  the  Underscore  character  in a formal
          generic argument.

       12. Changing the output for a type mark
          "Btm" - When exists, printed Before each type mark.
          "Atm" - When exists, printed After each type mark.
          "open_sb"  -  To  replace  the  opening square bracket (default
          "[").
          "close_sb"  -  To  replace  the closing square bracket (default
          "]").
          "fgl_sep"  -  To  replace  the  default  comma  "," in a formal
          generic argument list.
          "tm_blank" - To replace a blank character in a type mark.
          "tm_sep"  -  To  replace default string "," as a separator in a
          generic list.
          "like" - To replace the default string "like ".
          "expanded" - To replace the default string "expanded ".

       13. Changing the output for feature names
           13.1. Simple feature names
          "Bsfn" - When exists, printed Before each Simple Feature Name.
          "Asfn" - When exists, printed After each Simple Feature Name.
          "Usfn"  -  To  replace  the  underscore  character  in a simple
          feature name.

           13.2. Infix feature names
          "Bifn"  -  When  exists, replaces the default string "infix %""
          Before an infix feature name definition.
          "Aifn" - When exists, replaces the default string "%"" to close
          "Bifn".
          "Binfix" - When exists, replaces the default string " " printed
          before the infix name used in an expression.
          "Ainfix" - When exists, replaces the default string " " printed
          after the infix name used in an expression.
          "rem" - When exists, replaces the default string "\\".

           13.3. Prefix feature names
          "Bpfn"  -  When exists, replaces the default string "prefix %""
          Before a prefix feature name definition.
          "Apfn" - When exists, replaces the default string "%"" to close
          "Bpfn".

       14. Changing the output for an argument name
          "Ban" - When exists, printed Before each argument name.
          "Aan" - When exists, printed after each argument name.
          "Uan"  -  To  replace  the  Underscore character in an argument
          name.

       15. Changing the output for a tag name
          "Btag" - When exists, printed Before each tag name.
          "Atag" - When exists, printed after each tag name.
          "Utag" - To replace the Underscore character in a tag name.

       16. Changing the output for an effective argument list
          "op_eal"  -  To  replace  the  default  string  "("  to open an
          effective argument list.
          "eal_sep"  -  To replace the default string "," in an effective
          argument list.
          "cl_eal"  -  To replace the default string ")" for an effective
          argument list.

       17. Changing the output for manifest strings
          "open_ms" - To replace the default opening string "%"".
          "close_ms" - To replace the default closing string "%"".
          "Prcnt_ms" - To replace a % character inside a manifest string.
          "Slash_ms" - To replace a / character inside a manifest string.

       18. Changing the output for a manifest array
          "op_ma" - To replace the default string "<<" to open a manifest
          array.
          "ma_sep"  -  To  replace  the  default string "," in a manifest
          array.
          "cl_ma"  -  To  replace  the  default  string  ">>"  to close a
          manifest array.

       19. Changing the output for comments lines
          "BECL"  - Before Each Comment Line. This hook is applied to all
          comments  whatever  the  kind  of  comment.  If exists, printed
          before the contents of each line of each comment (usually after
          the default string "--").
          "AECL"  -  After Each Comment Line. This hook is applied to all
          comments  whatever the kind of comment. If exits, printed after
          the  contents  of  each  line of each comment (usually, printed
          before the default "%N").
          "Ucomment" - To replace the Underscore character in a comment.
          "op_quote" - To replace the default opening quote mark "`".
          "cl_quote"  -  To  close  an  "op_quote" to replace the closing
          quote mark "'".

       20. Miscellaneous tuning
          "open_b"  -  To  replace  the  default  opening  bracket "(" in
          expressions.
          "close_b"  -  To  replace  the  default  closing bracket ")" in
          expressions.
          "arrow"  -  To  replace  the  default  string  "->" in a formal
          generic list.
          "dot" - To replace the default string "." in an expression.
          "Result" - To replace the default string "Result".
          "old" - To replace the default string "old " in ensure clauses.
          "strip_open" - To replace the default string "strip (".
          "strip_close"  -  To  replace  default  string ")" which closes
          "strip_open".
          "create_open" - To replace the default string "create {".
          "create_close"  -  To  replace  default string "}" which closes
          "create_open".
          "fnl_sep"  -  To  replace  the default string ", " in a feature
          name list.
          "Current" - To replace the default string "Current".
          "Void" - To replace the default string "Void".
          "once" - To replace the default string "once ".

                                   [Line]
             Copyright  Dominique COLNET and Suzanne COLLIN -
                         [4]<SmartEiffel@loria.fr>
                Last modified: Tue Feb 11 12:17:57 CET 2003

References

   1. file://localhost/users/miro/colnet/SmartEiffel/man/system.html#loadpath
   2. file://localhost/users/miro/colnet/SmartEiffel/man/finder.html
   3. http://SmartEiffel.loria.fr/libraries/classes.html
   4. mailto:SmartEiffel@loria.fr
