diff --git a/boost/stacktrace/const_iterator.html b/boost/stacktrace/const_iterator.html index 856b8b8..c3b5d08 100644 --- a/boost/stacktrace/const_iterator.html +++ b/boost/stacktrace/const_iterator.html @@ -26,14 +26,13 @@

Class const_iterator

-

boost::stacktrace::const_iterator — Random access iterator over frames that returns frame on dereference.

+

boost::stacktrace::const_iterator — Random access iterator over frames that returns boost::stacktrace::frame on dereference.

Synopsis

// In header: <boost/stacktrace/const_iterator.hpp>
 
 
-class const_iterator : public boost::iterator_facade< const_iterator, frame, boost::random_access_traversal_tag, frame >
-{
+class const_iterator : private implementation_details {
 };
diff --git a/boost/stacktrace/frame.html b/boost/stacktrace/frame.html index 60d329c..10097d2 100644 --- a/boost/stacktrace/frame.html +++ b/boost/stacktrace/frame.html @@ -34,76 +34,79 @@ classframe{public:// construct/copy/destruct - frame()=delete; - frame(constframe&)=default; - explicitframe(constvoid*)noexcept; - frame&operator=(constframe&)=default; + frame()=delete; + frame(constframe&)=default; + explicitframe(constvoid*)noexcept; + frame&operator=(constframe&)=default; - // public member functions - std::stringname()const; - constvoid*address()constnoexcept; - std::stringsource_file()const; - std::size_tsource_line()const; + // public member functions + std::stringname()const; + constvoid*address()constnoexcept; + std::stringsource_file()const; + std::size_tsource_line()const;};
-

Description

+

Description

-

+

frame public construct/copy/destruct

    -
  1. frame() = delete;
  2. +
  3. frame() = delete;
  4. -
    frame(const frame &) = default;
    Copy constructs frame.

    +

    frame(const frame &) = default;
    Copy constructs frame.

    Complexity: O(1).

    +

    Async-Handler-Safety: Safe.

- +

Throws:

Nothing. Complexity: O(1). Nothing.
  • -
    explicit frame(const void * addr) noexcept;
    Constructs frame that can extract information from addr at runtime.

    +

    explicit frame(const void * addr) noexcept;
    Constructs frame that can extract information from addr at runtime.

    Complexity: O(1).

    +

    Async-Handler-Safety: Safe.

    - +

    Throws:

    Nothing. Complexity: O(1). Nothing.
  • -
    frame & operator=(const frame &) = default;
    Copy assigns frame.

    +

    frame & operator=(const frame &) = default;
    Copy assigns frame.

    Complexity: O(1).

    +

    Async-Handler-Safety: Safe.

    - +

    Throws:

    Nothing. Complexity: O(1). Nothing.
  • -

    -frame public member functions

    +

    +frame public member functions

    1. -
      std::string name() const;
      +
      std::string name() const;

      - +Async-Handler-Safety: Unsafe.

      - + @@ -113,16 +116,16 @@

      Returns:

      Name of the frame (function name in a human readable form).

      Name of the frame (function name in a human readable form).

      Throws:

    2. -
      const void * address() const noexcept;
      +
      const void * address() const noexcept;

      - +Async-Handler-Safety: Safe.

      - + @@ -132,10 +135,10 @@

      Returns:

      Address of the frame function.

      Address of the frame function.

      Throws:

    3. -
      std::string source_file() const;
      +
      std::string source_file() const;

      -

      +Async-Handler-Safety: Unsafe.

      @@ -145,16 +148,16 @@ - +

      Throws:

      std::bad_alloc if not enough memory to construct resulting string. std::bad_alloc if not enough memory to construct resulting string.
    4. -
      std::size_t source_line() const;
      +
      std::size_t source_line() const;

      -

      +Async-Handler-Safety: Unsafe.

      @@ -164,7 +167,7 @@ - +

      Throws:

      std::bad_alloc if not enough memory to construct string for internal needs. std::bad_alloc if not enough memory to construct string for internal needs.
      diff --git a/boost/stacktrace/stacktrace.html b/boost/stacktrace/stacktrace.html index bd7236a..67c91a0 100644 --- a/boost/stacktrace/stacktrace.html +++ b/boost/stacktrace/stacktrace.html @@ -36,63 +36,71 @@ public: // types typedef frame reference; - typedef boost::stacktrace::const_iterator iterator; // Random access iterator that returns frame. - typedef iterator const_iterator; - typedef std::reverse_iterator< iterator > reverse_iterator; + typedef boost::stacktrace::const_iterator iterator; + typedef boost::stacktrace::const_iterator const_iterator; + typedef std::reverse_iterator< iterator > reverse_iterator; typedef std::reverse_iterator< const_iterator > const_reverse_iterator; // construct/copy/destruct - stacktrace() noexcept; - stacktrace(const stacktrace &) noexcept; - stacktrace & operator=(const stacktrace &) noexcept; - ~stacktrace(); + stacktrace() noexcept; + stacktrace(const stacktrace &) noexcept; + stacktrace & operator=(const stacktrace &) noexcept; + ~stacktrace(); - // public member functions - std::size_t size() const noexcept; - frame operator[](std::size_t) const noexcept; - const_iterator begin() const noexcept; - const_iterator cbegin() const noexcept; - const_iterator end() const noexcept; - const_iterator cend() const noexcept; - const_reverse_iterator rbegin() const noexcept; - const_reverse_iterator crbegin() const noexcept; - const_reverse_iterator rend() const noexcept; - const_reverse_iterator crend() const noexcept; - explicit operator bool() const noexcept; - bool operator<(const stacktrace &) const noexcept; - bool operator==(const stacktrace &) const noexcept; - std::size_t hash_code() const noexcept; + // public member functions + std::size_t size() const noexcept; + frame operator[](std::size_t) const noexcept; + const_iterator begin() const noexcept; + const_iterator cbegin() const noexcept; + const_iterator end() const noexcept; + const_iterator cend() const noexcept; + const_reverse_iterator rbegin() const noexcept; + const_reverse_iterator crbegin() const noexcept; + const_reverse_iterator rend() const noexcept; + const_reverse_iterator crend() const noexcept; + explicit operator bool() const noexcept; + bool operator<(const stacktrace &) const noexcept; + bool operator==(const stacktrace &) const noexcept; + std::size_t hash_code() const noexcept; };
    -

    Description

    +

    Description

    -

    +

    stacktrace public construct/copy/destruct

    1. -
      stacktrace() noexcept;
      Stores the current function call sequence inside the class.

      Complexity: O(N) where N is call seaquence length, O(1) for noop backend.

      +
      stacktrace() noexcept;
      Stores the current function call sequence inside the class.

      Complexity: O(N) where N is call sequence length, O(1) for noop backend.

      +

      Async-Handler-Safety: Depends on backend, see "Build, Macros and Backends" section.

    2. -
      stacktrace(const stacktrace & st) noexcept;
      -Complexity: O(1)
    3. +
      stacktrace(const stacktrace & st) noexcept;
      +

      Complexity: O(st.size())

      +

      Async-Handler-Safety: Safe.

      +
    4. -
      stacktrace & operator=(const stacktrace & st) noexcept;
      -Complexity: O(1)
    5. +
      stacktrace & operator=(const stacktrace & st) noexcept;
      +

      Complexity: O(st.size())

      +

      Async-Handler-Safety: Safe.

      +
    6. -
      ~stacktrace();
      -Complexity: O(N) for libunwind, O(1) for other backends.
    7. +
      ~stacktrace();
      +

      Complexity: O(1)

      +

      Async-Handler-Safety: Safe.

      +
    -

    -stacktrace public member functions

    +

    +stacktrace public member functions

    1. -
      std::size_t size() const noexcept;
      +
      std::size_t size() const noexcept;

      -Complexity: O(1)

      +Complexity: O(1)

      +

      Async-Handler-Safety: Safe.

      @@ -102,10 +110,11 @@
    2. -
      frame operator[](std::size_t frame_no) const noexcept;
      +
      frame operator[](std::size_t frame_no) const noexcept;

      -Complexity: Amortized O(1), O(1) for noop backend.

      +Complexity: Amortized O(1), O(1) for noop backend.

      +

      Async-Handler-Safety: Safe.

      @@ -127,32 +136,49 @@
    3. -
      const_iterator begin() const noexcept;
      -Complexity: O(1)
    4. +
      const_iterator begin() const noexcept;
      +

      Complexity: O(1)

      +

      Async-Handler-Safety: Safe.

      +
    5. -
      const_iterator cbegin() const noexcept;
      -Complexity: O(1)
    6. +
      const_iterator cbegin() const noexcept;
      +

      Complexity: O(1)

      +

      Async-Handler-Safety: Safe.

      +
    7. -
      const_iterator end() const noexcept;
      -Complexity: O(1)
    8. +
      const_iterator end() const noexcept;
      +

      Complexity: O(1)

      +

      Async-Handler-Safety: Safe.

      +
    9. -
      const_iterator cend() const noexcept;
      -Complexity: O(1)
    10. +
      const_iterator cend() const noexcept;
      +

      Complexity: O(1)

      +

      Async-Handler-Safety: Safe.

      +
    11. -
      const_reverse_iterator rbegin() const noexcept;
      -Complexity: O(1)
    12. +
      const_reverse_iterator rbegin() const noexcept;
      +

      Complexity: O(1)

      +

      Async-Handler-Safety: Safe.

      +
    13. -
      const_reverse_iterator crbegin() const noexcept;
      -Complexity: O(1)
    14. +
      const_reverse_iterator crbegin() const noexcept;
      +

      Complexity: O(1)

      +

      Async-Handler-Safety: Safe.

      +
    15. -
      const_reverse_iterator rend() const noexcept;
      -Complexity: O(1)
    16. +
      const_reverse_iterator rend() const noexcept;
      +

      Complexity: O(1)

      +

      Async-Handler-Safety: Safe.

      +
    17. -
      const_reverse_iterator crend() const noexcept;
      -Complexity: O(1)
    18. +
      const_reverse_iterator crend() const noexcept;
      +

      Complexity: O(1)

      +

      Async-Handler-Safety: Safe.

      +
    19. -
      explicit operator bool() const noexcept;
      Allows to check that stack trace capturing was successful.

      -Complexity: O(1)

      +
      explicit operator bool() const noexcept;
      Allows to check that stack trace capturing was successful.

      +Complexity: O(1)

      +

      Async-Handler-Safety: Safe.

      @@ -162,13 +188,16 @@
    20. -
      bool operator<(const stacktrace & rhs) const noexcept;
      Compares stacktraces for less, order is platform dependant.

      Complexity: Amortized O(1); worst case O(size())

      +
      bool operator<(const stacktrace & rhs) const noexcept;
      Compares stacktraces for less, order is platform dependant.

      Complexity: Amortized O(1); worst case O(size())

      +

      Async-Handler-Safety: Safe.

    21. -
      bool operator==(const stacktrace & rhs) const noexcept;
      Compares stacktraces for equality.

      Complexity: Amortized O(1); worst case O(size())

      +
      bool operator==(const stacktrace & rhs) const noexcept;
      Compares stacktraces for equality.

      Complexity: Amortized O(1); worst case O(size())

      +

      Async-Handler-Safety: Safe.

    22. -
      std::size_t hash_code() const noexcept;
      Returns hashed code of the stacktrace.

      Complexity: O(1)

      +
      std::size_t hash_code() const noexcept;
      Returns hashed code of the stacktrace.

      Complexity: O(1)

      +

      Async-Handler-Safety: Safe.

    diff --git a/boost_stacktrace/build_macros_and_backends.html b/boost_stacktrace/build_macros_and_backends.html index 93cfe8f..9d208bb 100644 --- a/boost_stacktrace/build_macros_and_backends.html +++ b/boost_stacktrace/build_macros_and_backends.html @@ -46,7 +46,6 @@ - @@ -74,11 +73,6 @@ Uses dynamic exports information [b]

    - -

    - Construction speed -

    -

    Async signal safe[c] @@ -89,13 +83,14 @@

    - BOOST_STACKTRACE_USE_LIBUNWIND + BOOST_STACKTRACE_USE_UNWIND

    - Use libunwind tracing backend. This is the best known backend for - POSIX systems that requires linking with libunwind library. + Use unwind tracing backend. This is the best known backend for POSIX + systems that requires LSB Core Specification 4.1 from OS. Requires + linking with libdl library.

    @@ -115,12 +110,7 @@

    - slow -

    - - -

    - no + Constructors

    @@ -154,12 +144,7 @@

    - fast -

    - - -

    - no + ???

    @@ -171,9 +156,8 @@

    - Use tracing backend that calls POSIX function backtrace. This is - a fallback backend for POSIX platforms that requires linking with - libdl library. + Use tracing backend that calls POSIX function backtrace. + Requires linking with libdl library.

    @@ -191,11 +175,6 @@ yes

    - -

    - fast -

    -

    no @@ -232,17 +211,12 @@

    - noop -

    - - -

    - yes + all functions

    - +

    [a] This will provide more readable backtraces if the binary is built with debug information. @@ -252,7 +226,8 @@ that are exported by the binary.

    [c] - Absolutely safe to use that backend in async signal handler. + Absolutely safe to construct instances of boost::stacktrace::stacktrace + in async signal handlers using that backend.

    @@ -317,7 +292,7 @@



    -

    [1] Strictly speaking this code is not async-signal-safe, but we have SIGSEGV already it could hardly become worse. Section "Build, Macros and Backends" describes async-signal-safe backends, so if you will use the noop backend code becomes absolutely valid as that backens always returns 0 frames and operator<< will be never called.

    +

    [1] Strictly speaking this code is not async-signal-safe, because it uses std::cerr. Section "Build, Macros and Backends" describes async-signal-safe backends, so if you will use the noop backend code becomes absolutely valid as that backens always returns 0 frames and operator<< will be never called.

    diff --git a/boost_stacktrace_header_reference.html b/boost_stacktrace_header_reference.html index 167e662..1818530 100644 --- a/boost_stacktrace_header_reference.html +++ b/boost_stacktrace_header_reference.html @@ -37,19 +37,19 @@ namespacestacktrace{classstacktrace; - // Comparison operators that provide platform dependant ordering and have amortized O(1) complexity; O(size()) worst case complexity. - booloperator>(conststacktrace& lhs,conststacktrace& rhs); - booloperator<=(conststacktrace& lhs,conststacktrace& rhs); - booloperator>=(conststacktrace& lhs,conststacktrace& rhs); - booloperator!=(conststacktrace& lhs,conststacktrace& rhs); + // Comparison operators that provide platform dependant ordering and have amortized O(1) complexity; O(size()) worst case complexity; are Async-Handler-Safe. + booloperator>(conststacktrace& lhs,conststacktrace& rhs); + booloperator<=(conststacktrace& lhs,conststacktrace& rhs); + booloperator>=(conststacktrace& lhs,conststacktrace& rhs); + booloperator!=(conststacktrace& lhs,conststacktrace& rhs); - // Hashing support, O(1) complexity. - std::size_thash_value(conststacktrace& st); + // Hashing support, O(1) complexity; Async-Handler-Safe. + std::size_thash_value(conststacktrace& st); - // Outputs stacktrace in a human readable format to output stream. + // Outputs stacktrace in a human readable format to output stream; unsafe to use in async handlers. template<typename CharT,typename TraitsT>std::basic_ostream<CharT,TraitsT>& - operator<<(std::basic_ostream<CharT,TraitsT>& os, + operator<<(std::basic_ostream<CharT,TraitsT>& os,conststacktrace& bt);}} @@ -70,21 +70,21 @@ namespacestacktrace{classframe; - // Comparison operators that provide platform dependant ordering and have O(1) complexity. - booloperator<(constframe& lhs,constframe& rhs); - booloperator>(constframe& lhs,constframe& rhs); - booloperator<=(constframe& lhs,constframe& rhs); - booloperator>=(constframe& lhs,constframe& rhs); + // Comparison operators that provide platform dependant ordering and have O(1) complexity; are Async-Handler-Safe. + booloperator<(constframe& lhs,constframe& rhs); + booloperator>(constframe& lhs,constframe& rhs); + booloperator<=(constframe& lhs,constframe& rhs); + booloperator>=(constframe& lhs,constframe& rhs);booloperator==(constframe& lhs,constframe& rhs); - booloperator!=(constframe& lhs,constframe& rhs); + booloperator!=(constframe& lhs,constframe& rhs); - // Hashing support, O(1) complexity. - std::size_thash_value(constframe& f); + // Hashing support, O(1) complexity; Async-Handler-Safe. + std::size_thash_value(constframe& f); - // Outputs stacktrace::frame in a human readable format to output stream. + // Outputs stacktrace::frame in a human readable format to output stream; unsafe to use in async handlers. template<typename CharT,typename TraitsT>std::basic_ostream<CharT,TraitsT>& - operator<<(std::basic_ostream<CharT,TraitsT>& os,constframe& f); + operator<<(std::basic_ostream<CharT,TraitsT>& os,constframe& f);}} diff --git a/index.html b/index.html index 0d2cfee..efeffd4 100644 --- a/index.html +++ b/index.html @@ -86,7 +86,7 @@
    - +

    Last revised: November 26, 2016 at 20:24:41 GMT

    Last revised: November 30, 2016 at 07:48:20 GMT