From b60933e833ae065a1657818a3bad37d5fb30109f Mon Sep 17 00:00:00 2001 From: Steven Schveighoffer Date: Tue, 17 Oct 2023 13:40:57 -0400 Subject: [PATCH 1/4] Fix #9 - Add range stream which allows buffering any range of any element type. --- source/iopipe/stream.d | 113 +++++++++++++++++++++++++++++++++++++++++ 1 file changed, 113 insertions(+) diff --git a/source/iopipe/stream.d b/source/iopipe/stream.d index 410815b..25245e9 100644 --- a/source/iopipe/stream.d +++ b/source/iopipe/stream.d @@ -7,6 +7,8 @@ Authors: Steven Schveighoffer */ module iopipe.stream; +import std.range.primitives; + version(Have_io) { import std.io; @@ -77,3 +79,114 @@ struct ZeroDev /// Common instance of ZeroDev to use anywhere needed. immutable ZeroDev zeroDev; + +// helper for copying data from a src range into a buffer +private size_t copy(Src, Buf)(ref Src src, Buf buf) if(is(immutable(ElementEncodingType!Buf) == immutable(ElementEncodingType!Src))) +{ + // element compatible ranges. Use standard copying + static if(is(Buf : T[], T) && is(Src : U[], U) && is(immutable(T) == immutable(U))) + { + // both dynamic arrays, use slice assign. + auto n = src.length < buf.length ? src.length : buf.length; + buf[0 .. n] = src[0 .. n]; + src = src[n .. $]; + return n; + } + else + { + size_t n = 0; + while(n < buf.length && !src.empty) + { + buf[n++] = src.front; + src.popFront; + } + return n; + } +} + +struct RangeInput(R) { + private import std.traits: isNarrowString; + private { + R src; + static if(is(ElementType!R == T[], T)) + { + enum isRangeOfSlices = true; + T[] data; + } + else + enum isRangeOfSlices = false; + } + + this(R src) + { + this.src = src; + static if(isRangeOfSlices) + if(!this.src.empty) + data = this.src.front; + } + + size_t read(Buf)(Buf buf) if (isNarrowString!Buf || isRandomAccessRange!Buf) + { + static if(is(typeof(copy(src, buf)))) + { + return copy(src, buf); + } + else static if(isRangeOfSlices && is(typeof(copy(data, buf)))) + { + size_t n = 0; + while(n < buf.length && !src.empty) + { + n += copy(data, buf[n .. $]); + if(data.empty) + { + src.popFront; + data = src.empty ? null : src.front; + } + } + return n; + } + else + static assert(false, "Incompatible read for type `", Buf, "` and source range `", R, "`"); + } +} + +/** + * This is an adapter that provides a way to "read" data from an input range. + * It can be used as an input source for any iopipe. + * + * This has a specialization for an input range that is a "range of slices" + * type, since we can utilize slice assignment for the copy. + */ +auto rangeInput(R)(R range) if (isInputRange!R) +{ + return RangeInput!R(range); +} + +unittest +{ + import std.range; + import std.algorithm; + import iopipe.bufpipe; + import std.utf; + + + // make a big range of characters + { + auto bigRange = repeat(only(repeat('a', 10), repeat('b', 10))).joiner.joiner.take(100000); + auto inp = bigRange.rangeInput; + inp.read(cast(char[])[]); + auto pipe = bigRange.rangeInput.bufd!char; + pipe.ensureElems(); + assert(equal(pipe.window.byChar, bigRange)); + } + + // try a range of slices + { + auto bigRange = repeat(only("aaaaaaaaaa", "bbbbbbbbbb"), 10000).joiner; + auto inp = bigRange.rangeInput; + inp.read(cast(char[])[]); + auto pipe = bigRange.rangeInput.bufd!char; + pipe.ensureElems(); + assert(equal(pipe.window, bigRange.joiner)); + } +} From e1bedc7996ccf4886a85a1f68498780f08042c27 Mon Sep 17 00:00:00 2001 From: Steven Schveighoffer Date: Tue, 17 Oct 2023 13:52:08 -0400 Subject: [PATCH 2/4] Remove corrupted docs --- docs/file_hashes.json | 1 - docs/images/ddox/alias.png | Bin 253 -> 0 bytes docs/images/ddox/class.png | Bin 206 -> 0 bytes docs/images/ddox/enum.png | Bin 211 -> 0 bytes docs/images/ddox/enummember.png | Bin 258 -> 0 bytes docs/images/ddox/function.png | Bin 244 -> 0 bytes docs/images/ddox/inherited.png | Bin 281 -> 0 bytes docs/images/ddox/interface.png | Bin 207 -> 0 bytes docs/images/ddox/module.png | Bin 235 -> 0 bytes docs/images/ddox/package.png | Bin 206 -> 0 bytes docs/images/ddox/private.png | Bin 495 -> 0 bytes docs/images/ddox/property.png | Bin 260 -> 0 bytes docs/images/ddox/protected.png | Bin 358 -> 0 bytes docs/images/ddox/struct.png | Bin 209 -> 0 bytes docs/images/ddox/template.png | Bin 203 -> 0 bytes docs/images/ddox/variable.png | Bin 277 -> 0 bytes docs/index.html | 167 ---------- docs/iopipe.html | 116 ------- docs/iopipe/buffer.html | 148 --------- .../buffer/AllocatedBuffer._allocator.html | 129 -------- .../buffer/AllocatedBuffer.allocator.html | 116 ------- docs/iopipe/buffer/AllocatedBuffer.avail.html | 120 ------- .../buffer/AllocatedBuffer.capacity.html | 119 ------- .../iopipe/buffer/AllocatedBuffer.extend.html | 134 -------- docs/iopipe/buffer/AllocatedBuffer.html | 247 --------------- .../buffer/AllocatedBuffer.releaseBack.html | 129 -------- .../buffer/AllocatedBuffer.releaseFront.html | 129 -------- docs/iopipe/buffer/AllocatedBuffer.this.html | 121 ------- .../iopipe/buffer/AllocatedBuffer.window.html | 116 ------- .../buffer/GCNoPointerAllocator.allocate.html | 121 ------- .../buffer/GCNoPointerAllocator.expand.html | 123 ------- .../GCNoPointerAllocator.goodAllocSize.html | 121 ------- docs/iopipe/buffer/GCNoPointerAllocator.html | 171 ---------- .../buffer/GCNoPointerAllocator.instance.html | 129 -------- docs/iopipe/buffer/RingBuffer.avail.html | 120 ------- docs/iopipe/buffer/RingBuffer.capacity.html | 119 ------- docs/iopipe/buffer/RingBuffer.extend.html | 134 -------- docs/iopipe/buffer/RingBuffer.html | 223 ------------- .../iopipe/buffer/RingBuffer.releaseBack.html | 129 -------- .../buffer/RingBuffer.releaseFront.html | 129 -------- docs/iopipe/buffer/RingBuffer.window.html | 116 ------- docs/iopipe/bufpipe.html | 253 --------------- docs/iopipe/bufpipe/SimplePipe.chain.html | 131 -------- docs/iopipe/bufpipe/SimplePipe.extend.html | 136 -------- docs/iopipe/bufpipe/SimplePipe.html | 251 --------------- docs/iopipe/bufpipe/SimplePipe.release.html | 129 -------- docs/iopipe/bufpipe/SimplePipe.this.html | 121 ------- docs/iopipe/bufpipe/SimplePipe.valve.html | 131 -------- docs/iopipe/bufpipe/SimplePipe.window.html | 117 ------- docs/iopipe/bufpipe/arrayCastPipe.html | 142 --------- docs/iopipe/bufpipe/asElemRange.html | 137 -------- docs/iopipe/bufpipe/asInputRange.html | 134 -------- docs/iopipe/bufpipe/bufd.html | 149 --------- docs/iopipe/bufpipe/byteSwapper.html | 144 --------- docs/iopipe/bufpipe/ensureElems.html | 140 -------- docs/iopipe/bufpipe/iosrc.html | 136 -------- docs/iopipe/bufpipe/outputPipe.html | 142 --------- docs/iopipe/bufpipe/process.html | 132 -------- docs/iopipe/bufpipe/rbufd.html | 149 --------- docs/iopipe/bufpipe/writeBuf.html | 151 --------- docs/iopipe/refc.html | 152 --------- docs/iopipe/refc/RefCounted._get.html | 111 ------- docs/iopipe/refc/RefCounted.html | 179 ----------- docs/iopipe/refc/RefCounted.opAssign.html | 143 --------- docs/iopipe/refc/RefCounted.this.html | 114 ------- docs/iopipe/refc/refCounted.html | 136 -------- docs/iopipe/stream.html | 215 ------------- docs/iopipe/stream/IODev.html | 120 ------- docs/iopipe/stream/NullDev.html | 135 -------- docs/iopipe/stream/NullDev.read.html | 121 ------- docs/iopipe/stream/ZeroDev.html | 117 ------- docs/iopipe/stream/nullDev.html | 117 ------- docs/iopipe/stream/openDev.html | 166 ---------- docs/iopipe/stream/zeroDev.html | 117 ------- docs/iopipe/textpipe.html | 299 ------------------ docs/iopipe/textpipe/CodeUnit.html | 120 ------- docs/iopipe/textpipe/UTFType.html | 125 -------- docs/iopipe/textpipe/assumeText.html | 146 --------- docs/iopipe/textpipe/byDelimRange.html | 141 --------- docs/iopipe/textpipe/byLine.html | 133 -------- docs/iopipe/textpipe/byLineRange.html | 135 -------- docs/iopipe/textpipe/convertText.html | 145 --------- docs/iopipe/textpipe/delimitedText.html | 141 --------- docs/iopipe/textpipe/detectBOM.html | 135 -------- docs/iopipe/textpipe/encodeText.html | 136 -------- docs/iopipe/textpipe/ensureDecodeable.html | 142 --------- docs/iopipe/textpipe/runEncoded.html | 155 --------- docs/iopipe/textpipe/runWithEncoding.html | 157 --------- docs/iopipe/textpipe/textConverter.html | 134 -------- docs/iopipe/textpipe/textOutput.html | 163 ---------- docs/iopipe/traits.html | 228 ------------- docs/iopipe/traits/WindowType.html | 118 ------- docs/iopipe/traits/extend.html | 133 -------- docs/iopipe/traits/hasValve.html | 117 ------- docs/iopipe/traits/implementValve.html | 124 -------- docs/iopipe/traits/isIopipe.html | 129 -------- docs/iopipe/traits/release.html | 130 -------- docs/iopipe/traits/valveCount.html | 117 ------- docs/iopipe/traits/window.html | 125 -------- docs/iopipe/valve.html | 166 ---------- docs/iopipe/valve/holdingLoop.html | 136 -------- docs/iopipe/valve/holdingValve.html | 168 ---------- docs/iopipe/valve/push.html | 146 --------- docs/iopipe/valve/simpleValve.html | 135 -------- docs/iopipe/valve/valveOf.html | 146 --------- docs/iopipe/zip.html | 177 ----------- docs/iopipe/zip/CompressionFormat.html | 146 --------- docs/iopipe/zip/unzip.html | 141 --------- docs/iopipe/zip/unzipSrc.html | 141 --------- docs/iopipe/zip/zip.html | 140 -------- docs/iopipe/zip/zipSrc.html | 140 -------- docs/prettify/prettify.css | 67 ---- docs/scripts/ddox.js | 138 -------- docs/scripts/jquery.js | 2 - docs/sitemap.xml | 103 ------ docs/styles/ddox.css | 162 ---------- docs/symbols.js | 100 ------ 117 files changed, 14177 deletions(-) delete mode 100644 docs/file_hashes.json delete mode 100644 docs/images/ddox/alias.png delete mode 100644 docs/images/ddox/class.png delete mode 100644 docs/images/ddox/enum.png delete mode 100644 docs/images/ddox/enummember.png delete mode 100644 docs/images/ddox/function.png delete mode 100644 docs/images/ddox/inherited.png delete mode 100644 docs/images/ddox/interface.png delete mode 100644 docs/images/ddox/module.png delete mode 100644 docs/images/ddox/package.png delete mode 100644 docs/images/ddox/private.png delete mode 100644 docs/images/ddox/property.png delete mode 100644 docs/images/ddox/protected.png delete mode 100644 docs/images/ddox/struct.png delete mode 100644 docs/images/ddox/template.png delete mode 100644 docs/images/ddox/variable.png delete mode 100644 docs/index.html delete mode 100644 docs/iopipe.html delete mode 100644 docs/iopipe/buffer.html delete mode 100644 docs/iopipe/buffer/AllocatedBuffer._allocator.html delete mode 100644 docs/iopipe/buffer/AllocatedBuffer.allocator.html delete mode 100644 docs/iopipe/buffer/AllocatedBuffer.avail.html delete mode 100644 docs/iopipe/buffer/AllocatedBuffer.capacity.html delete mode 100644 docs/iopipe/buffer/AllocatedBuffer.extend.html delete mode 100644 docs/iopipe/buffer/AllocatedBuffer.html delete mode 100644 docs/iopipe/buffer/AllocatedBuffer.releaseBack.html delete mode 100644 docs/iopipe/buffer/AllocatedBuffer.releaseFront.html delete mode 100644 docs/iopipe/buffer/AllocatedBuffer.this.html delete mode 100644 docs/iopipe/buffer/AllocatedBuffer.window.html delete mode 100644 docs/iopipe/buffer/GCNoPointerAllocator.allocate.html delete mode 100644 docs/iopipe/buffer/GCNoPointerAllocator.expand.html delete mode 100644 docs/iopipe/buffer/GCNoPointerAllocator.goodAllocSize.html delete mode 100644 docs/iopipe/buffer/GCNoPointerAllocator.html delete mode 100644 docs/iopipe/buffer/GCNoPointerAllocator.instance.html delete mode 100644 docs/iopipe/buffer/RingBuffer.avail.html delete mode 100644 docs/iopipe/buffer/RingBuffer.capacity.html delete mode 100644 docs/iopipe/buffer/RingBuffer.extend.html delete mode 100644 docs/iopipe/buffer/RingBuffer.html delete mode 100644 docs/iopipe/buffer/RingBuffer.releaseBack.html delete mode 100644 docs/iopipe/buffer/RingBuffer.releaseFront.html delete mode 100644 docs/iopipe/buffer/RingBuffer.window.html delete mode 100644 docs/iopipe/bufpipe.html delete mode 100644 docs/iopipe/bufpipe/SimplePipe.chain.html delete mode 100644 docs/iopipe/bufpipe/SimplePipe.extend.html delete mode 100644 docs/iopipe/bufpipe/SimplePipe.html delete mode 100644 docs/iopipe/bufpipe/SimplePipe.release.html delete mode 100644 docs/iopipe/bufpipe/SimplePipe.this.html delete mode 100644 docs/iopipe/bufpipe/SimplePipe.valve.html delete mode 100644 docs/iopipe/bufpipe/SimplePipe.window.html delete mode 100644 docs/iopipe/bufpipe/arrayCastPipe.html delete mode 100644 docs/iopipe/bufpipe/asElemRange.html delete mode 100644 docs/iopipe/bufpipe/asInputRange.html delete mode 100644 docs/iopipe/bufpipe/bufd.html delete mode 100644 docs/iopipe/bufpipe/byteSwapper.html delete mode 100644 docs/iopipe/bufpipe/ensureElems.html delete mode 100644 docs/iopipe/bufpipe/iosrc.html delete mode 100644 docs/iopipe/bufpipe/outputPipe.html delete mode 100644 docs/iopipe/bufpipe/process.html delete mode 100644 docs/iopipe/bufpipe/rbufd.html delete mode 100644 docs/iopipe/bufpipe/writeBuf.html delete mode 100644 docs/iopipe/refc.html delete mode 100644 docs/iopipe/refc/RefCounted._get.html delete mode 100644 docs/iopipe/refc/RefCounted.html delete mode 100644 docs/iopipe/refc/RefCounted.opAssign.html delete mode 100644 docs/iopipe/refc/RefCounted.this.html delete mode 100644 docs/iopipe/refc/refCounted.html delete mode 100644 docs/iopipe/stream.html delete mode 100644 docs/iopipe/stream/IODev.html delete mode 100644 docs/iopipe/stream/NullDev.html delete mode 100644 docs/iopipe/stream/NullDev.read.html delete mode 100644 docs/iopipe/stream/ZeroDev.html delete mode 100644 docs/iopipe/stream/nullDev.html delete mode 100644 docs/iopipe/stream/openDev.html delete mode 100644 docs/iopipe/stream/zeroDev.html delete mode 100644 docs/iopipe/textpipe.html delete mode 100644 docs/iopipe/textpipe/CodeUnit.html delete mode 100644 docs/iopipe/textpipe/UTFType.html delete mode 100644 docs/iopipe/textpipe/assumeText.html delete mode 100644 docs/iopipe/textpipe/byDelimRange.html delete mode 100644 docs/iopipe/textpipe/byLine.html delete mode 100644 docs/iopipe/textpipe/byLineRange.html delete mode 100644 docs/iopipe/textpipe/convertText.html delete mode 100644 docs/iopipe/textpipe/delimitedText.html delete mode 100644 docs/iopipe/textpipe/detectBOM.html delete mode 100644 docs/iopipe/textpipe/encodeText.html delete mode 100644 docs/iopipe/textpipe/ensureDecodeable.html delete mode 100644 docs/iopipe/textpipe/runEncoded.html delete mode 100644 docs/iopipe/textpipe/runWithEncoding.html delete mode 100644 docs/iopipe/textpipe/textConverter.html delete mode 100644 docs/iopipe/textpipe/textOutput.html delete mode 100644 docs/iopipe/traits.html delete mode 100644 docs/iopipe/traits/WindowType.html delete mode 100644 docs/iopipe/traits/extend.html delete mode 100644 docs/iopipe/traits/hasValve.html delete mode 100644 docs/iopipe/traits/implementValve.html delete mode 100644 docs/iopipe/traits/isIopipe.html delete mode 100644 docs/iopipe/traits/release.html delete mode 100644 docs/iopipe/traits/valveCount.html delete mode 100644 docs/iopipe/traits/window.html delete mode 100644 docs/iopipe/valve.html delete mode 100644 docs/iopipe/valve/holdingLoop.html delete mode 100644 docs/iopipe/valve/holdingValve.html delete mode 100644 docs/iopipe/valve/push.html delete mode 100644 docs/iopipe/valve/simpleValve.html delete mode 100644 docs/iopipe/valve/valveOf.html delete mode 100644 docs/iopipe/zip.html delete mode 100644 docs/iopipe/zip/CompressionFormat.html delete mode 100644 docs/iopipe/zip/unzip.html delete mode 100644 docs/iopipe/zip/unzipSrc.html delete mode 100644 docs/iopipe/zip/zip.html delete mode 100644 docs/iopipe/zip/zipSrc.html delete mode 100644 docs/prettify/prettify.css delete mode 100644 docs/scripts/ddox.js delete mode 100644 docs/scripts/jquery.js delete mode 100644 docs/sitemap.xml delete mode 100644 docs/styles/ddox.css delete mode 100644 docs/symbols.js diff --git a/docs/file_hashes.json b/docs/file_hashes.json deleted file mode 100644 index 8a1e748..0000000 --- a/docs/file_hashes.json +++ /dev/null @@ -1 +0,0 @@ -{"iopipe/textpipe/UTFType.html":"A21F31A6827A1C58594CFF9CE083BC55","iopipe/stream/ZeroDev.html":"71227313889EBFA60E342C519D932DD3","iopipe/textpipe/convertText.html":"9EAEE986FE15F1FE7BD1E6E2E210A88B","iopipe/bufpipe/SimplePipe.chain.html":"AF23E77434F14414C4D7B5DE77BA2BBC","iopipe/buffer/AllocatedBuffer._allocator.html":"9EB68C54204872A6EE53D7F23DA83738","iopipe/stream/NullDev.read.html":"E72E27C6EFF84A112CE7CD932E9F4E8F","iopipe/bufpipe/byteSwapper.html":"F56A62BDE3201ACB97B274EFDDA04DCB","iopipe/bufpipe/arrayCastPipe.html":"90CFC4B9A6A14628D1477839BE223857","iopipe/zip/CompressionFormat.html":"C0CD6BEF61A95157A822A47AC106812C","iopipe/bufpipe/asInputRange.html":"C9DF40AE3E72F7C58E5DA8F5470EF499","iopipe/textpipe/runEncoded.html":"DC5D47591FD0DF7E61EB10EF5F3EE76D","iopipe/textpipe/delimitedText.html":"6C9F7765DFA3C62996B5BB9FDF640597","iopipe/valve/simpleValve.html":"5D34D533B0002040209E18E102F823FB","iopipe/zip.html":"8288D947387C50548A3EE84AD2311F24","iopipe/zip/zip.html":"C18B25D11293FE794A1D6618ED3410A7","iopipe/traits/extend.html":"AAC4758F45043C38F44171B48368658F","iopipe/traits.html":"1480D42624D4D020AD27A823BF782DC5","iopipe/stream/zeroDev.html":"87EA393A989B87FCF367EB45F42B6B39","iopipe/stream/openDev.html":"C3656D8D6012DE1E8DEFCFC6048DF1E1","iopipe/bufpipe/SimplePipe.extend.html":"9B954D7EE4721705A7CC36FE5EE5D112","iopipe/stream.html":"104B0E0DDF2B1D3E54CE2D83F96B72A4","iopipe/buffer/GCNoPointerAllocator.instance.html":"20461CEADA954A131F12E35F43E0CC77","iopipe/buffer/AllocatedBuffer.releaseBack.html":"B49F9DB6F66854B4DB5D3789998163AF","iopipe/stream/IODev.html":"8F4F6A01D843F6ED9AFE48559BB0EF67","iopipe/valve/valveOf.html":"5E2D06AD51B2CD58576ECC27F0B7F161","iopipe/textpipe/ensureDecodeable.html":"0EFCC7A4317260450BFC75D94A92E4CE","iopipe/bufpipe/asElemRange.html":"E8C5B2BE76C1E962B0682579D176D598","iopipe/traits/release.html":"F78C9575C4FFA25C50B54A620BC6902D","iopipe/stream/nullDev.html":"1629DAE6E862556EC174378F5F22515F","iopipe/traits/implementValve.html":"2530D911FA72D5ADC934C676AC1A0933","iopipe/traits/valveCount.html":"E25F1DCD12608194EC799DBC5F319F31","iopipe/bufpipe/bufd.html":"FCFB02729A6133C6070E15A7AC301572","iopipe/bufpipe/process.html":"165DD585CA2E9821978F6C2C86AA7560","iopipe/valve/push.html":"BA790A1E2B784B6DCECECED16E8AE8C0","iopipe/buffer/RingBuffer.extend.html":"8FC63D00AA422B8076703CD852BD856F","iopipe/buffer/AllocatedBuffer.window.html":"A93185004A4D8184903B557987C783F0","iopipe/buffer/AllocatedBuffer.html":"F8EAB34B58867CAECE75D1D52E1C77FB","iopipe/textpipe/assumeText.html":"F5F3275A928667002A472594BD565B5A","iopipe/textpipe/detectBOM.html":"3E615BCBA0AABAAF70E1434B654C9EE5","iopipe/bufpipe/iosrc.html":"F1E8D334C06063C957FB0EAA4E5B5A8A","iopipe/buffer/RingBuffer.capacity.html":"109C9497ACC209AB11628E8104FAAF08","iopipe/buffer/RingBuffer.html":"469F36CC1F2035A9B851522FEB03FC25","iopipe/refc/RefCounted.opAssign.html":"6FAB164D6F0DCC13DA798112B9B0E6BA","iopipe/refc/RefCounted.html":"ECCCF79096E49BC21DA93DB3B412C721","iopipe/textpipe/runWithEncoding.html":"6E38728217F99463FC1C215DAEC92A6B","iopipe/refc.html":"B69BAB8E5E820A3453FAA45BE0E9F949","iopipe/refc/RefCounted._get.html":"9AADBA5270F6B04059FFF209077DBF0C","iopipe/zip/unzipSrc.html":"07FFF3201C986D9DFB608DAACB92F59A","iopipe/buffer/GCNoPointerAllocator.html":"11B0CB42CE6AF509D59F022F41A6DDED","iopipe/textpipe/textConverter.html":"8A26094AB22172CF5465C4DDF8069936","iopipe/textpipe/CodeUnit.html":"140E29A2B2ECB8615EF3F711542EF8D8","iopipe/bufpipe/rbufd.html":"75B50CE85CDF597BDA34D05CF00F8E5E","iopipe/textpipe/byLine.html":"56C7E21858ED4826F28441C8E34AEEC7","iopipe/valve/holdingLoop.html":"D2BCF9E172ADA71120389DF335BF0968","iopipe/bufpipe.html":"51BBF60C03F736338041115F048BAC79","iopipe/textpipe.html":"867C71BF906DE5D384B67E8650193150","iopipe/buffer/GCNoPointerAllocator.goodAllocSize.html":"E32C21BB23A74E6AD75B189CE4E33218","iopipe/buffer/AllocatedBuffer.allocator.html":"1695F084E7C5435D2BEB9BD9172A55B7","iopipe/buffer/AllocatedBuffer.releaseFront.html":"6BADDF013434273ACA5179EAC7ECA763","iopipe/textpipe/byLineRange.html":"DB96ABD3BE7B1280E4CDFF386020BF4A","sitemap.xml":"6AAE5A52A2CD2C603D89FF648C5DD7EF","iopipe/buffer/RingBuffer.releaseBack.html":"3CCCC3ED857C0C020B84EF139A220CF2","index.html":"F3C26E7B46C0AF9AD89265E6AAE53A71","iopipe/valve/holdingValve.html":"62D509ACE0FE632431FC4C5428536A14","iopipe/refc/RefCounted.this.html":"EAA7EAE03E9AC3E545BAFC1064A2E94B","iopipe/buffer/RingBuffer.releaseFront.html":"3CF9DF304B940857B4154BA38479E1DC","iopipe/buffer/AllocatedBuffer.this.html":"2908DA427A294B43A62A18F9BAC1E641","symbols.js":"BD66351CDDC14F231A6CF91E041AE822","iopipe/traits/isIopipe.html":"54BAB58CBB32E3F433C6721F449FABB9","iopipe/zip/unzip.html":"C18435CBE2995CC47DE91A034E67C625","iopipe/bufpipe/SimplePipe.release.html":"7040BC76C0FA5C4C957D516A791F09E1","iopipe.html":"BB89402A6F2CBCAEF10D56D57C1D4B1E","iopipe/buffer/AllocatedBuffer.capacity.html":"23540CD9D6F0CB5E436ED665160896D6","iopipe/refc/refCounted.html":"6E9EFF2BDDA94FBEEACBBEC4442F5C4F","iopipe/buffer.html":"8B672DEFB2D4E304166012F2ED3F6C37","iopipe/zip/zipSrc.html":"739D426C2141B3EEFBDD5830870B1EC2","iopipe/bufpipe/SimplePipe.valve.html":"7ECCAB977BA0BB9821217B89F2CB679E","iopipe/traits/window.html":"AB630C331ADC380D03A0A9B7C45D586F","iopipe/textpipe/byDelimRange.html":"7B83C21B25A127DE840BCEDA10A610F5","iopipe/traits/hasValve.html":"1DA8AF4B25CB12F428CBB59F8B0A723C","iopipe/stream/NullDev.html":"14A59DD3EB24F626D3CED9B0C02A600F","iopipe/traits/WindowType.html":"DDBA8461958C1CBDA8711EA753830C7E","iopipe/valve.html":"ED86CBD6ABA6B5E85036E25702FE14D7","iopipe/bufpipe/writeBuf.html":"E59073BD32930C9F0EA6A69B7DD678BC","iopipe/buffer/GCNoPointerAllocator.expand.html":"3684E7F6948D2E5A22C3D7560F57257F","iopipe/textpipe/textOutput.html":"62DB0C321F216778E602B39E54E4D597","iopipe/buffer/RingBuffer.window.html":"F71C9323CD028E30C11726944A9C7C6B","iopipe/bufpipe/ensureElems.html":"32F729F6194200418D5FB9A242B6BB70","iopipe/bufpipe/SimplePipe.html":"801176D814DBED9FF7DBF7CBE4289DE9","iopipe/buffer/AllocatedBuffer.extend.html":"C8B418B4923679E0D9E608B88643C957","iopipe/bufpipe/outputPipe.html":"0CB98A10397776E0C4DBC73DAAAE758D","iopipe/bufpipe/SimplePipe.window.html":"96C686F3E97128BB1F236258AA0135A7","iopipe/buffer/RingBuffer.avail.html":"B27D5DD5B9A32575D143F994C67BC15A","iopipe/buffer/GCNoPointerAllocator.allocate.html":"0A2F4DD2219CFBFBD0E86F0B1905C882","iopipe/textpipe/encodeText.html":"227C88DDA444A17148A67B8F10D20FD6","iopipe/buffer/AllocatedBuffer.avail.html":"8CF2F98842F3EAFF73BEE7825FE93AB3","iopipe/bufpipe/SimplePipe.this.html":"16665F5CE758D38E5E2130C90C4FDBFE"} \ No newline at end of file diff --git a/docs/images/ddox/alias.png b/docs/images/ddox/alias.png deleted file mode 100644 index d707303b158f2c48ac19c00044684e8b0b86968a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 253 zcmeAS@N?(olHy`uVBq!ia0vp^{2#S@i)BAf*t zk;M!Qe1}1p@p%4<6rdn`iKnkC`&}McZY}HUhj{-3g}OXl978nDFAX;2Yf#|XGpnvU ze#b0}kDO_C4^tk!(yx&4n-SIJxQA0?`tEGTABw%dnu@5=NmT0+v!u3hJ~x+=bR v)$-d;Gu@v1=-y^g*spndyYJ%pObmKTN1f{Z4zL~vx{ATm)z4*}Q$iB}K(|{< diff --git a/docs/images/ddox/class.png b/docs/images/ddox/class.png deleted file mode 100644 index d57bd1a243ed8e27a3cd61d554962091a8775b84..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 206 zcmeAS@N?(olHy`uVBq!ia0vp^{2pqhH`{OrC=~7K;uxZFJ~=^RQiI^k;JInP z=TB(67TNx=D&m5w_odH;S#M@q3bvki>Tyb8UVS;||KXf;r6rt^%DYz2DEQefalj?3 x;o+5@cU$Jo6b{_uSkmy2t8`CbYu+yd7KWl2rN5#(Y(Oq&@O1TaS?83{1OW9xM%4fS diff --git a/docs/images/ddox/enum.png b/docs/images/ddox/enum.png deleted file mode 100644 index 159c03438a32e2a1584ccbcfbee51f27e1915427..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 211 zcmeAS@N?(olHy`uVBq!ia0vp^{2b6>&k;`_kvatT!_)1zXQM^*E(4ufCk~|8P#a(h|-{=ma!x_oAWfDm`Oe#GV(Dzgnu6n~4aPFqpG(Mr-%Cn{a` zm|VgMKesZgO>eJeZrfpccux1b@RZw;9lTGkMYc<>x||dE=d6>)lup0IA57fQ9h)ai mO1ZeWtMi6W!@7w{3=GQ6T3lZIJKg~u!{F)a=d#Wzp$P!vkyp3? diff --git a/docs/images/ddox/inherited.png b/docs/images/ddox/inherited.png deleted file mode 100644 index 5d69b601a2b9910fa5601a6fdad02b45507d54c6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 281 zcmeAS@N?(olHy`uVBq!ia0vp^{2epUF= zgt!}5IFdIn@ZNRv_Twu%UO#XYu@hE3m!_Cvb#az_?EU*4XX^h&?~I%DHBVXZti-vz zlb-1rCq30Q*!bVRGKpp@krsXOR8r2S<^;pyi?J81UK?bEgf72%DA(iNedd0%l-{+Q z`5yCan5AjFP)b6I^QWZi<~hrhy_6<4PsreWZt%`UNLIApIBS|-w8vqWraY^&3=GTf WS$uplv;8yB#SEUVelF{r5}E+!8EL%$ diff --git a/docs/images/ddox/interface.png b/docs/images/ddox/interface.png deleted file mode 100644 index 0f47de321079822d4825a981edd841de3da96904..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 207 zcmeAS@N?(olHy`uVBq!ia0vp^{2b6>&k;`_kvatT!_)1zXQM^*E(4ufCk~|8P$Fp{1P57$cQ;t)5Zvvt8nV zOIE|fD?M*aW_+Ib*RQ1EAy?_1z}CE91}qG9F-m`r3$5@0+QZ=K>gTe~DWM4fl~hS= diff --git a/docs/images/ddox/module.png b/docs/images/ddox/module.png deleted file mode 100644 index 3f2927be1ad39e872c2aee66e495e788ffae67a2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 235 zcmeAS@N?(olHy`uVBq!ia0vp^{2qEDF-n;Y6squaaSYKopPV2usX=gdLg}ox z^(7mxMYbDW+4R6@>!KBm=ia@@KCr5-Qz+dy@a*{;f4a`U*YS{&lmG&+OP?QdRj2u- zcyM&KeimO7=`(Y4;VGd000McNliru-2)jB0uVZ&d^G?70eneB zK~yNurIWo&f>9KQpSQ0`YN;WzA&Cg1A_yE(g8qc?-NK>5R<{VHsR%ctNuebg0=22x zA#DgO%#i5IC@RIWAbP`UI4${Neq_)C2kyDtd(Q87E?1!nZl|qcZ#fX9E^eodY&KgF z)e1J2UmO@3rN?X~67sUMwThO%qQ`7S%U{uNY$keeqn~dmuQp+yCld0KO2z?5CF4Xw zUMB4G6`dQZNlzu?0_gFbSI|_J%i5xf>ToeUHpxfkjF!$mj`p@$TU3h$6v`KFr%hCc z3!`Ze!$X>v{SdEr7Z|#FX|>pS?J#khJ|?)~V>u92N(Uv0SXc_$lZc4q0<#jF9uYu- z(<71#%!-IeL3@%!EG%xPO=^1nD@D&raKk4mU^ETVYOym8q`TX6+4;=5F1yt35BWt4 zA|mhiry?S{)S}#4(^i&N=I|`|@YP}{|E1;+~Uv`-D7>Treo{;huj||4=@B)bbD_o zSC1s@l)t(grgQwn`nwMUe`Kl9cjHrjofaD?C_udtOVADM4l{P}}fY3=j` zsc6>%2r6`}`OKWAJqKb6Mw<&;$VU Cnq5Nx diff --git a/docs/images/ddox/protected.png b/docs/images/ddox/protected.png deleted file mode 100644 index e88da6a983e14748b05a3e5163bbbd319cb699eb..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 358 zcmeAS@N?(olHy`uVBq!ia0vp^{2FonryY9sW%cxP z2mao$dTpS5MSB7tr3;robG5h4cUUOLB?ApzI#sb+KKDtNG tExU96#DZl-YRt@seb~Af7aA}yT>OwMc<}RwM4JYD@<);T3K0RZ~_kB0yN diff --git a/docs/images/ddox/struct.png b/docs/images/ddox/struct.png deleted file mode 100644 index 1cc411d053a1ee446afd982b96bbf999f893429f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 209 zcmeAS@N?(olHy`uVBq!ia0vp^{2r?87rwR}C=}=E;uxZFJ~=^RQiI^k;JInP z=TB(67TNx=D&m5w_odH;S#M@q3bvki>Tyb8UVS;||KXf;r6rt^%DYz2DEP^qCa^2G zFw2e4pd@-D;~d7evu=x+d8V(eSj;tFzMYeSA#tL*XZX?eTYxq(c)I$ztaD0e0svP< BM5zD( diff --git a/docs/images/ddox/template.png b/docs/images/ddox/template.png deleted file mode 100644 index c45de38d37ad809387ed6134f5820bee2f5e657f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 203 zcmeAS@N?(olHy`uVBq!ia0vp^{2|gTe~DWM4f)muc^ diff --git a/docs/images/ddox/variable.png b/docs/images/ddox/variable.png deleted file mode 100644 index ef28375161f0142da84739e35dd35cd600c5dbb2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 277 zcmeAS@N?(olHy`uVBq!ia0vp^{2O{~q9yl!mgCNA2cX!HE@-J>()Q@3{izV)!OV{83x{R2B?7$$w1 z7I*Ob*2(tg{#}q?{&25Nyos^F)Sf>t&IX-SJCbGnc}-zb; - - - - API documentation - - - - - - -
-

API documentation

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
ModuleDescription
- iopipe.buffer - - Buffer handling for iopipe. - -
- iopipe.bufpipe - - Core functionality for iopipe. Defines the base types for manipulating and - processing data. - -
- iopipe.refc - - Reference counting using the GC. - -
- iopipe.stream - - Simple streams for use with iopipe - -
- iopipe.textpipe - - Text handling with iopipe. - -
- iopipe.traits - - Base mechanisms used to determine information about iopipes. - -
- iopipe.valve - - Valve mechanism to allow manipulation of wrapped iopipe pieces. - -
- iopipe.zip - - Compression/decompression with iopipes. - -
- iopipe - - iopipe is a modular buffering library based on range-like concepts. - -
-
-

Generated using the DDOX documentation generator

-
-
- - \ No newline at end of file diff --git a/docs/iopipe.html b/docs/iopipe.html deleted file mode 100644 index 0c76aff..0000000 --- a/docs/iopipe.html +++ /dev/null @@ -1,116 +0,0 @@ - - - - - Module iopipe - - - - - - -
-

Module iopipe

iopipe is a modular buffering library based on range-like concepts. -

The goal of iopipe is to provide small building blocks that can - then be combined together in "pipeline" chain to provide the exact - representation needed for buffered input and output. -

- -

The simple principal that iopipe is based on is that i/o needs to be - buffered, and since we are already creating a buffer for performance, we can - provide access to the buffer to enable much richer parsing and formatting - mechanisms. An iopipe chain can provide a window of data that can be used - with any algorithms or functions that work with simple arrays or ranges. -

- -

This module publicly imports all of iopipe. -

-
- -
-
- - - - - - - - - - - - - -
Authors - -
Copyright - -
License - -
-

Generated using the DDOX documentation generator

-
-
- - \ No newline at end of file diff --git a/docs/iopipe/buffer.html b/docs/iopipe/buffer.html deleted file mode 100644 index 6668fe9..0000000 --- a/docs/iopipe/buffer.html +++ /dev/null @@ -1,148 +0,0 @@ - - - - - Module iopipe.buffer - - - - - - -
-

Module iopipe.buffer

Buffer handling for iopipe. -

- -
-
-

Structs

- - - - - - - - - - - - - - - - - -
NameDescription
- - AllocatedBuffer - - Array based buffer manager. Uses custom allocator to get the data. Limits - growth to doubling. -
- - GCNoPointerAllocator - - GC allocator that creates blocks of non-pointer data (unscanned). This also - does not support freeing data, relying on the GC to do so. -
- - RingBuffer - - A RingBuffer uses the underlying memory management system to avoid any - copying of data (unless expanding). -
-
-
- - - - - - - - - - - - - -
Authors -

Steven Schveighoffer, Dmitry Olshansky -

- -
Copyright -

Copyright Steven Schveighoffer 2011-. -

- -
License -

Boost License 1.0. (See accompanying file LICENSE_1_0.txt or copy - at http://www.boost.org/LICENSE_1_0.txt) -

- -
-

Generated using the DDOX documentation generator

-
-
- - \ No newline at end of file diff --git a/docs/iopipe/buffer/AllocatedBuffer._allocator.html b/docs/iopipe/buffer/AllocatedBuffer._allocator.html deleted file mode 100644 index f48429f..0000000 --- a/docs/iopipe/buffer/AllocatedBuffer._allocator.html +++ /dev/null @@ -1,129 +0,0 @@ - - - - - Variable AllocatedBuffer._allocator - - - - - - -
-

Variable AllocatedBuffer._allocator

Construct a buffer manager with a given allocator. -

-
- -
- struct AllocatedBuffer -
- - { -
-
-   // ... -
-   Allocator _allocator - ; -
-   // ... -
- } -
-
-
- - -
- - - - - - - - - - - - - -
Authors -

Steven Schveighoffer, Dmitry Olshansky -

- -
Copyright -

Copyright Steven Schveighoffer 2011-. -

- -
License -

Boost License 1.0. (See accompanying file LICENSE_1_0.txt or copy - at http://www.boost.org/LICENSE_1_0.txt) -

- -
-

Generated using the DDOX documentation generator

-
-
- - \ No newline at end of file diff --git a/docs/iopipe/buffer/AllocatedBuffer.allocator.html b/docs/iopipe/buffer/AllocatedBuffer.allocator.html deleted file mode 100644 index 303f181..0000000 --- a/docs/iopipe/buffer/AllocatedBuffer.allocator.html +++ /dev/null @@ -1,116 +0,0 @@ - - - - - Function AllocatedBuffer.allocator - - - - - - -
-

Function AllocatedBuffer.allocator

Construct a buffer manager with a given allocator. -

-
- -
- Allocator allocator() @property; -
-
-
- - -
- - - - - - - - - - - - - -
Authors -

Steven Schveighoffer, Dmitry Olshansky -

- -
Copyright -

Copyright Steven Schveighoffer 2011-. -

- -
License -

Boost License 1.0. (See accompanying file LICENSE_1_0.txt or copy - at http://www.boost.org/LICENSE_1_0.txt) -

- -
-

Generated using the DDOX documentation generator

-
-
- - \ No newline at end of file diff --git a/docs/iopipe/buffer/AllocatedBuffer.avail.html b/docs/iopipe/buffer/AllocatedBuffer.avail.html deleted file mode 100644 index 82c0e73..0000000 --- a/docs/iopipe/buffer/AllocatedBuffer.avail.html +++ /dev/null @@ -1,120 +0,0 @@ - - - - - Function AllocatedBuffer.avail - - - - - - -
-

Function AllocatedBuffer.avail

-
- -
- size_t avail(); -
-
-
- -

Returns

-

The number of unused elements that can be extended without - needing to fetch more data from the allocator. -

-
- -
- - - - - - - - - - - - - -
Authors -

Steven Schveighoffer, Dmitry Olshansky -

- -
Copyright -

Copyright Steven Schveighoffer 2011-. -

- -
License -

Boost License 1.0. (See accompanying file LICENSE_1_0.txt or copy - at http://www.boost.org/LICENSE_1_0.txt) -

- -
-

Generated using the DDOX documentation generator

-
-
- - \ No newline at end of file diff --git a/docs/iopipe/buffer/AllocatedBuffer.capacity.html b/docs/iopipe/buffer/AllocatedBuffer.capacity.html deleted file mode 100644 index 1991623..0000000 --- a/docs/iopipe/buffer/AllocatedBuffer.capacity.html +++ /dev/null @@ -1,119 +0,0 @@ - - - - - Function AllocatedBuffer.capacity - - - - - - -
-

Function AllocatedBuffer.capacity

-
- -
- size_t capacity(); -
-
-
- -

Returns

-

The total number of elements currently managed. -

-
- -
- - - - - - - - - - - - - -
Authors -

Steven Schveighoffer, Dmitry Olshansky -

- -
Copyright -

Copyright Steven Schveighoffer 2011-. -

- -
License -

Boost License 1.0. (See accompanying file LICENSE_1_0.txt or copy - at http://www.boost.org/LICENSE_1_0.txt) -

- -
-

Generated using the DDOX documentation generator

-
-
- - \ No newline at end of file diff --git a/docs/iopipe/buffer/AllocatedBuffer.extend.html b/docs/iopipe/buffer/AllocatedBuffer.extend.html deleted file mode 100644 index eb7666c..0000000 --- a/docs/iopipe/buffer/AllocatedBuffer.extend.html +++ /dev/null @@ -1,134 +0,0 @@ - - - - - Function AllocatedBuffer.extend - - - - - - -
-

Function AllocatedBuffer.extend

Add more data to the window of currently valid data. To avoid expensive - reallocation, use avail to tune this call. -

-
- -
- size_t extend - ( -
-   size_t request -
- ); -
-
-
-
- -

Parameters

- - -
NameDescription
request The number of additional elements to add to the valid window.
-
-

Returns

-

The number of elements that were actually added to the valid - window. Note that this may be less than the request if more elements - could not be attained from the allocator. -

-
- -
- - - - - - - - - - - - - -
Authors -

Steven Schveighoffer, Dmitry Olshansky -

- -
Copyright -

Copyright Steven Schveighoffer 2011-. -

- -
License -

Boost License 1.0. (See accompanying file LICENSE_1_0.txt or copy - at http://www.boost.org/LICENSE_1_0.txt) -

- -
-

Generated using the DDOX documentation generator

-
-
- - \ No newline at end of file diff --git a/docs/iopipe/buffer/AllocatedBuffer.html b/docs/iopipe/buffer/AllocatedBuffer.html deleted file mode 100644 index bbbe717..0000000 --- a/docs/iopipe/buffer/AllocatedBuffer.html +++ /dev/null @@ -1,247 +0,0 @@ - - - - - Struct AllocatedBuffer - - - - - - -
-

Struct AllocatedBuffer

Array based buffer manager. Uses custom allocator to get the data. Limits - growth to doubling. -

-
- -
- struct AllocatedBuffer(T, Allocator, ulong floorSize = 8192) - ; -
-
-
-
- -

Constructors

- - - - - - - - - -
NameDescription
- - this - - (alloc) - Construct a buffer manager with a given allocator. -
-
-

Fields

- - - - - - - - - -
NameTypeDescription
- _allocator - AllocatorConstruct a buffer manager with a given allocator. -
-
-

Properties

- - - - - - - - - -
NameTypeDescription
- allocator[get] - AllocatorConstruct a buffer manager with a given allocator. -
-
-

Methods

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameDescription
- - avail - - () -
- - capacity - - () -
- - extend - - (request) - Add more data to the window of currently valid data. To avoid expensive - reallocation, use avail to tune this call. -
- - releaseBack - - (elements) - Give bytes back to the buffer manager from the back of the buffer. - These bytes can be removed in this operation or further operations and - should no longer be used. -
- - releaseFront - - (elements) - Give bytes back to the buffer manager from the front of the buffer. - These bytes can be removed in this operation or further operations and - should no longer be used. -
- - window - - () - The window of currently valid data -
-
-

Parameters

- - - - -
NameDescription
T The type of the elements the buffer will use
Allocator The allocator to use for adding more elements
floorSize The size that can be freely allocated before growth is restricted to 2x. - - Based on concept by Dmitry Olshansky
-
- -
- - - - - - - - - - - - - -
Authors -

Steven Schveighoffer, Dmitry Olshansky -

- -
Copyright -

Copyright Steven Schveighoffer 2011-. -

- -
License -

Boost License 1.0. (See accompanying file LICENSE_1_0.txt or copy - at http://www.boost.org/LICENSE_1_0.txt) -

- -
-

Generated using the DDOX documentation generator

-
-
- - \ No newline at end of file diff --git a/docs/iopipe/buffer/AllocatedBuffer.releaseBack.html b/docs/iopipe/buffer/AllocatedBuffer.releaseBack.html deleted file mode 100644 index 2c82204..0000000 --- a/docs/iopipe/buffer/AllocatedBuffer.releaseBack.html +++ /dev/null @@ -1,129 +0,0 @@ - - - - - Function AllocatedBuffer.releaseBack - - - - - - -
-

Function AllocatedBuffer.releaseBack

Give bytes back to the buffer manager from the back of the buffer. - These bytes can be removed in this operation or further operations and - should no longer be used. -

-
- -
- void releaseBack - ( -
-   size_t elements -
- ); -
-
-
-
- -

Parameters

- - -
NameDescription
elements number of elements to release.
-
- -
- - - - - - - - - - - - - -
Authors -

Steven Schveighoffer, Dmitry Olshansky -

- -
Copyright -

Copyright Steven Schveighoffer 2011-. -

- -
License -

Boost License 1.0. (See accompanying file LICENSE_1_0.txt or copy - at http://www.boost.org/LICENSE_1_0.txt) -

- -
-

Generated using the DDOX documentation generator

-
-
- - \ No newline at end of file diff --git a/docs/iopipe/buffer/AllocatedBuffer.releaseFront.html b/docs/iopipe/buffer/AllocatedBuffer.releaseFront.html deleted file mode 100644 index 0586cb2..0000000 --- a/docs/iopipe/buffer/AllocatedBuffer.releaseFront.html +++ /dev/null @@ -1,129 +0,0 @@ - - - - - Function AllocatedBuffer.releaseFront - - - - - - -
-

Function AllocatedBuffer.releaseFront

Give bytes back to the buffer manager from the front of the buffer. - These bytes can be removed in this operation or further operations and - should no longer be used. -

-
- -
- void releaseFront - ( -
-   size_t elements -
- ); -
-
-
-
- -

Parameters

- - -
NameDescription
elements number of elements to release.
-
- -
- - - - - - - - - - - - - -
Authors -

Steven Schveighoffer, Dmitry Olshansky -

- -
Copyright -

Copyright Steven Schveighoffer 2011-. -

- -
License -

Boost License 1.0. (See accompanying file LICENSE_1_0.txt or copy - at http://www.boost.org/LICENSE_1_0.txt) -

- -
-

Generated using the DDOX documentation generator

-
-
- - \ No newline at end of file diff --git a/docs/iopipe/buffer/AllocatedBuffer.this.html b/docs/iopipe/buffer/AllocatedBuffer.this.html deleted file mode 100644 index 2781b95..0000000 --- a/docs/iopipe/buffer/AllocatedBuffer.this.html +++ /dev/null @@ -1,121 +0,0 @@ - - - - - Function AllocatedBuffer.this - - - - - - -
-

Function AllocatedBuffer.this

Construct a buffer manager with a given allocator. -

-
- -
- this - ( -
-   Allocator alloc -
- ); -
-
-
- - -
- - - - - - - - - - - - - -
Authors -

Steven Schveighoffer, Dmitry Olshansky -

- -
Copyright -

Copyright Steven Schveighoffer 2011-. -

- -
License -

Boost License 1.0. (See accompanying file LICENSE_1_0.txt or copy - at http://www.boost.org/LICENSE_1_0.txt) -

- -
-

Generated using the DDOX documentation generator

-
-
- - \ No newline at end of file diff --git a/docs/iopipe/buffer/AllocatedBuffer.window.html b/docs/iopipe/buffer/AllocatedBuffer.window.html deleted file mode 100644 index f6cea7f..0000000 --- a/docs/iopipe/buffer/AllocatedBuffer.window.html +++ /dev/null @@ -1,116 +0,0 @@ - - - - - Function AllocatedBuffer.window - - - - - - -
-

Function AllocatedBuffer.window

The window of currently valid data -

-
- -
- T[] window() @trusted; -
-
-
- - -
- - - - - - - - - - - - - -
Authors -

Steven Schveighoffer, Dmitry Olshansky -

- -
Copyright -

Copyright Steven Schveighoffer 2011-. -

- -
License -

Boost License 1.0. (See accompanying file LICENSE_1_0.txt or copy - at http://www.boost.org/LICENSE_1_0.txt) -

- -
-

Generated using the DDOX documentation generator

-
-
- - \ No newline at end of file diff --git a/docs/iopipe/buffer/GCNoPointerAllocator.allocate.html b/docs/iopipe/buffer/GCNoPointerAllocator.allocate.html deleted file mode 100644 index 5a1a173..0000000 --- a/docs/iopipe/buffer/GCNoPointerAllocator.allocate.html +++ /dev/null @@ -1,121 +0,0 @@ - - - - - Function GCNoPointerAllocator.allocate - - - - - - -
-

Function GCNoPointerAllocator.allocate

Allocate some data -

-
- -
- static void[] allocate - ( -
-   ulong size -
- ) @trusted; -
-
-
- - -
- - - - - - - - - - - - - -
Authors -

Steven Schveighoffer, Dmitry Olshansky -

- -
Copyright -

Copyright Steven Schveighoffer 2011-. -

- -
License -

Boost License 1.0. (See accompanying file LICENSE_1_0.txt or copy - at http://www.boost.org/LICENSE_1_0.txt) -

- -
-

Generated using the DDOX documentation generator

-
-
- - \ No newline at end of file diff --git a/docs/iopipe/buffer/GCNoPointerAllocator.expand.html b/docs/iopipe/buffer/GCNoPointerAllocator.expand.html deleted file mode 100644 index 2e408a9..0000000 --- a/docs/iopipe/buffer/GCNoPointerAllocator.expand.html +++ /dev/null @@ -1,123 +0,0 @@ - - - - - Function GCNoPointerAllocator.expand - - - - - - -
-

Function GCNoPointerAllocator.expand

Expand some data -

-
- -
- static bool expand - ( -
-   ref void[] original, -
-   ulong size -
- ) @safe; -
-
-
- - -
- - - - - - - - - - - - - -
Authors -

Steven Schveighoffer, Dmitry Olshansky -

- -
Copyright -

Copyright Steven Schveighoffer 2011-. -

- -
License -

Boost License 1.0. (See accompanying file LICENSE_1_0.txt or copy - at http://www.boost.org/LICENSE_1_0.txt) -

- -
-

Generated using the DDOX documentation generator

-
-
- - \ No newline at end of file diff --git a/docs/iopipe/buffer/GCNoPointerAllocator.goodAllocSize.html b/docs/iopipe/buffer/GCNoPointerAllocator.goodAllocSize.html deleted file mode 100644 index bad8c54..0000000 --- a/docs/iopipe/buffer/GCNoPointerAllocator.goodAllocSize.html +++ /dev/null @@ -1,121 +0,0 @@ - - - - - Function GCNoPointerAllocator.goodAllocSize - - - - - - -
-

Function GCNoPointerAllocator.goodAllocSize

Determine an appropriate size for allocation to hold the given size data -

-
- -
- static ulong goodAllocSize - ( -
-   ulong size -
- ) @safe; -
-
-
- - -
- - - - - - - - - - - - - -
Authors -

Steven Schveighoffer, Dmitry Olshansky -

- -
Copyright -

Copyright Steven Schveighoffer 2011-. -

- -
License -

Boost License 1.0. (See accompanying file LICENSE_1_0.txt or copy - at http://www.boost.org/LICENSE_1_0.txt) -

- -
-

Generated using the DDOX documentation generator

-
-
- - \ No newline at end of file diff --git a/docs/iopipe/buffer/GCNoPointerAllocator.html b/docs/iopipe/buffer/GCNoPointerAllocator.html deleted file mode 100644 index 917c5e2..0000000 --- a/docs/iopipe/buffer/GCNoPointerAllocator.html +++ /dev/null @@ -1,171 +0,0 @@ - - - - - Struct GCNoPointerAllocator - - - - - - -
-

Struct GCNoPointerAllocator

GC allocator that creates blocks of non-pointer data (unscanned). This also - does not support freeing data, relying on the GC to do so. -

-
- -
- struct GCNoPointerAllocator - ; -
-
-
- -

Fields

- - - - - - - - - -
NameTypeDescription
- instance - shared(GCNoPointerAllocator)The shared instance -
-
-

Methods

- - - - - - - - - - - - - - - - - -
NameDescription
- - allocate - - (size) - Allocate some data -
- - expand - - (original, size) - Expand some data -
- - goodAllocSize - - (size) - Determine an appropriate size for allocation to hold the given size data -
-
- -
- - - - - - - - - - - - - -
Authors -

Steven Schveighoffer, Dmitry Olshansky -

- -
Copyright -

Copyright Steven Schveighoffer 2011-. -

- -
License -

Boost License 1.0. (See accompanying file LICENSE_1_0.txt or copy - at http://www.boost.org/LICENSE_1_0.txt) -

- -
-

Generated using the DDOX documentation generator

-
-
- - \ No newline at end of file diff --git a/docs/iopipe/buffer/GCNoPointerAllocator.instance.html b/docs/iopipe/buffer/GCNoPointerAllocator.instance.html deleted file mode 100644 index 633b8f7..0000000 --- a/docs/iopipe/buffer/GCNoPointerAllocator.instance.html +++ /dev/null @@ -1,129 +0,0 @@ - - - - - Variable GCNoPointerAllocator.instance - - - - - - -
-

Variable GCNoPointerAllocator.instance

The shared instance -

-
- -
- struct GCNoPointerAllocator -
- - { -
-
-   // ... -
-   shared(GCNoPointerAllocator) instance - ; -
-   // ... -
- } -
-
-
- - -
- - - - - - - - - - - - - -
Authors -

Steven Schveighoffer, Dmitry Olshansky -

- -
Copyright -

Copyright Steven Schveighoffer 2011-. -

- -
License -

Boost License 1.0. (See accompanying file LICENSE_1_0.txt or copy - at http://www.boost.org/LICENSE_1_0.txt) -

- -
-

Generated using the DDOX documentation generator

-
-
- - \ No newline at end of file diff --git a/docs/iopipe/buffer/RingBuffer.avail.html b/docs/iopipe/buffer/RingBuffer.avail.html deleted file mode 100644 index 3aab596..0000000 --- a/docs/iopipe/buffer/RingBuffer.avail.html +++ /dev/null @@ -1,120 +0,0 @@ - - - - - Function RingBuffer.avail - - - - - - -
-

Function RingBuffer.avail

-
- -
- size_t avail(); -
-
-
- -

Returns

-

The number of unused elements that can be extended without - needing to reallocate the buffer. -

-
- -
- - - - - - - - - - - - - -
Authors -

Steven Schveighoffer, Dmitry Olshansky -

- -
Copyright -

Copyright Steven Schveighoffer 2011-. -

- -
License -

Boost License 1.0. (See accompanying file LICENSE_1_0.txt or copy - at http://www.boost.org/LICENSE_1_0.txt) -

- -
-

Generated using the DDOX documentation generator

-
-
- - \ No newline at end of file diff --git a/docs/iopipe/buffer/RingBuffer.capacity.html b/docs/iopipe/buffer/RingBuffer.capacity.html deleted file mode 100644 index c03827a..0000000 --- a/docs/iopipe/buffer/RingBuffer.capacity.html +++ /dev/null @@ -1,119 +0,0 @@ - - - - - Function RingBuffer.capacity - - - - - - -
-

Function RingBuffer.capacity

-
- -
- size_t capacity(); -
-
-
- -

Returns

-

The total number of elements currently managed. -

-
- -
- - - - - - - - - - - - - -
Authors -

Steven Schveighoffer, Dmitry Olshansky -

- -
Copyright -

Copyright Steven Schveighoffer 2011-. -

- -
License -

Boost License 1.0. (See accompanying file LICENSE_1_0.txt or copy - at http://www.boost.org/LICENSE_1_0.txt) -

- -
-

Generated using the DDOX documentation generator

-
-
- - \ No newline at end of file diff --git a/docs/iopipe/buffer/RingBuffer.extend.html b/docs/iopipe/buffer/RingBuffer.extend.html deleted file mode 100644 index b33573e..0000000 --- a/docs/iopipe/buffer/RingBuffer.extend.html +++ /dev/null @@ -1,134 +0,0 @@ - - - - - Function RingBuffer.extend - - - - - - -
-

Function RingBuffer.extend

Add more data to the window of currently valid data. To avoid expensive - reallocation, use avail to tune this call. -

-
- -
- size_t extend - ( -
-   size_t request -
- ) @system; -
-
-
-
- -

Parameters

- - -
NameDescription
request The number of additional elements to add to the valid window.
-
-

Returns

-

The number of elements that were actually added to the valid - window. Note that this may be less than the request if more elements - could not be attained from the OS. -

-
- -
- - - - - - - - - - - - - -
Authors -

Steven Schveighoffer, Dmitry Olshansky -

- -
Copyright -

Copyright Steven Schveighoffer 2011-. -

- -
License -

Boost License 1.0. (See accompanying file LICENSE_1_0.txt or copy - at http://www.boost.org/LICENSE_1_0.txt) -

- -
-

Generated using the DDOX documentation generator

-
-
- - \ No newline at end of file diff --git a/docs/iopipe/buffer/RingBuffer.html b/docs/iopipe/buffer/RingBuffer.html deleted file mode 100644 index 2c20382..0000000 --- a/docs/iopipe/buffer/RingBuffer.html +++ /dev/null @@ -1,223 +0,0 @@ - - - - - Struct RingBuffer - - - - - - -
-

Struct RingBuffer

A RingBuffer uses the underlying memory management system to avoid any - copying of data (unless expanding). -

-
- -
- struct RingBuffer(T, ulong floorSize = 8192) -
-    -
- if (isPowerOf2(T.sizeof)); -
-
-
-

It works by using the OS's mechanisms that map memory (mmap or VirtualAlloc) - to map the same region to 2 consecutive addresses. This allows one to use a - buffer simply as an array, even when the data wraps around the end of the - buffer. -

- -

Like AllocatedBuffer, the growth is limited to doubling, but this has an - extra restriction that the buffer must be a multiple of the page size. Note - that this does NOT add any memory to the GC, so do not store GC pointers in - this buffer. -

- -

Unlike AllocatedBuffer, this buffer is NOT copyable, so it must be - refcounted if you are to pass it around. See rbufd which does this - automatically for you. The reason for this is that it must unmap the memory - on destruction. -

- -

Note that this buffer is not @safe, since it is possible on reallocation to - have dangling pointers (if anything keeps a reference to the original - memory). -

-
- -

Methods

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameDescription
- - avail - - () -
- - capacity - - () -
- - extend - - (request) - Add more data to the window of currently valid data. To avoid expensive - reallocation, use avail to tune this call. -
- - releaseBack - - (elements) - Give bytes back to the buffer from the back of the buffer. - These bytes can be removed in this operation or further operations and - should no longer be used. -
- - releaseFront - - (elements) - Give bytes back to the buffer from the front of the buffer. - These bytes can be removed in this operation or further operations and - should no longer be used. -
- - window - - () - The window of currently valid data. -
-
-

Parameters

- - - -
NameDescription
T The type of the elements the buffer will use. Must be sized as a power of 2.
floorSize The size that can be freely allocated before growth is - restricted to 2x. Note that the OS imposes a floor size of one page in - addition to this.
-
- -
- - - - - - - - - - - - - -
Authors -

Steven Schveighoffer, Dmitry Olshansky -

- -
Copyright -

Copyright Steven Schveighoffer 2011-. -

- -
License -

Boost License 1.0. (See accompanying file LICENSE_1_0.txt or copy - at http://www.boost.org/LICENSE_1_0.txt) -

- -
-

Generated using the DDOX documentation generator

-
-
- - \ No newline at end of file diff --git a/docs/iopipe/buffer/RingBuffer.releaseBack.html b/docs/iopipe/buffer/RingBuffer.releaseBack.html deleted file mode 100644 index 872de5e..0000000 --- a/docs/iopipe/buffer/RingBuffer.releaseBack.html +++ /dev/null @@ -1,129 +0,0 @@ - - - - - Function RingBuffer.releaseBack - - - - - - -
-

Function RingBuffer.releaseBack

Give bytes back to the buffer from the back of the buffer. - These bytes can be removed in this operation or further operations and - should no longer be used. -

-
- -
- void releaseBack - ( -
-   size_t elements -
- ); -
-
-
-
- -

Parameters

- - -
NameDescription
elements number of elements to release.
-
- -
- - - - - - - - - - - - - -
Authors -

Steven Schveighoffer, Dmitry Olshansky -

- -
Copyright -

Copyright Steven Schveighoffer 2011-. -

- -
License -

Boost License 1.0. (See accompanying file LICENSE_1_0.txt or copy - at http://www.boost.org/LICENSE_1_0.txt) -

- -
-

Generated using the DDOX documentation generator

-
-
- - \ No newline at end of file diff --git a/docs/iopipe/buffer/RingBuffer.releaseFront.html b/docs/iopipe/buffer/RingBuffer.releaseFront.html deleted file mode 100644 index a70097e..0000000 --- a/docs/iopipe/buffer/RingBuffer.releaseFront.html +++ /dev/null @@ -1,129 +0,0 @@ - - - - - Function RingBuffer.releaseFront - - - - - - -
-

Function RingBuffer.releaseFront

Give bytes back to the buffer from the front of the buffer. - These bytes can be removed in this operation or further operations and - should no longer be used. -

-
- -
- void releaseFront - ( -
-   size_t elements -
- ); -
-
-
-
- -

Parameters

- - -
NameDescription
elements number of elements to release.
-
- -
- - - - - - - - - - - - - -
Authors -

Steven Schveighoffer, Dmitry Olshansky -

- -
Copyright -

Copyright Steven Schveighoffer 2011-. -

- -
License -

Boost License 1.0. (See accompanying file LICENSE_1_0.txt or copy - at http://www.boost.org/LICENSE_1_0.txt) -

- -
-

Generated using the DDOX documentation generator

-
-
- - \ No newline at end of file diff --git a/docs/iopipe/buffer/RingBuffer.window.html b/docs/iopipe/buffer/RingBuffer.window.html deleted file mode 100644 index b320bd2..0000000 --- a/docs/iopipe/buffer/RingBuffer.window.html +++ /dev/null @@ -1,116 +0,0 @@ - - - - - Function RingBuffer.window - - - - - - -
-

Function RingBuffer.window

The window of currently valid data. -

-
- -
- T[] window() @system; -
-
-
- - -
- - - - - - - - - - - - - -
Authors -

Steven Schveighoffer, Dmitry Olshansky -

- -
Copyright -

Copyright Steven Schveighoffer 2011-. -

- -
License -

Boost License 1.0. (See accompanying file LICENSE_1_0.txt or copy - at http://www.boost.org/LICENSE_1_0.txt) -

- -
-

Generated using the DDOX documentation generator

-
-
- - \ No newline at end of file diff --git a/docs/iopipe/bufpipe.html b/docs/iopipe/bufpipe.html deleted file mode 100644 index ea20228..0000000 --- a/docs/iopipe/bufpipe.html +++ /dev/null @@ -1,253 +0,0 @@ - - - - - Module iopipe.bufpipe - - - - - - -
-

Module iopipe.bufpipe

Core functionality for iopipe. Defines the base types for manipulating and - processing data. -

-
-
-

Functions

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameDescription
- - arrayCastPipe(c) - - Given a pipe chain whose window is a straight array, create a pipe chain that - converts the array to another array type. -
- - asElemRange(c) - - Convert an io pipe into a range of elements of the pipe. This effectively - converts an iopipe range of T into a range of T. Note that auto-decoding - does NOT happen still, so converting a string into an input range produces a - range of char. The range is extended when no more data is in the window. -
- - asInputRange(c) - - Convert an io pipe into a range, with each popFront releasing all the - current data and extending a specified amount. -
- - bufd(dev, args) - - Create a buffer to manage the data from the given source, and wrap into an iopipe. -
- - byteSwapper(c) - - Swap the bytes of every element before handing to next processor. The - littleEndian compile-time parameter indicates what endianness the data is - in. If it matches the platform's endianness, then nothing is done (no byte - swap occurs). Otherwise, a byte swap processor is returned wrapping the io - pipe. -
- - ensureElems(chain, elems) - - Extend a pipe until it has a minimum number of elements. If the minimum - elements are already present, does nothing. -
- - iosrc(c) - - Create an input source from a given Chain, and a given translation function/template. -
- - outputPipe(c, dev) - - An output pipe writes all its data to a given sink stream. Any data in the - output pipe's window has been written to the stream. -
- - process(c) - - Process a given iopipe chain until it has reached EOF. This is accomplished - by extending and releasing continuously until extend returns 0. -
- - rbufd(dev) - - Create a ring buffer to manage the data from the given source, and wrap into an iopipe. -
- - writeBuf(c, data, offset) - - Write data from a random access range or character array into the given - iopipe. If relOnWrite is set to true (ReleaseOnWrite.yes), then all data - before the provided offset, and any new data written to the pipe is always - released. This is mainly useful for output buffers where you do not wish to - allocate extra space in the buffer, and wish to flush the buffer when it's - full. -
-
-
-

Structs

- - - - - - - - - -
NameDescription
- - SimplePipe - - An example processor. This demonstrates the required items for implementing - an iopipe. -
-
-
- - - - - - - - - - - - - -
Authors -

Steven Schveighoffer -

- -
Copyright -

Copyright Steven Schveighoffer 2011-. -

- -
License -

Boost License 1.0. (See accompanying file LICENSE_1_0.txt or copy - at http://www.boost.org/LICENSE_1_0.txt) -

- -
-

Generated using the DDOX documentation generator

-
-
- - \ No newline at end of file diff --git a/docs/iopipe/bufpipe/SimplePipe.chain.html b/docs/iopipe/bufpipe/SimplePipe.chain.html deleted file mode 100644 index cba1c68..0000000 --- a/docs/iopipe/bufpipe/SimplePipe.chain.html +++ /dev/null @@ -1,131 +0,0 @@ - - - - - Variable SimplePipe.chain - - - - - - -
-

Variable SimplePipe.chain

The upstream data. This can be any iopipe. Throughout the library, the - upstream data is generally saved as a member called "chain" as a matter - of convention. This is not required or expected. -

-
- -
- struct SimplePipe -
- - { -
-
-   // ... -
-   Chain chain - ; -
-   // ... -
- } -
-
-
- - -
- - - - - - - - - - - - - -
Authors -

Steven Schveighoffer -

- -
Copyright -

Copyright Steven Schveighoffer 2011-. -

- -
License -

Boost License 1.0. (See accompanying file LICENSE_1_0.txt or copy - at http://www.boost.org/LICENSE_1_0.txt) -

- -
-

Generated using the DDOX documentation generator

-
-
- - \ No newline at end of file diff --git a/docs/iopipe/bufpipe/SimplePipe.extend.html b/docs/iopipe/bufpipe/SimplePipe.extend.html deleted file mode 100644 index 1a95f99..0000000 --- a/docs/iopipe/bufpipe/SimplePipe.extend.html +++ /dev/null @@ -1,136 +0,0 @@ - - - - - Function SimplePipe.extend - - - - - - -
-

Function SimplePipe.extend

Get more data from the pipe. The parameter indicates the desired number - of elements to add to the end of the window. If 0 is passed, then it is - up to the implementation of the pipe to determine the optimal number of - elements to add. -

-
- -
- size_t extend - ( -
-   size_t elements -
- ); -
-
-
-
- -

Parameters

- - -
NameDescription
elements Number of elements requested.
-
-

Returns

-

The number of elements added. This can be less than or more - than the parameter, but will only be 0 when no more elements - can be added. This signifies EOF. -

-
- -
- - - - - - - - - - - - - -
Authors -

Steven Schveighoffer -

- -
Copyright -

Copyright Steven Schveighoffer 2011-. -

- -
License -

Boost License 1.0. (See accompanying file LICENSE_1_0.txt or copy - at http://www.boost.org/LICENSE_1_0.txt) -

- -
-

Generated using the DDOX documentation generator

-
-
- - \ No newline at end of file diff --git a/docs/iopipe/bufpipe/SimplePipe.html b/docs/iopipe/bufpipe/SimplePipe.html deleted file mode 100644 index 0cfc25b..0000000 --- a/docs/iopipe/bufpipe/SimplePipe.html +++ /dev/null @@ -1,251 +0,0 @@ - - - - - Struct SimplePipe - - - - - - -
-

Struct SimplePipe

An example processor. This demonstrates the required items for implementing - an iopipe. -

-
- -
- struct SimplePipe(Chain, ulong extendElementsDefault = 1) -
-    -
- if (isIopipe!Chain); -
-
-
-

SimplePipe will only extend exactly the elements requested (from what is - availble), so it can be used for testing with a static buffer to simulate - data coming in at any rate. -

-
- -

Constructors

- - - - - - - - - -
NameDescription
- - this - - (c) - Build on top of an existing chain -
-
-

Fields

- - - - - - - - - -
NameTypeDescription
- chain - ChainThe upstream data. This can be any iopipe. Throughout the library, the - upstream data is generally saved as a member called "chain" as a matter - of convention. This is not required or expected. -
-
-

Methods

- - - - - - - - - - - - - - - - - - - - - -
NameDescription
- - extend - - (elements) - Get more data from the pipe. The parameter indicates the desired number - of elements to add to the end of the window. If 0 is passed, then it is - up to the implementation of the pipe to determine the optimal number of - elements to add. -
- - release - - (elements) - Release the given number of elements from the front of the window. After - calling this, make sure to update any tracking indexes for the window - that you are maintaining. -
- - valve - - () - Implement the required valve function. If the pipe you are wrapping - has a valve, you must provide ref access to the valve. -
- - window - - () - Get the current window of elements for the pipe. This is the data that - can be used at this moment in time. -
-
-

Example

- -
// any array is a valid iopipe source.
-auto source = "hello, world!";
-
-auto pipe = SimplePipe!(string)(source);
-
-// SimplePipe holds back data until you extend it.
-assert(pipe.window.length == 0);
-
-// Note: elements of narrow strings are code units for purposes of iopipe
-// library.
-assert(pipe.extend(5) == 5);
-assert(pipe.window == "hello");
-
-// Release data to inform the pipe you are done with it
-pipe.release(3);
-assert(pipe.window == "lo");
-
-// you can request "some data" by extending with 0, letting the pipe define
-// what is the best addition of data. This is useful for optimizing OS
-// system call reads.
-assert(pipe.extend(0) == 1);
-assert(pipe.window == "lo,");
-
-// you aren't guaranteed to get all the data you ask for.
-assert(pipe.extend(100) == 7);
-assert(pipe.window == "lo, world!");
-
-pipe.release(pipe.window.length);
-
-// this signifies EOF.
-assert(pipe.extend(1) == 0);
-
-
- -
- - - - - - - - - - - - - -
Authors -

Steven Schveighoffer -

- -
Copyright -

Copyright Steven Schveighoffer 2011-. -

- -
License -

Boost License 1.0. (See accompanying file LICENSE_1_0.txt or copy - at http://www.boost.org/LICENSE_1_0.txt) -

- -
-

Generated using the DDOX documentation generator

-
-
- - \ No newline at end of file diff --git a/docs/iopipe/bufpipe/SimplePipe.release.html b/docs/iopipe/bufpipe/SimplePipe.release.html deleted file mode 100644 index acc6b55..0000000 --- a/docs/iopipe/bufpipe/SimplePipe.release.html +++ /dev/null @@ -1,129 +0,0 @@ - - - - - Function SimplePipe.release - - - - - - -
-

Function SimplePipe.release

Release the given number of elements from the front of the window. After - calling this, make sure to update any tracking indexes for the window - that you are maintaining. -

-
- -
- void release - ( -
-   size_t elements -
- ); -
-
-
-
- -

Parameters

- - -
NameDescription
elements The number of elements to release.
-
- -
- - - - - - - - - - - - - -
Authors -

Steven Schveighoffer -

- -
Copyright -

Copyright Steven Schveighoffer 2011-. -

- -
License -

Boost License 1.0. (See accompanying file LICENSE_1_0.txt or copy - at http://www.boost.org/LICENSE_1_0.txt) -

- -
-

Generated using the DDOX documentation generator

-
-
- - \ No newline at end of file diff --git a/docs/iopipe/bufpipe/SimplePipe.this.html b/docs/iopipe/bufpipe/SimplePipe.this.html deleted file mode 100644 index bbf424c..0000000 --- a/docs/iopipe/bufpipe/SimplePipe.this.html +++ /dev/null @@ -1,121 +0,0 @@ - - - - - Function SimplePipe.this - - - - - - -
-

Function SimplePipe.this

Build on top of an existing chain -

-
- -
- this - ( -
-   Chain c -
- ); -
-
-
- - -
- - - - - - - - - - - - - -
Authors -

Steven Schveighoffer -

- -
Copyright -

Copyright Steven Schveighoffer 2011-. -

- -
License -

Boost License 1.0. (See accompanying file LICENSE_1_0.txt or copy - at http://www.boost.org/LICENSE_1_0.txt) -

- -
-

Generated using the DDOX documentation generator

-
-
- - \ No newline at end of file diff --git a/docs/iopipe/bufpipe/SimplePipe.valve.html b/docs/iopipe/bufpipe/SimplePipe.valve.html deleted file mode 100644 index aa660e8..0000000 --- a/docs/iopipe/bufpipe/SimplePipe.valve.html +++ /dev/null @@ -1,131 +0,0 @@ - - - - - Function SimplePipe.valve - - - - - - -
-

Function SimplePipe.valve

Implement the required valve function. If the pipe you are wrapping - has a valve, you must provide ref access to the valve. -

-
- -
- ref auto valve(); -
-
-
-

Note, the correct boilerplate implementation can be inserted by - adding the following line to your pipe structure: -

- -
mixin implementValve!(nameOfUpstreamPipe);
-
- -

Returns

-

A valve inlet that allows you to control flow of the data - through this pipe. -

- -

See Also: iopipe.valve -

-
- -
- - - - - - - - - - - - - -
Authors -

Steven Schveighoffer -

- -
Copyright -

Copyright Steven Schveighoffer 2011-. -

- -
License -

Boost License 1.0. (See accompanying file LICENSE_1_0.txt or copy - at http://www.boost.org/LICENSE_1_0.txt) -

- -
-

Generated using the DDOX documentation generator

-
-
- - \ No newline at end of file diff --git a/docs/iopipe/bufpipe/SimplePipe.window.html b/docs/iopipe/bufpipe/SimplePipe.window.html deleted file mode 100644 index f51a45c..0000000 --- a/docs/iopipe/bufpipe/SimplePipe.window.html +++ /dev/null @@ -1,117 +0,0 @@ - - - - - Function SimplePipe.window - - - - - - -
-

Function SimplePipe.window

Get the current window of elements for the pipe. This is the data that - can be used at this moment in time. -

-
- -
- auto window(); -
-
-
- - -
- - - - - - - - - - - - - -
Authors -

Steven Schveighoffer -

- -
Copyright -

Copyright Steven Schveighoffer 2011-. -

- -
License -

Boost License 1.0. (See accompanying file LICENSE_1_0.txt or copy - at http://www.boost.org/LICENSE_1_0.txt) -

- -
-

Generated using the DDOX documentation generator

-
-
- - \ No newline at end of file diff --git a/docs/iopipe/bufpipe/arrayCastPipe.html b/docs/iopipe/bufpipe/arrayCastPipe.html deleted file mode 100644 index aaf96c0..0000000 --- a/docs/iopipe/bufpipe/arrayCastPipe.html +++ /dev/null @@ -1,142 +0,0 @@ - - - - - Function arrayCastPipe - - - - - - -
-

Function arrayCastPipe

Given a pipe chain whose window is a straight array, create a pipe chain that - converts the array to another array type. -

-
- -
- auto arrayCastPipe(T, Chain) - ( -
-   Chain c -
- ) @safe -
- if (isIopipe!Chain && isDynamicArray!(WindowType!Chain)); -
-
-
-
- -

Note

-

This new pipe chain handles any alignment issues when partial - elements have been extended/released. Also, the size of the new - element type must be a multiple of, or divide evenly into, the - original array. -

-
-

Parameters

- - - -
NameDescription
T Element type for new pipe chain window
c Source pipe chain to use for new chain.
-
-

Returns

-

New pipe chain with new array type. -

-
- -
- - - - - - - - - - - - - -
Authors -

Steven Schveighoffer -

- -
Copyright -

Copyright Steven Schveighoffer 2011-. -

- -
License -

Boost License 1.0. (See accompanying file LICENSE_1_0.txt or copy - at http://www.boost.org/LICENSE_1_0.txt) -

- -
-

Generated using the DDOX documentation generator

-
-
- - \ No newline at end of file diff --git a/docs/iopipe/bufpipe/asElemRange.html b/docs/iopipe/bufpipe/asElemRange.html deleted file mode 100644 index 127c303..0000000 --- a/docs/iopipe/bufpipe/asElemRange.html +++ /dev/null @@ -1,137 +0,0 @@ - - - - - Function asElemRange - - - - - - -
-

Function asElemRange

Convert an io pipe into a range of elements of the pipe. This effectively - converts an iopipe range of T into a range of T. Note that auto-decoding - does NOT happen still, so converting a string into an input range produces a - range of char. The range is extended when no more data is in the window. -

-
- -
- auto asElemRange(ulong extendRequestSize = 0, Chain) - ( -
-   Chain c -
- ) -
- if (isIopipe!Chain); -
-
-
-

Note that the function may call extend once before returning, depending on - whether there is any data present or not. -

-
- -

Parameters

- - - -
NameDescription
extendRequestSize The value to pass to c.extend when calling in - popFront
c The chain to use as backing for this range.
-
- -
- - - - - - - - - - - - - -
Authors -

Steven Schveighoffer -

- -
Copyright -

Copyright Steven Schveighoffer 2011-. -

- -
License -

Boost License 1.0. (See accompanying file LICENSE_1_0.txt or copy - at http://www.boost.org/LICENSE_1_0.txt) -

- -
-

Generated using the DDOX documentation generator

-
-
- - \ No newline at end of file diff --git a/docs/iopipe/bufpipe/asInputRange.html b/docs/iopipe/bufpipe/asInputRange.html deleted file mode 100644 index e17c23e..0000000 --- a/docs/iopipe/bufpipe/asInputRange.html +++ /dev/null @@ -1,134 +0,0 @@ - - - - - Function asInputRange - - - - - - -
-

Function asInputRange

Convert an io pipe into a range, with each popFront releasing all the - current data and extending a specified amount. -

-
- -
- auto asInputRange(ulong extendRequestSize = 0, Chain) - ( -
-   Chain c -
- ) -
- if (isIopipe!Chain); -
-
-
-

Note that the function may call extend once before returning, depending on - whether there is any data present or not. -

-
- -

Parameters

- - - -
NameDescription
extendRequestSize The value to pass to c.extend when calling popFront
c The chain to use as backing for this range.
-
- -
- - - - - - - - - - - - - -
Authors -

Steven Schveighoffer -

- -
Copyright -

Copyright Steven Schveighoffer 2011-. -

- -
License -

Boost License 1.0. (See accompanying file LICENSE_1_0.txt or copy - at http://www.boost.org/LICENSE_1_0.txt) -

- -
-

Generated using the DDOX documentation generator

-
-
- - \ No newline at end of file diff --git a/docs/iopipe/bufpipe/bufd.html b/docs/iopipe/bufpipe/bufd.html deleted file mode 100644 index bed64e1..0000000 --- a/docs/iopipe/bufpipe/bufd.html +++ /dev/null @@ -1,149 +0,0 @@ - - - - - Function bufd - - - - - - -
-

Function bufd

Create a buffer to manage the data from the given source, and wrap into an iopipe. -

-
- -
- auto bufd(T, Allocator, ulong optimalReadSize = 8 * 1024 / T.sizeof, Source, Args...) - ( -
-   Source dev, -
-   Args args -
- ) -
- if (hasMember!(Source, "read") && is(typeof(dev.read(T[].init)) == size_t)); -
-
- auto bufd(T, Allocator, ulong optimalReadSize = T.sizeof > 4 ? 8 : 32 / T.sizeof, Args...) - ( -
-   Args args -
- ); -
-
-
-
- -

Parameters

- - - - - - -
NameDescription
T The type of element to allocate with the allocator
Allocator The allocator to use for managing the buffer
Source The type of the input stream. This must have a function - read that can read into the buffer's window.
dev The input stream to use. If not specified, then a NullDev source is assumed.
args Arguments passed to the allocator (for allocators that need initialization)
-
-

Returns

-

An iopipe that uses the given buffer to read data from the given device source. - The version which takes no parameter uses a NullDev as a source. -

-
- -
- - - - - - - - - - - - - -
Authors -

Steven Schveighoffer -

- -
Copyright -

Copyright Steven Schveighoffer 2011-. -

- -
License -

Boost License 1.0. (See accompanying file LICENSE_1_0.txt or copy - at http://www.boost.org/LICENSE_1_0.txt) -

- -
-

Generated using the DDOX documentation generator

-
-
- - \ No newline at end of file diff --git a/docs/iopipe/bufpipe/byteSwapper.html b/docs/iopipe/bufpipe/byteSwapper.html deleted file mode 100644 index 0f0ce31..0000000 --- a/docs/iopipe/bufpipe/byteSwapper.html +++ /dev/null @@ -1,144 +0,0 @@ - - - - - Function byteSwapper - - - - - - -
-

Function byteSwapper

Swap the bytes of every element before handing to next processor. The - littleEndian compile-time parameter indicates what endianness the data is - in. If it matches the platform's endianness, then nothing is done (no byte - swap occurs). Otherwise, a byte swap processor is returned wrapping the io - pipe. -

-
- -
- auto byteSwapper(bool littleEndian = !IsLittleEndian, Chain) - ( -
-   Chain c -
- ) -
- if (isIopipe!Chain && is(typeof(swapBytes(c.window)))); -
-
-
-

Note, the width of the elements in the iopipe's window must be 2 or 4 bytes - wide, and mutable. -

-
- -

Parameters

- - - -
NameDescription
littleEndian true if the data arrives in little endian mode, false - if in big endian mode.
c Source pipe chain for the byte swapper.
-
-

Returns

-

If endianness of the source matches platform, this returns c, - otherwise, it returns a byte swapping iopipe wrapper that performs - the byte swaps. -

-
- -
- - - - - - - - - - - - - -
Authors -

Steven Schveighoffer -

- -
Copyright -

Copyright Steven Schveighoffer 2011-. -

- -
License -

Boost License 1.0. (See accompanying file LICENSE_1_0.txt or copy - at http://www.boost.org/LICENSE_1_0.txt) -

- -
-

Generated using the DDOX documentation generator

-
-
- - \ No newline at end of file diff --git a/docs/iopipe/bufpipe/ensureElems.html b/docs/iopipe/bufpipe/ensureElems.html deleted file mode 100644 index f888bbf..0000000 --- a/docs/iopipe/bufpipe/ensureElems.html +++ /dev/null @@ -1,140 +0,0 @@ - - - - - Function ensureElems - - - - - - -
-

Function ensureElems

Extend a pipe until it has a minimum number of elements. If the minimum - elements are already present, does nothing. -

-
- -
- size_t ensureElems(Chain) - ( -
-   ref Chain chain, -
-   size_t elems = size_t.max -
- ); -
-
-
-

This is useful if you need a certain number of elements in the pipe before - you can process any more data. -

-
- -

Parameters

- - - -
NameDescription
chain The pipe to work on.
elems The number of elements to ensure are in the window. If - omitted, all elements are extended.
-
-

Returns

-

The resulting number of elements in the window. This may be less - than the requested elements if the pipe ran out of data. -

-
- -
- - - - - - - - - - - - - -
Authors -

Steven Schveighoffer -

- -
Copyright -

Copyright Steven Schveighoffer 2011-. -

- -
License -

Boost License 1.0. (See accompanying file LICENSE_1_0.txt or copy - at http://www.boost.org/LICENSE_1_0.txt) -

- -
-

Generated using the DDOX documentation generator

-
-
- - \ No newline at end of file diff --git a/docs/iopipe/bufpipe/iosrc.html b/docs/iopipe/bufpipe/iosrc.html deleted file mode 100644 index 8834955..0000000 --- a/docs/iopipe/bufpipe/iosrc.html +++ /dev/null @@ -1,136 +0,0 @@ - - - - - Function iosrc - - - - - - -
-

Function iosrc

Create an input source from a given Chain, and a given translation function/template. -

-
- -
- auto iosrc(alias fun, Chain) - ( -
-   Chain c -
- ); -
-
-
-

It is advisable to use a template or lambda that does not require a closure, - and is not a delegate from a struct that might move. -

- -

The result is also alias-this'd to the chain, so it can be used as an iopipe also. -

-
- -

Parameters

- - - -
NameDescription
fun Function that accepts as its first parameter the input chain (of - type Chain), and as its second parameter, the buffer to read into. Only - buffer types that are supported are used.
c The chain to read from
-
- -
- - - - - - - - - - - - - -
Authors -

Steven Schveighoffer -

- -
Copyright -

Copyright Steven Schveighoffer 2011-. -

- -
License -

Boost License 1.0. (See accompanying file LICENSE_1_0.txt or copy - at http://www.boost.org/LICENSE_1_0.txt) -

- -
-

Generated using the DDOX documentation generator

-
-
- - \ No newline at end of file diff --git a/docs/iopipe/bufpipe/outputPipe.html b/docs/iopipe/bufpipe/outputPipe.html deleted file mode 100644 index 4e5f4a0..0000000 --- a/docs/iopipe/bufpipe/outputPipe.html +++ /dev/null @@ -1,142 +0,0 @@ - - - - - Function outputPipe - - - - - - -
-

Function outputPipe

An output pipe writes all its data to a given sink stream. Any data in the - output pipe's window has been written to the stream. -

-
- -
- auto outputPipe(Chain, Sink) - ( -
-   Chain c, -
-   Sink dev -
- ) -
- if (isIopipe!Chain && is(typeof(dev.write(c.window)) == size_t)); -
-
-
-

The returned iopipe has a function "flush" that will extend a chunk of data - and then release it immediately. -

-
- -

Parameters

- - - -
NameDescription
c The input data to write to the stream.
dev The output stream to write data to. This must have a function - write that can write a c.window.
-
-

Returns

-

An iopipe that gives a view of the written data. Note that you - don't have to do anything with the data. -

-
- -
- - - - - - - - - - - - - -
Authors -

Steven Schveighoffer -

- -
Copyright -

Copyright Steven Schveighoffer 2011-. -

- -
License -

Boost License 1.0. (See accompanying file LICENSE_1_0.txt or copy - at http://www.boost.org/LICENSE_1_0.txt) -

- -
-

Generated using the DDOX documentation generator

-
-
- - \ No newline at end of file diff --git a/docs/iopipe/bufpipe/process.html b/docs/iopipe/bufpipe/process.html deleted file mode 100644 index 012231b..0000000 --- a/docs/iopipe/bufpipe/process.html +++ /dev/null @@ -1,132 +0,0 @@ - - - - - Function process - - - - - - -
-

Function process

Process a given iopipe chain until it has reached EOF. This is accomplished - by extending and releasing continuously until extend returns 0. -

-
- -
- size_t process(Chain) - ( -
-   auto ref Chain c -
- ); -
-
-
-
- -

Parameters

- - -
NameDescription
c The iopipe to process
-
-

Returns

-

The number of elements processed. -

-
- -
- - - - - - - - - - - - - -
Authors -

Steven Schveighoffer -

- -
Copyright -

Copyright Steven Schveighoffer 2011-. -

- -
License -

Boost License 1.0. (See accompanying file LICENSE_1_0.txt or copy - at http://www.boost.org/LICENSE_1_0.txt) -

- -
-

Generated using the DDOX documentation generator

-
-
- - \ No newline at end of file diff --git a/docs/iopipe/bufpipe/rbufd.html b/docs/iopipe/bufpipe/rbufd.html deleted file mode 100644 index 1625dcc..0000000 --- a/docs/iopipe/bufpipe/rbufd.html +++ /dev/null @@ -1,149 +0,0 @@ - - - - - Function rbufd - - - - - - -
-

Function rbufd

Create a ring buffer to manage the data from the given source, and wrap into an iopipe. -

-
- -
- auto rbufd(T, ulong optimalReadSize = 8 * 1024 / T.sizeof, Source) - ( -
-   Source dev -
- ) -
- if (hasMember!(Source, "read") && is(typeof(dev.read(T[].init)) == size_t)); -
-
- auto rbufd(T, ulong optimalReadSize = 8 * 1024 / T.sizeof)(); -
-
-
-

The iopipe RingBuffer type uses virtual memory mapping to have the same - segment of data mapped to consecutive addresses. This allows true zero-copy - usage. However, it does require use of resources that may possibly be - limited, so you may want to justify that it's needed before using instead of - bufd. -

- -

Note also that a RingBuffer is not copyable (its destructor will unmap the - memory), so this must use RefCounted to properly work. -

-
- -

Parameters

- - - - -
NameDescription
T The type of element to allocate with the allocator
Source The type of the input stream. This must have a function - read that can read into the buffer's window.
dev The input stream to use. If not specified, then a NullDev source is assumed.
-
-

Returns

-

An iopipe that uses a RingBuffer to read data from the given device source. -

-
- -
- - - - - - - - - - - - - -
Authors -

Steven Schveighoffer -

- -
Copyright -

Copyright Steven Schveighoffer 2011-. -

- -
License -

Boost License 1.0. (See accompanying file LICENSE_1_0.txt or copy - at http://www.boost.org/LICENSE_1_0.txt) -

- -
-

Generated using the DDOX documentation generator

-
-
- - \ No newline at end of file diff --git a/docs/iopipe/bufpipe/writeBuf.html b/docs/iopipe/bufpipe/writeBuf.html deleted file mode 100644 index 6ea0eb8..0000000 --- a/docs/iopipe/bufpipe/writeBuf.html +++ /dev/null @@ -1,151 +0,0 @@ - - - - - Function writeBuf - - - - - - -
-

Function writeBuf

Write data from a random access range or character array into the given - iopipe. If relOnWrite is set to true (ReleaseOnWrite.yes), then all data - before the provided offset, and any new data written to the pipe is always - released. This is mainly useful for output buffers where you do not wish to - allocate extra space in the buffer, and wish to flush the buffer when it's - full. -

-
- -
- size_t writeBuf(std.typecons.Flag!("releaseOnWrite") relOnWrite = ReleaseOnWrite.yes, Chain, Range) - ( -
-   ref Chain c, -
-   Range data, -
-   size_t offset = 0 -
- ) -
- if (isIopipe!Chain && __traits(compiles, c.window[0..0] = data[0..0])); -
-
-
-

If relOnWrite is false, then the pipe data is not released, and you should - consider the "written" part to be the offset + the return value. -

-
- -

Parameters

- - - - - -
NameDescription
c The iopipe chain to write to.
data The range to write to the chain.
offset The starting point to write the data.
relOnWrite If true, data is released as it is written, otherwise, - it's not released.
-
-

Returns

-

The number of elements written. This should match the elements of - the range, but could potentially be less if there wasn't a way to extend - more space and more space was needed. -

-
- -
- - - - - - - - - - - - - -
Authors -

Steven Schveighoffer -

- -
Copyright -

Copyright Steven Schveighoffer 2011-. -

- -
License -

Boost License 1.0. (See accompanying file LICENSE_1_0.txt or copy - at http://www.boost.org/LICENSE_1_0.txt) -

- -
-

Generated using the DDOX documentation generator

-
-
- - \ No newline at end of file diff --git a/docs/iopipe/refc.html b/docs/iopipe/refc.html deleted file mode 100644 index b12b7fa..0000000 --- a/docs/iopipe/refc.html +++ /dev/null @@ -1,152 +0,0 @@ - - - - - Module iopipe.refc - - - - - - -
-

Module iopipe.refc

Reference counting using the GC. -

The RefCounted struct simply stores the item in a GC block, and also adds a - root to that block. Once all known references to the block are removed - (tracked by a reference count in the block), then the block is removed, and - the destructor run. Since it's a root, it can run the full destructor of the - data underneath, without worrying about GC data being collected underneath it. -

- -

This depends on the block not being involved in a cycle, which should be fine - for iopipes. -

- -

Note that atomics are used for the reference count because the GC can destroy - things in other threads. -

-
- -
-
-

Functions

- - - - - - - - - -
NameDescription
- - refCounted(item) - - Return a ref counted version of the given item. -
-
-
-

Structs

- - - - - - - - - -
NameDescription
- - RefCounted - - A struct to ensure only one copy of the provided item exists. -
-
-
- - - - - - - - - - - - - -
Authors - -
Copyright - -
License - -
-

Generated using the DDOX documentation generator

-
-
- - \ No newline at end of file diff --git a/docs/iopipe/refc/RefCounted._get.html b/docs/iopipe/refc/RefCounted._get.html deleted file mode 100644 index 987f8bb..0000000 --- a/docs/iopipe/refc/RefCounted._get.html +++ /dev/null @@ -1,111 +0,0 @@ - - - - - Function RefCounted._get - - - - - - -
-

Function RefCounted._get

Get a reference to the item. Note that if you store a reference to this - item, it is possible the item will in the future be destroyed, but the - memory will still be present (until the GC cleans it up). -

-
- -
- ref T _get(); -
-
-
- - -
- - - - - - - - - - - - - -
Authors - -
Copyright - -
License - -
-

Generated using the DDOX documentation generator

-
-
- - \ No newline at end of file diff --git a/docs/iopipe/refc/RefCounted.html b/docs/iopipe/refc/RefCounted.html deleted file mode 100644 index 1ae47e7..0000000 --- a/docs/iopipe/refc/RefCounted.html +++ /dev/null @@ -1,179 +0,0 @@ - - - - - Struct RefCounted - - - - - - -
-

Struct RefCounted

A struct to ensure only one copy of the provided item exists. -

-
- -
- struct RefCounted(T) - ; -
-
-
-

This differs from Phobos' std.typecons.RefCounted by using the GC to store - the memory, instead of C's heap. The benefit here is that this version of - RefCounted can be @safe. -

- -

The block containing the item is pinned in the GC until all references are - gone, which means the destructor will be run synchronously when the last - reference is removed. Therefore, it is safe to store a RefCounted struct - inside a GC allocated type. -

-
- -

Constructors

- - - - - - - - - -
NameDescription
- - this - - (args) - Constructor. the underlying T is constructed using the parameters. -
-
-

Methods

- - - - - - - - - - - - - - - - - -
NameDescription
- - _get - - () - Get a reference to the item. Note that if you store a reference to this - item, it is possible the item will in the future be destroyed, but the - memory will still be present (until the GC cleans it up). -
- - opAssign - - (other) - Assignment to another T. -
- - opAssign - - (other) - Assignment to another ref counted item. -
-
- -
- - - - - - - - - - - - - -
Authors - -
Copyright - -
License - -
-

Generated using the DDOX documentation generator

-
-
- - \ No newline at end of file diff --git a/docs/iopipe/refc/RefCounted.opAssign.html b/docs/iopipe/refc/RefCounted.opAssign.html deleted file mode 100644 index 8da4ee8..0000000 --- a/docs/iopipe/refc/RefCounted.opAssign.html +++ /dev/null @@ -1,143 +0,0 @@ - - - - - RefCounted.opAssign - multiple declarations - - - - - - -
-

RefCounted.opAssign - multiple declarations

-

Function RefCounted.opAssign

Assignment to another T. -

-
- -
- void opAssign - ( -
-   T other -
- ); -
-
-
- -

Function RefCounted.opAssign

Assignment to another ref counted item. -

-
- -
- void opAssign - ( -
-   RefCounted other -
- ); -
-
-
- - -
- - - - - - - - - - - - - -
Authors - -
Copyright - -
License - -
-

Generated using the DDOX documentation generator

-
-
- - \ No newline at end of file diff --git a/docs/iopipe/refc/RefCounted.this.html b/docs/iopipe/refc/RefCounted.this.html deleted file mode 100644 index 2ad66ba..0000000 --- a/docs/iopipe/refc/RefCounted.this.html +++ /dev/null @@ -1,114 +0,0 @@ - - - - - Function RefCounted.this - - - - - - -
-

Function RefCounted.this

Constructor. the underlying T is constructed using the parameters. -

-
- -
- this(Args...) - ( -
-   auto ref Args args -
- ); -
-
-
- - -
- - - - - - - - - - - - - -
Authors - -
Copyright - -
License - -
-

Generated using the DDOX documentation generator

-
-
- - \ No newline at end of file diff --git a/docs/iopipe/refc/refCounted.html b/docs/iopipe/refc/refCounted.html deleted file mode 100644 index 79d29e8..0000000 --- a/docs/iopipe/refc/refCounted.html +++ /dev/null @@ -1,136 +0,0 @@ - - - - - Function refCounted - - - - - - -
-

Function refCounted

Return a ref counted version of the given item. -

-
- -
- RefCounted!T refCounted(T) - ( -
-   auto ref T item -
- ); -
-
-
- -

Example

- -
// note that destructor is called from the parameter to refCounted, so we
-// must trigger only counting destruction of non-init instances of the
-// struct.
-size_t dtorcalled = 0;
-struct S
-{
-    int x;
-    @safe ~this() {if(x) dtorcalled++;}
-    @disable this(this);
-}
-
-{
-    auto destroyme = S(1).refCounted;
-    auto dm2 = destroyme;
-    auto dm3 = destroyme;
-}
-
-assert(dtorcalled == 1);
-
-
- -
- - - - - - - - - - - - - -
Authors - -
Copyright - -
License - -
-

Generated using the DDOX documentation generator

-
-
- - \ No newline at end of file diff --git a/docs/iopipe/stream.html b/docs/iopipe/stream.html deleted file mode 100644 index b102e9b..0000000 --- a/docs/iopipe/stream.html +++ /dev/null @@ -1,215 +0,0 @@ - - - - - Module iopipe.stream - - - - - - -
-

Module iopipe.stream

Simple streams for use with iopipe -

-
-
-

Functions

- - - - - - - - - - - - - -
NameDescription
- - openDev(fd) - - Construct an input stream based on the file descriptor -
- - openDev(name, mode) - - Open a file by name. -
-
-
-

Structs

- - - - - - - - - - - - - -
NameDescription
- - NullDev - - A source that reads uninitialized data. -
- - ZeroDev - - A source stream that always reads zeros, no matter what the data type is. -
-
-
-

Global variables

- - - - - - - - - - - - - - - -
NameTypeDescription
- - nullDev - - - immutable(NullDev) - Common instance of NullDev to use anywhere needed. -
- - zeroDev - - - immutable(ZeroDev) - Common instance of ZeroDev to use anywhere needed. -
-
-
-

Aliases

- - - - - - - - - - -
NameTypeDescription
- - IODev - - - IOObject!File -
-
-
- - - - - - - - - - - - - -
Authors -

Steven Schveighoffer -

- -
Copyright -

Copyright Steven Schveighoffer 2011-. -

- -
License -

Boost License 1.0. (See accompanying file LICENSE_1_0.txt or copy -at http://www.boost.org/LICENSE_1_0.txt) -

- -
-

Generated using the DDOX documentation generator

-
-
- - \ No newline at end of file diff --git a/docs/iopipe/stream/IODev.html b/docs/iopipe/stream/IODev.html deleted file mode 100644 index e621725..0000000 --- a/docs/iopipe/stream/IODev.html +++ /dev/null @@ -1,120 +0,0 @@ - - - - - Alias IODev - - - - - - -
-

Alias IODev

-
- -
- alias IODev - = IOObject!File; -
-
-
- -

Deprecated

-

use std.io directly -

-
- -
- - - - - - - - - - - - - -
Authors -

Steven Schveighoffer -

- -
Copyright -

Copyright Steven Schveighoffer 2011-. -

- -
License -

Boost License 1.0. (See accompanying file LICENSE_1_0.txt or copy -at http://www.boost.org/LICENSE_1_0.txt) -

- -
-

Generated using the DDOX documentation generator

-
-
- - \ No newline at end of file diff --git a/docs/iopipe/stream/NullDev.html b/docs/iopipe/stream/NullDev.html deleted file mode 100644 index 95adbfa..0000000 --- a/docs/iopipe/stream/NullDev.html +++ /dev/null @@ -1,135 +0,0 @@ - - - - - Struct NullDev - - - - - - -
-

Struct NullDev

A source that reads uninitialized data. -

-
- -
- struct NullDev - ; -
-
-
- -

Methods

- - - - - - - - - -
NameDescription
- - read - - (buf) - read the data. Always succeeds. -
-
- -
- - - - - - - - - - - - - -
Authors -

Steven Schveighoffer -

- -
Copyright -

Copyright Steven Schveighoffer 2011-. -

- -
License -

Boost License 1.0. (See accompanying file LICENSE_1_0.txt or copy -at http://www.boost.org/LICENSE_1_0.txt) -

- -
-

Generated using the DDOX documentation generator

-
-
- - \ No newline at end of file diff --git a/docs/iopipe/stream/NullDev.read.html b/docs/iopipe/stream/NullDev.read.html deleted file mode 100644 index ac46bc5..0000000 --- a/docs/iopipe/stream/NullDev.read.html +++ /dev/null @@ -1,121 +0,0 @@ - - - - - Function NullDev.read - - - - - - -
-

Function NullDev.read

read the data. Always succeeds. -

-
- -
- size_t read(T) - ( -
-   T buf -
- ) const; -
-
-
- - -
- - - - - - - - - - - - - -
Authors -

Steven Schveighoffer -

- -
Copyright -

Copyright Steven Schveighoffer 2011-. -

- -
License -

Boost License 1.0. (See accompanying file LICENSE_1_0.txt or copy -at http://www.boost.org/LICENSE_1_0.txt) -

- -
-

Generated using the DDOX documentation generator

-
-
- - \ No newline at end of file diff --git a/docs/iopipe/stream/ZeroDev.html b/docs/iopipe/stream/ZeroDev.html deleted file mode 100644 index 76d7569..0000000 --- a/docs/iopipe/stream/ZeroDev.html +++ /dev/null @@ -1,117 +0,0 @@ - - - - - Struct ZeroDev - - - - - - -
-

Struct ZeroDev

A source stream that always reads zeros, no matter what the data type is. -

-
- -
- struct ZeroDev - ; -
-
-
- - -
- - - - - - - - - - - - - -
Authors -

Steven Schveighoffer -

- -
Copyright -

Copyright Steven Schveighoffer 2011-. -

- -
License -

Boost License 1.0. (See accompanying file LICENSE_1_0.txt or copy -at http://www.boost.org/LICENSE_1_0.txt) -

- -
-

Generated using the DDOX documentation generator

-
-
- - \ No newline at end of file diff --git a/docs/iopipe/stream/nullDev.html b/docs/iopipe/stream/nullDev.html deleted file mode 100644 index 1cb1039..0000000 --- a/docs/iopipe/stream/nullDev.html +++ /dev/null @@ -1,117 +0,0 @@ - - - - - Variable nullDev - - - - - - -
-

Variable nullDev

Common instance of NullDev to use anywhere needed. -

-
- -
- immutable(NullDev) nullDev - ; -
-
-
- - -
- - - - - - - - - - - - - -
Authors -

Steven Schveighoffer -

- -
Copyright -

Copyright Steven Schveighoffer 2011-. -

- -
License -

Boost License 1.0. (See accompanying file LICENSE_1_0.txt or copy -at http://www.boost.org/LICENSE_1_0.txt) -

- -
-

Generated using the DDOX documentation generator

-
-
- - \ No newline at end of file diff --git a/docs/iopipe/stream/openDev.html b/docs/iopipe/stream/openDev.html deleted file mode 100644 index 5597496..0000000 --- a/docs/iopipe/stream/openDev.html +++ /dev/null @@ -1,166 +0,0 @@ - - - - - openDev - multiple declarations - - - - - - -
-

openDev - multiple declarations

-

Function openDev

Construct an input stream based on the file descriptor -

-
- -
- auto openDev - ( -
-   int fd -
- ); -
-
-
-
- -

params

-

fd = The file descriptor to wrap -

-
-

Deprecated

-

Use https://code.dlang.org/io for low-level device i/o -

-
-

Function openDev

Open a file by name. -

-
- -
- auto openDev - ( -
-   in char[] name, -
-   Mode mode = Mode.read | Mode.binary -
- ); -
-
-
-
- -

Deprecated

-

Use https://code.dlang.org/io for low-level device i/o -

-
- -
- - - - - - - - - - - - - -
Authors -

Steven Schveighoffer -

- -
Copyright -

Copyright Steven Schveighoffer 2011-. -

- -
License -

Boost License 1.0. (See accompanying file LICENSE_1_0.txt or copy -at http://www.boost.org/LICENSE_1_0.txt) -

- -
-

Generated using the DDOX documentation generator

-
-
- - \ No newline at end of file diff --git a/docs/iopipe/stream/zeroDev.html b/docs/iopipe/stream/zeroDev.html deleted file mode 100644 index 15d70ca..0000000 --- a/docs/iopipe/stream/zeroDev.html +++ /dev/null @@ -1,117 +0,0 @@ - - - - - Variable zeroDev - - - - - - -
-

Variable zeroDev

Common instance of ZeroDev to use anywhere needed. -

-
- -
- immutable(ZeroDev) zeroDev - ; -
-
-
- - -
- - - - - - - - - - - - - -
Authors -

Steven Schveighoffer -

- -
Copyright -

Copyright Steven Schveighoffer 2011-. -

- -
License -

Boost License 1.0. (See accompanying file LICENSE_1_0.txt or copy -at http://www.boost.org/LICENSE_1_0.txt) -

- -
-

Generated using the DDOX documentation generator

-
-
- - \ No newline at end of file diff --git a/docs/iopipe/textpipe.html b/docs/iopipe/textpipe.html deleted file mode 100644 index 87d0bc7..0000000 --- a/docs/iopipe/textpipe.html +++ /dev/null @@ -1,299 +0,0 @@ - - - - - Module iopipe.textpipe - - - - - - -
-

Module iopipe.textpipe

Text handling with iopipe. -

-
-
-

Functions

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameDescription
- - assumeText(c) - - Given an ioPipe whose window is a buffer that is a dynamic array of data of - integral type, performs the proper transformations in order to get a buffer - of valid char, wchar, or dchar elements, depending on the provided encoding. - This function is useful for when you have data from a raw source (such as a - file or stream) that you have determined or know is really a stream of UTF - data. -
- - byDelimRange(c, delim) - - Given a text iopipe, returns a range based on splitting the text by a given - code point. This has the advantage over delimitedText.asRange in that the - delimiter can be hidden. -
- - byLine(c) - - A convenience wrapper for delimitedText that uses the newline character '\n' - to delimit the segments. Equivalent to delimitedText(c, '\n'); -
- - byLineRange(c) - - Convenience wrapper for byDelimRange that uses the newline character '\n' as - the delimiter. Equivalent to `byDelimRange!(KeepDelimiter)(c, '\n'); -
- - convertText(chain) - - Convert iopipe of one text type into an iopipe for another type. Performs - conversions at the code-point level. If specified, the resulting iopipe will - ensure there is a BOM at the beginning of the iopipe. This is useful if - writing to storage. -
- - delimitedText(c, delim) - - Process a given text iopipe by a given code point delimeter. The only - behavior that changes from the input pipe is that extensions to the window - deliever exactly one more delimited segment of text. -
- - detectBOM(r) - - Using the given random access range of bytes, determine the stream width. - This does not advance the range past the BOM. -
- - encodeText(c) - - Encode a given text iopipe into the desired encoding type. The resulting - iopipe's element type is ubyte, with the bytes ready to be written to a - storage device. -
- - ensureDecodeable(c) - - Wraps a text-based iopipe to make sure all code units are decodeable. -
- - runEncoded(c, args) - - Given a template function, and an input chain of encoded text data, this - function will detect the encoding of the input chain, and convert that - runtime value into a compile-time parameter to the given function. Useful - for writing code that needs to handle all the forms of text encoding. -
- - runWithEncoding(c, args) - - Given a template function, and an input chain of encoded text data, this - function will detect the encoding of the input chain, and convert that - runtime value into a compile-time parameter to the given function. Useful - for writing code that needs to handle all the forms of text encoding. -
- - textConverter(c) - - A converter to allow conversion into any other type of text. -
- - textOutput(c) - - Take a text-based iopipe and turn it into an output range of dchar. Note - that the iopipe must be an output iopipe, not an input one. In other words, - a textOutput result doesn't output its input, it uses its input as a place - to deposit data. -
-
-
-

Enums

- - - - - - - - - -
NameDescription
- - UTFType - - Used to specify stream type -
-
-
-

Aliases

- - - - - - - - - - -
NameTypeDescription
- - CodeUnit - - - char - Aliased to code unit type of a specified stream type. -
-
-
- - - - - - - - - - - - - -
Authors -

Steven Schveighoffer -

- -
Copyright -

Copyright Steven Schveighoffer 2011-. -

- -
License -

Boost License 1.0. (See accompanying file LICENSE_1_0.txt or copy - at http://www.boost.org/LICENSE_1_0.txt) -

- -
-

Generated using the DDOX documentation generator

-
-
- - \ No newline at end of file diff --git a/docs/iopipe/textpipe/CodeUnit.html b/docs/iopipe/textpipe/CodeUnit.html deleted file mode 100644 index 792863c..0000000 --- a/docs/iopipe/textpipe/CodeUnit.html +++ /dev/null @@ -1,120 +0,0 @@ - - - - - Alias CodeUnit - - - - - - -
-

Alias CodeUnit

Aliased to code unit type of a specified stream type. -

-
- -
- alias CodeUnit(UTFType u) - = char; -
-
-
-

Unknown is specified as char (UTF8 is the default) -

-
- - -
- - - - - - - - - - - - - -
Authors -

Steven Schveighoffer -

- -
Copyright -

Copyright Steven Schveighoffer 2011-. -

- -
License -

Boost License 1.0. (See accompanying file LICENSE_1_0.txt or copy - at http://www.boost.org/LICENSE_1_0.txt) -

- -
-

Generated using the DDOX documentation generator

-
-
- - \ No newline at end of file diff --git a/docs/iopipe/textpipe/UTFType.html b/docs/iopipe/textpipe/UTFType.html deleted file mode 100644 index 738aa0d..0000000 --- a/docs/iopipe/textpipe/UTFType.html +++ /dev/null @@ -1,125 +0,0 @@ - - - - - Enum UTFType - - - - - - -
-

Enum UTFType

Used to specify stream type -

-
- -
- enum UTFType - : int { ... } -
-
-
- -

Enum members

- - - - - -
NameDescription
-
- -
- - - - - - - - - - - - - -
Authors -

Steven Schveighoffer -

- -
Copyright -

Copyright Steven Schveighoffer 2011-. -

- -
License -

Boost License 1.0. (See accompanying file LICENSE_1_0.txt or copy - at http://www.boost.org/LICENSE_1_0.txt) -

- -
-

Generated using the DDOX documentation generator

-
-
- - \ No newline at end of file diff --git a/docs/iopipe/textpipe/assumeText.html b/docs/iopipe/textpipe/assumeText.html deleted file mode 100644 index d519839..0000000 --- a/docs/iopipe/textpipe/assumeText.html +++ /dev/null @@ -1,146 +0,0 @@ - - - - - Function assumeText - - - - - - -
-

Function assumeText

Given an ioPipe whose window is a buffer that is a dynamic array of data of - integral type, performs the proper transformations in order to get a buffer - of valid char, wchar, or dchar elements, depending on the provided encoding. - This function is useful for when you have data from a raw source (such as a - file or stream) that you have determined or know is really a stream of UTF - data. -

-
- -
- auto assumeText(UTFType enc = UTFType.UTF8, Chain) - ( -
-   Chain c -
- ) -
- if (isIopipe!Chain && isDynamicArray!(WindowType!Chain) && isIntegral!(ElementEncodingType!(WindowType!Chain))); -
-
-
-

If the data must be byte-swapped, then it must be mutable. Otherwise, - immutable or const data is allowed. -

-
- -

Parameters

- - - -
NameDescription
enc The assumed encoding of the text pipe.
c The chain to assume the encoding for. This MUST have a dynamic - array type for its window, and the elements must be integral.
-
-

Returns

-

An appropriate iopipe that has a window of the appropriate character type - (char, wchar, or dchar) for the assumed encoding. The window will - be set up so its elements are properly byte-ordered for the compiled - platform. -

-
- -
- - - - - - - - - - - - - -
Authors -

Steven Schveighoffer -

- -
Copyright -

Copyright Steven Schveighoffer 2011-. -

- -
License -

Boost License 1.0. (See accompanying file LICENSE_1_0.txt or copy - at http://www.boost.org/LICENSE_1_0.txt) -

- -
-

Generated using the DDOX documentation generator

-
-
- - \ No newline at end of file diff --git a/docs/iopipe/textpipe/byDelimRange.html b/docs/iopipe/textpipe/byDelimRange.html deleted file mode 100644 index e6ee12a..0000000 --- a/docs/iopipe/textpipe/byDelimRange.html +++ /dev/null @@ -1,141 +0,0 @@ - - - - - Function byDelimRange - - - - - - -
-

Function byDelimRange

Given a text iopipe, returns a range based on splitting the text by a given - code point. This has the advantage over delimitedText.asRange in that the - delimiter can be hidden. -

-
- -
- auto byDelimRange(bool KeepDelimiter = false, Chain) - ( -
-   Chain c, -
-   dchar delim -
- ) -
- if (isIopipe!Chain && is(Unqual!(ElementType!(WindowType!Chain)) == dchar)); -
-
-
-
- -

Parameters

- - - - -
NameDescription
KeepDelimiter If true, then the delimiter is included in each element - of the range (if present from the original iopipe).
c The iopipe to range-ify.
delim The dchar to use for delimiting.
-
-

Returns

-

An input range whose elements are the delimited text segments, with or - without delimiters as specified by the KeepDelimiter boolean. -

-
- -
- - - - - - - - - - - - - -
Authors -

Steven Schveighoffer -

- -
Copyright -

Copyright Steven Schveighoffer 2011-. -

- -
License -

Boost License 1.0. (See accompanying file LICENSE_1_0.txt or copy - at http://www.boost.org/LICENSE_1_0.txt) -

- -
-

Generated using the DDOX documentation generator

-
-
- - \ No newline at end of file diff --git a/docs/iopipe/textpipe/byLine.html b/docs/iopipe/textpipe/byLine.html deleted file mode 100644 index fc98a9c..0000000 --- a/docs/iopipe/textpipe/byLine.html +++ /dev/null @@ -1,133 +0,0 @@ - - - - - Function byLine - - - - - - -
-

Function byLine

A convenience wrapper for delimitedText that uses the newline character '\n' - to delimit the segments. Equivalent to delimitedText(c, '\n'); -

-
- -
- auto byLine(Chain) - ( -
-   Chain c -
- ); -
-
-
-
- -

Parameters

- - -
NameDescription
c The input text iopipe. This must have a window whose elements are - valid character types.
-
-

Returns

-

A line delimited iopipe. -

-
- -
- - - - - - - - - - - - - -
Authors -

Steven Schveighoffer -

- -
Copyright -

Copyright Steven Schveighoffer 2011-. -

- -
License -

Boost License 1.0. (See accompanying file LICENSE_1_0.txt or copy - at http://www.boost.org/LICENSE_1_0.txt) -

- -
-

Generated using the DDOX documentation generator

-
-
- - \ No newline at end of file diff --git a/docs/iopipe/textpipe/byLineRange.html b/docs/iopipe/textpipe/byLineRange.html deleted file mode 100644 index f830af3..0000000 --- a/docs/iopipe/textpipe/byLineRange.html +++ /dev/null @@ -1,135 +0,0 @@ - - - - - Function byLineRange - - - - - - -
-

Function byLineRange

Convenience wrapper for byDelimRange that uses the newline character '\n' as - the delimiter. Equivalent to `byDelimRange!(KeepDelimiter)(c, '\n'); -

-
- -
- auto byLineRange(bool KeepDelimiter = false, Chain) - ( -
-   Chain c -
- ); -
-
-
-
- -

Parameters

- - - -
NameDescription
KeepDelimiter If true, then the delimiter is included in each element - of the range (if present from the original iopipe).
c The iopipe to range-ify.
-
-

Returns

-

An input range whose elements are lines of text from the input iopipe, - with or without delimiters as specified by the KeepDelimiter boolean. -

-
- -
- - - - - - - - - - - - - -
Authors -

Steven Schveighoffer -

- -
Copyright -

Copyright Steven Schveighoffer 2011-. -

- -
License -

Boost License 1.0. (See accompanying file LICENSE_1_0.txt or copy - at http://www.boost.org/LICENSE_1_0.txt) -

- -
-

Generated using the DDOX documentation generator

-
-
- - \ No newline at end of file diff --git a/docs/iopipe/textpipe/convertText.html b/docs/iopipe/textpipe/convertText.html deleted file mode 100644 index 1dba1d0..0000000 --- a/docs/iopipe/textpipe/convertText.html +++ /dev/null @@ -1,145 +0,0 @@ - - - - - Function convertText - - - - - - -
-

Function convertText

Convert iopipe of one text type into an iopipe for another type. Performs - conversions at the code-point level. If specified, the resulting iopipe will - ensure there is a BOM at the beginning of the iopipe. This is useful if - writing to storage. -

-
- -
- auto convertText(Char, bool ensureBOM = false, Chain) - ( -
-   Chain chain -
- ) -
- if (isSomeChar!Char); -
-
-
-

If no conversion is necessary, and no BOM is required, the original iopipe - is returned. -

-
- -

Parameters

- - - - -
NameDescription
Char The desired character type in the resulting iopipe. Must be one - of char, wchar, or dchar.
ensureBOM If true, the resulting iopipe will ALWAYS have a byte order - mark at the beginning of the stream. At the moment this is - accomplished by copying all the data from the original iopipe to - the new one. A better mechanism is being worked on.
chain The source iopipe.
-
-

Returns

-

An iopipe which fulfills the given requirements. -

-
- -
- - - - - - - - - - - - - -
Authors -

Steven Schveighoffer -

- -
Copyright -

Copyright Steven Schveighoffer 2011-. -

- -
License -

Boost License 1.0. (See accompanying file LICENSE_1_0.txt or copy - at http://www.boost.org/LICENSE_1_0.txt) -

- -
-

Generated using the DDOX documentation generator

-
-
- - \ No newline at end of file diff --git a/docs/iopipe/textpipe/delimitedText.html b/docs/iopipe/textpipe/delimitedText.html deleted file mode 100644 index 89a40a6..0000000 --- a/docs/iopipe/textpipe/delimitedText.html +++ /dev/null @@ -1,141 +0,0 @@ - - - - - Function delimitedText - - - - - - -
-

Function delimitedText

Process a given text iopipe by a given code point delimeter. The only - behavior that changes from the input pipe is that extensions to the window - deliever exactly one more delimited segment of text. -

-
- -
- auto delimitedText(Chain) - ( -
-   Chain c, -
-   dchar delim = '\x0a' -
- ) -
- if (isIopipe!Chain && isSomeChar!(ElementEncodingType!(WindowType!Chain))); -
-
-
-
- -

Parameters

- - - -
NameDescription
c The input text iopipe. This must have a window whose elements are - valid character types.
delim The code point with which to delimit the text. Each extension to - the iopipe will either end on this delimiter, or will be the last - segment in the pipe.
-
-

Returns

-

An iopipe that behaves as described above. -

-
- -
- - - - - - - - - - - - - -
Authors -

Steven Schveighoffer -

- -
Copyright -

Copyright Steven Schveighoffer 2011-. -

- -
License -

Boost License 1.0. (See accompanying file LICENSE_1_0.txt or copy - at http://www.boost.org/LICENSE_1_0.txt) -

- -
-

Generated using the DDOX documentation generator

-
-
- - \ No newline at end of file diff --git a/docs/iopipe/textpipe/detectBOM.html b/docs/iopipe/textpipe/detectBOM.html deleted file mode 100644 index 24ef159..0000000 --- a/docs/iopipe/textpipe/detectBOM.html +++ /dev/null @@ -1,135 +0,0 @@ - - - - - Function detectBOM - - - - - - -
-

Function detectBOM

Using the given random access range of bytes, determine the stream width. - This does not advance the range past the BOM. -

-
- -
- UTFType detectBOM(R) - ( -
-   R r -
- ) -
- if (isRandomAccessRange!R && hasLength!R && is(ElementType!R : const(ubyte))); -
-
-
-
- -

Parameters

- - -
NameDescription
r Range in which to detect BOM. Must be a random access range with - element type of ubyte. Cannot be an infinite range.
-
-

Returns

-

Instance of UTFType indicating what the BOM decoding implies. -

-
- -
- - - - - - - - - - - - - -
Authors -

Steven Schveighoffer -

- -
Copyright -

Copyright Steven Schveighoffer 2011-. -

- -
License -

Boost License 1.0. (See accompanying file LICENSE_1_0.txt or copy - at http://www.boost.org/LICENSE_1_0.txt) -

- -
-

Generated using the DDOX documentation generator

-
-
- - \ No newline at end of file diff --git a/docs/iopipe/textpipe/encodeText.html b/docs/iopipe/textpipe/encodeText.html deleted file mode 100644 index 9f8675e..0000000 --- a/docs/iopipe/textpipe/encodeText.html +++ /dev/null @@ -1,136 +0,0 @@ - - - - - Function encodeText - - - - - - -
-

Function encodeText

Encode a given text iopipe into the desired encoding type. The resulting - iopipe's element type is ubyte, with the bytes ready to be written to a - storage device. -

-
- -
- auto encodeText(UTFType enc = UTFType.UTF8, Chain) - ( -
-   Chain c -
- ); -
-
-
-
- -

Parameters

- - - -
NameDescription
enc The encoding type to use.
c The source iopipe. Must be an iopipe where the window type's element - type is text based.
-
-

Returns

-

A ubyte iopipe that represents the encoded version of the input iopipe - based on the provided encoding. -

-
- -
- - - - - - - - - - - - - -
Authors -

Steven Schveighoffer -

- -
Copyright -

Copyright Steven Schveighoffer 2011-. -

- -
License -

Boost License 1.0. (See accompanying file LICENSE_1_0.txt or copy - at http://www.boost.org/LICENSE_1_0.txt) -

- -
-

Generated using the DDOX documentation generator

-
-
- - \ No newline at end of file diff --git a/docs/iopipe/textpipe/ensureDecodeable.html b/docs/iopipe/textpipe/ensureDecodeable.html deleted file mode 100644 index 06f8a9c..0000000 --- a/docs/iopipe/textpipe/ensureDecodeable.html +++ /dev/null @@ -1,142 +0,0 @@ - - - - - Function ensureDecodeable - - - - - - -
-

Function ensureDecodeable

Wraps a text-based iopipe to make sure all code units are decodeable. -

-
- -
- auto ensureDecodeable(Chain) - ( -
-   Chain c -
- ) -
- if (isIopipe!Chain && isSomeChar!(ElementEncodingType!(WindowType!Chain))); -
-
-
-

When an iopipe is made up of character types, in some cases a slice of the - window may not be completely decodeable. For example, a wchar iopipe may - have only one half of a surrogate pair at the end of the window. -

- -

This function generates an iopipe that only allows completely decodeable - sequences to be released to the next iopipe. -

-
- -

Parameters

- - -
NameDescription
c The iopipe whose element type is one of char, wchar, or dchar.
-
-

Returns

-

An appropriate iopipe that ensures decodeability. Note that dchar iopipes - are always decodeable, so the result is simply a return of the input. -

-
- -
- - - - - - - - - - - - - -
Authors -

Steven Schveighoffer -

- -
Copyright -

Copyright Steven Schveighoffer 2011-. -

- -
License -

Boost License 1.0. (See accompanying file LICENSE_1_0.txt or copy - at http://www.boost.org/LICENSE_1_0.txt) -

- -
-

Generated using the DDOX documentation generator

-
-
- - \ No newline at end of file diff --git a/docs/iopipe/textpipe/runEncoded.html b/docs/iopipe/textpipe/runEncoded.html deleted file mode 100644 index 10e7a73..0000000 --- a/docs/iopipe/textpipe/runEncoded.html +++ /dev/null @@ -1,155 +0,0 @@ - - - - - Function runEncoded - - - - - - -
-

Function runEncoded

Given a template function, and an input chain of encoded text data, this - function will detect the encoding of the input chain, and convert that - runtime value into a compile-time parameter to the given function. Useful - for writing code that needs to handle all the forms of text encoding. -

-
- -
- ref auto runEncoded(alias func, Chain, Args...) - ( -
-   Chain c, -
-   auto ref Args args -
- ); -
-
-
-

Use the encoding type as a parameter to assumeText to get an iopipe of - char, wchar, or dchar elements for processing. -

- -

Note that func must return the same type no matter how it's called, as the - BOM detection and calling is done at runtime. Given that there are 5 - different encodings that iopipe handles, you will have 6 instantiations of - the function, no matter whether the input contains that encoding or not. -

- -

The second version assumes that the function doesn't care what the encoding - is, but just wants to get a text iopipe with the appropriate encoding - already handled. In this case, the function will receive a chain of char, - wchar, or dchar window elements. -

-
- -

Parameters

- - - - - -
NameDescription
func The template function to call.
UnknownIsUTF8 If true, then an undetected encoding will be passed as - UTF8 to your function. Otherwise, the Unknown encoding will be passed.
c The iopipe input chain that should have encoded text in it.
args Any optional args to pass to the function.
-
-

Returns

-

The return value from func. -

-
- -
- - - - - - - - - - - - - -
Authors -

Steven Schveighoffer -

- -
Copyright -

Copyright Steven Schveighoffer 2011-. -

- -
License -

Boost License 1.0. (See accompanying file LICENSE_1_0.txt or copy - at http://www.boost.org/LICENSE_1_0.txt) -

- -
-

Generated using the DDOX documentation generator

-
-
- - \ No newline at end of file diff --git a/docs/iopipe/textpipe/runWithEncoding.html b/docs/iopipe/textpipe/runWithEncoding.html deleted file mode 100644 index 53912bf..0000000 --- a/docs/iopipe/textpipe/runWithEncoding.html +++ /dev/null @@ -1,157 +0,0 @@ - - - - - Function runWithEncoding - - - - - - -
-

Function runWithEncoding

Given a template function, and an input chain of encoded text data, this - function will detect the encoding of the input chain, and convert that - runtime value into a compile-time parameter to the given function. Useful - for writing code that needs to handle all the forms of text encoding. -

-
- -
- ref auto runWithEncoding(alias func, bool UnknownIsUTF8 = true, Chain, Args...) - ( -
-   Chain c, -
-   auto ref Args args -
- ) -
- if (isIopipe!Chain && is(typeof(detectBOM(c.window)))); -
-
-
-

Use the encoding type as a parameter to assumeText to get an iopipe of - char, wchar, or dchar elements for processing. -

- -

Note that func must return the same type no matter how it's called, as the - BOM detection and calling is done at runtime. Given that there are 5 - different encodings that iopipe handles, you will have 6 instantiations of - the function, no matter whether the input contains that encoding or not. -

- -

The second version assumes that the function doesn't care what the encoding - is, but just wants to get a text iopipe with the appropriate encoding - already handled. In this case, the function will receive a chain of char, - wchar, or dchar window elements. -

-
- -

Parameters

- - - - - -
NameDescription
func The template function to call.
UnknownIsUTF8 If true, then an undetected encoding will be passed as - UTF8 to your function. Otherwise, the Unknown encoding will be passed.
c The iopipe input chain that should have encoded text in it.
args Any optional args to pass to the function.
-
-

Returns

-

The return value from func. -

-
- -
- - - - - - - - - - - - - -
Authors -

Steven Schveighoffer -

- -
Copyright -

Copyright Steven Schveighoffer 2011-. -

- -
License -

Boost License 1.0. (See accompanying file LICENSE_1_0.txt or copy - at http://www.boost.org/LICENSE_1_0.txt) -

- -
-

Generated using the DDOX documentation generator

-
-
- - \ No newline at end of file diff --git a/docs/iopipe/textpipe/textConverter.html b/docs/iopipe/textpipe/textConverter.html deleted file mode 100644 index 742372f..0000000 --- a/docs/iopipe/textpipe/textConverter.html +++ /dev/null @@ -1,134 +0,0 @@ - - - - - Function textConverter - - - - - - -
-

Function textConverter

A converter to allow conversion into any other type of text. -

-
- -
- auto textConverter(bool ensureBOM = false, Chain) - ( -
-   Chain c -
- ); -
-
-
-

The converter does 2 things. First and foremost, it adds a read function - that allows conversion into any other width of text. The read function - converts as much text as possible into the given format, extending the base - iopipe as necessary. -

- -

The second thing that it does is potentially add a BOM character to the - beginning of the text. It was decided to add this here, since you are likely - already copying data from one iopipe into another. However, in future - versions, this capability may go away, as we can do this elsewhere with less - copying. So expect this API to change. -

-
- - -
- - - - - - - - - - - - - -
Authors -

Steven Schveighoffer -

- -
Copyright -

Copyright Steven Schveighoffer 2011-. -

- -
License -

Boost License 1.0. (See accompanying file LICENSE_1_0.txt or copy - at http://www.boost.org/LICENSE_1_0.txt) -

- -
-

Generated using the DDOX documentation generator

-
-
- - \ No newline at end of file diff --git a/docs/iopipe/textpipe/textOutput.html b/docs/iopipe/textpipe/textOutput.html deleted file mode 100644 index 5bdbdd3..0000000 --- a/docs/iopipe/textpipe/textOutput.html +++ /dev/null @@ -1,163 +0,0 @@ - - - - - Function textOutput - - - - - - -
-

Function textOutput

Take a text-based iopipe and turn it into an output range of dchar. Note - that the iopipe must be an output iopipe, not an input one. In other words, - a textOutput result doesn't output its input, it uses its input as a place - to deposit data. -

-
- -
- auto textOutput(Chain) - ( -
-   Chain c -
- ); -
-
-
-

The given iopipe window will be written to, then data that is ready to be - output is released. It is expected that the iopipe will use this mechanism - to actually know which data to output. See the example for more information. -

-
- -

Parameters

- - -
NameDescription
c The output iopipe that can be used to put dchars into.
-
-

Returns

-

An output range that can accept all forms of text data for output. -

-
-

Example

- -
import std.range : put;
-// use a writeable buffer as output.
-char[256] buffer;
-size_t written = 0;
-
-// this helps us see how many chars are written.
-struct LocalIopipe
-{
-    char[] window;
-    void release(size_t elems)
-    {
-        window.release(elems);
-        written += elems;
-    }
-    size_t extend(size_t elems) { return 0; }
-}
-auto oRange = LocalIopipe(buffer[]).textOutput;
-put(oRange, "hello, world");
-
-// written is updated whenever the iopipe is released
-assert(buffer[0 .. written] == "hello, world");
-
-
- -
- - - - - - - - - - - - - -
Authors -

Steven Schveighoffer -

- -
Copyright -

Copyright Steven Schveighoffer 2011-. -

- -
License -

Boost License 1.0. (See accompanying file LICENSE_1_0.txt or copy - at http://www.boost.org/LICENSE_1_0.txt) -

- -
-

Generated using the DDOX documentation generator

-
-
- - \ No newline at end of file diff --git a/docs/iopipe/traits.html b/docs/iopipe/traits.html deleted file mode 100644 index cd985b1..0000000 --- a/docs/iopipe/traits.html +++ /dev/null @@ -1,228 +0,0 @@ - - - - - Module iopipe.traits - - - - - - -
-

Module iopipe.traits

Base mechanisms used to determine information about iopipes. -

-
-
-

Functions

- - - - - - - - - - - - - - - - - -
NameDescription
- - extend(t, elements) - - add extend function to all arrays that allows any array to be the start of a pipe chain. -
- - release(t, elements) - - Add release function to all arrays. This will remove the given number of elements - from the front of the array -
- - window(t) - - add window property to all arrays that allows any array to be the start of a pipe. -
-
-
-

Templates

- - - - - - - - - -
NameDescription
- - implementValve - - Boilerplate for implementing a valve. If you don't define a custom valve, - you should always mixin this template in all your iopipe templates. -
-
-
-

Manifest constants

- - - - - - - - - - - - - - - - - - - - -
NameTypeDescription
- - hasValve - - - Evaluates to true if the given io pipe has a valve -
- - isIopipe - - - evaluates to true if the given type is a valid ioPipe -
- - valveCount - - - Determine the number of valves in the given pipeline -
-
-
-

Aliases

- - - - - - - - - - -
NameTypeDescription
- - WindowType - - - PropertyType!(T.init.window) - Determine the type of the window of the given pipe type. This works when the - window is a method or a field. -
-
-
- - - - - - - - - - - - - -
Authors -

Steven Schveighoffer -

- -
Copyright -

Copyright Steven Schveighoffer 2011-. -

- -
License -

Boost License 1.0. (See accompanying file LICENSE_1_0.txt or copy - at http://www.boost.org/LICENSE_1_0.txt) -

- -
-

Generated using the DDOX documentation generator

-
-
- - \ No newline at end of file diff --git a/docs/iopipe/traits/WindowType.html b/docs/iopipe/traits/WindowType.html deleted file mode 100644 index 6db97a7..0000000 --- a/docs/iopipe/traits/WindowType.html +++ /dev/null @@ -1,118 +0,0 @@ - - - - - Alias WindowType - - - - - - -
-

Alias WindowType

Determine the type of the window of the given pipe type. This works when the - window is a method or a field. -

-
- -
- alias WindowType(T) - = PropertyType!(T.init.window); -
-
-
- - -
- - - - - - - - - - - - - -
Authors -

Steven Schveighoffer -

- -
Copyright -

Copyright Steven Schveighoffer 2011-. -

- -
License -

Boost License 1.0. (See accompanying file LICENSE_1_0.txt or copy - at http://www.boost.org/LICENSE_1_0.txt) -

- -
-

Generated using the DDOX documentation generator

-
-
- - \ No newline at end of file diff --git a/docs/iopipe/traits/extend.html b/docs/iopipe/traits/extend.html deleted file mode 100644 index 552bf4c..0000000 --- a/docs/iopipe/traits/extend.html +++ /dev/null @@ -1,133 +0,0 @@ - - - - - Function extend - - - - - - -
-

Function extend

add extend function to all arrays that allows any array to be the start of a pipe chain. -

-
- -
- size_t extend(T) - ( -
-   T[] t, -
-   size_t elements -
- ); -
-
-
- -

Parameters

- - - -
NameDescription
t The array to attempt to extend.
elements ignored
-
-

Returns

-

Always returns 0 because arrays cannot be extended. -

-
- -
- - - - - - - - - - - - - -
Authors -

Steven Schveighoffer -

- -
Copyright -

Copyright Steven Schveighoffer 2011-. -

- -
License -

Boost License 1.0. (See accompanying file LICENSE_1_0.txt or copy - at http://www.boost.org/LICENSE_1_0.txt) -

- -
-

Generated using the DDOX documentation generator

-
-
- - \ No newline at end of file diff --git a/docs/iopipe/traits/hasValve.html b/docs/iopipe/traits/hasValve.html deleted file mode 100644 index 5e9e5d6..0000000 --- a/docs/iopipe/traits/hasValve.html +++ /dev/null @@ -1,117 +0,0 @@ - - - - - Enum member hasValve - - - - - - -
-

Enum member hasValve

Evaluates to true if the given io pipe has a valve -

-
- -
- enum hasValve(T) - = isIopipe!(PropertyType!(T.init.valve)); -
-
-
- - -
- - - - - - - - - - - - - -
Authors -

Steven Schveighoffer -

- -
Copyright -

Copyright Steven Schveighoffer 2011-. -

- -
License -

Boost License 1.0. (See accompanying file LICENSE_1_0.txt or copy - at http://www.boost.org/LICENSE_1_0.txt) -

- -
-

Generated using the DDOX documentation generator

-
-
- - \ No newline at end of file diff --git a/docs/iopipe/traits/implementValve.html b/docs/iopipe/traits/implementValve.html deleted file mode 100644 index ff8a795..0000000 --- a/docs/iopipe/traits/implementValve.html +++ /dev/null @@ -1,124 +0,0 @@ - - - - - Template implementValve - - - - - - -
-

Template implementValve

Boilerplate for implementing a valve. If you don't define a custom valve, - you should always mixin this template in all your iopipe templates. -

-
- -
- template implementValve(alias pipechain) - ; -
-
-
-
- -

Parameters

- - -
NameDescription
pipechain symbol that contains the upstream pipe chain.
-
- -
- - - - - - - - - - - - - -
Authors -

Steven Schveighoffer -

- -
Copyright -

Copyright Steven Schveighoffer 2011-. -

- -
License -

Boost License 1.0. (See accompanying file LICENSE_1_0.txt or copy - at http://www.boost.org/LICENSE_1_0.txt) -

- -
-

Generated using the DDOX documentation generator

-
-
- - \ No newline at end of file diff --git a/docs/iopipe/traits/isIopipe.html b/docs/iopipe/traits/isIopipe.html deleted file mode 100644 index 006036e..0000000 --- a/docs/iopipe/traits/isIopipe.html +++ /dev/null @@ -1,129 +0,0 @@ - - - - - Enum member isIopipe - - - - - - -
-

Enum member isIopipe

evaluates to true if the given type is a valid ioPipe -

-
- -
- enum isIopipe(T) - = is(typeof(() -{ -import std.range.primitives; -import std.traits; -auto t = T.init; -auto window = t.window; -alias W = typeof(window); -static assert(isNarrowString!W || isRandomAccessRange!W); -auto x = t.extend(size_t(0)); -static assert(is(typeof(x) == size_t)); -t.release(size_t(0)); -} -)); -
-
-
- - -
- - - - - - - - - - - - - -
Authors -

Steven Schveighoffer -

- -
Copyright -

Copyright Steven Schveighoffer 2011-. -

- -
License -

Boost License 1.0. (See accompanying file LICENSE_1_0.txt or copy - at http://www.boost.org/LICENSE_1_0.txt) -

- -
-

Generated using the DDOX documentation generator

-
-
- - \ No newline at end of file diff --git a/docs/iopipe/traits/release.html b/docs/iopipe/traits/release.html deleted file mode 100644 index 971f8f3..0000000 --- a/docs/iopipe/traits/release.html +++ /dev/null @@ -1,130 +0,0 @@ - - - - - Function release - - - - - - -
-

Function release

Add release function to all arrays. This will remove the given number of elements - from the front of the array -

-
- -
- void release(T) - ( -
-   ref T[] t, -
-   size_t elements -
- ); -
-
-
- -

Parameters

- - - -
NameDescription
t The array to release elements from.
elements Number of elements to release
-
- -
- - - - - - - - - - - - - -
Authors -

Steven Schveighoffer -

- -
Copyright -

Copyright Steven Schveighoffer 2011-. -

- -
License -

Boost License 1.0. (See accompanying file LICENSE_1_0.txt or copy - at http://www.boost.org/LICENSE_1_0.txt) -

- -
-

Generated using the DDOX documentation generator

-
-
- - \ No newline at end of file diff --git a/docs/iopipe/traits/valveCount.html b/docs/iopipe/traits/valveCount.html deleted file mode 100644 index 5d9b167..0000000 --- a/docs/iopipe/traits/valveCount.html +++ /dev/null @@ -1,117 +0,0 @@ - - - - - Enum member valveCount - - - - - - -
-

Enum member valveCount

Determine the number of valves in the given pipeline -

-
- -
- enum valveCount(T) - = 1 + .valveCount!(PropertyType!(T.init.valve)); -
-
-
- - -
- - - - - - - - - - - - - -
Authors -

Steven Schveighoffer -

- -
Copyright -

Copyright Steven Schveighoffer 2011-. -

- -
License -

Boost License 1.0. (See accompanying file LICENSE_1_0.txt or copy - at http://www.boost.org/LICENSE_1_0.txt) -

- -
-

Generated using the DDOX documentation generator

-
-
- - \ No newline at end of file diff --git a/docs/iopipe/traits/window.html b/docs/iopipe/traits/window.html deleted file mode 100644 index 30aa177..0000000 --- a/docs/iopipe/traits/window.html +++ /dev/null @@ -1,125 +0,0 @@ - - - - - Function window - - - - - - -
-

Function window

add window property to all arrays that allows any array to be the start of a pipe. -

-
- -
- auto window(T) - ( -
-   T[] t -
- ); -
-
-
- -

Returns

-

t -

-
- -
- - - - - - - - - - - - - -
Authors -

Steven Schveighoffer -

- -
Copyright -

Copyright Steven Schveighoffer 2011-. -

- -
License -

Boost License 1.0. (See accompanying file LICENSE_1_0.txt or copy - at http://www.boost.org/LICENSE_1_0.txt) -

- -
-

Generated using the DDOX documentation generator

-
-
- - \ No newline at end of file diff --git a/docs/iopipe/valve.html b/docs/iopipe/valve.html deleted file mode 100644 index 181423c..0000000 --- a/docs/iopipe/valve.html +++ /dev/null @@ -1,166 +0,0 @@ - - - - - Module iopipe.valve - - - - - - -
-

Module iopipe.valve

Valve mechanism to allow manipulation of wrapped iopipe pieces. -

-
-
-

Functions

- - - - - - - - - - - - - - - - - - - - - - - - - -
NameDescription
- - holdingLoop(chain) - - Create an auto-flushing valve loop. This is for use with a chain where the next - valve is a holding valve. What this does is automatically run the outlet of - the holding valve so it seamlessly flushes all data when required. -
- - holdingValve(chain) - - Create a valve that uses a holding location to pass data from the inlet to the outlet. -
- - push(c) - - Convenience mechanism to wrap a specified output pipeline with a holding - loop. It avoids having to explicitly specify the loop begin and end. -
- - simpleValve(chain) - - Create a simple valve in an iopipe chain. -
- - valveOf(pipe) - - Go down the chain of valves until you find a valve of the given type. This - is useful if you know there is a pipe you are looking for in the chain of valves. -
-
-
- - - - - - - - - - - - - -
Authors -

Steven Schveighoffer -

- -
Copyright -

Copyright Steven Schveighoffer 2011-. -

- -
License -

Boost License 1.0. (See accompanying file LICENSE_1_0.txt or copy - at http://www.boost.org/LICENSE_1_0.txt) -

- -
-

Generated using the DDOX documentation generator

-
-
- - \ No newline at end of file diff --git a/docs/iopipe/valve/holdingLoop.html b/docs/iopipe/valve/holdingLoop.html deleted file mode 100644 index 9758770..0000000 --- a/docs/iopipe/valve/holdingLoop.html +++ /dev/null @@ -1,136 +0,0 @@ - - - - - Function holdingLoop - - - - - - -
-

Function holdingLoop

Create an auto-flushing valve loop. This is for use with a chain where the next - valve is a holding valve. What this does is automatically run the outlet of - the holding valve so it seamlessly flushes all data when required. -

-
- -
- auto holdingLoop(Chain) - ( -
-   Chain chain -
- ) -
- if (hasValve!Chain && __traits(isSame, TemplateOf!(PropertyType!(Chain.init.valve)), HoldingValveInlet)); -
-
-
-

Note that this will ONLY work if the first valve in the chain is a holdingValve. -

- -

The valve loop provides the flush function which allows you to flush any - released data through the loop without extending. This function returns the - number of elements flushed. -

- -

See holdingValve for a better explanation. -

-
- - -
- - - - - - - - - - - - - -
Authors -

Steven Schveighoffer -

- -
Copyright -

Copyright Steven Schveighoffer 2011-. -

- -
License -

Boost License 1.0. (See accompanying file LICENSE_1_0.txt or copy - at http://www.boost.org/LICENSE_1_0.txt) -

- -
-

Generated using the DDOX documentation generator

-
-
- - \ No newline at end of file diff --git a/docs/iopipe/valve/holdingValve.html b/docs/iopipe/valve/holdingValve.html deleted file mode 100644 index 05145e5..0000000 --- a/docs/iopipe/valve/holdingValve.html +++ /dev/null @@ -1,168 +0,0 @@ - - - - - Function holdingValve - - - - - - -
-

Function holdingValve

Create a valve that uses a holding location to pass data from the inlet to the outlet. -

-
- -
- auto holdingValve(Chain) - ( -
-   Chain chain -
- ) -
- if (isIopipe!Chain); -
-
-
-

A holding valve allows one to manually control when data is released downstream. The holding valve consists of 3 parts: - - An input buffer, controlled by an iopipe called the inlet. This gives access to the input parameter chain. - - A holding area for data that has been released by the inlet to the outlet. This is basically a FIFO queue. - - An output buffer, controlled by an iopipe called the outlet. This is the tail end of the holding valve, and provides data downstream. -

- -

The inlet is a bit different than the normal iopipe, because it doesn't release data upstream, but rather downstream into the holding area. -

- -

The outlet, when releasing data goes upstream with the release call, giving the data back to the buffered source. -

- -

One major purpose of the holding valve is to use an autoValve to automate the downstream section, and let the user code interact directly with the inlet. -

- -

For example, this creates effectively an output stream: -

- -
import std.format;
-
-auto stream = bufferedSource!(char).holdingValve.outputFile("out.txt").autoValve;
-stream.extend(100); // create a buffer of 100 characters (at least)
-
-void outputRange(const(char)[] str)
-{
-   if(stream.window.length < str.length)
-      stream.extend(0); // extend as needed
-   stream.window[0 .. str.length] = str;
-   stream.release(str.length);
-}
-foreach(i; 0 .. 100)
-{
-   outputRange.formatValue(i);
-}
-
-
- -

Parameters

- - -
NameDescription
chain The upstream iopipe to which the valve controls access.
-
-

Returns

-

A valve assembly that gives access to the outlet via the return iopipe, and access to the inlet via the valve member. -

-
- -
- - - - - - - - - - - - - -
Authors -

Steven Schveighoffer -

- -
Copyright -

Copyright Steven Schveighoffer 2011-. -

- -
License -

Boost License 1.0. (See accompanying file LICENSE_1_0.txt or copy - at http://www.boost.org/LICENSE_1_0.txt) -

- -
-

Generated using the DDOX documentation generator

-
-
- - \ No newline at end of file diff --git a/docs/iopipe/valve/push.html b/docs/iopipe/valve/push.html deleted file mode 100644 index e7b2073..0000000 --- a/docs/iopipe/valve/push.html +++ /dev/null @@ -1,146 +0,0 @@ - - - - - Function push - - - - - - -
-

Function push

Convenience mechanism to wrap a specified output pipeline with a holding - loop. It avoids having to explicitly specify the loop begin and end. -

-
- -
- auto push(alias pipeline, bool autoFlush = true, Chain) - ( -
-   Chain c -
- ) -
- if (isIopipe!(typeof(pipeline(c.holdingValve)))); -
-
-
-
- -

Parameters

- - - - -
NameDescription
pipeline a lambda template used to generate the pipeline that will - be set up as a push chain.
autoFlush true (default) if you wish to auto-flush the push pipeline - when all references to it are gone. This moves the whole chain into a - RefCounted struct which automatically flushes any remaining data that - hasn't been flushed.
c An ioPipe to be used as the source for the data being pushed.
-
-

Returns

-

A wrapped chain that will push any data that is released as needed - (i.e. as the buffer fills up). -

-
-

Note

-

If autoFlush is false, you will need to manually call flush on the - pipeline after all processing is done. -

-
- -
- - - - - - - - - - - - - -
Authors -

Steven Schveighoffer -

- -
Copyright -

Copyright Steven Schveighoffer 2011-. -

- -
License -

Boost License 1.0. (See accompanying file LICENSE_1_0.txt or copy - at http://www.boost.org/LICENSE_1_0.txt) -

- -
-

Generated using the DDOX documentation generator

-
-
- - \ No newline at end of file diff --git a/docs/iopipe/valve/simpleValve.html b/docs/iopipe/valve/simpleValve.html deleted file mode 100644 index 1fbf4bb..0000000 --- a/docs/iopipe/valve/simpleValve.html +++ /dev/null @@ -1,135 +0,0 @@ - - - - - Function simpleValve - - - - - - -
-

Function simpleValve

Create a simple valve in an iopipe chain. -

-
- -
- auto simpleValve(Chain) - ( -
-   Chain chain -
- ) -
- if (isIopipe!Chain); -
-
-
-

This puts a transparent layer between the given chain and the next downstream iopipe to provide valve access. Calling valve on the resulting iopipe gives access to the chain argument passed in. -

-
- -

Parameters

- - -
NameDescription
chain The upstream iopipe chain to provide valve access to.
-
-

Returns

-

A new iopipe chain that provides a valve access point to the parameter. -

-
- -
- - - - - - - - - - - - - -
Authors -

Steven Schveighoffer -

- -
Copyright -

Copyright Steven Schveighoffer 2011-. -

- -
License -

Boost License 1.0. (See accompanying file LICENSE_1_0.txt or copy - at http://www.boost.org/LICENSE_1_0.txt) -

- -
-

Generated using the DDOX documentation generator

-
-
- - \ No newline at end of file diff --git a/docs/iopipe/valve/valveOf.html b/docs/iopipe/valve/valveOf.html deleted file mode 100644 index 794b710..0000000 --- a/docs/iopipe/valve/valveOf.html +++ /dev/null @@ -1,146 +0,0 @@ - - - - - Function valveOf - - - - - - -
-

Function valveOf

Go down the chain of valves until you find a valve of the given type. This - is useful if you know there is a pipe you are looking for in the chain of valves. -

-
- -
- auto valveOf(T, Chain) - ( -
-   ref Chain pipe -
- ) -
- if (isType!T && isIopipe!Chain && hasValve!Chain); -
-
- auto valveOf(alias X, Chain) - ( -
-   ref Chain pipe -
- ) -
- if (!isType!X && isIopipe!Chain && hasValve!Chain); -
-
-
-
- -

Parameters

- - - -
NameDescription
T type or template of valve you are looking for
pipe iopipe you are searching
-
-

Returns

-

a valve of the specified type or template. If such a valve doesn't - exist, a static error occurs. -

-
- -
- - - - - - - - - - - - - -
Authors -

Steven Schveighoffer -

- -
Copyright -

Copyright Steven Schveighoffer 2011-. -

- -
License -

Boost License 1.0. (See accompanying file LICENSE_1_0.txt or copy - at http://www.boost.org/LICENSE_1_0.txt) -

- -
-

Generated using the DDOX documentation generator

-
-
- - \ No newline at end of file diff --git a/docs/iopipe/zip.html b/docs/iopipe/zip.html deleted file mode 100644 index 023e705..0000000 --- a/docs/iopipe/zip.html +++ /dev/null @@ -1,177 +0,0 @@ - - - - - Module iopipe.zip - - - - - - -
-

Module iopipe.zip

Compression/decompression with iopipes. -

- -
-
-

Functions

- - - - - - - - - - - - - - - - - - - - - -
NameDescription
- - unzip(c, format) - - Wrap an iopipe that contains compressed data into an iopipe containing the - decompressed data. Data is not decompressed in place, so an extra buffer is - created to hold it. -
- - unzipSrc(c, format) - - Get a stream source that unzips an iopipe of ubytes. The source stream - should be compressed in the appropriate format. -
- - zip(c, format) - - Wrap an iopipe of ubytes into an iopipe containing the compressed data from - that input. Data is not compressed in place, so an extra buffer is created - to hold it. -
- - zipSrc(c, format) - - Get a stream source that compresses an iopipe of ubytes with the given format. -
-
-
-

Enums

- - - - - - - - - -
NameDescription
- - CompressionFormat - - Enum for specifying the desired or expected compression format. -
-
-
- - - - - - - - - - - - - -
Authors -

Steven Schveighoffer -

- -
Copyright -

Copyright Steven Schveighoffer 2017. -

- -
License -

Boost License 1.0. (See accompanying file LICENSE_1_0.txt or copy - at http://www.boost.org/LICENSE_1_0.txt) -

- -
-

Generated using the DDOX documentation generator

-
-
- - \ No newline at end of file diff --git a/docs/iopipe/zip/CompressionFormat.html b/docs/iopipe/zip/CompressionFormat.html deleted file mode 100644 index b102b77..0000000 --- a/docs/iopipe/zip/CompressionFormat.html +++ /dev/null @@ -1,146 +0,0 @@ - - - - - Enum CompressionFormat - - - - - - -
-

Enum CompressionFormat

Enum for specifying the desired or expected compression format. -

-
- -
- enum CompressionFormat - : int { ... } -
-
-
- -

Enum members

- - - - - - - - - - - - - - - - - -
NameDescription
- deflate - Deflate (zip) format -
- determineFromData - Auto-detect the format by reading the data (unzip only) -
- gzip - GZIP format -
-
- -
- - - - - - - - - - - - - -
Authors -

Steven Schveighoffer -

- -
Copyright -

Copyright Steven Schveighoffer 2017. -

- -
License -

Boost License 1.0. (See accompanying file LICENSE_1_0.txt or copy - at http://www.boost.org/LICENSE_1_0.txt) -

- -
-

Generated using the DDOX documentation generator

-
-
- - \ No newline at end of file diff --git a/docs/iopipe/zip/unzip.html b/docs/iopipe/zip/unzip.html deleted file mode 100644 index 43529aa..0000000 --- a/docs/iopipe/zip/unzip.html +++ /dev/null @@ -1,141 +0,0 @@ - - - - - Function unzip - - - - - - -
-

Function unzip

Wrap an iopipe that contains compressed data into an iopipe containing the - decompressed data. Data is not decompressed in place, so an extra buffer is - created to hold it. -

-
- -
- auto unzip(Allocator, Chain) - ( -
-   Chain c, -
-   CompressionFormat format = CompressionFormat.determineFromData -
- ) -
- if (isIopipe!Chain && is(WindowType!Chain : const(ubyte)[])); -
-
-
-
- -

Parameters

- - - - -
NameDescription
Allocator The allocator to use for buffering the data.
c The input iopipe that provides the compressed data. The window type - MUST be implicitly convertable to an array of const ubytes.
format The format of the input iopipe compressed data. Leave as - default to detect from the data itself.
-
-

Returns

-

An iopipe whose data is the decompressed ubyte version of the input stream. -

-
- -
- - - - - - - - - - - - - -
Authors -

Steven Schveighoffer -

- -
Copyright -

Copyright Steven Schveighoffer 2017. -

- -
License -

Boost License 1.0. (See accompanying file LICENSE_1_0.txt or copy - at http://www.boost.org/LICENSE_1_0.txt) -

- -
-

Generated using the DDOX documentation generator

-
-
- - \ No newline at end of file diff --git a/docs/iopipe/zip/unzipSrc.html b/docs/iopipe/zip/unzipSrc.html deleted file mode 100644 index 2bbe970..0000000 --- a/docs/iopipe/zip/unzipSrc.html +++ /dev/null @@ -1,141 +0,0 @@ - - - - - Function unzipSrc - - - - - - -
-

Function unzipSrc

Get a stream source that unzips an iopipe of ubytes. The source stream - should be compressed in the appropriate format. -

-
- -
- auto unzipSrc(Chain) - ( -
-   Chain c, -
-   CompressionFormat format = CompressionFormat.determineFromData -
- ) -
- if (isIopipe!Chain && is(WindowType!Chain : const(ubyte)[])); -
-
-
-

This is the source that unzip uses to decompress. -

-
- -

Parameters

- - - -
NameDescription
c The input iopipe that provides the compressed data. The window type - MUST be implicitly convertable to an array of const ubytes.
format The specified format of the data, leave the default to autodetect.
-
-

Returns

-

An input stream whose read method decompresses the input iopipe into - the given buffer. -

-
- -
- - - - - - - - - - - - - -
Authors -

Steven Schveighoffer -

- -
Copyright -

Copyright Steven Schveighoffer 2017. -

- -
License -

Boost License 1.0. (See accompanying file LICENSE_1_0.txt or copy - at http://www.boost.org/LICENSE_1_0.txt) -

- -
-

Generated using the DDOX documentation generator

-
-
- - \ No newline at end of file diff --git a/docs/iopipe/zip/zip.html b/docs/iopipe/zip/zip.html deleted file mode 100644 index 6aca734..0000000 --- a/docs/iopipe/zip/zip.html +++ /dev/null @@ -1,140 +0,0 @@ - - - - - Function zip - - - - - - -
-

Function zip

Wrap an iopipe of ubytes into an iopipe containing the compressed data from - that input. Data is not compressed in place, so an extra buffer is created - to hold it. -

-
- -
- auto zip(Allocator, Chain) - ( -
-   Chain c, -
-   CompressionFormat format = CompressionFormat.init -
- ) -
- if (isIopipe!Chain && is(WindowType!Chain : const(ubyte)[])); -
-
-
-
- -

Parameters

- - - - -
NameDescription
Allocator The allocator to use for buffering the data.
c The input iopipe that provides the input data. The window type - MUST be implicitly convertable to an array of const ubytes.
format The desired format of the compressed data. The default is gzip.
-
-

Returns

-

An iopipe whose data is the compressed ubyte version of the input stream. -

-
- -
- - - - - - - - - - - - - -
Authors -

Steven Schveighoffer -

- -
Copyright -

Copyright Steven Schveighoffer 2017. -

- -
License -

Boost License 1.0. (See accompanying file LICENSE_1_0.txt or copy - at http://www.boost.org/LICENSE_1_0.txt) -

- -
-

Generated using the DDOX documentation generator

-
-
- - \ No newline at end of file diff --git a/docs/iopipe/zip/zipSrc.html b/docs/iopipe/zip/zipSrc.html deleted file mode 100644 index 3936d54..0000000 --- a/docs/iopipe/zip/zipSrc.html +++ /dev/null @@ -1,140 +0,0 @@ - - - - - Function zipSrc - - - - - - -
-

Function zipSrc

Get a stream source that compresses an iopipe of ubytes with the given format. -

-
- -
- auto zipSrc(Chain) - ( -
-   Chain c, -
-   CompressionFormat format = CompressionFormat.gzip -
- ) @safe -
- if (isIopipe!Chain && is(WindowType!Chain : const(ubyte)[])); -
-
-
-

This is the source that zip uses to compress data. -

-
- -

Parameters

- - - -
NameDescription
c The input iopipe that provides the data to compress. The window type - MUST be implicitly convertable to an array of const ubytes.
format The specified format of the compressed data.
-
-

Returns

-

An input stream whose read method compresses the input iopipe data into - the given buffer. -

-
- -
- - - - - - - - - - - - - -
Authors -

Steven Schveighoffer -

- -
Copyright -

Copyright Steven Schveighoffer 2017. -

- -
License -

Boost License 1.0. (See accompanying file LICENSE_1_0.txt or copy - at http://www.boost.org/LICENSE_1_0.txt) -

- -
-

Generated using the DDOX documentation generator

-
-
- - \ No newline at end of file diff --git a/docs/prettify/prettify.css b/docs/prettify/prettify.css deleted file mode 100644 index c469f83..0000000 --- a/docs/prettify/prettify.css +++ /dev/null @@ -1,67 +0,0 @@ -/* Pretty printing styles. Used with prettify.js. */ - -/* SPAN elements with the classes below are added by prettyprint. */ -.pln { color: #222 } /* plain text */ -pre .pln, div.prototype .pln { color: #fff } /* plain text */ - -@media screen { - pre .str { color: #ffe7b6 } /* string content */ - pre .typ { color: #9ad452 } /* a type name */ - pre .lit { color: #ffe7b6 } /* a literal value */ - pre .pun, div.prototype .pun { color: #fff } - - .spc { color: #a0a } /* special token sequence */ - .str { color: #842 } /* string content */ - .kwd { color: #ffaa00 } /* a keyword */ - .com { color: #888 } /* a comment */ - .typ { color: #693 } /* a type name */ - .lit { color: #875 } /* a literal value */ - /* punctuation, lisp open bracket, lisp close bracket */ - .pun, .opn, .clo { color: #222 } - .tag { color: #ffaa00 } /* a markup tag name */ - .atn { color: #9ad452 } /* a markup attribute name */ - .atv { color: #ffe7b6 } /* a markup attribute value */ - .dec, .var { color: #aaa } /* a declaration; a variable name */ - .fun { color: red } /* a function name */ -} - -/* Use higher contrast and text-weight for printable form. */ -@media print, projection { - .spc { color: #606 } /* special token sequence */ - .str { color: #060 } - .kwd { color: #006; font-weight: bold } - .com { color: #600; font-style: italic } - .typ { color: #404; font-weight: bold } - .lit { color: #044 } - .pun, .opn, .clo { color: #440 } - .tag { color: #006; font-weight: bold } - .atn { color: #404 } - .atv { color: #060 } -} - -/* Put a border around prettyprinted code snippets. */ -pre.prettyprint, pre.code, div.prototype { - padding: 1em 0.5em; - background-color: #282822; - border: 1px solid black; - color: white; - max-width: 100em; - overflow: auto; -} - -/* Specify class=linenums on a pre to get line numbering */ -ol.linenums { margin-top: 0; margin-bottom: 0 } /* IE indents via margin-left */ -li.L0, -li.L1, -li.L2, -li.L3, -li.L5, -li.L6, -li.L7, -li.L8 { list-style-type: none } -/* Alternate shading for lines */ -li.L1, -li.L3, -li.L5, -li.L7, -li.L9 { background: #222222 } diff --git a/docs/scripts/ddox.js b/docs/scripts/ddox.js deleted file mode 100644 index b993c9a..0000000 --- a/docs/scripts/ddox.js +++ /dev/null @@ -1,138 +0,0 @@ -function setupDdox() -{ - $(".tree-view .package").click(toggleTree); - $(".tree-view .package a").click(dummy); - //$(".tree-view.collapsed").children("ul").hide(); - $("#symbolSearch").attr("tabindex", "1000"); -} - -function dummy() { window.location = $(this).attr("href"); } - -function toggleTree() -{ - node = $(this).parent(); - node.toggleClass("collapsed"); - if( node.hasClass("collapsed") ){ - node.children("ul").hide(); - } else { - node.children("ul").show(); - } - return false; -} - -var searchCounter = 0; -var lastSearchString = ""; - -function performSymbolSearch(maxlen, maxresults) -{ - if (maxlen === 'undefined') maxlen = 26; - if (maxresults === undefined) maxresults = 40; - - var searchstring = $("#symbolSearch").val().toLowerCase(); - - if (searchstring == lastSearchString) return; - lastSearchString = searchstring; - - var scnt = ++searchCounter; - $('#symbolSearchResults').hide(); - $('#symbolSearchResults').empty(); - - var terms = $.trim(searchstring).split(/\s+/); - if (terms.length == 0 || (terms.length == 1 && terms[0].length < 2)) return; - - var results = []; - for (i in symbols) { - var sym = symbols[i]; - var all_match = true; - for (j in terms) - if (sym.name.toLowerCase().indexOf(terms[j]) < 0) { - all_match = false; - break; - } - if (!all_match) continue; - - results.push(sym); - } - - function getPrefixIndex(parts) - { - for (var i = parts.length-1; i >= 0; i--) - for (j in terms) - if (parts[i].length >= terms[j].length && parts[i].substr(0, terms[j].length) == terms[j]) - return parts.length - 1 - i; - return parts.length; - } - - function compare(a, b) { - // prefer non-deprecated matches - var adep = a.attributes.indexOf("deprecated") >= 0; - var bdep = b.attributes.indexOf("deprecated") >= 0; - if (adep != bdep) return adep - bdep; - - // normalize the names - var aname = a.name.toLowerCase(); - var bname = b.name.toLowerCase(); - - var anameparts = aname.split("."); - var bnameparts = bname.split("."); - - var asname = anameparts[anameparts.length-1]; - var bsname = bnameparts[bnameparts.length-1]; - - // prefer exact matches - var aexact = terms.indexOf(asname) >= 0; - var bexact = terms.indexOf(bsname) >= 0; - if (aexact != bexact) return bexact - aexact; - - // prefer prefix matches - var apidx = getPrefixIndex(anameparts); - var bpidx = getPrefixIndex(bnameparts); - if (apidx != bpidx) return apidx - bpidx; - - // prefer elements with less nesting - if (anameparts.length < bnameparts.length) return -1; - if (anameparts.length > bnameparts.length) return 1; - - // prefer matches with a shorter name - if (asname.length < bsname.length) return -1; - if (asname.length > bsname.length) return 1; - - // sort the rest alphabetically - if (aname < bname) return -1; - if (aname > bname) return 1; - return 0; - } - - results.sort(compare); - - for (i = 0; i < results.length && i < maxresults; i++) { - var sym = results[i]; - - var el = $(document.createElement("li")); - el.addClass(sym.kind); - for (j in sym.attributes) - el.addClass(sym.attributes[j]); - - var name = sym.name; - - // compute a length limited representation of the full name - var nameparts = name.split("."); - var np = nameparts.length-1; - var shortname = "." + nameparts[np]; - while (np > 0 && nameparts[np-1].length + shortname.length <= maxlen) { - np--; - shortname = "." + nameparts[np] + shortname; - } - if (np > 0) shortname = ".." + shortname; - else shortname = shortname.substr(1); - - el.append(''+shortname+''); - $('#symbolSearchResults').append(el); - } - - if (results.length > maxresults) { - $('#symbolSearchResults').append("
  • …"+(results.length-100)+" additional results
  • "); - } - - $('#symbolSearchResults').show(); -} diff --git a/docs/scripts/jquery.js b/docs/scripts/jquery.js deleted file mode 100644 index 066d72c..0000000 --- a/docs/scripts/jquery.js +++ /dev/null @@ -1,2 +0,0 @@ -/*! jQuery v@1.8.0 jquery.com | jquery.org/license */ -(function(a,b){function G(a){var b=F[a]={};return p.each(a.split(s),function(a,c){b[c]=!0}),b}function J(a,c,d){if(d===b&&a.nodeType===1){var e="data-"+c.replace(I,"-$1").toLowerCase();d=a.getAttribute(e);if(typeof d=="string"){try{d=d==="true"?!0:d==="false"?!1:d==="null"?null:+d+""===d?+d:H.test(d)?p.parseJSON(d):d}catch(f){}p.data(a,c,d)}else d=b}return d}function K(a){var b;for(b in a){if(b==="data"&&p.isEmptyObject(a[b]))continue;if(b!=="toJSON")return!1}return!0}function ba(){return!1}function bb(){return!0}function bh(a){return!a||!a.parentNode||a.parentNode.nodeType===11}function bi(a,b){do a=a[b];while(a&&a.nodeType!==1);return a}function bj(a,b,c){b=b||0;if(p.isFunction(b))return p.grep(a,function(a,d){var e=!!b.call(a,d,a);return e===c});if(b.nodeType)return p.grep(a,function(a,d){return a===b===c});if(typeof b=="string"){var d=p.grep(a,function(a){return a.nodeType===1});if(be.test(b))return p.filter(b,d,!c);b=p.filter(b,d)}return p.grep(a,function(a,d){return p.inArray(a,b)>=0===c})}function bk(a){var b=bl.split("|"),c=a.createDocumentFragment();if(c.createElement)while(b.length)c.createElement(b.pop());return c}function bC(a,b){return a.getElementsByTagName(b)[0]||a.appendChild(a.ownerDocument.createElement(b))}function bD(a,b){if(b.nodeType!==1||!p.hasData(a))return;var c,d,e,f=p._data(a),g=p._data(b,f),h=f.events;if(h){delete g.handle,g.events={};for(c in h)for(d=0,e=h[c].length;d").appendTo(e.body),c=b.css("display");b.remove();if(c==="none"||c===""){bI=e.body.appendChild(bI||p.extend(e.createElement("iframe"),{frameBorder:0,width:0,height:0}));if(!bJ||!bI.createElement)bJ=(bI.contentWindow||bI.contentDocument).document,bJ.write(""),bJ.close();b=bJ.body.appendChild(bJ.createElement(a)),c=bH(b,"display"),e.body.removeChild(bI)}return bR[a]=c,c}function ch(a,b,c,d){var e;if(p.isArray(b))p.each(b,function(b,e){c||cd.test(a)?d(a,e):ch(a+"["+(typeof e=="object"?b:"")+"]",e,c,d)});else if(!c&&p.type(b)==="object")for(e in b)ch(a+"["+e+"]",b[e],c,d);else d(a,b)}function cy(a){return function(b,c){typeof b!="string"&&(c=b,b="*");var d,e,f,g=b.toLowerCase().split(s),h=0,i=g.length;if(p.isFunction(c))for(;h)[^>]*$|#([\w\-]*)$)/,v=/^<(\w+)\s*\/?>(?:<\/\1>|)$/,w=/^[\],:{}\s]*$/,x=/(?:^|:|,)(?:\s*\[)+/g,y=/\\(?:["\\\/bfnrt]|u[\da-fA-F]{4})/g,z=/"[^"\\\r\n]*"|true|false|null|-?(?:\d\d*\.|)\d+(?:[eE][\-+]?\d+|)/g,A=/^-ms-/,B=/-([\da-z])/gi,C=function(a,b){return(b+"").toUpperCase()},D=function(){e.addEventListener?(e.removeEventListener("DOMContentLoaded",D,!1),p.ready()):e.readyState==="complete"&&(e.detachEvent("onreadystatechange",D),p.ready())},E={};p.fn=p.prototype={constructor:p,init:function(a,c,d){var f,g,h,i;if(!a)return this;if(a.nodeType)return this.context=this[0]=a,this.length=1,this;if(typeof a=="string"){a.charAt(0)==="<"&&a.charAt(a.length-1)===">"&&a.length>=3?f=[null,a,null]:f=u.exec(a);if(f&&(f[1]||!c)){if(f[1])return c=c instanceof p?c[0]:c,i=c&&c.nodeType?c.ownerDocument||c:e,a=p.parseHTML(f[1],i,!0),v.test(f[1])&&p.isPlainObject(c)&&this.attr.call(a,c,!0),p.merge(this,a);g=e.getElementById(f[2]);if(g&&g.parentNode){if(g.id!==f[2])return d.find(a);this.length=1,this[0]=g}return this.context=e,this.selector=a,this}return!c||c.jquery?(c||d).find(a):this.constructor(c).find(a)}return p.isFunction(a)?d.ready(a):(a.selector!==b&&(this.selector=a.selector,this.context=a.context),p.makeArray(a,this))},selector:"",jquery:"1.8.0",length:0,size:function(){return this.length},toArray:function(){return k.call(this)},get:function(a){return a==null?this.toArray():a<0?this[this.length+a]:this[a]},pushStack:function(a,b,c){var d=p.merge(this.constructor(),a);return d.prevObject=this,d.context=this.context,b==="find"?d.selector=this.selector+(this.selector?" ":"")+c:b&&(d.selector=this.selector+"."+b+"("+c+")"),d},each:function(a,b){return p.each(this,a,b)},ready:function(a){return p.ready.promise().done(a),this},eq:function(a){return a=+a,a===-1?this.slice(a):this.slice(a,a+1)},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},slice:function(){return this.pushStack(k.apply(this,arguments),"slice",k.call(arguments).join(","))},map:function(a){return this.pushStack(p.map(this,function(b,c){return a.call(b,c,b)}))},end:function(){return this.prevObject||this.constructor(null)},push:j,sort:[].sort,splice:[].splice},p.fn.init.prototype=p.fn,p.extend=p.fn.extend=function(){var a,c,d,e,f,g,h=arguments[0]||{},i=1,j=arguments.length,k=!1;typeof h=="boolean"&&(k=h,h=arguments[1]||{},i=2),typeof h!="object"&&!p.isFunction(h)&&(h={}),j===i&&(h=this,--i);for(;i0)return;d.resolveWith(e,[p]),p.fn.trigger&&p(e).trigger("ready").off("ready")},isFunction:function(a){return p.type(a)==="function"},isArray:Array.isArray||function(a){return p.type(a)==="array"},isWindow:function(a){return a!=null&&a==a.window},isNumeric:function(a){return!isNaN(parseFloat(a))&&isFinite(a)},type:function(a){return a==null?String(a):E[m.call(a)]||"object"},isPlainObject:function(a){if(!a||p.type(a)!=="object"||a.nodeType||p.isWindow(a))return!1;try{if(a.constructor&&!n.call(a,"constructor")&&!n.call(a.constructor.prototype,"isPrototypeOf"))return!1}catch(c){return!1}var d;for(d in a);return d===b||n.call(a,d)},isEmptyObject:function(a){var b;for(b in a)return!1;return!0},error:function(a){throw new Error(a)},parseHTML:function(a,b,c){var d;return!a||typeof a!="string"?null:(typeof b=="boolean"&&(c=b,b=0),b=b||e,(d=v.exec(a))?[b.createElement(d[1])]:(d=p.buildFragment([a],b,c?null:[]),p.merge([],(d.cacheable?p.clone(d.fragment):d.fragment).childNodes)))},parseJSON:function(b){if(!b||typeof b!="string")return null;b=p.trim(b);if(a.JSON&&a.JSON.parse)return a.JSON.parse(b);if(w.test(b.replace(y,"@").replace(z,"]").replace(x,"")))return(new Function("return "+b))();p.error("Invalid JSON: "+b)},parseXML:function(c){var d,e;if(!c||typeof c!="string")return null;try{a.DOMParser?(e=new DOMParser,d=e.parseFromString(c,"text/xml")):(d=new ActiveXObject("Microsoft.XMLDOM"),d.async="false",d.loadXML(c))}catch(f){d=b}return(!d||!d.documentElement||d.getElementsByTagName("parsererror").length)&&p.error("Invalid XML: "+c),d},noop:function(){},globalEval:function(b){b&&r.test(b)&&(a.execScript||function(b){a.eval.call(a,b)})(b)},camelCase:function(a){return a.replace(A,"ms-").replace(B,C)},nodeName:function(a,b){return a.nodeName&&a.nodeName.toUpperCase()===b.toUpperCase()},each:function(a,c,d){var e,f=0,g=a.length,h=g===b||p.isFunction(a);if(d){if(h){for(e in a)if(c.apply(a[e],d)===!1)break}else for(;f0&&a[0]&&a[i-1]||i===0||p.isArray(a));if(j)for(;h-1)i.splice(c,1),e&&(c<=g&&g--,c<=h&&h--)}),this},has:function(a){return p.inArray(a,i)>-1},empty:function(){return i=[],this},disable:function(){return i=j=c=b,this},disabled:function(){return!i},lock:function(){return j=b,c||l.disable(),this},locked:function(){return!j},fireWith:function(a,b){return b=b||[],b=[a,b.slice?b.slice():b],i&&(!d||j)&&(e?j.push(b):k(b)),this},fire:function(){return l.fireWith(this,arguments),this},fired:function(){return!!d}};return l},p.extend({Deferred:function(a){var b=[["resolve","done",p.Callbacks("once memory"),"resolved"],["reject","fail",p.Callbacks("once memory"),"rejected"],["notify","progress",p.Callbacks("memory")]],c="pending",d={state:function(){return c},always:function(){return e.done(arguments).fail(arguments),this},then:function(){var a=arguments;return p.Deferred(function(c){p.each(b,function(b,d){var f=d[0],g=a[b];e[d[1]](p.isFunction(g)?function(){var a=g.apply(this,arguments);a&&p.isFunction(a.promise)?a.promise().done(c.resolve).fail(c.reject).progress(c.notify):c[f+"With"](this===e?c:this,[a])}:c[f])}),a=null}).promise()},promise:function(a){return typeof a=="object"?p.extend(a,d):d}},e={};return d.pipe=d.then,p.each(b,function(a,f){var g=f[2],h=f[3];d[f[1]]=g.add,h&&g.add(function(){c=h},b[a^1][2].disable,b[2][2].lock),e[f[0]]=g.fire,e[f[0]+"With"]=g.fireWith}),d.promise(e),a&&a.call(e,e),e},when:function(a){var b=0,c=k.call(arguments),d=c.length,e=d!==1||a&&p.isFunction(a.promise)?d:0,f=e===1?a:p.Deferred(),g=function(a,b,c){return function(d){b[a]=this,c[a]=arguments.length>1?k.call(arguments):d,c===h?f.notifyWith(b,c):--e||f.resolveWith(b,c)}},h,i,j;if(d>1){h=new Array(d),i=new Array(d),j=new Array(d);for(;b
    a",c=n.getElementsByTagName("*"),d=n.getElementsByTagName("a")[0],d.style.cssText="top:1px;float:left;opacity:.5";if(!c||!c.length||!d)return{};f=e.createElement("select"),g=f.appendChild(e.createElement("option")),h=n.getElementsByTagName("input")[0],b={leadingWhitespace:n.firstChild.nodeType===3,tbody:!n.getElementsByTagName("tbody").length,htmlSerialize:!!n.getElementsByTagName("link").length,style:/top/.test(d.getAttribute("style")),hrefNormalized:d.getAttribute("href")==="/a",opacity:/^0.5/.test(d.style.opacity),cssFloat:!!d.style.cssFloat,checkOn:h.value==="on",optSelected:g.selected,getSetAttribute:n.className!=="t",enctype:!!e.createElement("form").enctype,html5Clone:e.createElement("nav").cloneNode(!0).outerHTML!=="<:nav>",boxModel:e.compatMode==="CSS1Compat",submitBubbles:!0,changeBubbles:!0,focusinBubbles:!1,deleteExpando:!0,noCloneEvent:!0,inlineBlockNeedsLayout:!1,shrinkWrapBlocks:!1,reliableMarginRight:!0,boxSizingReliable:!0,pixelPosition:!1},h.checked=!0,b.noCloneChecked=h.cloneNode(!0).checked,f.disabled=!0,b.optDisabled=!g.disabled;try{delete n.test}catch(o){b.deleteExpando=!1}!n.addEventListener&&n.attachEvent&&n.fireEvent&&(n.attachEvent("onclick",m=function(){b.noCloneEvent=!1}),n.cloneNode(!0).fireEvent("onclick"),n.detachEvent("onclick",m)),h=e.createElement("input"),h.value="t",h.setAttribute("type","radio"),b.radioValue=h.value==="t",h.setAttribute("checked","checked"),h.setAttribute("name","t"),n.appendChild(h),i=e.createDocumentFragment(),i.appendChild(n.lastChild),b.checkClone=i.cloneNode(!0).cloneNode(!0).lastChild.checked,b.appendChecked=h.checked,i.removeChild(h),i.appendChild(n);if(n.attachEvent)for(k in{submit:!0,change:!0,focusin:!0})j="on"+k,l=j in n,l||(n.setAttribute(j,"return;"),l=typeof n[j]=="function"),b[k+"Bubbles"]=l;return p(function(){var c,d,f,g,h="padding:0;margin:0;border:0;display:block;overflow:hidden;",i=e.getElementsByTagName("body")[0];if(!i)return;c=e.createElement("div"),c.style.cssText="visibility:hidden;border:0;width:0;height:0;position:static;top:0;margin-top:1px",i.insertBefore(c,i.firstChild),d=e.createElement("div"),c.appendChild(d),d.innerHTML="
    t
    ",f=d.getElementsByTagName("td"),f[0].style.cssText="padding:0;margin:0;border:0;display:none",l=f[0].offsetHeight===0,f[0].style.display="",f[1].style.display="none",b.reliableHiddenOffsets=l&&f[0].offsetHeight===0,d.innerHTML="",d.style.cssText="box-sizing:border-box;-moz-box-sizing:border-box;-webkit-box-sizing:border-box;padding:1px;border:1px;display:block;width:4px;margin-top:1%;position:absolute;top:1%;",b.boxSizing=d.offsetWidth===4,b.doesNotIncludeMarginInBodyOffset=i.offsetTop!==1,a.getComputedStyle&&(b.pixelPosition=(a.getComputedStyle(d,null)||{}).top!=="1%",b.boxSizingReliable=(a.getComputedStyle(d,null)||{width:"4px"}).width==="4px",g=e.createElement("div"),g.style.cssText=d.style.cssText=h,g.style.marginRight=g.style.width="0",d.style.width="1px",d.appendChild(g),b.reliableMarginRight=!parseFloat((a.getComputedStyle(g,null)||{}).marginRight)),typeof d.style.zoom!="undefined"&&(d.innerHTML="",d.style.cssText=h+"width:1px;padding:1px;display:inline;zoom:1",b.inlineBlockNeedsLayout=d.offsetWidth===3,d.style.display="block",d.style.overflow="visible",d.innerHTML="
    ",d.firstChild.style.width="5px",b.shrinkWrapBlocks=d.offsetWidth!==3,c.style.zoom=1),i.removeChild(c),c=d=f=g=null}),i.removeChild(n),c=d=f=g=h=i=n=null,b}();var H=/^(?:\{.*\}|\[.*\])$/,I=/([A-Z])/g;p.extend({cache:{},deletedIds:[],uuid:0,expando:"jQuery"+(p.fn.jquery+Math.random()).replace(/\D/g,""),noData:{embed:!0,object:"clsid:D27CDB6E-AE6D-11cf-96B8-444553540000",applet:!0},hasData:function(a){return a=a.nodeType?p.cache[a[p.expando]]:a[p.expando],!!a&&!K(a)},data:function(a,c,d,e){if(!p.acceptData(a))return;var f,g,h=p.expando,i=typeof c=="string",j=a.nodeType,k=j?p.cache:a,l=j?a[h]:a[h]&&h;if((!l||!k[l]||!e&&!k[l].data)&&i&&d===b)return;l||(j?a[h]=l=p.deletedIds.pop()||++p.uuid:l=h),k[l]||(k[l]={},j||(k[l].toJSON=p.noop));if(typeof c=="object"||typeof c=="function")e?k[l]=p.extend(k[l],c):k[l].data=p.extend(k[l].data,c);return f=k[l],e||(f.data||(f.data={}),f=f.data),d!==b&&(f[p.camelCase(c)]=d),i?(g=f[c],g==null&&(g=f[p.camelCase(c)])):g=f,g},removeData:function(a,b,c){if(!p.acceptData(a))return;var d,e,f,g=a.nodeType,h=g?p.cache:a,i=g?a[p.expando]:p.expando;if(!h[i])return;if(b){d=c?h[i]:h[i].data;if(d){p.isArray(b)||(b in d?b=[b]:(b=p.camelCase(b),b in d?b=[b]:b=b.split(" ")));for(e=0,f=b.length;e1,null,!1))},removeData:function(a){return this.each(function(){p.removeData(this,a)})}}),p.extend({queue:function(a,b,c){var d;if(a)return b=(b||"fx")+"queue",d=p._data(a,b),c&&(!d||p.isArray(c)?d=p._data(a,b,p.makeArray(c)):d.push(c)),d||[]},dequeue:function(a,b){b=b||"fx";var c=p.queue(a,b),d=c.shift(),e=p._queueHooks(a,b),f=function(){p.dequeue(a,b)};d==="inprogress"&&(d=c.shift()),d&&(b==="fx"&&c.unshift("inprogress"),delete e.stop,d.call(a,f,e)),!c.length&&e&&e.empty.fire()},_queueHooks:function(a,b){var c=b+"queueHooks";return p._data(a,c)||p._data(a,c,{empty:p.Callbacks("once memory").add(function(){p.removeData(a,b+"queue",!0),p.removeData(a,c,!0)})})}}),p.fn.extend({queue:function(a,c){var d=2;return typeof a!="string"&&(c=a,a="fx",d--),arguments.length1)},removeAttr:function(a){return this.each(function(){p.removeAttr(this,a)})},prop:function(a,b){return p.access(this,p.prop,a,b,arguments.length>1)},removeProp:function(a){return a=p.propFix[a]||a,this.each(function(){try{this[a]=b,delete this[a]}catch(c){}})},addClass:function(a){var b,c,d,e,f,g,h;if(p.isFunction(a))return this.each(function(b){p(this).addClass(a.call(this,b,this.className))});if(a&&typeof a=="string"){b=a.split(s);for(c=0,d=this.length;c-1)d=d.replace(" "+c[f]+" "," ");e.className=a?p.trim(d):""}}}return this},toggleClass:function(a,b){var c=typeof a,d=typeof b=="boolean";return p.isFunction(a)?this.each(function(c){p(this).toggleClass(a.call(this,c,this.className,b),b)}):this.each(function(){if(c==="string"){var e,f=0,g=p(this),h=b,i=a.split(s);while(e=i[f++])h=d?h:!g.hasClass(e),g[h?"addClass":"removeClass"](e)}else if(c==="undefined"||c==="boolean")this.className&&p._data(this,"__className__",this.className),this.className=this.className||a===!1?"":p._data(this,"__className__")||""})},hasClass:function(a){var b=" "+a+" ",c=0,d=this.length;for(;c-1)return!0;return!1},val:function(a){var c,d,e,f=this[0];if(!arguments.length){if(f)return c=p.valHooks[f.type]||p.valHooks[f.nodeName.toLowerCase()],c&&"get"in c&&(d=c.get(f,"value"))!==b?d:(d=f.value,typeof d=="string"?d.replace(P,""):d==null?"":d);return}return e=p.isFunction(a),this.each(function(d){var f,g=p(this);if(this.nodeType!==1)return;e?f=a.call(this,d,g.val()):f=a,f==null?f="":typeof f=="number"?f+="":p.isArray(f)&&(f=p.map(f,function(a){return a==null?"":a+""})),c=p.valHooks[this.type]||p.valHooks[this.nodeName.toLowerCase()];if(!c||!("set"in c)||c.set(this,f,"value")===b)this.value=f})}}),p.extend({valHooks:{option:{get:function(a){var b=a.attributes.value;return!b||b.specified?a.value:a.text}},select:{get:function(a){var b,c,d,e,f=a.selectedIndex,g=[],h=a.options,i=a.type==="select-one";if(f<0)return null;c=i?f:0,d=i?f+1:h.length;for(;c=0}),c.length||(a.selectedIndex=-1),c}}},attrFn:{},attr:function(a,c,d,e){var f,g,h,i=a.nodeType;if(!a||i===3||i===8||i===2)return;if(e&&p.isFunction(p.fn[c]))return p(a)[c](d);if(typeof a.getAttribute=="undefined")return p.prop(a,c,d);h=i!==1||!p.isXMLDoc(a),h&&(c=c.toLowerCase(),g=p.attrHooks[c]||(T.test(c)?M:L));if(d!==b){if(d===null){p.removeAttr(a,c);return}return g&&"set"in g&&h&&(f=g.set(a,d,c))!==b?f:(a.setAttribute(c,""+d),d)}return g&&"get"in g&&h&&(f=g.get(a,c))!==null?f:(f=a.getAttribute(c),f===null?b:f)},removeAttr:function(a,b){var c,d,e,f,g=0;if(b&&a.nodeType===1){d=b.split(s);for(;g=0}})});var V=/^(?:textarea|input|select)$/i,W=/^([^\.]*|)(?:\.(.+)|)$/,X=/(?:^|\s)hover(\.\S+|)\b/,Y=/^key/,Z=/^(?:mouse|contextmenu)|click/,$=/^(?:focusinfocus|focusoutblur)$/,_=function(a){return p.event.special.hover?a:a.replace(X,"mouseenter$1 mouseleave$1")};p.event={add:function(a,c,d,e,f){var g,h,i,j,k,l,m,n,o,q,r;if(a.nodeType===3||a.nodeType===8||!c||!d||!(g=p._data(a)))return;d.handler&&(o=d,d=o.handler,f=o.selector),d.guid||(d.guid=p.guid++),i=g.events,i||(g.events=i={}),h=g.handle,h||(g.handle=h=function(a){return typeof p!="undefined"&&(!a||p.event.triggered!==a.type)?p.event.dispatch.apply(h.elem,arguments):b},h.elem=a),c=p.trim(_(c)).split(" ");for(j=0;j=0&&(s=s.slice(0,-1),i=!0),s.indexOf(".")>=0&&(t=s.split("."),s=t.shift(),t.sort());if((!f||p.event.customEvent[s])&&!p.event.global[s])return;c=typeof c=="object"?c[p.expando]?c:new p.Event(s,c):new p.Event(s),c.type=s,c.isTrigger=!0,c.exclusive=i,c.namespace=t.join("."),c.namespace_re=c.namespace?new RegExp("(^|\\.)"+t.join("\\.(?:.*\\.|)")+"(\\.|$)"):null,m=s.indexOf(":")<0?"on"+s:"";if(!f){h=p.cache;for(j in h)h[j].events&&h[j].events[s]&&p.event.trigger(c,d,h[j].handle.elem,!0);return}c.result=b,c.target||(c.target=f),d=d!=null?p.makeArray(d):[],d.unshift(c),n=p.event.special[s]||{};if(n.trigger&&n.trigger.apply(f,d)===!1)return;q=[[f,n.bindType||s]];if(!g&&!n.noBubble&&!p.isWindow(f)){r=n.delegateType||s,k=$.test(r+s)?f:f.parentNode;for(l=f;k;k=k.parentNode)q.push([k,r]),l=k;l===(f.ownerDocument||e)&&q.push([l.defaultView||l.parentWindow||a,r])}for(j=0;jq&&u.push({elem:this,matches:o.slice(q)});for(d=0;d0?this.on(b,null,a,c):this.trigger(b)},Y.test(b)&&(p.event.fixHooks[b]=p.event.keyHooks),Z.test(b)&&(p.event.fixHooks[b]=p.event.mouseHooks)}),function(a,b){function bd(a,b,c,d){var e=0,f=b.length;for(;e0?h(g,c,f):[]}function bf(a,c,d,e,f){var g,h,i,j,k,l,m,n,p=0,q=f.length,s=L.POS,t=new RegExp("^"+s.source+"(?!"+r+")","i"),u=function(){var a=1,c=arguments.length-2;for(;ai){m=a.slice(i,g.index),i=n,l=[c],B.test(m)&&(k&&(l=k),k=e);if(h=H.test(m))m=m.slice(0,-5).replace(B,"$&*");g.length>1&&g[0].replace(t,u),k=be(m,g[1],g[2],l,k,h)}}k?(j=j.concat(k),(m=a.slice(i))&&m!==")"?B.test(m)?bd(m,j,d,e):Z(m,c,d,e?e.concat(k):k):o.apply(d,j)):Z(a,c,d,e)}return q===1?d:Z.uniqueSort(d)}function bg(a,b,c){var d,e,f,g=[],i=0,j=D.exec(a),k=!j.pop()&&!j.pop(),l=k&&a.match(C)||[""],m=$.preFilter,n=$.filter,o=!c&&b!==h;for(;(e=l[i])!=null&&k;i++){g.push(d=[]),o&&(e=" "+e);while(e){k=!1;if(j=B.exec(e))e=e.slice(j[0].length),k=d.push({part:j.pop().replace(A," "),captures:j});for(f in n)(j=L[f].exec(e))&&(!m[f]||(j=m[f](j,b,c)))&&(e=e.slice(j.shift().length),k=d.push({part:f,captures:j}));if(!k)break}}return k||Z.error(a),g}function bh(a,b,e){var f=b.dir,g=m++;return a||(a=function(a){return a===e}),b.first?function(b,c){while(b=b[f])if(b.nodeType===1)return a(b,c)&&b}:function(b,e){var h,i=g+"."+d,j=i+"."+c;while(b=b[f])if(b.nodeType===1){if((h=b[q])===j)return b.sizset;if(typeof h=="string"&&h.indexOf(i)===0){if(b.sizset)return b}else{b[q]=j;if(a(b,e))return b.sizset=!0,b;b.sizset=!1}}}}function bi(a,b){return a?function(c,d){var e=b(c,d);return e&&a(e===!0?c:e,d)}:b}function bj(a,b,c){var d,e,f=0;for(;d=a[f];f++)$.relative[d.part]?e=bh(e,$.relative[d.part],b):(d.captures.push(b,c),e=bi(e,$.filter[d.part].apply(null,d.captures)));return e}function bk(a){return function(b,c){var d,e=0;for(;d=a[e];e++)if(d(b,c))return!0;return!1}}var c,d,e,f,g,h=a.document,i=h.documentElement,j="undefined",k=!1,l=!0,m=0,n=[].slice,o=[].push,q=("sizcache"+Math.random()).replace(".",""),r="[\\x20\\t\\r\\n\\f]",s="(?:\\\\.|[-\\w]|[^\\x00-\\xa0])+",t=s.replace("w","w#"),u="([*^$|!~]?=)",v="\\["+r+"*("+s+")"+r+"*(?:"+u+r+"*(?:(['\"])((?:\\\\.|[^\\\\])*?)\\3|("+t+")|)|)"+r+"*\\]",w=":("+s+")(?:\\((?:(['\"])((?:\\\\.|[^\\\\])*?)\\2|((?:[^,]|\\\\,|(?:,(?=[^\\[]*\\]))|(?:,(?=[^\\(]*\\))))*))\\)|)",x=":(nth|eq|gt|lt|first|last|even|odd)(?:\\((\\d*)\\)|)(?=[^-]|$)",y=r+"*([\\x20\\t\\r\\n\\f>+~])"+r+"*",z="(?=[^\\x20\\t\\r\\n\\f])(?:\\\\.|"+v+"|"+w.replace(2,7)+"|[^\\\\(),])+",A=new RegExp("^"+r+"+|((?:^|[^\\\\])(?:\\\\.)*)"+r+"+$","g"),B=new RegExp("^"+y),C=new RegExp(z+"?(?="+r+"*,|$)","g"),D=new RegExp("^(?:(?!,)(?:(?:^|,)"+r+"*"+z+")*?|"+r+"*(.*?))(\\)|$)"),E=new RegExp(z.slice(19,-6)+"\\x20\\t\\r\\n\\f>+~])+|"+y,"g"),F=/^(?:#([\w\-]+)|(\w+)|\.([\w\-]+))$/,G=/[\x20\t\r\n\f]*[+~]/,H=/:not\($/,I=/h\d/i,J=/input|select|textarea|button/i,K=/\\(?!\\)/g,L={ID:new RegExp("^#("+s+")"),CLASS:new RegExp("^\\.("+s+")"),NAME:new RegExp("^\\[name=['\"]?("+s+")['\"]?\\]"),TAG:new RegExp("^("+s.replace("[-","[-\\*")+")"),ATTR:new RegExp("^"+v),PSEUDO:new RegExp("^"+w),CHILD:new RegExp("^:(only|nth|last|first)-child(?:\\("+r+"*(even|odd|(([+-]|)(\\d*)n|)"+r+"*(?:([+-]|)"+r+"*(\\d+)|))"+r+"*\\)|)","i"),POS:new RegExp(x,"ig"),needsContext:new RegExp("^"+r+"*[>+~]|"+x,"i")},M={},N=[],O={},P=[],Q=function(a){return a.sizzleFilter=!0,a},R=function(a){return function(b){return b.nodeName.toLowerCase()==="input"&&b.type===a}},S=function(a){return function(b){var c=b.nodeName.toLowerCase();return(c==="input"||c==="button")&&b.type===a}},T=function(a){var b=!1,c=h.createElement("div");try{b=a(c)}catch(d){}return c=null,b},U=T(function(a){a.innerHTML="";var b=typeof a.lastChild.getAttribute("multiple");return b!=="boolean"&&b!=="string"}),V=T(function(a){a.id=q+0,a.innerHTML="
    ",i.insertBefore(a,i.firstChild);var b=h.getElementsByName&&h.getElementsByName(q).length===2+h.getElementsByName(q+0).length;return g=!h.getElementById(q),i.removeChild(a),b}),W=T(function(a){return a.appendChild(h.createComment("")),a.getElementsByTagName("*").length===0}),X=T(function(a){return a.innerHTML="",a.firstChild&&typeof a.firstChild.getAttribute!==j&&a.firstChild.getAttribute("href")==="#"}),Y=T(function(a){return a.innerHTML="",!a.getElementsByClassName||a.getElementsByClassName("e").length===0?!1:(a.lastChild.className="e",a.getElementsByClassName("e").length!==1)}),Z=function(a,b,c,d){c=c||[],b=b||h;var e,f,g,i,j=b.nodeType;if(j!==1&&j!==9)return[];if(!a||typeof a!="string")return c;g=ba(b);if(!g&&!d)if(e=F.exec(a))if(i=e[1]){if(j===9){f=b.getElementById(i);if(!f||!f.parentNode)return c;if(f.id===i)return c.push(f),c}else if(b.ownerDocument&&(f=b.ownerDocument.getElementById(i))&&bb(b,f)&&f.id===i)return c.push(f),c}else{if(e[2])return o.apply(c,n.call(b.getElementsByTagName(a),0)),c;if((i=e[3])&&Y&&b.getElementsByClassName)return o.apply(c,n.call(b.getElementsByClassName(i),0)),c}return bm(a,b,c,d,g)},$=Z.selectors={cacheLength:50,match:L,order:["ID","TAG"],attrHandle:{},createPseudo:Q,find:{ID:g?function(a,b,c){if(typeof b.getElementById!==j&&!c){var d=b.getElementById(a);return d&&d.parentNode?[d]:[]}}:function(a,c,d){if(typeof c.getElementById!==j&&!d){var e=c.getElementById(a);return e?e.id===a||typeof e.getAttributeNode!==j&&e.getAttributeNode("id").value===a?[e]:b:[]}},TAG:W?function(a,b){if(typeof b.getElementsByTagName!==j)return b.getElementsByTagName(a)}:function(a,b){var c=b.getElementsByTagName(a);if(a==="*"){var d,e=[],f=0;for(;d=c[f];f++)d.nodeType===1&&e.push(d);return e}return c}},relative:{">":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(a){return a[1]=a[1].replace(K,""),a[3]=(a[4]||a[5]||"").replace(K,""),a[2]==="~="&&(a[3]=" "+a[3]+" "),a.slice(0,4)},CHILD:function(a){return a[1]=a[1].toLowerCase(),a[1]==="nth"?(a[2]||Z.error(a[0]),a[3]=+(a[3]?a[4]+(a[5]||1):2*(a[2]==="even"||a[2]==="odd")),a[4]=+(a[6]+a[7]||a[2]==="odd")):a[2]&&Z.error(a[0]),a},PSEUDO:function(a){var b,c=a[4];return L.CHILD.test(a[0])?null:(c&&(b=D.exec(c))&&b.pop()&&(a[0]=a[0].slice(0,b[0].length-c.length-1),c=b[0].slice(0,-1)),a.splice(2,3,c||a[3]),a)}},filter:{ID:g?function(a){return a=a.replace(K,""),function(b){return b.getAttribute("id")===a}}:function(a){return a=a.replace(K,""),function(b){var c=typeof b.getAttributeNode!==j&&b.getAttributeNode("id");return c&&c.value===a}},TAG:function(a){return a==="*"?function(){return!0}:(a=a.replace(K,"").toLowerCase(),function(b){return b.nodeName&&b.nodeName.toLowerCase()===a})},CLASS:function(a){var b=M[a];return b||(b=M[a]=new RegExp("(^|"+r+")"+a+"("+r+"|$)"),N.push(a),N.length>$.cacheLength&&delete M[N.shift()]),function(a){return b.test(a.className||typeof a.getAttribute!==j&&a.getAttribute("class")||"")}},ATTR:function(a,b,c){return b?function(d){var e=Z.attr(d,a),f=e+"";if(e==null)return b==="!=";switch(b){case"=":return f===c;case"!=":return f!==c;case"^=":return c&&f.indexOf(c)===0;case"*=":return c&&f.indexOf(c)>-1;case"$=":return c&&f.substr(f.length-c.length)===c;case"~=":return(" "+f+" ").indexOf(c)>-1;case"|=":return f===c||f.substr(0,c.length+1)===c+"-"}}:function(b){return Z.attr(b,a)!=null}},CHILD:function(a,b,c,d){if(a==="nth"){var e=m++;return function(a){var b,f,g=0,h=a;if(c===1&&d===0)return!0;b=a.parentNode;if(b&&(b[q]!==e||!a.sizset)){for(h=b.firstChild;h;h=h.nextSibling)if(h.nodeType===1){h.sizset=++g;if(h===a)break}b[q]=e}return f=a.sizset-d,c===0?f===0:f%c===0&&f/c>=0}}return function(b){var c=b;switch(a){case"only":case"first":while(c=c.previousSibling)if(c.nodeType===1)return!1;if(a==="first")return!0;c=b;case"last":while(c=c.nextSibling)if(c.nodeType===1)return!1;return!0}}},PSEUDO:function(a,b,c,d){var e=$.pseudos[a]||$.pseudos[a.toLowerCase()];return e||Z.error("unsupported pseudo: "+a),e.sizzleFilter?e(b,c,d):e}},pseudos:{not:Q(function(a,b,c){var d=bl(a.replace(A,"$1"),b,c);return function(a){return!d(a)}}),enabled:function(a){return a.disabled===!1},disabled:function(a){return a.disabled===!0},checked:function(a){var b=a.nodeName.toLowerCase();return b==="input"&&!!a.checked||b==="option"&&!!a.selected},selected:function(a){return a.parentNode&&a.parentNode.selectedIndex,a.selected===!0},parent:function(a){return!$.pseudos.empty(a)},empty:function(a){var b;a=a.firstChild;while(a){if(a.nodeName>"@"||(b=a.nodeType)===3||b===4)return!1;a=a.nextSibling}return!0},contains:Q(function(a){return function(b){return(b.textContent||b.innerText||bc(b)).indexOf(a)>-1}}),has:Q(function(a){return function(b){return Z(a,b).length>0}}),header:function(a){return I.test(a.nodeName)},text:function(a){var b,c;return a.nodeName.toLowerCase()==="input"&&(b=a.type)==="text"&&((c=a.getAttribute("type"))==null||c.toLowerCase()===b)},radio:R("radio"),checkbox:R("checkbox"),file:R("file"),password:R("password"),image:R("image"),submit:S("submit"),reset:S("reset"),button:function(a){var b=a.nodeName.toLowerCase();return b==="input"&&a.type==="button"||b==="button"},input:function(a){return J.test(a.nodeName)},focus:function(a){var b=a.ownerDocument;return a===b.activeElement&&(!b.hasFocus||b.hasFocus())&&(!!a.type||!!a.href)},active:function(a){return a===a.ownerDocument.activeElement}},setFilters:{first:function(a,b,c){return c?a.slice(1):[a[0]]},last:function(a,b,c){var d=a.pop();return c?a:[d]},even:function(a,b,c){var d=[],e=c?1:0,f=a.length;for(;e$.cacheLength&&delete O[P.shift()],g};Z.matches=function(a,b){return Z(a,null,null,b)},Z.matchesSelector=function(a,b){return Z(b,null,null,[a]).length>0};var bm=function(a,b,e,f,g){a=a.replace(A,"$1");var h,i,j,k,l,m,p,q,r,s=a.match(C),t=a.match(E),u=b.nodeType;if(L.POS.test(a))return bf(a,b,e,f,s);if(f)h=n.call(f,0);else if(s&&s.length===1){if(t.length>1&&u===9&&!g&&(s=L.ID.exec(t[0]))){b=$.find.ID(s[1],b,g)[0];if(!b)return e;a=a.slice(t.shift().length)}q=(s=G.exec(t[0]))&&!s.index&&b.parentNode||b,r=t.pop(),m=r.split(":not")[0];for(j=0,k=$.order.length;j",a.querySelectorAll("[selected]").length||e.push("\\["+r+"*(?:checked|disabled|ismap|multiple|readonly|selected|value)"),a.querySelectorAll(":checked").length||e.push(":checked")}),T(function(a){a.innerHTML="

    ",a.querySelectorAll("[test^='']").length&&e.push("[*^$]="+r+"*(?:\"\"|'')"),a.innerHTML="",a.querySelectorAll(":enabled").length||e.push(":enabled",":disabled")}),e=e.length&&new RegExp(e.join("|")),bm=function(a,d,f,g,h){if(!g&&!h&&(!e||!e.test(a)))if(d.nodeType===9)try{return o.apply(f,n.call(d.querySelectorAll(a),0)),f}catch(i){}else if(d.nodeType===1&&d.nodeName.toLowerCase()!=="object"){var j=d.getAttribute("id"),k=j||q,l=G.test(a)&&d.parentNode||d;j?k=k.replace(c,"\\$&"):d.setAttribute("id",k);try{return o.apply(f,n.call(l.querySelectorAll(a.replace(C,"[id='"+k+"'] $&")),0)),f}catch(i){}finally{j||d.removeAttribute("id")}}return b(a,d,f,g,h)},g&&(T(function(b){a=g.call(b,"div");try{g.call(b,"[test!='']:sizzle"),f.push($.match.PSEUDO)}catch(c){}}),f=new RegExp(f.join("|")),Z.matchesSelector=function(b,c){c=c.replace(d,"='$1']");if(!ba(b)&&!f.test(c)&&(!e||!e.test(c)))try{var h=g.call(b,c);if(h||a||b.document&&b.document.nodeType!==11)return h}catch(i){}return Z(c,null,null,[b]).length>0})}(),Z.attr=p.attr,p.find=Z,p.expr=Z.selectors,p.expr[":"]=p.expr.pseudos,p.unique=Z.uniqueSort,p.text=Z.getText,p.isXMLDoc=Z.isXML,p.contains=Z.contains}(a);var bc=/Until$/,bd=/^(?:parents|prev(?:Until|All))/,be=/^.[^:#\[\.,]*$/,bf=p.expr.match.needsContext,bg={children:!0,contents:!0,next:!0,prev:!0};p.fn.extend({find:function(a){var b,c,d,e,f,g,h=this;if(typeof a!="string")return p(a).filter(function(){for(b=0,c=h.length;b0)for(e=d;e=0:p.filter(a,this).length>0:this.filter(a).length>0)},closest:function(a,b){var c,d=0,e=this.length,f=[],g=bf.test(a)||typeof a!="string"?p(a,b||this.context):0;for(;d-1:p.find.matchesSelector(c,a)){f.push(c);break}c=c.parentNode}}return f=f.length>1?p.unique(f):f,this.pushStack(f,"closest",a)},index:function(a){return a?typeof a=="string"?p.inArray(this[0],p(a)):p.inArray(a.jquery?a[0]:a,this):this[0]&&this[0].parentNode?this.prevAll().length:-1},add:function(a,b){var c=typeof a=="string"?p(a,b):p.makeArray(a&&a.nodeType?[a]:a),d=p.merge(this.get(),c);return this.pushStack(bh(c[0])||bh(d[0])?d:p.unique(d))},addBack:function(a){return this.add(a==null?this.prevObject:this.prevObject.filter(a))}}),p.fn.andSelf=p.fn.addBack,p.each({parent:function(a){var b=a.parentNode;return b&&b.nodeType!==11?b:null},parents:function(a){return p.dir(a,"parentNode")},parentsUntil:function(a,b,c){return p.dir(a,"parentNode",c)},next:function(a){return bi(a,"nextSibling")},prev:function(a){return bi(a,"previousSibling")},nextAll:function(a){return p.dir(a,"nextSibling")},prevAll:function(a){return p.dir(a,"previousSibling")},nextUntil:function(a,b,c){return p.dir(a,"nextSibling",c)},prevUntil:function(a,b,c){return p.dir(a,"previousSibling",c)},siblings:function(a){return p.sibling((a.parentNode||{}).firstChild,a)},children:function(a){return p.sibling(a.firstChild)},contents:function(a){return p.nodeName(a,"iframe")?a.contentDocument||a.contentWindow.document:p.merge([],a.childNodes)}},function(a,b){p.fn[a]=function(c,d){var e=p.map(this,b,c);return bc.test(a)||(d=c),d&&typeof d=="string"&&(e=p.filter(d,e)),e=this.length>1&&!bg[a]?p.unique(e):e,this.length>1&&bd.test(a)&&(e=e.reverse()),this.pushStack(e,a,k.call(arguments).join(","))}}),p.extend({filter:function(a,b,c){return c&&(a=":not("+a+")"),b.length===1?p.find.matchesSelector(b[0],a)?[b[0]]:[]:p.find.matches(a,b)},dir:function(a,c,d){var e=[],f=a[c];while(f&&f.nodeType!==9&&(d===b||f.nodeType!==1||!p(f).is(d)))f.nodeType===1&&e.push(f),f=f[c];return e},sibling:function(a,b){var c=[];for(;a;a=a.nextSibling)a.nodeType===1&&a!==b&&c.push(a);return c}});var bl="abbr|article|aside|audio|bdi|canvas|data|datalist|details|figcaption|figure|footer|header|hgroup|mark|meter|nav|output|progress|section|summary|time|video",bm=/ jQuery\d+="(?:null|\d+)"/g,bn=/^\s+/,bo=/<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:]+)[^>]*)\/>/gi,bp=/<([\w:]+)/,bq=/]","i"),bv=/^(?:checkbox|radio)$/,bw=/checked\s*(?:[^=]|=\s*.checked.)/i,bx=/\/(java|ecma)script/i,by=/^\s*\s*$/g,bz={option:[1,""],legend:[1,"
    ","
    "],thead:[1,"","
    "],tr:[2,"","
    "],td:[3,"","
    "],col:[2,"","
    "],area:[1,"",""],_default:[0,"",""]},bA=bk(e),bB=bA.appendChild(e.createElement("div"));bz.optgroup=bz.option,bz.tbody=bz.tfoot=bz.colgroup=bz.caption=bz.thead,bz.th=bz.td,p.support.htmlSerialize||(bz._default=[1,"X
    ","
    "]),p.fn.extend({text:function(a){return p.access(this,function(a){return a===b?p.text(this):this.empty().append((this[0]&&this[0].ownerDocument||e).createTextNode(a))},null,a,arguments.length)},wrapAll:function(a){if(p.isFunction(a))return this.each(function(b){p(this).wrapAll(a.call(this,b))});if(this[0]){var b=p(a,this[0].ownerDocument).eq(0).clone(!0);this[0].parentNode&&b.insertBefore(this[0]),b.map(function(){var a=this;while(a.firstChild&&a.firstChild.nodeType===1)a=a.firstChild;return a}).append(this)}return this},wrapInner:function(a){return p.isFunction(a)?this.each(function(b){p(this).wrapInner(a.call(this,b))}):this.each(function(){var b=p(this),c=b.contents();c.length?c.wrapAll(a):b.append(a)})},wrap:function(a){var b=p.isFunction(a);return this.each(function(c){p(this).wrapAll(b?a.call(this,c):a)})},unwrap:function(){return this.parent().each(function(){p.nodeName(this,"body")||p(this).replaceWith(this.childNodes)}).end()},append:function(){return this.domManip(arguments,!0,function(a){(this.nodeType===1||this.nodeType===11)&&this.appendChild(a)})},prepend:function(){return this.domManip(arguments,!0,function(a){(this.nodeType===1||this.nodeType===11)&&this.insertBefore(a,this.firstChild)})},before:function(){if(!bh(this[0]))return this.domManip(arguments,!1,function(a){this.parentNode.insertBefore(a,this)});if(arguments.length){var a=p.clean(arguments);return this.pushStack(p.merge(a,this),"before",this.selector)}},after:function(){if(!bh(this[0]))return this.domManip(arguments,!1,function(a){this.parentNode.insertBefore(a,this.nextSibling)});if(arguments.length){var a=p.clean(arguments);return this.pushStack(p.merge(this,a),"after",this.selector)}},remove:function(a,b){var c,d=0;for(;(c=this[d])!=null;d++)if(!a||p.filter(a,[c]).length)!b&&c.nodeType===1&&(p.cleanData(c.getElementsByTagName("*")),p.cleanData([c])),c.parentNode&&c.parentNode.removeChild(c);return this},empty:function(){var a,b=0;for(;(a=this[b])!=null;b++){a.nodeType===1&&p.cleanData(a.getElementsByTagName("*"));while(a.firstChild)a.removeChild(a.firstChild)}return this},clone:function(a,b){return a=a==null?!1:a,b=b==null?a:b,this.map(function(){return p.clone(this,a,b)})},html:function(a){return p.access(this,function(a){var c=this[0]||{},d=0,e=this.length;if(a===b)return c.nodeType===1?c.innerHTML.replace(bm,""):b;if(typeof a=="string"&&!bs.test(a)&&(p.support.htmlSerialize||!bu.test(a))&&(p.support.leadingWhitespace||!bn.test(a))&&!bz[(bp.exec(a)||["",""])[1].toLowerCase()]){a=a.replace(bo,"<$1>");try{for(;d1&&typeof j=="string"&&bw.test(j))return this.each(function(){p(this).domManip(a,c,d)});if(p.isFunction(j))return this.each(function(e){var f=p(this);a[0]=j.call(this,e,c?f.html():b),f.domManip(a,c,d)});if(this[0]){e=p.buildFragment(a,this,k),g=e.fragment,f=g.firstChild,g.childNodes.length===1&&(g=f);if(f){c=c&&p.nodeName(f,"tr");for(h=e.cacheable||l-1;i0?this.clone(!0):this).get(),p(g[e])[b](d),f=f.concat(d);return this.pushStack(f,a,g.selector)}}),p.extend({clone:function(a,b,c){var d,e,f,g;p.support.html5Clone||p.isXMLDoc(a)||!bu.test("<"+a.nodeName+">")?g=a.cloneNode(!0):(bB.innerHTML=a.outerHTML,bB.removeChild(g=bB.firstChild));if((!p.support.noCloneEvent||!p.support.noCloneChecked)&&(a.nodeType===1||a.nodeType===11)&&!p.isXMLDoc(a)){bE(a,g),d=bF(a),e=bF(g);for(f=0;d[f];++f)e[f]&&bE(d[f],e[f])}if(b){bD(a,g);if(c){d=bF(a),e=bF(g);for(f=0;d[f];++f)bD(d[f],e[f])}}return d=e=null,g},clean:function(a,b,c,d){var f,g,h,i,j,k,l,m,n,o,q,r,s=0,t=[];if(!b||typeof b.createDocumentFragment=="undefined")b=e;for(g=b===e&&bA;(h=a[s])!=null;s++){typeof h=="number"&&(h+="");if(!h)continue;if(typeof h=="string")if(!br.test(h))h=b.createTextNode(h);else{g=g||bk(b),l=l||g.appendChild(b.createElement("div")),h=h.replace(bo,"<$1>"),i=(bp.exec(h)||["",""])[1].toLowerCase(),j=bz[i]||bz._default,k=j[0],l.innerHTML=j[1]+h+j[2];while(k--)l=l.lastChild;if(!p.support.tbody){m=bq.test(h),n=i==="table"&&!m?l.firstChild&&l.firstChild.childNodes:j[1]===""&&!m?l.childNodes:[];for(f=n.length-1;f>=0;--f)p.nodeName(n[f],"tbody")&&!n[f].childNodes.length&&n[f].parentNode.removeChild(n[f])}!p.support.leadingWhitespace&&bn.test(h)&&l.insertBefore(b.createTextNode(bn.exec(h)[0]),l.firstChild),h=l.childNodes,l=g.lastChild}h.nodeType?t.push(h):t=p.merge(t,h)}l&&(g.removeChild(l),h=l=g=null);if(!p.support.appendChecked)for(s=0;(h=t[s])!=null;s++)p.nodeName(h,"input")?bG(h):typeof h.getElementsByTagName!="undefined"&&p.grep(h.getElementsByTagName("input"),bG);if(c){q=function(a){if(!a.type||bx.test(a.type))return d?d.push(a.parentNode?a.parentNode.removeChild(a):a):c.appendChild(a)};for(s=0;(h=t[s])!=null;s++)if(!p.nodeName(h,"script")||!q(h))c.appendChild(h),typeof h.getElementsByTagName!="undefined"&&(r=p.grep(p.merge([],h.getElementsByTagName("script")),q),t.splice.apply(t,[s+1,0].concat(r)),s+=r.length)}return t},cleanData:function(a,b){var c,d,e,f,g=0,h=p.expando,i=p.cache,j=p.support.deleteExpando,k=p.event.special;for(;(e=a[g])!=null;g++)if(b||p.acceptData(e)){d=e[h],c=d&&i[d];if(c){if(c.events)for(f in c.events)k[f]?p.event.remove(e,f):p.removeEvent(e,f,c.handle);i[d]&&(delete i[d],j?delete e[h]:e.removeAttribute?e.removeAttribute(h):e[h]=null,p.deletedIds.push(d))}}}}),function(){var a,b;p.uaMatch=function(a){a=a.toLowerCase();var b=/(chrome)[ \/]([\w.]+)/.exec(a)||/(webkit)[ \/]([\w.]+)/.exec(a)||/(opera)(?:.*version|)[ \/]([\w.]+)/.exec(a)||/(msie) ([\w.]+)/.exec(a)||a.indexOf("compatible")<0&&/(mozilla)(?:.*? rv:([\w.]+)|)/.exec(a)||[];return{browser:b[1]||"",version:b[2]||"0"}},a=p.uaMatch(g.userAgent),b={},a.browser&&(b[a.browser]=!0,b.version=a.version),b.webkit&&(b.safari=!0),p.browser=b,p.sub=function(){function a(b,c){return new a.fn.init(b,c)}p.extend(!0,a,this),a.superclass=this,a.fn=a.prototype=this(),a.fn.constructor=a,a.sub=this.sub,a.fn.init=function c(c,d){return d&&d instanceof p&&!(d instanceof a)&&(d=a(d)),p.fn.init.call(this,c,d,b)},a.fn.init.prototype=a.fn;var b=a(e);return a}}();var bH,bI,bJ,bK=/alpha\([^)]*\)/i,bL=/opacity=([^)]*)/,bM=/^(top|right|bottom|left)$/,bN=/^margin/,bO=new RegExp("^("+q+")(.*)$","i"),bP=new RegExp("^("+q+")(?!px)[a-z%]+$","i"),bQ=new RegExp("^([-+])=("+q+")","i"),bR={},bS={position:"absolute",visibility:"hidden",display:"block"},bT={letterSpacing:0,fontWeight:400,lineHeight:1},bU=["Top","Right","Bottom","Left"],bV=["Webkit","O","Moz","ms"],bW=p.fn.toggle;p.fn.extend({css:function(a,c){return p.access(this,function(a,c,d){return d!==b?p.style(a,c,d):p.css(a,c)},a,c,arguments.length>1)},show:function(){return bZ(this,!0)},hide:function(){return bZ(this)},toggle:function(a,b){var c=typeof a=="boolean";return p.isFunction(a)&&p.isFunction(b)?bW.apply(this,arguments):this.each(function(){(c?a:bY(this))?p(this).show():p(this).hide()})}}),p.extend({cssHooks:{opacity:{get:function(a,b){if(b){var c=bH(a,"opacity");return c===""?"1":c}}}},cssNumber:{fillOpacity:!0,fontWeight:!0,lineHeight:!0,opacity:!0,orphans:!0,widows:!0,zIndex:!0,zoom:!0},cssProps:{"float":p.support.cssFloat?"cssFloat":"styleFloat"},style:function(a,c,d,e){if(!a||a.nodeType===3||a.nodeType===8||!a.style)return;var f,g,h,i=p.camelCase(c),j=a.style;c=p.cssProps[i]||(p.cssProps[i]=bX(j,i)),h=p.cssHooks[c]||p.cssHooks[i];if(d===b)return h&&"get"in h&&(f=h.get(a,!1,e))!==b?f:j[c];g=typeof d,g==="string"&&(f=bQ.exec(d))&&(d=(f[1]+1)*f[2]+parseFloat(p.css(a,c)),g="number");if(d==null||g==="number"&&isNaN(d))return;g==="number"&&!p.cssNumber[i]&&(d+="px");if(!h||!("set"in h)||(d=h.set(a,d,e))!==b)try{j[c]=d}catch(k){}},css:function(a,c,d,e){var f,g,h,i=p.camelCase(c);return c=p.cssProps[i]||(p.cssProps[i]=bX(a.style,i)),h=p.cssHooks[c]||p.cssHooks[i],h&&"get"in h&&(f=h.get(a,!0,e)),f===b&&(f=bH(a,c)),f==="normal"&&c in bT&&(f=bT[c]),d||e!==b?(g=parseFloat(f),d||p.isNumeric(g)?g||0:f):f},swap:function(a,b,c){var d,e,f={};for(e in b)f[e]=a.style[e],a.style[e]=b[e];d=c.call(a);for(e in b)a.style[e]=f[e];return d}}),a.getComputedStyle?bH=function(a,b){var c,d,e,f,g=getComputedStyle(a,null),h=a.style;return g&&(c=g[b],c===""&&!p.contains(a.ownerDocument.documentElement,a)&&(c=p.style(a,b)),bP.test(c)&&bN.test(b)&&(d=h.width,e=h.minWidth,f=h.maxWidth,h.minWidth=h.maxWidth=h.width=c,c=g.width,h.width=d,h.minWidth=e,h.maxWidth=f)),c}:e.documentElement.currentStyle&&(bH=function(a,b){var c,d,e=a.currentStyle&&a.currentStyle[b],f=a.style;return e==null&&f&&f[b]&&(e=f[b]),bP.test(e)&&!bM.test(b)&&(c=f.left,d=a.runtimeStyle&&a.runtimeStyle.left,d&&(a.runtimeStyle.left=a.currentStyle.left),f.left=b==="fontSize"?"1em":e,e=f.pixelLeft+"px",f.left=c,d&&(a.runtimeStyle.left=d)),e===""?"auto":e}),p.each(["height","width"],function(a,b){p.cssHooks[b]={get:function(a,c,d){if(c)return a.offsetWidth!==0||bH(a,"display")!=="none"?ca(a,b,d):p.swap(a,bS,function(){return ca(a,b,d)})},set:function(a,c,d){return b$(a,c,d?b_(a,b,d,p.support.boxSizing&&p.css(a,"boxSizing")==="border-box"):0)}}}),p.support.opacity||(p.cssHooks.opacity={get:function(a,b){return bL.test((b&&a.currentStyle?a.currentStyle.filter:a.style.filter)||"")?.01*parseFloat(RegExp.$1)+"":b?"1":""},set:function(a,b){var c=a.style,d=a.currentStyle,e=p.isNumeric(b)?"alpha(opacity="+b*100+")":"",f=d&&d.filter||c.filter||"";c.zoom=1;if(b>=1&&p.trim(f.replace(bK,""))===""&&c.removeAttribute){c.removeAttribute("filter");if(d&&!d.filter)return}c.filter=bK.test(f)?f.replace(bK,e):f+" "+e}}),p(function(){p.support.reliableMarginRight||(p.cssHooks.marginRight={get:function(a,b){return p.swap(a,{display:"inline-block"},function(){if(b)return bH(a,"marginRight")})}}),!p.support.pixelPosition&&p.fn.position&&p.each(["top","left"],function(a,b){p.cssHooks[b]={get:function(a,c){if(c){var d=bH(a,b);return bP.test(d)?p(a).position()[b]+"px":d}}}})}),p.expr&&p.expr.filters&&(p.expr.filters.hidden=function(a){return a.offsetWidth===0&&a.offsetHeight===0||!p.support.reliableHiddenOffsets&&(a.style&&a.style.display||bH(a,"display"))==="none"},p.expr.filters.visible=function(a){return!p.expr.filters.hidden(a)}),p.each({margin:"",padding:"",border:"Width"},function(a,b){p.cssHooks[a+b]={expand:function(c){var d,e=typeof c=="string"?c.split(" "):[c],f={};for(d=0;d<4;d++)f[a+bU[d]+b]=e[d]||e[d-2]||e[0];return f}},bN.test(a)||(p.cssHooks[a+b].set=b$)});var cc=/%20/g,cd=/\[\]$/,ce=/\r?\n/g,cf=/^(?:color|date|datetime|datetime-local|email|hidden|month|number|password|range|search|tel|text|time|url|week)$/i,cg=/^(?:select|textarea)/i;p.fn.extend({serialize:function(){return p.param(this.serializeArray())},serializeArray:function(){return this.map(function(){return this.elements?p.makeArray(this.elements):this}).filter(function(){return this.name&&!this.disabled&&(this.checked||cg.test(this.nodeName)||cf.test(this.type))}).map(function(a,b){var c=p(this).val();return c==null?null:p.isArray(c)?p.map(c,function(a,c){return{name:b.name,value:a.replace(ce,"\r\n")}}):{name:b.name,value:c.replace(ce,"\r\n")}}).get()}}),p.param=function(a,c){var d,e=[],f=function(a,b){b=p.isFunction(b)?b():b==null?"":b,e[e.length]=encodeURIComponent(a)+"="+encodeURIComponent(b)};c===b&&(c=p.ajaxSettings&&p.ajaxSettings.traditional);if(p.isArray(a)||a.jquery&&!p.isPlainObject(a))p.each(a,function(){f(this.name,this.value)});else for(d in a)ch(d,a[d],c,f);return e.join("&").replace(cc,"+")};var ci,cj,ck=/#.*$/,cl=/^(.*?):[ \t]*([^\r\n]*)\r?$/mg,cm=/^(?:about|app|app\-storage|.+\-extension|file|res|widget):$/,cn=/^(?:GET|HEAD)$/,co=/^\/\//,cp=/\?/,cq=/)<[^<]*)*<\/script>/gi,cr=/([?&])_=[^&]*/,cs=/^([\w\+\.\-]+:)(?:\/\/([^\/?#:]*)(?::(\d+)|)|)/,ct=p.fn.load,cu={},cv={},cw=["*/"]+["*"];try{ci=f.href}catch(cx){ci=e.createElement("a"),ci.href="",ci=ci.href}cj=cs.exec(ci.toLowerCase())||[],p.fn.load=function(a,c,d){if(typeof a!="string"&&ct)return ct.apply(this,arguments);if(!this.length)return this;var e,f,g,h=this,i=a.indexOf(" ");return i>=0&&(e=a.slice(i,a.length),a=a.slice(0,i)),p.isFunction(c)?(d=c,c=b):typeof c=="object"&&(f="POST"),p.ajax({url:a,type:f,dataType:"html",data:c,complete:function(a,b){d&&h.each(d,g||[a.responseText,b,a])}}).done(function(a){g=arguments,h.html(e?p("
    ").append(a.replace(cq,"")).find(e):a)}),this},p.each("ajaxStart ajaxStop ajaxComplete ajaxError ajaxSuccess ajaxSend".split(" "),function(a,b){p.fn[b]=function(a){return this.on(b,a)}}),p.each(["get","post"],function(a,c){p[c]=function(a,d,e,f){return p.isFunction(d)&&(f=f||e,e=d,d=b),p.ajax({type:c,url:a,data:d,success:e,dataType:f})}}),p.extend({getScript:function(a,c){return p.get(a,b,c,"script")},getJSON:function(a,b,c){return p.get(a,b,c,"json")},ajaxSetup:function(a,b){return b?cA(a,p.ajaxSettings):(b=a,a=p.ajaxSettings),cA(a,b),a},ajaxSettings:{url:ci,isLocal:cm.test(cj[1]),global:!0,type:"GET",contentType:"application/x-www-form-urlencoded; charset=UTF-8",processData:!0,async:!0,accepts:{xml:"application/xml, text/xml",html:"text/html",text:"text/plain",json:"application/json, text/javascript","*":cw},contents:{xml:/xml/,html:/html/,json:/json/},responseFields:{xml:"responseXML",text:"responseText"},converters:{"* text":a.String,"text html":!0,"text json":p.parseJSON,"text xml":p.parseXML},flatOptions:{context:!0,url:!0}},ajaxPrefilter:cy(cu),ajaxTransport:cy(cv),ajax:function(a,c){function y(a,c,f,i){var k,s,t,u,w,y=c;if(v===2)return;v=2,h&&clearTimeout(h),g=b,e=i||"",x.readyState=a>0?4:0,f&&(u=cB(l,x,f));if(a>=200&&a<300||a===304)l.ifModified&&(w=x.getResponseHeader("Last-Modified"),w&&(p.lastModified[d]=w),w=x.getResponseHeader("Etag"),w&&(p.etag[d]=w)),a===304?(y="notmodified",k=!0):(k=cC(l,u),y=k.state,s=k.data,t=k.error,k=!t);else{t=y;if(!y||a)y="error",a<0&&(a=0)}x.status=a,x.statusText=""+(c||y),k?o.resolveWith(m,[s,y,x]):o.rejectWith(m,[x,y,t]),x.statusCode(r),r=b,j&&n.trigger("ajax"+(k?"Success":"Error"),[x,l,k?s:t]),q.fireWith(m,[x,y]),j&&(n.trigger("ajaxComplete",[x,l]),--p.active||p.event.trigger("ajaxStop"))}typeof a=="object"&&(c=a,a=b),c=c||{};var d,e,f,g,h,i,j,k,l=p.ajaxSetup({},c),m=l.context||l,n=m!==l&&(m.nodeType||m instanceof p)?p(m):p.event,o=p.Deferred(),q=p.Callbacks("once memory"),r=l.statusCode||{},t={},u={},v=0,w="canceled",x={readyState:0,setRequestHeader:function(a,b){if(!v){var c=a.toLowerCase();a=u[c]=u[c]||a,t[a]=b}return this},getAllResponseHeaders:function(){return v===2?e:null},getResponseHeader:function(a){var c;if(v===2){if(!f){f={};while(c=cl.exec(e))f[c[1].toLowerCase()]=c[2]}c=f[a.toLowerCase()]}return c===b?null:c},overrideMimeType:function(a){return v||(l.mimeType=a),this},abort:function(a){return a=a||w,g&&g.abort(a),y(0,a),this}};o.promise(x),x.success=x.done,x.error=x.fail,x.complete=q.add,x.statusCode=function(a){if(a){var b;if(v<2)for(b in a)r[b]=[r[b],a[b]];else b=a[x.status],x.always(b)}return this},l.url=((a||l.url)+"").replace(ck,"").replace(co,cj[1]+"//"),l.dataTypes=p.trim(l.dataType||"*").toLowerCase().split(s),l.crossDomain==null&&(i=cs.exec(l.url.toLowerCase()),l.crossDomain=!(!i||i[1]==cj[1]&&i[2]==cj[2]&&(i[3]||(i[1]==="http:"?80:443))==(cj[3]||(cj[1]==="http:"?80:443)))),l.data&&l.processData&&typeof l.data!="string"&&(l.data=p.param(l.data,l.traditional)),cz(cu,l,c,x);if(v===2)return x;j=l.global,l.type=l.type.toUpperCase(),l.hasContent=!cn.test(l.type),j&&p.active++===0&&p.event.trigger("ajaxStart");if(!l.hasContent){l.data&&(l.url+=(cp.test(l.url)?"&":"?")+l.data,delete l.data),d=l.url;if(l.cache===!1){var z=p.now(),A=l.url.replace(cr,"$1_="+z);l.url=A+(A===l.url?(cp.test(l.url)?"&":"?")+"_="+z:"")}}(l.data&&l.hasContent&&l.contentType!==!1||c.contentType)&&x.setRequestHeader("Content-Type",l.contentType),l.ifModified&&(d=d||l.url,p.lastModified[d]&&x.setRequestHeader("If-Modified-Since",p.lastModified[d]),p.etag[d]&&x.setRequestHeader("If-None-Match",p.etag[d])),x.setRequestHeader("Accept",l.dataTypes[0]&&l.accepts[l.dataTypes[0]]?l.accepts[l.dataTypes[0]]+(l.dataTypes[0]!=="*"?", "+cw+"; q=0.01":""):l.accepts["*"]);for(k in l.headers)x.setRequestHeader(k,l.headers[k]);if(!l.beforeSend||l.beforeSend.call(m,x,l)!==!1&&v!==2){w="abort";for(k in{success:1,error:1,complete:1})x[k](l[k]);g=cz(cv,l,c,x);if(!g)y(-1,"No Transport");else{x.readyState=1,j&&n.trigger("ajaxSend",[x,l]),l.async&&l.timeout>0&&(h=setTimeout(function(){x.abort("timeout")},l.timeout));try{v=1,g.send(t,y)}catch(B){if(v<2)y(-1,B);else throw B}}return x}return x.abort()},active:0,lastModified:{},etag:{}});var cD=[],cE=/\?/,cF=/(=)\?(?=&|$)|\?\?/,cG=p.now();p.ajaxSetup({jsonp:"callback",jsonpCallback:function(){var a=cD.pop()||p.expando+"_"+cG++;return this[a]=!0,a}}),p.ajaxPrefilter("json jsonp",function(c,d,e){var f,g,h,i=c.data,j=c.url,k=c.jsonp!==!1,l=k&&cF.test(j),m=k&&!l&&typeof i=="string"&&!(c.contentType||"").indexOf("application/x-www-form-urlencoded")&&cF.test(i);if(c.dataTypes[0]==="jsonp"||l||m)return f=c.jsonpCallback=p.isFunction(c.jsonpCallback)?c.jsonpCallback():c.jsonpCallback,g=a[f],l?c.url=j.replace(cF,"$1"+f):m?c.data=i.replace(cF,"$1"+f):k&&(c.url+=(cE.test(j)?"&":"?")+c.jsonp+"="+f),c.converters["script json"]=function(){return h||p.error(f+" was not called"),h[0]},c.dataTypes[0]="json",a[f]=function(){h=arguments},e.always(function(){a[f]=g,c[f]&&(c.jsonpCallback=d.jsonpCallback,cD.push(f)),h&&p.isFunction(g)&&g(h[0]),h=g=b}),"script"}),p.ajaxSetup({accepts:{script:"text/javascript, application/javascript, application/ecmascript, application/x-ecmascript"},contents:{script:/javascript|ecmascript/},converters:{"text script":function(a){return p.globalEval(a),a}}}),p.ajaxPrefilter("script",function(a){a.cache===b&&(a.cache=!1),a.crossDomain&&(a.type="GET",a.global=!1)}),p.ajaxTransport("script",function(a){if(a.crossDomain){var c,d=e.head||e.getElementsByTagName("head")[0]||e.documentElement;return{send:function(f,g){c=e.createElement("script"),c.async="async",a.scriptCharset&&(c.charset=a.scriptCharset),c.src=a.url,c.onload=c.onreadystatechange=function(a,e){if(e||!c.readyState||/loaded|complete/.test(c.readyState))c.onload=c.onreadystatechange=null,d&&c.parentNode&&d.removeChild(c),c=b,e||g(200,"success")},d.insertBefore(c,d.firstChild)},abort:function(){c&&c.onload(0,1)}}}});var cH,cI=a.ActiveXObject?function(){for(var a in cH)cH[a](0,1)}:!1,cJ=0;p.ajaxSettings.xhr=a.ActiveXObject?function(){return!this.isLocal&&cK()||cL()}:cK,function(a){p.extend(p.support,{ajax:!!a,cors:!!a&&"withCredentials"in a})}(p.ajaxSettings.xhr()),p.support.ajax&&p.ajaxTransport(function(c){if(!c.crossDomain||p.support.cors){var d;return{send:function(e,f){var g,h,i=c.xhr();c.username?i.open(c.type,c.url,c.async,c.username,c.password):i.open(c.type,c.url,c.async);if(c.xhrFields)for(h in c.xhrFields)i[h]=c.xhrFields[h];c.mimeType&&i.overrideMimeType&&i.overrideMimeType(c.mimeType),!c.crossDomain&&!e["X-Requested-With"]&&(e["X-Requested-With"]="XMLHttpRequest");try{for(h in e)i.setRequestHeader(h,e[h])}catch(j){}i.send(c.hasContent&&c.data||null),d=function(a,e){var h,j,k,l,m;try{if(d&&(e||i.readyState===4)){d=b,g&&(i.onreadystatechange=p.noop,cI&&delete cH[g]);if(e)i.readyState!==4&&i.abort();else{h=i.status,k=i.getAllResponseHeaders(),l={},m=i.responseXML,m&&m.documentElement&&(l.xml=m);try{l.text=i.responseText}catch(a){}try{j=i.statusText}catch(n){j=""}!h&&c.isLocal&&!c.crossDomain?h=l.text?200:404:h===1223&&(h=204)}}}catch(o){e||f(-1,o)}l&&f(h,j,l,k)},c.async?i.readyState===4?setTimeout(d,0):(g=++cJ,cI&&(cH||(cH={},p(a).unload(cI)),cH[g]=d),i.onreadystatechange=d):d()},abort:function(){d&&d(0,1)}}}});var cM,cN,cO=/^(?:toggle|show|hide)$/,cP=new RegExp("^(?:([-+])=|)("+q+")([a-z%]*)$","i"),cQ=/queueHooks$/,cR=[cX],cS={"*":[function(a,b){var c,d,e,f=this.createTween(a,b),g=cP.exec(b),h=f.cur(),i=+h||0,j=1;if(g){c=+g[2],d=g[3]||(p.cssNumber[a]?"":"px");if(d!=="px"&&i){i=p.css(f.elem,a,!0)||c||1;do e=j=j||".5",i=i/j,p.style(f.elem,a,i+d),j=f.cur()/h;while(j!==1&&j!==e)}f.unit=d,f.start=i,f.end=g[1]?i+(g[1]+1)*c:c}return f}]};p.Animation=p.extend(cV,{tweener:function(a,b){p.isFunction(a)?(b=a,a=["*"]):a=a.split(" ");var c,d=0,e=a.length;for(;d-1,j={},k={},l,m;i?(k=e.position(),l=k.top,m=k.left):(l=parseFloat(g)||0,m=parseFloat(h)||0),p.isFunction(b)&&(b=b.call(a,c,f)),b.top!=null&&(j.top=b.top-f.top+l),b.left!=null&&(j.left=b.left-f.left+m),"using"in b?b.using.call(a,j):e.css(j)}},p.fn.extend({position:function(){if(!this[0])return;var a=this[0],b=this.offsetParent(),c=this.offset(),d=c$.test(b[0].nodeName)?{top:0,left:0}:b.offset();return c.top-=parseFloat(p.css(a,"marginTop"))||0,c.left-=parseFloat(p.css(a,"marginLeft"))||0,d.top+=parseFloat(p.css(b[0],"borderTopWidth"))||0,d.left+=parseFloat(p.css(b[0],"borderLeftWidth"))||0,{top:c.top-d.top,left:c.left-d.left}},offsetParent:function(){return this.map(function(){var a=this.offsetParent||e.body;while(a&&!c$.test(a.nodeName)&&p.css(a,"position")==="static")a=a.offsetParent;return a||e.body})}}),p.each({scrollLeft:"pageXOffset",scrollTop:"pageYOffset"},function(a,c){var d=/Y/.test(c);p.fn[a]=function(e){return p.access(this,function(a,e,f){var g=c_(a);if(f===b)return g?c in g?g[c]:g.document.documentElement[e]:a[e];g?g.scrollTo(d?p(g).scrollLeft():f,d?f:p(g).scrollTop()):a[e]=f},a,e,arguments.length,null)}}),p.each({Height:"height",Width:"width"},function(a,c){p.each({padding:"inner"+a,content:c,"":"outer"+a},function(d,e){p.fn[e]=function(e,f){var g=arguments.length&&(d||typeof e!="boolean"),h=d||(e===!0||f===!0?"margin":"border");return p.access(this,function(c,d,e){var f;return p.isWindow(c)?c.document.documentElement["client"+a]:c.nodeType===9?(f=c.documentElement,Math.max(c.body["scroll"+a],f["scroll"+a],c.body["offset"+a],f["offset"+a],f["client"+a])):e===b?p.css(c,d,e,h):p.style(c,d,e,h)},c,g?e:b,g)}})}),a.jQuery=a.$=p,typeof define=="function"&&define.amd&&define.amd.jQuery&&define("jquery",[],function(){return p})})(window); \ No newline at end of file diff --git a/docs/sitemap.xml b/docs/sitemap.xml deleted file mode 100644 index 77351f5..0000000 --- a/docs/sitemap.xml +++ /dev/null @@ -1,103 +0,0 @@ - - -http://127.0.0.1/index.html -http://127.0.0.1/iopipe/buffer.html -http://127.0.0.1/iopipe/buffer/AllocatedBuffer.html -http://127.0.0.1/iopipe/buffer/AllocatedBuffer._allocator.html -http://127.0.0.1/iopipe/buffer/AllocatedBuffer.allocator.html -http://127.0.0.1/iopipe/buffer/AllocatedBuffer.avail.html -http://127.0.0.1/iopipe/buffer/AllocatedBuffer.capacity.html -http://127.0.0.1/iopipe/buffer/AllocatedBuffer.extend.html -http://127.0.0.1/iopipe/buffer/AllocatedBuffer.releaseBack.html -http://127.0.0.1/iopipe/buffer/AllocatedBuffer.releaseFront.html -http://127.0.0.1/iopipe/buffer/AllocatedBuffer.this.html -http://127.0.0.1/iopipe/buffer/AllocatedBuffer.window.html -http://127.0.0.1/iopipe/buffer/GCNoPointerAllocator.html -http://127.0.0.1/iopipe/buffer/GCNoPointerAllocator.allocate.html -http://127.0.0.1/iopipe/buffer/GCNoPointerAllocator.expand.html -http://127.0.0.1/iopipe/buffer/GCNoPointerAllocator.goodAllocSize.html -http://127.0.0.1/iopipe/buffer/GCNoPointerAllocator.instance.html -http://127.0.0.1/iopipe/buffer/RingBuffer.html -http://127.0.0.1/iopipe/buffer/RingBuffer.avail.html -http://127.0.0.1/iopipe/buffer/RingBuffer.capacity.html -http://127.0.0.1/iopipe/buffer/RingBuffer.extend.html -http://127.0.0.1/iopipe/buffer/RingBuffer.releaseBack.html -http://127.0.0.1/iopipe/buffer/RingBuffer.releaseFront.html -http://127.0.0.1/iopipe/buffer/RingBuffer.window.html -http://127.0.0.1/iopipe/bufpipe.html -http://127.0.0.1/iopipe/bufpipe/arrayCastPipe.html -http://127.0.0.1/iopipe/bufpipe/asElemRange.html -http://127.0.0.1/iopipe/bufpipe/asInputRange.html -http://127.0.0.1/iopipe/bufpipe/bufd.html -http://127.0.0.1/iopipe/bufpipe/bufd.html -http://127.0.0.1/iopipe/bufpipe/byteSwapper.html -http://127.0.0.1/iopipe/bufpipe/ensureElems.html -http://127.0.0.1/iopipe/bufpipe/iosrc.html -http://127.0.0.1/iopipe/bufpipe/outputPipe.html -http://127.0.0.1/iopipe/bufpipe/process.html -http://127.0.0.1/iopipe/bufpipe/rbufd.html -http://127.0.0.1/iopipe/bufpipe/rbufd.html -http://127.0.0.1/iopipe/bufpipe/SimplePipe.html -http://127.0.0.1/iopipe/bufpipe/SimplePipe.chain.html -http://127.0.0.1/iopipe/bufpipe/SimplePipe.extend.html -http://127.0.0.1/iopipe/bufpipe/SimplePipe.release.html -http://127.0.0.1/iopipe/bufpipe/SimplePipe.this.html -http://127.0.0.1/iopipe/bufpipe/SimplePipe.valve.html -http://127.0.0.1/iopipe/bufpipe/SimplePipe.window.html -http://127.0.0.1/iopipe/bufpipe/writeBuf.html -http://127.0.0.1/iopipe/refc.html -http://127.0.0.1/iopipe/refc/RefCounted.html -http://127.0.0.1/iopipe/refc/RefCounted._get.html -http://127.0.0.1/iopipe/refc/RefCounted.opAssign.html -http://127.0.0.1/iopipe/refc/RefCounted.opAssign.html -http://127.0.0.1/iopipe/refc/RefCounted.this.html -http://127.0.0.1/iopipe/refc/refCounted.html -http://127.0.0.1/iopipe/stream.html -http://127.0.0.1/iopipe/stream/IODev.html -http://127.0.0.1/iopipe/stream/NullDev.html -http://127.0.0.1/iopipe/stream/NullDev.read.html -http://127.0.0.1/iopipe/stream/nullDev.html -http://127.0.0.1/iopipe/stream/openDev.html -http://127.0.0.1/iopipe/stream/openDev.html -http://127.0.0.1/iopipe/stream/ZeroDev.html -http://127.0.0.1/iopipe/stream/zeroDev.html -http://127.0.0.1/iopipe/textpipe.html -http://127.0.0.1/iopipe/textpipe/assumeText.html -http://127.0.0.1/iopipe/textpipe/byDelimRange.html -http://127.0.0.1/iopipe/textpipe/byLine.html -http://127.0.0.1/iopipe/textpipe/byLineRange.html -http://127.0.0.1/iopipe/textpipe/CodeUnit.html -http://127.0.0.1/iopipe/textpipe/convertText.html -http://127.0.0.1/iopipe/textpipe/delimitedText.html -http://127.0.0.1/iopipe/textpipe/detectBOM.html -http://127.0.0.1/iopipe/textpipe/encodeText.html -http://127.0.0.1/iopipe/textpipe/ensureDecodeable.html -http://127.0.0.1/iopipe/textpipe/runEncoded.html -http://127.0.0.1/iopipe/textpipe/runWithEncoding.html -http://127.0.0.1/iopipe/textpipe/textConverter.html -http://127.0.0.1/iopipe/textpipe/textOutput.html -http://127.0.0.1/iopipe/textpipe/UTFType.html -http://127.0.0.1/iopipe/traits.html -http://127.0.0.1/iopipe/traits/extend.html -http://127.0.0.1/iopipe/traits/hasValve.html -http://127.0.0.1/iopipe/traits/implementValve.html -http://127.0.0.1/iopipe/traits/isIopipe.html -http://127.0.0.1/iopipe/traits/release.html -http://127.0.0.1/iopipe/traits/valveCount.html -http://127.0.0.1/iopipe/traits/window.html -http://127.0.0.1/iopipe/traits/WindowType.html -http://127.0.0.1/iopipe/valve.html -http://127.0.0.1/iopipe/valve/holdingLoop.html -http://127.0.0.1/iopipe/valve/holdingValve.html -http://127.0.0.1/iopipe/valve/push.html -http://127.0.0.1/iopipe/valve/simpleValve.html -http://127.0.0.1/iopipe/valve/valveOf.html -http://127.0.0.1/iopipe/valve/valveOf.html -http://127.0.0.1/iopipe/zip.html -http://127.0.0.1/iopipe/zip/CompressionFormat.html -http://127.0.0.1/iopipe/zip/unzip.html -http://127.0.0.1/iopipe/zip/unzipSrc.html -http://127.0.0.1/iopipe/zip/zip.html -http://127.0.0.1/iopipe/zip/zipSrc.html -http://127.0.0.1/iopipe.html - diff --git a/docs/styles/ddox.css b/docs/styles/ddox.css deleted file mode 100644 index 8b76030..0000000 --- a/docs/styles/ddox.css +++ /dev/null @@ -1,162 +0,0 @@ -body { - margin: 0; - padding: 0; - font-family: "HelveticaNeue-Light", "Helvetica Neue Light", "Helvetica Neue", "Segoe UI", "Roboto Sans", "Open Sans", sans-serif; - font-size: 9.5pt; - display: flex; -} - -h1, h2, h3 { font-weight: lighter; } -h1 { margin-top: -5pt; } -h2 { margin-top: 2em; } -h3 { margin-top: 1.5em; } - -a { color: #13e; text-decoration: none; } -a:hover { color: #48f; text-decoration: underline; } - -table { border-collapse: collapse; } -th, td { padding: 0 10pt; vertical-align: top; } -th:first-child, td:first-child { padding-left: 0 } -th { text-align: left; font-weight: normal; font-style: italic;} -tr { border-bottom: 1px dashed #ddd; vertical-align: top; } -col.caption { min-width: 150pt; } - -p.faint { color: #ccc; } -span.tableEntryAnnotation { color: #888; } - -#main-nav, #main-contents, #symbolSearchResults, #symbolSearch { - -webkit-box-sizing: border-box; - -moz-box-sizing: border-box; - box-sizing: border-box; -} - -#main-nav { - vertical-align: top; - font-size: 9.5pt; - padding: 2em 1.5em; - min-width: 16em; - background: linear-gradient(#ddd, #fff), linear-gradient(90deg, rgba(255,255,255,1), rgba(255,255,255,0)), linear-gradient(#eee, #fff); - background-size: 1px 100%, 100% 100%, 100% 100%; - background-position: 100% 0, 0 0, 0 0; - background-repeat: no-repeat, no-repeat; -} - -#main-contents { - vertical-align: top; - font-size: 9.5pt; - padding: 2em; - flex-grow: 1; -} - -#symbolSearchPane form { margin-bottom: 1.5em; } -#symbolSearch { width: 100%; } -#symbolSearchResults { - position: absolute; - padding-right: 0.5em; - margin: 0; - margin-top: -1.5em; - background: white; - min-width: 20em; - border: 1px solid #ddd; - box-shadow: 0px 5px 20px 0 rgba(0,0,0,0.5); -} -.symbolList { - list-style: none; - padding: 0; - overflow: hidden; -} -.symbolList li { - background-repeat: no-repeat; - background-position: 0 1pt; - padding-left: 18px; -} - -.searchResults.symbolList li { background-position: 0 5pt; } -.searchResults h2 { margin-bottom: 0; margin-top: 1em; } - -.symbolList .deprecated a { color: gray; } -.symbolList .module { background-image: url(../images/ddox/module.png); } -.symbolList .functiondeclaration { background-image: url(../images/ddox/function.png); } -.symbolList .classdeclaration { background-image: url(../images/ddox/class.png); } -.symbolList .interfacedeclaration { background-image: url(../images/ddox/interface.png); } -.symbolList .structdeclaration { background-image: url(../images/ddox/struct.png); } -.symbolList .variabledeclaration { background-image: url(../images/ddox/variable.png); } -.symbolList .property { background-image: url(../images/ddox/property.png); } -.symbolList .enumdeclaration { background-image: url(../images/ddox/enum.png); } -.symbolList .enummemberdeclaration { background-image: url(../images/ddox/enummember.png); } -.symbolList .aliasdeclaration { background-image: url(../images/ddox/alias.png); } -.symbolList .templatedeclaration { background-image: url(../images/ddox/template.png); } - - -ul.tree-view li { - list-style-type: none; - padding-left: 18px; - padding-right: 4px; -} - -ul.tree-view .package { - padding-left: 18px; - background-image: url(../images/ddox/package.png); - background-repeat: no-repeat; - background-position: left 2px; - cursor: default; -} - -ul.tree-view .package:hover { - box-shadow: 0 0 10px 0 rgba(0,0,0,0.1); -} - -ul.tree-view .module { - padding-left: 18px; - background-image: linear-gradient(rgba(255,255,255,0.5), rgba(255,255,255,0.5)), url(../images/ddox/module.png); - background-repeat: no-repeat, no-repeat; - background-position: left 1px, left 1px; - background-size: 18px 16px; -} - -ul.tree-view .module.selected, ul.tree-view .package.selected { font-weight: bold; } -ul.tree-view .module.selected { background-image: url(../images/ddox/module.png); } - -ul.tree-view li.collapsed ul { display: none; } - -ul.tree-view { - padding: 0; - margin: 0; -} - -ul.tree-view ul { - margin: 0; - padding: 0; -} - -a.protected { - font-style: italic; - background-image: url(../images/ddox/protected.png); - background-repeat: no-repeat; - padding-left: 16px; -} -a.package { - font-style: italic; - background-image: url(../images/ddox/package.png); - background-repeat: no-repeat; - padding-left: 16px; -} - -a.private { - font-style: italic; - background-image: url(../images/ddox/private.png); - background-repeat: no-repeat; - padding-left: 16px; -} -a.inherited:after { content: url(../images/ddox/inherited.png); padding-left: 2pt; } - -nav.page-nav ul { list-style: none; padding-left: 0; } -nav.page-nav li a { color: black; } -nav.page-nav li:before { content: "▼"; padding-right: 3px; } - -.license-info { margin-top: 2em; color: #888; } -.license-info p { display: inline; } - -@media (max-width: 500pt) { - body { display: block; } -} diff --git a/docs/symbols.js b/docs/symbols.js deleted file mode 100644 index 62e55d0..0000000 --- a/docs/symbols.js +++ /dev/null @@ -1,100 +0,0 @@ -// symbol index generated by DDOX - do not edit -var symbols = [ -{name: 'iopipe.buffer', kind: "module", path: './iopipe/buffer.html', attributes: []}, -{name: 'iopipe.buffer.AllocatedBuffer', kind: "structdeclaration", path: './iopipe/buffer/AllocatedBuffer.html', attributes: []}, -{name: 'iopipe.buffer.AllocatedBuffer._allocator', kind: "variabledeclaration", path: './iopipe/buffer/AllocatedBuffer._allocator.html', attributes: []}, -{name: 'iopipe.buffer.AllocatedBuffer.allocator', kind: "functiondeclaration", path: './iopipe/buffer/AllocatedBuffer.allocator.html', attributes: ["property"]}, -{name: 'iopipe.buffer.AllocatedBuffer.avail', kind: "functiondeclaration", path: './iopipe/buffer/AllocatedBuffer.avail.html', attributes: []}, -{name: 'iopipe.buffer.AllocatedBuffer.capacity', kind: "functiondeclaration", path: './iopipe/buffer/AllocatedBuffer.capacity.html', attributes: []}, -{name: 'iopipe.buffer.AllocatedBuffer.extend', kind: "functiondeclaration", path: './iopipe/buffer/AllocatedBuffer.extend.html', attributes: []}, -{name: 'iopipe.buffer.AllocatedBuffer.releaseBack', kind: "functiondeclaration", path: './iopipe/buffer/AllocatedBuffer.releaseBack.html', attributes: []}, -{name: 'iopipe.buffer.AllocatedBuffer.releaseFront', kind: "functiondeclaration", path: './iopipe/buffer/AllocatedBuffer.releaseFront.html', attributes: []}, -{name: 'iopipe.buffer.AllocatedBuffer.this', kind: "functiondeclaration", path: './iopipe/buffer/AllocatedBuffer.this.html', attributes: []}, -{name: 'iopipe.buffer.AllocatedBuffer.window', kind: "functiondeclaration", path: './iopipe/buffer/AllocatedBuffer.window.html', attributes: ["trusted"]}, -{name: 'iopipe.buffer.GCNoPointerAllocator', kind: "structdeclaration", path: './iopipe/buffer/GCNoPointerAllocator.html', attributes: []}, -{name: 'iopipe.buffer.GCNoPointerAllocator.allocate', kind: "functiondeclaration", path: './iopipe/buffer/GCNoPointerAllocator.allocate.html', attributes: ["static", "trusted"]}, -{name: 'iopipe.buffer.GCNoPointerAllocator.expand', kind: "functiondeclaration", path: './iopipe/buffer/GCNoPointerAllocator.expand.html', attributes: ["static", "safe"]}, -{name: 'iopipe.buffer.GCNoPointerAllocator.goodAllocSize', kind: "functiondeclaration", path: './iopipe/buffer/GCNoPointerAllocator.goodAllocSize.html', attributes: ["static", "safe"]}, -{name: 'iopipe.buffer.GCNoPointerAllocator.instance', kind: "variabledeclaration", path: './iopipe/buffer/GCNoPointerAllocator.instance.html', attributes: []}, -{name: 'iopipe.buffer.RingBuffer', kind: "structdeclaration", path: './iopipe/buffer/RingBuffer.html', attributes: []}, -{name: 'iopipe.buffer.RingBuffer.avail', kind: "functiondeclaration", path: './iopipe/buffer/RingBuffer.avail.html', attributes: []}, -{name: 'iopipe.buffer.RingBuffer.capacity', kind: "functiondeclaration", path: './iopipe/buffer/RingBuffer.capacity.html', attributes: []}, -{name: 'iopipe.buffer.RingBuffer.extend', kind: "functiondeclaration", path: './iopipe/buffer/RingBuffer.extend.html', attributes: ["system"]}, -{name: 'iopipe.buffer.RingBuffer.releaseBack', kind: "functiondeclaration", path: './iopipe/buffer/RingBuffer.releaseBack.html', attributes: []}, -{name: 'iopipe.buffer.RingBuffer.releaseFront', kind: "functiondeclaration", path: './iopipe/buffer/RingBuffer.releaseFront.html', attributes: []}, -{name: 'iopipe.buffer.RingBuffer.window', kind: "functiondeclaration", path: './iopipe/buffer/RingBuffer.window.html', attributes: ["system"]}, -{name: 'iopipe.bufpipe', kind: "module", path: './iopipe/bufpipe.html', attributes: []}, -{name: 'iopipe.bufpipe.arrayCastPipe', kind: "functiondeclaration", path: './iopipe/bufpipe/arrayCastPipe.html', attributes: ["auto", "safe"]}, -{name: 'iopipe.bufpipe.asElemRange', kind: "functiondeclaration", path: './iopipe/bufpipe/asElemRange.html', attributes: ["auto"]}, -{name: 'iopipe.bufpipe.asInputRange', kind: "functiondeclaration", path: './iopipe/bufpipe/asInputRange.html', attributes: ["auto"]}, -{name: 'iopipe.bufpipe.bufd', kind: "functiondeclaration", path: './iopipe/bufpipe/bufd.html', attributes: ["auto"]}, -{name: 'iopipe.bufpipe.byteSwapper', kind: "functiondeclaration", path: './iopipe/bufpipe/byteSwapper.html', attributes: ["auto"]}, -{name: 'iopipe.bufpipe.ensureElems', kind: "functiondeclaration", path: './iopipe/bufpipe/ensureElems.html', attributes: []}, -{name: 'iopipe.bufpipe.iosrc', kind: "functiondeclaration", path: './iopipe/bufpipe/iosrc.html', attributes: ["auto"]}, -{name: 'iopipe.bufpipe.outputPipe', kind: "functiondeclaration", path: './iopipe/bufpipe/outputPipe.html', attributes: ["auto"]}, -{name: 'iopipe.bufpipe.process', kind: "functiondeclaration", path: './iopipe/bufpipe/process.html', attributes: []}, -{name: 'iopipe.bufpipe.rbufd', kind: "functiondeclaration", path: './iopipe/bufpipe/rbufd.html', attributes: ["auto"]}, -{name: 'iopipe.bufpipe.SimplePipe', kind: "structdeclaration", path: './iopipe/bufpipe/SimplePipe.html', attributes: []}, -{name: 'iopipe.bufpipe.SimplePipe.chain', kind: "variabledeclaration", path: './iopipe/bufpipe/SimplePipe.chain.html', attributes: []}, -{name: 'iopipe.bufpipe.SimplePipe.extend', kind: "functiondeclaration", path: './iopipe/bufpipe/SimplePipe.extend.html', attributes: []}, -{name: 'iopipe.bufpipe.SimplePipe.release', kind: "functiondeclaration", path: './iopipe/bufpipe/SimplePipe.release.html', attributes: []}, -{name: 'iopipe.bufpipe.SimplePipe.this', kind: "functiondeclaration", path: './iopipe/bufpipe/SimplePipe.this.html', attributes: []}, -{name: 'iopipe.bufpipe.SimplePipe.valve', kind: "functiondeclaration", path: './iopipe/bufpipe/SimplePipe.valve.html', attributes: ["ref"]}, -{name: 'iopipe.bufpipe.SimplePipe.window', kind: "functiondeclaration", path: './iopipe/bufpipe/SimplePipe.window.html', attributes: ["auto"]}, -{name: 'iopipe.bufpipe.writeBuf', kind: "functiondeclaration", path: './iopipe/bufpipe/writeBuf.html', attributes: []}, -{name: 'iopipe.refc', kind: "module", path: './iopipe/refc.html', attributes: []}, -{name: 'iopipe.refc.RefCounted', kind: "structdeclaration", path: './iopipe/refc/RefCounted.html', attributes: []}, -{name: 'iopipe.refc.RefCounted._get', kind: "functiondeclaration", path: './iopipe/refc/RefCounted._get.html', attributes: ["ref"]}, -{name: 'iopipe.refc.RefCounted.opAssign', kind: "functiondeclaration", path: './iopipe/refc/RefCounted.opAssign.html', attributes: []}, -{name: 'iopipe.refc.RefCounted.this', kind: "functiondeclaration", path: './iopipe/refc/RefCounted.this.html', attributes: []}, -{name: 'iopipe.refc.refCounted', kind: "functiondeclaration", path: './iopipe/refc/refCounted.html', attributes: []}, -{name: 'iopipe.stream', kind: "module", path: './iopipe/stream.html', attributes: []}, -{name: 'iopipe.stream.IODev', kind: "aliasdeclaration", path: './iopipe/stream/IODev.html', attributes: []}, -{name: 'iopipe.stream.NullDev', kind: "structdeclaration", path: './iopipe/stream/NullDev.html', attributes: []}, -{name: 'iopipe.stream.NullDev.read', kind: "functiondeclaration", path: './iopipe/stream/NullDev.read.html', attributes: ["const"]}, -{name: 'iopipe.stream.nullDev', kind: "variabledeclaration", path: './iopipe/stream/nullDev.html', attributes: []}, -{name: 'iopipe.stream.openDev', kind: "functiondeclaration", path: './iopipe/stream/openDev.html', attributes: ["auto"]}, -{name: 'iopipe.stream.ZeroDev', kind: "structdeclaration", path: './iopipe/stream/ZeroDev.html', attributes: []}, -{name: 'iopipe.stream.zeroDev', kind: "variabledeclaration", path: './iopipe/stream/zeroDev.html', attributes: []}, -{name: 'iopipe.textpipe', kind: "module", path: './iopipe/textpipe.html', attributes: []}, -{name: 'iopipe.textpipe.assumeText', kind: "functiondeclaration", path: './iopipe/textpipe/assumeText.html', attributes: ["auto"]}, -{name: 'iopipe.textpipe.byDelimRange', kind: "functiondeclaration", path: './iopipe/textpipe/byDelimRange.html', attributes: ["auto"]}, -{name: 'iopipe.textpipe.byLine', kind: "functiondeclaration", path: './iopipe/textpipe/byLine.html', attributes: ["auto"]}, -{name: 'iopipe.textpipe.byLineRange', kind: "functiondeclaration", path: './iopipe/textpipe/byLineRange.html', attributes: ["auto"]}, -{name: 'iopipe.textpipe.CodeUnit', kind: "aliasdeclaration", path: './iopipe/textpipe/CodeUnit.html', attributes: []}, -{name: 'iopipe.textpipe.convertText', kind: "functiondeclaration", path: './iopipe/textpipe/convertText.html', attributes: ["auto"]}, -{name: 'iopipe.textpipe.delimitedText', kind: "functiondeclaration", path: './iopipe/textpipe/delimitedText.html', attributes: ["auto"]}, -{name: 'iopipe.textpipe.detectBOM', kind: "functiondeclaration", path: './iopipe/textpipe/detectBOM.html', attributes: []}, -{name: 'iopipe.textpipe.encodeText', kind: "functiondeclaration", path: './iopipe/textpipe/encodeText.html', attributes: ["auto"]}, -{name: 'iopipe.textpipe.ensureDecodeable', kind: "functiondeclaration", path: './iopipe/textpipe/ensureDecodeable.html', attributes: ["auto"]}, -{name: 'iopipe.textpipe.runEncoded', kind: "functiondeclaration", path: './iopipe/textpipe/runEncoded.html', attributes: ["auto", "ref"]}, -{name: 'iopipe.textpipe.runWithEncoding', kind: "functiondeclaration", path: './iopipe/textpipe/runWithEncoding.html', attributes: ["auto", "ref"]}, -{name: 'iopipe.textpipe.textConverter', kind: "functiondeclaration", path: './iopipe/textpipe/textConverter.html', attributes: ["auto"]}, -{name: 'iopipe.textpipe.textOutput', kind: "functiondeclaration", path: './iopipe/textpipe/textOutput.html', attributes: ["auto"]}, -{name: 'iopipe.textpipe.UTFType', kind: "enumdeclaration", path: './iopipe/textpipe/UTFType.html', attributes: []}, -{name: 'iopipe.traits', kind: "module", path: './iopipe/traits.html', attributes: []}, -{name: 'iopipe.traits.extend', kind: "functiondeclaration", path: './iopipe/traits/extend.html', attributes: []}, -{name: 'iopipe.traits.hasValve', kind: "enummemberdeclaration", path: './iopipe/traits/hasValve.html', attributes: []}, -{name: 'iopipe.traits.implementValve', kind: "templatedeclaration", path: './iopipe/traits/implementValve.html', attributes: []}, -{name: 'iopipe.traits.isIopipe', kind: "enummemberdeclaration", path: './iopipe/traits/isIopipe.html', attributes: []}, -{name: 'iopipe.traits.release', kind: "functiondeclaration", path: './iopipe/traits/release.html', attributes: []}, -{name: 'iopipe.traits.valveCount', kind: "enummemberdeclaration", path: './iopipe/traits/valveCount.html', attributes: []}, -{name: 'iopipe.traits.window', kind: "functiondeclaration", path: './iopipe/traits/window.html', attributes: ["auto"]}, -{name: 'iopipe.traits.WindowType', kind: "aliasdeclaration", path: './iopipe/traits/WindowType.html', attributes: []}, -{name: 'iopipe.valve', kind: "module", path: './iopipe/valve.html', attributes: []}, -{name: 'iopipe.valve.holdingLoop', kind: "functiondeclaration", path: './iopipe/valve/holdingLoop.html', attributes: ["auto"]}, -{name: 'iopipe.valve.holdingValve', kind: "functiondeclaration", path: './iopipe/valve/holdingValve.html', attributes: ["auto"]}, -{name: 'iopipe.valve.push', kind: "functiondeclaration", path: './iopipe/valve/push.html', attributes: ["auto"]}, -{name: 'iopipe.valve.simpleValve', kind: "functiondeclaration", path: './iopipe/valve/simpleValve.html', attributes: ["auto"]}, -{name: 'iopipe.valve.valveOf', kind: "functiondeclaration", path: './iopipe/valve/valveOf.html', attributes: ["auto"]}, -{name: 'iopipe.zip', kind: "module", path: './iopipe/zip.html', attributes: []}, -{name: 'iopipe.zip.CompressionFormat', kind: "enumdeclaration", path: './iopipe/zip/CompressionFormat.html', attributes: []}, -{name: 'iopipe.zip.CompressionFormat.deflate', kind: "enummemberdeclaration", path: './iopipe/zip/CompressionFormat.html#deflate', attributes: []}, -{name: 'iopipe.zip.CompressionFormat.determineFromData', kind: "enummemberdeclaration", path: './iopipe/zip/CompressionFormat.html#determineFromData', attributes: []}, -{name: 'iopipe.zip.CompressionFormat.gzip', kind: "enummemberdeclaration", path: './iopipe/zip/CompressionFormat.html#gzip', attributes: []}, -{name: 'iopipe.zip.unzip', kind: "functiondeclaration", path: './iopipe/zip/unzip.html', attributes: ["auto"]}, -{name: 'iopipe.zip.unzipSrc', kind: "functiondeclaration", path: './iopipe/zip/unzipSrc.html', attributes: ["auto"]}, -{name: 'iopipe.zip.zip', kind: "functiondeclaration", path: './iopipe/zip/zip.html', attributes: ["auto"]}, -{name: 'iopipe.zip.zipSrc', kind: "functiondeclaration", path: './iopipe/zip/zipSrc.html', attributes: ["auto", "safe"]}, -{name: 'iopipe', kind: "module", path: './iopipe.html', attributes: []}, -]; From 164f6fabe8cb3ace4fad374a9518af852f979957 Mon Sep 17 00:00:00 2001 From: Steven Schveighoffer Date: Tue, 17 Oct 2023 13:52:52 -0400 Subject: [PATCH 3/4] Fix issue with textpipe and redoing ensuredecodable --- source/iopipe/textpipe.d | 9 ++------- 1 file changed, 2 insertions(+), 7 deletions(-) diff --git a/source/iopipe/textpipe.d b/source/iopipe/textpipe.d index 368fa91..46d3422 100644 --- a/source/iopipe/textpipe.d +++ b/source/iopipe/textpipe.d @@ -192,19 +192,14 @@ auto ensureDecodeable(Chain)(Chain c) if (isIopipe!Chain && isSomeChar!(ElementE import std.traits: Unqual; alias CodeUnitType = Unqual!(ElementEncodingType!(WindowType!Chain)); - // need to stop chaining if the last thing was an ensureDecodable. Of - // course, it's very hard to check if the type is a DecodeableWindow. What - // we do is pretend to wrap c's upstream chain, and see if it results in - // the exact type we were passed. If this is the case, then it must be a - // type that was wrapped with a DecodableWindow. static if(is(CodeUnitType == dchar)) { // always decodeable return c; } - else static if(__traits(hasMember, Chain, "chain") && - is(typeof(.ensureDecodeable(c.chain)) == Chain)) + else static if(is(Chain == DecodeableWindow!T, T...)) { + // already decodeable return c; } else From f1d58c1fbfb22e65f3ee2c7dffdb7850475cf49e Mon Sep 17 00:00:00 2001 From: Steven Schveighoffer Date: Fri, 20 Oct 2023 15:47:46 -0400 Subject: [PATCH 4/4] minor tweaks to range input --- source/iopipe/stream.d | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/source/iopipe/stream.d b/source/iopipe/stream.d index 25245e9..1fc1dd6 100644 --- a/source/iopipe/stream.d +++ b/source/iopipe/stream.d @@ -104,7 +104,7 @@ private size_t copy(Src, Buf)(ref Src src, Buf buf) if(is(immutable(ElementEncod } } -struct RangeInput(R) { +struct RangeDev(R) { private import std.traits: isNarrowString; private { R src; @@ -127,11 +127,11 @@ struct RangeInput(R) { size_t read(Buf)(Buf buf) if (isNarrowString!Buf || isRandomAccessRange!Buf) { - static if(is(typeof(copy(src, buf)))) + static if(__traits(compiles, copy(src, buf))) { return copy(src, buf); } - else static if(isRangeOfSlices && is(typeof(copy(data, buf)))) + else static if(isRangeOfSlices && __traits(compiles, copy(data, buf))) { size_t n = 0; while(n < buf.length && !src.empty) @@ -155,11 +155,11 @@ struct RangeInput(R) { * It can be used as an input source for any iopipe. * * This has a specialization for an input range that is a "range of slices" - * type, since we can utilize slice assignment for the copy. + * type, since it can utilize slice assignment for the copy. */ -auto rangeInput(R)(R range) if (isInputRange!R) +auto rangeDev(R)(R range) if (isInputRange!R) { - return RangeInput!R(range); + return RangeDev!R(range); } unittest @@ -173,9 +173,9 @@ unittest // make a big range of characters { auto bigRange = repeat(only(repeat('a', 10), repeat('b', 10))).joiner.joiner.take(100000); - auto inp = bigRange.rangeInput; + auto inp = bigRange.rangeDev; inp.read(cast(char[])[]); - auto pipe = bigRange.rangeInput.bufd!char; + auto pipe = inp.bufd!char; pipe.ensureElems(); assert(equal(pipe.window.byChar, bigRange)); } @@ -183,9 +183,9 @@ unittest // try a range of slices { auto bigRange = repeat(only("aaaaaaaaaa", "bbbbbbbbbb"), 10000).joiner; - auto inp = bigRange.rangeInput; + auto inp = bigRange.rangeDev; inp.read(cast(char[])[]); - auto pipe = bigRange.rangeInput.bufd!char; + auto pipe = inp.bufd!char; pipe.ensureElems(); assert(equal(pipe.window, bigRange.joiner)); }