home *** CD-ROM | disk | FTP | other *** search
- /* -- remove this header before using file! --
- HEADER: The Last Cross-Referencer;
- TITLE: TLC/TLP - The Last Cross-Referencer;
- VERSION: 1.01;
-
- DESCRIPTION: "TLC/TLP.
- General Information on use of TLC and TLP";
-
- KEYWORDS: Utility, Cross-reference, C, Pascal, Apple, Macintosh, APW, Aztec;
- SYSTEM: Macintosh MPW, v3.0;
- FILENAME: README.TLC;
- WARNINGS: "Has not yet been ported to MS-DOS.
- Shareware, $20 Check/Money Order suggested.";
-
- SEE-ALSO: TLCHELP.DOC,TLPHELP.DOC;
- AUTHORS: Eduard Schwan;
- COMPILERS: AZTEC C65 v3.2b, APPLEIIGS APW C v1.0, APPLE MACINTOSH MPW C v3.0;
- */
-
- Copyright (c) 1987-1989, Eduard Schwan Programs [esp] - All rights reserved
- TLC (The Last C-Cross-Referencer) and TLP (same, but for Pascal) are
- Cross-Reference Generators crafted and shot into the Public Domain by
- Eduard Schwan. The source code and executable program may be freely
- distributed as long as the copyright/author notices remain intact, and
- it is not used in part or whole as the basis of a commercial product.
- Any comments, bug-fixes, or enhancements are welcome.
- Also, if you find TLC and it's source code useful, a contribution of
- $20 (check/money order) is encouraged! Hopefully we will all see more
- source code distributed!
- Eduard Schwan, 1112 Oceanic Drive, Encinitas, Calif. 92024
-
- --------------------------------------------------------------------------
-
- A note about the source code:
-
- There are really two programs intertwined in this source. TLC is a C source
- cross-referencer, and TLP (a recent addition) is a Pascal source cross-
- referencer. I wanted to put a real parser in here to help identify variable
- usage (declaration, reference, assignment), but of course, it was needed
- before it was done, and some quickie smarts was inserted instead just to get
- it working. Of course, I have not yet gone back to replace the parser, and
- probably never will.. it is good enough for me, and I'm lazy!
- Anyway, TLC came first, and all the files named TLCxxxx.C are
- needed to compile TLC. TLP came later as an appendage to TLC. It uses many
- of these TLCxxx files too, and it additionally needs all the TLPxxxx.C files.
- The MPW Make files are included here (TLC.MAKE and TLP.MAKE), but a table below
- should show you who uses what.
- DOCUMENT NEEDED BY NEEDED BY NEEDED BY
- FILE BOTH TLC TLP
- --------- ---------- ----------- -----------
- readme.tlc tlc.ext tlc.c tlp.c
- tlcHelp.Doc tlc.h tlc.make tlp.make
- tlccmd.c tlcgtok.c tlpgtok.c
- tlcparm.c tlcparm.dat tlpparm.dat
- tlcparm.h tlcprocf.c tlpprocf.c
- tlcresw.c tlcresw.dat tlpresw.dat
- tlcsetp.c
- tlcstat.c
- tlcutil.c
- tlcxref.c
-
- Source code history:
-
- TLC was originally written on a 64k Apple II+ in Aztec C65, then ported to
- APW C on an Apple IIGS, then to MPW C on an Apple Macintosh II. I have not
- done any regression testing after adding the compiler switches, but it
- should still run on a IIGS. I am sure it has grown far too big for even the
- Aztec Interpreted C on the Apple II. I have not yet ported it to an MS-DOS
- machine, but it should go just as smoothly as the other ports.
-
- I have not made an effort to group machine-specific functions, but they hopefully
- just turned out that way.. all in TLCUTIL.C. Namely get_time(), get_mem(),
- check_user_abort(), and maybe do_form_feed(). Also check out TLC.H thoroughly.
- Some interesting constants are hiding in there.
-
- This has been a three year (not-so-copious) spare-time effort on my part,
- and am hoping that this will be as useful to you as it has been to me. If you
- are interested in porting this to yet another machine, or have comments or
- bug reports, or just want to say "hi" or send me money, please feel free to
- contact me. I am on AppleLink (JL.TECH, atten:Eduard Schwan), or at the address
- below.
-
- Eduard Schwan
- 1112 Oceanic Drive
- Encinitas, California 92024
-
- --------------------------------------------------------------------------
-
- These are the known bugs/features-to-be-added to
- The Last [C/Pascal] Cross-referencer, as of 7/02/89 (v1.01) [esp]:
-
- 1:Xref case-sensitivity isn't here yet (do_case_sens/do_xcase_sens).
- That is, one can't have case-sens. ids without having case-sens.
- xref sorting, or vice versa. DoCaseSens works, but DoXcaseSens
- is ignored. The way I did the symbol table, it is an icky chore
- and may never show up, but hey, I haven't needed it yet either.
-
- 2:Underscore-significance (Pascal) isn't here yet.
- (now it is.. 0.90 beta)
-
- 3:Include file handling isn't here yet. Not only that, but the scanner
- doesn't recognize the <incfile.h> as a string, so "incfile" and "h"
- show up as separate xref'ed identifiers (hmm, could be called a feature?)
-
- 4:The full-blown parser isn't here yet, instead some quickie C smarts
- were kludged into the scanner (tlc.gtok.c) to make this useable in
- a "reasonable" time frame.
- (NOTE: as of 1.01, it now looks like a pain to retrofit it in..)
-
- 5:The symbol table is 100% memory-resident, and therefore the size of
- the source code you throw at TLC is limited by available heap space.
- Another parameter (DO_BIG_XREF?) should be added that makes tlc/tlp
- call alternate symbol table routines that do disk I/O..
-
- 6:The statistics option should print out more interesting stuff someday..
- (v1.00 added a list of file names..)
-
- 7:The Macintosh version should be jazzed up with heap-avail displayed
- every once in awhile, and it needs a commando interface for us lazies,
- and the time/date need to be called & stuck into ctime_string in
- tlc.util.c.
- (heapAvail & time/date was just fixed in 0.95 beta, so ??? no longer
- appears for time/date.)
-
- 8:An fopen() in MPW C (Macintosh) creates a typeless, creatorless file
- (to be expected, really) which means the output text file (TLC.OUT)
- cannot be read by any text editors.. I could make TLC write to stdout
- & redirect, tell users to type "setfile -t TEXT -c 'MPS ' tlc.out" after
- running TLC in MPW, or find a way to set the TYPE of the file inside TLC.
- C purists would argue that redirecting to stdout is the way it should be
- done, to which I say, "yeah, I should have made it that way in the
- beginning.." It doesn't look that hard to change, but I am still
- pondering the ramifications..
-
- 9:TLC knows what a function declaration is by blindly deciding that any
- identifier followed by an open paren (that is not a #define macro) at
- block level zero is a function decl. This works 100% of the time when
- the C source code's { } match up. But the following (avoidable) practice
- will goof up TLC's ability to detect functions beyond this point:
- a = b;
- if (a == 1)
- #ifdef debug_on /* TLC ignores conditional compilation & does it all */
- { /* in one.. */
- b = 3;
- #else
- { /* in two.. */
- b = 4;
- #endif
- } /* out two.. but not to one! */
-
- This can be avoided by fully capturing (or not capturing) braces in
- conditionals:
- a = b;
- if (a == 1)
- #ifdef debug_on
- { /* in one.. */
- b = 3;
- } /* out one */
- #else
- { /* in one again.. */
- b = 4;
- } /* out one */
- #endif
-
- 10:Emphasis only works on the xref symbols. It doesn't yet work for
- function headers, comments, or reserved words in the listing output.
-
- 11:I think TLC sometimes forgets a reference or two in BIG xref.s with
- lots of files. I think I have only seen it happen, but only a couple
- of times, and am tracking it down now.
- (Fairly exhaustive debugging with lotsa xreffed files turned up nothing..
- I am giving up this search until a known repeatable occurrance is found,
- so v1.00 may still have this problem!?)
-
- 12:If only a cross-reference is done, a bunch of spaces are put in the
- beginning of the file. I think TLC.PROCF.C is the culprit, and not
- all output is suppressed..
- (Nope, it was new_page, fixed it with an additional parm. in v1.00)
-
- 13:The source file names were changed in v1.00 to names edible by the
- MS-DOS community, just in case portability happens.. All names with
- multiple periods got the 1st period stripped (TLC.PROCF.C => TLCPROCF.C)
-