<?xml version="1.0"?>
<rss version="2.0">
  <channel>
    <title>Advogato blog for drunen</title>
    <link>http://www.advogato.org/person/drunen/</link>
    <description>Advogato blog for drunen</description>
    <language>en-us</language>
    <generator>mod_virgule</generator>
    <pubDate>Sun, 12 Oct 2008 14:13:37 GMT</pubDate>
    <item>
      <pubDate>Fri, 12 Sep 2003 03:31:04 GMT</pubDate>
      <title>12 Sep 2003</title>
      <link>http://www.advogato.org/person/drunen/diary.html?start=5</link>
      <guid>http://www.advogato.org/person/drunen/diary.html?start=5</guid>
      <description>&lt;a href="http://www.advogato.org/person/elanthis/" &gt;elanthis&lt;/a&gt;: STL algorithms has a &lt;a href="http://www.sgi.com/tech/stl/for_each.html" &gt;for_each&lt;/a&gt;. Boost's &lt;a href="http://boost.org/libs/lambda/doc/index.html" &gt;Lamba Library&lt;/a&gt; may also be of interest. </description>
    </item>
    <item>
      <pubDate>Sat, 26 Aug 2000 00:18:51 GMT</pubDate>
      <title>26 Aug 2000</title>
      <link>http://www.advogato.org/person/drunen/diary.html?start=4</link>
      <guid>http://www.advogato.org/person/drunen/diary.html?start=4</guid>
      <description>Had a friend of mine point out the wonderful C++ feature of
pure virtual destructors.

&lt;p&gt; I.e.
&lt;pre&gt;
class X
{
  public:
    ~X() = 0;
}

&lt;p&gt; X::~X() {}
&lt;/pre&gt;

&lt;p&gt; This is apparently legal C++ (Sect 10.3 and 10.4). It
seems counter intuitive and yet apparently serves a purpose.
If no other methods of a class are abstract, a virtual
destructor can be used to prevent the instantiation of the
class.

&lt;p&gt; As well, it seems it is legal to provide a definition of
any pure virtual function. Thus the meaning of a pure
virtual method is that it prevents the instantiation of
a class and that all pure virtual methods, minus
the destructor, can be optionally defined.

&lt;p&gt; This is a slight conceptual difference than what I had
thought of pure virtual functions. In practice I have never 
defined a pure virtual function. And the notion of defining
a pure virtual destructor is disturbing. I really believe
that explicitly declaring and definition constructors as
protected conveys the intent much clearer than a pure
virtual destructor ever could.

&lt;p&gt; Sometimes I wonder how stuff like this ever gets into
standards.</description>
    </item>
    <item>
      <pubDate>Tue, 25 Jul 2000 07:52:53 GMT</pubDate>
      <title>25 Jul 2000</title>
      <link>http://www.advogato.org/person/drunen/diary.html?start=3</link>
      <guid>http://www.advogato.org/person/drunen/diary.html?start=3</guid>
      <description>Just heard about Mozilla's &lt;a
href="http://www.mozilla.org/unix/leaky.html"&gt;leaky&lt;/a&gt;.
Wow. I am constantly impressed by the quality (and quantity)
of useful things coming out of Mozilla. I really should take
a harder look at their code, to see what can be easily
reused.</description>
    </item>
    <item>
      <pubDate>Tue, 25 Jul 2000 06:16:20 GMT</pubDate>
      <title>25 Jul 2000</title>
      <link>http://www.advogato.org/person/drunen/diary.html?start=2</link>
      <guid>http://www.advogato.org/person/drunen/diary.html?start=2</guid>
      <description>An interesting thing happened using gdb on linux today.
If I try to block on poll() in a multithreaded program,
poll wakes up continuously, thanks to SIG32, aka
SIGRTMIN. Seems pthreads is using this to change thread
contexts, and gdb doesn't seem to get it. However if I
block on pthread_cond_timedwait, this isn't a problem, nor
is it unexpected, since pthread_cond_timedwait can't be
interrupted via a signal. Perhaps there is a gdb
&lt;i&gt;handle&lt;/i&gt; command I havent tried yet.
&lt;br&gt;&lt;br&gt;
I was thinking about writing a signal handler that caught
SIGSEGV and SIGABRT that basically dumped the stack using
the backtrace call in /usr/include/execinfo.h. Too bad the
linux kernel just won't dump core the right way for
multithreaded programs. Too bad the kernel doesn't know
about pthreads.
&lt;br&gt;&lt;br&gt;
I've been thinking about using the sgi's &lt;a
href="http://oss.sgi.com/projects/state-threads/"&gt;
state threads&lt;/a&gt; package. It looks interesting, despite
being NPL.</description>
    </item>
    <item>
      <pubDate>Fri, 21 Jul 2000 07:10:49 GMT</pubDate>
      <title>21 Jul 2000</title>
      <link>http://www.advogato.org/person/drunen/diary.html?start=1</link>
      <guid>http://www.advogato.org/person/drunen/diary.html?start=1</guid>
      <description>What I wouldn't do for a g++ that could do precompiled
headers.</description>
    </item>
    <item>
      <pubDate>Thu, 20 Jul 2000 03:50:58 GMT</pubDate>
      <title>20 Jul 2000</title>
      <link>http://www.advogato.org/person/drunen/diary.html?start=0</link>
      <guid>http://www.advogato.org/person/drunen/diary.html?start=0</guid>
      <description>Apparently pthread_cond_timedwait() doesn't return EINTR
when a signal is thrown, despite what the man page says.
I should have looked at condvar.c before writing a little
test program.
&lt;br&gt;&lt;br&gt;
Use the source, Luke.</description>
    </item>
  </channel>
</rss>
