Teach FindSpecRefs how to link to C++ spec.

llvm-svn: 56164
This commit is contained in:
Daniel Dunbar 2008-09-12 18:10:49 +00:00
parent 84b70f7f0f
commit be12fd1f4f
1 changed files with 299 additions and 1 deletions

View File

@ -293,8 +293,306 @@ c99TOC = [('Foreword', 'xi'),
('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)
'C99' : (c99URL, c99TOC, 12),
'C++' : (cXXURL, cXXTOC, 12),
}
def findClosestTOCEntry(data, target):