#!/usr/bin/env python

import os
import re
import time
from pprint import pprint

###

c99URL = 'http://www.open-std.org/jtc1/sc22/wg14/www/docs/n1124.pdf'
c99TOC = [('Foreword', 'xi'),
('Introduction', 'xiv'),
('1. Scope', '1'),
('2. Normative references', '2'),
('3. Terms, definitions, and symbols', '3'),
('4. Conformance', '7'),
('5. Environment', '9'),
('5.1 Conceptual models', '9'),
('5.1.1 Translation environment', '9'),
('5.1.2 Execution environments', '11'),
('5.2 Environmental considerations', '17'),
('5.2.1 Character sets', '17'),
('5.2.2 Character display semantics', '19'),
('5.2.3 Signals and interrupts', '20'),
('5.2.4 Environmental limits', '20'),
('6. Language', '29'),
('6.1 Notation', '29'),
('6.2 Concepts', '29'),
('6.2.1 Scopes of identifiers', '29'),
('6.2.2 Linkages of identifiers', '30'),
('6.2.3 Name spaces of identifiers', '31'),
('6.2.4 Storage durations of objects', '32'),
('6.2.5 Types', '33'),
('6.2.6 Representations of types', '37'),
('6.2.7 Compatible type and composite type', '40'),
('6.3 Conversions', '42'),
('6.3.1 Arithmetic operands', '42'),
('6.3.2 Other operands', '46'),
('6.4 Lexical elements', '49'),
('6.4.1 Keywords', '50'),
('6.4.2 Identifiers', '51'),
('6.4.3 Universal character names', '53'),
('6.4.4 Constants', '54'),
('6.4.5 String literals', '62'),
('6.4.6 Punctuators', '63'),
('6.4.7 Header names', '64'),
('6.4.8 Preprocessing numbers', '65'),
('6.4.9 Comments', '66'),
('6.5 Expressions', '67'),
('6.5.1 Primary expressions', '69'),
('6.5.2 Postfix operators', '69'),
('6.5.3 Unary operators', '78'),
('6.5.4 Cast operators', '81'),
('6.5.5 Multiplicative operators', '82'),
('6.5.6 Additive operators', '82'),
('6.5.7 Bitwise shift operators', '84'),
('6.5.8 Relational operators', '85'),
('6.5.9 Equality operators', '86'),
('6.5.10 Bitwise AND operator', '87'),
('6.5.11 Bitwise exclusive OR operator', '88'),
('6.5.12 Bitwise inclusive OR operator', '88'),
('6.5.13 Logical AND operator', '89'),
('6.5.14 Logical OR operator', '89'),
('6.5.15 Conditional operator', '90'),
('6.5.16 Assignment operators', '91'),
('6.5.17 Comma operator', '94'),
('6.6 Constant expressions', '95'),
('6.7 Declarations', '97'),
('6.7.1 Storage-class specifiers', '98'),
('6.7.2 Type specifiers', '99'),
('6.7.3 Type qualifiers', '108'),
('6.7.4 Function specifiers', '112'),
('6.7.5 Declarators', '114'),
('6.7.6 Type names', '122'),
('6.7.7 Type definitions', '123'),
('6.7.8 Initialization', '125'),
('6.8 Statements and blocks', '131'),
('6.8.1 Labeled statements', '131'),
('6.8.2 Compound statement', '132'),
('6.8.3 Expression and null statements', '132'),
('6.8.4 Selection statements', '133'),
('6.8.5 Iteration statements', '135'),
('6.8.6 Jump statements', '136'),
('6.9 External definitions', '140'),
('6.9.1 Function definitions', '141'),
('6.9.2 External object definitions', '143'),
('6.10 Preprocessing directives', '145'),
('6.10.1 Conditional inclusion', '147'),
('6.10.2 Source file inclusion', '149'),
('6.10.3 Macro replacement', '151'),
('6.10.4 Line control', '158'),
('6.10.5 Error directive', '159'),
('6.10.6 Pragma directive', '159'),
('6.10.7 Null directive', '160'),
('6.10.8 Predefined macro names', '160'),
('6.10.9 Pragma operator', '161'),
('6.11 Future language directions', '163'),
('6.11.1 Floating types', '163'),
('6.11.2 Linkages of identifiers', '163'),
('6.11.3 External names', '163'),
('6.11.4 Character escape sequences', '163'),
('6.11.5 Storage-class specifiers', '163'),
('6.11.6 Function declarators', '163'),
('6.11.7 Function definitions', '163'),
('6.11.8 Pragma directives', '163'),
('6.11.9 Predefined macro names', '163'),
('7. Library', '164'),
('7.1 Introduction', '164'),
('7.1.1 Definitions of terms', '164'),
('7.1.2 Standard headers', '165'),
('7.1.3 Reserved identifiers', '166'),
('7.1.4 Use of library functions', '166'),
('7.2 Diagnostics <assert.h>', '169'),
('7.2.1 Program diagnostics', '169'),
('7.3 Complex arithmetic <complex.h>', '170'),
('7.3.1 Introduction', '170'),
('7.3.2 Conventions', '170'),
('7.3.3 Branch cuts', '171'),
('7.3.4 The CX_LIMITED_RANGE pragma', '171'),
('7.3.5 Trigonometric functions', '172'),
('7.3.6 Hyperbolic functions', '174'),
('7.3.7 Exponential and logarithmic functions', '176'),
('7.3.8 Power and absolute-value functions', '177'),
('7.3.9 Manipulation functions', '178'),
('7.4 Character handling <ctype.h>', '181'),
('7.4.1 Character classification functions', '181'),
('7.4.2 Character case mapping functions', '184'),
('7.5 Errors <errno.h>', '186'),
('7.6 Floating-point environment <fenv.h>', '187'),
('7.6.1 The FENV_ACCESS pragma', '189'),
('7.6.2 Floating-point exceptions', '190'),
('7.6.3 Rounding', '193'),
('7.6.4 Environment', '194'),
('7.7 Characteristics of floating types <float.h>', '197'),
('7.8 Format conversion of integer types <inttypes.h>', '198'),
('7.8.1 Macros for format specifiers', '198'),
('7.8.2 Functions for greatest-width integer types', '199'),
('7.9 Alternative spellings <iso646.h>', '202'),
('7.10 Sizes of integer types <limits.h>', '203'),
('7.11 Localization <locale.h>', '204'),
('7.11.1 Locale control', '205'),
('7.11.2 Numeric formatting convention inquiry', '206'),
('7.12 Mathematics <math.h>', '212'),
('7.12.1 Treatment of error conditions', '214'),
('7.12.2 The FP_CONTRACT pragma', '215'),
('7.12.3 Classification macros', '216'),
('7.12.4 Trigonometric functions', '218'),
('7.12.5 Hyperbolic functions', '221'),
('7.12.6 Exponential and logarithmic functions', '223'),
('7.12.7 Power and absolute-value functions', '228'),
('7.12.8 Error and gamma functions', '230'),
('7.12.9 Nearest integer functions', '231'),
('7.12.10 Remainder functions', '235'),
('7.12.11 Manipulation functions', '236'),
('7.12.12 Maximum, minimum, and positive difference functions', '238'),
('7.12.13 Floating multiply-add', '239'),
('7.12.14 Comparison macros', '240'),
('7.13 Nonlocal jumps <setjmp.h>', '243'),
('7.13.1 Save calling environment', '243'),
('7.13.2 Restore calling environment', '244'),
('7.14 Signal handling <signal.h>', '246'),
('7.14.1 Specify signal handling', '247'),
('7.14.2 Send signal', '248'),
('7.15 Variable arguments <stdarg.h>', '249'),
('7.15.1 Variable argument list access macros', '249'),
('7.16 Boolean type and values <stdbool.h>', '253'),
('7.17 Common definitions <stddef.h>', '254'),
('7.18 Integer types <stdint.h>', '255'),
('7.18.1 Integer types', '255'),
('7.18.2 Limits of specified-width integer types', '257'),
('7.18.3 Limits of other integer types', '259'),
('7.18.4 Macros for integer constants', '260'),
('7.19 Input/output <stdio.h>', '262'),
('7.19.1 Introduction', '262'),
('7.19.2 Streams', '264'),
('7.19.3 Files', '266'),
('7.19.4 Operations on files', '268'),
('7.19.5 File access functions', '270'),
('7.19.6 Formatted input/output functions', '274'),
('7.19.7 Character input/output functions', '296'),
('7.19.8 Direct input/output functions', '301'),
('7.19.9 File positioning functions', '302'),
('7.19.10 Error-handling functions', '304'),
('7.20 General utilities <stdlib.h>', '306'),
('7.20.1 Numeric conversion functions', '307'),
('7.20.2 Pseudo-random sequence generation functions', '312'),
('7.20.3 Memory management functions', '313'),
('7.20.4 Communication with the environment', '315'),
('7.20.5 Searching and sorting utilities', '318'),
('7.20.6 Integer arithmetic functions', '320'),
('7.20.7 Multibyte/wide character conversion functions', '321'),
('7.20.8 Multibyte/wide string conversion functions', '323'),
('7.21 String handling <string.h>', '325'),
('7.21.1 String function conventions', '325'),
('7.21.2 Copying functions', '325'),
('7.21.3 Concatenation functions', '327'),
('7.21.4 Comparison functions', '328'),
('7.21.5 Search functions', '330'),
('7.21.6 Miscellaneous functions', '333'),
('7.22 Type-generic math <tgmath.h>', '335'),
('7.23 Date and time <time.h>', '338'),
('7.23.1 Components of time', '338'),
('7.23.2 Time manipulation functions', '339'),
('7.23.3 Time conversion functions', '341'),
('7.24 Extended multibyte and wide character utilities <wchar.h>', '348'),
('7.24.1 Introduction', '348'),
('7.24.2 Formatted wide character input/output functions', '349'),
('7.24.3 Wide character input/output functions', '367'),
('7.24.4 General wide string utilities', '371'),
('7.24.5 Wide character time conversion functions', '385'),
('7.24.6 Extended multibyte/wide character conversion utilities', '386'),
('7.25 Wide character classification and mapping utilities <wctype.h>',
  '393'),
('7.25.1 Introduction', '393'),
('7.25.2 Wide character classification utilities', '394'),
('7.25.3 Wide character case mapping utilities', '399'),
('7.26 Future library directions', '401'),
('7.26.1 Complex arithmetic <complex.h>', '401'),
('7.26.2 Character handling <ctype.h>', '401'),
('7.26.3 Errors <errno.h>', '401'),
('7.26.4 Format conversion of integer types <inttypes.h>', '401'),
('7.26.5 Localization <locale.h>', '401'),
('7.26.6 Signal handling <signal.h>', '401'),
('7.26.7 Boolean type and values <stdbool.h>', '401'),
('7.26.8 Integer types <stdint.h>', '401'),
('7.26.9 Input/output <stdio.h>', '402'),
('7.26.10 General utilities <stdlib.h>', '402'),
('7.26.11 String handling <string.h>', '402'),
('<wchar.h>', '402'),
('<wctype.h>', '402'),
('Annex A (informative) Language syntax summary', '403'),
('A.1 Lexical grammar', '403'),
('A.2 Phrase structure grammar', '409'),
('A.3 Preprocessing directives', '416'),
('Annex B (informative) Library summary', '418'),
('B.1 Diagnostics <assert.h>', '418'),
('B.2 Complex <complex.h>', '418'),
('B.3 Character handling <ctype.h>', '420'),
('B.4 Errors <errno.h>', '420'),
('B.5 Floating-point environment <fenv.h>', '420'),
('B.6 Characteristics of floating types <float.h>', '421'),
('B.7 Format conversion of integer types <inttypes.h>', '421'),
('B.8 Alternative spellings <iso646.h>', '422'),
('B.9 Sizes of integer types <limits.h>', '422'),
('B.10 Localization <locale.h>', '422'),
('B.11 Mathematics <math.h>', '422'),
('B.12 Nonlocal jumps <setjmp.h>', '427'),
('B.13 Signal handling <signal.h>', '427'),
('B.14 Variable arguments <stdarg.h>', '427'),
('B.15 Boolean type and values <stdbool.h>', '427'),
('B.16 Common definitions <stddef.h>', '428'),
('B.17 Integer types <stdint.h>', '428'),
('B.18 Input/output <stdio.h>', '428'),
('B.19 General utilities <stdlib.h>', '430'),
('B.20 String handling <string.h>', '432'),
('B.21 Type-generic math <tgmath.h>', '433'),
('B.22 Date and time <time.h>', '433'),
('B.23 Extended multibyte/wide character utilities <wchar.h>', '434'),
('B.24 Wide character classification and mapping utilities <wctype.h>',
  '436'),
('Annex C (informative) Sequence points', '438'),
('Annex D (normative) Universal character names for identifiers', '439'),
('Annex E (informative) Implementation limits', '441'),
('Annex F (normative) IEC 60559 floating-point arithmetic', '443'),
('F.1 Introduction', '443'),
('F.2 Types', '443'),
('F.3 Operators and functions', '444'),
('F.4 Floating to integer conversion', '446'),
('F.5 Binary-decimal conversion', '446'),
('F.6 Contracted expressions', '447'),
('F.7 Floating-point environment', '447'),
('F.8 Optimization', '450'),
('F.9 Mathematics <math.h>', '453'),
('Annex G (informative) IEC 60559-compatible complex arithmetic', '466'),
('G.1 Introduction', '466'),
('G.2 Types', '466'),
('G.3 Conventions', '466'),
('G.4 Conversions', '467'),
('G.5 Binary operators', '467'),
('G.6 Complex arithmetic <complex.h>', '471'),
('G.7 Type-generic math <tgmath.h>', '479'),
('Annex H (informative) Language independent arithmetic', '480'),
('H.1 Introduction', '480'),
('H.2 Types', '480'),
('H.3 Notification', '484'),
('Annex I (informative) Common warnings', '486'),
('Annex J (informative) Portability issues', '488'),
('J.1 Unspecified behavior', '488'),
('J.2 Undefined behavior', '491'),
('J.3 Implementation-defined behavior', '504'),
('J.4 Locale-specific behavior', '511'),
('J.5 Common extensions', '512'),
('Bibliography', '515'),
('Index', '517')]

cXXURL = 'http://open-std.org/jtc1/sc22/wg21/docs/papers/2008/n2723.pdf'
cXXTOC = [('Contents', 'ii'),
('List of Tables', 'ix'),
('1 General', '1'),
('1.1 Scope', '1'),
('1.2 Normative references', '1'),
('1.3 Definitions', '2'),
('1.4 Implementation compliance', '4'),
('1.5 Structure of this International Standard', '5'),
('1.6 Syntax notation', '5'),
('1.7 The C++ memory model', '6'),
('1.8 The C++ object model', '6'),
('1.9 Program execution', '7'),
('1.10 Multi-threaded executions and data races', '10'),
('1.11 Acknowledgments', '13'),
('2 Lexical conventions', '15'),
('2.1 Phases of translation', '15'),
('2.2 Character sets', '16'),
('2.3 Trigraph sequences', '17'),
('2.4 Preprocessing tokens', '17'),
('2.5 Alternative tokens', '18'),
('2.6 Tokens', '19'),
('2.7 Comments', '19'),
('2.8 Header names', '19'),
('2.9 Preprocessing numbers', '20'),
('2.10 Identifiers', '20'),
('2.11 Keywords', '20'),
('2.12 Operators and punctuators', '21'),
('2.13 Literals', '21'),
('3 Basic concepts', '29'),
('3.1 Declarations and definitions', '29'),
('3.2 One definition rule', '31'),
('3.3 Declarative regions and scopes', '33'),
('3.4 Name lookup', '38'),
('3.5 Program and linkage', '51'),
('3.6 Start and termination', '54'),
('3.7 Storage duration', '58'),
('3.8 Object Lifetime', '62'),
('3.9 Types', '65'),
('3.10 Lvalues and rvalues', '70'),
('3.11 Alignment', '72'),
('4 Standard conversions', '73'),
('4.1 Lvalue-to-rvalue conversion', '74'),
('4.2 Array-to-pointer conversion', '74'),
('4.3 Function-to-pointer conversion', '74'),
('4.4 Qualification conversions', '74'),
('4.5 Integral promotions', '75'),
('4.6 Floating point promotion', '76'),
('4.7 Integral conversions', '76'),
('4.8 Floating point conversions', '76'),
('4.9 Floating-integral conversions', '77'),
('4.10 Pointer conversions', '77'),
('4.11 Pointer to member conversions', '77'),
('4.12 Boolean conversions', '78'),
('4.13 Integer conversion rank', '78'),
('5 Expressions', '79'),
('5.1 Primary expressions', '80'),
('5.2 Postfix expressions', '85'),
('5.3 Unary expressions', '96'),
('5.4 Explicit type conversion (cast notation)', '104'),
('5.5 Pointer-to-member operators', '105'),
('5.6 Multiplicative operators', '106'),
('5.7 Additive operators', '106'),
('5.8 Shift operators', '107'),
('5.9 Relational operators', '108'),
('5.10 Equality operators', '109'),
('5.11 Bitwise AND operator', '110'),
('5.12 Bitwise exclusive OR operator', '110'),
('5.13 Bitwise inclusive OR operator', '110'),
('5.14 Logical AND operator', '110'),
('5.15 Logical OR operator', '110'),
('5.16 Conditional operator', '111'),
('5.17 Assignment and compound assignment operators', '112'),
('5.18 Comma operator', '113'),
('5.19 Constant expressions', '113'),
('6 Statements', '116'),
('6.1 Labeled statement', '116'),
('6.2 Expression statement', '116'),
('6.3 Compound statement or block', '116'),
('6.4 Selection statements', '117'),
('6.5 Iteration statements', '118'),
('6.6 Jump statements', '121'),
('6.7 Declaration statement', '122'),
('6.8 Ambiguity resolution', '123'),
('7 Declarations', '125'),
('7.1 Specifiers', '126'),
('7.2 Enumeration declarations', '140'),
('7.3 Namespaces', '143'),
('7.4 The asm declaration', '156'),
('7.5 Linkage specifications', '156'),
('8 Declarators', '160'),
('8.1 Type names', '161'),
('8.2 Ambiguity resolution', '161'),
('8.3 Meaning of declarators', '163'),
('8.4 Function definitions', '175'),
('8.5 Initializers', '177'),
('9 Classes', '191'),
('9.1 Class names', '193'),
('9.2 Class members', '194'),
('9.3 Member functions', '197'),
('9.4 Static members', '200'),
('9.5 Unions', '202'),
('9.6 Bit-fields', '203'),
('9.7 Nested class declarations', '204'),
('9.8 Local class declarations', '205'),
('9.9 Nested type names', '206'),
('10 Derived classes', '207'),
('10.1 Multiple base classes', '208'),
('10.2 Member name lookup', '210'),
('10.3 Virtual functions', '213'),
('10.4 Abstract classes', '217'),
('11 Member access control', '219'),
('11.1 Access specifiers', '221'),
('11.2 Accessibility of base classes and base class members', '222'),
('11.3 Access declarations', '224'),
('11.4 Friends', '225'),
('11.5 Protected member access', '228'),
('11.6 Access to virtual functions', '229'),
('11.7 Multiple access', '230'),
('11.8 Nested classes', '230'),
('12 Special member functions', '231'),
('12.1 Constructors', '231'),
('12.2 Temporary objects', '233'),
('12.3 Conversions', '235'),
('12.4 Destructors', '238'),
('12.5 Free store', '240'),
('12.6 Initialization', '242'),
('12.7 Construction and destruction', '247'),
('12.8 Copying class objects', '250'),
('12.9 Inheriting Constructors', '255'),
('13 Overloading', '259'),
('13.1 Overloadable declarations', '259'),
('13.2 Declaration matching', '261'),
('13.3 Overload resolution', '262'),
('13.4 Address of overloaded function', '281'),
('13.5 Overloaded operators', '282'),
('13.6 Built-in operators', '286'),
('14 Templates', '290'),
('14.1 Template parameters', '291'),
('14.2 Names of template specializations', '294'),
('14.3 Template arguments', '296'),
('14.4 Type equivalence', '302'),
('14.5 Template declarations', '303'),
('14.6 Name resolution', '318'),
('14.7 Template instantiation and specialization', '331'),
('14.8 Function template specializations', '343'),
('15 Exception handling', '363'),
('15.1 Throwing an exception', '364'),
('15.2 Constructors and destructors', '366'),
('15.3 Handling an exception', '366'),
('15.4 Exception specifications', '368'),
('15.5 Special functions', '371'),
('15.6 Exceptions and access', '372'),
('16 Preprocessing directives', '373'),
('16.1 Conditional inclusion', '375'),
('16.2 Source file inclusion', '376'),
('16.3 Macro replacement', '377'),
('16.4 Line control', '382'),
('16.5 Error directive', '383'),
('16.6 Pragma directive', '383'),
('16.7 Null directive', '383'),
('16.8 Predefined macro names', '383'),
('16.9 Pragma operator', '384'),
('17 Library introduction', '386'),
('17.1 General', '386'),
('17.2 Overview', '386'),
('17.3 Definitions', '386'),
('17.4 Additional definitions', '390'),
('17.5 Method of description (Informative)', '390'),
('17.6 Library-wide requirements', '396'),
('18 Language support library', '407'),
('18.1 Types', '407'),
('18.2 Implementation properties', '408'),
('18.3 Integer types', '417'),
('18.4 Start and termination', '418'),
('18.5 Dynamic memory management', '420'),
('18.6 Type identification', '424'),
('18.7 Exception handling', '427'),
('18.8 Initializer lists', '432'),
('18.9 Other runtime support', '434'),
('19 Diagnostics library', '435'),
('19.1 Exception classes', '435'),
('19.2 Assertions', '439'),
('19.3 Error numbers', '440'),
('19.4 System error support', '440'),
('20 General utilities library', '452'),
('20.1 Requirements', '452'),
('20.2 Utility components', '457'),
('20.3 Compile-time rational arithmetic', '463'),
('20.4 Tuples', '465'),
('20.5 Metaprogramming and type traits', '473'),
('20.6 Function objects', '486'),
('20.7 Memory', '509'),
('20.8 Time utilities', '548'),
('20.9 Date and time functions', '562'),
('21 Strings library', '563'),
('21.1 Character traits', '563'),
('21.2 String classes', '569'),
('21.3 Class template basic_string', '572'),
('21.4 Numeric Conversions', '599'),
('21.5 Null-terminated sequence utilities', '600'),
('22 Localization library', '604'),
('22.1 Locales', '604'),
('22.2 Standard locale categories', '617'),
('22.3 Standard code conversion facets', '657'),
('22.4 C Library Locales', '659'),
('23 Containers library', '660'),
('23.1 Container requirements', '660'),
('23.2 Sequence containers', '681'),
('23.3 Associative containers', '719'),
('23.4 Unordered associative containers', '744'),
('24 Iterators library', '759'),
('24.1 Iterator requirements', '759'),
('24.2 Header <iterator> synopsis', '764'),
('24.3 Iterator primitives', '767'),
('24.4 Predefined iterators', '770'),
('24.5 Stream iterators', '784'),
('25 Algorithms library', '792'),
('25.1 Non-modifying sequence operations', '802'),
('25.2 Mutating sequence operations', '806'),
('25.3 Sorting and related operations', '815'),
('25.4 C library algorithms', '829'),
('26 Numerics library', '831'),
('26.1 Numeric type requirements', '831'),
('26.2 The floating-point environment', '832'),
('26.3 Complex numbers', '833'),
('26.4 Random number generation', '842'),
('26.5 Numeric arrays', '884'),
('26.6 Generalized numeric operations', '904'),
('26.7 C Library', '907'),
('27 Input/output library', '912'),
('27.1 Iostreams requirements', '912'),
('27.2 Forward declarations', '912'),
('27.3 Standard iostream objects', '915'),
('27.4 Iostreams base classes', '916'),
('27.5 Stream buffers', '934'),
('27.6 Formatting and manipulators', '944'),
('27.7 String-based streams', '972'),
('27.8 File-based streams', '984'),
('28 Regular expressions library', '1000'),
('28.1 Definitions', '1000'),
('28.2 Requirements', '1000'),
('28.3 Regular expressions summary', '1002'),
('28.4 Header <regex> synopsis', '1003'),
('28.5 Namespace std::regex_constants', '1009'),
('28.6 Class regex_error', '1012'),
('28.7 Class template regex_traits', '1012'),
('28.8 Class template basic_regex', '1015'),
('28.9 Class template sub_match', '1020'),
('28.10Class template match_results', '1025'),
('28.11Regular expression algorithms', '1029'),
('28.12Regular expression Iterators', '1033'),
('28.13Modified ECMAScript regular expression grammar', '1039'),
('29 Atomic operations library', '1042'),
('29.1 Order and Consistency', '1044'),
('29.2 Lock-free Property', '1046'),
('29.3 Atomic Types', '1046'),
('29.4 Operations on Atomic Types', '1051'),
('29.5 Flag Type and Operations', '1054'),
('30 Thread support library', '1057'),
('30.1 Requirements', '1057'),
('30.2 Threads', '1058'),
('30.3 Mutual exclusion', '1063'),
('30.4 Condition variables', '1077'),
('A Grammar summary', '1085'),
('A.1 Keywords', '1085'),
('A.2 Lexical conventions', '1085'),
('A.3 Basic concepts', '1089'),
('A.4 Expressions', '1090'),
('A.5 Statements', '1093'),
('A.6 Declarations', '1094'),
('A.7 Declarators', '1097'),
('A.8 Classes', '1098'),
('A.9 Derived classes', '1099'),
('A.10 Special member functions', '1099'),
('A.11 Overloading', '1100'),
('A.12 Templates', '1100'),
('A.13 Exception handling', '1101'),
('A.14 Preprocessing directives', '1101'),
('B Implementation quantities', '1103'),
('C Compatibility', '1105'),
('C.1 C++ and ISO C', '1105'),
('C.2 Standard C library', '1114'),
('D Compatibility features', '1119'),
('D.1 Increment operator with bool operand', '1119'),
('D.2 static keyword', '1119'),
('D.3 Access declarations', '1119'),
('D.4 Implicit conversion from const strings', '1119'),
('D.5 C standard library headers', '1119'),
('D.6 Old iostreams members', '1120'),
('D.7 char* streams', '1121'),
('D.8 Binders', '1130'),
('D.9 auto_ptr', '1132'),
('E Universal-character-names', '1135'),
('F Cross references', '1137'),
('Index', '1153')]

kDocuments = {
    'C99' : (c99URL, c99TOC, 12),
    'C++' : (cXXURL, cXXTOC, 12),
}

def findClosestTOCEntry(data, target):
    # FIXME: Fix for named spec references
    if isinstance(target[0],str):
        return ('.'.join(target),'<named>',1)

    offset = data[2]
    best = None
    for (name,page) in data[1]:
        if ' ' in name:
            section,name = name.split(' ',1)
            if section == 'Annex':
                section,name = name.split(' ',1)
                section = 'Annex '+section
        else:
            section = None
        try:
            page = int(page) + offset
        except:
            page = 1
        try:
            spec = SpecIndex.fromstring(section)
        except:
            spec = None

        # Meh, could be better...
        if spec is not None:
            dist = spec - target
            if best is None or dist < best[0]:
                best = (dist, (section, name, page))
    return best[1]

# What a hack. Slow to boot.
doxyLineRefRE = re.compile(r"<a name=\"l([0-9]+)\"></a>")
def findClosestLineReference(clangRoot, doxyName, target):
    try:
        f = open(os.path.join(clangRoot, 'docs', 'doxygen', 'html', doxyName))
    except:
        return None
    
    best = None
    for m in doxyLineRefRE.finditer(f.read()):
        line = int(m.group(1), 10)
        dist = abs(line - target)
        if best is None or dist < best[0]:
            best = (dist,'l'+m.group(1))
    f.close()
    if best is not None:
        return best[1]
    return None

###

nameAndSpecRefRE = re.compile(r"(C99|C90|C\+\+|H\&S) ((([0-9]+)(\.[0-9]+)*|\[[^]]+\])(p[0-9]+)?)")
loneSpecRefRE = re.compile(r" (([0-9]+)(\.[0-9]+){2,100}(p[0-9]+)?)")
def scanFile(path, filename):
    try:
        f = open(path)
    except IOError:
        print >>sys.stderr,'WARNING: Unable to open:',path
        return

    for i,ln in enumerate(f):
        ignore = set()
        for m in nameAndSpecRefRE.finditer(ln):
            section = m.group(2)
            name = m.group(1)
            if section.endswith('.'):
                section = section[:-1]
            yield RefItem(name, section, filename, path, i+1)
            ignore.add(section)
        for m in loneSpecRefRE.finditer(ln):
            section = m.group(1)
            if section.endswith('.'):
                section = section[:-1]
            if section not in ignore:
                yield RefItem(None, section, filename, path, i+1)

###

class SpecIndex:
    @staticmethod
    def fromstring(str):
        # Check for named sections
        if str[0] == '[':
            assert ']' in str
            secs = str[1:str.index(']')].split('.')
            tail = str[str.index(']')+1:]
            if tail:
                assert tail[0] == 'p'
                paragraph = int(tail[1:])
            else:
                paragraph = None
            indices = secs
        else:
            secs = str.split('.')
            paragraph = None
            if 'p' in secs[-1]:
                secs[-1],p = secs[-1].split('p',1)
                paragraph = int(p)
            indices = map(int, secs)
        return SpecIndex(indices, paragraph)

    def __init__(self, indices, paragraph=None):
        assert len(indices)>0
        self.indices = tuple(indices)
        self.paragraph = paragraph

    def __str__(self):
        s =  '.'.join(map(str,self.indices))
        if self.paragraph is not None:
            s += '.p%d'%(self.paragraph,)
        return s                            

    def __repr__(self):
        return 'SpecIndex(%s, %s)'%(self.indices, self.paragraph)

    def __cmp__(self, b):
        return cmp((self.indices,self.paragraph),
                   (b.indices,b.paragraph))

    def __hash__(self):
        return hash((self.indices,self.paragraph))

    def __sub__(self, indices):
        def sub(a,b):
            a = a or 0
            b = b or 0
            return abs(a-b)
        return map(sub,self.indices,indices)

class RefItem:
    def __init__(self, name, section, filename, path, line):
        self.name = name
        self.section = SpecIndex.fromstring(section)
        self.filename = filename
        self.path = path
        self.line = line
    
    def __str__(self):
        if self.name is not None:
            return '%s %s'%(self.name, self.section)
        else:
            return '--- %s'%(self.section,)

    def __repr__(self):
        return 'RefItem(%s, %r, "%s", "%s", %d)'%(self.name, 
                                              self.section,
                                              self.filename,
                                              self.path,
                                              self.line)

    def __cmp__(self, b):
        return cmp((self.name,self.section,self.filename,self.path,self.line),
                   (b.name,b.section,self.filename,self.path,self.line))

    def __hash__(self):
        return hash((self.name,self.section,self.filename,self.path,self.line))

###

def sorted(l):
    l = list(l)
    l.sort()
    return l

def getRevision(path):
    import subprocess
    p = subprocess.Popen(['svn', 'info', path],
                         stdin=open('/dev/null','r'), 
                         stdout=subprocess.PIPE)
    for ln in p.stdout.read(1024).split('\n'):
        if ln.startswith('Revision:'):
            return ln.split(':',1)[1].strip()
    return None

def buildRefTree(references):
    root = (None, {}, [])

    def getNode(keys):
        if not keys:
            return root
        key,parent = keys[-1],getNode(keys[:-1])
        node = parent[1].get(key)
        if node is None:
            parent[1][key] = node = (key, {}, [])
        return node
            
    for ref in references:
        n = getNode((ref.name,) + ref.section.indices)
        n[2].append(ref)

    def flatten((key, children, data)):
        children = sorted(map(flatten,children.values()))
        return (key, children, sorted(data))

    return flatten(root)

def preorder(node,parents=(),first=True):
    (key,children,data) = node
    if first:
        yield parents+(node,)
    for c in children:
        for item in preorder(c, parents+(node,)):
            yield item

def main():
    global options
    from optparse import OptionParser
    parser = OptionParser("usage: %prog [options] CLANG_ROOT <output-dir>")
    parser.add_option("", "--debug", dest="debug",
                      help="Print extra debugging output",
                      action="store_true",
                      default=False)    
    (opts, args) = parser.parse_args()

    if len(args) != 2:
        parser.error("incorrect number of arguments")

    references = []
    root,outputDir = args
    if os.path.isdir(root):
        for (dirpath, dirnames, filenames) in os.walk(root):
            for filename in filenames:
                name,ext = os.path.splitext(filename)
                if ext in ('.c', '.cpp', '.h', '.def'):
                    fullpath = os.path.join(dirpath, filename)                
                    references.extend(list(scanFile(fullpath, filename)))
    else:
        references.extend(list(scanFile(root, root)))

    refTree = buildRefTree(references)

    specs = {}
    for ref in references:
        spec = specs[ref.name] = specs.get(ref.name,{})
        items = spec[ref.section] = spec.get(ref.section,[])
        items.append(ref)

    print 'Found %d references.'%(len(references),)

    if opts.debug:
        pprint(refTree)

    referencesPath = os.path.join(outputDir,'references.html')
    print 'Writing: %s'%(referencesPath,)
    f = open(referencesPath,'w')   
    print >>f, '<html><head><title>clang: Specification References</title></head>'
    print >>f, '<body>'
    print >>f, '\t<h2>Specification References</h2>'
    for i,node in enumerate(refTree[1]):
        specName = node[0] or 'Unknown'
        print >>f, '<a href="#spec%d">%s</a><br>'%(i,specName)
    for i,node in enumerate(refTree[1]):
        specName = node[0] or 'Unknown'
        print >>f, '<hr>'
        print >>f, '<a name="spec%d">'%(i,)
        print >>f, '<h3>Document: %s</h3>'%(specName or 'Unknown',)
        print >>f, '<table border="1" cellspacing="2" width="80%">'
        print >>f, '<tr><th width="20%">Name</th><th>References</th></tr>'
        docData = kDocuments.get(specName)
        for path in preorder(node,first=False):
            if not path[-1][2]:
                continue
            components = '.'.join([str(p[0]) for p in path[1:]])
            print >>f, '\t<tr>'
            tocEntry = None            
            if docData is not None:
                tocEntry = findClosestTOCEntry(docData, [p[0] for p in path[1:]])
            if tocEntry is not None:
                section,name,page = tocEntry
                # If section is exact print the TOC name
                if page is not None:
                    linkStr = '<a href="%s#page=%d">%s</a> (pg.%d)'%(docData[0],page,components,page)
                else:
                    linkStr = components
                if section == components:
                    print >>f, '\t\t<td valign=top>%s<br>%s</td>'%(linkStr,name)
                else:
                    print >>f, '\t\t<td valign=top>%s</td>'%(linkStr,)
            else:
                print >>f, '\t\t<td valign=top>%s</td>'%(components,)
            print >>f, '\t\t<td valign=top>'
            for item in path[-1][2]:
                # XXX total hack
                relativePath = item.path[len(root):]
                if relativePath.startswith('/'):
                    relativePath = relativePath[1:]
                # XXX this is broken, how does doxygen mangle w/ multiple
                # refs? Can we just read its map?
                filename = os.path.basename(relativePath)
                doxyName = '%s-source.html'%(filename.replace('.','_8'),)
                # Grrr, why can't doxygen write line number references.
                lineReference = findClosestLineReference(root,doxyName,item.line)
                if lineReference is not None:
                    linkStr = 'http://clang.llvm.org/doxygen/%s#%s'%(doxyName,lineReference)
                else:
                    linkStr = 'http://clang.llvm.org/doxygen/%s'%(doxyName,)
                if item.section.paragraph is not None:
                    paraText = '&nbsp;(p%d)'%(item.section.paragraph,)
                else:
                    paraText = ''
                print >>f,'<a href="%s">%s:%d</a>%s<br>'%(linkStr,relativePath,item.line,paraText)
            print >>f, '\t\t</td>'
            print >>f, '\t</tr>'
        print >>f, '</table>'
    print >>f, '<hr>'
    print >>f, 'Generated: %s<br>'%(time.strftime('%Y-%m-%d %H:%M'),)
    print >>f, 'SVN Revision: %s'%(getRevision(root),)
    print >>f, '</body>'
    f.close()
    
if __name__=='__main__':
   main()
