XEROX READDATATYPE 2 4 1 READDATATYPE 1 4 By: Christopher Lane (Lane@Sumex-Aim.Stanford.Edu) READATATYPE gives @ a read macro definition so that it can be used to type in datatype pointers directly. For example, suppose you have lost your pointer onto a window (or menu, etc.) but you have it's printed representation around (eg. {WINDOW}#56,17470) then you can do things like: 90_(INVERTW @{WINDOW}#56,17470) {WINDOW}#56,17470 The read macro is only intended to be used at the READ-EVAL-PRINT loop. If the character following the @ is not a { then the read macro returns the @ character just as if you had typed it in so that other expressions that use @, like (BQUOTE (A B ,@ '(C D E) F)), will still work correctly. Although the read macro doesn't need the data type name in the brackets (eg. {MENU}) to get the pointer, it does require it in order to check the pointer to make sure it is of the correct 'type'. If the pointer is not of the type specified, then the read macro returns NIL.(LIST ((PAGE NIL (FOLIOINFO (ARABIC) STARTINGPAGE# 1) (0 0 612 792) ((FOLIO NIL (PARALOOKS (QUAD CENTERED) CHARLOOKS (SUPERSCRIPT 0 SIZE 10 FAMILY MODERN OVERLINE OFF STRIKEOUT OFF UNDERLINE OFF SLOPE REGULAR WEIGHT MEDIUM) FORMATINFO (ARABIC)) (174 36 288 36) NIL) (HEADING NIL (HEADINGTYPE RUNNINGHEAD) (84 744 444 36) NIL) (TEXT NIL NIL (84 96 456 600) NIL))) (PAGE NIL NIL (0 0 612 792) ((FOLIO NIL (PARALOOKS (QUAD CENTERED) CHARLOOKS (SUPERSCRIPT 0 SIZE 10 FAMILY MODERN OVERLINE OFF STRIKEOUT OFF UNDERLINE OFF SLOPE REGULAR WEIGHT MEDIUM)) (282 42 72 36) NIL) (HEADING NIL (HEADINGTYPE RUNNINGHEAD) (84 744 444 36) NIL) (TEXT NIL NIL (84 96 456 600) NIL))) (PAGE NIL NIL (0 0 612 792) ((FOLIO NIL (PARALOOKS (QUAD CENTERED) CHARLOOKS (SUPERSCRIPT 0 SIZE 10 FAMILY MODERN OVERLINE OFF STRIKEOUT OFF UNDERLINE OFF SLOPE REGULAR WEIGHT MEDIUM)) (282 42 72 36) NIL) (HEADING NIL (HEADINGTYPE RUNNINGHEAD) (84 744 444 36) NIL) (TEXT NIL NIL (84 96 456 600) NIL)))))(È (È(ŠŠ8(È (ŠŠ8DÈÈ PAGEHEADING RUNNINGHEADTERMINAL MODERN MODERN MODERN MODERNLOGO  HRULE.GETFNMODERN  HRULE.GETFNMODERN  HRULE.GETFNMODERN   HRULE.GETFNMODERN  HRULE.GETFNMODERN 4 Û h !MM»é5zº