From aa8baf2bd953ab47d2b5a14b912eac736e1cc1bf Mon Sep 17 00:00:00 2001 From: =?utf8?q?J=C3=B6rg=20Pf=C3=A4hler?= Date: Wed, 10 Jun 2009 14:37:03 +0200 Subject: [PATCH] * Fixed the numeration to comply with the newest C++ Draft --- STATUS | 252 ++++++++++++++++++++++---------------- include/csetjmp | 2 +- include/csignal | 2 +- include/cstddef | 2 +- include/cstdint | 2 +- include/cstdlib | 2 +- include/ctime | 2 +- include/lightlibc++/doxygen.hpp | 30 ++--- include/lightlibc++/exception.hpp | 37 +++--- include/lightlibc++/new.hpp | 22 ++-- include/lightlibc++/typeinfo.hpp | 8 +- 11 files changed, 205 insertions(+), 156 deletions(-) rewrite STATUS (75%) diff --git a/STATUS b/STATUS dissimilarity index 75% index ee7df8b..c5be1fe 100644 --- a/STATUS +++ b/STATUS @@ -1,107 +1,145 @@ -This file documents the status of the implementation. - - - -18. language support library [ ] -18.1 Types [X] -18.2 Implementation properties [ ] -18.3 Integer types [X] -18.4 Start and termination [X] -18.5 Dynamic memory management [X] -18.6 Type identification [X] -18.7 Exception handling [X] -18.8 Other runtime support [X] - -19. Diagnostics library [ ] -19.1 Exception classes [ ] -19.2 Assertions [ ] -19.3 Error numbers [ ] -19.4 System error support [ ] - -20. General utilities library [ ] -20.1 Requirements [ ] -20.2 Utility components [ ] -20.3 Tuples [ ] -20.4 Type traits [ ] -20.5 Function objects [ ] -20.6 Memory [ ] -20.7 Date and time [ ] - -21. Strings library [ ] -21.1 Character traits [ ] -21.2 String classes [ ] -21.5 Null-terminated sequence utilities [ ] - -22. Localization library [ ] -22.1 Locales [ ] -22.2 Standard locale Categories [ ] -22.3 Standard code conversion facets [ ] -22.4 C library locales [ ] - -23. Containers library [ ] -23.1 Requirements [ ] -23.2 Sequence containers [ ] -23.3 Associative containers [ ] -23.3.5 bitset [ ] -23.4 Unordered associative containers [ ] - -24. Iterators library [ ] -24.1 Requirements [ ] -24.3 Iterator primitives [ ] -24.4 Predefined iterators [ ] -24.5 Stream iterators [ ] - -25. Algorithms library [ ] -25.1 Non-modifying sequence operations [ ] -25.2 Mutating sequence operations [ ] -25.3 Sorting and related operations [ ] -25.4 C library algorithms [ ] - -26. Numerics library [ ] -26.1 Requirements [ ] -26.3 Complex Numbers [ ] -26.4 Random number generation [ ] -26.5 Numeric arrays [ ] -26.6 Generalized numeric operations [ ] -26.7 C library [ ] - -27. Input/output library [ ] -27.1 Requirements [ ] -27.2 Forward declarations [ ] -27.3 Standard iostream objects [ ] -27.4 Iostreams base classes [ ] -27.5 Stream buffers [ ] -27.6 Formatting and manipulators [ ] -27.7 String streams [ ] -27.8 File streams [ ] - -28. Regular expressions library [ ] - -29. Atomic operations library [ ] -29.1 Order and Consistency [ ] -29.2 Lock-free Property [ ] -29.3 Flag Type and Operations [ ] -29.4.1 Integral Types [ ] -29.4.1 Address Type [ ] -29.4.3 Generic Types [ ] -29.4.4 Operations [ ] - -30. Thread support library [ ] -30.2 Threads [ ] -30.3 Mutual exclusion [ ] -30.4 Condition variables condition_variable [ ] - -31. Date and time library [ ] - - - -C++ Application Binary Interface (Itanium C++ ABI) -* RTTI (2.9.5) [X] -* dynamic_cast (2.9.7) [ ] -* Pure virtual functions (3.2.6) [X] -* One-time construction (3.3.2) [ ] -* Array construction and destruction (3.3.3) [ ] -* Controlling object construction order (3.3.4) [ ] -* DSO object destruction (3.3.5) [ ] -* Demangler (3.4) [ ] -* static/global object construction and destruction [ ] +This file documents the status of the implementation. + + + +18. language support library +18.1 General +18.2 Types [X] +18.3 Implementation properties [ ] +18.4 Integer types [X] +18.5 Start and termination [X] +18.6 Dynamic memory management [X] +18.7 Type identification [X] +18.8 Exception handling [X] +18.9 Initializer lists [ ] +18.10 Other runtime support [X] + +19. Diagnostics library +19.1 General +19.2 Exception classes [ ] +19.3 Assertions [ ] +19.4 Error numbers [ ] +19.5 System error support [ ] + +20. General utilities library +20.1 General +20.2 Concepts [ ] +20.3 Utility components [ ] +20.4 Compile-time rational arithmetic [ ] +20.5 Tuples [ ] +20.6 Metaprogramming and type traits [ ] +20.7 Function objects [ ] +20.8 Memory [ ] +20.9 Time utilities [ ] +20.10 Date and time functions [X] + +21. Strings library +21.1 General +21.2 Character traits [ ] +21.3 String classes [ ] +21.4 Class template basic_string [ ] +21.5 Numeric Conversions [ ] +21.6 Null-terminated sequence utilities [ ] + +22. Localization library +22.1 General +22.2 Header synopsis [ ] +22.3 Locales [ ] +22.4 Standard locale Categories [ ] +22.5 Standard code conversion facets [ ] +22.6 C library locales [ ] + +23. Containers library +23.1 General +23.2 Container requirements [ ] +23.3 Sequence containers [ ] +23.3.1 Class template array [ ] +23.3.2 Class template deque [ ] +23.3.3 Class template forward_list [ ] +23.3.4 Class template list [ ] +23.3.5 Container adaptors [ ] +23.3.5.1 Class template queue [ ] +23.3.5.2 Class template priority_queue [ ] +23.3.5.3 Class template stack [ ] +23.3.6 Class template vector [ ] +23.3.7 Class vector [ ] +23.4 Associative containers [ ] +23.4.1 Class template map [ ] +23.4.2 Class template multimap [ ] +23.4.3 Class template set [ ] +23.4.4 Class template multiset [ ] +23.5 Unordered associative containers [ ] +23.5.1 Class template unordered_map [ ] +23.5.2 Class template unordered_multimap [ ] +23.5.3 Class template unordered_set [ ] +23.5.4 Class template unordered_multiset [ ] + +24. Iterators library +24.1 General +24.2 Iterator concepts [ ] +24.3 Header synopsis [ ] +24.4 Iterator operations [ ] +24.5 Iterator adaptors [ ] +24.7 Insert iterators [ ] + +25. Algorithms library +25.1 General +25.2 Header synopsis [ ] +25.3 Non-modifying sequence operations [ ] +25.4 Mutating sequence operations [ ] +25.5 Sorting and related operations [ ] +25.6 C library algorithms [ ] + +26. Numerics library +26.1 General +26.2 Numeric type requirements [ ] +26.3 The floating-point environment [ ] +26.4 Complex numbers [ ] +26.5 Random number generation [ ] +26.6 Numeric arrays [ ] +26.7 Generalized numeric operations [ ] +26.8 C Library [ ] + +27. Input/output library +27.1 General +27.2 Iostreams requirements +27.3 Forward declarations [ ] +27.4 Standard iostream objects [ ] +27.5 Iostreams base classes [ ] +27.6 Stream buffers [ ] +27.7 Formatting and manipulators [ ] +27.8 String-based streams [ ] +27.9 File-based streams [ ] + +28. Regular expressions library [ ] + +29. Atomic operations library +29.1 General +29.2 Header synopsis [ ] +29.3 Order and Consistency [ ] +29.4 Lock-free Property [ ] +29.5 Atomic Types [ ] +29.6 Operations on Atomic Types [ ] +29.7 Flag Type and Operations [ ] +29.8 Fences [ ] + +30. Thread support library +30.1 General +30.2 Requirements +30.3 Threads [ ] +30.4 Mutual exclusion [ ] +30.5 Condition variables [ ] +30.6 Futures [ ] + + + +C++ Application Binary Interface (Itanium C++ ABI) +* RTTI (2.9.5) [X] +* dynamic_cast (2.9.7) [ ] +* Pure virtual functions (3.2.6) [X] +* One-time construction (3.3.2) [ ] +* Array construction and destruction (3.3.3) [ ] +* Controlling object construction order (3.3.4) [ ] +* DSO object destruction (3.3.5) [ ] +* Demangler (3.4) [ ] +* static/global object construction and destruction [ ] diff --git a/include/csetjmp b/include/csetjmp index 57e4380..1be7aec 100644 --- a/include/csetjmp +++ b/include/csetjmp @@ -25,7 +25,7 @@ this is not to use the software at all. namespace std { - /** \addtogroup lightlibcpp_18_8 */ + /** \addtogroup lightlibcpp_18_10 */ /*@{*/ /** diff --git a/include/csignal b/include/csignal index ef436aa..8972921 100644 --- a/include/csignal +++ b/include/csignal @@ -30,7 +30,7 @@ this is not to use the software at all. namespace std { - /** \addtogroup lightlibcpp_18_8 */ + /** \addtogroup lightlibcpp_18_10 */ /*@{*/ /** diff --git a/include/cstddef b/include/cstddef index 784b8ab..ad36de7 100644 --- a/include/cstddef +++ b/include/cstddef @@ -29,7 +29,7 @@ this is not to use the software at all. namespace std { - /** \addtogroup lightlibcpp_18_1 */ + /** \addtogroup lightlibcpp_18_2 */ /*@{*/ /** diff --git a/include/cstdint b/include/cstdint index c37fdff..7a20116 100644 --- a/include/cstdint +++ b/include/cstdint @@ -41,7 +41,7 @@ this is not to use the software at all. namespace std { - /** \addtogroup lightlibcpp_18_3 */ + /** \addtogroup lightlibcpp_18_4 */ /*@{*/ /** diff --git a/include/cstdlib b/include/cstdlib index 228142f..1137509 100644 --- a/include/cstdlib +++ b/include/cstdlib @@ -30,7 +30,7 @@ this is not to use the software at all. namespace std { - /** \addtogroup lightlibcpp_18_4 */ + /** \addtogroup lightlibcpp_18_5 */ /*@{*/ diff --git a/include/ctime b/include/ctime index 3cafbf8..183ccd6 100644 --- a/include/ctime +++ b/include/ctime @@ -29,7 +29,7 @@ this is not to use the software at all. namespace std { - /** \addtogroup lightlibcpp_18_8 */ + /** \addtogroup lightlibcpp_18_10 */ /*@{*/ /** diff --git a/include/lightlibc++/doxygen.hpp b/include/lightlibc++/doxygen.hpp index f5105e0..0c6ca76 100644 --- a/include/lightlibc++/doxygen.hpp +++ b/include/lightlibc++/doxygen.hpp @@ -16,27 +16,27 @@ this is not to use the software at all. */ /** \defgroup lightlibcpp_18 18. Language support library */ -/** \defgroup lightlibcpp_18_1 18.1 Types +/** \defgroup lightlibcpp_18_2 18.2 Types * \ingroup lightlibcpp_18 */ -/** \defgroup lightlibcpp_18_3 18.3 Integer types +/** \defgroup lightlibcpp_18_4 18.4 Integer types * \ingroup lightlibcpp_18 */ -/** \defgroup lightlibcpp_18_4 18.4 Start and termination +/** \defgroup lightlibcpp_18_5 18.5 Start and termination * \ingroup lightlibcpp_18 */ -/** \defgroup lightlibcpp_18_5 18.5 Dynamic memory management +/** \defgroup lightlibcpp_18_6 18.6 Dynamic memory management * \ingroup lightlibcpp_18 */ -/** \defgroup lightlibcpp_18_5_1 18.5.1 Storage allocation and deallocation - * \ingroup lightlibcpp_18_5 */ -/** \defgroup lightlibcpp_18_5_2 18.5.2 Storage allocation errors - * \ingroup lightlibcpp_18_5 */ -/** \defgroup lightlibcpp_18_6 18.6 Type identification +/** \defgroup lightlibcpp_18_6_1 18.6.1 Storage allocation and deallocation + * \ingroup lightlibcpp_18_6 */ +/** \defgroup lightlibcpp_18_6_2 18.6.2 Storage allocation errors + * \ingroup lightlibcpp_18_6 */ +/** \defgroup lightlibcpp_18_7 18.7 Type identification * \ingroup lightlibcpp_18 */ -/** \defgroup lightlibcpp_18_7 18.7 Exception handling +/** \defgroup lightlibcpp_18_8 18.8 Exception handling * \ingroup lightlibcpp_18 */ -/** \defgroup lightlibcpp_18_7_2 18.7.2 Violating exception-specifications - * \ingroup lightlibcpp_18_7 */ -/** \defgroup lightlibcpp_18_7_3 18.7.3 Abnormal termination - * \ingroup lightlibcpp_18_7 */ -/** \defgroup lightlibcpp_18_8 18.8 Other runtime support +/** \defgroup lightlibcpp_18_8_2 18.8.2 Violating exception-specifications + * \ingroup lightlibcpp_18_8 */ +/** \defgroup lightlibcpp_18_8_3 18.8.3 Abnormal termination + * \ingroup lightlibcpp_18_8 */ +/** \defgroup lightlibcpp_18_10 18.10 Other runtime support * \ingroup lightlibcpp_18 */ diff --git a/include/lightlibc++/exception.hpp b/include/lightlibc++/exception.hpp index 9475d6e..821d829 100644 --- a/include/lightlibc++/exception.hpp +++ b/include/lightlibc++/exception.hpp @@ -25,21 +25,21 @@ this is not to use the software at all. namespace std { - /** \addtogroup lightlibcpp_18_7 */ + /** \addtogroup lightlibcpp_18_8 */ /*@{*/ /** *\english * \brief Base class for exceptions thrown by the C++ Standard Library * - * 18.7.1 Class exception + * 18.8.1 Class exception * * Base class for exceptions thrown by the C++ Standard Library *\endenglish *\german * \brief Basisklasse der Ausnahmen, die von der C++ Standardbibliothek geworfen werden * - * 18.7.1 Klasse exception + * 18.8.1 Klasse exception * * Basisklasse der Ausnahmen, die von der C++ Standardbibliothek geworfen werden *\endgerman @@ -113,7 +113,7 @@ namespace std - /** \addtogroup lightlibcpp_18_7_2 */ + /** \addtogroup lightlibcpp_18_8_2 */ /*@{*/ /** @@ -121,7 +121,7 @@ namespace std * \brief Class thrown by the runtime, when an exception-specification is * violated * - * 18.7.2.1 Class bad_exception + * 18.8.2.1 Class bad_exception * * Class thrown by the runtime, when an exception-specification is violated *\endenglish @@ -129,7 +129,7 @@ namespace std * \brief Klasse die von der Laufzeit geworfen wird, wenn eine * Ausnahmenspezifikation verletzt wurde * - * 18.7.2.1 Klasse bad_exception + * 18.8.2.1 Klasse bad_exception * * Klasse die von der Laufzeit geworfen wird, wenn eine * Ausnahmenspezifikation verletzt wurde @@ -177,7 +177,7 @@ namespace std /** *\english - * 18.7.2.2 Type unexpected_handler + * 18.8.2.2 Type unexpected_handler * * The type of a handler function to be called by unexpected() when a * function attempts to throw an exception not listed in its @@ -188,7 +188,7 @@ namespace std * The default unexpected_handler calls terminate(). *\endenglish *\german - * 18.7.2.2 Typ unexpected_handler + * 18.8.2.2 Typ unexpected_handler * * Der Typ einer Handlerfunktion, welche von unexpected() aufgerufen wird, * wenn eine Funktion eine Ausnahme, die nicht in ihrer @@ -203,7 +203,7 @@ namespace std typedef void (*unexpected_handler)() _LIGHTLIBCPP_NORETURN; /** - * 18.7.2.3 set_unexpected + * 18.8.2.3 set_unexpected * *\english * The unexpected_handler f becomes the new handler called by unexpected() @@ -238,7 +238,7 @@ namespace std unexpected_handler __get_unexpected(); /** - * 18.6.2.4 unexpected + * 18.8.2.4 unexpected * *\english * Called by the implementation when a function exits via an exception not @@ -261,12 +261,12 @@ namespace std - /** \addtogroup lightlibcpp_18_7_3 */ + /** \addtogroup lightlibcpp_18_8_3 */ /*@{*/ /** *\english - * 18.7.3.1 Type terminate_handler + * 18.8.3.1 Type terminate_handler * * The type of a handler function to be called by terminate() when * terminating exception processing. @@ -277,7 +277,7 @@ namespace std * The default terminate_handler calls abort(). *\endenglish *\german - * 18.7.3.1 Typ terminate_handler + * 18.8.3.1 Typ terminate_handler * * Der Typ einer Handlerfunktion, welche von terminate() aufgerufen wird, * wenn die Ausnahmebehandlung terminiert wird (durch den standardmäßig @@ -292,7 +292,7 @@ namespace std typedef void (*terminate_handler)() _LIGHTLIBCPP_NORETURN; /** - * 18.7.3.2 set_terminate + * 18.8.3.2 set_terminate * *\english * The terminate_handler f becomes the new handler called by terminate() @@ -327,7 +327,7 @@ namespace std terminate_handler __get_terminate(); /** - * 18.7.3.3 terminate + * 18.8.3.3 terminate * *\english * Called by the default unexpected_handler. May also be called directly by @@ -349,16 +349,21 @@ namespace std - /** \addtogroup lightlibcpp_18_7 */ + /** \addtogroup lightlibcpp_18_8 */ /*@{*/ // TODO: bool uncaught_exception() throw(), implemented by the C++ ABI: Exception Handling patch #ifdef _LIGHTLIBCPP_CPP10 + // 18.8.5 Exception Propagation // TODO C++1x: typedef \unspec exception_ptr; // TODO C++1x: exception_ptr current_exception(); // TODO C++1x: void rethrow_exception(exception_ptr p); // TODO C++1x: template exception_ptr copy_exception(E e); + + // TODO 18.8.6 class nested_exception + // TODO template void throw_with_nested(T&& t); // [[noreturn]] + // TODO template void rethrow_if_nested(const E& e); #endif /*@}*/ diff --git a/include/lightlibc++/new.hpp b/include/lightlibc++/new.hpp index 76dd91a..dc0366a 100644 --- a/include/lightlibc++/new.hpp +++ b/include/lightlibc++/new.hpp @@ -31,7 +31,7 @@ namespace std - /** \addtogroup lightlibcpp_18_5 */ + /** \addtogroup lightlibcpp_18_6 */ /*@{*/ /** @@ -64,14 +64,14 @@ namespace std - /** \addtogroup lightlibcpp_18_5_2 */ + /** \addtogroup lightlibcpp_18_6_2 */ /*@{*/ /** *\english * \brief Exception to report failure to allocate storage * - * 18.5.2.1 Class bad_alloc + * 18.6.2.1 Class bad_alloc * * The class bad_alloc defines the type of objects thrown as exceptions by * the implementation to report a failure to allocate storage. @@ -79,7 +79,7 @@ namespace std *\german * \brief Ausnahme um Fehlschlag einer Speicherallokation anzuzeigen * - * 18.5.2.1 Klasse bad_alloc + * 18.6.2.1 Klasse bad_alloc * * Die Klasse bad_alloc definiert den Objekttyp, welcher als Ausnahme * geworfen wird, um den Fehlschlag einer Speicherallokation anzuzeigen. @@ -126,7 +126,7 @@ namespace std /** *\english - * 18.5.2.2 Type new_handler + * 18.6.2.2 Type new_handler * * The type of a handler function to be called by operator the new operators * when they cannot satisfy a request for additional storage. @@ -137,7 +137,7 @@ namespace std * - call either abort() or exit() *\endenglish *\german - * 18.5.2.2 Typ new_handler + * 18.6.2.2 Typ new_handler * * Der Typ einer Handlerfunktion die von den new-Operatoren aufgerufen wird, * wenn dieser eine Speicherallokation nicht erfüllen kann. Der Handler @@ -150,7 +150,7 @@ namespace std *\endgerman */ typedef void (*new_handler)(); - /** 18.5.2.3 set_new_handler + /** 18.6.2.3 set_new_handler *\english * Establishes the function designated by new_p as the current new_handler. * \param[in] new_p the new new_handler @@ -170,10 +170,10 @@ namespace std -/** \addtogroup lightlibcpp_18_5_1 */ +/** \addtogroup lightlibcpp_18_6_1 */ /*@{*/ -/* 18.5.1.1 Single-object forms */ +/* 18.6.1.1 Single-object forms */ /** *\english @@ -353,7 +353,7 @@ void operator delete(void* ptr, -/* 18.5.1.2 Array forms */ +/* 18.6.1.2 Array forms */ /** *\english @@ -501,7 +501,7 @@ void operator delete[](void* ptr, -/* 18.5.1.3 Placement forms */ +/* 18.6.1.3 Placement forms */ /** *\english diff --git a/include/lightlibc++/typeinfo.hpp b/include/lightlibc++/typeinfo.hpp index 1a46804..b6588bf 100644 --- a/include/lightlibc++/typeinfo.hpp +++ b/include/lightlibc++/typeinfo.hpp @@ -25,7 +25,7 @@ this is not to use the software at all. namespace std { - /** \addtogroup lightlibcpp_18_6 */ + /** \addtogroup lightlibcpp_18_7 */ /*@{*/ /** @@ -95,6 +95,8 @@ namespace std * \param x */ bool before(const type_info& x) const; + // TODO C++1x: size_t hash_code() const throw() + /** *\english * Destructor @@ -161,6 +163,10 @@ namespace std const char* __type_name; }; + // TODO C++1x: class type_index + // TODO C++1x: templatestruct hash + // TODO C++1x: template<>struct hash + /** *\english * \brief Class thrown by an invalid dynamic_cast expression -- 2.11.4.GIT