public inbox for pthreads-win32@sourceware.org
 help / color / mirror / Atom feed
From: Will Bryant <will.bryant@ecosm.com>
To: pthreads-win32@sources.redhat.com
Subject: Re: Using pthread_t as a key in a map
Date: Mon, 15 May 2006 02:23:00 -0000	[thread overview]
Message-ID: <4467E5FA.3020300@ecosm.com> (raw)
In-Reply-To: <553911630605091355q64a6eec6i76cadef9b9efa0e@mail.gmail.com>

Hi Paolo,

Bear in mind that pthreads-win32 is written in C, and operator
overloading is a C++ feature, so adding that would prevent
pthreads-win32 from compiling with C apps.

One alternative is to make a custom comparator type and use that in the
map declaration - or you could even simply move those operator overloads
to your own units (they don't have to be defined where the type being
compared is declared, as long as they've visible at the point where
they're used - ie. your map declaration).

But bear in mind that in any case, making use of the ptw32_handle_t type
makes your code nonportable, and since portability is generally the
reason one is using pthreads-win32 in the first place, this is perhaps
not the best design for general use.

Will


Paolo Brandoli wrote:
> I have a source code that uses the pthread_t as a key in a std::map.
> Because pthread-win32 defines pthread_t as a structure, the
> compilation fails.
>
> I added the following lines in my pthread.h header in order to allow
> the usage of pthread_t in the map:
>
> bool operator < (const ptw32_handle_t& left, const ptw32_handle_t& right)
> {
>    return left.p < right.p;
> }
>
> bool operator > (const ptw32_handle_t& left, const ptw32_handle_t& right)
> {
>    return left.p > right.p;
> }
>
> Bye
> Paolo Brandoli
> http://www.puntoexe.com
>


-- 
Will Bryant



  reply	other threads:[~2006-05-15  2:23 UTC|newest]

Thread overview: 7+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2006-05-09 20:55 Paolo Brandoli
2006-05-15  2:23 ` Will Bryant [this message]
2006-05-15 11:57   ` Paolo Brandoli
2006-05-15 14:02     ` Robert Kindred
2006-05-15 14:24   ` Ross Johnson
2006-05-16  1:17     ` Ross Johnson
2006-05-16 14:09       ` Paolo Brandoli

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=4467E5FA.3020300@ecosm.com \
    --to=will.bryant@ecosm.com \
    --cc=pthreads-win32@sources.redhat.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).