gawk-diffs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[gawk-diffs] [SCM] gawk branch, feature/namespaces, updated. gawk-4.1.0-


From: Arnold Robbins
Subject: [gawk-diffs] [SCM] gawk branch, feature/namespaces, updated. gawk-4.1.0-2643-g33c9394
Date: Thu, 20 Jul 2017 14:48:18 -0400 (EDT)

This is an automated email from the git hooks/post-receive script. It was
generated because a ref change was pushed to the repository containing
the project "gawk".

The branch, feature/namespaces has been updated
       via  33c9394b268fb5defe88b6aa497fea61bff43851 (commit)
      from  0c83ff34eb8411eb0775dfa5a56e588a0adee03b (commit)

Those revisions listed above that are new to this repository have
not appeared on any other notification email; so we list those
revisions in full, below.

- Log -----------------------------------------------------------------
http://git.sv.gnu.org/cgit/gawk.git/commit/?id=33c9394b268fb5defe88b6aa497fea61bff43851

commit 33c9394b268fb5defe88b6aa497fea61bff43851
Author: Arnold D. Robbins <address@hidden>
Date:   Thu Jul 20 21:47:21 2017 +0300

    Polish off namespace documentation.

diff --git a/doc/ChangeLog b/doc/ChangeLog
index 782b937..44479e5 100644
--- a/doc/ChangeLog
+++ b/doc/ChangeLog
@@ -3,6 +3,11 @@
        * gawktexi.in (Extension Sample Inplace): Rework to use the
        "inplace" namespace.
 
+       * gawktexi.in (Namespace And Features): Renamed from
+       `Namespace Misc' and reworked.
+       (Symbol table by name): Add note about namespace and
+       component name rules with xref to section in Namespaces chapter.
+
 2017-07-19         Arnold D. Robbins     <address@hidden>
 
        * gawktexi.in (Namespaces): Cleanup, new section on naming rules
diff --git a/doc/gawk.info b/doc/gawk.info
index 29de8e7..2a7f083 100644
--- a/doc/gawk.info
+++ b/doc/gawk.info
@@ -530,7 +530,7 @@ in (a) below.  A copy of the license is included in the 
section entitled
 * Naming Rules::                        Namespace and Component Naming Rules.
 * Internal Name Management::            How names are stored internally.
 * Namespace Example::                   An example of code using a namespace.
-* Namespace Misc::                      Namespace notes for developers.
+* Namespace And Features::      Namespaces and other 'gawk' features.
 * Computer Arithmetic::                 A quick intro to computer math.
 * Math Definitions::                    Defining terms used.
 * MPFR features::                       The MPFR features in 'gawk'.
@@ -22528,7 +22528,7 @@ This major node describes a feature that is specific to 
'gawk'.
 * Naming Rules::                Namespace and Component Naming Rules.
 * Internal Name Management::    How names are stored internally.
 * Namespace Example::           An example of code using a namespace.
-* Namespace Misc::              Namespace notes for developers.
+* Namespace And Features::      Namespaces and other 'gawk' features.
 
 
 File: gawk.info,  Node: Global Namespace,  Next: Qualified Names,  Up: 
Namespaces
@@ -22724,7 +22724,7 @@ For example:
      }
 
 
-File: gawk.info,  Node: Namespace Example,  Next: Namespace Misc,  Prev: 
Internal Name Management,  Up: Namespaces
+File: gawk.info,  Node: Namespace Example,  Next: Namespace And Features,  
Prev: Internal Name Management,  Up: Namespaces
 
 15.7 Namespace Example
 ======================
@@ -22825,62 +22825,34 @@ with a capital letter.
      ...
 
 
-File: gawk.info,  Node: Namespace Misc,  Prev: Namespace Example,  Up: 
Namespaces
+File: gawk.info,  Node: Namespace And Features,  Prev: Namespace Example,  Up: 
Namespaces
 
-15.8 Miscellaneous Notes
-========================
-
-*FIXME*: Finish revising this material.
-
-   Other notes for reviewers:
-
-Profiler:
-     When profiling, we include the namespace in the 'Op_Rule' and
-     'Op_Func' instructions.  If the namespace is different from the
-     previous one, we output an '@namespace' statement.  For each
-     identifier, if it starts with the current namespace, we output only
-     the simple part (DONE).
-
-Debugger:
-     Simply print fully qualified names all the time.  Maybe allow a
-     'namespace XXX' command in the debugger to set the namespace and it
-     will use that to create fully qualified names?  Have to be careful
-     about all uppercase names though.
-
-Extension functions
-     Revise the current macros to pass '"awk"' as the namespace argument
-     and add new macros with '_ns' in the name that pass the namespace
-     of the extension.  This preserves backwards compatibility at the
-     source level while providing access to namespaces as needed.
-
-     Actually, since we've decided that 'awk' namespace variables and
-     function are stored unadorned, the current macros that pass '""'
-     would continue to work.  Internally, we need to recognize '"awk"'
-     and _not_ fully qualify the name before storing it in the symbol
-     table.  (Both DONE).
-
-More on Extension Functions
-       1. Function and variables names need to be simple identifiers.
-          This is now checked in the code.  Allowing both namespace +
-          identifier and 'foo::bar' would be confusing to document and
-          to code and to test.
-
-       2. Function and variable names cannot be reserved words.  This is
-          now checked.
+15.8 Namespaces and Other 'gawk' Features
+=========================================
 
-       3. Namespace names need to be valid identifiers.  They cannot be
-          keywords or reserved function names.
+This minor node looks at how the namespace facility interacts with other
+important 'gawk' features.
 
-       4. It's debatable if there should be a default namespace for a
-          plugin.  Should it be the plugin's name?  Probably not.
+   The profiler and pretty-printer (*note Profiling::) have been
+enhanced to understand namespaces and the namespace naming rules
+described in *note Naming Rules::.  In particular, the output groups
+functions in the same namespace together, and has '@namespace'
+directives in front of rules as necessary.  This allows component names
+to be simple identifiers, instead of using qualified identifiers
+everywhere.
 
-          So, the initial plugin API allowed for (but did not use) a
-          namespace for installing functions, but didn't for variables.
-          That's been fixed.
+   Interaction with the debugger (*note Debugging::) has not had to
+change (at least as of this writing).  Some of the internal byte codes
+changed in order to accomodate namespaces, and the debugger's 'dump'
+command was adjusted to match.
 
-       5. Should the 'ext_id', which is currently just a null pointer,
-          be made to point to something?  What would be carry around in
-          it?
+   The extension API (*note Dynamic Extensions::) has always allowed for
+placing functions into a different namespace, although this was never
+implemented.  However, the symbol lookup and symbol update routines did
+not have provision for including a namespace.  That has now been
+corrected.  *Note Extension Sample Inplace::, for a nice example of an
+extension that leverages a namespace used by cooperating 'awk' and C
+code.
 
 
 File: gawk.info,  Node: Arbitrary Precision Arithmetic,  Next: Dynamic 
Extensions,  Prev: Namespaces,  Up: Top
@@ -25318,6 +25290,16 @@ termed a "symbol table".  The functions are as follows:
 However, with the exception of the 'PROCINFO' array, an extension cannot
 change any of those variables.
 
+   When searching for or updating variables outside the 'awk' namespace
+(*note Namespaces::), function and variable names must be simple
+identifiers.(1)  In addition, namespace names and variable and function
+names must follow the rules given in *note Naming Rules::.
+
+   ---------- Footnotes ----------
+
+   (1) Allowing both namespace plus identifier and 'foo::bar' would have
+been too confusing to document, and to code and test.
+
 
 File: gawk.info,  Node: Symbol table by cookie,  Next: Cached values,  Prev: 
Symbol table by name,  Up: Symbol Table Access
 
@@ -36172,589 +36154,590 @@ Index
 
 Tag Table:
 Node: Top1200
-Node: Foreword343937
-Node: Foreword448379
-Node: Preface49911
-Ref: Preface-Footnote-152770
-Ref: Preface-Footnote-252877
-Ref: Preface-Footnote-353111
-Node: History53253
-Node: Names55605
-Ref: Names-Footnote-156699
-Node: This Manual56846
-Ref: This Manual-Footnote-163485
-Node: Conventions63585
-Node: Manual History65939
-Ref: Manual History-Footnote-168934
-Ref: Manual History-Footnote-268975
-Node: How To Contribute69049
-Node: Acknowledgments69700
-Node: Getting Started74586
-Node: Running gawk77025
-Node: One-shot78215
-Node: Read Terminal79478
-Node: Long81471
-Node: Executable Scripts82984
-Ref: Executable Scripts-Footnote-185779
-Node: Comments85882
-Node: Quoting88366
-Node: DOS Quoting93883
-Node: Sample Data Files95938
-Node: Very Simple98533
-Node: Two Rules103435
-Node: More Complex105320
-Node: Statements/Lines108186
-Ref: Statements/Lines-Footnote-1112645
-Node: Other Features112910
-Node: When113846
-Ref: When-Footnote-1115600
-Node: Intro Summary115665
-Node: Invoking Gawk116549
-Node: Command Line118063
-Node: Options118861
-Ref: Options-Footnote-1135957
-Ref: Options-Footnote-2136187
-Node: Other Arguments136212
-Node: Naming Standard Input139159
-Node: Environment Variables140252
-Node: AWKPATH Variable140810
-Ref: AWKPATH Variable-Footnote-1144221
-Ref: AWKPATH Variable-Footnote-2144255
-Node: AWKLIBPATH Variable144516
-Node: Other Environment Variables145773
-Node: Exit Status149594
-Node: Include Files150271
-Node: Loading Shared Libraries154019
-Node: Obsolete155447
-Node: Undocumented156139
-Node: Invoking Summary156436
-Node: Regexp158096
-Node: Regexp Usage159550
-Node: Escape Sequences161587
-Node: Regexp Operators167819
-Ref: Regexp Operators-Footnote-1175235
-Ref: Regexp Operators-Footnote-2175382
-Node: Bracket Expressions175480
-Ref: table-char-classes177956
-Node: Leftmost Longest181093
-Node: Computed Regexps182396
-Node: GNU Regexp Operators185823
-Node: Case-sensitivity189502
-Ref: Case-sensitivity-Footnote-1192389
-Ref: Case-sensitivity-Footnote-2192624
-Node: Regexp Summary192732
-Node: Reading Files194198
-Node: Records196467
-Node: awk split records197200
-Node: gawk split records202131
-Ref: gawk split records-Footnote-1206671
-Node: Fields206708
-Node: Nonconstant Fields209449
-Ref: Nonconstant Fields-Footnote-1211685
-Node: Changing Fields211889
-Node: Field Separators217817
-Node: Default Field Splitting220515
-Node: Regexp Field Splitting221633
-Node: Single Character Fields224986
-Node: Command Line Field Separator226046
-Node: Full Line Fields229264
-Ref: Full Line Fields-Footnote-1230786
-Ref: Full Line Fields-Footnote-2230832
-Node: Field Splitting Summary230933
-Node: Constant Size233007
-Node: Fixed width data233739
-Node: Skipping intervening237206
-Node: Allowing trailing data238004
-Node: Fields with fixed data239041
-Node: Splitting By Content240559
-Ref: Splitting By Content-Footnote-1244209
-Node: Testing field creation244372
-Node: Multiple Line245993
-Ref: Multiple Line-Footnote-1251877
-Node: Getline252056
-Node: Plain Getline254525
-Node: Getline/Variable257166
-Node: Getline/File258317
-Node: Getline/Variable/File259705
-Ref: Getline/Variable/File-Footnote-1261310
-Node: Getline/Pipe261398
-Node: Getline/Variable/Pipe264105
-Node: Getline/Coprocess265240
-Node: Getline/Variable/Coprocess266507
-Node: Getline Notes267249
-Node: Getline Summary270046
-Ref: table-getline-variants270470
-Node: Read Timeout271218
-Ref: Read Timeout-Footnote-1275124
-Node: Retrying Input275182
-Node: Command-line directories276381
-Node: Input Summary277287
-Node: Input Exercises280459
-Node: Printing281187
-Node: Print283021
-Node: Print Examples284478
-Node: Output Separators287258
-Node: OFMT289275
-Node: Printf290631
-Node: Basic Printf291416
-Node: Control Letters292990
-Node: Format Modifiers296978
-Node: Printf Examples302993
-Node: Redirection305479
-Node: Special FD312320
-Ref: Special FD-Footnote-1315488
-Node: Special Files315562
-Node: Other Inherited Files316179
-Node: Special Network317180
-Node: Special Caveats318040
-Node: Close Files And Pipes318989
-Ref: table-close-pipe-return-values325896
-Ref: Close Files And Pipes-Footnote-1326679
-Ref: Close Files And Pipes-Footnote-2326827
-Node: Nonfatal326979
-Node: Output Summary329304
-Node: Output Exercises330526
-Node: Expressions331205
-Node: Values332393
-Node: Constants333071
-Node: Scalar Constants333762
-Ref: Scalar Constants-Footnote-1334626
-Node: Nondecimal-numbers334876
-Node: Regexp Constants337877
-Node: Using Constant Regexps338403
-Node: Standard Regexp Constants339025
-Node: Strong Regexp Constants342213
-Node: Variables345171
-Node: Using Variables345828
-Node: Assignment Options347738
-Node: Conversion349611
-Node: Strings And Numbers350135
-Ref: Strings And Numbers-Footnote-1353198
-Node: Locale influences conversions353307
-Ref: table-locale-affects356065
-Node: All Operators356683
-Node: Arithmetic Ops357312
-Node: Concatenation359818
-Ref: Concatenation-Footnote-1362665
-Node: Assignment Ops362772
-Ref: table-assign-ops367763
-Node: Increment Ops369076
-Node: Truth Values and Conditions372536
-Node: Truth Values373610
-Node: Typing and Comparison374658
-Node: Variable Typing375478
-Ref: Variable Typing-Footnote-1381941
-Ref: Variable Typing-Footnote-2382013
-Node: Comparison Operators382090
-Ref: table-relational-ops382509
-Node: POSIX String Comparison386004
-Ref: POSIX String Comparison-Footnote-1387699
-Ref: POSIX String Comparison-Footnote-2387838
-Node: Boolean Ops387922
-Ref: Boolean Ops-Footnote-1392404
-Node: Conditional Exp392496
-Node: Function Calls394232
-Node: Precedence398109
-Node: Locales401768
-Node: Expressions Summary403400
-Node: Patterns and Actions405973
-Node: Pattern Overview407093
-Node: Regexp Patterns408770
-Node: Expression Patterns409312
-Node: Ranges413093
-Node: BEGIN/END416201
-Node: Using BEGIN/END416962
-Ref: Using BEGIN/END-Footnote-1419698
-Node: I/O And BEGIN/END419804
-Node: BEGINFILE/ENDFILE422118
-Node: Empty425025
-Node: Using Shell Variables425342
-Node: Action Overview427616
-Node: Statements429941
-Node: If Statement431789
-Node: While Statement433284
-Node: Do Statement435312
-Node: For Statement436460
-Node: Switch Statement439618
-Node: Break Statement442004
-Node: Continue Statement444096
-Node: Next Statement445923
-Node: Nextfile Statement448306
-Node: Exit Statement450958
-Node: Built-in Variables453361
-Node: User-modified454494
-Node: Auto-set462261
-Ref: Auto-set-Footnote-1477858
-Ref: Auto-set-Footnote-2478064
-Node: ARGC and ARGV478120
-Node: Pattern Action Summary482333
-Node: Arrays484763
-Node: Array Basics486092
-Node: Array Intro486936
-Ref: figure-array-elements488911
-Ref: Array Intro-Footnote-1491615
-Node: Reference to Elements491743
-Node: Assigning Elements494207
-Node: Array Example494698
-Node: Scanning an Array496457
-Node: Controlling Scanning499479
-Ref: Controlling Scanning-Footnote-1504878
-Node: Numeric Array Subscripts505194
-Node: Uninitialized Subscripts507378
-Node: Delete508997
-Ref: Delete-Footnote-1511749
-Node: Multidimensional511806
-Node: Multiscanning514901
-Node: Arrays of Arrays516492
-Node: Arrays Summary521259
-Node: Functions523352
-Node: Built-in524390
-Node: Calling Built-in525471
-Node: Numeric Functions527467
-Ref: Numeric Functions-Footnote-1532412
-Ref: Numeric Functions-Footnote-2532769
-Ref: Numeric Functions-Footnote-3532817
-Node: String Functions533089
-Ref: String Functions-Footnote-1556747
-Ref: String Functions-Footnote-2556875
-Ref: String Functions-Footnote-3557123
-Node: Gory Details557210
-Ref: table-sub-escapes559001
-Ref: table-sub-proposed560520
-Ref: table-posix-sub561883
-Ref: table-gensub-escapes563424
-Ref: Gory Details-Footnote-1564247
-Node: I/O Functions564401
-Ref: table-system-return-values570983
-Ref: I/O Functions-Footnote-1572963
-Ref: I/O Functions-Footnote-2573111
-Node: Time Functions573231
-Ref: Time Functions-Footnote-1583898
-Ref: Time Functions-Footnote-2583966
-Ref: Time Functions-Footnote-3584124
-Ref: Time Functions-Footnote-4584235
-Ref: Time Functions-Footnote-5584347
-Ref: Time Functions-Footnote-6584574
-Node: Bitwise Functions584840
-Ref: table-bitwise-ops585434
-Ref: Bitwise Functions-Footnote-1591467
-Ref: Bitwise Functions-Footnote-2591640
-Node: Type Functions591831
-Node: I18N Functions594506
-Node: User-defined596157
-Node: Definition Syntax596962
-Ref: Definition Syntax-Footnote-1602649
-Node: Function Example602720
-Ref: Function Example-Footnote-1605642
-Node: Function Caveats605664
-Node: Calling A Function606182
-Node: Variable Scope607140
-Node: Pass By Value/Reference610134
-Node: Return Statement613633
-Node: Dynamic Typing616612
-Node: Indirect Calls617542
-Ref: Indirect Calls-Footnote-1627793
-Node: Functions Summary627921
-Node: Library Functions630626
-Ref: Library Functions-Footnote-1634233
-Ref: Library Functions-Footnote-2634376
-Node: Library Names634547
-Ref: Library Names-Footnote-1638223
-Ref: Library Names-Footnote-2638446
-Node: General Functions638532
-Node: Strtonum Function639635
-Node: Assert Function642657
-Node: Round Function645983
-Node: Cliff Random Function647524
-Node: Ordinal Functions648540
-Ref: Ordinal Functions-Footnote-1651603
-Ref: Ordinal Functions-Footnote-2651855
-Node: Join Function652065
-Ref: Join Function-Footnote-1653835
-Node: Getlocaltime Function654035
-Node: Readfile Function657777
-Node: Shell Quoting659749
-Node: Data File Management661150
-Node: Filetrans Function661782
-Node: Rewind Function665878
-Node: File Checking667788
-Ref: File Checking-Footnote-1669122
-Node: Empty Files669323
-Node: Ignoring Assigns671302
-Node: Getopt Function672852
-Ref: Getopt Function-Footnote-1684321
-Node: Passwd Functions684521
-Ref: Passwd Functions-Footnote-1693360
-Node: Group Functions693448
-Ref: Group Functions-Footnote-1701346
-Node: Walking Arrays701553
-Node: Library Functions Summary704561
-Node: Library Exercises705967
-Node: Sample Programs706432
-Node: Running Examples707202
-Node: Clones707930
-Node: Cut Program709154
-Node: Egrep Program719083
-Ref: Egrep Program-Footnote-1726595
-Node: Id Program726705
-Node: Split Program730385
-Ref: Split Program-Footnote-1733844
-Node: Tee Program733973
-Node: Uniq Program736763
-Node: Wc Program744189
-Ref: Wc Program-Footnote-1748444
-Node: Miscellaneous Programs748538
-Node: Dupword Program749751
-Node: Alarm Program751781
-Node: Translate Program756636
-Ref: Translate Program-Footnote-1761201
-Node: Labels Program761471
-Ref: Labels Program-Footnote-1764822
-Node: Word Sorting764906
-Node: History Sorting768978
-Node: Extract Program770813
-Node: Simple Sed778342
-Node: Igawk Program781416
-Ref: Igawk Program-Footnote-1795747
-Ref: Igawk Program-Footnote-2795949
-Ref: Igawk Program-Footnote-3796071
-Node: Anagram Program796186
-Node: Signature Program799248
-Node: Programs Summary800495
-Node: Programs Exercises801709
-Ref: Programs Exercises-Footnote-1805838
-Node: Advanced Features805929
-Node: Nondecimal Data807919
-Node: Array Sorting809510
-Node: Controlling Array Traversal810210
-Ref: Controlling Array Traversal-Footnote-1818577
-Node: Array Sorting Functions818695
-Ref: Array Sorting Functions-Footnote-1823786
-Node: Two-way I/O823982
-Ref: Two-way I/O-Footnote-1830533
-Ref: Two-way I/O-Footnote-2830720
-Node: TCP/IP Networking830802
-Node: Profiling833920
-Ref: Profiling-Footnote-1842592
-Node: Advanced Features Summary842915
-Node: Internationalization844759
-Node: I18N and L10N846239
-Node: Explaining gettext846926
-Ref: Explaining gettext-Footnote-1852818
-Ref: Explaining gettext-Footnote-2853003
-Node: Programmer i18n853168
-Ref: Programmer i18n-Footnote-1858117
-Node: Translator i18n858166
-Node: String Extraction858960
-Ref: String Extraction-Footnote-1860092
-Node: Printf Ordering860178
-Ref: Printf Ordering-Footnote-1862964
-Node: I18N Portability863028
-Ref: I18N Portability-Footnote-1865484
-Node: I18N Example865547
-Ref: I18N Example-Footnote-1868353
-Node: Gawk I18N868426
-Node: I18N Summary869071
-Node: Debugger870412
-Node: Debugging871414
-Node: Debugging Concepts871855
-Node: Debugging Terms873664
-Node: Awk Debugging876239
-Node: Sample Debugging Session877145
-Node: Debugger Invocation877679
-Node: Finding The Bug879065
-Node: List of Debugger Commands885543
-Node: Breakpoint Control886876
-Node: Debugger Execution Control890570
-Node: Viewing And Changing Data893932
-Node: Execution Stack897306
-Node: Debugger Info898943
-Node: Miscellaneous Debugger Commands903014
-Node: Readline Support908102
-Node: Limitations908998
-Node: Debugging Summary911107
-Node: Namespaces912386
-Node: Global Namespace913142
-Node: Qualified Names914496
-Node: Default Namespace915493
-Node: Changing The Namespace916234
-Node: Naming Rules917822
-Node: Internal Name Management919671
-Node: Namespace Example920713
-Node: Namespace Misc923174
-Node: Arbitrary Precision Arithmetic925524
-Node: Computer Arithmetic927011
-Ref: table-numeric-ranges930602
-Ref: Computer Arithmetic-Footnote-1931324
-Node: Math Definitions931381
-Ref: table-ieee-formats934695
-Ref: Math Definitions-Footnote-1935298
-Node: MPFR features935403
-Node: FP Math Caution937120
-Ref: FP Math Caution-Footnote-1938192
-Node: Inexactness of computations938561
-Node: Inexact representation939521
-Node: Comparing FP Values940881
-Node: Errors accumulate941963
-Node: Getting Accuracy943396
-Node: Try To Round946106
-Node: Setting precision947005
-Ref: table-predefined-precision-strings947702
-Node: Setting the rounding mode949532
-Ref: table-gawk-rounding-modes949906
-Ref: Setting the rounding mode-Footnote-1953314
-Node: Arbitrary Precision Integers953493
-Ref: Arbitrary Precision Integers-Footnote-1958398
-Node: Checking for MPFR958547
-Node: POSIX Floating Point Problems959844
-Ref: POSIX Floating Point Problems-Footnote-1963715
-Node: Floating point summary963753
-Node: Dynamic Extensions965943
-Node: Extension Intro967496
-Node: Plugin License968762
-Node: Extension Mechanism Outline969559
-Ref: figure-load-extension969998
-Ref: figure-register-new-function971563
-Ref: figure-call-new-function972655
-Node: Extension API Description974717
-Node: Extension API Functions Introduction976359
-Node: General Data Types981693
-Ref: General Data Types-Footnote-1988898
-Node: Memory Allocation Functions989197
-Ref: Memory Allocation Functions-Footnote-1992349
-Node: Constructor Functions992448
-Node: Registration Functions995447
-Node: Extension Functions996132
-Node: Exit Callback Functions1001345
-Node: Extension Version String1002595
-Node: Input Parsers1003258
-Node: Output Wrappers1015965
-Node: Two-way processors1020477
-Node: Printing Messages1022742
-Ref: Printing Messages-Footnote-11023913
-Node: Updating ERRNO1024066
-Node: Requesting Values1024805
-Ref: table-value-types-returned1025542
-Node: Accessing Parameters1026478
-Node: Symbol Table Access1027713
-Node: Symbol table by name1028225
-Node: Symbol table by cookie1030810
-Ref: Symbol table by cookie-Footnote-11034995
-Node: Cached values1035059
-Ref: Cached values-Footnote-11038595
-Node: Array Manipulation1038686
-Ref: Array Manipulation-Footnote-11039777
-Node: Array Data Types1039814
-Ref: Array Data Types-Footnote-11042472
-Node: Array Functions1042564
-Node: Flattening Arrays1046963
-Node: Creating Arrays1053904
-Node: Redirection API1058673
-Node: Extension API Variables1061515
-Node: Extension Versioning1062148
-Ref: gawk-api-version1062585
-Node: Extension API Informational Variables1064313
-Node: Extension API Boilerplate1065377
-Node: Changes from API V11069239
-Node: Finding Extensions1069899
-Node: Extension Example1070458
-Node: Internal File Description1071256
-Node: Internal File Ops1075336
-Ref: Internal File Ops-Footnote-11086736
-Node: Using Internal File Ops1086876
-Ref: Using Internal File Ops-Footnote-11089259
-Node: Extension Samples1089533
-Node: Extension Sample File Functions1091062
-Node: Extension Sample Fnmatch1098711
-Node: Extension Sample Fork1100198
-Node: Extension Sample Inplace1101416
-Node: Extension Sample Ord1104720
-Node: Extension Sample Readdir1105556
-Ref: table-readdir-file-types1106445
-Node: Extension Sample Revout1107250
-Node: Extension Sample Rev2way1107839
-Node: Extension Sample Read write array1108579
-Node: Extension Sample Readfile1110521
-Node: Extension Sample Time1111616
-Node: Extension Sample API Tests1112964
-Node: gawkextlib1113456
-Node: Extension summary1115903
-Node: Extension Exercises1119605
-Node: Language History1121103
-Node: V7/SVR3.11122759
-Node: SVR41124911
-Node: POSIX1126345
-Node: BTL1127724
-Node: POSIX/GNU1128453
-Node: Feature History1134345
-Node: Common Extensions1148769
-Node: Ranges and Locales1150052
-Ref: Ranges and Locales-Footnote-11154668
-Ref: Ranges and Locales-Footnote-21154695
-Ref: Ranges and Locales-Footnote-31154930
-Node: Contributors1155151
-Node: History summary1160711
-Node: Installation1162091
-Node: Gawk Distribution1163035
-Node: Getting1163519
-Node: Extracting1164480
-Node: Distribution contents1166118
-Node: Unix Installation1172460
-Node: Quick Installation1173142
-Node: Shell Startup Files1175556
-Node: Additional Configuration Options1176645
-Node: Configuration Philosophy1178634
-Node: Non-Unix Installation1181003
-Node: PC Installation1181463
-Node: PC Binary Installation1182301
-Node: PC Compiling1182736
-Node: PC Using1183853
-Node: Cygwin1186898
-Node: MSYS1187668
-Node: VMS Installation1188169
-Node: VMS Compilation1188960
-Ref: VMS Compilation-Footnote-11190189
-Node: VMS Dynamic Extensions1190247
-Node: VMS Installation Details1191932
-Node: VMS Running1194185
-Node: VMS GNV1198464
-Node: VMS Old Gawk1199199
-Node: Bugs1199670
-Node: Bug address1200333
-Node: Usenet1202730
-Node: Maintainers1203507
-Node: Other Versions1204883
-Node: Installation summary1211467
-Node: Notes1212502
-Node: Compatibility Mode1213367
-Node: Additions1214149
-Node: Accessing The Source1215074
-Node: Adding Code1216509
-Node: New Ports1222727
-Node: Derived Files1227215
-Ref: Derived Files-Footnote-11232700
-Ref: Derived Files-Footnote-21232735
-Ref: Derived Files-Footnote-31233333
-Node: Future Extensions1233447
-Node: Implementation Limitations1234105
-Node: Extension Design1235288
-Node: Old Extension Problems1236442
-Ref: Old Extension Problems-Footnote-11237960
-Node: Extension New Mechanism Goals1238017
-Ref: Extension New Mechanism Goals-Footnote-11241381
-Node: Extension Other Design Decisions1241570
-Node: Extension Future Growth1243683
-Node: Old Extension Mechanism1244519
-Node: Notes summary1246282
-Node: Basic Concepts1247464
-Node: Basic High Level1248145
-Ref: figure-general-flow1248427
-Ref: figure-process-flow1249112
-Ref: Basic High Level-Footnote-11252413
-Node: Basic Data Typing1252598
-Node: Glossary1255926
-Node: Copying1287873
-Node: GNU Free Documentation License1325412
-Node: Index1350530
+Node: Foreword343935
+Node: Foreword448377
+Node: Preface49909
+Ref: Preface-Footnote-152768
+Ref: Preface-Footnote-252875
+Ref: Preface-Footnote-353109
+Node: History53251
+Node: Names55603
+Ref: Names-Footnote-156697
+Node: This Manual56844
+Ref: This Manual-Footnote-163483
+Node: Conventions63583
+Node: Manual History65937
+Ref: Manual History-Footnote-168932
+Ref: Manual History-Footnote-268973
+Node: How To Contribute69047
+Node: Acknowledgments69698
+Node: Getting Started74584
+Node: Running gawk77023
+Node: One-shot78213
+Node: Read Terminal79476
+Node: Long81469
+Node: Executable Scripts82982
+Ref: Executable Scripts-Footnote-185777
+Node: Comments85880
+Node: Quoting88364
+Node: DOS Quoting93881
+Node: Sample Data Files95936
+Node: Very Simple98531
+Node: Two Rules103433
+Node: More Complex105318
+Node: Statements/Lines108184
+Ref: Statements/Lines-Footnote-1112643
+Node: Other Features112908
+Node: When113844
+Ref: When-Footnote-1115598
+Node: Intro Summary115663
+Node: Invoking Gawk116547
+Node: Command Line118061
+Node: Options118859
+Ref: Options-Footnote-1135955
+Ref: Options-Footnote-2136185
+Node: Other Arguments136210
+Node: Naming Standard Input139157
+Node: Environment Variables140250
+Node: AWKPATH Variable140808
+Ref: AWKPATH Variable-Footnote-1144219
+Ref: AWKPATH Variable-Footnote-2144253
+Node: AWKLIBPATH Variable144514
+Node: Other Environment Variables145771
+Node: Exit Status149592
+Node: Include Files150269
+Node: Loading Shared Libraries154017
+Node: Obsolete155445
+Node: Undocumented156137
+Node: Invoking Summary156434
+Node: Regexp158094
+Node: Regexp Usage159548
+Node: Escape Sequences161585
+Node: Regexp Operators167817
+Ref: Regexp Operators-Footnote-1175233
+Ref: Regexp Operators-Footnote-2175380
+Node: Bracket Expressions175478
+Ref: table-char-classes177954
+Node: Leftmost Longest181091
+Node: Computed Regexps182394
+Node: GNU Regexp Operators185821
+Node: Case-sensitivity189500
+Ref: Case-sensitivity-Footnote-1192387
+Ref: Case-sensitivity-Footnote-2192622
+Node: Regexp Summary192730
+Node: Reading Files194196
+Node: Records196465
+Node: awk split records197198
+Node: gawk split records202129
+Ref: gawk split records-Footnote-1206669
+Node: Fields206706
+Node: Nonconstant Fields209447
+Ref: Nonconstant Fields-Footnote-1211683
+Node: Changing Fields211887
+Node: Field Separators217815
+Node: Default Field Splitting220513
+Node: Regexp Field Splitting221631
+Node: Single Character Fields224984
+Node: Command Line Field Separator226044
+Node: Full Line Fields229262
+Ref: Full Line Fields-Footnote-1230784
+Ref: Full Line Fields-Footnote-2230830
+Node: Field Splitting Summary230931
+Node: Constant Size233005
+Node: Fixed width data233737
+Node: Skipping intervening237204
+Node: Allowing trailing data238002
+Node: Fields with fixed data239039
+Node: Splitting By Content240557
+Ref: Splitting By Content-Footnote-1244207
+Node: Testing field creation244370
+Node: Multiple Line245991
+Ref: Multiple Line-Footnote-1251875
+Node: Getline252054
+Node: Plain Getline254523
+Node: Getline/Variable257164
+Node: Getline/File258315
+Node: Getline/Variable/File259703
+Ref: Getline/Variable/File-Footnote-1261308
+Node: Getline/Pipe261396
+Node: Getline/Variable/Pipe264103
+Node: Getline/Coprocess265238
+Node: Getline/Variable/Coprocess266505
+Node: Getline Notes267247
+Node: Getline Summary270044
+Ref: table-getline-variants270468
+Node: Read Timeout271216
+Ref: Read Timeout-Footnote-1275122
+Node: Retrying Input275180
+Node: Command-line directories276379
+Node: Input Summary277285
+Node: Input Exercises280457
+Node: Printing281185
+Node: Print283019
+Node: Print Examples284476
+Node: Output Separators287256
+Node: OFMT289273
+Node: Printf290629
+Node: Basic Printf291414
+Node: Control Letters292988
+Node: Format Modifiers296976
+Node: Printf Examples302991
+Node: Redirection305477
+Node: Special FD312318
+Ref: Special FD-Footnote-1315486
+Node: Special Files315560
+Node: Other Inherited Files316177
+Node: Special Network317178
+Node: Special Caveats318038
+Node: Close Files And Pipes318987
+Ref: table-close-pipe-return-values325894
+Ref: Close Files And Pipes-Footnote-1326677
+Ref: Close Files And Pipes-Footnote-2326825
+Node: Nonfatal326977
+Node: Output Summary329302
+Node: Output Exercises330524
+Node: Expressions331203
+Node: Values332391
+Node: Constants333069
+Node: Scalar Constants333760
+Ref: Scalar Constants-Footnote-1334624
+Node: Nondecimal-numbers334874
+Node: Regexp Constants337875
+Node: Using Constant Regexps338401
+Node: Standard Regexp Constants339023
+Node: Strong Regexp Constants342211
+Node: Variables345169
+Node: Using Variables345826
+Node: Assignment Options347736
+Node: Conversion349609
+Node: Strings And Numbers350133
+Ref: Strings And Numbers-Footnote-1353196
+Node: Locale influences conversions353305
+Ref: table-locale-affects356063
+Node: All Operators356681
+Node: Arithmetic Ops357310
+Node: Concatenation359816
+Ref: Concatenation-Footnote-1362663
+Node: Assignment Ops362770
+Ref: table-assign-ops367761
+Node: Increment Ops369074
+Node: Truth Values and Conditions372534
+Node: Truth Values373608
+Node: Typing and Comparison374656
+Node: Variable Typing375476
+Ref: Variable Typing-Footnote-1381939
+Ref: Variable Typing-Footnote-2382011
+Node: Comparison Operators382088
+Ref: table-relational-ops382507
+Node: POSIX String Comparison386002
+Ref: POSIX String Comparison-Footnote-1387697
+Ref: POSIX String Comparison-Footnote-2387836
+Node: Boolean Ops387920
+Ref: Boolean Ops-Footnote-1392402
+Node: Conditional Exp392494
+Node: Function Calls394230
+Node: Precedence398107
+Node: Locales401766
+Node: Expressions Summary403398
+Node: Patterns and Actions405971
+Node: Pattern Overview407091
+Node: Regexp Patterns408768
+Node: Expression Patterns409310
+Node: Ranges413091
+Node: BEGIN/END416199
+Node: Using BEGIN/END416960
+Ref: Using BEGIN/END-Footnote-1419696
+Node: I/O And BEGIN/END419802
+Node: BEGINFILE/ENDFILE422116
+Node: Empty425023
+Node: Using Shell Variables425340
+Node: Action Overview427614
+Node: Statements429939
+Node: If Statement431787
+Node: While Statement433282
+Node: Do Statement435310
+Node: For Statement436458
+Node: Switch Statement439616
+Node: Break Statement442002
+Node: Continue Statement444094
+Node: Next Statement445921
+Node: Nextfile Statement448304
+Node: Exit Statement450956
+Node: Built-in Variables453359
+Node: User-modified454492
+Node: Auto-set462259
+Ref: Auto-set-Footnote-1477856
+Ref: Auto-set-Footnote-2478062
+Node: ARGC and ARGV478118
+Node: Pattern Action Summary482331
+Node: Arrays484761
+Node: Array Basics486090
+Node: Array Intro486934
+Ref: figure-array-elements488909
+Ref: Array Intro-Footnote-1491613
+Node: Reference to Elements491741
+Node: Assigning Elements494205
+Node: Array Example494696
+Node: Scanning an Array496455
+Node: Controlling Scanning499477
+Ref: Controlling Scanning-Footnote-1504876
+Node: Numeric Array Subscripts505192
+Node: Uninitialized Subscripts507376
+Node: Delete508995
+Ref: Delete-Footnote-1511747
+Node: Multidimensional511804
+Node: Multiscanning514899
+Node: Arrays of Arrays516490
+Node: Arrays Summary521257
+Node: Functions523350
+Node: Built-in524388
+Node: Calling Built-in525469
+Node: Numeric Functions527465
+Ref: Numeric Functions-Footnote-1532410
+Ref: Numeric Functions-Footnote-2532767
+Ref: Numeric Functions-Footnote-3532815
+Node: String Functions533087
+Ref: String Functions-Footnote-1556745
+Ref: String Functions-Footnote-2556873
+Ref: String Functions-Footnote-3557121
+Node: Gory Details557208
+Ref: table-sub-escapes558999
+Ref: table-sub-proposed560518
+Ref: table-posix-sub561881
+Ref: table-gensub-escapes563422
+Ref: Gory Details-Footnote-1564245
+Node: I/O Functions564399
+Ref: table-system-return-values570981
+Ref: I/O Functions-Footnote-1572961
+Ref: I/O Functions-Footnote-2573109
+Node: Time Functions573229
+Ref: Time Functions-Footnote-1583896
+Ref: Time Functions-Footnote-2583964
+Ref: Time Functions-Footnote-3584122
+Ref: Time Functions-Footnote-4584233
+Ref: Time Functions-Footnote-5584345
+Ref: Time Functions-Footnote-6584572
+Node: Bitwise Functions584838
+Ref: table-bitwise-ops585432
+Ref: Bitwise Functions-Footnote-1591465
+Ref: Bitwise Functions-Footnote-2591638
+Node: Type Functions591829
+Node: I18N Functions594504
+Node: User-defined596155
+Node: Definition Syntax596960
+Ref: Definition Syntax-Footnote-1602647
+Node: Function Example602718
+Ref: Function Example-Footnote-1605640
+Node: Function Caveats605662
+Node: Calling A Function606180
+Node: Variable Scope607138
+Node: Pass By Value/Reference610132
+Node: Return Statement613631
+Node: Dynamic Typing616610
+Node: Indirect Calls617540
+Ref: Indirect Calls-Footnote-1627791
+Node: Functions Summary627919
+Node: Library Functions630624
+Ref: Library Functions-Footnote-1634231
+Ref: Library Functions-Footnote-2634374
+Node: Library Names634545
+Ref: Library Names-Footnote-1638221
+Ref: Library Names-Footnote-2638444
+Node: General Functions638530
+Node: Strtonum Function639633
+Node: Assert Function642655
+Node: Round Function645981
+Node: Cliff Random Function647522
+Node: Ordinal Functions648538
+Ref: Ordinal Functions-Footnote-1651601
+Ref: Ordinal Functions-Footnote-2651853
+Node: Join Function652063
+Ref: Join Function-Footnote-1653833
+Node: Getlocaltime Function654033
+Node: Readfile Function657775
+Node: Shell Quoting659747
+Node: Data File Management661148
+Node: Filetrans Function661780
+Node: Rewind Function665876
+Node: File Checking667786
+Ref: File Checking-Footnote-1669120
+Node: Empty Files669321
+Node: Ignoring Assigns671300
+Node: Getopt Function672850
+Ref: Getopt Function-Footnote-1684319
+Node: Passwd Functions684519
+Ref: Passwd Functions-Footnote-1693358
+Node: Group Functions693446
+Ref: Group Functions-Footnote-1701344
+Node: Walking Arrays701551
+Node: Library Functions Summary704559
+Node: Library Exercises705965
+Node: Sample Programs706430
+Node: Running Examples707200
+Node: Clones707928
+Node: Cut Program709152
+Node: Egrep Program719081
+Ref: Egrep Program-Footnote-1726593
+Node: Id Program726703
+Node: Split Program730383
+Ref: Split Program-Footnote-1733842
+Node: Tee Program733971
+Node: Uniq Program736761
+Node: Wc Program744187
+Ref: Wc Program-Footnote-1748442
+Node: Miscellaneous Programs748536
+Node: Dupword Program749749
+Node: Alarm Program751779
+Node: Translate Program756634
+Ref: Translate Program-Footnote-1761199
+Node: Labels Program761469
+Ref: Labels Program-Footnote-1764820
+Node: Word Sorting764904
+Node: History Sorting768976
+Node: Extract Program770811
+Node: Simple Sed778340
+Node: Igawk Program781414
+Ref: Igawk Program-Footnote-1795745
+Ref: Igawk Program-Footnote-2795947
+Ref: Igawk Program-Footnote-3796069
+Node: Anagram Program796184
+Node: Signature Program799246
+Node: Programs Summary800493
+Node: Programs Exercises801707
+Ref: Programs Exercises-Footnote-1805836
+Node: Advanced Features805927
+Node: Nondecimal Data807917
+Node: Array Sorting809508
+Node: Controlling Array Traversal810208
+Ref: Controlling Array Traversal-Footnote-1818575
+Node: Array Sorting Functions818693
+Ref: Array Sorting Functions-Footnote-1823784
+Node: Two-way I/O823980
+Ref: Two-way I/O-Footnote-1830531
+Ref: Two-way I/O-Footnote-2830718
+Node: TCP/IP Networking830800
+Node: Profiling833918
+Ref: Profiling-Footnote-1842590
+Node: Advanced Features Summary842913
+Node: Internationalization844757
+Node: I18N and L10N846237
+Node: Explaining gettext846924
+Ref: Explaining gettext-Footnote-1852816
+Ref: Explaining gettext-Footnote-2853001
+Node: Programmer i18n853166
+Ref: Programmer i18n-Footnote-1858115
+Node: Translator i18n858164
+Node: String Extraction858958
+Ref: String Extraction-Footnote-1860090
+Node: Printf Ordering860176
+Ref: Printf Ordering-Footnote-1862962
+Node: I18N Portability863026
+Ref: I18N Portability-Footnote-1865482
+Node: I18N Example865545
+Ref: I18N Example-Footnote-1868351
+Node: Gawk I18N868424
+Node: I18N Summary869069
+Node: Debugger870410
+Node: Debugging871412
+Node: Debugging Concepts871853
+Node: Debugging Terms873662
+Node: Awk Debugging876237
+Node: Sample Debugging Session877143
+Node: Debugger Invocation877677
+Node: Finding The Bug879063
+Node: List of Debugger Commands885541
+Node: Breakpoint Control886874
+Node: Debugger Execution Control890568
+Node: Viewing And Changing Data893930
+Node: Execution Stack897304
+Node: Debugger Info898941
+Node: Miscellaneous Debugger Commands903012
+Node: Readline Support908100
+Node: Limitations908996
+Node: Debugging Summary911105
+Node: Namespaces912384
+Node: Global Namespace913146
+Node: Qualified Names914500
+Node: Default Namespace915497
+Node: Changing The Namespace916238
+Node: Naming Rules917826
+Node: Internal Name Management919675
+Node: Namespace Example920717
+Node: Namespace And Features923186
+Node: Arbitrary Precision Arithmetic924544
+Node: Computer Arithmetic926031
+Ref: table-numeric-ranges929622
+Ref: Computer Arithmetic-Footnote-1930344
+Node: Math Definitions930401
+Ref: table-ieee-formats933715
+Ref: Math Definitions-Footnote-1934318
+Node: MPFR features934423
+Node: FP Math Caution936140
+Ref: FP Math Caution-Footnote-1937212
+Node: Inexactness of computations937581
+Node: Inexact representation938541
+Node: Comparing FP Values939901
+Node: Errors accumulate940983
+Node: Getting Accuracy942416
+Node: Try To Round945126
+Node: Setting precision946025
+Ref: table-predefined-precision-strings946722
+Node: Setting the rounding mode948552
+Ref: table-gawk-rounding-modes948926
+Ref: Setting the rounding mode-Footnote-1952334
+Node: Arbitrary Precision Integers952513
+Ref: Arbitrary Precision Integers-Footnote-1957418
+Node: Checking for MPFR957567
+Node: POSIX Floating Point Problems958864
+Ref: POSIX Floating Point Problems-Footnote-1962735
+Node: Floating point summary962773
+Node: Dynamic Extensions964963
+Node: Extension Intro966516
+Node: Plugin License967782
+Node: Extension Mechanism Outline968579
+Ref: figure-load-extension969018
+Ref: figure-register-new-function970583
+Ref: figure-call-new-function971675
+Node: Extension API Description973737
+Node: Extension API Functions Introduction975379
+Node: General Data Types980713
+Ref: General Data Types-Footnote-1987918
+Node: Memory Allocation Functions988217
+Ref: Memory Allocation Functions-Footnote-1991369
+Node: Constructor Functions991468
+Node: Registration Functions994467
+Node: Extension Functions995152
+Node: Exit Callback Functions1000365
+Node: Extension Version String1001615
+Node: Input Parsers1002278
+Node: Output Wrappers1014985
+Node: Two-way processors1019497
+Node: Printing Messages1021762
+Ref: Printing Messages-Footnote-11022933
+Node: Updating ERRNO1023086
+Node: Requesting Values1023825
+Ref: table-value-types-returned1024562
+Node: Accessing Parameters1025498
+Node: Symbol Table Access1026733
+Node: Symbol table by name1027245
+Ref: Symbol table by name-Footnote-11030135
+Node: Symbol table by cookie1030263
+Ref: Symbol table by cookie-Footnote-11034448
+Node: Cached values1034512
+Ref: Cached values-Footnote-11038048
+Node: Array Manipulation1038139
+Ref: Array Manipulation-Footnote-11039230
+Node: Array Data Types1039267
+Ref: Array Data Types-Footnote-11041925
+Node: Array Functions1042017
+Node: Flattening Arrays1046416
+Node: Creating Arrays1053357
+Node: Redirection API1058126
+Node: Extension API Variables1060968
+Node: Extension Versioning1061601
+Ref: gawk-api-version1062038
+Node: Extension API Informational Variables1063766
+Node: Extension API Boilerplate1064830
+Node: Changes from API V11068692
+Node: Finding Extensions1069352
+Node: Extension Example1069911
+Node: Internal File Description1070709
+Node: Internal File Ops1074789
+Ref: Internal File Ops-Footnote-11086189
+Node: Using Internal File Ops1086329
+Ref: Using Internal File Ops-Footnote-11088712
+Node: Extension Samples1088986
+Node: Extension Sample File Functions1090515
+Node: Extension Sample Fnmatch1098164
+Node: Extension Sample Fork1099651
+Node: Extension Sample Inplace1100869
+Node: Extension Sample Ord1104173
+Node: Extension Sample Readdir1105009
+Ref: table-readdir-file-types1105898
+Node: Extension Sample Revout1106703
+Node: Extension Sample Rev2way1107292
+Node: Extension Sample Read write array1108032
+Node: Extension Sample Readfile1109974
+Node: Extension Sample Time1111069
+Node: Extension Sample API Tests1112417
+Node: gawkextlib1112909
+Node: Extension summary1115356
+Node: Extension Exercises1119058
+Node: Language History1120556
+Node: V7/SVR3.11122212
+Node: SVR41124364
+Node: POSIX1125798
+Node: BTL1127177
+Node: POSIX/GNU1127906
+Node: Feature History1133798
+Node: Common Extensions1148222
+Node: Ranges and Locales1149505
+Ref: Ranges and Locales-Footnote-11154121
+Ref: Ranges and Locales-Footnote-21154148
+Ref: Ranges and Locales-Footnote-31154383
+Node: Contributors1154604
+Node: History summary1160164
+Node: Installation1161544
+Node: Gawk Distribution1162488
+Node: Getting1162972
+Node: Extracting1163933
+Node: Distribution contents1165571
+Node: Unix Installation1171913
+Node: Quick Installation1172595
+Node: Shell Startup Files1175009
+Node: Additional Configuration Options1176098
+Node: Configuration Philosophy1178087
+Node: Non-Unix Installation1180456
+Node: PC Installation1180916
+Node: PC Binary Installation1181754
+Node: PC Compiling1182189
+Node: PC Using1183306
+Node: Cygwin1186351
+Node: MSYS1187121
+Node: VMS Installation1187622
+Node: VMS Compilation1188413
+Ref: VMS Compilation-Footnote-11189642
+Node: VMS Dynamic Extensions1189700
+Node: VMS Installation Details1191385
+Node: VMS Running1193638
+Node: VMS GNV1197917
+Node: VMS Old Gawk1198652
+Node: Bugs1199123
+Node: Bug address1199786
+Node: Usenet1202183
+Node: Maintainers1202960
+Node: Other Versions1204336
+Node: Installation summary1210920
+Node: Notes1211955
+Node: Compatibility Mode1212820
+Node: Additions1213602
+Node: Accessing The Source1214527
+Node: Adding Code1215962
+Node: New Ports1222180
+Node: Derived Files1226668
+Ref: Derived Files-Footnote-11232153
+Ref: Derived Files-Footnote-21232188
+Ref: Derived Files-Footnote-31232786
+Node: Future Extensions1232900
+Node: Implementation Limitations1233558
+Node: Extension Design1234741
+Node: Old Extension Problems1235895
+Ref: Old Extension Problems-Footnote-11237413
+Node: Extension New Mechanism Goals1237470
+Ref: Extension New Mechanism Goals-Footnote-11240834
+Node: Extension Other Design Decisions1241023
+Node: Extension Future Growth1243136
+Node: Old Extension Mechanism1243972
+Node: Notes summary1245735
+Node: Basic Concepts1246917
+Node: Basic High Level1247598
+Ref: figure-general-flow1247880
+Ref: figure-process-flow1248565
+Ref: Basic High Level-Footnote-11251866
+Node: Basic Data Typing1252051
+Node: Glossary1255379
+Node: Copying1287326
+Node: GNU Free Documentation License1324865
+Node: Index1349983
 
 End Tag Table
diff --git a/doc/gawk.texi b/doc/gawk.texi
index eecf82a..cbb4f55 100644
--- a/doc/gawk.texi
+++ b/doc/gawk.texi
@@ -902,7 +902,7 @@ particular records in a file and perform operations upon 
them.
 * Naming Rules::                        Namespace and Component Naming Rules.
 * Internal Name Management::            How names are stored internally.
 * Namespace Example::                   An example of code using a namespace.
-* Namespace Misc::                      Namespace notes for developers.
+* Namespace And Features::      Namespaces and other @command{gawk} features.
 * Computer Arithmetic::                 A quick intro to computer math.
 * Math Definitions::                    Defining terms used.
 * MPFR features::                       The MPFR features in @command{gawk}.
@@ -31247,7 +31247,7 @@ This @value{CHAPTER} describes a feature that is 
specific to @command{gawk}.
 * Naming Rules::                Namespace and Component Naming Rules.
 * Internal Name Management::    How names are stored internally.
 * Namespace Example::           An example of code using a namespace.
-* Namespace Misc::              Namespace notes for developers.
+* Namespace And Features::      Namespaces and other @command{gawk} features.
 @end menu
 
 @node Global Namespace
@@ -31570,70 +31570,31 @@ $ @kbd{gawk -f ns_passwd.awk -f testpasswd.awk}
 @dots{}
 @end example
 
address@hidden Namespace Misc
address@hidden Miscellaneous Notes
address@hidden Namespace And Features
address@hidden Namespaces and Other @command{gawk} Features
 
address@hidden: Finish revising this material.
+This @value{SECTION} looks at how the namespace facility interacts
+with other important @command{gawk} features.
 
-Other notes for reviewers:
+The profiler and pretty-printer (@pxref{Profiling}) have been enhanced
+to understand namespaces and the namespace naming rules described in
address@hidden Rules}.  In particular, the output groups functions in the same
+namespace together, and has @samp{@@namespace} directives in front
+of rules as necessary. This allows component names to be
+simple identifiers, instead of using qualified identifiers everywhere.
 
address@hidden @asis
address@hidden Profiler:
-When profiling, we include the namespace in the @code{Op_Rule}
-and @code{Op_Func} instructions.  If the namespace
-is different from the previous
-one, we output an @samp{@@namespace} statement.  For each identifier,
-if it starts with the current namespace, we output only the simple part
-(DONE).
-
address@hidden Debugger:
-Simply print fully qualified names all the time. Maybe allow a
address@hidden @var{xxx}} command in the debugger to set the
-namespace and it will use that to create fully qualified names?
-Have to be careful about all uppercase names though.
-
-
address@hidden Extension functions
-Revise the current macros to pass @code{"awk"} as the namespace
-argument and add new macros with @samp{_ns} in the name that
-pass the namespace of the extension.  This preserves backwards
-compatibility at the source level while providing access to namespaces
-as needed.
-
-Actually, since we've decided that @code{awk} namespace variables and
-function are stored unadorned, the current macros that pass @code{""}
-would continue to work. Internally, we need to recognize @code{"awk"} and
address@hidden fully qualify the name before storing it in the symbol table.
-(Both DONE).
-
address@hidden More on Extension Functions
address@hidden 1
address@hidden
-Function and variables names need to be simple identifiers. This is now
-checked in the code. Allowing both namespace + identifier
-and @code{foo::bar} would be confusing to document and to code and to test.
-
address@hidden
-Function and variable names cannot be reserved words. This is now
-checked.
-
address@hidden
-Namespace names need to be valid identifiers. They cannot be
-keywords or reserved function names.
+Interaction with the debugger (@pxref{Debugging}) has not had to change
+(at least as of this writing).  Some of the internal byte codes changed
+in order to accomodate namespaces, and the debugger's @code{dump} command
+was adjusted to match.
 
address@hidden
-It's debatable if there should be a default namespace for a plugin.
-Should it be the plugin's name?  Probably not.
-
-So, the initial plugin API allowed for (but did not use) a namespace
-for installing functions, but didn't for variables. That's been fixed.
-
address@hidden
-Should the @code{ext_id}, which is currently just a null pointer,
-be made to point to something?  What would be carry around in it?
address@hidden enumerate
-
address@hidden table
+The extension API (@pxref{Dynamic Extensions}) has always allowed for
+placing functions into a different namespace, although this was
+never implemented.  However, the symbol lookup and symbol update routines
+did not have provision for including a namespace. That has now been
+corrected. @xref{Extension Sample Inplace}, for a nice example of
+an extension that leverages a namespace used by cooperating @command{awk}
+and C code.
 
 @node Arbitrary Precision Arithmetic
 @chapter Arithmetic and Arbitrary-Precision Arithmetic with @command{gawk}
@@ -34522,6 +34483,13 @@ An extension can look up the value of @command{gawk}'s 
special variables.
 However, with the exception of the @code{PROCINFO} array, an extension
 cannot change any of those variables.
 
+When searching for or updating variables outside the @code{awk} namespace
+(@pxref{Namespaces}), function and variable names must be simple
address@hidden both namespace plus identifier and
address@hidden::bar} would have been too confusing to document, and to code
+and test.} In addition, namespace names and variable and function names
+must follow the rules given in @ref{Naming Rules}.
+
 @node Symbol table by cookie
 @subsubsection Variable Access and Update by Cookie
 
diff --git a/doc/gawktexi.in b/doc/gawktexi.in
index 6800a09..3d90157 100644
--- a/doc/gawktexi.in
+++ b/doc/gawktexi.in
@@ -897,7 +897,7 @@ particular records in a file and perform operations upon 
them.
 * Naming Rules::                        Namespace and Component Naming Rules.
 * Internal Name Management::            How names are stored internally.
 * Namespace Example::                   An example of code using a namespace.
-* Namespace Misc::                      Namespace notes for developers.
+* Namespace And Features::      Namespaces and other @command{gawk} features.
 * Computer Arithmetic::                 A quick intro to computer math.
 * Math Definitions::                    Defining terms used.
 * MPFR features::                       The MPFR features in @command{gawk}.
@@ -30261,7 +30261,7 @@ This @value{CHAPTER} describes a feature that is 
specific to @command{gawk}.
 * Naming Rules::                Namespace and Component Naming Rules.
 * Internal Name Management::    How names are stored internally.
 * Namespace Example::           An example of code using a namespace.
-* Namespace Misc::              Namespace notes for developers.
+* Namespace And Features::      Namespaces and other @command{gawk} features.
 @end menu
 
 @node Global Namespace
@@ -30584,70 +30584,31 @@ $ @kbd{gawk -f ns_passwd.awk -f testpasswd.awk}
 @dots{}
 @end example
 
address@hidden Namespace Misc
address@hidden Miscellaneous Notes
address@hidden Namespace And Features
address@hidden Namespaces and Other @command{gawk} Features
 
address@hidden: Finish revising this material.
+This @value{SECTION} looks at how the namespace facility interacts
+with other important @command{gawk} features.
 
-Other notes for reviewers:
+The profiler and pretty-printer (@pxref{Profiling}) have been enhanced
+to understand namespaces and the namespace naming rules described in
address@hidden Rules}.  In particular, the output groups functions in the same
+namespace together, and has @samp{@@namespace} directives in front
+of rules as necessary. This allows component names to be
+simple identifiers, instead of using qualified identifiers everywhere.
 
address@hidden @asis
address@hidden Profiler:
-When profiling, we include the namespace in the @code{Op_Rule}
-and @code{Op_Func} instructions.  If the namespace
-is different from the previous
-one, we output an @samp{@@namespace} statement.  For each identifier,
-if it starts with the current namespace, we output only the simple part
-(DONE).
-
address@hidden Debugger:
-Simply print fully qualified names all the time. Maybe allow a
address@hidden @var{xxx}} command in the debugger to set the
-namespace and it will use that to create fully qualified names?
-Have to be careful about all uppercase names though.
-
-
address@hidden Extension functions
-Revise the current macros to pass @code{"awk"} as the namespace
-argument and add new macros with @samp{_ns} in the name that
-pass the namespace of the extension.  This preserves backwards
-compatibility at the source level while providing access to namespaces
-as needed.
-
-Actually, since we've decided that @code{awk} namespace variables and
-function are stored unadorned, the current macros that pass @code{""}
-would continue to work. Internally, we need to recognize @code{"awk"} and
address@hidden fully qualify the name before storing it in the symbol table.
-(Both DONE).
-
address@hidden More on Extension Functions
address@hidden 1
address@hidden
-Function and variables names need to be simple identifiers. This is now
-checked in the code. Allowing both namespace + identifier
-and @code{foo::bar} would be confusing to document and to code and to test.
-
address@hidden
-Function and variable names cannot be reserved words. This is now
-checked.
-
address@hidden
-Namespace names need to be valid identifiers. They cannot be
-keywords or reserved function names.
+Interaction with the debugger (@pxref{Debugging}) has not had to change
+(at least as of this writing).  Some of the internal byte codes changed
+in order to accomodate namespaces, and the debugger's @code{dump} command
+was adjusted to match.
 
address@hidden
-It's debatable if there should be a default namespace for a plugin.
-Should it be the plugin's name?  Probably not.
-
-So, the initial plugin API allowed for (but did not use) a namespace
-for installing functions, but didn't for variables. That's been fixed.
-
address@hidden
-Should the @code{ext_id}, which is currently just a null pointer,
-be made to point to something?  What would be carry around in it?
address@hidden enumerate
-
address@hidden table
+The extension API (@pxref{Dynamic Extensions}) has always allowed for
+placing functions into a different namespace, although this was
+never implemented.  However, the symbol lookup and symbol update routines
+did not have provision for including a namespace. That has now been
+corrected. @xref{Extension Sample Inplace}, for a nice example of
+an extension that leverages a namespace used by cooperating @command{awk}
+and C code.
 
 @node Arbitrary Precision Arithmetic
 @chapter Arithmetic and Arbitrary-Precision Arithmetic with @command{gawk}
@@ -33536,6 +33497,13 @@ An extension can look up the value of @command{gawk}'s 
special variables.
 However, with the exception of the @code{PROCINFO} array, an extension
 cannot change any of those variables.
 
+When searching for or updating variables outside the @code{awk} namespace
+(@pxref{Namespaces}), function and variable names must be simple
address@hidden both namespace plus identifier and
address@hidden::bar} would have been too confusing to document, and to code
+and test.} In addition, namespace names and variable and function names
+must follow the rules given in @ref{Naming Rules}.
+
 @node Symbol table by cookie
 @subsubsection Variable Access and Update by Cookie
 

-----------------------------------------------------------------------

Summary of changes:
 doc/ChangeLog   |    5 +
 doc/gawk.info   | 1259 +++++++++++++++++++++++++++----------------------------
 doc/gawk.texi   |   92 ++--
 doc/gawktexi.in |   92 ++--
 4 files changed, 686 insertions(+), 762 deletions(-)


hooks/post-receive
-- 
gawk



reply via email to

[Prev in Thread] Current Thread [Next in Thread]