Re: DocBook function synopsis

Subject: Re: DocBook function synopsis
From: "Mitch C. Amiano" <amiamc@xxxxxxxxxxxxxxx>
Date: Thu, 09 Jul 1998 16:59:54 -0400
Frank A. Christoph wrote:

> I added three attributes to FuncDef in the declaration subset, "Class" which
> indicates what class the function is a member of (I'm not using it, but it
> seems potentially useful); "Dispatch" which would be "pure" for pure virtual
> functions, "virtual" for regular dynamically dispatched functions, and
> "static" for statically dispatched functions; and finally "Const" which is
> "const" for functions that don't modify the state, or "mutable" for those
> that do.
>
> <!-- customizations -->
> <!ENTITY % local.funcdef.attrib "
>   Class   CDATA #IMPLIED
>   Dispatch (pure|virtual|static) static
>   Const   (const|mutable) mutable" >

Not to go into too much C++ detail for the DSSSL list, I'd suggest youchange the default for Displatch to #IMPLIED. "static" has its own
meaning which has nothing to do with the default dispatch method
used for unqualified method declarations (which are sensitive to
the context). An implied value would mean "unknown, let the compiler
figure it out," which is probably a more accurate representation of
real life.

Also, what about "inline"?

If this is all you need to know, that's great. I wonder though, because
there is so much Stuff (with a capital S) in C++ syntax that you could
easily become swamped trying to handle the gOofY rules.

> And here is the modified formatting code.  These are based on the
> definitions in docbook/print/dbsynop.dsl; I haven't looked at the HTML
> code...
>
> ;changes to support C++ member functions and Docbook customizations
> (element funcprototype
>   (let* ((paramdefs (select-elements (children (current-node))
>          (normalize "paramdef")))
>         (funcdef (node-list-first (children (current-node))))
>         (dispatch-val (attribute-string (normalize "dispatch") funcdef)))
>     (make sequence
>      (make paragraph
>            font-family-name: %mono-font-family%
>            (if (or (string=? dispatch-val (normalize "virtual"))
>                    (string=? dispatch-val (normalize "pure")))
>              (literal "virtual ")
>              (empty-sosofo))
>            (process-children)
>            (if (string=? (attribute-string (normalize "const") funcdef)
>                          (normalize "const"))
>              (literal " const")
>              (empty-sosofo))
>            (if (string=? dispatch-val (normalize "pure"))
>              (literal " = 0")
>              (empty-sosofo))
>            (literal ";"))
>      (if (equal? %funcsynopsis-style% 'kr)
>        (with-mode kr-funcsynopsis-mode
>                   (process-node-list paramdefs))
>        (empty-sosofo)))))
>
> (element void
>   (if (equal? %funcsynopsis-style% 'ansi)
>       (literal "(void)")
>       (literal "()")))
>
> (element varargs (literal "(...)"))
>
> (element paramdef
>   (let ((param (select-elements (children (current-node)) (normalize
> "parameter"))))
>     (make sequence
>       (if (equal? (child-number (current-node)) 1)
>    (literal "(")
>    (empty-sosofo))
>       (if (equal? %funcsynopsis-style% 'ansi)
>    (process-children)
>    (process-node-list param))
>       (if (equal? (gi (ifollow (current-node))) (normalize "paramdef"))
>    (literal ", ")
>    (literal ")")))))
>
> With these changes, you can format things like
>
> <funcsynopsis>
> <funcprototype>
> <funcdef pure const>int <function/foo/</funcdef>
> <paramdef/Bar */
> </funcprototype>
> </funcsynopsis>
>
> to look like
>
> virtual int foo(Bar *) const = 0;
>
> Note: I don't think formatting for K&R is correctly preserved by these
> changes, although a slight change looks like it would be sufficient.
>
> Comments/improvements welcome.
>
> --FC
>
>  DSSSList info and archive:  http://www.mulberrytech.com/dsssl/dssslist


--
Mitch C. Amiano                                         amiamc@xxxxxxxxxxxxxxx
Technical Staff Member  Advanced Design Process Group  Alcatel Network Systems


 DSSSList info and archive:  http://www.mulberrytech.com/dsssl/dssslist


Current Thread
  • RE: DocBook function synopsis, (continued)
    • Frank A. Christoph - from mail1.ability.netby web4-1.ability.net (8.8.5/8.6.12) with ESMTP id XAA29146Tue, 7 Jul 1998 23:13:17 -0400 (EDT)
      • Norman Walsh - from mail1.ability.netby web4-1.ability.net (8.8.5/8.6.12) with ESMTP id IAA12156Wed, 8 Jul 1998 08:15:53 -0400 (EDT)
    • Frank A. Christoph - from mail1.ability.netby web4-1.ability.net (8.8.5/8.6.12) with ESMTP id XAA11708Wed, 8 Jul 1998 23:33:04 -0400 (EDT)
      • Lionel Mallet - from mail1.ability.netby web4-1.ability.net (8.8.5/8.6.12) with ESMTP id DAA16760Thu, 9 Jul 1998 03:02:38 -0400 (EDT)
      • Mitch C. Amiano - from mail1.ability.netby web4-1.ability.net (8.8.5/8.6.12) with ESMTP id RAA02041Thu, 9 Jul 1998 17:03:33 -0400 (EDT) <=
    • Frank A. Christoph - from mail1.ability.netby web4-1.ability.net (8.8.5/8.6.12) with ESMTP id DAA20422Thu, 9 Jul 1998 03:45:12 -0400 (EDT)
    • Frank A. Christoph - from mail1.ability.netby web4-1.ability.net (8.8.5/8.6.12) with ESMTP id WAA27256Thu, 9 Jul 1998 22:45:28 -0400 (EDT)
      • Mitch C. Amiano - from mail1.ability.netby web4-1.ability.net (8.8.5/8.6.12) with ESMTP id KAA13750Fri, 10 Jul 1998 10:23:10 -0400 (EDT)
        • Graydon Hoare - from mail1.ability.netby web4-1.ability.net (8.8.5/8.6.12) with ESMTP id LAA18381Fri, 10 Jul 1998 11:53:57 -0400 (EDT)