-/* Build either a single-thread or multi-threaded section name for
- PTID.
-
- If ptid's lwp member is zero, we want to do the single-threaded
- thing: look for a section named NAME (as passed to the
- constructor). If ptid's lwp member is non-zero, we'll want do the
- multi-threaded thing: look for a section named "NAME/LWP", where
- LWP is the shortest ASCII decimal representation of ptid's lwp
- member. */
-
-class thread_section_name
-{
-public:
- /* NAME is the single-threaded section name. If PTID represents an
- LWP, then the build section name is "NAME/LWP", otherwise it's
- just "NAME" unmodified. */
- thread_section_name (const char *name, ptid_t ptid)
- {
- if (ptid.lwp_p ())
- {
- m_storage = string_printf ("%s/%ld", name, ptid.lwp ());
- m_section_name = m_storage.c_str ();
- }
- else
- m_section_name = name;
- }
-
- /* Return the computed section name. The result is valid as long as
- this thread_section_name object is live. */
- const char *c_str () const
- { return m_section_name; }
-
- /* Disable copy. */
- thread_section_name (const thread_section_name &) = delete;
- void operator= (const thread_section_name &) = delete;
-
-private:
- /* Either a pointer into M_STORAGE, or a pointer to the name passed
- as parameter to the constructor. */
- const char *m_section_name;
- /* If we need to build a new section name, this is where we store
- it. */
- std::string m_storage;
-};
-