home *** CD-ROM | disk | FTP | other *** search
/ Power-Programmierung / CD2.mdf / c / compcomp / crefcard / c_refere.nce < prev    next >
Encoding:
Text File  |  1987-04-08  |  23.1 KB  |  732 lines

  1. --------------------------------------------------------------------------------
  2. C REFERENCE CARD           LATTICE C                 GARY COOMBS
  3. --------------------------------------------------------------------------------
  4.  
  5. ESCAPE CHARACTERS
  6.             newline          NL (LF)          \n
  7.             tab           HT          \t
  8.             backspace          BS          \b
  9.             carriage return   CR          \r
  10.             form feed          FF          \f
  11.             backslash          \           \\
  12.             single quote      '               \'
  13.             double quote      "               \"
  14.             bit pattern       ddd          \ddd
  15. -------------------------------------------------------------------------------
  16. PRINTF() CONVERSIONS AS RELATED TO STRINGS
  17.  
  18. |%10s|            |hello, world|
  19. |%-10s|         |hello, world|
  20. |%20s|            |         hello, world|
  21. |%-20s|         |hello, world     |
  22. |%20.10s|        |           hello, wor|
  23. |%-20.10s|        |hello, wor|
  24. -------------------------------------------------------------------------------
  25. STORAGE CLASSES
  26.  
  27. I.  Keywords: auto, external, static, register
  28.  
  29. II.  General Comments:
  30.  
  31.       The storage class of a variable determines its scope and how long the
  32. variable persists.  Storage class is determined by where the variable is defined
  33. and by the associated keyword.    Variables defined outside a function are
  34. external and have global scope.  Variables declared inside a function are
  35. automatic and local unless one of the other keywords is used.  External
  36. variables defined above a function are known to it even if not declared
  37. internally.
  38.       'auto' and 'register' variables are created each time the function
  39. containing them is evoked, and they vanish each time the function finishes.  The
  40. others last for the duration of the whole program.
  41.  
  42. III.  Properties:
  43.  
  44. STORAGE CLASS      KEYWORD     DURATION        SCOPE
  45. automatic      auto          temporary     local
  46. register      register    temporary     local
  47. static          static      persistent    local
  48. ................................................................................
  49. external      extern      persistent    global (all files)
  50. external static   static      persistent    global (one file)
  51.  
  52. Those above the dotted line are declared inside a function.
  53. Those below the line are defined outside a function.
  54. --------------------------------------------------------------------------------
  55. BASIC DATA TYPES
  56.  
  57. Keywords:  int, long, short, unsigned, char, float, double
  58.  
  59. Signed Integers --- These can have positive or negative values.
  60. int:  the basic integer type for a given system
  61. long or long int:  32 bit integer
  62. short or short int:  16 bit integer
  63.  
  64. Unsigned Integers  --- zero or positive values only
  65. unsigned int:, unsigned long:, unsigned short:
  66. char:  symbols 8 bits long
  67.  
  68. Floating Point    --- can have positive or negative values
  69. float:    basic floating point 32 bits
  70. double or long float:  64 bits
  71. -------------------------------------------------------------------------------
  72. IF STATEMENT FOR MAKING CHOICES
  73.  
  74. Keywords:  if, else
  75.  
  76. General Comments:
  77.  
  78.       In each of the following forms, the statement can be either a simple
  79. statement or a compound statement.  A "true" expression, more generally, means
  80. one with a nonzero value.
  81.  
  82. Form 1:
  83.  
  84.       if ( expression )
  85.         statement;
  86.  
  87. The statement is executed if the expression is true.
  88.  
  89. Form 2:
  90.  
  91.       if ( expression )
  92.         statement1;
  93.       else
  94.         statement2;
  95.  
  96. If the expression is true, statement1 is executed, else statement2 is executed.
  97.  
  98. Form 3:
  99.  
  100.       if ( expression1 )
  101.         statement1;
  102.       else if ( expression2 )
  103.         statement2;
  104.       else
  105.         statement3
  106.  
  107. If expression1 is true, then statement1 is executed.  If expression1 is false
  108. but expression2 is true, statement2 is executed.  Otherwise, if both expressions
  109. are false, statement3 is executed.
  110. -------------------------------------------------------------------------------
  111. LOGICAL EXPRESSIONS
  112.  
  113. expression1 && expression2  is true if and only if both expressions are true
  114. expression1 || expression2  is true if either one or both expressions are true
  115. !expression            is true if the expression is false, and vice versa
  116.  
  117. 6 > 2 && 3 == 3         is true
  118. ! ( 6 > 2 && 3 == 3 )        is false
  119. x != 0 && 20/x < t        the second expression is evaluated only if x is
  120.                 nonzero
  121. -------------------------------------------------------------------------------
  122. THE CONDITIONAL OPERATOR
  123.  
  124. ?:  This operator takes three operands, each of which is an expression.  They
  125.     are arranged this way:  expression1 ? expression2 : expression3.  The value
  126.     of the whole expression equals the value of expression2 if expression1 is
  127.     true, and equals the value of expression3 otherwise.
  128.  
  129. ( 5 > 3 ) ? 1 : 2     has the value 1
  130. ( 3 > 5 ) ? 1 : 2     has the value 2
  131. ( a > b ) ? a : b     has the value of the larger of a or b
  132. -------------------------------------------------------------------------------
  133. MULTIPLE CHOICE WITH SWITCH
  134.  
  135. Program control jumps to the statement bearing the vlaue of expression as a
  136. label.    Program flow then proceeds through the remaining statements unless
  137. redirected again.  Bothe expression and labels must have integer values (type
  138. char is included), and the labels must be constants or expressions formed solely
  139. from constants.  If no label matches the expression value, control goes to the
  140. statement labeled default, if present.    Otherwise control passes to the next
  141. statement following the switch statement.
  142.  
  143. Form:
  144.     switch (expression)
  145.       {
  146.       case label1 : statement
  147.       case label2 : statement
  148.       default     : statement
  149.       }
  150. Example:
  151.     switch (letter)
  152.       {
  153.       case 'a' :
  154.       case 'e' : printf("%d is a vowel\n", letter);
  155.       case 'c' :
  156.       case 'n' : printf("%d is in \"cane\"\n", letter);
  157.       default  : printf("Have a nice day.\n");
  158.       }
  159.  
  160. If letter has the value 'a' or 'e', all three messages are printed; 'c' and 'n'
  161. cause the last two to be printed.  Other values print just the last message.
  162. -------------------------------------------------------------------------------
  163. THE WHILE STATEMENT
  164.  
  165. Creates a loop that repeats until the test expression becomes false, or zero.
  166. The while statement is an entry-condition loop; the decision to go through one
  167. more pass of the loop is made before the loop is traversed.  Thus it is possible
  168. that the loop is never traversed.  The statement part of the form can be a
  169. simple statement or a compound statement.
  170.  
  171. Form:
  172.       while ( expression )
  173.         statement
  174.  
  175. The statement portion is repeated until the expression becomes false or zero.
  176.  
  177. Examples:
  178.       while ( n++ < 100 )
  179.         printf("%d %d\n", n, 2*n+1);
  180.  
  181.       while ( fargo < 1000 )
  182.         {
  183.         fargo = fargo + step;
  184.         step = 2 * step;
  185.         }
  186. -------------------------------------------------------------------------------
  187. THE FOR STATEMENT
  188.  
  189. The for statement uses three control expressions, separated by semicolons, to
  190. control a looping process.  The initialize expression is executed once, before
  191. any of the loop statements are executed.  If the test expression is true (or
  192. non-zero), the loop is cycled through once.  Then the update expression is
  193. evaluated, and it is time to check the test expression again.  The for statement
  194. is an entry-condition loop; the decision to go through one more pass of the loop
  195. is made before the loop is traversed.  Thus it is possible that the loop is
  196. never traversed.  The statement part of the form can be a simple statement or a
  197. compound statement.
  198.  
  199. Form:
  200.       for ( initialize; test; update )
  201.         statement;
  202.  
  203. The loop is repeated until test becomes false or zero.
  204.  
  205. Example:
  206.       for ( n = 0; n < 10; n++ )
  207.         printf(" %d %d\n", n, 2*n+1 );
  208. -------------------------------------------------------------------------------
  209. THE DO WHILE STATEMENT
  210.  
  211. The do while statement creates a loop that repeats until the test expression
  212. becomes false or zero.    The do while statement is an exit-condition loop; the
  213. decision to go through one more pass of the loop is made after the loop is
  214. traversed.  Thus the loop must be executed at least once.  The statement part of
  215. the form can be a simple statement or a compound statement.
  216.  
  217. Form:
  218.       do
  219.         statement;
  220.           while ( expression );
  221.  
  222. The statement portion is repeated until the expression becomes false or zero.
  223.  
  224. Example:
  225.       do
  226.         scanf("%d", &number);
  227.           while (number != 20);
  228. -------------------------------------------------------------------------------
  229. PROGRAM JUMPS
  230.  
  231. I.  Keywords: break, continue, goto
  232.  
  233. II.  General Comments:
  234.  
  235.       These three instructions cause program flow to jump from one location of a
  236. program to another location.
  237.  
  238. III.  break
  239.  
  240.       Can be used with any of the three loop forms and with the switch
  241. statement.  It causes program control to skip over the rest of the loop or
  242. switch containing it and to resume with the next command following the loop or
  243. switch.
  244.  
  245. Example:
  246.       switch (number)
  247.         {
  248.         case 4 : printf("That's a good choice.\n");
  249.              break;
  250.         case 5 : printf("That's a fair choice.\n");
  251.              break;
  252.         default: printf("That's a poor choice.\n");
  253.         }
  254.  
  255. IV.  continue
  256.  
  257.       The continue command can be used with any of the three loop forms but not
  258. with a switch.    It causes program control to skip the remaining statements in a
  259. loop.  For a while or for loop, the next loop cycle is started.  For a do while
  260. loop, the exit condition is tested and then, if necessary, the next loop cycle
  261. is started.
  262.  
  263. Example:
  264.       while ((ch = getchar()) != EOF)
  265.         {
  266.         if (ch == ' ')
  267.           continue;
  268.         putchar(ch);
  269.         chcount++;
  270.         }
  271.  
  272. This fragment echoes and counts nonspace characters.
  273.  
  274. IV.  goto
  275.  
  276.       A goto statement causes program control to jump to a statement bearing the
  277. indicated label.  A colon is used to separate a labeled statement from its
  278. label.    Label names follow the rules for variable names.  The labeled statement
  279. can come either before or after the goto.
  280.  
  281. Form:
  282.     goto label;
  283.       . . . .
  284.     label : statement
  285.  
  286. Example:
  287.     top : ch = getchar();
  288.       . . . .
  289.     if (ch != 'y')
  290.       goto top;
  291. -------------------------------------------------------------------------------
  292. POINTER RELATED OPERATORS
  293.  
  294. I.  The Address Operator:
  295.  
  296.       &   When followed by a variable name, gives the address of that
  297.           variable.
  298.  
  299. Example:
  300.       &nurse is the address of the variable nurse.
  301.  
  302. II.  The Indirection Operator:
  303.  
  304.       *   When followed by a pointer, gives the value stored at the
  305.           pointed-to address.
  306.  
  307. Example:
  308.       nurse = 22;
  309.       ptr = &nurse;
  310.       val = *ptr;
  311.  
  312. The net effect is to assign the value 22 to val.
  313. -------------------------------------------------------------------------------
  314. FUNCTIONS
  315.  
  316. I.  Form:
  317.  
  318.       name(argument list)
  319.       argument declarations
  320.       function body
  321.  
  322. The presence of the argument list and declarations is optional.  Variables other
  323. than the arguments are declared within the body, which is bounded by braces.
  324.  
  325. Example:
  326.       diff(x,y)    /* function name and argument list */
  327.       int x,y;    /* declare arguments */
  328.         {        /* begin function body */
  329.         int x;    /* declare local variable */
  330.  
  331.         z = x - y;
  332.         return(z);    /* return result to calling function */
  333.         }        /* end function body */
  334.  
  335. II.  Communicating Values:
  336.  
  337.       Arguments are used to convey values from the calling program to the
  338. function.  If variables 'a' and 'b' have the values 5 and 2, then the call
  339.  
  340.       c = diff(a,b);
  341.  
  342. transmits 5 and 2 to the variables x and y.  The values 5 and 2 are called
  343. actual arguments, and the diff() variables x and y are called formal arguments.
  344.       The keyword 'return' communicates one value from the function to the
  345. calling program.  'c' receives the value of x, which is 3
  346.       A function ordinarily has no effect upon the variables in a calling
  347. program.  Use pointers as arguments to directly effect variables in the calling
  348. program.  This may be necessary if you wish to communicate more than one value
  349. back to the calling program.
  350.  
  351. III.  Function Type:
  352.  
  353.       Functions must have the same type as the value they return.  Functions are
  354. assumed to be of type int.  If a function is of another type, it must be
  355. declared so in the calling program and in the function definition.
  356.  
  357. Example:
  358.     main()
  359.       {
  360.       float q, x, duff();        /* declare in calling program */
  361.       int n;
  362.       . . . . . .
  363.       q = duff(x,n)
  364.       . . . . . .
  365.       }
  366.  
  367.     float duff(u,k)         /* declare in function definition */
  368.     float u;
  369.     int k;
  370.       {
  371.       float tor;
  372.       . . . . . .
  373.       return(tor);            /* returns a float value */
  374.       }
  375. -------------------------------------------------------------------------------
  376. OPERATOR PRIORITIES
  377.  
  378. OPERATORS (from high to low priority)
  379. () { } -> .
  380. ! ~ ++ -- - (type) * & sizeof(all unary)
  381. * / %
  382. + -
  383. << >> (bit shifts)
  384. < <= > >=
  385. == !=
  386. & (bitwise and)
  387. ^ (bitwise not)
  388. d| (bitwise or)
  389. &&
  390. ||
  391. ?:
  392. = += -= *= /* %=
  393. -------------------------------------------------------------------------------
  394. FORMATS FOR printf()
  395.  
  396. printf(controlstring, expression1, expression2, . . . );
  397.  
  398.       %d - print an integer
  399.       %u - print an unsigned integer
  400.       %f - print a floating-point number
  401.       %e - print floating-point in exponential form
  402.       %g - chooses %e or %f depending on number size
  403.       %c - print a character
  404.       %s - print a string
  405.       %o - print unsigned octal integer
  406.       %x - print unsigned hexadecimal integer
  407.  
  408. Modifiers may be placed after the % to indicate field width, precision,
  409. justification, and if an int is long:
  410.  
  411.       %10d    - print an integer in a field 10 spaces wide
  412.       %5.2f - print 2 decimal places; field width = 5
  413.       %-6d    - print an integer left justified
  414.       %1d    - print a long integer
  415. -------------------------------------------------------------------------------
  416. FORMATS FOR scanf()
  417.  
  418. The scanf() works much like printf().  Here are the main differences:
  419.  
  420. 1.  The arguments following the control string must be addresses.  They can use
  421.     the address operator, as in &n, or they can be array names, which are
  422.     pointers to the first array element.
  423. 2.  There is no %g option.
  424. 3.  Both %e and %f work the same, accepting either format.
  425. 4.  A %b conversion specification exists for reading short integers.
  426.  
  427. Example:
  428.       int n;
  429.       char title[20];
  430.       scanf("%d %d", &n, title);
  431. -------------------------------------------------------------------------------
  432. STRUCTURES
  433.  
  434. A structure is a data object capable of holding more than one type of value.  A
  435. structure template establishes the type of data the structure can hold.  The
  436. structure definition is enclosed in braces.  A structure tag gives a short-hand
  437. name for the form.  A structure variable is one whose type is given by a
  438. structure template.  The template nust include a tag or a variable name or both.
  439.  
  440. No Tag:  Here we declare a variable 'fish' to be a structure of the indicated
  441. form.  No tag is used, and the variable name follows the structure definition:
  442.  
  443.       struct  {
  444.           float length;
  445.           float weight;
  446.           char name[40];
  447.           }   fish;      /* fish as a structure variable */
  448.  
  449. Tag:  Alternatively, use a tag name before the opening brace, then use the tag
  450. name later in declaring the variable:
  451.  
  452.       struct  critter {          /* critter is the tag name */
  453.           float length;
  454.           float weight;
  455.           char name[40];
  456.           };
  457.       struct critter fish, seal;  /* declaring two structures */
  458.       struct critter birds[5];    /* an array of 5 structures */
  459.  
  460. All the structures here are of the critter form.
  461. -------------------------------------------------------------------------------
  462. STRUCTURE AND UNION OPERATORS
  463.  
  464. I.  The Membership Operator:
  465.  
  466. This operator is used with a structure or union name to specify a member of that
  467. structure or union.  If "name" is the name of a structure and "member" is a
  468. member specified by the structure template, then
  469.  
  470. name.member
  471.  
  472. identifies that member of the structure.  The membership operator can also be
  473. used in the same fashion with unions.
  474.  
  475. EXAMPLE:
  476.  
  477. struct    {
  478.     int code;
  479.     float cost;
  480.     } item;
  481.  
  482. item.code = 1265;
  483.  
  484. This assigns a value to the "code" member of the structure "item".
  485.  
  486. II. The Indirect Membership Operator:  ->
  487.  
  488. This operator is used with a pointer to a structure or union to identify a
  489. member of that structure or union.  Suppose "ptrstr" is a pointer to a structure
  490. and that "member" is a member specified by the structure template.  Then
  491.  
  492. ptrstr->member
  493.  
  494. identifies that member of the pointed-to structure.  The indirect membership
  495. operator can be used in the same fashion with unions.
  496.  
  497. EXAMPLE:
  498.  
  499. struct    {
  500.     int code;
  501.     float cost;
  502.     } item, *ptrst;
  503.  
  504. ptrst = &item;
  505. ptrst->code = 3451;
  506.  
  507. This assigns a value to the "code" member of "item".  The following three
  508. expressions are equivalent:
  509.  
  510. ptrst->code       item.code        (*ptrst).code
  511. -------------------------------------------------------------------------------
  512. FLOW CONTROL
  513.  
  514. Loops:
  515.     while loop:
  516.  
  517.     while (condition)
  518.       statement;
  519.  
  520. Example:
  521.     while (i++ < 20)
  522.       q = 2 * q;
  523.  
  524.     for loop:
  525.  
  526.     for (initialize; test; update)
  527.       statement;
  528.  
  529. Example:
  530.     for (n = 0; n < 10; n++)
  531.       printf("%d %d\n", n, 2*n-1);
  532.  
  533.     do while loop:
  534.  
  535.     do
  536.       statement
  537.         while (condition);
  538.  
  539. Example:
  540.     do
  541.       printf("Hello, Molly\n");
  542.         while (i++ < 10);
  543.  
  544. BRANCHING:
  545.  
  546.     if forms:
  547.  
  548.     I.    if (expression)
  549.         statement;
  550.  
  551.     II.   if (expression)
  552.         statement;
  553.           else
  554.         statement;
  555.  
  556.     III.  if (expression)
  557.         statement;
  558.           else if
  559.         statement;
  560.           else
  561.         statement;
  562.  
  563. Example:
  564.       if (amt > 400)
  565.         rate = .0056;
  566.       else
  567.         rate = .0062;
  568.  
  569.       switch:
  570.  
  571.       switch (expression)
  572.         {
  573.         case label1 : statement1
  574.         case label2 : statement2
  575.         . . . . .
  576.         default : statement
  577.         }
  578. -------------------------------------------------------------------------------
  579. CODE FRAGMENT TO COPY A STRING TO AN ARRAY
  580.  
  581.   char name[MAX];
  582.   int c, i;
  583.  
  584.   printf("Enter your name: ");
  585.  
  586.   for (i = 0; (c = getchar()) != '\n' && i < MAX - 1; ++i)
  587.     name[i] = c;
  588.   name[i] = '\0';
  589.  
  590.   printf("Your name is: %s", name);
  591. -------------------------------------------------------------------------------
  592. C FOOD TERMINAL INDEPENDENCE PACKAGE (TIP)
  593.  
  594.       Include the following header files, structure definition, and body.
  595.  
  596.       #include <dos.h>
  597.       #include <tip.h>
  598.       struct TDB tdb;      /* structure needed whenever TIP is used. */
  599.       main()
  600.     {
  601.     tinit();      /* initializes TIP, clears the screen, and */
  602.     . . . .         /* places the cursor at position 1,1 */
  603.     tterm();      /* terminates TIP */
  604.     }
  605.  
  606. c = tgetc -- get a character
  607. tpush(c) -- push a character back
  608. char c;
  609.  
  610. n = tputc(c,d,e) -- put a character to the screen
  611. n = tputs(s)     -- put a character string to the screen
  612. int n;
  613. char c,d,e;
  614. char *s;
  615.  
  616. tpos(v,h) -- move cursor to V-H coordinate
  617. tvpos(v)  -- move cursor to V coordinate
  618. int v;
  619. int h;
  620.  
  621.  TO_CS        /* Clear screen */
  622.  TO_MCH     /* Move cursor home */
  623.  TO_MCU     /* Move cursor up */
  624.  TO_MCD     /* Move cursor down */
  625.  TO_MCR     /* Move cursor right */
  626.  TO_MCL     /* Move cursor left */
  627.  TO_IL        /* Insert line */
  628.  TO_DL        /* Delete line */
  629.  TO_IC        /* Insert character */
  630.  TO_DC        /* Delete character */
  631.  TO_ERL     /* Erase rest of line */
  632.  TO_ERS     /* Erase rest of screen */
  633.  TO_BPM     /* Begin protect mode */
  634.  TO_EPM     /* End protect mode */
  635.  TO_BPF     /* Begin protect field */
  636.  TO_EPF     /* End protect field */
  637.  
  638.  TO_VN        /* Set video normal */
  639.  TO_VR        /* Set video reverse */
  640.  TO_VNU     /* Set video normal, underlined */
  641.  TO_VRU     /* Set video reverse, underlined */
  642.  TO_VNF     /* Set video normal, flashing */
  643.  TO_VRF     /* Set video reverse, flashing */
  644.  
  645.  TO_MC        /* Move cursor to V-H coordinate */
  646.  TO_MCV     /* Move cursor to V coordinate */
  647.  TO_ESC     /* Escape the next character */
  648.  
  649.  TI_CAN     /* Cancel input line */
  650.  TI_MCH     /* Move cursor home */
  651.  TI_MCU     /* Move cursor up */
  652.  TI_MCD     /* Move cursor down */
  653.  TI_MCR     /* Move cursor right */
  654.  TI_MCL     /* Move cursor left */
  655.  TI_IL        /* Insert line */
  656.  TI_DL        /* Delete line */
  657.  TI_IC        /* Insert character */
  658.  TI_DC        /* Delete character */
  659.  TI_ERL     /* erase rest of line */
  660.  TI_ERS     /* erase rest of screen */
  661.  TI_PGU     /* page up */
  662.  TI_PGD     /* page down */
  663.  TI_MCE     /* move cursor to end */
  664.  
  665.  TI_F0        /* Function 0 */
  666.  TI_F1        /* Function 1 */
  667.  TI_F2        /* Function 2 */
  668.  TI_F3        /* Function 3 */
  669.  TI_F4        /* Function 4 */
  670.  TI_F5        /* Function 5 */
  671.  TI_F6        /* Function 6 */
  672.  TI_F7        /* Function 7 */
  673.  TI_F8        /* Function 8 */
  674.  TI_F9        /* Function 9 */
  675.  TI_FA        /* Function a */
  676.  TI_FB        /* Function b */
  677.  TI_FC        /* Function c */
  678.  TI_FD        /* Function d */
  679.  TI_FE        /* Function e */
  680.  TI_FF        /* Function f */
  681. -------------------------------------------------------------------------------
  682. STANDARD FORMS
  683. /*******************************************************************************
  684. *  FILENAME.C  --                                   *
  685. *                                           *
  686. *                                           *
  687. *                                           *
  688. *                                           *
  689. *                                           *
  690. *                                           *
  691. *                                           *
  692. *******************************************************************************/
  693. /*------------------------------------------------------------------------------
  694. |                   include files                       |
  695. ------------------------------------------------------------------------------*/
  696. /*------------------------------------------------------------------------------
  697. |                definitions                       |
  698. ------------------------------------------------------------------------------*/
  699. /*------------------------------------------------------------------------------
  700. |               function declarations                   |
  701. ------------------------------------------------------------------------------*/
  702. /*------------------------------------------------------------------------------
  703. |               structure declarations                   |
  704. |                                           |
  705. | Value = pointer to the word being stored.                       |
  706. | NumOccur = counter of the number of times the word has occurred.           |
  707. ------------------------------------------------------------------------------*/
  708. /*------------------------------------------------------------------------------
  709. |             global variable declarations                   |
  710. ------------------------------------------------------------------------------*/
  711. /*------------------------------------------------------------------------------
  712. |                                           |
  713. ------------------------------------------------------------------------------*/
  714.   /*----------------------------------------------------------------------------
  715.   |                                           |
  716.   ----------------------------------------------------------------------------*/
  717.     /*--------------------------------------------------------------------------
  718.     |                                           |
  719.     --------------------------------------------------------------------------*/
  720.       /*------------------------------------------------------------------------
  721.       |                                        |
  722.       ------------------------------------------------------------------------*/
  723.     /*----------------------------------------------------------------------
  724.     |                                       |
  725.     ----------------------------------------------------------------------*/
  726.       /*--------------------------------------------------------------------
  727.       |                                       |
  728.       --------------------------------------------------------------------*/
  729.                       /*                      */
  730.  
  731.  
  732.