Annotation of researchv10no/cmd/dag/README, revision 1.1

1.1     ! root        1: DAG is written in C++.  You need a C++ compiler, Version 1.2 or newer.
        !             2: You can get C++ from Valerie Monroe (ulysses!kaiser!vjm, 8-243-4406,
        !             3: LC 4N-E13).  Send her your name, address to send paper documentation,
        !             4: department number, name or short description of project, unix mail
        !             5: address, machine type, and version of C++ you are requesting (generally
        !             6: you want the most recent).
        !             7: 
        !             8: 1.  Decide where you are going to put the DAG shape libraries,
        !             9:        and edit the first line of paths.h accordingly.
        !            10:        Change DAG_LIB_SUBDIR only if you are installing under EXPTOOLS.
        !            11: 
        !            12: 2.  'makefile' is for old make ("make").
        !            13:        'Makefile' is for new make ("nmake").
        !            14:        Decide which you are using, and remove the unneeded file.
        !            15: 
        !            16: 3.  Edit C flags in the makefile.
        !            17:        If you have System V, add "-DSYSV".
        !            18:        If you have Ninth Edition Unix, add "-DV9".
        !            19:        If you are installing DAG under EXPTOOLS, add "-DEXPTOOLS".
        !            20:        If you are using C++ 2.0 or later, add -DMICC.
        !            21:        If qsort() is declared in the local C++ header file "libc.h"
        !            22:        add "-DQSORTDCL".  No known release of C++ up to C++ 2.0 beta 5
        !            23:        declares qsort() but eventually it will.
        !            24: 
        !            25:        DAG makes heavy use of floating point arithmetic.  The Sun C compiler 
        !            26:        and others have command line flags that generate object code for
        !            27:        optional floating point hardware.  Find out which options are appropriate
        !            28:        for your computer, and add them to C flags in the makefile.
        !            29: 
        !            30: 4.  Run make or nmake.
        !            31: 
        !            32: 5.  Since C++ does not have a standard compilation environment,
        !            33:        problems with header files are common.  Please contact us or
        !            34:        Liberty Corner for help.
        !            35: 
        !            36: 6.  Install the executable "dag" and the libraries "daglib.*" where
        !            37:        they belong, and try some of the files in the directory "examples".
        !            38: 
        !            39: 7.  If dag dumps core (usually with the message "Bad level assignment")
        !            40:        check that static constructors in C++ are not working.  We can give
        !            41:        you a trivial program that checks this if you need it.
        !            42: 
        !            43:                Stephen C North
        !            44:                201 582 7392
        !            45:                ulysses!north
        !            46: 
        !            47: 
        !            48: 2/3/88:
        !            49:        We changed the default node shape to Ellipse.  Edge statements may
        !            50: now be "ordered": this means that the head nodes are placed on the same
        !            51: rank and are ordered left to right (by automatic creation of invisible
        !            52: flat edges).  For instance:
        !            53: 
        !            54:        ordered edge from root to c1, c2, c3;
        !            55: 
        !            56: Nodes have a "label" attribute to make it convenient to create many nodes
        !            57: sharing a common label.  For example you might specify part of the drawing
        !            58: of a directory hierarchy this way:
        !            59: 
        !            60:        draw "/usr/include/sys/h" label "h";
        !            61:        draw "/usr/local/include/sys/h" label "h";
        !            62: 
        !            63: The interface to "<shape>_clip" functions in PostScript has been changed.
        !            64: The clip function now takes two points off the stack and returns an
        !            65: optional point and a boolean.  The two points define a ray.  If the ray
        !            66: intersects the shape (placed at the origin) then the clip function pushes
        !            67: the point and the boolean value true; otherwise it pushes the boolean
        !            68: value false.  We made this change because we don't always aim edges at
        !            69: the centers of nodes.  We do ensure that the ray will intersect the
        !            70: bounding box of the shape in the same quadrant (w.r.t. the node center)
        !            71: as the ray's origin.
        !            72: 
        !            73: 3/8/88:
        !            74: The front end was rewritten.  We added a color attribute for nodes and edges,
        !            75: and generalized the notion labels for nodes and edges.  Any label may be
        !            76: either a string, or drawing code in curly braces.  The PostScript code
        !            77: generator knows about colors; see the user guide for details or else
        !            78: as usual READ THE CODE.
        !            79: 
        !            80: We added an option to "fill" the bounding box of the drawing.  For instance:
        !            81: 
        !            82:        .GS 6 8 fill
        !            83: 
        !            84: will make a drawing that exactly fills a 6X8 box. 
        !            85: 
        !            86: To get node labels to work correctly in Pic, label parameters to shape macros
        !            87: are now quoted.  Thus the shape macro body should NOT say "$1".  This change
        !            88: is NOT backward compatible.
        !            89: 
        !            90: The back end has been improved considerably, especially the heuristics
        !            91: for X coordinate assignment.  Because of the quadratic complexity,
        !            92: the time it takes to run the -O option is tolerable only on small graphs,
        !            93: and since the heuristic does nearly as well, we may eventually remove
        !            94: this command line option altogether.  The back end does a better job of
        !            95: centering nodes over their descendants (yields better drawings of trees)
        !            96: and also takes less time on graphs with many hundreds of nodes.
        !            97: 
        !            98: You can make the documentation by saying:
        !            99: 
        !           100:        pic dag.doc | tbl | eqn | troff -mm
        !           101: 
        !           102: Because of subtleties in the figures of this document, you need a Kernighan
        !           103: pic to print it.  If you have trouble, ask us for a paper copy.
        !           104: 
        !           105: 4/18/88:
        !           106: The "-Tcip" option is back.  Run "dag -Tcip" to generate pic code that
        !           107: can be edited with cip.  The issue is that cip does not allow macro
        !           108: definitions, so you can't use it with custom shape macros.
        !           109: 
        !           110: 4/21/88:
        !           111: Fixed some little bugs including: pic syntax error in nodes defined
        !           112: with graphics code between curly braces introduced by -Tcip option;
        !           113: coding error in a call to realloc(), failure to find DAG libraries
        !           114: when $TOOLS is set.  
        !           115: 
        !           116: 5/17/88:
        !           117: The node positioning heuristics try to create "local symmetry."
        !           118: This makes subtrees, chains, and similar structures look more like
        !           119: drawings made by hand.  Zero weight edges are now ignored when
        !           120: finding node placement.  The -Tsimple driver was modified to use
        !           121: tabs as delimiters between fields, and to not use tabs within node
        !           122: labels, for ease of writing filters using old awk which is not
        !           123: able to do a good job with quoted strings.
        !           124: 
        !           125: 6/3/88:
        !           126: Fixed PS line style for dotted edges (had args reversed).
        !           127: Fixed stupidity in .GR x y fill that caused wrong size layout.
        !           128: 
        !           129: 6/20/88:
        !           130: In daglib.ps, corrected Diamond_clip and Square procedures.
        !           131: Crude benchmarks show that 50% of the Laserwriter time
        !           132: goes to drawing ellipses, 25% to drawing splines, and 25% to
        !           133: drawing node labels. 
        !           134: 
        !           135: 11/17/88:
        !           136: Fixed qsort declaration for use with so-called "Fifth Beta Release of C++ 2.0".
        !           137: Some other bug fixes were merged into this version.
        !           138: 
        !           139: 12/05/88:
        !           140: Try another qsort declaration and take triegen out of makefiles.
        !           141: 
        !           142: 12/28/88:
        !           143: Fix bug involving wrong height and width with .GR and nodes labeled
        !           144: with graphics code.  Exchange makefile,Makefile to agree with what
        !           145: old,new-make already expect.
        !           146: 
        !           147: 3/28/89:
        !           148: Improved man page, responding to chronic complaints.
        !           149: PostScript pagination now built into dag, bypassing the inefficient
        !           150: Poster program (from CIA).  To paginate into 8-1/2 x 11 pages, say:
        !           151: 
        !           152:        dag -Tps -p8.5x11
        !           153: 
        !           154: Margins are half an inch but can be reset in the -p option.
        !           155: To set 1 inch margins:
        !           156: 
        !           157:        dag -Tps -p8.5x11,1x1
        !           158: 
        !           159: Laserwriters have a hard margin so there's no way to make a
        !           160: seamless mosaic, unfortunately.
        !           161: 
        !           162: The script dagpsjobs (for new awk) breaks a dag PostScript output
        !           163: file into multiple print jobs.  (Read the script to see how the
        !           164: options work-- it's a trivial program.)  The awk script gprof2dag.awk
        !           165: converts gprof output to dag input that draws colored Ellipses and edges
        !           166: in PostScript.

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.