<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>4thmouse.com &#187; C++</title>
	<atom:link href="http://4thmouse.com/index.php/category/programming/c/feed/" rel="self" type="application/rss+xml" />
	<link>http://4thmouse.com</link>
	<description>Software Engineering.</description>
	<lastBuildDate>Wed, 28 Jul 2010 03:38:47 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.8.4</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>More fun with Java (scope and duplicates)</title>
		<link>http://4thmouse.com/index.php/2010/07/27/more-fun-with-java-scope-and-duplicates/</link>
		<comments>http://4thmouse.com/index.php/2010/07/27/more-fun-with-java-scope-and-duplicates/#comments</comments>
		<pubDate>Wed, 28 Jul 2010 03:32:56 +0000</pubDate>
		<dc:creator>mike</dc:creator>
				<category><![CDATA[C++]]></category>
		<category><![CDATA[Java]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[block]]></category>
		<category><![CDATA[scope]]></category>

		<guid isPermaLink="false">http://4thmouse.com/?p=398</guid>
		<description><![CDATA[I thought this was interesting&#8230; In Java, a block scoped variable may conflict with a local variable declared later in method scope, but not previously (as shown below):

class A&#123;
  public static void main&#40;String args&#91;&#93;&#41;&#123;
    &#123;int k = 5;&#125;
    int k = 12; //this is OK
    [...]]]></description>
		<wfw:commentRss>http://4thmouse.com/index.php/2010/07/27/more-fun-with-java-scope-and-duplicates/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>SWIG, Java, and JRuby</title>
		<link>http://4thmouse.com/index.php/2010/07/22/swig-java-and-jruby/</link>
		<comments>http://4thmouse.com/index.php/2010/07/22/swig-java-and-jruby/#comments</comments>
		<pubDate>Thu, 22 Jul 2010 12:30:47 +0000</pubDate>
		<dc:creator>mike</dc:creator>
				<category><![CDATA[C++]]></category>
		<category><![CDATA[Java]]></category>
		<category><![CDATA[Networking]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[Ruby]]></category>

		<guid isPermaLink="false">http://4thmouse.com/?p=364</guid>
		<description><![CDATA[Providing a robust, maintainable, and interactive interface to your C/C++ application can be a challenge, but I&#8217;ve found that a combination of SWIG, Java, and JRuby (or Jython if you prefer) makes for a very powerful combination.

NOTE: All code is available here.
All languages have their trade offs: C/C++ is speedy, but hard to maintain and [...]]]></description>
		<wfw:commentRss>http://4thmouse.com/index.php/2010/07/22/swig-java-and-jruby/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Spirit Vs. Lex/yacc/et al.</title>
		<link>http://4thmouse.com/index.php/2008/12/10/spirit-vs-lexyaccet-al/</link>
		<comments>http://4thmouse.com/index.php/2008/12/10/spirit-vs-lexyaccet-al/#comments</comments>
		<pubDate>Wed, 10 Dec 2008 20:26:39 +0000</pubDate>
		<dc:creator>mike</dc:creator>
				<category><![CDATA[C]]></category>
		<category><![CDATA[C++]]></category>
		<category><![CDATA[Networking]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[Python]]></category>
		<category><![CDATA[BNF]]></category>
		<category><![CDATA[boost]]></category>
		<category><![CDATA[boost::spirit]]></category>
		<category><![CDATA[LALR]]></category>
		<category><![CDATA[Lex]]></category>
		<category><![CDATA[spirit]]></category>
		<category><![CDATA[Yac]]></category>

		<guid isPermaLink="false">http://4thmouse.com/?p=153</guid>
		<description><![CDATA[What are the differences and when should I use one or the other?

What is Lex/Yacc?
Lex and Yacc are some fairly ancient GNU tools which you can use to parse custom LALR languages (typically programming languages). Lex and Yacc are actually separate programs which generate C code from a custom language unique to each.
Lex generates code [...]]]></description>
		<wfw:commentRss>http://4thmouse.com/index.php/2008/12/10/spirit-vs-lexyaccet-al/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Boost Spirit III (Adding Error Handling)</title>
		<link>http://4thmouse.com/index.php/2008/11/04/boost-spirit-iii-adding-error-handling/</link>
		<comments>http://4thmouse.com/index.php/2008/11/04/boost-spirit-iii-adding-error-handling/#comments</comments>
		<pubDate>Tue, 04 Nov 2008 20:51:31 +0000</pubDate>
		<dc:creator>mike</dc:creator>
				<category><![CDATA[C++]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[boost]]></category>
		<category><![CDATA[boost::spirit]]></category>
		<category><![CDATA[error handling]]></category>
		<category><![CDATA[errors]]></category>
		<category><![CDATA[grammar parser]]></category>
		<category><![CDATA[parse_error]]></category>
		<category><![CDATA[spirit]]></category>

		<guid isPermaLink="false">http://4thmouse.com/?p=119</guid>
		<description><![CDATA[This article expands the example from the previous two, here and here, to add more specific error information.
As always the full code from the example is available here here.

The Problem
In our previous example an error simply resulted in a generic error message and a printout of the location at which the error occurred.
Ideally we should [...]]]></description>
		<wfw:commentRss>http://4thmouse.com/index.php/2008/11/04/boost-spirit-iii-adding-error-handling/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Writing a custom check macro for the BOOST test library</title>
		<link>http://4thmouse.com/index.php/2008/10/13/writing-a-custom-check-macro-for-the-boost-test-library/</link>
		<comments>http://4thmouse.com/index.php/2008/10/13/writing-a-custom-check-macro-for-the-boost-test-library/#comments</comments>
		<pubDate>Mon, 13 Oct 2008 14:36:22 +0000</pubDate>
		<dc:creator>mike</dc:creator>
				<category><![CDATA[C++]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[boost]]></category>
		<category><![CDATA[boost test]]></category>
		<category><![CDATA[boost test library]]></category>
		<category><![CDATA[check macro]]></category>
		<category><![CDATA[custom macro]]></category>
		<category><![CDATA[require macro]]></category>
		<category><![CDATA[test]]></category>
		<category><![CDATA[unit test]]></category>
		<category><![CDATA[warn macro]]></category>

		<guid isPermaLink="false">http://4thmouse.com/?p=82</guid>
		<description><![CDATA[In this article I demonstrate how to write your own check macros for the boost test library (not guaranteed to work in the future)
Full source code for this example can be downloaded here.

The problem
For the purposes of this article I would like to verify that a collection is monotonically increasing. There are a couple ways [...]]]></description>
		<wfw:commentRss>http://4thmouse.com/index.php/2008/10/13/writing-a-custom-check-macro-for-the-boost-test-library/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>What is a C++ Functor?</title>
		<link>http://4thmouse.com/index.php/2008/07/20/what-is-a-c-functor/</link>
		<comments>http://4thmouse.com/index.php/2008/07/20/what-is-a-c-functor/#comments</comments>
		<pubDate>Sun, 20 Jul 2008 19:23:01 +0000</pubDate>
		<dc:creator>mike</dc:creator>
				<category><![CDATA[C++]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[closure]]></category>
		<category><![CDATA[delegate]]></category>
		<category><![CDATA[function object]]></category>
		<category><![CDATA[functor]]></category>

		<guid isPermaLink="false">http://4thmouse.com/index.php/2008/07/20/what-is-a-c-functor/</guid>
		<description><![CDATA[I did a presentation on the spirit library in the flesh recently and was surprised to find the big sticking point was C++ functors. So I thought I&#8217;d cover the concept here.

The Concept
Functors provide a generic callback mechanism al la C function pointers. In C you typically see the following (see this):

void sort&#40;void *data, 
 [...]]]></description>
		<wfw:commentRss>http://4thmouse.com/index.php/2008/07/20/what-is-a-c-functor/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Boost Spirit Part II (Attaching Actions to Your Grammar)</title>
		<link>http://4thmouse.com/index.php/2008/07/20/boost-spirit-part-ii-attaching-actions-to-your-grammar/</link>
		<comments>http://4thmouse.com/index.php/2008/07/20/boost-spirit-part-ii-attaching-actions-to-your-grammar/#comments</comments>
		<pubDate>Sun, 20 Jul 2008 17:36:01 +0000</pubDate>
		<dc:creator>mike</dc:creator>
				<category><![CDATA[C++]]></category>
		<category><![CDATA[Programming]]></category>

		<guid isPermaLink="false">http://4thmouse.com/index.php/2008/07/20/boost-spirit-part-ii-attaching-actions-to-your-grammar/</guid>
		<description><![CDATA[In the last article we covered how to define a grammar in the boost spirit library. This article will show you how to use the data parsed by the grammar with actions. The code for this example is here.

Actions and Functors
Spirit expressions can be associated with arbitrary code that is executed when those expressions are [...]]]></description>
		<wfw:commentRss>http://4thmouse.com/index.php/2008/07/20/boost-spirit-part-ii-attaching-actions-to-your-grammar/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>Boost Spirit Part I (Validating Against a Grammar)</title>
		<link>http://4thmouse.com/index.php/2008/07/01/boost-spirit-part-i-validating-against-a-grammar/</link>
		<comments>http://4thmouse.com/index.php/2008/07/01/boost-spirit-part-i-validating-against-a-grammar/#comments</comments>
		<pubDate>Tue, 01 Jul 2008 21:17:36 +0000</pubDate>
		<dc:creator>mike</dc:creator>
				<category><![CDATA[C++]]></category>
		<category><![CDATA[Programming]]></category>

		<guid isPermaLink="false">http://4thmouse.com/index.php/2008/07/01/boost-spirit-part-i-validating-against-a-grammar/</guid>
		<description><![CDATA[I haven&#8217;t done a post in a while, but I thought the boost spirit library was worth an entry. Spirit provides a way of specifying and parsing a custom language grammar right inline in C++ without the need for a code generator like lex/yacc. Spirit makes it so easy to specify and use a grammar [...]]]></description>
		<wfw:commentRss>http://4thmouse.com/index.php/2008/07/01/boost-spirit-part-i-validating-against-a-grammar/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>Why C++ is a Dying Language</title>
		<link>http://4thmouse.com/index.php/2008/02/17/why-c-is-a-dying-language/</link>
		<comments>http://4thmouse.com/index.php/2008/02/17/why-c-is-a-dying-language/#comments</comments>
		<pubDate>Sun, 17 Feb 2008 22:19:22 +0000</pubDate>
		<dc:creator>mike</dc:creator>
				<category><![CDATA[C++]]></category>
		<category><![CDATA[Programming]]></category>

		<guid isPermaLink="false">http://4thmouse.com/index.php/2008/02/17/why-c-is-a-dying-language/</guid>
		<description><![CDATA[From my blog you may notice I am an inveterate C++ coder. It was the first language I taught myself after pascal and my preferred language for compact, fast code.The downfall of C++ may not be news to many, but often it is written by opponents of the language rather than those who love it [...]]]></description>
		<wfw:commentRss>http://4thmouse.com/index.php/2008/02/17/why-c-is-a-dying-language/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Automatic Adaptation in C++</title>
		<link>http://4thmouse.com/index.php/2008/02/16/automatic-adaptation-in-c/</link>
		<comments>http://4thmouse.com/index.php/2008/02/16/automatic-adaptation-in-c/#comments</comments>
		<pubDate>Sat, 16 Feb 2008 16:20:02 +0000</pubDate>
		<dc:creator>mike</dc:creator>
				<category><![CDATA[C++]]></category>
		<category><![CDATA[Programming]]></category>

		<guid isPermaLink="false">http://4thmouse.com/index.php/2008/02/16/automatic-adaptation-in-c/</guid>
		<description><![CDATA[The adapter pattern is used to implement an interface required by one library in terms of an object declared in another. It&#8217;s a useful pattern, but implementing it can be a pain. You have to manually adapt objects as you get them and then you have to remember to clean up the adapter objects when [...]]]></description>
		<wfw:commentRss>http://4thmouse.com/index.php/2008/02/16/automatic-adaptation-in-c/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
