[Liblas-devel] HasColor() and HasTime() removed from Schema class public interface

Howard Butler hobu.inc at gmail.com
Thu Dec 23 13:44:01 EST 2010


On Dec 19, 2010, at 8:38 PM, Howard Butler wrote:

> The proper way to ask for HasColor or HasTime now is to ask the schema if the color or time dimensions exist.
> 
> bool bColorExists = false;
> try {
> 
> 	liblas::Dimension const& red = schema.GetDimension("Red");
> 	liblas::Dimension const& green = schema.GetDimension("Green");
> 	liblas::Dimension const& blue = schema.GetDimension("Blue");
> 	bColorExists = true;
> 
> } catch (std::runtime_error const&)
> {
> }

David,

I have changed this again to no longer throw an exception if nothing is found.  Instead, as suggested by Mateusz, the Dimension is wrapped in a boost::optional that may be null.

boost::optional< Dimension const& > red = schema.GetDimension("Red");
boost::optional< Dimension const& > green = schema.GetDimension("Green");
boost::optional< Dimension const& > blue = schema.GetDimension("Blue");

if (red && green && blue)
    bColorExists = true;

A boost::optional can be dereferenced to get the const &.  For example,

red->GetName();  

Thanks for the feedback.  I think this is better :)

Howard


More information about the Liblas-devel mailing list