www.digitalmars.com         C & C++   DMDScript  

digitalmars.D - Templated interface

reply DF <deefriend yahoo.com> writes:
Is it possible to create templated interfaces in D? And if possible than can
anyone provide some good example on templated interface.
Oct 14 2008
next sibling parent reply "Simen Kjaeraas" <simen.kjaras gmail.com> writes:
On Tue, 14 Oct 2008 23:41:57 +0200, DF <deefriend yahoo.com> wrote:

 Is it possible to create templated interfaces in D? And if possible than  
 can anyone provide some good example on templated interface.

interface foo(T) { T property(); T property(T value); } class bar : foo!(int) { int data; int property() { return data; } int property(int value) { return data = value; } } void main() { bar b = new bar; b.property = 4; writefln(b.property); } -- Simen
Oct 14 2008
parent DF <deefriend yahoo.com> writes:
Simen Kjaeraas Wrote:

 On Tue, 14 Oct 2008 23:41:57 +0200, DF <deefriend yahoo.com> wrote:
 
 Is it possible to create templated interfaces in D? And if possible than  
 can anyone provide some good example on templated interface.

interface foo(T) { T property(); T property(T value); } class bar : foo!(int) { int data; int property() { return data; } int property(int value) { return data = value; } } void main() { bar b = new bar; b.property = 4; writefln(b.property); } -- Simen

Thanx, Simen! I've made the solution myself. Maybe if anyone is interested I can post it. Though your sampe is good, I've got more complicated thing: interface Stack(T) { void push(T element); T pop(); int isEmpty(); } class StackImpl(T) : Stack!(T) { private T[] data; this() { } public void push(T element) { ... } public T pop() { ... } public int isEmpty() { ... } } void main() { Stack!(char) data = new StackImpl!(char)(); } Seems to work... :)
Oct 14 2008
prev sibling parent Robert Fraser <fraserofthenight gmail.com> writes:
DF wrote:
 Is it possible to create templated interfaces in D? And if possible than can
anyone provide some good example on templated interface.

Example: IList(T) A list of elements of type T. Implementations could be LinkedList(T) and ArrayList(T).
Oct 14 2008