home *** CD-ROM | disk | FTP | other *** search
/ InfoMagic Source Code 1993 July / THE_SOURCE_CODE_CD_ROM.iso / X / mit / doc / CLX / s13.doc < prev    next >
Encoding:
Interleaf document  |  1989-10-18  |  37.8 KB  |  1,326 lines

  1. <!OPS, Version = 5.2>
  2.  
  3. <!Document,
  4.     Print Rev Bars =    no,
  5.     Final Output Device =    "ps",
  6.     Default Printer =    "nearest-adps">
  7.  
  8. <!Font Definitions,
  9.     F2 = Times 10 Italic,
  10.     F3 = Times 10,
  11.     F4 = Times 10 Bold,
  12.     F5 = Times 8 Italic,
  13.     F6 = Times 18 Bold,
  14.     F7 = Times 18,
  15.     F8 = Times 12 Bold,
  16.     F9 = Courier 8,
  17.     F10 = Symbol_B 8>
  18.  
  19. <!Page,
  20.     Bottom Margin =        1 inches,
  21.     Left Margin =        1 inches,
  22.     Right Margin =        1.15 inches,
  23.     First Page =        Right,
  24.     Starting Page # =     Inherit,
  25.     Page # Prefix =        "13<#1e>",
  26.     Hyphenation =        on,
  27.     Consecutive Hyphens =    2,
  28.     Vert. Just. =        off>
  29.  
  30. <!Autonumber Stream, List, 2,
  31.     Level 2 Suffix =    ,
  32.     Level 2 Starting Value = 0,
  33.     Level 2 Show =        no>
  34.  
  35. <!Autonumber Stream, Outline, 3,
  36.     Level 1 Symbol Type =    UPPER ROMAN,
  37.     Level 2 Symbol Type =    UPPER ALPHA>
  38.  
  39. <!Autonumber Stream, figure, 2,
  40.     Level 1 Prefix =    "Figure ",
  41.     Level 1 Suffix =    "<#1e>",
  42.     Level 1 Show =        no,
  43.     Level 2 Suffix =    ,
  44.     Level 2 Starting Value = 0,
  45.     Level 2 Show =        no>
  46.  
  47. <!Autonumber Stream, figurelet, 2,
  48.     Level 1 Symbol Type =    UPPER ALPHA,
  49.     Level 1 Prefix =    "Figure ",
  50.     Level 1 Suffix =    "<#1e>",
  51.     Level 1 Show =        no,
  52.     Level 2 Suffix =    "<#04>">
  53.  
  54. <!Autonumber Stream, invisible, 1,
  55.     Level 1 Suffix =    ,
  56.     Level 1 Show =        no>
  57.  
  58. <!Autonumber Stream, item, 2,
  59.     Level 2 Symbol Type =    LOWER ALPHA,
  60.     Level 2 Trail =        yes>
  61.  
  62. <!Autonumber Stream, paralet, 4,
  63.     Level 1 Symbol Type =    UPPER ALPHA,
  64.     Level 1 Suffix =    ,
  65.     Level 1 Show =        no,
  66.     Level 2 Prefix =    .,
  67.     Level 2 Suffix =    ,
  68.     Level 3 Prefix =    .,
  69.     Level 3 Suffix =    ,
  70.     Level 4 Prefix =    .,
  71.     Level 4 Suffix =    >
  72.  
  73. <!Autonumber Stream, paranum, 4,
  74.     Level 1 Suffix =    ,
  75.     Level 1 Show =        no,
  76.     Level 2 Prefix =    .,
  77.     Level 2 Suffix =    ,
  78.     Level 3 Prefix =    .,
  79.     Level 3 Suffix =    ,
  80.     Level 4 Prefix =    .,
  81.     Level 4 Suffix =    >
  82.  
  83. <!Autonumber Stream, table, 2,
  84.     Level 1 Prefix =    "Table ",
  85.     Level 1 Suffix =    "<#1e>",
  86.     Level 1 Show =        no,
  87.     Level 2 Suffix =    >
  88.  
  89. <!Autonumber Stream, tablelet, 2,
  90.     Level 1 Symbol Type =    UPPER ALPHA,
  91.     Level 1 Prefix =    "Table ",
  92.     Level 1 Suffix =    "<#1e>",
  93.     Level 1 Show =        no,
  94.     Level 2 Suffix =    "<#04>">
  95.  
  96. <!Class, arg,
  97.     Bottom Margin =        0.08 inches,
  98.     Left Margin =        1.85 inches,
  99.     First Indent =        -0.25 inches,
  100.     Line Spacing =        1.121 lines,
  101.     Font =            F2,
  102.     Left Tab =        -0.25/0 inches>
  103.  
  104. <!Class, argtable,
  105.     Top Margin =        0.07 inches,
  106.     Bottom Margin =        0.07 inches,
  107.     Left Margin =        1.60 inches,
  108.     Line Spacing =        1.100 lines,
  109.     Font =            F4,
  110.     Autonumber Name =    table>
  111.  
  112. <!Class, bullet,
  113.     Bottom Margin =        0.153 inches,
  114.     Left Margin =        1.85 inches,
  115.     First Indent =        -0.25 inches,
  116.     Line Spacing =        1.121 lines,
  117.     Font =            F3,
  118.     Allow Page Break Within = no,
  119.     Left Tab =        -0.50/0 inches>
  120.  
  121. <!Class, caption,
  122.     Top Margin =        0.07 inches,
  123.     Bottom Margin =        0.07 inches,
  124.     Line Spacing =        1.100 lines,
  125.     Font =            F5>
  126.  
  127. <!Class, fig,
  128.     Top Margin =        0.07 inches,
  129.     Bottom Margin =        0.07 inches,
  130.     Line Spacing =        1.100 lines,
  131.     Alignment =        Left,
  132.     Font =            F6>
  133.  
  134. <!Class, newpage,
  135.     Bottom Margin =        0 inches,
  136.     Line Spacing =        1 lines,
  137.     Alignment =        Left,
  138.     Font =            F7,
  139.     Hyphenation =        off,
  140.     New Page =        yes,
  141.     Left Tab =        >
  142.  
  143. <!Class, "note",
  144.     Top Margin =        0.177 inches,
  145.     Bottom Margin =        0.334 inches,
  146.     Left Margin =        1.60 inches,
  147.     Line Spacing =        1.121 lines,
  148.     Font =            F3,
  149.     Allow Page Break Within = no,
  150.     Left Tab =        0 inches,
  151.     Right Tab =        6.50 inches>
  152.  
  153. <!Class, p1para,
  154.     Bottom Margin =        0.153 inches,
  155.     Left Margin =        1.60 inches,
  156.     First Indent =        -1.60 inches,
  157.     Line Spacing =        1.121 lines,
  158.     Alignment =        Left,
  159.     Font =            F8,
  160.     Allow Page Break Within = no,
  161.     Allow Page Break After = no,
  162.     Left Tab =        -1.70/0 inches>
  163.  
  164. <!Class, p1rule,
  165.     Bottom Margin =        0 inches,
  166.     Line Spacing =        1 lines,
  167.     Font =            F3,
  168.     Hyphenation =        off,
  169.     Allow Page Break After = no,
  170.     Left Tab =        0/0.75*13 inches>
  171.  
  172. <!Class, p1stacked,
  173.     Bottom Margin =        0 inches,
  174.     Left Margin =        1.60 inches,
  175.     First Indent =        -1.60 inches,
  176.     Line Spacing =        1 lines,
  177.     Font =            F4,
  178.     Allow Page Break Within = no,
  179.     Allow Page Break After = no,
  180.     Left Tab =        -1.60/-0.17/0 inches>
  181.  
  182. <!Class, p2para,
  183.     Bottom Margin =        0.153 inches,
  184.     Left Margin =        1.60 inches,
  185.     First Indent =        -1.60 inches,
  186.     Line Spacing =        1.121 lines,
  187.     Alignment =        Left,
  188.     Font =            F4,
  189.     Allow Page Break Within = no,
  190.     Allow Page Break After = no,
  191.     Left Tab =        0 inches,
  192.     Right Tab =        -1.60/-0.17 inches,
  193.     TOC Doc Name =        TOC>
  194.  
  195. <!Class, p2rule,
  196.     Bottom Margin =        0 inches,
  197.     Left Margin =        1.60 inches,
  198.     Line Spacing =        1 lines,
  199.     Alignment =        Left,
  200.     Font =            F3,
  201.     Hyphenation =        off,
  202.     Allow Page Break After = no,
  203.     Left Tab =        0/0.75*13 inches>
  204.  
  205. <!Class, p2stacked,
  206.     Bottom Margin =        0 inches,
  207.     Left Margin =        1.60 inches,
  208.     First Indent =        -1.60 inches,
  209.     Line Spacing =        1.121 lines,
  210.     Font =            F4,
  211.     Allow Page Break Within = no,
  212.     Allow Page Break After = no,
  213.     Left Tab =        0 inches,
  214.     Right Tab =        -1.60/-0.17 inches>
  215.  
  216. <!Class, para,
  217.     Bottom Margin =        0.153 inches,
  218.     Left Margin =        1.60 inches,
  219.     Line Spacing =        1.121 lines,
  220.     Font =            F3,
  221.     Allow Page Break Within = no,
  222.     Left Tab =        0/0.75*13 inches>
  223.  
  224. <!Class, return,
  225.     Bottom Margin =        0.077 inches,
  226.     Left Margin =        1.60 inches,
  227.     First Indent =        -0.90 inches,
  228.     Line Spacing =        1.121 lines,
  229.     Alignment =        Left,
  230.     Font =            F4,
  231.     Hyphenation =        off,
  232.     Allow Page Break Within = no,
  233.     Allow Page Break After = no,
  234.     Left Tab =        -0.90/0 inches,
  235.     Right Tab =        7.50 inches>
  236.  
  237. <!Class, secno,
  238.     Top Margin =        0.07 inches,
  239.     Bottom Margin =        0.07 inches,
  240.     Line Spacing =        1.100 lines,
  241.     Alignment =        Left,
  242.     Font =            F6,
  243.     Autonumber Name =    paranum>
  244.  
  245. <!Class, secrule,
  246.     Bottom Margin =        0 inches,
  247.     Line Spacing =        1 lines,
  248.     Font =            F3,
  249.     Hyphenation =        off,
  250.     Allow Page Break After = no,
  251.     Left Tab =        0/0.75*13 inches,
  252.     Autonumber Name =    table>
  253.  
  254. <!Class, sectitle,
  255.     Bottom Margin =        0 inches,
  256.     Line Spacing =        1 lines,
  257.     Alignment =        Right,
  258.     Font =            F6,
  259.     Hyphenation =        off,
  260.     New Page =        yes,
  261.     Left Tab =        0/0.75*13 inches>
  262.  
  263. <!Class, syntax,
  264.     Bottom Margin =        0.077 inches,
  265.     Left Margin =        1.60 inches,
  266.     First Indent =        -0.90 inches,
  267.     Line Spacing =        1.121 lines,
  268.     Alignment =        Left,
  269.     Font =            F4,
  270.     Hyphenation =        off,
  271.     Allow Page Break Within = no,
  272.     Allow Page Break After = no,
  273.     Left Tab =        -0.90/0 inches,
  274.     Right Tab =        8 inches>
  275.  
  276. <!Class, syntax0,
  277.     Bottom Margin =        0 inches,
  278.     Left Margin =        1.60 inches,
  279.     First Indent =        -0.90 inches,
  280.     Line Spacing =        1.121 lines,
  281.     Alignment =        Left,
  282.     Font =            F4,
  283.     Hyphenation =        off,
  284.     Allow Page Break Within = no,
  285.     Allow Page Break After = no,
  286.     Left Tab =        -0.90/0 inches,
  287.     Right Tab =        8 inches>
  288.  
  289. <!Class, t3,
  290.     Bottom Margin =        0 inches,
  291.     Left Margin =        4.20 inches,
  292.     First Indent =        -2.60 inches,
  293.     Line Spacing =        1.121 lines,
  294.     Alignment =        Left,
  295.     Font =            F3,
  296.     Left Tab =        0 inches>
  297.  
  298. <!Class, t3head,
  299.     Bottom Margin =        0.15 inches,
  300.     Left Margin =        4.20 inches,
  301.     First Indent =        -2.60 inches,
  302.     Line Spacing =        1.121 lines,
  303.     Alignment =        Left,
  304.     Font =            F3,
  305.     Left Tab =        0 inches>
  306.  
  307. <!Class, "table",
  308.     Top Margin =        0.07 inches,
  309.     Bottom Margin =        0.07 inches,
  310.     Line Spacing =        1.100 lines,
  311.     Font =            F4,
  312.     Autonumber Name =    table>
  313.  
  314. <!Class, title,
  315.     Top Margin =        0.07 inches,
  316.     Bottom Margin =        0.07 inches,
  317.     Line Spacing =        1.100 lines,
  318.     Alignment =        Right,
  319.     Font =            F6,
  320.     TOC Doc Name =        TOC>
  321.  
  322. <!Master Frame,
  323.     Name =            "At Anchor",
  324.     Placement =        At Anchor,
  325.     Width =            0.41 inches,
  326.     Height =        0.137 inches,
  327.     Vertical Alignment =    0.03 inches,
  328.     Diagram =
  329. V4,
  330. (g9,32767,0
  331.  (E10,0,0,0,1,1,0.053333,1,15,0,0,1,0,0,0,1,0,1,1,0.066667,0.066667,6,6,0,0.066
  332.   667,6))>
  333.  
  334. <!Master Frame,
  335.     Name =            p1rule,
  336.     Placement =        At Anchor,
  337.     Width =            6.35 inches,
  338.     Height =        0.153 inches,
  339.     Vertical Alignment =    0.007 inches,
  340.     Shared Contents =    yes,
  341.     Diagram =
  342. V4,
  343. (g9,1,0
  344.  (v4,1,0,0.006667,0.066723,6.326667,0.066611,17,2,0)
  345.  (E10,0,0,0,1,1,0.053333,1,15,0,0,1,0,0,0,0,0,1,1,0.066667,0.066667,6,6,0,0.066
  346.   667,6))>
  347.  
  348. <!Master Frame,
  349.     Name =            p2rule,
  350.     Placement =        At Anchor,
  351.     Width =            4.75 inches,
  352.     Height =        0.15 inches,
  353.     Vertical Alignment =    0.007 inches,
  354.     Shared Contents =    yes,
  355.     Diagram =
  356. V4,
  357. (g9,1,0
  358.  (v4,1,0,4.733333,0.066611,0.006667,0.066723,17,2,0)
  359.  (E10,0,0,0,1,1,0.053333,1,15,0,0,1,0,0,0,0,0,1,1,0.066667,0.066667,6,6,0,0.066
  360.   667,6))>
  361.  
  362. <First Page Header, Frame =
  363. V4,
  364. (g9,0,0
  365.  (E10,0,0,0,1,1,0.053333,1,15,0,0,1,0,0,0,1,1,1,1,0.066667,0.066667,6,6,0,0.066
  366.   667,6))>
  367.  
  368. <Right Page Header, Frame =
  369. V4,
  370. (g9,1,0
  371.  (T8,1,12,4.533333,0.306667,1.8,1,0.333333,0,516,0,17,0,0,0,0,0,0,1,1,2048,512,
  372.   102,1101,2,
  373. <caption,
  374.     Alignment =        Right>
  375.  
  376. Resources
  377.  
  378. <End Text>)
  379.  (E10,0,0,0,1,0,0.053333,1,15,0,0,1,0,0,0,0,1,0,1,0.066667,0.066667,6,6,0,0.066
  380.   667,6))>
  381.  
  382. <Left Page Header, Frame =
  383. V4,
  384. (g9,1,0
  385.  (T8,1,12,0,0.293333,2.4,1,0.333333,0,516,0,17,0,0,0,0,0,0,1,1,2048,512,102,110
  386.   1,2,
  387. <caption>
  388.  
  389. Resources
  390.  
  391. <End Text>)
  392.  (E10,0,0,0,1,1,0.053333,1,15,0,0,1,0,0,0,0,1,1,1,0.066667,0.066667,6,6,0,0.066
  393.   667,6))>
  394.  
  395. <Right Page Footer, Frame =
  396. V4,
  397. (g9,1,0
  398.  (t8,1,4,6.333333,0.266667,2,17,@nntimsps10b,\240)
  399.  (t8,2,4,0.006667,0.266667,0,17,@nntimsps8i,CLX\ Programmer's\ Reference)
  400.  (v4,3,0,0,0.066667,6.333333,0.066554,17,2,0)
  401.  (E10,0,0,0,1,1,0.053333,1,15,0,0,1,0,0,0,0,1,1,1,0.066667,0.066667,6,6,0,0.066
  402.   667,6))>
  403.  
  404. <Left Page Footer, Frame =
  405. V4,
  406. (g9,1,0
  407.  (t8,1,4,0,0.266667,0,17,@nntimsps10b,\240)
  408.  (t8,2,4,6.333333,0.266667,2,17,@nntimsps8i,CLX\ Programmer's\ Reference)
  409.  (v4,3,0,0.026667,0.066667,6.333333,0.066554,17,2,0)
  410.  (E10,0,0,0,1,0,0.053333,1,15,0,0,1,0,0,0,0,1,0,1,0.066667,0.066667,6,6,0,0.066
  411.   667,6))>
  412.  
  413. <sectitle,
  414.     Allow Page Break Within = no,
  415.     Allow Page Break After = no>
  416.  
  417. <|,"13<#1e>161">
  418. <Frame,
  419.     Name =            "At Anchor",
  420.     Placement =        At Anchor,
  421.     Width =            4.72 inches,
  422.     Height =        0.94 inches,
  423.     Vertical Alignment =    0.03 inches,
  424.     Diagram =
  425. V4,
  426. (g9,1,0
  427.  (T8,1,12,0.133333,0.72,4.563333,1,0.333333,0,516,0,17,0,0,0,0,0,0,1,1,2048,512
  428.   ,102,1101,3,
  429. <title>
  430.  
  431. RESOURCES
  432.  
  433. <End Text>)
  434.  (E10,0,0,0,1,0,0.053333,1,15,0,0,1,0,0,0,0,1,0,1,0.066667,0.066667,6,6,0,0.066
  435.   667,6))>
  436. <Frame,
  437.     Name =            "At Anchor",
  438.     Placement =        At Anchor,
  439.     Width =            1.626 inches,
  440.     Height =        0.938 inches,
  441.     Vertical Alignment =    0 inches,
  442.     Diagram =
  443. V4,
  444. (g9,1,0
  445.  (T8,1,12,0.066667,0.276667,0,1,0.333333,0,516,0,17,0,0,0,0,0,0,1,1,2048,512,10
  446.   2,1101,3,
  447. <secno,
  448.     TOC Doc Name =        TOC>
  449.  
  450. <Autonum, paranum, 1, First = Yes>
  451.  
  452. <End Text>)
  453.  (T8,2,12,0.026667,0.733333,0,1,0.333333,0,516,0,17,0,0,0,0,0,0,1,1,2048,512,10
  454.   2,1101,3,
  455. <"table">
  456.  
  457. <Autonum, table, 1, First = Yes>
  458.  
  459. <End Text>)
  460.  (T8,3,12,0.066667,0.6,0,1,0.333333,0,516,0,17,0,0,0,0,0,0,1,1,2048,512,102,110
  461.   1,3,
  462. <fig,
  463.     Alignment =        Both,
  464.     Font =            F4,
  465.     Autonumber Name =    figure>
  466.  
  467. <Autonum, figure, 1, First = Yes>
  468.  
  469. <End Text>)
  470.  (g9,5,0
  471.    (p7,5,8,19
  472.      (g9,5,0
  473.        (g9,5,0
  474.          (v4,5,0,0.266667,0,1.6,0,17,1,0)
  475.          (v4,6,0,1.6,0,1.6,0.933333,17,1,0)
  476.          (v4,7,0,1.6,0.933333,0.266667,0.933333,17,1,0)
  477.          (v4,8,0,0.266667,0.933333,0.266667,0,17,1,0))))
  478.    (g9,10,8
  479.      (p7,10,1032,13
  480.        (g9,10,0
  481.          (g9,10,0
  482.            (v4,10,0,1.397369,0.934816,1.505789,0.822225,17,1,0)
  483.            (v4,11,0,1.505789,0.822225,1.505789,0.615804,17,1,0)
  484.            (v4,12,0,1.505789,0.615804,1.415439,0.521977,17,1,0)
  485.            (v4,13,0,1.415439,0.521977,1.505789,0.428149,17,1,0)
  486.            (v4,14,0,1.505789,0.428149,1.505789,0.259259,17,1,0)
  487.            (v4,15,0,1.505789,0.259259,1.397369,0.14667,17,1,0)
  488.            (v4,16,0,1.397369,0.14667,1.144386,0.14667,17,1,0)
  489.            (v4,17,0,1.144386,0.14667,1.035964,0.259259,17,1,0)
  490.            (v4,18,0,1.035964,0.259259,1.035964,0.371851,17,1,0)
  491.            (v4,19,0,1.035964,0.371851,1.198596,0.371851,17,1,0)
  492.            (v4,20,0,1.198596,0.371851,1.198596,0.296792,17,1,0)
  493.            (v4,21,0,1.198596,0.296792,1.343158,0.296792,17,1,0)
  494.            (v4,22,0,1.343158,0.296792,1.343158,0.446915,17,1,0)
  495.            (v4,23,0,1.343158,0.446915,1.216667,0.446915,17,1,0)
  496.            (v4,24,0,1.216667,0.446915,1.216667,0.597039,17,1,0)
  497.            (v4,25,0,1.216667,0.597039,1.343158,0.597039,17,1,0)
  498.            (v4,26,0,1.343158,0.597039,1.343158,0.784694,17,1,0)
  499.            (v4,27,0,1.343158,0.784694,1.198596,0.784694,17,1,0)
  500.            (v4,28,0,1.198596,0.784694,1.198596,0.709631,17,1,0)
  501.            (v4,29,0,1.198596,0.709631,1.035964,0.709631,17,1,0)
  502.            (v4,30,0,1.035964,0.709631,1.035964,0.822225,17,1,0)
  503.            (v4,31,0,1.035964,0.822225,1.144386,0.934816,17,1,0)
  504.            (v4,32,0,1.144386,0.934816,1.397369,0.934816,17,1,0))))
  505.      (g9,33,2048
  506.        (v4,33,33,0.999823,0.14667,0.999823,0.14667,17,0,0)
  507.        (v4,34,33,0.999823,1.16,0.999823,1.16,17,0,0)
  508.        (v4,35,33,1.56,1.16,1.56,1.16,17,0,0)
  509.        (v4,36,33,1.56,0.14667,1.56,0.14667,17,0,0)))
  510.    (g9,38,8
  511.      (p7,38,1032,13
  512.        (g9,38,0
  513.          (g9,38,0
  514.            (v4,38,0,0.941053,0.934816,0.941053,0.14667,17,1,0)
  515.            (v4,39,0,0.941053,0.14667,0.796491,0.14667,17,1,0)
  516.            (v4,40,0,0.796491,0.14667,0.65193,0.296792,17,1,0)
  517.            (v4,41,0,0.65193,0.296792,0.65193,0.371851,17,1,0)
  518.            (v4,42,0,0.65193,0.371851,0.778421,0.371851,17,1,0)
  519.            (v4,43,0,0.778421,0.371851,0.778421,0.934816,17,1,0)
  520.            (v4,44,0,0.778421,0.934816,0.941053,0.934816,17,1,0))))
  521.      (g9,45,2048
  522.        (v4,45,33,0.633859,0.14667,0.633859,0.14667,17,0,0)
  523.        (v4,46,33,0.633859,1.16,0.633859,1.16,17,0,0)
  524.        (v4,47,33,1.013333,1.16,1.013333,1.16,17,0,0)
  525.        (v4,48,33,1.013333,0.14667,1.013333,0.14667,17,0,0))))
  526.  (E10,0,0,0,1,1,0.053333,1,15,0,0,1,0,0,0,0,1,1,1,0.066667,0.066667,6,6,0,0.066
  527.   667,6))>
  528.  
  529. <secrule,
  530.     Allow Page Break Within = no,
  531.     Allow Page Break After = yes,
  532.     Autonumber Name =    >
  533.  
  534. <Index, "resource", "database"><Index, "resource", To Named = sectitle>
  535. <Frame,
  536.     Name =            "At Anchor",
  537.     Placement =        At Anchor,
  538.     Width =            6.35 inches,
  539.     Height =        0.153 inches,
  540.     Vertical Alignment =    0.007 inches,
  541.     Diagram =
  542. V4,
  543. (g9,1,0
  544.  (v4,1,0,0.006667,0.066723,6.333333,0.066611,17,2,0)
  545.  (E10,0,0,0,1,1,0.053333,1,15,0,0,1,0,0,0,0,0,1,1,0.066667,0.066667,6,6,0,0.066
  546.   667,6))>
  547.  
  548. <p1para,
  549.     Alignment =        Both,
  550.     Font =            F3,
  551.     Allow Page Break After = yes>
  552.  
  553. <F8>Introduction<Tab><F4>13.1<F0><#04>Users need a way to specify 
  554. preferences for various user interface values<SP>(for example, colors, 
  555. fonts, title strings, and so forth). Applications need a<SP>consistent 
  556. method for determining the default interface values that are specific<SP>to 
  557. them. It is also useful if application interface values can be modified 
  558. by users without changes to the program code. For example, this capability 
  559. can make<SP>it easy to change the color scheme of a user interface. 
  560. In CLX, such interface<SP>values are referred to as <F2>resources<F0>. 
  561. CLX defines functions for storing and<SP>retrieving interface resources 
  562. from a resource database. A user can store<SP>various user interface 
  563. values as resources in a resource database; a CLX<SP>application can 
  564. then read these resource values and modify its user interface<SP>accordingly.
  565.  
  566. <"note",
  567.     Top Margin =        0.15 inches,
  568.     Bottom Margin =        0.23 inches>
  569.  
  570. <Tab-><HR>
  571. <Index, "server", "resource"><F4><Index, "resource", "server">NOTE: <F0>The general 
  572. term <F2>resource<F0> refers to any application user interface value<SP>store
  573. d in a resource database. The term <F2>server resource<F0> is used 
  574. more<SP>specifically to refer to the types of objects allocated by 
  575. an X server and<SP>referenced by clients (for example, windows, fonts, 
  576. graphics contexts, and so forth).<HR>
  577. <Tab->
  578.  
  579. <p1rule>
  580.  
  581. <Index, "resource", "name"><Index, "resource", "binding", To Named = p1rule>
  582. <Frame,
  583.     Name =            p1rule,
  584.     Placement =        At Anchor,
  585.     Width =            6.35 inches,
  586.     Height =        0.153 inches,
  587.     Vertical Alignment =    0.007 inches,
  588.     Shared Contents =    yes>
  589.  
  590. <p1stacked,
  591.     Font =            F3,
  592.     Left Tab =        -1.70/0 inches>
  593.  
  594. <F8>Resource <Tab><F4>13.2<F0><#04>Conceptually, a resource database 
  595. is a set of resource name<#1e>value<F4><FJ>
  596.  
  597. <p1para,
  598.     Alignment =        Both,
  599.     Font =            F3,
  600.     Allow Page Break After = yes>
  601.  
  602. <F8>Bindings<Tab><F0>pairs (or<SP><F2>resource bindings<F0>). 
  603. The name in a resource binding is a list that is <Index, "attribute name"><Index, "path list">
  604. the<SP>concatenation of a <F2>path list<F0> and an <F2>attribute 
  605. name<F0>.
  606.  
  607. <para>
  608.  
  609. A path list is a list of symbols (or strings) that corresponds to 
  610. a path<SP>through a tree<#1e>structured hierarchy. For example, the 
  611. path: 
  612.  
  613. <F9>'(top middle bottom)<F0><SP>
  614.  
  615. corresponds to a three<#1e>level hierarchy in which <F9>middle<F0> 
  616. is the child of <F9>top<F0>, and<SP><F9>bottom<F0> is the child 
  617. of <F9>middle<F0>. 
  618.  
  619. Typically, the path of a resource name<SP>corresponds to a path in 
  620. a hierarchy of windows, and each symbol/string names a<SP>window in 
  621. the hierarchy. However, the first element of the path can also<SP>represent 
  622. the overall name of the entire program, and subsequent path elements<SP>can 
  623. refer to an application<#1e>specific hierarchy of resource names not 
  624. strictly<SP>related to windows. In addition, a resource name can contain 
  625. a<SP>partially<#1e>specified path list. The asterisk symbol (*) is 
  626. a wildcard that can correspond<SP>to any sequence of levels in the 
  627. hierarchy (including the null sequence). For<SP>example, the path: 
  628.  
  629. <F9>'(top * bottom)<F0> 
  630.  
  631. corresponds to a hierarchy of two or more<SP>levels in which <F9>top<F0> 
  632. is at the top level and <F9>bottom<F0> is at the bottom level. An<SP>element 
  633. of a path list can be the name of an individual window or the name 
  634. of a<SP>class of windows.
  635.  
  636. <para,
  637.     Bottom Margin =        0.13 inches>
  638.  
  639. <|,"13<#1e>162">The final element of a resource name list is an attribute name. 
  640. This<SP>symbol (or string) identifies a specific attribute of the 
  641. object(s) named<SP>by the preceding path list. The attribute name 
  642. can also be the symbol * or<SP>the string <#7f>*", in which case the 
  643. resource name refers to all attributes of<SP>the path object(s). However, 
  644. this form of resource name is rarely useful.
  645.  
  646. Some examples of resource bindings are shown below. In these examples, 
  647. assume that <F9>mail<F0> is the resource name of a mail reading 
  648. application. <F9>mail<F0> uses<SP>a window of the class <F9>button<F0> 
  649. whose name is <F9>reply<F0>.<Index, "resource", "binding", "examples">
  650.  
  651. <t3head>
  652.  
  653. <F4>Resource Name<Tab>Resource Value 
  654.  
  655. <t3>
  656.  
  657. <F9>(mail screen<#1e>1 reply background)<Tab>'green 
  658.  
  659. <F9>(mail * background)<Tab>'red 
  660.  
  661. <F9>(* button background)<Tab>'blue <HR>
  662.  
  663. <para>
  664.  
  665. These resource bindings specify the following:
  666.  
  667. <bullet>
  668.  
  669. <F10>w<Tab><F0>The <F9>background<F0> attribute resource of <F9>mail<F2> 
  670. <F0>application<F2>'<F0>s<SP><F9>reply<F0> button has the value 
  671. of <F9>green<F0> on <F9>screen<#1e>1<F0>.
  672.  
  673. <F10>w<Tab><F0>The <F9>background<F0> attribute for<SP>the rest 
  674. of the <F9>mail<F0> application is always <F9>red<F0> on all screens.
  675.  
  676. <F10>w<Tab><F0>In<SP>general, the <F9>background<F0> attribute 
  677. for all <F9>button<F0> windows is <F9>blue<F0>.
  678.  
  679. <p1rule>
  680.  
  681. <Index, "resource", "database", To Named = p1rule>
  682. <Frame,
  683.     Name =            p1rule,
  684.     Placement =        At Anchor,
  685.     Width =            6.35 inches,
  686.     Height =        0.153 inches,
  687.     Vertical Alignment =    0.007 inches,
  688.     Shared Contents =    yes>
  689.  
  690. <p1stacked,
  691.     Font =            F3,
  692.     Left Tab =        -1.70/0 inches>
  693.  
  694. <F8>Basic Resource<Tab><F4>13.3<F0><#04>A <F4>resource<#1e>database<F0> 
  695. structure is a CLX object that represents a set<FJ>
  696.  
  697. <p1stacked,
  698.     Left Tab =        -1.60/0 inches>
  699.  
  700. <F8>Database<F0><Tab><F3>of resource<SP>bindings. The following 
  701. paragraphs describe the CLX functions<FJ>
  702.  
  703. <p1para,
  704.     Bottom Margin =        0.13 inches,
  705.     Alignment =        Both,
  706.     Font =            F3,
  707.     Allow Page Break After = yes>
  708.  
  709. <F8>Functions<Tab><F0>used to:<F8> 
  710.  
  711. <bullet,
  712.     Bottom Margin =        0.13 inches>
  713.  
  714. <F10>w<Tab><F0>Create a resource database
  715.  
  716. <F10>w<Tab><F0>Add a resource binding
  717.  
  718. <F10>w<Tab><F0>Remove a resource binding
  719.  
  720. <F10>w<Tab><F0>Merge two resource databases
  721.  
  722. <bullet>
  723.  
  724. <F10>w<Tab><F0>Map a function over the contents of a resource database
  725.  
  726. <syntax0>
  727.  
  728. make<#1e>resource<#1e>database<F3><Tab>Function<Index, Doc = operations, "xlib:make<#1e>resource<#1e>database", Sort String = "make<#1e>resource<#1e>database">
  729.  
  730. <return>
  731.  
  732. <Tab><F3>Returns:<HR>
  733.  <F2>resource<#1e>database<F3> <#1f> Type <F0>resource<#1e>database<F3>.
  734.  
  735. <para>
  736.  
  737. Returns an empty resource database.
  738.  
  739. <syntax>
  740.  
  741. add<#1e>resource<F3> <F2>database name<#1e>list value<F3><Tab>Function<Index, Doc = operations, "xlib:add<#1e>resource", Sort String = "add<#1e>resource">
  742.  
  743. <para>
  744.  
  745. Adds the resource binding specified by <F2>name<#1e>list<F0> and <F2>value
  746. <F0> to the given<SP><F2>database<F0>. Only one value can be associated 
  747. with the <F2>name<#1e>list<F0> in the<SP><F2>database<F0>. This 
  748. function replaces any value previously associated with the<SP><F2>name<#1e>lis
  749. t<F0>.
  750.  
  751. <arg>
  752.  
  753. database<F3> <#1f> The <F4>resource<#1e>database<F3> for the new 
  754. resource binding.
  755.  
  756. name<#1e>list<F3> <#1f> A list containing strings or symbols specifying 
  757. the name for the<SP>resource binding.
  758.  
  759. value<F3> <#1f> The value associated with the <F0>name<#1e>list<F3> 
  760. in the resource binding. This can be<SP>an object of any type.
  761.  
  762. <syntax>
  763.  
  764. <|,"13<#1e>163">delete<#1e>resource<F3> <F2>database name<#1e>list<F3><Tab>Function<Index, Doc = operations, "xlib:delete<#1e>resource", Sort String = "delete<#1e>resource">
  765.  
  766. <para>
  767.  
  768. Removes the resource binding specified by <F2>name<#1e>list<F0> 
  769. from the given <F2>database<F0>.
  770.  
  771. <arg>
  772.  
  773. database<F3> <#1f> The <F4>resource<#1e>database<F3> containing 
  774. the resource binding.
  775.  
  776. name<#1e>list<F3> <#1f> A list containing strings or symbols specifying 
  777. the name for the<SP>deleted resource binding.
  778.  
  779. <syntax>
  780.  
  781. map<#1e>resource<F3> <F2>database function<F3> &rest <F2>args<Tab><F3>Func
  782. tion<Index, Doc = operations, "xlib:map<#1e>resource", Sort String = "map<#1e>resource">
  783.  
  784. <para>
  785.  
  786. Calls the function for each resource binding in the <F2>database<F0>. 
  787. For each<SP>resource binding consisting of a <F2>name<#1e>list<F0> 
  788. and a <F2>value<F0>, the form<FJ>
  789. (<F4>apply<F0> <F2>function name<#1e>list value args<F0>) is executed.<SP>
  790.  
  791. <arg>
  792.  
  793. database<F3> <#1f> A <F4>resource<#1e>database<F3>.
  794.  
  795. function<F3> <#1f> A <F4>function<F3> object or function symbol.
  796.  
  797. args<F3> <#1f> A list of arguments to the <F0>function<F3>.
  798.  
  799. <syntax0>
  800.  
  801. merge<#1e>resources<F3> <F2>from<#1e>database to<#1e>database<F3><Tab>Functi
  802. on<Index, Doc = operations, "xlib:merge<#1e>resources", Sort String = "merge<#1e>resources">
  803.  
  804. <return>
  805.  
  806. <Tab><F3>Returns:<HR>
  807.  <F2>to<#1e>database<F3> <#1f>Type <F0>resource<#1e>database<F3>.
  808.  
  809. <para>
  810.  
  811. Merges the contents of the <F2>from<#1e>database<F0> with the <F2>to<#1e>dat
  812. abase<F0>. <F4>map<#1e>resource<F0><SP>invokes <F4>add<#1e>resource<F0> 
  813. in order to add each resource binding in the<SP><F2>from<#1e>database<F0> 
  814. to the <F2>to<#1e>database<F0>. The updated <F2>to<#1e>database<F0> 
  815. is returned.
  816.  
  817. <arg>
  818.  
  819. from<#1e>database<F3> <#1f> The <F4>resource<#1e>database<F3> from 
  820. which resource bindings are read.
  821.  
  822. to<#1e>database<F3> <#1f> The <F4>resource<#1e>database<F3> to 
  823. which resource bindings are added.
  824.  
  825. <p1rule>
  826.  
  827. <Index, "resource", "accessing", To Named = p1rule>
  828. <Frame,
  829.     Name =            p1rule,
  830.     Placement =        At Anchor,
  831.     Width =            6.35 inches,
  832.     Height =        0.153 inches,
  833.     Vertical Alignment =    0.007 inches,
  834.     Shared Contents =    yes>
  835.  
  836. <p1stacked,
  837.     Font =            F3,
  838.     Left Tab =        -1.70/0 inches>
  839.  
  840. <F8>Accessing<Tab><F4>13.4<F0><#04>The power and flexibility of 
  841. resource management is the result of the<F4><FJ>
  842.  
  843. <p1stacked,
  844.     Left Tab =        -1.60/0 inches>
  845.  
  846. <F8>Resource <F0><Tab><F3>way<SP>resource values in a resource 
  847. database are accessed. A resource binding
  848.  
  849. <p1para,
  850.     Alignment =        Both,
  851.     Font =            F3,
  852.     Allow Page Break After = yes>
  853.  
  854. <F8>Values<Tab><F0>binding stored<SP>in the database generally contains 
  855. only a partial resource name consisting of a<SP>mixture of name and 
  856. class identifiers and wildcard elements (that is, *). To look<SP>up 
  857. a resource value, an application program starts with two resource 
  858. name lists<SP>of the same length containing no wildcard elements <#1f> 
  859. a <F2>complete resource<SP>name<F0> and a <F2>complete resource 
  860. class<F0>. The lookup algorithm returns the<SP>value for the resource 
  861. binding whose resource name is the closest match to the<SP>complete 
  862. name and class given. The definition of <F2>closest match<F0> takes 
  863. into<SP>account the top<#1e>down, parent<#1e>child hierarchy of resource 
  864. names and also the<SP>distinction between individual names and class 
  865. names.
  866.  
  867. <p2rule>
  868.  
  869. <Index, "complete resource name"><Index, "complete resource class"><Index, "resource", "complete name"><Index, "resource", "complete class">
  870. <Frame,
  871.     Name =            p2rule,
  872.     Placement =        At Anchor,
  873.     Width =            4.75 inches,
  874.     Height =        0.15 inches,
  875.     Vertical Alignment =    0.007 inches,
  876.     Shared Contents =    yes>
  877.  
  878. <p2stacked,
  879.     Font =            F3>
  880.  
  881. <Tab><F4>Complete Names<Tab>13.4.1<F0><#04>A resource binding contains 
  882. a resource name list that can contain
  883.  
  884. <p2para,
  885.     Alignment =        Both,
  886.     Font =            F3,
  887.     Allow Page Break Within = yes,
  888.     Allow Page Break After = yes,
  889.     TOC Doc Name =        >
  890.  
  891. <Tab><F4>and Classes<Tab><F0>names,<SP>class names, or a mixture 
  892. of both. A class name is a symbol or string that<SP>represents a group 
  893. of related objects. The set of names used as class names are<SP>not 
  894. specified by CLX. Instead, class names are defined by agreement between 
  895. those who<SP>use class names when creating resource bindings (that 
  896. is, users) and those who use<SP>class names when accessing resource 
  897. values (that is, application programmers).<F4> 
  898.  
  899. <para>
  900.  
  901. In order to access a value in a resource database, an application 
  902. uses a key<SP>consisting of two items: a <F2>complete resource name<F0> 
  903. and a <F2>complete resource<SP>class<F0>. A complete resource name 
  904. is a resource name list containing no wildcard<SP>elements. A complete 
  905. resource class is a list of exactly the same form. The<SP>distinction 
  906. between a complete resource name and a complete resource class lies<SP>in 
  907. how they are used to access resource bindings. The elements of a complete<SP>re
  908. source name are interpreted as names of individual objects; the elements 
  909. of a<SP>complete resource class are interpreted as names of object 
  910. classes. The<SP>complete resource name and class lists used in a resource 
  911. database access must<SP>have the same length.
  912.  
  913. <|,"13<#1e>164">Like any resource name list, a complete resource name consists 
  914. of a path list<SP>and an attribute name. The first path list element 
  915. is typically a symbol (or<SP>string) identifying the application as 
  916. a whole. The second element can be a<SP>screen root identifier. Subsequent 
  917. elements can be identifiers for each<SP>ancestor window of an application 
  918. window. Thus, a path list typically<SP>identifies a specific window 
  919. by tracing a path to it through the application<SP>window hierarchy. 
  920. The final element of a complete resource name (its<SP>attribute name) 
  921. is typically the name of a specific attribute of the window<SP>given 
  922. by the path list (for example, <F9>'background<F0>). An attribute 
  923. name can refer<SP>to a feature associated with the window by the application 
  924. but not by the X<SP>server (for example, a font identifier). Similarly, 
  925. a complete resource class<SP>typically represents a path to a window 
  926. in the application window hierarchy and a<SP>specific window attribute. 
  927. However, a complete resource class contains the<SP>class name for 
  928. each window and for the window attribute. 
  929.  
  930. For instance, in the previous example, the <F9>mail<F0> application 
  931. can attempt to look<SP>up the value of the <F9>background<F0> resource 
  932. for the <F9>reply button<F0> window by using the<SP>following complete 
  933. resource name:
  934.  
  935. <t3,
  936.     Bottom Margin =        0.15 inches>
  937.  
  938. <F9>(mail screen<#1e>1 reply background)
  939.  
  940. <para>
  941.  
  942. and the following complete resource class:
  943.  
  944. <t3,
  945.     Bottom Margin =        0.15 inches>
  946.  
  947. <F9>(application root button fill)
  948.  
  949. <para>
  950.  
  951. This complete resource name contains a path list identifying the reply 
  952. button<SP>window <#1f> <F9>(mail screen<#1e>1 reply)<F0> <#1f> and 
  953. an attribute name for the window<SP>background. The corresponding 
  954. resource class contains the class names for the<SP>same path list 
  955. and window attribute.
  956.  
  957. <p2rule>
  958.  
  959. <Index, "resource", "matching">
  960. <Frame,
  961.     Name =            p2rule,
  962.     Placement =        At Anchor,
  963.     Width =            4.75 inches,
  964.     Height =        0.15 inches,
  965.     Vertical Alignment =    0.007 inches,
  966.     Shared Contents =    yes>
  967.  
  968. <p2stacked,
  969.     Font =            F3>
  970.  
  971. <Tab><F4>Matching<Tab>13.4.2<F0><#04>The resource lookup algorithm 
  972. searches a specified resource data<F4><FJ>
  973.  
  974. <p2para,
  975.     Alignment =        Both,
  976.     Font =            F3,
  977.     Allow Page Break Within = yes,
  978.     Allow Page Break After = yes,
  979.     TOC Doc Name =        >
  980.  
  981. <F4> <Tab>Resource Names<Tab><F0>base and returns<SP>the value for 
  982. the resource binding whose resource name is the closest match to a<SP>given 
  983. complete resource name and class. The intent of the lookup algorithm 
  984. is<SP>to formalize an intuitive notion of the closest match.
  985.  
  986. <para>
  987.  
  988. Precedence is given to a match which begins <F2>higher<F0> in the 
  989. parent<#1e>child contact<SP>hierarchy. This allows a resource binding 
  990. with a partial name to define a<SP>resource value shared by all members 
  991. of a window subtree. For example, suppose the<SP>resource database 
  992. contained the following resource bindings:
  993.  
  994. <t3head>
  995.  
  996. <F4>Resource Name<Tab>Resource Value
  997.  
  998. <t3>
  999.  
  1000. <F9>(mail * background)<Tab>'red
  1001.  
  1002. <t3,
  1003.     Bottom Margin =        0.15 inches>
  1004.  
  1005. <F9>(* reply background)<Tab>'blue
  1006.  
  1007. <para,
  1008.     Bottom Margin =        0.13 inches>
  1009.  
  1010. Suppose an application program searched by using the following complete 
  1011. resource name:
  1012.  
  1013. <t3,
  1014.     Bottom Margin =        0.15 inches>
  1015.  
  1016. <F9>(mail screen<#1e>1 reply background)
  1017.  
  1018. <para,
  1019.     Bottom Margin =        0.13 inches>
  1020.  
  1021. then the closest matching value returned would be <F9>'red<F0>.
  1022.  
  1023. Precedence is given to the more specific match. A name match is more 
  1024. specific<SP>than a class match. Either a name or class match is more 
  1025. specific than a<SP>wildcard match. For example, suppose the resource 
  1026. database contained the following<SP>resource bindings:
  1027.  
  1028. <t3head>
  1029.  
  1030. <F4>Resource Name<Tab>Resource Value
  1031.  
  1032. <t3>
  1033.  
  1034. <F9>(mail * background)<Tab>'red
  1035.  
  1036. <t3,
  1037.     Bottom Margin =        0.15 inches>
  1038.  
  1039. <|,"13<#1e>165"><F9>(mail * fill)<Tab>'blue
  1040.  
  1041. <para,
  1042.     Bottom Margin =        0.13 inches>
  1043.  
  1044. Suppose an application program searched by using the following complete 
  1045. resource name<SP>and complete resource class:
  1046.  
  1047. <t3>
  1048.  
  1049. <F9>(mail screen<#1e>1 reply background)
  1050.  
  1051. <t3,
  1052.     Bottom Margin =        0.15 inches>
  1053.  
  1054. <F9>(application root button fill)
  1055.  
  1056. <para,
  1057.     Bottom Margin =        0.13 inches>
  1058.  
  1059. then the closest matching value returned would be <F9>'red<F0>. 
  1060. However, suppose the<SP>resource database contained the following 
  1061. resource bindings:
  1062.  
  1063. <t3head>
  1064.  
  1065. <F4>Resource Name<Tab>Resource Value
  1066.  
  1067. <t3>
  1068.  
  1069. <F9>(mail * background)<Tab>'red
  1070.  
  1071. <t3,
  1072.     Bottom Margin =        0.15 inches>
  1073.  
  1074. <F9>(mail * button background)<Tab>'blue
  1075.  
  1076. <para>
  1077.  
  1078. then the closest matching value returned would be <F9>'blue<F0>.
  1079.  
  1080. <p2rule>
  1081.  
  1082. <Frame,
  1083.     Name =            p2rule,
  1084.     Placement =        At Anchor,
  1085.     Width =            4.75 inches,
  1086.     Height =        0.15 inches,
  1087.     Vertical Alignment =    0.007 inches,
  1088.     Shared Contents =    yes>
  1089.  
  1090. <p2stacked,
  1091.     Font =            F3>
  1092.  
  1093. <Tab><F4>Resource<Tab>13.4.3<F0><#04>The following paragraphs describe 
  1094. the CLX functions used to return
  1095.  
  1096. <p2para,
  1097.     Alignment =        Both,
  1098.     Font =            F3,
  1099.     Allow Page Break Within = yes,
  1100.     Allow Page Break After = yes,
  1101.     TOC Doc Name =        >
  1102.  
  1103. <Tab><F4>Access Functions<Tab><F0>a value from a resource<SP>database.
  1104.  
  1105. <syntax0>
  1106.  
  1107. get<#1e>resource<F3> <F2>database attribute<#1e>name attribute<#1e>class 
  1108. path<#1e>name path<#1e>class<F3><Tab>Function<Index, Doc = operations, "xlib:get<#1e>resources", Sort String = "get<#1e>resources">
  1109.  
  1110. <return>
  1111.  
  1112. <Tab><F3>Returns:<HR>
  1113.   <F2>value <F3><#1f> Type <F0>t<F3>.
  1114.  
  1115. <para,
  1116.     Bottom Margin =        0.13 inches>
  1117.  
  1118. Returns the value of the resource binding in the <F2>database<F0> 
  1119. whose resource<SP>name most closely matches the complete resource 
  1120. name/class given by the<SP><F2>path<#1e>name<F0>, <F2>path<#1e>class<F0>, 
  1121. <F2>attribute<#1e>name<F0>, and <F2>attribute<#1e>class<F0>. The 
  1122. lookup<SP>algorithm implements the precedence rules described previously 
  1123. to<SP>determine the closest match. When comparing name elements, case 
  1124. is<SP>significant only if both elements are strings; otherwise, element 
  1125. matching<SP>is case<#1e>insensitive.
  1126.  
  1127. <arg>
  1128.  
  1129. database<F3> <#1f> A <F4>resource<#1e>database<F3>.
  1130.  
  1131. attribute<#1e>name<F3> <#1f> A string or symbol giving an attribute 
  1132. name from a complete<SP>resource name.
  1133.  
  1134. attribute<#1e>class<F3> <#1f> A string or symbol giving an attribute 
  1135. class name from a complete<SP>resource class.
  1136.  
  1137. path<#1e>name <F3><#1f> The path list from a complete resource name. <F0>path
  1138. <#1e>name<F3> and<F0> path<#1e>class<F3><SP>must have the same 
  1139. length.
  1140.  
  1141. path<#1e>class<F3> <#1f> The path list from a complete resource class. <F0>pa
  1142. th<#1e>name <F3>and<F0> path<#1e>clas<F3>s<SP>must have the same 
  1143. length.
  1144.  
  1145. <syntax0>
  1146.  
  1147. get<#1e>search<#1e>table<F3> <F2>database path<#1e>name path<#1e>class<F3><Tab>
  1148. Function<F0><Index, "resource", "search table"><Index, Doc = operations, "xlib:get<#1e>search<#1e>table", Sort String = "get<#1e>search<#1e>table">
  1149.  
  1150. <return>
  1151.  
  1152. <Tab><F3>Returns:<HR>
  1153.   <F2>search<#1e>table<F3> <#1f> Type <F0>list<F3>.
  1154.  
  1155. <para>
  1156.  
  1157. Returns a table containing the subset of the <F2>database<F0> that 
  1158. matches the<SP><F2>path<#1e>name<F0> and <F2>path<#1e>class<F0>. 
  1159. Resources using the same <F2>path<#1e>name<F0> and <F2>path<#1e>class<F0><SP>
  1160. can be accessed much more efficiently by using this table as an<SP>argument 
  1161. to <F4>get<#1e>search<#1e>resource<F0>.
  1162.  
  1163. <arg>
  1164.  
  1165. database<F3> <#1f> A <F4>resource<#1e>database<F3>.
  1166.  
  1167. path<#1e>name <F3><#1f> The path list from a complete resource name.<F0> 
  1168. path<#1e>name<F3> and<F0> path<#1e>class<SP><F3>must have the same 
  1169. length.
  1170.  
  1171. path<#1e>class<F3> <#1f> The path list from a complete resource class. <F0>pa
  1172. th<#1e>name<F3> and<F0> path<#1e>class<F3><SP>must have the same 
  1173. length.
  1174.  
  1175. <syntax0>
  1176.  
  1177. <|,"13<#1e>166">get<#1e>search<#1e>resource<F3> <F2>table attribute<#1e>name 
  1178. attribute<#1e>class<F3><Tab>Function<Index, Doc = operations, "xlib:get<#1e>search<#1e>resource", Sort String = "get<#1e>search<#1e>resource">
  1179.  
  1180. <return>
  1181.  
  1182. <Tab><F3>Returns:<HR>
  1183.  <F2> value<F3> <#1f> Type <F0>t<F3>.
  1184.  
  1185. <para>
  1186.  
  1187. Returns the value of the resource binding in the search <F2>table<F0> 
  1188. that most closely matches the <F2>attribute<#1e>name<F0> and <F2>attribute<#1e>
  1189. class<F0>. The <F2>table<F0> is<SP>computed by <F4>get<#1e>search<#1e>table
  1190. <F0> and represents a set of resource bindings.<SP>The closest match 
  1191. is determined by the same algorithm used in<SP><F4>get<#1e>resource<F0>.
  1192.  
  1193. The following two forms are functionally equivalent:
  1194.  
  1195. <argtable,
  1196.     Left Tab =        0/0.10/1.70/2.50/3/0.75*25 inches>
  1197.  
  1198. <F3><Tab><F9>(get<#1e>resource<HR>
  1199. <Tab>  database attribute<#1e>name attribute<#1e>class path<#1e>name 
  1200. path<#1e>class)
  1201.  
  1202. <argtable,
  1203.     Bottom Margin =        0.15 inches,
  1204.     Left Tab =        0/0.10/1.70/2.50/3/0.75*25 inches>
  1205.  
  1206. <F3><Tab><F9>(get<#1e>search<#1e>resource<HR>
  1207. <Tab> (get<#1e>search<#1e>table database path<#1e>name path<#1e>class)<HR>
  1208. <Tab> attribute<#1e>name attribute<#1e>class)
  1209.  
  1210. <para>
  1211.  
  1212. However, the hard part of the search is done by <F4>get<#1e>search<#1e>table
  1213. <F0>.<SP>Looking up values for several resource attributes that share 
  1214. the same<SP>path list can be done much more efficiently with calls 
  1215. to<SP><F4>get<#1e>search<#1e>resource<F0>.
  1216.  
  1217. <arg>
  1218.  
  1219. table<F3> <#1f> A search table returned by <F4>get<#1e>search<#1e>table<F3>.
  1220.  
  1221. attribute<#1e>name<F3> <#1f> A string or symbol giving an attribute 
  1222. name from a complete<SP>resource name.
  1223.  
  1224. attribute<#1e>class<F3> <#1f> A string or symbol giving an attribute 
  1225. class name from a complete<SP>resource class.
  1226.  
  1227. <p1rule>
  1228.  
  1229. <Index, "resource", "database", "files">
  1230. <Frame,
  1231.     Name =            p1rule,
  1232.     Placement =        At Anchor,
  1233.     Width =            6.35 inches,
  1234.     Height =        0.153 inches,
  1235.     Vertical Alignment =    0.007 inches,
  1236.     Shared Contents =    yes>
  1237.  
  1238. <p1stacked,
  1239.     Font =            F3,
  1240.     Left Tab =        -1.70/0 inches>
  1241.  
  1242. <F8>Resource <Tab><F4>13.5<F0><#04>X users and application programs 
  1243. can save resource bindings in a file,<FJ>
  1244.  
  1245. <p1para,
  1246.     Alignment =        Both,
  1247.     Font =            F3,
  1248.     Allow Page Break After = yes>
  1249.  
  1250. <F8>Database Files<Tab><F0>using a<SP>standard file format shared 
  1251. by all X clients. The following paragraphs describe the CLX<SP>functions 
  1252. used to convert between the standard external format of resource files<SP>and 
  1253. the internal resource<#1e>database format used by application programs.
  1254.  
  1255. <syntax0>
  1256.  
  1257. read<#1e>resources<F3> <F2>database pathname<F3> &key <F0>:key 
  1258. :test :test<#1e>not<F3><Tab>Function<Index, Doc = operations, "xlib:read<#1e>resources", Sort String = "read<#1e>resources">
  1259.  
  1260. <return>
  1261.  
  1262. <Tab><F3>Returns:<HR>
  1263.   <F2>database<F3> <#1f> Type <F0>resource<#1e>database<F3>.
  1264.  
  1265. <para>
  1266.  
  1267. Reads resource bindings from a resource file in standard X11 format 
  1268. and<SP>merges them with the given resource <F2>database<F0>. The <F4>:key
  1269. <F0> function is called to<SP>convert a file resource value into 
  1270. the value stored in the <F2>database<F0>. By<SP>default, <F4>:key<F0> 
  1271. is <F4>#'identity<F0>. The <F4>:test<F0> and <F4>:test<#1e>not<F0> 
  1272. functions are<SP>predicates that select resource bindings to merge, 
  1273. based on the result of<SP>the <F4>:key<F0> function. For each file 
  1274. resource binding consisting of a<SP><F2>resource<#1e>name<F0> and 
  1275. a <F2>resource<#1e>value<F0>, the <F4>:test<F0> (or <F4>:test<#1e>not
  1276. <F0>) function is<SP>called with the arguments <F2>resource<#1e>name<F0> 
  1277. and (<F4>funcall<F0> <F2>key resource<#1e>value<F0>).
  1278.  
  1279. <arg>
  1280.  
  1281. database<F3> <#1f> The <F4>resource<#1e>database<F3> to merge.
  1282.  
  1283. pathname<F3> <#1f> A pathname for the resource file to read.
  1284.  
  1285. <F4>:key<F3> <#1f> A function used to convert a value from the resource 
  1286. file into a<SP>resource binding value.
  1287.  
  1288. <F4>:test<F3>, <F4>:test<#1e>not<F3> <#1f> Functions used to select 
  1289. which resource bindings from the resource file<SP>are merged with 
  1290. the <F0>database<F3>.
  1291.  
  1292. <syntax>
  1293.  
  1294. <|,"13<#1e>167">write<#1e>resources<F3> <F2>database pathname<F3> &key <F0>:write 
  1295. :test :test<#1e>not<F3><Tab>Function<Index, Doc = operations, "xlib:write<#1e>resources", Sort String = "write<#1e>resources">
  1296.  
  1297. <para>
  1298.  
  1299. Writes resource bindings found in the <F2>database<F0> to the file 
  1300. given by the<SP><F2>pathname<F0>. The output file is written in 
  1301. the standard X11 format. The<SP><F4>:write<F0> function is used 
  1302. for writing resource values; the default is <F4>#'princ<F0>.<SP>The <F4>:wri
  1303. te<F0> function is passed two arguments: a <F2>resource<#1e>value<F0> 
  1304. and a <F2>stream<F0>. The <F4>:test<F0> and <F4>:test<#1e>not<F0> 
  1305. functions are predicates which select resource<SP>bindings to write. 
  1306. For each resource binding consisting of a <F2>resource<#1e>name<F0><SP>and 
  1307. a <F2>resource<#1e>value<F0>, the <F4>:test<F0> (or <F4>:test<#1e>not
  1308. <F0>) function is called with the<SP>arguments <F2>resource<#1e>name<F0> 
  1309. and <F2>resource<#1e>value<F0>.
  1310.  
  1311. <arg>
  1312.  
  1313. database<F3> <#1f> The <F4>resource<#1e>database<F3> to write.
  1314.  
  1315. pathname<F3> <#1f> A pathname of the file to write.
  1316.  
  1317. <F4>:write<F3> <#1f> A function for writing resource values.
  1318.  
  1319. <F4>:test<F3>, <F4>:test<#1e>not<F3> <#1f> Functions used to select 
  1320. which resource bindings from the resource file<SP>are merged with 
  1321. the <F0>database<F3>.
  1322.  
  1323. <newpage>
  1324.  
  1325. <|,"13<#1e>168">
  1326.