diff options
author | Arnold D. Robbins <arnold@skeeve.com> | 2015-02-10 22:17:32 +0200 |
---|---|---|
committer | Arnold D. Robbins <arnold@skeeve.com> | 2015-02-10 22:17:32 +0200 |
commit | 9478ffc5b7ae6988bb109a7be9189ed02f3720e8 (patch) | |
tree | b1d3653cb1a8d49823dd2565b5728a3c91f096d1 | |
parent | e59b2439f336e943a5eb7bd6a9926dc18dd974d8 (diff) | |
download | egawk-9478ffc5b7ae6988bb109a7be9189ed02f3720e8.tar.gz egawk-9478ffc5b7ae6988bb109a7be9189ed02f3720e8.tar.bz2 egawk-9478ffc5b7ae6988bb109a7be9189ed02f3720e8.zip |
Doc fixes.
-rw-r--r-- | doc/ChangeLog | 4 | ||||
-rw-r--r-- | doc/gawk.info | 1102 | ||||
-rw-r--r-- | doc/gawk.texi | 22 | ||||
-rw-r--r-- | doc/gawktexi.in | 22 |
4 files changed, 583 insertions, 567 deletions
diff --git a/doc/ChangeLog b/doc/ChangeLog index b6de5797..c62d3022 100644 --- a/doc/ChangeLog +++ b/doc/ChangeLog @@ -1,3 +1,7 @@ +2015-02-10 Arnold D. Robbins <arnold@skeeve.com> + + * gawktexi.in: Minor fixes, O'Reilly fixes. + 2015-02-09 Arnold D. Robbins <arnold@skeeve.com> * gawktexi.in: Restore a lost sentence. O'Reilly fixes. diff --git a/doc/gawk.info b/doc/gawk.info index bf573a8a..eb8d07b5 100644 --- a/doc/gawk.info +++ b/doc/gawk.info @@ -1374,6 +1374,12 @@ also must acknowledge my gratitude to G-d, for the many opportunities He has sent my way, as well as for the gifts He has given me with which to take advantage of those opportunities. + +Arnold Robbins +Nof Ayalon +Israel +February 2015 + File: gawk.info, Node: Getting Started, Next: Invoking Gawk, Prev: Preface, Up: Top @@ -23028,8 +23034,8 @@ indicates what is in the `union'. Representing numbers is easy--the API uses a C `double'. Strings require more work. Because `gawk' allows embedded NUL bytes in string -values, a string must be represented as a pair containing a -data-pointer and length. This is the `awk_string_t' type. +values, a string must be represented as a pair containing a data +pointer and length. This is the `awk_string_t' type. Identifiers (i.e., the names of global variables) can be associated with either scalar values or with arrays. In addition, `gawk' provides @@ -23041,12 +23047,12 @@ Manipulation::. of the `union' as if they were fields in a `struct'; this is a common coding practice in C. Such code is easier to write and to read, but it remains _your_ responsibility to make sure that the `val_type' member -correctly reflects the type of the value in the `awk_value_t'. +correctly reflects the type of the value in the `awk_value_t' struct. Conceptually, the first three members of the `union' (number, string, and array) are all that is needed for working with `awk' values. However, because the API provides routines for accessing and changing -the value of global scalar variables only by using the variable's name, +the value of a global scalar variable only by using the variable's name, there is a performance penalty: `gawk' must find the variable each time it is accessed and changed. This turns out to be a real issue, not just a theoretical one. @@ -23055,17 +23061,19 @@ just a theoretical one. reading and/or changing the value of one or more scalar variables, you can obtain a "scalar cookie"(1) object for that variable, and then use the cookie for getting the variable's value or for changing the -variable's value. This is the `awk_scalar_t' type and `scalar_cookie' -macro. Given a scalar cookie, `gawk' can directly retrieve or modify -the value, as required, without having to find it first. +variable's value. The `awk_scalar_t' type holds a scalar cookie, and +the `scalar_cookie' macro provides access to the value of that type in +the `awk_value_t' struct. Given a scalar cookie, `gawk' can directly +retrieve or modify the value, as required, without having to find it +first. The `awk_value_cookie_t' type and `value_cookie' macro are similar. If you know that you wish to use the same numeric or string _value_ for one or more variables, you can create the value once, retaining a "value cookie" for it, and then pass in that value cookie whenever you -wish to set the value of a variable. This saves both storage space -within the running `gawk' process as well as the time needed to create -the value. +wish to set the value of a variable. This both storage space within +the running `gawk' process and reduces the time needed to create the +value. ---------- Footnotes ---------- @@ -34492,542 +34500,542 @@ Ref: Manual History-Footnote-167004 Ref: Manual History-Footnote-267045 Node: How To Contribute67119 Node: Acknowledgments68248 -Node: Getting Started73065 -Node: Running gawk75504 -Node: One-shot76694 -Node: Read Terminal77958 -Node: Long79989 -Node: Executable Scripts81502 -Ref: Executable Scripts-Footnote-184291 -Node: Comments84394 -Node: Quoting86876 -Node: DOS Quoting92394 -Node: Sample Data Files93069 -Node: Very Simple95664 -Node: Two Rules100563 -Node: More Complex102449 -Node: Statements/Lines105311 -Ref: Statements/Lines-Footnote-1109766 -Node: Other Features110031 -Node: When110967 -Ref: When-Footnote-1112721 -Node: Intro Summary112786 -Node: Invoking Gawk113670 -Node: Command Line115184 -Node: Options115982 -Ref: Options-Footnote-1131904 -Ref: Options-Footnote-2132133 -Node: Other Arguments132158 -Node: Naming Standard Input135106 -Node: Environment Variables136199 -Node: AWKPATH Variable136757 -Ref: AWKPATH Variable-Footnote-1140054 -Ref: AWKPATH Variable-Footnote-2140099 -Node: AWKLIBPATH Variable140359 -Node: Other Environment Variables141502 -Node: Exit Status145260 -Node: Include Files145936 -Node: Loading Shared Libraries149525 -Node: Obsolete150952 -Node: Undocumented151644 -Node: Invoking Summary151911 -Node: Regexp153574 -Node: Regexp Usage155028 -Node: Escape Sequences157065 -Node: Regexp Operators163075 -Ref: Regexp Operators-Footnote-1170485 -Ref: Regexp Operators-Footnote-2170632 -Node: Bracket Expressions170730 -Ref: table-char-classes172745 -Node: Leftmost Longest175687 -Node: Computed Regexps176989 -Node: GNU Regexp Operators180418 -Node: Case-sensitivity184090 -Ref: Case-sensitivity-Footnote-1186975 -Ref: Case-sensitivity-Footnote-2187210 -Node: Regexp Summary187318 -Node: Reading Files188785 -Node: Records190878 -Node: awk split records191611 -Node: gawk split records196540 -Ref: gawk split records-Footnote-1201079 -Node: Fields201116 -Ref: Fields-Footnote-1203894 -Node: Nonconstant Fields203980 -Ref: Nonconstant Fields-Footnote-1206218 -Node: Changing Fields206421 -Node: Field Separators212352 -Node: Default Field Splitting215056 -Node: Regexp Field Splitting216173 -Node: Single Character Fields219523 -Node: Command Line Field Separator220582 -Node: Full Line Fields223799 -Ref: Full Line Fields-Footnote-1225320 -Ref: Full Line Fields-Footnote-2225366 -Node: Field Splitting Summary225467 -Node: Constant Size227541 -Node: Splitting By Content232124 -Ref: Splitting By Content-Footnote-1236089 -Node: Multiple Line236252 -Ref: Multiple Line-Footnote-1242133 -Node: Getline242312 -Node: Plain Getline244519 -Node: Getline/Variable247159 -Node: Getline/File248308 -Node: Getline/Variable/File249693 -Ref: Getline/Variable/File-Footnote-1251296 -Node: Getline/Pipe251383 -Node: Getline/Variable/Pipe254061 -Node: Getline/Coprocess255192 -Node: Getline/Variable/Coprocess256456 -Node: Getline Notes257195 -Node: Getline Summary259989 -Ref: table-getline-variants260401 -Node: Read Timeout261230 -Ref: Read Timeout-Footnote-1265067 -Node: Command-line directories265125 -Node: Input Summary266030 -Node: Input Exercises269415 -Node: Printing270143 -Node: Print271920 -Node: Print Examples273377 -Node: Output Separators276156 -Node: OFMT278174 -Node: Printf279529 -Node: Basic Printf280314 -Node: Control Letters281886 -Node: Format Modifiers285871 -Node: Printf Examples291881 -Node: Redirection294367 -Node: Special FD301205 -Ref: Special FD-Footnote-1304371 -Node: Special Files304445 -Node: Other Inherited Files305062 -Node: Special Network306062 -Node: Special Caveats306924 -Node: Close Files And Pipes307873 -Ref: Close Files And Pipes-Footnote-1315064 -Ref: Close Files And Pipes-Footnote-2315212 -Node: Output Summary315362 -Node: Output Exercises316360 -Node: Expressions317040 -Node: Values318229 -Node: Constants318906 -Node: Scalar Constants319597 -Ref: Scalar Constants-Footnote-1320459 -Node: Nondecimal-numbers320709 -Node: Regexp Constants323719 -Node: Using Constant Regexps324245 -Node: Variables327408 -Node: Using Variables328065 -Node: Assignment Options329976 -Node: Conversion331851 -Node: Strings And Numbers332375 -Ref: Strings And Numbers-Footnote-1335440 -Node: Locale influences conversions335549 -Ref: table-locale-affects338295 -Node: All Operators338887 -Node: Arithmetic Ops339516 -Node: Concatenation342021 -Ref: Concatenation-Footnote-1344840 -Node: Assignment Ops344947 -Ref: table-assign-ops349926 -Node: Increment Ops351236 -Node: Truth Values and Conditions354667 -Node: Truth Values355750 -Node: Typing and Comparison356799 -Node: Variable Typing357615 -Node: Comparison Operators361282 -Ref: table-relational-ops361692 -Node: POSIX String Comparison365187 -Ref: POSIX String Comparison-Footnote-1366259 -Node: Boolean Ops366398 -Ref: Boolean Ops-Footnote-1370876 -Node: Conditional Exp370967 -Node: Function Calls372705 -Node: Precedence376585 -Node: Locales380245 -Node: Expressions Summary381877 -Node: Patterns and Actions384448 -Node: Pattern Overview385568 -Node: Regexp Patterns387247 -Node: Expression Patterns387790 -Node: Ranges391570 -Node: BEGIN/END394677 -Node: Using BEGIN/END395438 -Ref: Using BEGIN/END-Footnote-1398174 -Node: I/O And BEGIN/END398280 -Node: BEGINFILE/ENDFILE400595 -Node: Empty403492 -Node: Using Shell Variables403809 -Node: Action Overview406082 -Node: Statements408408 -Node: If Statement410256 -Node: While Statement411751 -Node: Do Statement413779 -Node: For Statement414927 -Node: Switch Statement418085 -Node: Break Statement420467 -Node: Continue Statement422508 -Node: Next Statement424335 -Node: Nextfile Statement426716 -Node: Exit Statement429344 -Node: Built-in Variables431755 -Node: User-modified432888 -Ref: User-modified-Footnote-1440591 -Node: Auto-set440653 -Ref: Auto-set-Footnote-1453705 -Ref: Auto-set-Footnote-2453910 -Node: ARGC and ARGV453966 -Node: Pattern Action Summary458184 -Node: Arrays460617 -Node: Array Basics461946 -Node: Array Intro462790 -Ref: figure-array-elements464724 -Ref: Array Intro-Footnote-1467344 -Node: Reference to Elements467472 -Node: Assigning Elements469934 -Node: Array Example470425 -Node: Scanning an Array472184 -Node: Controlling Scanning475204 -Ref: Controlling Scanning-Footnote-1480598 -Node: Numeric Array Subscripts480914 -Node: Uninitialized Subscripts483099 -Node: Delete484716 -Ref: Delete-Footnote-1487465 -Node: Multidimensional487522 -Node: Multiscanning490619 -Node: Arrays of Arrays492208 -Node: Arrays Summary496962 -Node: Functions499053 -Node: Built-in500092 -Node: Calling Built-in501170 -Node: Numeric Functions503165 -Ref: Numeric Functions-Footnote-1507181 -Ref: Numeric Functions-Footnote-2507538 -Ref: Numeric Functions-Footnote-3507586 -Node: String Functions507858 -Ref: String Functions-Footnote-1531359 -Ref: String Functions-Footnote-2531488 -Ref: String Functions-Footnote-3531736 -Node: Gory Details531823 -Ref: table-sub-escapes533604 -Ref: table-sub-proposed535119 -Ref: table-posix-sub536481 -Ref: table-gensub-escapes538018 -Ref: Gory Details-Footnote-1538851 -Node: I/O Functions539002 -Ref: I/O Functions-Footnote-1546238 -Node: Time Functions546385 -Ref: Time Functions-Footnote-1556894 -Ref: Time Functions-Footnote-2556962 -Ref: Time Functions-Footnote-3557120 -Ref: Time Functions-Footnote-4557231 -Ref: Time Functions-Footnote-5557343 -Ref: Time Functions-Footnote-6557570 -Node: Bitwise Functions557836 -Ref: table-bitwise-ops558398 -Ref: Bitwise Functions-Footnote-1562726 -Node: Type Functions562898 -Node: I18N Functions564050 -Node: User-defined565697 -Node: Definition Syntax566502 -Ref: Definition Syntax-Footnote-1572161 -Node: Function Example572232 -Ref: Function Example-Footnote-1575153 -Node: Function Caveats575175 -Node: Calling A Function575693 -Node: Variable Scope576651 -Node: Pass By Value/Reference579644 -Node: Return Statement583141 -Node: Dynamic Typing586120 -Node: Indirect Calls587049 -Ref: Indirect Calls-Footnote-1598355 -Node: Functions Summary598483 -Node: Library Functions601185 -Ref: Library Functions-Footnote-1604793 -Ref: Library Functions-Footnote-2604936 -Node: Library Names605107 -Ref: Library Names-Footnote-1608565 -Ref: Library Names-Footnote-2608788 -Node: General Functions608874 -Node: Strtonum Function609977 -Node: Assert Function612999 -Node: Round Function616323 -Node: Cliff Random Function617864 -Node: Ordinal Functions618880 -Ref: Ordinal Functions-Footnote-1621943 -Ref: Ordinal Functions-Footnote-2622195 -Node: Join Function622406 -Ref: Join Function-Footnote-1624176 -Node: Getlocaltime Function624376 -Node: Readfile Function628120 -Node: Shell Quoting630092 -Node: Data File Management631493 -Node: Filetrans Function632125 -Node: Rewind Function636221 -Node: File Checking637607 -Ref: File Checking-Footnote-1638940 -Node: Empty Files639141 -Node: Ignoring Assigns641120 -Node: Getopt Function642670 -Ref: Getopt Function-Footnote-1654134 -Node: Passwd Functions654334 -Ref: Passwd Functions-Footnote-1663174 -Node: Group Functions663262 -Ref: Group Functions-Footnote-1671159 -Node: Walking Arrays671364 -Node: Library Functions Summary672964 -Node: Library Exercises674368 -Node: Sample Programs675648 -Node: Running Examples676418 -Node: Clones677146 -Node: Cut Program678370 -Node: Egrep Program688090 -Ref: Egrep Program-Footnote-1695593 -Node: Id Program695703 -Node: Split Program699379 -Ref: Split Program-Footnote-1702833 -Node: Tee Program702961 -Node: Uniq Program705750 -Node: Wc Program713169 -Ref: Wc Program-Footnote-1717419 -Node: Miscellaneous Programs717513 -Node: Dupword Program718726 -Node: Alarm Program720757 -Node: Translate Program725562 -Ref: Translate Program-Footnote-1730125 -Node: Labels Program730395 -Ref: Labels Program-Footnote-1733746 -Node: Word Sorting733830 -Node: History Sorting737900 -Node: Extract Program739735 -Node: Simple Sed747259 -Node: Igawk Program750329 -Ref: Igawk Program-Footnote-1764655 -Ref: Igawk Program-Footnote-2764856 -Ref: Igawk Program-Footnote-3764978 -Node: Anagram Program765093 -Node: Signature Program768154 -Node: Programs Summary769401 -Node: Programs Exercises770622 -Ref: Programs Exercises-Footnote-1774753 -Node: Advanced Features774844 -Node: Nondecimal Data776826 -Node: Array Sorting778416 -Node: Controlling Array Traversal779116 -Ref: Controlling Array Traversal-Footnote-1787482 -Node: Array Sorting Functions787600 -Ref: Array Sorting Functions-Footnote-1791486 -Node: Two-way I/O791682 -Ref: Two-way I/O-Footnote-1796627 -Ref: Two-way I/O-Footnote-2796813 -Node: TCP/IP Networking796895 -Node: Profiling799767 -Node: Advanced Features Summary807308 -Node: Internationalization809241 -Node: I18N and L10N810721 -Node: Explaining gettext811407 -Ref: Explaining gettext-Footnote-1816432 -Ref: Explaining gettext-Footnote-2816616 -Node: Programmer i18n816781 -Ref: Programmer i18n-Footnote-1821657 -Node: Translator i18n821706 -Node: String Extraction822500 -Ref: String Extraction-Footnote-1823631 -Node: Printf Ordering823717 -Ref: Printf Ordering-Footnote-1826503 -Node: I18N Portability826567 -Ref: I18N Portability-Footnote-1829023 -Node: I18N Example829086 -Ref: I18N Example-Footnote-1831889 -Node: Gawk I18N831961 -Node: I18N Summary832605 -Node: Debugger833945 -Node: Debugging834967 -Node: Debugging Concepts835408 -Node: Debugging Terms837218 -Node: Awk Debugging839790 -Node: Sample Debugging Session840696 -Node: Debugger Invocation841230 -Node: Finding The Bug842615 -Node: List of Debugger Commands849094 -Node: Breakpoint Control850426 -Node: Debugger Execution Control854103 -Node: Viewing And Changing Data857462 -Node: Execution Stack860838 -Node: Debugger Info862473 -Node: Miscellaneous Debugger Commands866518 -Node: Readline Support871519 -Node: Limitations872413 -Node: Debugging Summary874528 -Node: Arbitrary Precision Arithmetic875702 -Node: Computer Arithmetic877118 -Ref: table-numeric-ranges880717 -Ref: Computer Arithmetic-Footnote-1881241 -Node: Math Definitions881298 -Ref: table-ieee-formats884593 -Ref: Math Definitions-Footnote-1885197 -Node: MPFR features885302 -Node: FP Math Caution886973 -Ref: FP Math Caution-Footnote-1888023 -Node: Inexactness of computations888392 -Node: Inexact representation889351 -Node: Comparing FP Values890709 -Node: Errors accumulate891791 -Node: Getting Accuracy893223 -Node: Try To Round895927 -Node: Setting precision896826 -Ref: table-predefined-precision-strings897510 -Node: Setting the rounding mode899339 -Ref: table-gawk-rounding-modes899703 -Ref: Setting the rounding mode-Footnote-1903155 -Node: Arbitrary Precision Integers903334 -Ref: Arbitrary Precision Integers-Footnote-1906318 -Node: POSIX Floating Point Problems906467 -Ref: POSIX Floating Point Problems-Footnote-1910346 -Node: Floating point summary910384 -Node: Dynamic Extensions912580 -Node: Extension Intro914132 -Node: Plugin License915397 -Node: Extension Mechanism Outline916194 -Ref: figure-load-extension916622 -Ref: figure-register-new-function918102 -Ref: figure-call-new-function919106 -Node: Extension API Description921093 -Node: Extension API Functions Introduction922543 -Node: General Data Types927364 -Ref: General Data Types-Footnote-1933171 -Node: Memory Allocation Functions933470 -Ref: Memory Allocation Functions-Footnote-1936309 -Node: Constructor Functions936405 -Node: Registration Functions938139 -Node: Extension Functions938824 -Node: Exit Callback Functions941121 -Node: Extension Version String942369 -Node: Input Parsers943034 -Node: Output Wrappers952913 -Node: Two-way processors957428 -Node: Printing Messages959632 -Ref: Printing Messages-Footnote-1960708 -Node: Updating `ERRNO'960860 -Node: Requesting Values961600 -Ref: table-value-types-returned962328 -Node: Accessing Parameters963285 -Node: Symbol Table Access964516 -Node: Symbol table by name965030 -Node: Symbol table by cookie967011 -Ref: Symbol table by cookie-Footnote-1971155 -Node: Cached values971218 -Ref: Cached values-Footnote-1974717 -Node: Array Manipulation974808 -Ref: Array Manipulation-Footnote-1975906 -Node: Array Data Types975943 -Ref: Array Data Types-Footnote-1978598 -Node: Array Functions978690 -Node: Flattening Arrays982544 -Node: Creating Arrays989436 -Node: Extension API Variables994207 -Node: Extension Versioning994843 -Node: Extension API Informational Variables996744 -Node: Extension API Boilerplate997809 -Node: Finding Extensions1001618 -Node: Extension Example1002178 -Node: Internal File Description1002950 -Node: Internal File Ops1007017 -Ref: Internal File Ops-Footnote-11018687 -Node: Using Internal File Ops1018827 -Ref: Using Internal File Ops-Footnote-11021210 -Node: Extension Samples1021483 -Node: Extension Sample File Functions1023009 -Node: Extension Sample Fnmatch1030647 -Node: Extension Sample Fork1032138 -Node: Extension Sample Inplace1033353 -Node: Extension Sample Ord1035028 -Node: Extension Sample Readdir1035864 -Ref: table-readdir-file-types1036740 -Node: Extension Sample Revout1037551 -Node: Extension Sample Rev2way1038141 -Node: Extension Sample Read write array1038881 -Node: Extension Sample Readfile1040821 -Node: Extension Sample Time1041916 -Node: Extension Sample API Tests1043265 -Node: gawkextlib1043756 -Node: Extension summary1046414 -Node: Extension Exercises1050103 -Node: Language History1050825 -Node: V7/SVR3.11052481 -Node: SVR41054662 -Node: POSIX1056107 -Node: BTL1057496 -Node: POSIX/GNU1058230 -Node: Feature History1063794 -Node: Common Extensions1076892 -Node: Ranges and Locales1078216 -Ref: Ranges and Locales-Footnote-11082834 -Ref: Ranges and Locales-Footnote-21082861 -Ref: Ranges and Locales-Footnote-31083095 -Node: Contributors1083316 -Node: History summary1088857 -Node: Installation1090227 -Node: Gawk Distribution1091173 -Node: Getting1091657 -Node: Extracting1092480 -Node: Distribution contents1094115 -Node: Unix Installation1099832 -Node: Quick Installation1100449 -Node: Additional Configuration Options1102873 -Node: Configuration Philosophy1104611 -Node: Non-Unix Installation1106980 -Node: PC Installation1107438 -Node: PC Binary Installation1108757 -Node: PC Compiling1110605 -Ref: PC Compiling-Footnote-11113626 -Node: PC Testing1113735 -Node: PC Using1114911 -Node: Cygwin1119026 -Node: MSYS1119849 -Node: VMS Installation1120349 -Node: VMS Compilation1121141 -Ref: VMS Compilation-Footnote-11122363 -Node: VMS Dynamic Extensions1122421 -Node: VMS Installation Details1124105 -Node: VMS Running1126357 -Node: VMS GNV1129193 -Node: VMS Old Gawk1129927 -Node: Bugs1130397 -Node: Other Versions1134280 -Node: Installation summary1140704 -Node: Notes1141760 -Node: Compatibility Mode1142625 -Node: Additions1143407 -Node: Accessing The Source1144332 -Node: Adding Code1145767 -Node: New Ports1151924 -Node: Derived Files1156406 -Ref: Derived Files-Footnote-11161881 -Ref: Derived Files-Footnote-21161915 -Ref: Derived Files-Footnote-31162511 -Node: Future Extensions1162625 -Node: Implementation Limitations1163231 -Node: Extension Design1164479 -Node: Old Extension Problems1165633 -Ref: Old Extension Problems-Footnote-11167150 -Node: Extension New Mechanism Goals1167207 -Ref: Extension New Mechanism Goals-Footnote-11170567 -Node: Extension Other Design Decisions1170756 -Node: Extension Future Growth1172864 -Node: Old Extension Mechanism1173700 -Node: Notes summary1175462 -Node: Basic Concepts1176648 -Node: Basic High Level1177329 -Ref: figure-general-flow1177601 -Ref: figure-process-flow1178200 -Ref: Basic High Level-Footnote-11181429 -Node: Basic Data Typing1181614 -Node: Glossary1184942 -Node: Copying1216871 -Node: GNU Free Documentation License1254427 -Node: Index1279563 +Node: Getting Started73114 +Node: Running gawk75553 +Node: One-shot76743 +Node: Read Terminal78007 +Node: Long80038 +Node: Executable Scripts81551 +Ref: Executable Scripts-Footnote-184340 +Node: Comments84443 +Node: Quoting86925 +Node: DOS Quoting92443 +Node: Sample Data Files93118 +Node: Very Simple95713 +Node: Two Rules100612 +Node: More Complex102498 +Node: Statements/Lines105360 +Ref: Statements/Lines-Footnote-1109815 +Node: Other Features110080 +Node: When111016 +Ref: When-Footnote-1112770 +Node: Intro Summary112835 +Node: Invoking Gawk113719 +Node: Command Line115233 +Node: Options116031 +Ref: Options-Footnote-1131953 +Ref: Options-Footnote-2132182 +Node: Other Arguments132207 +Node: Naming Standard Input135155 +Node: Environment Variables136248 +Node: AWKPATH Variable136806 +Ref: AWKPATH Variable-Footnote-1140103 +Ref: AWKPATH Variable-Footnote-2140148 +Node: AWKLIBPATH Variable140408 +Node: Other Environment Variables141551 +Node: Exit Status145309 +Node: Include Files145985 +Node: Loading Shared Libraries149574 +Node: Obsolete151001 +Node: Undocumented151693 +Node: Invoking Summary151960 +Node: Regexp153623 +Node: Regexp Usage155077 +Node: Escape Sequences157114 +Node: Regexp Operators163124 +Ref: Regexp Operators-Footnote-1170534 +Ref: Regexp Operators-Footnote-2170681 +Node: Bracket Expressions170779 +Ref: table-char-classes172794 +Node: Leftmost Longest175736 +Node: Computed Regexps177038 +Node: GNU Regexp Operators180467 +Node: Case-sensitivity184139 +Ref: Case-sensitivity-Footnote-1187024 +Ref: Case-sensitivity-Footnote-2187259 +Node: Regexp Summary187367 +Node: Reading Files188834 +Node: Records190927 +Node: awk split records191660 +Node: gawk split records196589 +Ref: gawk split records-Footnote-1201128 +Node: Fields201165 +Ref: Fields-Footnote-1203943 +Node: Nonconstant Fields204029 +Ref: Nonconstant Fields-Footnote-1206267 +Node: Changing Fields206470 +Node: Field Separators212401 +Node: Default Field Splitting215105 +Node: Regexp Field Splitting216222 +Node: Single Character Fields219572 +Node: Command Line Field Separator220631 +Node: Full Line Fields223848 +Ref: Full Line Fields-Footnote-1225369 +Ref: Full Line Fields-Footnote-2225415 +Node: Field Splitting Summary225516 +Node: Constant Size227590 +Node: Splitting By Content232173 +Ref: Splitting By Content-Footnote-1236138 +Node: Multiple Line236301 +Ref: Multiple Line-Footnote-1242182 +Node: Getline242361 +Node: Plain Getline244568 +Node: Getline/Variable247208 +Node: Getline/File248357 +Node: Getline/Variable/File249742 +Ref: Getline/Variable/File-Footnote-1251345 +Node: Getline/Pipe251432 +Node: Getline/Variable/Pipe254110 +Node: Getline/Coprocess255241 +Node: Getline/Variable/Coprocess256505 +Node: Getline Notes257244 +Node: Getline Summary260038 +Ref: table-getline-variants260450 +Node: Read Timeout261279 +Ref: Read Timeout-Footnote-1265116 +Node: Command-line directories265174 +Node: Input Summary266079 +Node: Input Exercises269464 +Node: Printing270192 +Node: Print271969 +Node: Print Examples273426 +Node: Output Separators276205 +Node: OFMT278223 +Node: Printf279578 +Node: Basic Printf280363 +Node: Control Letters281935 +Node: Format Modifiers285920 +Node: Printf Examples291930 +Node: Redirection294416 +Node: Special FD301254 +Ref: Special FD-Footnote-1304420 +Node: Special Files304494 +Node: Other Inherited Files305111 +Node: Special Network306111 +Node: Special Caveats306973 +Node: Close Files And Pipes307922 +Ref: Close Files And Pipes-Footnote-1315113 +Ref: Close Files And Pipes-Footnote-2315261 +Node: Output Summary315411 +Node: Output Exercises316409 +Node: Expressions317089 +Node: Values318278 +Node: Constants318955 +Node: Scalar Constants319646 +Ref: Scalar Constants-Footnote-1320508 +Node: Nondecimal-numbers320758 +Node: Regexp Constants323768 +Node: Using Constant Regexps324294 +Node: Variables327457 +Node: Using Variables328114 +Node: Assignment Options330025 +Node: Conversion331900 +Node: Strings And Numbers332424 +Ref: Strings And Numbers-Footnote-1335489 +Node: Locale influences conversions335598 +Ref: table-locale-affects338344 +Node: All Operators338936 +Node: Arithmetic Ops339565 +Node: Concatenation342070 +Ref: Concatenation-Footnote-1344889 +Node: Assignment Ops344996 +Ref: table-assign-ops349975 +Node: Increment Ops351285 +Node: Truth Values and Conditions354716 +Node: Truth Values355799 +Node: Typing and Comparison356848 +Node: Variable Typing357664 +Node: Comparison Operators361331 +Ref: table-relational-ops361741 +Node: POSIX String Comparison365236 +Ref: POSIX String Comparison-Footnote-1366308 +Node: Boolean Ops366447 +Ref: Boolean Ops-Footnote-1370925 +Node: Conditional Exp371016 +Node: Function Calls372754 +Node: Precedence376634 +Node: Locales380294 +Node: Expressions Summary381926 +Node: Patterns and Actions384497 +Node: Pattern Overview385617 +Node: Regexp Patterns387296 +Node: Expression Patterns387839 +Node: Ranges391619 +Node: BEGIN/END394726 +Node: Using BEGIN/END395487 +Ref: Using BEGIN/END-Footnote-1398223 +Node: I/O And BEGIN/END398329 +Node: BEGINFILE/ENDFILE400644 +Node: Empty403541 +Node: Using Shell Variables403858 +Node: Action Overview406131 +Node: Statements408457 +Node: If Statement410305 +Node: While Statement411800 +Node: Do Statement413828 +Node: For Statement414976 +Node: Switch Statement418134 +Node: Break Statement420516 +Node: Continue Statement422557 +Node: Next Statement424384 +Node: Nextfile Statement426765 +Node: Exit Statement429393 +Node: Built-in Variables431804 +Node: User-modified432937 +Ref: User-modified-Footnote-1440640 +Node: Auto-set440702 +Ref: Auto-set-Footnote-1453754 +Ref: Auto-set-Footnote-2453959 +Node: ARGC and ARGV454015 +Node: Pattern Action Summary458233 +Node: Arrays460666 +Node: Array Basics461995 +Node: Array Intro462839 +Ref: figure-array-elements464773 +Ref: Array Intro-Footnote-1467393 +Node: Reference to Elements467521 +Node: Assigning Elements469983 +Node: Array Example470474 +Node: Scanning an Array472233 +Node: Controlling Scanning475253 +Ref: Controlling Scanning-Footnote-1480647 +Node: Numeric Array Subscripts480963 +Node: Uninitialized Subscripts483148 +Node: Delete484765 +Ref: Delete-Footnote-1487514 +Node: Multidimensional487571 +Node: Multiscanning490668 +Node: Arrays of Arrays492257 +Node: Arrays Summary497011 +Node: Functions499102 +Node: Built-in500141 +Node: Calling Built-in501219 +Node: Numeric Functions503214 +Ref: Numeric Functions-Footnote-1507230 +Ref: Numeric Functions-Footnote-2507587 +Ref: Numeric Functions-Footnote-3507635 +Node: String Functions507907 +Ref: String Functions-Footnote-1531408 +Ref: String Functions-Footnote-2531537 +Ref: String Functions-Footnote-3531785 +Node: Gory Details531872 +Ref: table-sub-escapes533653 +Ref: table-sub-proposed535168 +Ref: table-posix-sub536530 +Ref: table-gensub-escapes538067 +Ref: Gory Details-Footnote-1538900 +Node: I/O Functions539051 +Ref: I/O Functions-Footnote-1546287 +Node: Time Functions546434 +Ref: Time Functions-Footnote-1556943 +Ref: Time Functions-Footnote-2557011 +Ref: Time Functions-Footnote-3557169 +Ref: Time Functions-Footnote-4557280 +Ref: Time Functions-Footnote-5557392 +Ref: Time Functions-Footnote-6557619 +Node: Bitwise Functions557885 +Ref: table-bitwise-ops558447 +Ref: Bitwise Functions-Footnote-1562775 +Node: Type Functions562947 +Node: I18N Functions564099 +Node: User-defined565746 +Node: Definition Syntax566551 +Ref: Definition Syntax-Footnote-1572210 +Node: Function Example572281 +Ref: Function Example-Footnote-1575202 +Node: Function Caveats575224 +Node: Calling A Function575742 +Node: Variable Scope576700 +Node: Pass By Value/Reference579693 +Node: Return Statement583190 +Node: Dynamic Typing586169 +Node: Indirect Calls587098 +Ref: Indirect Calls-Footnote-1598404 +Node: Functions Summary598532 +Node: Library Functions601234 +Ref: Library Functions-Footnote-1604842 +Ref: Library Functions-Footnote-2604985 +Node: Library Names605156 +Ref: Library Names-Footnote-1608614 +Ref: Library Names-Footnote-2608837 +Node: General Functions608923 +Node: Strtonum Function610026 +Node: Assert Function613048 +Node: Round Function616372 +Node: Cliff Random Function617913 +Node: Ordinal Functions618929 +Ref: Ordinal Functions-Footnote-1621992 +Ref: Ordinal Functions-Footnote-2622244 +Node: Join Function622455 +Ref: Join Function-Footnote-1624225 +Node: Getlocaltime Function624425 +Node: Readfile Function628169 +Node: Shell Quoting630141 +Node: Data File Management631542 +Node: Filetrans Function632174 +Node: Rewind Function636270 +Node: File Checking637656 +Ref: File Checking-Footnote-1638989 +Node: Empty Files639190 +Node: Ignoring Assigns641169 +Node: Getopt Function642719 +Ref: Getopt Function-Footnote-1654183 +Node: Passwd Functions654383 +Ref: Passwd Functions-Footnote-1663223 +Node: Group Functions663311 +Ref: Group Functions-Footnote-1671208 +Node: Walking Arrays671413 +Node: Library Functions Summary673013 +Node: Library Exercises674417 +Node: Sample Programs675697 +Node: Running Examples676467 +Node: Clones677195 +Node: Cut Program678419 +Node: Egrep Program688139 +Ref: Egrep Program-Footnote-1695642 +Node: Id Program695752 +Node: Split Program699428 +Ref: Split Program-Footnote-1702882 +Node: Tee Program703010 +Node: Uniq Program705799 +Node: Wc Program713218 +Ref: Wc Program-Footnote-1717468 +Node: Miscellaneous Programs717562 +Node: Dupword Program718775 +Node: Alarm Program720806 +Node: Translate Program725611 +Ref: Translate Program-Footnote-1730174 +Node: Labels Program730444 +Ref: Labels Program-Footnote-1733795 +Node: Word Sorting733879 +Node: History Sorting737949 +Node: Extract Program739784 +Node: Simple Sed747308 +Node: Igawk Program750378 +Ref: Igawk Program-Footnote-1764704 +Ref: Igawk Program-Footnote-2764905 +Ref: Igawk Program-Footnote-3765027 +Node: Anagram Program765142 +Node: Signature Program768203 +Node: Programs Summary769450 +Node: Programs Exercises770671 +Ref: Programs Exercises-Footnote-1774802 +Node: Advanced Features774893 +Node: Nondecimal Data776875 +Node: Array Sorting778465 +Node: Controlling Array Traversal779165 +Ref: Controlling Array Traversal-Footnote-1787531 +Node: Array Sorting Functions787649 +Ref: Array Sorting Functions-Footnote-1791535 +Node: Two-way I/O791731 +Ref: Two-way I/O-Footnote-1796676 +Ref: Two-way I/O-Footnote-2796862 +Node: TCP/IP Networking796944 +Node: Profiling799816 +Node: Advanced Features Summary807357 +Node: Internationalization809290 +Node: I18N and L10N810770 +Node: Explaining gettext811456 +Ref: Explaining gettext-Footnote-1816481 +Ref: Explaining gettext-Footnote-2816665 +Node: Programmer i18n816830 +Ref: Programmer i18n-Footnote-1821706 +Node: Translator i18n821755 +Node: String Extraction822549 +Ref: String Extraction-Footnote-1823680 +Node: Printf Ordering823766 +Ref: Printf Ordering-Footnote-1826552 +Node: I18N Portability826616 +Ref: I18N Portability-Footnote-1829072 +Node: I18N Example829135 +Ref: I18N Example-Footnote-1831938 +Node: Gawk I18N832010 +Node: I18N Summary832654 +Node: Debugger833994 +Node: Debugging835016 +Node: Debugging Concepts835457 +Node: Debugging Terms837267 +Node: Awk Debugging839839 +Node: Sample Debugging Session840745 +Node: Debugger Invocation841279 +Node: Finding The Bug842664 +Node: List of Debugger Commands849143 +Node: Breakpoint Control850475 +Node: Debugger Execution Control854152 +Node: Viewing And Changing Data857511 +Node: Execution Stack860887 +Node: Debugger Info862522 +Node: Miscellaneous Debugger Commands866567 +Node: Readline Support871568 +Node: Limitations872462 +Node: Debugging Summary874577 +Node: Arbitrary Precision Arithmetic875751 +Node: Computer Arithmetic877167 +Ref: table-numeric-ranges880766 +Ref: Computer Arithmetic-Footnote-1881290 +Node: Math Definitions881347 +Ref: table-ieee-formats884642 +Ref: Math Definitions-Footnote-1885246 +Node: MPFR features885351 +Node: FP Math Caution887022 +Ref: FP Math Caution-Footnote-1888072 +Node: Inexactness of computations888441 +Node: Inexact representation889400 +Node: Comparing FP Values890758 +Node: Errors accumulate891840 +Node: Getting Accuracy893272 +Node: Try To Round895976 +Node: Setting precision896875 +Ref: table-predefined-precision-strings897559 +Node: Setting the rounding mode899388 +Ref: table-gawk-rounding-modes899752 +Ref: Setting the rounding mode-Footnote-1903204 +Node: Arbitrary Precision Integers903383 +Ref: Arbitrary Precision Integers-Footnote-1906367 +Node: POSIX Floating Point Problems906516 +Ref: POSIX Floating Point Problems-Footnote-1910395 +Node: Floating point summary910433 +Node: Dynamic Extensions912629 +Node: Extension Intro914181 +Node: Plugin License915446 +Node: Extension Mechanism Outline916243 +Ref: figure-load-extension916671 +Ref: figure-register-new-function918151 +Ref: figure-call-new-function919155 +Node: Extension API Description921142 +Node: Extension API Functions Introduction922592 +Node: General Data Types927413 +Ref: General Data Types-Footnote-1933312 +Node: Memory Allocation Functions933611 +Ref: Memory Allocation Functions-Footnote-1936450 +Node: Constructor Functions936546 +Node: Registration Functions938280 +Node: Extension Functions938965 +Node: Exit Callback Functions941262 +Node: Extension Version String942510 +Node: Input Parsers943175 +Node: Output Wrappers953054 +Node: Two-way processors957569 +Node: Printing Messages959773 +Ref: Printing Messages-Footnote-1960849 +Node: Updating `ERRNO'961001 +Node: Requesting Values961741 +Ref: table-value-types-returned962469 +Node: Accessing Parameters963426 +Node: Symbol Table Access964657 +Node: Symbol table by name965171 +Node: Symbol table by cookie967152 +Ref: Symbol table by cookie-Footnote-1971296 +Node: Cached values971359 +Ref: Cached values-Footnote-1974858 +Node: Array Manipulation974949 +Ref: Array Manipulation-Footnote-1976047 +Node: Array Data Types976084 +Ref: Array Data Types-Footnote-1978739 +Node: Array Functions978831 +Node: Flattening Arrays982685 +Node: Creating Arrays989577 +Node: Extension API Variables994348 +Node: Extension Versioning994984 +Node: Extension API Informational Variables996885 +Node: Extension API Boilerplate997950 +Node: Finding Extensions1001759 +Node: Extension Example1002319 +Node: Internal File Description1003091 +Node: Internal File Ops1007158 +Ref: Internal File Ops-Footnote-11018828 +Node: Using Internal File Ops1018968 +Ref: Using Internal File Ops-Footnote-11021351 +Node: Extension Samples1021624 +Node: Extension Sample File Functions1023150 +Node: Extension Sample Fnmatch1030788 +Node: Extension Sample Fork1032279 +Node: Extension Sample Inplace1033494 +Node: Extension Sample Ord1035169 +Node: Extension Sample Readdir1036005 +Ref: table-readdir-file-types1036881 +Node: Extension Sample Revout1037692 +Node: Extension Sample Rev2way1038282 +Node: Extension Sample Read write array1039022 +Node: Extension Sample Readfile1040962 +Node: Extension Sample Time1042057 +Node: Extension Sample API Tests1043406 +Node: gawkextlib1043897 +Node: Extension summary1046555 +Node: Extension Exercises1050244 +Node: Language History1050966 +Node: V7/SVR3.11052622 +Node: SVR41054803 +Node: POSIX1056248 +Node: BTL1057637 +Node: POSIX/GNU1058371 +Node: Feature History1063935 +Node: Common Extensions1077033 +Node: Ranges and Locales1078357 +Ref: Ranges and Locales-Footnote-11082975 +Ref: Ranges and Locales-Footnote-21083002 +Ref: Ranges and Locales-Footnote-31083236 +Node: Contributors1083457 +Node: History summary1088998 +Node: Installation1090368 +Node: Gawk Distribution1091314 +Node: Getting1091798 +Node: Extracting1092621 +Node: Distribution contents1094256 +Node: Unix Installation1099973 +Node: Quick Installation1100590 +Node: Additional Configuration Options1103014 +Node: Configuration Philosophy1104752 +Node: Non-Unix Installation1107121 +Node: PC Installation1107579 +Node: PC Binary Installation1108898 +Node: PC Compiling1110746 +Ref: PC Compiling-Footnote-11113767 +Node: PC Testing1113876 +Node: PC Using1115052 +Node: Cygwin1119167 +Node: MSYS1119990 +Node: VMS Installation1120490 +Node: VMS Compilation1121282 +Ref: VMS Compilation-Footnote-11122504 +Node: VMS Dynamic Extensions1122562 +Node: VMS Installation Details1124246 +Node: VMS Running1126498 +Node: VMS GNV1129334 +Node: VMS Old Gawk1130068 +Node: Bugs1130538 +Node: Other Versions1134421 +Node: Installation summary1140845 +Node: Notes1141901 +Node: Compatibility Mode1142766 +Node: Additions1143548 +Node: Accessing The Source1144473 +Node: Adding Code1145908 +Node: New Ports1152065 +Node: Derived Files1156547 +Ref: Derived Files-Footnote-11162022 +Ref: Derived Files-Footnote-21162056 +Ref: Derived Files-Footnote-31162652 +Node: Future Extensions1162766 +Node: Implementation Limitations1163372 +Node: Extension Design1164620 +Node: Old Extension Problems1165774 +Ref: Old Extension Problems-Footnote-11167291 +Node: Extension New Mechanism Goals1167348 +Ref: Extension New Mechanism Goals-Footnote-11170708 +Node: Extension Other Design Decisions1170897 +Node: Extension Future Growth1173005 +Node: Old Extension Mechanism1173841 +Node: Notes summary1175603 +Node: Basic Concepts1176789 +Node: Basic High Level1177470 +Ref: figure-general-flow1177742 +Ref: figure-process-flow1178341 +Ref: Basic High Level-Footnote-11181570 +Node: Basic Data Typing1181755 +Node: Glossary1185083 +Node: Copying1217012 +Node: GNU Free Documentation License1254568 +Node: Index1279704 End Tag Table diff --git a/doc/gawk.texi b/doc/gawk.texi index 3f2afed3..e7d979d9 100644 --- a/doc/gawk.texi +++ b/doc/gawk.texi @@ -1300,7 +1300,7 @@ October 2014 <affiliation><jobtitle>Nof Ayalon</jobtitle></affiliation> <affiliation><jobtitle>Israel</jobtitle></affiliation> </author> - <date>December 2014</date> + <date>February 2015</date> </prefaceinfo> @end docbook @@ -2284,14 +2284,14 @@ which they raised and educated me. Finally, I also must acknowledge my gratitude to G-d, for the many opportunities He has sent my way, as well as for the gifts He has given me with which to take advantage of those opportunities. -@iftex +@ifnotdocbook @sp 2 @noindent Arnold Robbins @* Nof Ayalon @* Israel @* -December 2014 -@end iftex +February 2015 +@end ifnotdocbook @ifnotinfo @part @value{PART1}The @command{awk} Language @@ -31589,7 +31589,7 @@ indicates what is in the @code{union}. Representing numbers is easy---the API uses a C @code{double}. Strings require more work. Because @command{gawk} allows embedded @sc{nul} bytes in string values, a string must be represented as a pair containing a -data-pointer and length. This is the @code{awk_string_t} type. +data pointer and length. This is the @code{awk_string_t} type. Identifiers (i.e., the names of global variables) can be associated with either scalar values or with arrays. In addition, @command{gawk} @@ -31602,12 +31602,12 @@ of the @code{union} as if they were fields in a @code{struct}; this is a common coding practice in C. Such code is easier to write and to read, but it remains @emph{your} responsibility to make sure that the @code{val_type} member correctly reflects the type of the value in -the @code{awk_value_t}. +the @code{awk_value_t} struct. Conceptually, the first three members of the @code{union} (number, string, and array) are all that is needed for working with @command{awk} values. However, because the API provides routines for accessing and changing -the value of global scalar variables only by using the variable's name, +the value of a global scalar variable only by using the variable's name, there is a performance penalty: @command{gawk} must find the variable each time it is accessed and changed. This turns out to be a real issue, not just a theoretical one. @@ -31625,7 +31625,9 @@ See also the entry for ``Cookie'' in the @ref{Glossary}. object for that variable, and then use the cookie for getting the variable's value or for changing the variable's value. -This is the @code{awk_scalar_t} type and @code{scalar_cookie} macro. +The @code{awk_scalar_t} type holds a scalar cookie, and the +@code{scalar_cookie} macro provides access to the value of that type +in the @code{awk_value_t} struct. Given a scalar cookie, @command{gawk} can directly retrieve or modify the value, as required, without having to find it first. @@ -31634,8 +31636,8 @@ If you know that you wish to use the same numeric or string @emph{value} for one or more variables, you can create the value once, retaining a @dfn{value cookie} for it, and then pass in that value cookie whenever you wish to set the value of a -variable. This saves both storage space within the running @command{gawk} -process as well as the time needed to create the value. +variable. This both storage space within the running @command{gawk} +process and reduces the time needed to create the value. @node Memory Allocation Functions @subsection Memory Allocation Functions and Convenience Macros diff --git a/doc/gawktexi.in b/doc/gawktexi.in index 3e97423a..c41d5a68 100644 --- a/doc/gawktexi.in +++ b/doc/gawktexi.in @@ -1295,7 +1295,7 @@ October 2014 <affiliation><jobtitle>Nof Ayalon</jobtitle></affiliation> <affiliation><jobtitle>Israel</jobtitle></affiliation> </author> - <date>December 2014</date> + <date>February 2015</date> </prefaceinfo> @end docbook @@ -2251,14 +2251,14 @@ which they raised and educated me. Finally, I also must acknowledge my gratitude to G-d, for the many opportunities He has sent my way, as well as for the gifts He has given me with which to take advantage of those opportunities. -@iftex +@ifnotdocbook @sp 2 @noindent Arnold Robbins @* Nof Ayalon @* Israel @* -December 2014 -@end iftex +February 2015 +@end ifnotdocbook @ifnotinfo @part @value{PART1}The @command{awk} Language @@ -30680,7 +30680,7 @@ indicates what is in the @code{union}. Representing numbers is easy---the API uses a C @code{double}. Strings require more work. Because @command{gawk} allows embedded @sc{nul} bytes in string values, a string must be represented as a pair containing a -data-pointer and length. This is the @code{awk_string_t} type. +data pointer and length. This is the @code{awk_string_t} type. Identifiers (i.e., the names of global variables) can be associated with either scalar values or with arrays. In addition, @command{gawk} @@ -30693,12 +30693,12 @@ of the @code{union} as if they were fields in a @code{struct}; this is a common coding practice in C. Such code is easier to write and to read, but it remains @emph{your} responsibility to make sure that the @code{val_type} member correctly reflects the type of the value in -the @code{awk_value_t}. +the @code{awk_value_t} struct. Conceptually, the first three members of the @code{union} (number, string, and array) are all that is needed for working with @command{awk} values. However, because the API provides routines for accessing and changing -the value of global scalar variables only by using the variable's name, +the value of a global scalar variable only by using the variable's name, there is a performance penalty: @command{gawk} must find the variable each time it is accessed and changed. This turns out to be a real issue, not just a theoretical one. @@ -30716,7 +30716,9 @@ See also the entry for ``Cookie'' in the @ref{Glossary}. object for that variable, and then use the cookie for getting the variable's value or for changing the variable's value. -This is the @code{awk_scalar_t} type and @code{scalar_cookie} macro. +The @code{awk_scalar_t} type holds a scalar cookie, and the +@code{scalar_cookie} macro provides access to the value of that type +in the @code{awk_value_t} struct. Given a scalar cookie, @command{gawk} can directly retrieve or modify the value, as required, without having to find it first. @@ -30725,8 +30727,8 @@ If you know that you wish to use the same numeric or string @emph{value} for one or more variables, you can create the value once, retaining a @dfn{value cookie} for it, and then pass in that value cookie whenever you wish to set the value of a -variable. This saves both storage space within the running @command{gawk} -process as well as the time needed to create the value. +variable. This both storage space within the running @command{gawk} +process and reduces the time needed to create the value. @node Memory Allocation Functions @subsection Memory Allocation Functions and Convenience Macros |