Gems
An index of AdaCore “Gem of the Week” series featuring expert tips and insights.
| No. | Title | Author | Link |
|---|---|---|---|
| 001 | Limited Types in Ada 2005 — Limited Aggregates | Bob Duff | www.adacore.com / dl.acm.org |
| 002 | Limited Types in Ada 2005 — <> Notation in Aggregates — Part 1 of 2 | Bob Duff | www.adacore.com / dl.acm.org |
| 003 | Limited Types in Ada 2005 — Constructor Functions — Part 1 of 2 | Bob Duff | www.adacore.com / dl.acm.org |
| 004 | PWM Position Control for Radiocontrol Servos | Michael Gonzalez Harbour | www.adacore.com |
| 005 | Key-Based Searching In Set Containers | Matthew Heaney | www.adacore.com / dl.acm.org |
| 006 | The Ada 95 Multiple Views Idiom vs. Ada 2005 Interfaces | Matthew Heaney | www.adacore.com / dl.acm.org |
| 007 | The Beauty of Numeric Literals in Ada | Franco Gasperoni | www.adacore.com / dl.acm.org |
| 008 | Factory Functions | Matthew Heaney | www.adacore.com / dl.acm.org |
| 009 | Classwide Operations, Iterators, and Generic Algorithms | Matthew Heaney | www.adacore.com / dl.acm.org |
| 010 | Limited Types in Ada 2005 — Extended Return Statements | Bob Duff | www.adacore.com / dl.acm.org |
| 011 | Limited Types in Ada 2005 — Constructor Functions — Part 2 of 2 | Bob Duff | www.adacore.com / dl.acm.org |
| 012 | Limited Types in Ada 2005 — <> Notation — Part 2 of 2 | Bob Duff | www.adacore.com / dl.acm.org |
| 013 | Interrupt Handling Idioms — Part 1 of 2 | Pat Rogers | www.adacore.com / dl.acm.org |
| 014 | Interrupt Handling Idioms — Part 2 of 2 | Pat Rogers | www.adacore.com / dl.acm.org |
| 015 | Timers | Anh Vo | www.adacore.com / dl.acm.org |
| 016 | Pragma No_Return — Part 1 of 2 | Bob Duff | www.adacore.com / dl.acm.org |
| 017 | Pragma No_Return — Part 2 of 2 — Functions | Bob Duff | www.adacore.com / dl.acm.org |
| 018 | Warnings in GNAT | Bob Duff | www.adacore.com / dl.acm.org |
| 019 | XML Streaming of Ada Objects | Pascal Obry | www.adacore.com / dl.acm.org |
| 020 | Using pragma Shared_Passive for data persistence | Pascal Obry | www.adacore.com / dl.acm.org |
| 021 | How to parse an XML text | Emmanuel Briot | www.adacore.com / dl.acm.org |
| 022 | Ada Speaks Many Languages | Robert Dewar, Vasiliy Fofanov, Franco Gasperoni, Yang Zhang | www.adacore.com / dl.acm.org |
| 023 | Null Considered Harmful — Part 1 of 2 | Bob Duff | www.adacore.com / dl.acm.org |
| 024 | Null Considered Harmful — Part 2 of 2 — Efficiency | Bob Duff | www.adacore.com / dl.acm.org |
| 025 | How to Search Text | Emmanuel Briot | www.adacore.com / dl.acm.org |
| 026 | The Mod Attribute | Bob Duff | www.adacore.com / dl.acm.org |
| 027 | Changing Data Representation — Part 1 of 2 | Robert Dewar | www.adacore.com / dl.acm.org |
| 028 | Changing Data Representation — Part 2 of 2 | Robert Dewar | www.adacore.com / dl.acm.org |
| 029 | Introduction to the Ada Web Server (AWS) | Pascal Obry | www.adacore.com / dl.acm.org |
| 030 | Safe and Secure Software: Introduction | John Barnes | www.adacore.com / dl.acm.org |
| 031 | Preconditions/Postconditions | Robert Dewar | www.adacore.com / dl.acm.org |
| 032 | Safe and Secure Software: Chapter 1, Safe Syntax | John Barnes | www.adacore.com / dl.acm.org |
| 033 | Accessibility Checks — Part 1 of 3 — Ada 95 | Ramón Fernández-Marina | www.adacore.com / dl.acm.org |
| 034 | Safe and Secure Software: Chapter 2 — Safe Typing | John Barnes | www.adacore.com / dl.acm.org |
| 035 | Bounded Buffer Package in GNAT Hierarchy — Part 1 of 2 | Pat Rogers | www.adacore.com / dl.acm.org |
| 036 | Safe and Secure Software: Chapter 3 — Safe Pointers | John Barnes | www.adacore.com / dl.acm.org |
| 037 | Bounded Buffer Package in GNAT Hierarchy — Part 2 of 2 | Pat Rogers | www.adacore.com / dl.acm.org |
| 038 | Safe and Secure Software: Chapter 4 — Safe Architecture | John Barnes | www.adacore.com / dl.acm.org |
| 039 | Efficient Stream I/O for Array Types | Pat Rogers | www.adacore.com / dl.acm.org |
| 040 | Safe and Secure Software: Chapter 5 — Safe Object Oriented | John Barnes | www.adacore.com / dl.acm.org |
| 041 | Accessibility Checks — Part 2 of 3 — Ada 2005 | Ramón Fernández-Marina | www.adacore.com / dl.acm.org |
| 042 | Safe and Secure Software: Chapter 6 — Safe Object Construction | John Barnes | www.adacore.com / dl.acm.org |
| 043 | Safe and Secure Software: Chapter 7 — Safe Memory Management | John Barnes | www.adacore.com / dl.acm.org |
| 044 | Accessibility Checks — Part 3 of 3 | Bob Duff | www.adacore.com / dl.acm.org |
| 045 | Safe and Secure Software: Chapter 8 — Safe Startup | John Barnes | www.adacore.com / dl.acm.org |
| 046 | Incompatibilities between Ada 83 and Ada 95 | Robert Dewar | www.adacore.com / dl.acm.org |
| 047 | Safe and Secure Software: Chapter 9 — Safe Communication | John Barnes | www.adacore.com / dl.acm.org |
| 048 | Extending Interfaces in Ada 2005 | Quentin Ochem | www.adacore.com / dl.acm.org |
| 049 | Safe and Secure Software: Chapter 10 — Safe Concurrency | John Barnes | www.adacore.com / dl.acm.org |
| 050 | Overload Resolution | Bob Duff | www.adacore.com / dl.acm.org |
| 051 | Safe and Secure Software: Chapter 11 — Certified Safe with SPARK | John Barnes | www.adacore.com / dl.acm.org |
| 052 | Scripting Capabilities in GNAT — Part 1 of 2 | Emmanuel Briot | www.adacore.com / dl.acm.org |
| 053 | Safe and Secure Software: Chapter 12 — Conclusion | John Barnes | www.adacore.com / web.archive.org |
| 054 | Scripting Capabilities in GNAT — Part 2 of 2 | Emmanuel Briot | www.adacore.com / dl.acm.org |
| 055 | Introduction to Ada/Java Interfacing | Quentin Ochem | www.adacore.com / dl.acm.org |
| 056 | Creating Ada to Java calls using GNAT-AJIS | Quentin Ochem | www.adacore.com / dl.acm.org |
| 057 | Ada/Java cross dispatching | Quentin Ochem | www.adacore.com / dl.acm.org |
| 058 | Ada/Java exception handling | Quentin Ochem | www.adacore.com / dl.acm.org |
| 059 | Generating Ada bindings for C headers | Arnaud Charlet | www.adacore.com / dl.acm.org |
| 060 | Generating Ada bindings for C++ headers | Arnaud Charlet | www.adacore.com |
| 061 | Interfacing with C++ constructors | Javier Miranda, Arnaud Charlet | www.adacore.com / dl.acm.org |
| 062 | C++ constructors and Ada 2005 | Javier Miranda, Arnaud Charlet | www.adacore.com / dl.acm.org |
| 063 | The Effect of Pragma Suppress | Gary Dismukes | www.adacore.com / dl.acm.org |
| 064 | Handling Multiple-Unit Source Files | Emmanuel Briot | www.adacore.com / dl.acm.org |
| 065 | GPRbuild | Emmanuel Briot | www.adacore.com / dl.acm.org |
| 066 | GPS’s Key Shortcuts Editor | Emmanuel Briot | www.adacore.com / dl.acm.org |
| 067 | Managing the GPS Workspace | Emmanuel Briot | www.adacore.com / dl.acm.org |
| 068 | Let’s SPARK! — Part 1 of 2 | Yannick Moy | www.adacore.com / dl.acm.org |
| 069 | Let’s SPARK! — Part 2 of 2 | Yannick Moy | www.adacore.com / dl.acm.org |
| 070 | The Scope Locks Idiom | Pat Rogers | www.adacore.com / dl.acm.org |
| 071 | Tokeneer Discovery – Lesson 1/6 | Dean Kuo, Angela Wallenburg | www.adacore.com / dl.acm.org |
| 072 | Tokeneer Discovery – Lesson 2/6 | Dean Kuo, Angela Wallenburg | www.adacore.com / dl.acm.org |
| 073 | Tokeneer Discovery – Lesson 3/6 | Dean Kuo, Angela Wallenburg | www.adacore.com / dl.acm.org |
| 074 | Tokeneer Discovery – Lesson 4/6 | Dean Kuo, Angela Wallenburg | www.adacore.com / dl.acm.org |
| 075 | Tokeneer Discovery – Lesson 5/6 | Dean Kuo, Angela Wallenburg | www.adacore.com / dl.acm.org |
| 076 | Tokeneer Discovery – Lesson 6/6 | Dean Kuo, Angela Wallenburg | www.adacore.com / dl.acm.org |
| 077 | Where did my memory go? — Part 1 of 3 | Emmanuel Briot | www.adacore.com / dl.acm.org |
| 078 | Where did my memory go? — Part 2 of 3 | Emmanuel Briot | www.adacore.com / dl.acm.org |
| 079 | Where did my memory go? — Part 3 of 3 | Emmanuel Briot | www.adacore.com / dl.acm.org |
| 080 | Speedy Shift and Rotate in SPARK | Rod Chapman | www.adacore.com / dl.acm.org |
| 081 | GNAT Semaphores | Pat Rogers | www.adacore.com / dl.acm.org |
| 082 | Type-Based Security — Part 1 of 2 — Handling Tainted Data | Yannick Moy | www.adacore.com / dl.acm.org |
| 083 | Type-Based Security — Part 2 of 2 — Validating the Input | Yannick Moy | www.adacore.com / dl.acm.org |
| 084 | The Distributed Systems Annex — Part 1 of 5 – Simple Client/Server | Thomas Quinot | www.adacore.com / dl.acm.org |
| 085 | The Distributed Systems Annex — Part 2 of 5 — Distributed Objects | Thomas Quinot | www.adacore.com / dl.acm.org |
| 086 | Ada Quiz 1 – Basic Types | Quentin Ochem | www.adacore.com / dl.acm.org |
| 087 | The Distributed Systems Annex — Part 3 of 5 — Mailboxes | Thomas Quinot | www.adacore.com / dl.acm.org |
| 088 | GPS — Smart Completion — Part 1 of 2 | Quentin Ochem | www.adacore.com / dl.acm.org |
| 089 | Code Archetypes for Real-Time Programming — Part 1 of 5 | Marco Panunzio | www.adacore.com / dl.acm.org |
| 090 | The Distributed Systems Annex — Part 4 of 5 — DSA and C | Thomas Quinot | www.adacore.com / dl.acm.org |
| 091 | Smart Completion — Part 2 of 2 | Quentin Ochem | www.adacore.com / dl.acm.org |
| 092 | Code Archetypes for Real-Time Programming — Part 2 of 5 | Marco Panunzio | www.adacore.com / dl.acm.org |
| 093 | High Performance Multicore Programming — Part 1 of 2 | Pat Rogers | www.adacore.com / dl.acm.org |
| 094 | Code Archetypes for Real-Time Programming — Part 3 of 5 | Marco Panunzio | www.adacore.com / dl.acm.org |
| 095 | Dynamic Stack Analysis in GNAT | Quentin Ochem | www.adacore.com / dl.acm.org |
| 096 | Code Archetypes for Real-Time Programming — Part 4 of 5 | Marco Panunzio | www.adacore.com / dl.acm.org |
| 097 | Reference Counting in Ada — Part 1 of 3 | Emmanuel Briot | www.adacore.com / dl.acm.org |
| 098 | High Performance Multicore Programming — Part 2 of 2 | Pat Rogers | www.adacore.com / dl.acm.org |
| 099 | Reference Counting in Ada — Part 2 of 3 — Task Safety | Emmanuel Briot | www.adacore.com / dl.acm.org |
| 100 | Reference Counting in Ada — Part 3 of 3 — Weak References | Emmanuel Briot | www.adacore.com / dl.acm.org |
| 101 | SOAP/WSDL — Part 1 of 2 — Server | Pascal Obry | www.adacore.com / dl.acm.org |
| 102 | SOAP/WSDL — Part 2 of 2 — Client | Pascal Obry | www.adacore.com / dl.acm.org |
| 103 | Code Archetypes for Real-Time Programming — Part 5 of 5 | Marco Panunzio | www.adacore.com / dl.acm.org |
| 104 | GPRbuild and Configuration Files — Part 1 of 2 | Johannes Kanig | www.adacore.com / dl.acm.org |
| 105 | Lady Ada Kisses Python — Part 1 of 2 | Emmanuel Briot | www.adacore.com / dl.acm.org |
| 106 | Lady Ada Kisses Python — Part 2 of 2 | Emmanuel Briot | www.adacore.com / dl.acm.org |
| 107 | Preventing Deallocation for Reference-counted Types | C.K.W. Grein | www.adacore.com / dl.acm.org |
| 108 | GPRbuild and Configuration Files — Part 2 of 2 | Johannes Kanig | www.adacore.com / dl.acm.org |
| 109 | Ada Plug-ins and Shared Libraries — Part 1 of 2 | Pascal Obry | www.adacore.com / dl.acm.org |
| 110 | Ada Plug-ins and Shared Libraries — Part 2 of 2 | Pascal Obry | www.adacore.com / dl.acm.org |
| 111 | The Distributed Systems Annex — Part 5 of 5 — Embedded Name Server | Thomas Quinot | www.adacore.com / dl.acm.org |
| 112 | Lego Mindstorms Ada Environment — Part 1 of 2 | Pat Rogers | www.adacore.com / dl.acm.org |
| 113 | Visitor Pattern in Ada | Emmanuel Briot | www.adacore.com / dl.acm.org |
| 114 | Logging with GNATcoll.Traces | Emmanuel Briot | www.adacore.com / dl.acm.org |
| 115 | Lego Mindstorms Ada Environment — Part 2 of 2 | Pat Rogers | www.adacore.com / dl.acm.org |
| 116 | Ada and C++ Exceptions | Quentin Ochem | www.adacore.com / dl.acm.org |
| 117 | Design Pattern: Overridable Class Attributes in Ada 2012 | Emmanuel Briot | www.adacore.com / dl.acm.org |
| 118 | File-System Portability Issues and GNATcoll.VFS | Emmanuel Briot | www.adacore.com / dl.acm.org |
| 119 | GDB Scripting — Part 1 of 2 | Jean-Charles Delay | www.adacore.com / dl.acm.org |
| 120 | GDB Scripting — Part 2 of 2 | Jean-Charles Delay | www.adacore.com / dl.acm.org |
| 121 | Breakpoint Commands — Part 1 of 2 | Jerome Guitton | www.adacore.com / dl.acm.org |
| 122 | Breakpoint Commands — Part 2 of 2 | Jerome Guitton | www.adacore.com / dl.acm.org |
| 123 | Implicit Dereferencing in Ada 2012 | Christoph Grein | www.adacore.com / dl.acm.org |
| 124 | Scripting GPS for Static Analysis | Yannick Moy, Nicolas Setton | www.adacore.com / dl.acm.org |
| 125 | Detecting infinite recursion with GDB’s Python API | Jerome Guitton | www.adacore.com / dl.acm.org |
| 126 | Aggregate Library Projects | Pascal Obry | www.adacore.com / dl.acm.org |
| 127 | Iterators in Ada 2012 — Part 1 of 2 | Emmanuel Briot | www.adacore.com / dl.acm.org |
| 128 | Iterators in Ada 2012 — Part 2 of 2 | Emmanuel Briot | www.adacore.com / dl.acm.org |
| 129 | Type-Safe Database API — Part 1 of 3 | Emmanuel Briot | www.adacore.com / dl.acm.org |
| 130 | Type-Safe Database API — Part 2 of 3 | Emmanuel Briot | www.adacore.com / dl.acm.org |
| 131 | Type-Safe Database API — Part 3 of 3 | Emmanuel Briot | www.adacore.com / dl.acm.org |
| 132 | Erroneous Execution — Part 1 of 4 | Bob Duff | www.adacore.com / dl.acm.org |
| 133 | Erroneous Execution — Part 2 of 4 | Bob Duff | www.adacore.com / dl.acm.org |
| 134 | Erroneous Execution — Part 3 of 4 | Bob Duff | www.adacore.com / dl.acm.org |
| 135 | Erroneous Execution — Part 4 of 4 | Bob Duff | www.adacore.com / dl.acm.org |
| 136 | How tall is a kilogram? | Vincent Pucci | www.adacore.com / dl.acm.org |
| 137 | Ada Quiz 2 — An Heir and a Spare? | Valentine Reboul | www.adacore.com / dl.acm.org |
| 138 | Master the Command Line — Part 1 of 2 | unknown | www.adacore.com / dl.acm.org |
| 139 | Master the Command Line — Part 2 of 2 | unknown | www.adacore.com / dl.acm.org |
| 140 | Bridging the Endianness Gap | Thomas Quinot | www.adacore.com / dl.acm.org |
| 141 | Configure it out | unknown | www.adacore.com / dl.acm.org |
| 142 | Exception-ally | unknown | www.adacore.com / dl.acm.org |
| 143 | Return to the Sources | unknown | www.adacore.com / dl.acm.org |
| 144 | A Bit of Bytes: Characters and Encoding Schemes | unknown | www.adacore.com / dl.acm.org |
| 145 | Ada Quiz 3 — Statements | Valentine Reboul | www.adacore.com / dl.acm.org |
| 146 | Su(per)btypes in Ada 2012 — Part 1 of 3 | Yannick Moy | www.adacore.com / dl.acm.org |
| 147 | Su(per)btypes in Ada 2012 — Part 2 of 3 | Yannick Moy | www.adacore.com / dl.acm.org |
| 148 | Su(per)btypes in Ada 2012 — Part 3 of 3 | Yannick Moy | www.adacore.com / dl.acm.org |
| 149 | Asserting the truth, but (possibly) not the whole truth | Yannick Moy | www.adacore.com / dl.acm.org |
| 150 | Out and Uninitialized | Robert Dewar | www.adacore.com / dl.acm.org |
| 151 | Specifying Mathematical Properties of Programs | Yannick Moy | www.adacore.com / dl.acm.org |
| 152 | Defining a New Language in a Project File | Vincent Celier | www.adacore.com |
| 153 | Multicore Maze Solving — Part 1 of 2 | Pat Rogers | www.adacore.com |
| 154 | Multicore Maze Solving — Part 2 of 2 | Pat Rogers | www.adacore.com |
| 155 | Enhancing the GPRbuild Database for a New Language | Vincent Celier | www.adacore.com |
| 156 | Listing Control in GNAT | Robert Dewar | www.adacore.com |
| 157 | GPRbuild and Code Generation | unknown | www.adacore.com |
| 158 | GPRinstall — Part 1 of 2 | Pascal Obry | www.adacore.com |
| 159 | GPRinstall — Part 2 of 2 | Pascal Obry | www.adacore.com |
| 160 | Developing unit tests with GNATtest | Vasiliy Fofanov | www.adacore.com |
| 161 | So long and thanks for all the memories! | Jamie Ayre | www.adacore.com |