<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0"
    xmlns:dc="http://purl.org/dc/elements/1.1/"
    xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
    xmlns:admin="http://webns.net/mvcb/"
    xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
    xmlns:content="http://purl.org/rss/1.0/modules/content/">

    <channel>
    
    <title><![CDATA[AdaCore Gem of the Week]]></title>
    <link>http://www.adacore.com/adaanswers/gems</link>
    <description>Founded in 1994, AdaCore is the leading provider of commercial software solutions for Ada, a state-of-the-art programming language designed for large, long-lived applications where safety, security, and reliability are critical. AdaCore's flagship product is the GNAT Pro development environment, which comes with expert on-line support and is available on more platforms than any other Ada technology.</description>
    <dc:language>en</dc:language>
    <dc:creator>AdaCore</dc:creator>
    <dc:rights>Copyright AdaCore 2013</dc:rights>
    <dc:date>2013-05-20T12:59:50+00:00</dc:date>
    <admin:generatorAgent rdf:resource="http://expressionengine.com/" />
    
	    <item>
      <title><![CDATA[Gem #148 : Su(per)btypes in Ada 2012 - Part 3]]></title>
      <link>http://www.adacore.com/adaanswers/gems/gem-148-superbtypes-in-ada-2012-part-3</link>
      <guid>http://www.adacore.com/adaanswers/gems/gem-148-superbtypes-in-ada-2012-part-3#When:12:59:50Z</guid>
      <description><![CDATA[
            	<p>In the previous two Gems of this series, we saw how the aspects Static_Predicate and
Dynamic_Predicate can be used to state properties of objects that
should be respected at all times. This Gem is concerned with the
Type_Invariant aspect.</p>
            ]]></description>
      <dc:date>2013-05-20T12:59:50+00:00</dc:date>
    </item>

    <item>
      <title><![CDATA[Gem #147 : Su(per)btypes in Ada 2012 - Part 2]]></title>
      <link>http://www.adacore.com/adaanswers/gems/gem-147-superbtypes-in-ada-2012-part-2</link>
      <guid>http://www.adacore.com/adaanswers/gems/gem-147-superbtypes-in-ada-2012-part-2#When:13:00:40Z</guid>
      <description><![CDATA[
            	<p>In the previous Gem in this series, we saw how the aspect Static_Predicate can be
used to state properties of scalar objects that should be respected at all
times. This Gem is concerned with the Dynamic_Predicate aspect.</p>
            ]]></description>
      <dc:date>2013-05-06T13:00:40+00:00</dc:date>
    </item>

    <item>
      <title><![CDATA[Gem #146 : Su(per)btypes in Ada 2012 - Part 1]]></title>
      <link>http://www.adacore.com/adaanswers/gems/gem-146-superbtypes-in-ada-2012-part-1</link>
      <guid>http://www.adacore.com/adaanswers/gems/gem-146-superbtypes-in-ada-2012-part-1#When:12:59:13Z</guid>
      <description><![CDATA[
            	<p>The new revision of Ada is full of features for specifying properties of
types. In this series of three Gems, we describe three aspects that can be
used to state invariant properties of types. This first Gem is concerned with
the Static_Predicate aspect.</p>
            ]]></description>
      <dc:date>2013-04-22T12:59:13+00:00</dc:date>
    </item>

    <item>
      <title><![CDATA[Gem #145: Ada Quiz 3 - Statements]]></title>
      <link>http://www.adacore.com/adaanswers/gems/gem-145-ada-quiz-3-statement</link>
      <guid>http://www.adacore.com/adaanswers/gems/gem-145-ada-quiz-3-statement#When:13:00:34Z</guid>
      <description><![CDATA[
            	<p>Abstract: Extracted from the AdaCore training courses, this Gem about "Statements" carries on with the series of occasional quizzes on Ada language features.</p>
            ]]></description>
      <dc:date>2013-04-08T13:00:34+00:00</dc:date>
    </item>

    <item>
      <title><![CDATA[Gem #144: A Bit of Bytes: Characters and Encoding Schemes]]></title>
      <link>http://www.adacore.com/adaanswers/gems/gem-144-a-bit-of-bytes-characters-and-encoding-schemes</link>
      <guid>http://www.adacore.com/adaanswers/gems/gem-144-a-bit-of-bytes-characters-and-encoding-schemes#When:13:00:18Z</guid>
      <description><![CDATA[
            	<p>This Gem describes some of the concepts behind character encoding and
Unicode. It explains why multiple character sets exist, and how to deal with
them in your application if you want to handle international input and output.</p>

            ]]></description>
      <dc:date>2013-03-25T13:00:18+00:00</dc:date>
    </item>

    <item>
      <title><![CDATA[Gem #143 : Return to the Sources]]></title>
      <link>http://www.adacore.com/adaanswers/gems/gem-143-return-to-the-sources</link>
      <guid>http://www.adacore.com/adaanswers/gems/gem-143-return-to-the-sources#When:13:00:54Z</guid>
      <description><![CDATA[
            	<p>The GNAT technology introduced the notion of projects with its 3.15 release in
2002. This notion was revisited and stabilized in later versions, and projects
are now supported by all GNAT tools. They are a convenient way to describe how
the sources of your application are organized, and how they should be
manipulated by the various tools. They can also be used from your own tools
through a convenient API in the GNAT Components Collection, which this Gem
introduces.</p>

            ]]></description>
      <dc:date>2013-03-11T13:00:54+00:00</dc:date>
    </item>

    <item>
      <title><![CDATA[Gem #142 : Exception-ally]]></title>
      <link>http://www.adacore.com/adaanswers/gems/gem-142-exceptions</link>
      <guid>http://www.adacore.com/adaanswers/gems/gem-142-exceptions#When:13:00:33Z</guid>
      <description><![CDATA[
            	<p>The GNAT compiler is well known for the quality of its error messages.
This also extends to the messages associated with exceptions, and
this Gem shows a few ways that these can be made more useful.</p>
            ]]></description>
      <dc:date>2013-02-25T13:00:33+00:00</dc:date>
    </item>

    <item>
      <title><![CDATA[Gem #141 : Con-figure it out]]></title>
      <link>http://www.adacore.com/adaanswers/gems/gem-141-gnatcoll.config</link>
      <guid>http://www.adacore.com/adaanswers/gems/gem-141-gnatcoll.config#When:09:13:18Z</guid>
      <description><![CDATA[
            	<p>In the Gem series on GNAT.Command_Line (Gems #138 and #139), we mentioned that there are several ways a
user can control the behavior of an application. These are command-line
options (as discussed in that Gem), graphical user applications (for
instance using GtkAda), and configuration files. This Gem proposes various
approaches for the latter.</p>

            ]]></description>
      <dc:date>2013-02-11T09:13:18+00:00</dc:date>
    </item>

    <item>
      <title><![CDATA[Gem #140: Bridging the Endianness Gap]]></title>
      <link>http://www.adacore.com/adaanswers/gems/gem-140-bridging-the-endianness-gap</link>
      <guid>http://www.adacore.com/adaanswers/gems/gem-140-bridging-the-endianness-gap#When:13:00:29Z</guid>
      <description><![CDATA[
            	An IT engineer has to make two essential choices in life:
<ul>
<li>Shall I break my soft-boiled egg from the big end, or from the little end?
<li>When storing a multibyte value, shall I store it most significant byte
 first, or least significant byte first?
</ul>
More than thirty years has passed since Danny Cohen made his
<a href="http://www.ietf.org/rfc/ien/ien137.txt">plea for peace</a>
between <em>big endians</em> and <em>little endians</em>, and software
is still plagued with all manner of byte-swapping code to
accommodate data produced by systems of different obediences. Can
languages come to the rescue?</p>
            ]]></description>
      <dc:date>2013-01-28T13:00:29+00:00</dc:date>
    </item>

    <item>
      <title><![CDATA[Gem #139 : Master the Command Line - Part 2]]></title>
      <link>http://www.adacore.com/adaanswers/gems/gem-139-master-the-command-line-part-2</link>
      <guid>http://www.adacore.com/adaanswers/gems/gem-139-master-the-command-line-part-2#When:13:00:14Z</guid>
      <description><![CDATA[
            	<p>The first part of this Gem series described how to use GNAT.Command_Line to
retrieve the switches and arguments passed to an application. This still requires writing
quite a lot of code. In this part we explain the high-level API of GNAT.Command_Line
and show how to make command-line management a breeze.</p>
            ]]></description>
      <dc:date>2013-01-14T13:00:14+00:00</dc:date>
    </item>

    <item>
      <title><![CDATA[Gem #138 : Master the Command Line - Part 1]]></title>
      <link>http://www.adacore.com/adaanswers/gems/gem-138-gnatcoll.command-line</link>
      <guid>http://www.adacore.com/adaanswers/gems/gem-138-gnatcoll.command-line#When:13:00:19Z</guid>
      <description><![CDATA[
            	<p>Applications can be configured in multiple ways. Among the most frequent are
command-line options, configuration files, and graphical user interfaces. The
GNAT technology provides various means to interface with those:
Ada.Command_Line and GNAT.Command_Line, GNATCOLL.Config, and GtkAda.
The latter two will be discussed in later Gems; this series of two Gems will describe how
to manipulate the command line.</p>
            ]]></description>
      <dc:date>2012-12-10T13:00:19+00:00</dc:date>
    </item>

    <item>
      <title><![CDATA[Gem #137: Ada Quiz 2 - An Heir and a Spare?]]></title>
      <link>http://www.adacore.com/adaanswers/gems/gem-137-inheritance</link>
      <guid>http://www.adacore.com/adaanswers/gems/gem-137-inheritance#When:13:00:21Z</guid>
      <description><![CDATA[
            	<p>This Gem about inheritance, derived from the AdaCore training courses, continues with the series of occasional quizzes on Ada language features.</p>
            ]]></description>
      <dc:date>2012-11-26T13:00:21+00:00</dc:date>
    </item>

    <item>
      <title><![CDATA[Gem #136: How tall is a kilogram?]]></title>
      <link>http://www.adacore.com/adaanswers/gems/gem-136-how-tall-is-a-kilogram</link>
      <guid>http://www.adacore.com/adaanswers/gems/gem-136-how-tall-is-a-kilogram#When:13:00:02Z</guid>
      <description><![CDATA[
            	The GNAT compiler now supports dimensionality checking. The user can
specify physical units for objects, and the compiler will verify that uses
of these objects are compatible with their dimensions, in a fashion that is
familiar to engineering practice. The dimensions of algebraic expressions
(including powers with static exponents) are computed from their constituents.
The GNAT compiler provides a package to support the MKS system of units, and
the user can provide additional packages as needed (CGS, British units, etc.).</p>

            ]]></description>
      <dc:date>2012-11-12T13:00:02+00:00</dc:date>
    </item>

    <item>
      <title><![CDATA[Gem #135 : Erroneous Execution - Part 4]]></title>
      <link>http://www.adacore.com/adaanswers/gems/gem-134-erroneous-execution-part-4</link>
      <guid>http://www.adacore.com/adaanswers/gems/gem-134-erroneous-execution-part-4#When:13:00:50Z</guid>
      <description><![CDATA[
            	This Gem completes the series on erroneous execution by discussing the language design.  Why does Ada have
erroneous execution in the first place?
            ]]></description>
      <dc:date>2012-10-29T13:00:50+00:00</dc:date>
    </item>

    <item>
      <title><![CDATA[Gem #134 :&nbsp; Erroneous Execution - Part 3]]></title>
      <link>http://www.adacore.com/adaanswers/gems/gem-134-erroneous-execution-part-3</link>
      <guid>http://www.adacore.com/adaanswers/gems/gem-134-erroneous-execution-part-3#When:13:00:57Z</guid>
      <description><![CDATA[
            	This Gem expands on the example of erroneous execution discussed in Part 2.
            ]]></description>
      <dc:date>2012-10-15T13:00:57+00:00</dc:date>
    </item>

    <item>
      <title><![CDATA[Gem #133 : Erroneous Execution - Part 2]]></title>
      <link>http://www.adacore.com/adaanswers/gems/gem-133-erroneous-execution-part-2</link>
      <guid>http://www.adacore.com/adaanswers/gems/gem-133-erroneous-execution-part-2#When:13:00:11Z</guid>
      <description><![CDATA[
            	The previous Gem said that "erroneous
execution" means that anything can happen as far as the Ada RM is
concerned, and in particular, the program might work properly.
This Gem continues the discussion.
            ]]></description>
      <dc:date>2012-09-24T13:00:11+00:00</dc:date>
    </item>

    <item>
      <title><![CDATA[Gem #132 : Erroneous Execution - Part 1]]></title>
      <link>http://www.adacore.com/adaanswers/gems/gem-132-erroneous-execution-part-1</link>
      <guid>http://www.adacore.com/adaanswers/gems/gem-132-erroneous-execution-part-1#When:13:00:33Z</guid>
      <description><![CDATA[
            	Many Ada programmers are confused by the term "erroneous",
in part because Ada uses the term to mean something other than what it
means in plain English.  In English, "erroneous" just means "wrong".
But in Ada it refers to a particular kind of wrongness.
This gem is intended to clarify the Ada meaning.</p>
            ]]></description>
      <dc:date>2012-09-10T13:00:33+00:00</dc:date>
    </item>

    <item>
      <title><![CDATA[Gem #131 : Type-Safe Database API - Part 3]]></title>
      <link>http://www.adacore.com/adaanswers/gems/gem-131-type-safe-database-api-part-3</link>
      <guid>http://www.adacore.com/adaanswers/gems/gem-131-type-safe-database-api-part-3#When:01:00:11Z</guid>
      <description><![CDATA[
            	The first two parts of this Gem demonstrated how to execute type-safe SQL queries on various database systems. In both of those, the SQL was still very much visible in the application. This third part explains the use of an Object-Relationship Management (ORM) that performs SQL queries in the background without exposing them to the user.</p>
            ]]></description>
      <dc:date>2012-08-07T01:00:11+00:00</dc:date>
    </item>

    <item>
      <title><![CDATA[Gem #130 : Type-Safe Database API - Part 2]]></title>
      <link>http://www.adacore.com/adaanswers/gems/gem-130-type-safe-database-api-part-2</link>
      <guid>http://www.adacore.com/adaanswers/gems/gem-130-type-safe-database-api-part-2#When:06:00:24Z</guid>
      <description><![CDATA[
            	The first Gem in this series discussed how to write syntactically correct and
type-safe SQL queries. We now need to execute these queries on the DBMS of
choice and retrieve the results. This Gem explains how to use the
DBMS-agnostic API in GNATColl to do this.
            ]]></description>
      <dc:date>2012-07-23T06:00:24+00:00</dc:date>
    </item>

    <item>
      <title><![CDATA[Gem #129 : Type-Safe Database API - Part 1]]></title>
      <link>http://www.adacore.com/adaanswers/gems/gem-129-type-safe-database-api-part-1</link>
      <guid>http://www.adacore.com/adaanswers/gems/gem-129-type-safe-database-api-part-1#When:12:59:14Z</guid>
      <description><![CDATA[
            	This Gem series describes the design and implementation of a type-safe,
vendor-neutral Application Programming Interface (API) to interact with a
database system. We review the current practice in this area and summarize
the problems and limitations, as well as showing some solutions that were developed in
response. The series is presented in three parts, each part corresponding to a layer of
the API.
            ]]></description>
      <dc:date>2012-07-09T12:59:14+00:00</dc:date>
    </item>

    <item>
      <title><![CDATA[Gem #128 : Iterators in Ada 2012 - Part 2]]></title>
      <link>http://www.adacore.com/adaanswers/gems/gem-128-iterators-in-ada-2012-part-2</link>
      <guid>http://www.adacore.com/adaanswers/gems/gem-128-iterators-in-ada-2012-part-2#When:13:00:35Z</guid>
      <description><![CDATA[
            	<p>The first part of this two-part Gem series explained the basics of Ada 2012 iterators. Part 2
goes into more detail, showing how to create iterators for user-defined data structures.</p>
            ]]></description>
      <dc:date>2012-06-25T13:00:35+00:00</dc:date>
    </item>

    <item>
      <title><![CDATA[Gem #127: Iterators in Ada 2012 - Part 1]]></title>
      <link>http://www.adacore.com/adaanswers/gems/gem-127-iterators-in-ada-2012-part-1</link>
      <guid>http://www.adacore.com/adaanswers/gems/gem-127-iterators-in-ada-2012-part-1#When:13:00:47Z</guid>
      <description><![CDATA[
            	<p>Ada 2012 iterators provide syntactic sugar for iterating over data structures.
This Gem describes the new syntax and what it brings to the
language. Part 2 will explain how you can define your own
iterators when formulating new data structures.</p>
            ]]></description>
      <dc:date>2012-06-11T13:00:47+00:00</dc:date>
    </item>

    <item>
      <title><![CDATA[Gem #126 : Aggregate Library Projects]]></title>
      <link>http://www.adacore.com/adaanswers/gems/gem-126-aggregate-library-project</link>
      <guid>http://www.adacore.com/adaanswers/gems/gem-126-aggregate-library-project#When:13:00:42Z</guid>
      <description><![CDATA[
            	An aggregate library project provides a way to create a single library using multiple other library project files. In this Gem we show how to create such libraries.

            ]]></description>
      <dc:date>2012-05-28T13:00:42+00:00</dc:date>
    </item>

    <item>
      <title><![CDATA[Gem #125: Detecting infinite recursion with GDB&#8217;s Python API]]></title>
      <link>http://www.adacore.com/adaanswers/gems/gem-125-detecting-infinite-recursion-with-gdbs-python-api</link>
      <guid>http://www.adacore.com/adaanswers/gems/gem-125-detecting-infinite-recursion-with-gdbs-python-api#When:08:00:36Z</guid>
      <description><![CDATA[
            	In a previous Gem we saw that the python API of GDB
provides some ways to check advanced properties of a program. This Gem
illustrates another use case and shows how to set an upper bound on
the number of recursive calls to a function.</p>
            ]]></description>
      <dc:date>2012-05-14T08:00:36+00:00</dc:date>
    </item>

    <item>
      <title><![CDATA[Gem #124 : Scripting GPS for Static Analysis]]></title>
      <link>http://www.adacore.com/adaanswers/gems/gem-124-scripting-gps-for-static-analysis</link>
      <guid>http://www.adacore.com/adaanswers/gems/gem-124-scripting-gps-for-static-analysis#When:13:00:56Z</guid>
      <description><![CDATA[
            	This Gem shows how to use the scripting capabilities of the GNAT
Programming Studio IDE to perform some simple static analysis.</p>
            ]]></description>
      <dc:date>2012-04-30T13:00:56+00:00</dc:date>
    </item>

    <item>
      <title><![CDATA[Gem #123: Implicit Dereferencing in Ada 2012]]></title>
      <link>http://www.adacore.com/adaanswers/gems/gem-123-implicit-dereferencing-in-ada-2012</link>
      <guid>http://www.adacore.com/adaanswers/gems/gem-123-implicit-dereferencing-in-ada-2012#When:07:00:44Z</guid>
      <description><![CDATA[
            	This Gem discusses the use of features added in Ada 2012
that simplify accessing and updating the elements of containers.</p>

            ]]></description>
      <dc:date>2012-04-17T07:00:44+00:00</dc:date>
    </item>

    <item>
      <title><![CDATA[Gem #122: Breakpoint Commands — Part 2]]></title>
      <link>http://www.adacore.com/adaanswers/gems/gem-122-breakpoint-commands-part-2</link>
      <guid>http://www.adacore.com/adaanswers/gems/gem-122-breakpoint-commands-part-2#When:14:22:09Z</guid>
      <description><![CDATA[
            	In a previous Gem, a simple use case of breakpoint commands was provided to check some program properties at run time. This Gem extends this use case to show some of the expressive power of the Python API.
            ]]></description>
      <dc:date>2012-04-10T14:22:09+00:00</dc:date>
    </item>

    <item>
      <title><![CDATA[Gem #121 Breakpoint Commands&#8212;Part 1]]></title>
      <link>http://www.adacore.com/adaanswers/gems/gem-121-breakpoint-command-part-1</link>
      <guid>http://www.adacore.com/adaanswers/gems/gem-121-breakpoint-command-part-1#When:20:37:34Z</guid>
      <description><![CDATA[
            	This gem will give a simple use case of breakpoint commands in
GDB to check dynamically some properties of the debugged program.
            ]]></description>
      <dc:date>2012-03-12T20:37:34+00:00</dc:date>
    </item>

    <item>
      <title><![CDATA[Gem #120 : GDB Scripting&#8212;Part 2]]></title>
      <link>http://www.adacore.com/adaanswers/gems/gem-120-gdb-scripting-part-2</link>
      <guid>http://www.adacore.com/adaanswers/gems/gem-120-gdb-scripting-part-2#When:20:35:25Z</guid>
      <description><![CDATA[
            	In the previous Gem we saw how GDB provides scripting capabilities
through its macro-coding language, which allows customization of the debugger
using the <tt>.gdbinit</tt> file. In this Gem, we explore more
advanced features of GDB scripting.
            ]]></description>
      <dc:date>2012-03-12T20:35:25+00:00</dc:date>
    </item>

    <item>
      <title><![CDATA[Gem #119 : GDB Scripting&#8212;Part 1]]></title>
      <link>http://www.adacore.com/adaanswers/gems/gem-119-gdb-scripting-part-1</link>
      <guid>http://www.adacore.com/adaanswers/gems/gem-119-gdb-scripting-part-1#When:16:16:10Z</guid>
      <description><![CDATA[
            	GDB, the GNU Project Debugger, is a powerful tool. General use
includes basic CLI commands -- break, run, print, etc. -- but there is so
much more you can do with it.
One of those capabilities is scripting. Just as you have a <tt>.<shell>rc</tt> for
your shell configuration, you can also add a <tt>.gdbinit</tt> for the
debugger. This Gem describes some of the available features of GDB scripting
and general customization with <tt>.gdbinit</tt>.</p>
            ]]></description>
      <dc:date>2012-02-27T16:16:10+00:00</dc:date>
    </item>

    
    </channel>
</rss>