Mercurial > projects > ldc
diff tango/tango/io/protocol/model/IProtocol.d @ 132:1700239cab2e trunk
[svn r136] MAJOR UNSTABLE UPDATE!!!
Initial commit after moving to Tango instead of Phobos.
Lots of bugfixes...
This build is not suitable for most things.
author | lindquist |
---|---|
date | Fri, 11 Jan 2008 17:57:40 +0100 |
parents | |
children |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/tango/tango/io/protocol/model/IProtocol.d Fri Jan 11 17:57:40 2008 +0100 @@ -0,0 +1,112 @@ +/******************************************************************************* + + copyright: Copyright (c) 2004 Kris Bell. All rights reserved + + license: BSD style: $(LICENSE) + + version: Jan 2007: initial release + + author: Kris + +*******************************************************************************/ + +module tango.io.protocol.model.IProtocol; + +private import tango.io.model.IBuffer; + +/******************************************************************************* + +*******************************************************************************/ + +abstract class IProtocol +{ + enum Type + { + Void = 0, + Utf8, + Bool, + Byte, + UByte, + Utf16, + Short, + UShort, + Utf32, + Int, + UInt, + Float, + Long, + ULong, + Double, + Real, + Obj, + Pointer, + } + + /*********************************************************************** + + ***********************************************************************/ + + alias void delegate (void* src, uint bytes, Type type) Writer; + alias void delegate (void* src, uint bytes, Type type) ArrayWriter; + + alias void[] delegate (void* dst, uint bytes, Type type) Reader; + alias void[] delegate (Reader reader, uint bytes, Type type) Allocator; + + alias void[] delegate (void* dst, uint bytes, Type type, Allocator) ArrayReader; + + /*********************************************************************** + + ***********************************************************************/ + + abstract IBuffer buffer (); + + /*********************************************************************** + + ***********************************************************************/ + + abstract void[] read (void* dst, uint bytes, Type type); + + /*********************************************************************** + + ***********************************************************************/ + + abstract void write (void* src, uint bytes, Type type); + + /*********************************************************************** + + ***********************************************************************/ + + abstract void[] readArray (void* dst, uint bytes, Type type, Allocator alloc); + + /*********************************************************************** + + ***********************************************************************/ + + abstract void writeArray (void* src, uint bytes, Type type); +} + + +/******************************************************************************* + +*******************************************************************************/ + +abstract class IAllocator +{ + /*********************************************************************** + + ***********************************************************************/ + + abstract void reset (); + + /*********************************************************************** + + ***********************************************************************/ + + abstract IProtocol protocol (); + + /*********************************************************************** + + ***********************************************************************/ + + abstract void[] allocate (IProtocol.Reader, uint bytes, IProtocol.Type); +}