How to convert your code to be void-safe?

More and more code is becoming void-safe and today you want to turn an existing library into a completely void-safe one. If you start by setting the void-safety level to its highest setting, you might get discouraged quickly by the sheer number of errors.


ISO-8859 is dead, long live ISO-8859

The Trade-offs of Unicode

Whilst Unicode has given us the wonderful gift of complete coverage of just about every written language in a single application, it has not come without a price. That price is the greatly increased amount of memory required to store 32 bit characters.


Underused expanded types

Using expanded types for enumerations or aliased type names:

expanded class MY_ENUMERATION convert

value: {INTEGER_32}


make (value_a: INTEGER_32)
  value := value_a


value: INTEGER_32


It's as simple as that.


Output and by-reference parameters

This request is retracted, see for a demonstration of an Object Oriented way of doing output and byref parameters.

I'm trying to lay out a case for adding parameter passing by value and/or output parameters.


Creating a .NET delegate object from an Eiffel routine

Someone recently asked me how to create a .NET delegate from an Eiffel routine. Ideally it would be nice to simply do:

my_delegate := (agent my_routine).to_delegate

where `to_delegate' is a query from the ROUTINE class. However this feature does not yet exist.


How to run eweasel in Eiffel Studio Testing Tool GUI

1. Make sure you have installed Eiffel Studio 6.4 or greater.

2. Check out Eiffel SVN trunk repository and Eweasel SVN repository (



C/C++ calls and callbacks

Most existing examples on how to do external calls contain a lot of English explanation which can distract people, like myself, who learn by example.


How to save a Jpg file with quality option

The result

First let's see the results of images in different quality levels.


Fun with Generics


We all know about generics as a wonderful help to implement container data structures like lists, sets, bags etc. Much later than Eiffel, object-oriented programming languages like Java and C# have understood that generic parameters are a powerful extension to the type system and remove the need for many casts. So, what else can we do with generics beyond containers?


Simple timer class

Sometimes in an application, some actions have to be repeatedly performed in a certain interval. This could for example be some cleanup of external data. To do this I wrote a small class that takes an agent and an interval.

	description: "Execute an action every interval until stopped."
	author: "Patrick Ruckstuhl <>"
	date: "$Date$"

Syndicate content