summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorEugen Wissner <belka@caraus.de>2018-06-20 07:59:37 +0200
committerEugen Wissner <belka@caraus.de>2018-06-20 07:59:37 +0200
commitf51e9405c90deca9d572135ab934b0828cf37d00 (patch)
treeeda4b0f448d3c91e25c89de35afe163a3476588f
parentde15281ccb50792b6ff593f5e888d886773a0425 (diff)
downloadtanya-0.10.0.tar.gz
Update socket documentationv0.10.0
-rw-r--r--source/tanya/algorithm/comparison.d8
-rw-r--r--source/tanya/async/loop.d66
-rw-r--r--source/tanya/container/buffer.d152
-rw-r--r--source/tanya/conv.d2
-rw-r--r--source/tanya/exception.d2
-rw-r--r--source/tanya/format.d5
-rw-r--r--source/tanya/math/package.d6
-rw-r--r--source/tanya/network/package.d2
-rw-r--r--source/tanya/network/socket.d38
-rw-r--r--source/tanya/os/package.d2
-rw-r--r--source/tanya/sys/windows/def.d4
-rw-r--r--source/tanya/sys/windows/error.d2
-rw-r--r--source/tanya/sys/windows/package.d4
-rw-r--r--source/tanya/sys/windows/winbase.d4
-rw-r--r--source/tanya/sys/windows/winsock2.d4
-rw-r--r--source/tanya/test/assertion.d2
-rw-r--r--source/tanya/test/package.d2
17 files changed, 173 insertions, 132 deletions
diff --git a/source/tanya/algorithm/comparison.d b/source/tanya/algorithm/comparison.d
index 61dbcf6..029ddfa 100644
--- a/source/tanya/algorithm/comparison.d
+++ b/source/tanya/algorithm/comparison.d
@@ -278,10 +278,10 @@ if (isForwardRange!Range && isOrderingComparable!(ElementType!Range))
* If the ranges have different lengths, they aren't equal.
*
* Params:
- * R1 = First range type.
- * R2 = Second range type.
- * range1 = First range.
- * range2 = Second range.
+ * R1 = First range type.
+ * R2 = Second range type.
+ * r1 = First range.
+ * r2 = Second range.
*
* Returns: $(D_KEYWORD true) if both ranges are equal, $(D_KEYWORD false)
* otherwise.
diff --git a/source/tanya/async/loop.d b/source/tanya/async/loop.d
index b56118f..f5c7dae 100644
--- a/source/tanya/async/loop.d
+++ b/source/tanya/async/loop.d
@@ -13,50 +13,52 @@
*
* class EchoProtocol : TransmissionControlProtocol
* {
- * private DuplexTransport transport;
+ * private DuplexTransport transport;
*
- * void received(in ubyte[] data) @nogc
- * {
- * transport.write(data);
- * }
+ * void received(in ubyte[] data) @nogc
+ * {
+ * ubyte[512] buffer;
+ * buffer[0 .. data.length] = data;
+ * transport.write(buffer[]);
+ * }
*
- * void connected(DuplexTransport transport) @nogc
- * {
- * this.transport = transport;
- * }
+ * void connected(DuplexTransport transport) @nogc
+ * {
+ * this.transport = transport;
+ * }
*
- * void disconnected(SocketException e) @nogc
- * {
- * }
+ * void disconnected(SocketException e) @nogc
+ * {
+ * }
* }
*
* void main()
* {
- * auto address = defaultAllocator.make!InternetAddress("127.0.0.1", cast(ushort) 8192);
+ * auto address = defaultAllocator.make!InternetAddress("127.0.0.1", cast(ushort) 8192);
*
- * version (Windows)
- * {
- * auto sock = defaultAllocator.make!OverlappedStreamSocket(AddressFamily.inet);
- * }
- * else
- * {
- * auto sock = defaultAllocator.make!StreamSocket(AddressFamily.inet);
- * sock.blocking = false;
- * }
+ * version (Windows)
+ * {
+ * auto sock = defaultAllocator.make!OverlappedStreamSocket(AddressFamily.inet);
+ * }
+ * else
+ * {
+ * auto sock = defaultAllocator.make!StreamSocket(AddressFamily.inet);
+ * sock.blocking = false;
+ * }
*
- * sock.bind(address);
- * sock.listen(5);
+ * sock.bind(address);
+ * sock.listen(5);
*
- * auto io = defaultAllocator.make!ConnectionWatcher(sock);
- * io.setProtocol!EchoProtocol;
+ * auto io = defaultAllocator.make!ConnectionWatcher(sock);
+ * io.setProtocol!EchoProtocol;
*
- * defaultLoop.start(io);
- * defaultLoop.run();
+ * defaultLoop.start(io);
+ * defaultLoop.run();
*
- * sock.shutdown();
- * defaultAllocator.dispose(io);
- * defaultAllocator.dispose(sock);
- * defaultAllocator.dispose(address);
+ * sock.shutdown();
+ * defaultAllocator.dispose(io);
+ * defaultAllocator.dispose(sock);
+ * defaultAllocator.dispose(address);
* }
* ---
*
diff --git a/source/tanya/container/buffer.d b/source/tanya/container/buffer.d
index a4ffebc..4866ca7 100644
--- a/source/tanya/container/buffer.d
+++ b/source/tanya/container/buffer.d
@@ -51,7 +51,7 @@ version (unittest)
* T = Buffer type.
*/
struct ReadBuffer(T = ubyte)
- if (isScalarType!T)
+if (isScalarType!T)
{
/// Internal buffer.
private T[] buffer_;
@@ -66,16 +66,16 @@ struct ReadBuffer(T = ubyte)
private size_t ring;
/// Available space.
- private immutable size_t minAvailable = 1024;
+ private size_t minAvailable = 1024;
/// Size by which the buffer will grow.
- private immutable size_t blockSize = 8192;
+ private size_t blockSize = 8192;
invariant
{
- assert(length_ <= buffer_.length);
- assert(blockSize > 0);
- assert(minAvailable > 0);
+ assert(this.length_ <= this.buffer_.length);
+ assert(this.blockSize > 0);
+ assert(this.minAvailable > 0);
}
/**
@@ -89,14 +89,14 @@ struct ReadBuffer(T = ubyte)
* $(D_PSYMBOL free) < $(D_PARAM minAvailable)).
* allocator = Allocator.
*/
- this(in size_t size,
- in size_t minAvailable = 1024,
+ this(size_t size,
+ size_t minAvailable = 1024,
shared Allocator allocator = defaultAllocator) @trusted
{
this(allocator);
this.minAvailable = minAvailable;
this.blockSize = size;
- buffer_ = cast(T[]) allocator_.allocate(size * T.sizeof);
+ this.buffer_ = cast(T[]) allocator_.allocate(size * T.sizeof);
}
/// ditto
@@ -115,7 +115,7 @@ struct ReadBuffer(T = ubyte)
*/
~this() @trusted
{
- allocator.deallocate(buffer_);
+ allocator.deallocate(this.buffer_);
}
///
@@ -131,7 +131,7 @@ struct ReadBuffer(T = ubyte)
*/
@property size_t capacity() const
{
- return buffer_.length;
+ return this.buffer_.length;
}
/**
@@ -139,7 +139,7 @@ struct ReadBuffer(T = ubyte)
*/
@property size_t length() const
{
- return length_ - start;
+ return this.length_ - start;
}
/// ditto
@@ -152,7 +152,7 @@ struct ReadBuffer(T = ubyte)
*/
void clear()
{
- start = length_ = ring;
+ start = this.length_ = ring;
}
/**
@@ -187,10 +187,10 @@ struct ReadBuffer(T = ubyte)
*
* Returns: $(D_KEYWORD this).
*/
- ref ReadBuffer opOpAssign(string op)(in size_t length)
+ ref ReadBuffer opOpAssign(string op)(size_t length)
if (op == "+")
{
- length_ += length;
+ this.length_ += length;
ring = start;
return this;
}
@@ -234,9 +234,9 @@ struct ReadBuffer(T = ubyte)
*
* Returns: Array between $(D_PARAM start) and $(D_PARAM end).
*/
- T[] opSlice(in size_t start, in size_t end)
+ T[] opSlice(size_t start, size_t end)
{
- return buffer_[this.start + start .. this.start + end];
+ return this.buffer_[this.start + start .. this.start + end];
}
/**
@@ -250,23 +250,24 @@ struct ReadBuffer(T = ubyte)
{
if (start > 0)
{
- auto ret = buffer_[0 .. start];
+ auto ret = this.buffer_[0 .. start];
ring = 0;
return ret;
}
else
{
- if (capacity - length < minAvailable)
+ if (capacity - length < this.minAvailable)
{
- void[] buf = buffer_;
- immutable cap = capacity;
+ void[] buf = this.buffer_;
+ const cap = capacity;
() @trusted {
- allocator.reallocate(buf, (cap + blockSize) * T.sizeof);
- buffer_ = cast(T[]) buf;
+ allocator.reallocate(buf,
+ (cap + this.blockSize) * T.sizeof);
+ this.buffer_ = cast(T[]) buf;
}();
}
- ring = length_;
- return buffer_[length_ .. $];
+ ring = this.length_;
+ return this.buffer_[this.length_ .. $];
}
}
@@ -310,7 +311,7 @@ struct ReadBuffer(T = ubyte)
* T = Buffer type.
*/
struct WriteBuffer(T = ubyte)
- if (isScalarType!T)
+if (isScalarType!T)
{
/// Internal buffer.
private T[] buffer_;
@@ -322,16 +323,16 @@ struct WriteBuffer(T = ubyte)
private size_t ring;
/// Size by which the buffer will grow.
- private immutable size_t blockSize;
+ private const size_t blockSize;
/// The position of the free area in the buffer.
private size_t position;
invariant
{
- assert(blockSize > 0);
+ assert(this.blockSize > 0);
// Position can refer to an element outside the buffer if the buffer is full.
- assert(position <= buffer_.length);
+ assert(this.position <= this.buffer_.length);
}
/**
@@ -342,7 +343,7 @@ struct WriteBuffer(T = ubyte)
*
* Precondition: $(D_INLINECODE size > 0 && allocator !is null)
*/
- this(in size_t size, shared Allocator allocator = defaultAllocator) @trusted
+ this(size_t size, shared Allocator allocator = defaultAllocator) @trusted
in
{
assert(size > 0);
@@ -350,10 +351,10 @@ struct WriteBuffer(T = ubyte)
}
do
{
- blockSize = size;
+ this.blockSize = size;
ring = size - 1;
allocator_ = allocator;
- buffer_ = cast(T[]) allocator_.allocate(size * T.sizeof);
+ this.buffer_ = cast(T[]) allocator_.allocate(size * T.sizeof);
}
@disable this();
@@ -363,7 +364,7 @@ struct WriteBuffer(T = ubyte)
*/
~this()
{
- allocator.deallocate(buffer_);
+ allocator.deallocate(this.buffer_);
}
/**
@@ -371,7 +372,7 @@ struct WriteBuffer(T = ubyte)
*/
@property size_t capacity() const
{
- return buffer_.length;
+ return this.buffer_.length;
}
/**
@@ -384,13 +385,13 @@ struct WriteBuffer(T = ubyte)
*/
@property size_t length() const
{
- if (position > ring || position < start) // Buffer overflowed
+ if (this.position > ring || this.position < start) // Buffer overflowed
{
return ring - start + 1;
}
else
{
- return position - start;
+ return this.position - start;
}
}
@@ -433,61 +434,62 @@ struct WriteBuffer(T = ubyte)
* Params:
* buffer = Buffer chunk got with $(D_PSYMBOL opIndex).
*/
- ref WriteBuffer opOpAssign(string op)(in T[] buffer)
+ ref WriteBuffer opOpAssign(string op)(const T[] buffer)
if (op == "~")
{
size_t end, start;
- if (position >= this.start && position <= ring)
+ if (this.position >= this.start && this.position <= ring)
{
auto afterRing = ring + 1;
- end = position + buffer.length;
+ end = this.position + buffer.length;
if (end > afterRing)
{
end = afterRing;
}
- start = end - position;
- buffer_[position .. end] = buffer[0 .. start];
+ start = end - this.position;
+ this.buffer_[this.position .. end] = buffer[0 .. start];
if (end == afterRing)
{
- position = this.start == 0 ? afterRing : 0;
+ this.position = this.start == 0 ? afterRing : 0;
}
else
{
- position = end;
+ this.position = end;
}
}
// Check if we have some free space at the beginning
- if (start < buffer.length && position < this.start)
+ if (start < buffer.length && this.position < this.start)
{
- end = position + buffer.length - start;
+ end = this.position + buffer.length - start;
if (end > this.start)
{
end = this.start;
}
- auto areaEnd = end - position + start;
- buffer_[position .. end] = buffer[start .. areaEnd];
- position = end == this.start ? ring + 1 : end - position;
+ auto areaEnd = end - this.position + start;
+ this.buffer_[this.position .. end] = buffer[start .. areaEnd];
+ this.position = end == this.start ? ring + 1 : end - this.position;
start = areaEnd;
}
// And if we still haven't found any place, save the rest in the overflow area
if (start < buffer.length)
{
- end = position + buffer.length - start;
+ end = this.position + buffer.length - start;
if (end > capacity)
{
- auto newSize = (end / blockSize * blockSize + blockSize) * T.sizeof;
+ const newSize = end / this.blockSize * this.blockSize
+ + this.blockSize;
() @trusted {
- void[] buf = buffer_;
- allocator.reallocate(buf, newSize);
- buffer_ = cast(T[]) buf;
+ void[] buf = this.buffer_;
+ allocator.reallocate(buf, newSize * T.sizeof);
+ this.buffer_ = cast(T[]) buf;
}();
}
- buffer_[position .. end] = buffer[start .. $];
- position = end;
+ this.buffer_[this.position .. end] = buffer[start .. $];
+ this.position = end;
if (this.start == 0)
{
ring = capacity - 1;
@@ -506,7 +508,7 @@ struct WriteBuffer(T = ubyte)
*
* Returns: $(D_KEYWORD this).
*/
- ref WriteBuffer opOpAssign(string op)(in size_t length)
+ ref WriteBuffer opOpAssign(string op)(size_t length)
if (op == "+")
in
{
@@ -521,42 +523,42 @@ struct WriteBuffer(T = ubyte)
{
return this;
}
- else if (position <= afterRing)
+ else if (this.position <= afterRing)
{
start += length;
- if (start > 0 && position == afterRing)
+ if (start > 0 && this.position == afterRing)
{
- position = oldStart;
+ this.position = oldStart;
}
}
else
{
- auto overflow = position - afterRing;
+ auto overflow = this.position - afterRing;
if (overflow > length)
{
- immutable afterLength = afterRing + length;
- buffer_[start .. start + length] = buffer_[afterRing .. afterLength];
- buffer_[afterRing .. afterLength] = buffer_[afterLength .. position];
- position -= length;
+ const afterLength = afterRing + length;
+ this.buffer_[start .. start + length] = this.buffer_[afterRing .. afterLength];
+ this.buffer_[afterRing .. afterLength] = this.buffer_[afterLength .. this.position];
+ this.position -= length;
}
else if (overflow == length)
{
- buffer_[start .. start + overflow] = buffer_[afterRing .. position];
- position -= overflow;
+ this.buffer_[start .. start + overflow] = this.buffer_[afterRing .. this.position];
+ this.position -= overflow;
}
else
{
- buffer_[start .. start + overflow] = buffer_[afterRing .. position];
- position = overflow;
+ this.buffer_[start .. start + overflow] = this.buffer_[afterRing .. this.position];
+ this.position = overflow;
}
start += length;
- if (start == position)
+ if (start == this.position)
{
- if (position != afterRing)
+ if (this.position != afterRing)
{
- position = 0;
+ this.position = 0;
}
start = 0;
ring = capacity - 1;
@@ -596,15 +598,15 @@ struct WriteBuffer(T = ubyte)
*
* Returns: A chunk of data buffer.
*/
- T[] opSlice(in size_t start, in size_t end)
+ T[] opSlice(size_t start, size_t end)
{
- if (position > ring || position < start) // Buffer overflowed
+ if (this.position > ring || this.position < start) // Buffer overflowed
{
- return buffer_[this.start .. ring + 1 - length + end];
+ return this.buffer_[this.start .. ring + 1 - length + end];
}
else
{
- return buffer_[this.start .. this.start + end];
+ return this.buffer_[this.start .. this.start + end];
}
}
diff --git a/source/tanya/conv.d b/source/tanya/conv.d
index 70e97fa..61935f6 100644
--- a/source/tanya/conv.d
+++ b/source/tanya/conv.d
@@ -5,7 +5,7 @@
/**
* This module provides functions for converting between different types.
*
- * Copyright: Eugene Wissner 2017.
+ * Copyright: Eugene Wissner 2017-2018.
* License: $(LINK2 https://www.mozilla.org/en-US/MPL/2.0/,
* Mozilla Public License, v. 2.0).
* Authors: $(LINK2 mailto:info@caraus.de, Eugene Wissner)
diff --git a/source/tanya/exception.d b/source/tanya/exception.d
index c329999..936e4a7 100644
--- a/source/tanya/exception.d
+++ b/source/tanya/exception.d
@@ -5,7 +5,7 @@
/**
* Common exceptions and errors.
*
- * Copyright: Eugene Wissner 2017.
+ * Copyright: Eugene Wissner 2017-2018.
* License: $(LINK2 https://www.mozilla.org/en-US/MPL/2.0/,
* Mozilla Public License, v. 2.0).
* Authors: $(LINK2 mailto:info@caraus.de, Eugene Wissner)
diff --git a/source/tanya/format.d b/source/tanya/format.d
index c1b087e..4bd0983 100644
--- a/source/tanya/format.d
+++ b/source/tanya/format.d
@@ -3,9 +3,10 @@
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */
/**
- * This package contains formatting and conversion functions.
+ * This package doesn't yet contain public symbols. Refer to
+ * $(D_PSYMBOL tanya.conv) for basic formatting and conversion functionality.
*
- * Copyright: Eugene Wissner 2017.
+ * Copyright: Eugene Wissner 2017-2018.
* License: $(LINK2 https://www.mozilla.org/en-US/MPL/2.0/,
* Mozilla Public License, v. 2.0).
* Authors: $(LINK2 mailto:info@caraus.de, Eugene Wissner)
diff --git a/source/tanya/math/package.d b/source/tanya/math/package.d
index 58c7ad9..0aad01d 100644
--- a/source/tanya/math/package.d
+++ b/source/tanya/math/package.d
@@ -38,7 +38,7 @@ enum IEEEPrecision : ubyte
/**
* Tests the precision of floating-point type $(D_PARAM F).
*
- * For $(D_KEYWORD float), $(D_PSYMBOL ieeePrecision) always evaluates to
+ * For $(D_KEYWORD float) $(D_PSYMBOL ieeePrecision) always evaluates to
* $(D_INLINECODE IEEEPrecision.single); for $(D_KEYWORD double) - to
* $(D_INLINECODE IEEEPrecision.double). It returns different values only
* for $(D_KEYWORD real), since $(D_KEYWORD real) is a platform-dependent type.
@@ -396,7 +396,7 @@ if (isFloatingPoint!F)
/**
* Determines whether $(D_PARAM x) is a denormilized number or not.
-
+ *
* Denormalized number is a number between `0` and `1` that cannot be
* represented as
*
@@ -459,7 +459,7 @@ if (isFloatingPoint!F)
/**
* Determines whether $(D_PARAM x) is a normilized number or not.
-
+ *
* Normalized number is a number that can be represented as
*
* <pre>
diff --git a/source/tanya/network/package.d b/source/tanya/network/package.d
index 6cae18c..185d27c 100644
--- a/source/tanya/network/package.d
+++ b/source/tanya/network/package.d
@@ -5,7 +5,7 @@
/**
* Network programming.
*
- * Copyright: Eugene Wissner 2016-2017.
+ * Copyright: Eugene Wissner 2016-2018.
* License: $(LINK2 https://www.mozilla.org/en-US/MPL/2.0/,
* Mozilla Public License, v. 2.0).
* Authors: $(LINK2 mailto:info@caraus.de, Eugene Wissner)
diff --git a/source/tanya/network/socket.d b/source/tanya/network/socket.d
index a7d304a..b50d3f0 100644
--- a/source/tanya/network/socket.d
+++ b/source/tanya/network/socket.d
@@ -5,7 +5,43 @@
/**
* Low-level socket programming.
*
- * Copyright: Eugene Wissner 2016-2017.
+ * Current API supports only server-side TCP communication.
+ *
+ * Here is an example of a cross-platform blocking server:
+ *
+ * ---
+ * import std.stdio;
+ * import tanya.memory;
+ * import tanya.network;
+ *
+ * void main()
+ * {
+ * auto socket = defaultAllocator.make!StreamSocket(AddressFamily.inet);
+ * auto address = defaultAllocator.make!InternetAddress("127.0.0.1",
+ * cast(ushort) 8192);
+ *
+ * socket.setOption(SocketOptionLevel.SOCKET, SocketOption.REUSEADDR, true);
+ * socket.blocking = true;
+ * socket.bind(address);
+ * socket.listen(5);
+ *
+ * auto client = socket.accept();
+ * client.send(cast(const(ubyte)[]) "Test\n");
+ *
+ * ubyte[100] buf;
+ * auto response = client.receive(buf[]);
+ *
+ * writeln(cast(const(char)[]) buf[0 .. response]);
+ *
+ * defaultAllocator.dispose(client);
+ * defaultAllocator.dispose(socket);
+ * }
+ * ---
+ *
+ * For an example of an asynchronous server refer to the documentation of the
+ * $(D_PSYMBOL tanya.async.loop) module.
+ *
+ * Copyright: Eugene Wissner 2016-2018.
* License: $(LINK2 https://www.mozilla.org/en-US/MPL/2.0/,
* Mozilla Public License, v. 2.0).
* Authors: $(LINK2 mailto:info@caraus.de, Eugene Wissner)
diff --git a/source/tanya/os/package.d b/source/tanya/os/package.d
index 3cb621c..5292a8a 100644
--- a/source/tanya/os/package.d
+++ b/source/tanya/os/package.d
@@ -6,7 +6,7 @@
* This package provides platform-independent interfaces to operating system
* functionality.
*
- * Copyright: Eugene Wissner 2017.
+ * Copyright: Eugene Wissner 2017-2018.
* License: $(LINK2 https://www.mozilla.org/en-US/MPL/2.0/,
* Mozilla Public License, v. 2.0).
* Authors: $(LINK2 mailto:info@caraus.de, Eugene Wissner)
diff --git a/source/tanya/sys/windows/def.d b/source/tanya/sys/windows/def.d
index f4e5d04..6fe920e 100644
--- a/source/tanya/sys/windows/def.d
+++ b/source/tanya/sys/windows/def.d
@@ -16,7 +16,7 @@
* defined here.
* Also aliases for specific types like $(D_PSYMBOL SOCKET) are defined here.
*
- * Copyright: Eugene Wissner 2017.
+ * Copyright: Eugene Wissner 2017-2018.
* License: $(LINK2 https://www.mozilla.org/en-US/MPL/2.0/,
* Mozilla Public License, v. 2.0).
* Authors: $(LINK2 mailto:info@caraus.de, Eugene Wissner)
@@ -58,4 +58,4 @@ align(1) struct GUID
ushort Data2;
ushort Data3;
char[8] Data4;
-} \ No newline at end of file
+}
diff --git a/source/tanya/sys/windows/error.d b/source/tanya/sys/windows/error.d
index 3f6e71c..9ce6bf8 100644
--- a/source/tanya/sys/windows/error.d
+++ b/source/tanya/sys/windows/error.d
@@ -3,7 +3,7 @@
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */
/**
- * Copyright: Eugene Wissner 2017.
+ * Copyright: Eugene Wissner 2017-2018.
* License: $(LINK2 https://www.mozilla.org/en-US/MPL/2.0/,
* Mozilla Public License, v. 2.0).
* Authors: $(LINK2 mailto:info@caraus.de, Eugene Wissner)
diff --git a/source/tanya/sys/windows/package.d b/source/tanya/sys/windows/package.d
index 07b17d7..8ecb96b 100644
--- a/source/tanya/sys/windows/package.d
+++ b/source/tanya/sys/windows/package.d
@@ -3,7 +3,7 @@
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */
/**
- * Copyright: Eugene Wissner 2017.
+ * Copyright: Eugene Wissner 2017-2018.
* License: $(LINK2 https://www.mozilla.org/en-US/MPL/2.0/,
* Mozilla Public License, v. 2.0).
* Authors: $(LINK2 mailto:info@caraus.de, Eugene Wissner)
@@ -17,4 +17,4 @@ version (Windows):
public import tanya.sys.windows.def;
public import tanya.sys.windows.error;
public import tanya.sys.windows.winbase;
-public import tanya.sys.windows.winsock2; \ No newline at end of file
+public import tanya.sys.windows.winsock2;
diff --git a/source/tanya/sys/windows/winbase.d b/source/tanya/sys/windows/winbase.d
index bbcc712..02978a3 100644
--- a/source/tanya/sys/windows/winbase.d
+++ b/source/tanya/sys/windows/winbase.d
@@ -5,7 +5,7 @@
/**
* Definitions from winbase.h.
*
- * Copyright: Eugene Wissner 2017.
+ * Copyright: Eugene Wissner 2017-2018.
* License: $(LINK2 https://www.mozilla.org/en-US/MPL/2.0/,
* Mozilla Public License, v. 2.0).
* Authors: $(LINK2 mailto:info@caraus.de, Eugene Wissner)
@@ -52,4 +52,4 @@ extern(Windows)
BOOL GetOverlappedResult(HANDLE hFile,
OVERLAPPED* lpOverlapped,
DWORD* lpNumberOfBytesTransferred,
- BOOL bWait) nothrow @system @nogc; \ No newline at end of file
+ BOOL bWait) nothrow @system @nogc;
diff --git a/source/tanya/sys/windows/winsock2.d b/source/tanya/sys/windows/winsock2.d
index c9bae7f..8a00ed9 100644
--- a/source/tanya/sys/windows/winsock2.d
+++ b/source/tanya/sys/windows/winsock2.d
@@ -5,7 +5,7 @@
/**
* Definitions from winsock2.h, ws2def.h and MSWSock.h.
*
- * Copyright: Eugene Wissner 2017.
+ * Copyright: Eugene Wissner 2017-2018.
* License: $(LINK2 https://www.mozilla.org/en-US/MPL/2.0/,
* Mozilla Public License, v. 2.0).
* Authors: $(LINK2 mailto:info@caraus.de, Eugene Wissner)
@@ -216,4 +216,4 @@ enum
SO_UPDATE_ACCEPT_CONTEXT = 0x700B,
SO_CONNECT_TIME = 0x700C,
SO_UPDATE_CONNECT_CONTEXT = 0x7010,
-} \ No newline at end of file
+}
diff --git a/source/tanya/test/assertion.d b/source/tanya/test/assertion.d
index 4a82102..10105d7 100644
--- a/source/tanya/test/assertion.d
+++ b/source/tanya/test/assertion.d
@@ -13,7 +13,7 @@
* The functions can cause segmentation fault if the module is compiled
* in production mode and the condition fails.
*
- * Copyright: Eugene Wissner 2017.
+ * Copyright: Eugene Wissner 2017-2018.
* License: $(LINK2 https://www.mozilla.org/en-US/MPL/2.0/,
* Mozilla Public License, v. 2.0).
* Authors: $(LINK2 mailto:info@caraus.de, Eugene Wissner)
diff --git a/source/tanya/test/package.d b/source/tanya/test/package.d
index a1e339f..2e34702 100644
--- a/source/tanya/test/package.d
+++ b/source/tanya/test/package.d
@@ -5,7 +5,7 @@
/**
* Test suite for $(D_KEYWORD unittest)-blocks.
*
- * Copyright: Eugene Wissner 2017.
+ * Copyright: Eugene Wissner 2017-2018.
* License: $(LINK2 https://www.mozilla.org/en-US/MPL/2.0/,
* Mozilla Public License, v. 2.0).
* Authors: $(LINK2 mailto:info@caraus.de, Eugene Wissner)