<?xml version="1.0" encoding="UTF-8"?><!-- generator="wordpress/2.2.2" -->
<rss version="2.0" 
	xmlns:content="http://purl.org/rss/1.0/modules/content/">
<channel>
	<title>Comments for A Sense of Design</title>
	<link>http://codesynthesis.com/~boris/blog</link>
	<description>Boris Kolpackov's blog about software</description>
	<pubDate>Tue, 16 Mar 2010 22:11:21 +0000</pubDate>
	<generator>http://wordpress.org/?v=2.2.2</generator>

	<item>
		<title>Comment on Xerces-C++ 3.1.0 released by Paul Kiel</title>
		<link>http://codesynthesis.com/~boris/blog/2010/02/02/xerces-cxx-3-1-0-released/#comment-1349</link>
		<author>Paul Kiel</author>
		<pubDate>Mon, 15 Feb 2010 17:51:28 +0000</pubDate>
		<guid>http://codesynthesis.com/~boris/blog/2010/02/02/xerces-cxx-3-1-0-released/#comment-1349</guid>
		<description>Great posting.  I ran into a bit of a gotcha when someone sent me Xml Schemas with 2 different schemaLocations pointing to the same XSD file.
Here are details:

http://www.xmlhelpline.com/blog/2010/02/xsd-design-1-schema-included-via-2.html

Seems almost silly now.  But definitely need to resolve the relative URLs before doing any comparisons (include or import).</description>
		<content:encoded><![CDATA[<p>Great posting.  I ran into a bit of a gotcha when someone sent me Xml Schemas with 2 different schemaLocations pointing to the same XSD file.<br />
Here are details:</p>
<p><a href="http://www.xmlhelpline.com/blog/2010/02/xsd-design-1-schema-included-via-2.html" rel="nofollow">http://www.xmlhelpline.com/blog/2010/02/xsd-design-1-schema-included-via-2.html</a></p>
<p>Seems almost silly now.  But definitely need to resolve the relative URLs before doing any comparisons (include or import).</p>
]]></content:encoded>
	</item>
	<item>
		<title>Comment on Microsoft DLL export and C++ templates by Maxim Yegorushkin</title>
		<link>http://codesynthesis.com/~boris/blog/2010/01/18/dll-export-cxx-templates/#comment-1308</link>
		<author>Maxim Yegorushkin</author>
		<pubDate>Thu, 21 Jan 2010 04:45:47 +0000</pubDate>
		<guid>http://codesynthesis.com/~boris/blog/2010/01/18/dll-export-cxx-templates/#comment-1308</guid>
		<description>Nice post.

However, Microsoft toolchain is lacking love and totally archaic (sorry windows developers).

gcc employs a much more interesting solution: http://gcc.gnu.org/onlinedocs/gcc/Template-Instantiation.html</description>
		<content:encoded><![CDATA[<p>Nice post.</p>
<p>However, Microsoft toolchain is lacking love and totally archaic (sorry windows developers).</p>
<p>gcc employs a much more interesting solution: <a href="http://gcc.gnu.org/onlinedocs/gcc/Template-Instantiation.html" rel="nofollow">http://gcc.gnu.org/onlinedocs/gcc/Template-Instantiation.html</a></p>
]]></content:encoded>
	</item>
	<item>
		<title>Comment on Microsoft DLL export and C++ templates by Boris Kolpackov</title>
		<link>http://codesynthesis.com/~boris/blog/2010/01/18/dll-export-cxx-templates/#comment-1302</link>
		<author>Boris Kolpackov</author>
		<pubDate>Tue, 19 Jan 2010 12:22:27 +0000</pubDate>
		<guid>http://codesynthesis.com/~boris/blog/2010/01/18/dll-export-cxx-templates/#comment-1302</guid>
		<description>Ian,

Interesting, I didn't know about this option. I tried to add it to the test case and it turned the duplicate symbol errors into warnings plus issued this one:

warning LNK4088: image being generated due to /FORCE option; image may not run

While I think the image will run fine in this particular case (the two DLLs will simply use their own instantiations of the functions), this may no be the case in other cases (e.g., if a template has static data members; in this case each DLL will end up with its own version).

The other problem with this approach is that it will also mask other, unrelated, duplicate symbol errors. The user can always read through the list of warnings to make sure nothing suspicious is there but that can quickly become too much since this will have to be done after every change to the code. 

However, this seems like the only viable work around for the case of two independent DLLs that I described above.

Thanks for the information!
Boris</description>
		<content:encoded><![CDATA[<p>Ian,</p>
<p>Interesting, I didn&#8217;t know about this option. I tried to add it to the test case and it turned the duplicate symbol errors into warnings plus issued this one:</p>
<p>warning LNK4088: image being generated due to /FORCE option; image may not run</p>
<p>While I think the image will run fine in this particular case (the two DLLs will simply use their own instantiations of the functions), this may no be the case in other cases (e.g., if a template has static data members; in this case each DLL will end up with its own version).</p>
<p>The other problem with this approach is that it will also mask other, unrelated, duplicate symbol errors. The user can always read through the list of warnings to make sure nothing suspicious is there but that can quickly become too much since this will have to be done after every change to the code. </p>
<p>However, this seems like the only viable work around for the case of two independent DLLs that I described above.</p>
<p>Thanks for the information!<br />
Boris</p>
]]></content:encoded>
	</item>
	<item>
		<title>Comment on Microsoft DLL export and C++ templates by Ian</title>
		<link>http://codesynthesis.com/~boris/blog/2010/01/18/dll-export-cxx-templates/#comment-1299</link>
		<author>Ian</author>
		<pubDate>Mon, 18 Jan 2010 22:12:30 +0000</pubDate>
		<guid>http://codesynthesis.com/~boris/blog/2010/01/18/dll-export-cxx-templates/#comment-1299</guid>
		<description>Can this issue be resolved instead by using /FORCE:MULTIPLE as a linker option? We had a similar sounding problem with a library and this was the solution suggested.</description>
		<content:encoded><![CDATA[<p>Can this issue be resolved instead by using /FORCE:MULTIPLE as a linker option? We had a similar sounding problem with a library and this was the solution suggested.</p>
]]></content:encoded>
	</item>
	<item>
		<title>Comment on CLI in C++: DSL-based Designs by Boris Kolpackov</title>
		<link>http://codesynthesis.com/~boris/blog/2009/07/19/cli-cxx-dsl-based-designs/#comment-1010</link>
		<author>Boris Kolpackov</author>
		<pubDate>Fri, 23 Oct 2009 18:22:43 +0000</pubDate>
		<guid>http://codesynthesis.com/~boris/blog/2009/07/19/cli-cxx-dsl-based-designs/#comment-1010</guid>
		<description>Hi Jack,

I am not sure what you are want to achieve with XLW. Do you want to be able to access the command line data from Excel?

The CLI language is specific to the concepts of the command line interface and, to a lesser extent, C++. The upside of this is that it is very clean and simple. The downside is that it is hard to reuse for something else.</description>
		<content:encoded><![CDATA[<p>Hi Jack,</p>
<p>I am not sure what you are want to achieve with XLW. Do you want to be able to access the command line data from Excel?</p>
<p>The CLI language is specific to the concepts of the command line interface and, to a lesser extent, C++. The upside of this is that it is very clean and simple. The downside is that it is hard to reuse for something else.</p>
]]></content:encoded>
	</item>
	<item>
		<title>Comment on CLI in C++: DSL-based Designs by Jack</title>
		<link>http://codesynthesis.com/~boris/blog/2009/07/19/cli-cxx-dsl-based-designs/#comment-1009</link>
		<author>Jack</author>
		<pubDate>Fri, 23 Oct 2009 17:40:13 +0000</pubDate>
		<guid>http://codesynthesis.com/~boris/blog/2009/07/19/cli-cxx-dsl-based-designs/#comment-1009</guid>
		<description>I will definitely give it a go because I need that and I think you did a fantastic job with xsd/xsde. 
Also, do you think your project could be adapted for other kind of interfaces? I have xlw in mind (Excel interfacing).
Keep up the good work, it makes developing a real pleasure! =D</description>
		<content:encoded><![CDATA[<p>I will definitely give it a go because I need that and I think you did a fantastic job with xsd/xsde.<br />
Also, do you think your project could be adapted for other kind of interfaces? I have xlw in mind (Excel interfacing).<br />
Keep up the good work, it makes developing a real pleasure! =D</p>
]]></content:encoded>
	</item>
	<item>
		<title>Comment on CLI in C++: DSL-based Designs by Boris Kolpackov</title>
		<link>http://codesynthesis.com/~boris/blog/2009/07/19/cli-cxx-dsl-based-designs/#comment-1006</link>
		<author>Boris Kolpackov</author>
		<pubDate>Thu, 22 Oct 2009 13:17:36 +0000</pubDate>
		<guid>http://codesynthesis.com/~boris/blog/2009/07/19/cli-cxx-dsl-based-designs/#comment-1006</guid>
		<description>Hi Jack,

There would be several issues with XML Schema, similar to YANG. First, it would be very verbose. Second, there is no language mechanism for capturing option aliases. While we could use default values in attributes to model default option values, they will only work for built-in XML Schema types. Then there is the issue of using custom C++ types for options which won't be easy with XML Schema.

I am planning to release CLI 1.0.0 on Sunday. You can try it and then see if you can achieve something that simple and elegant with XML Schema ;-).</description>
		<content:encoded><![CDATA[<p>Hi Jack,</p>
<p>There would be several issues with XML Schema, similar to YANG. First, it would be very verbose. Second, there is no language mechanism for capturing option aliases. While we could use default values in attributes to model default option values, they will only work for built-in XML Schema types. Then there is the issue of using custom C++ types for options which won&#8217;t be easy with XML Schema.</p>
<p>I am planning to release CLI 1.0.0 on Sunday. You can try it and then see if you can achieve something that simple and elegant with XML Schema ;-).</p>
]]></content:encoded>
	</item>
	<item>
		<title>Comment on CLI in C++: DSL-based Designs by Jack</title>
		<link>http://codesynthesis.com/~boris/blog/2009/07/19/cli-cxx-dsl-based-designs/#comment-1005</link>
		<author>Jack</author>
		<pubDate>Thu, 22 Oct 2009 01:58:00 +0000</pubDate>
		<guid>http://codesynthesis.com/~boris/blog/2009/07/19/cli-cxx-dsl-based-designs/#comment-1005</guid>
		<description>Hi Boris,

Very interesting blog. Why not using an xml schema to represent command/argument/option structure and implement a parser that creates a CLI reader?</description>
		<content:encoded><![CDATA[<p>Hi Boris,</p>
<p>Very interesting blog. Why not using an xml schema to represent command/argument/option structure and implement a parser that creates a CLI reader?</p>
]]></content:encoded>
	</item>
	<item>
		<title>Comment on CLI in C++: The Ideal Solution by Boris Kolpackov</title>
		<link>http://codesynthesis.com/~boris/blog/2009/06/28/cli-cxx-the-ideal-solution/#comment-805</link>
		<author>Boris Kolpackov</author>
		<pubDate>Sat, 18 Jul 2009 01:07:54 +0000</pubDate>
		<guid>http://codesynthesis.com/~boris/blog/2009/06/28/cli-cxx-the-ideal-solution/#comment-805</guid>
		<description>Jesse,

Thanks, I am glad you are enjoying both (the blog and XSD).

Regarding Fusion's associative tuples: This is the same approach as the one used in the CLI parser from libcult which is discussed in the next post. In particular, there is the limit on how many tuples you can have in the map (10 by default, which is way too low for a CLI parser). They also use partial template specialization to implement all this apparatus.

As mentioned in the next post, this approach does not scale to a large number of options (say, 100). In this case the compilation time and the object code size (due to the enormous symbol length) become unacceptable. There is also the verbosity problem since we have to repeat each option name at least three times.

The implementation can be improved using the C++0x variadic templates feature. There is nothing that we can do about the verbosity problem, however (see the next two posts for details).

But nice idea, nevertheless. This is probably as good as we can get if we have to define the command line interface in the C++ source code.</description>
		<content:encoded><![CDATA[<p>Jesse,</p>
<p>Thanks, I am glad you are enjoying both (the blog and XSD).</p>
<p>Regarding Fusion&#8217;s associative tuples: This is the same approach as the one used in the CLI parser from libcult which is discussed in the next post. In particular, there is the limit on how many tuples you can have in the map (10 by default, which is way too low for a CLI parser). They also use partial template specialization to implement all this apparatus.</p>
<p>As mentioned in the next post, this approach does not scale to a large number of options (say, 100). In this case the compilation time and the object code size (due to the enormous symbol length) become unacceptable. There is also the verbosity problem since we have to repeat each option name at least three times.</p>
<p>The implementation can be improved using the C++0x variadic templates feature. There is nothing that we can do about the verbosity problem, however (see the next two posts for details).</p>
<p>But nice idea, nevertheless. This is probably as good as we can get if we have to define the command line interface in the C++ source code.</p>
]]></content:encoded>
	</item>
	<item>
		<title>Comment on CLI in C++: The Ideal Solution by Jesse</title>
		<link>http://codesynthesis.com/~boris/blog/2009/06/28/cli-cxx-the-ideal-solution/#comment-804</link>
		<author>Jesse</author>
		<pubDate>Wed, 15 Jul 2009 01:11:03 +0000</pubDate>
		<guid>http://codesynthesis.com/~boris/blog/2009/06/28/cli-cxx-the-ideal-solution/#comment-804</guid>
		<description>I'm sorry that I don't have time to come up with a concrete code suggestion, but I'm wondering if Boost Fusion's associative tuples might be able to come to the rescue. 

Very interesting blog, a pleasure to read! Also, I've been using XSD in a project and it's very nice! Thanks.</description>
		<content:encoded><![CDATA[<p>I&#8217;m sorry that I don&#8217;t have time to come up with a concrete code suggestion, but I&#8217;m wondering if Boost Fusion&#8217;s associative tuples might be able to come to the rescue. </p>
<p>Very interesting blog, a pleasure to read! Also, I&#8217;ve been using XSD in a project and it&#8217;s very nice! Thanks.</p>
]]></content:encoded>
	</item>
</channel>
</rss>
