1
0
mirror of https://github.com/tensorflow/haskell.git synced 2024-06-28 23:48:36 +02:00
tensorflow-haskell/docs/haddock/tensorflow-0.1.0.2/src/TensorFlow.Internal.VarInt.html
2017-10-19 20:56:38 -07:00

51 lines
11 KiB
HTML

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><link rel="stylesheet" type="text/css" href="style.css" /><script type="text/javascript" src="highlight.js"></script></head><body><pre><span class="hs-comment">-- Copyright 2016 TensorFlow authors.</span><span>
</span><a name="line-2"></a><span class="hs-comment">--</span><span>
</span><a name="line-3"></a><span class="hs-comment">-- Licensed under the Apache License, Version 2.0 (the &quot;License&quot;);</span><span>
</span><a name="line-4"></a><span class="hs-comment">-- you may not use this file except in compliance with the License.</span><span>
</span><a name="line-5"></a><span class="hs-comment">-- You may obtain a copy of the License at</span><span>
</span><a name="line-6"></a><span class="hs-comment">--</span><span>
</span><a name="line-7"></a><span class="hs-comment">-- http://www.apache.org/licenses/LICENSE-2.0</span><span>
</span><a name="line-8"></a><span class="hs-comment">--</span><span>
</span><a name="line-9"></a><span class="hs-comment">-- Unless required by applicable law or agreed to in writing, software</span><span>
</span><a name="line-10"></a><span class="hs-comment">-- distributed under the License is distributed on an &quot;AS IS&quot; BASIS,</span><span>
</span><a name="line-11"></a><span class="hs-comment">-- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.</span><span>
</span><a name="line-12"></a><span class="hs-comment">-- See the License for the specific language governing permissions and</span><span>
</span><a name="line-13"></a><span class="hs-comment">-- limitations under the License.</span><span>
</span><a name="line-14"></a><span>
</span><a name="line-15"></a><span class="hs-pragma">{-# LANGUAGE BangPatterns #-}</span><span>
</span><a name="line-16"></a><span>
</span><a name="line-17"></a><span class="hs-comment">{-|
Module : TensorFlow.Internal.VarInt
Description : Encoders and decoders for varint types.
Originally taken from internal proto-lens code.
-}</span><span>
</span><a name="line-23"></a><span class="hs-keyword">module</span><span> </span><span class="hs-identifier">TensorFlow</span><span class="hs-operator">.</span><span class="hs-identifier">Internal</span><span class="hs-operator">.</span><span class="hs-identifier">VarInt</span><span>
</span><a name="line-24"></a><span> </span><span class="hs-special">(</span><span> </span><a href="TensorFlow.Internal.VarInt.html#getVarInt"><span class="hs-identifier hs-var">getVarInt</span></a><span>
</span><a name="line-25"></a><span> </span><span class="hs-special">,</span><span> </span><a href="TensorFlow.Internal.VarInt.html#putVarInt"><span class="hs-identifier hs-var">putVarInt</span></a><span>
</span><a name="line-26"></a><span> </span><span class="hs-special">)</span><span> </span><span class="hs-keyword">where</span><span>
</span><a name="line-27"></a><span>
</span><a name="line-28"></a><span class="hs-keyword">import</span><span> </span><span class="hs-identifier">Data</span><span class="hs-operator">.</span><span class="hs-identifier">Attoparsec</span><span class="hs-operator">.</span><span class="hs-identifier">ByteString</span><span> </span><span class="hs-keyword">as</span><span> </span><span class="hs-identifier">Parse</span><span>
</span><a name="line-29"></a><span class="hs-keyword">import</span><span> </span><span class="hs-identifier">Data</span><span class="hs-operator">.</span><span class="hs-identifier">Bits</span><span>
</span><a name="line-30"></a><span class="hs-keyword">import</span><span> </span><span class="hs-identifier">Data</span><span class="hs-operator">.</span><span class="hs-identifier">ByteString</span><span class="hs-operator">.</span><span class="hs-identifier">Lazy</span><span class="hs-operator">.</span><span class="hs-identifier">Builder</span><span> </span><span class="hs-keyword">as</span><span> </span><span class="hs-identifier">Builder</span><span>
</span><a name="line-31"></a><span class="hs-keyword">import</span><span> </span><span class="hs-identifier">Data</span><span class="hs-operator">.</span><span class="hs-identifier">Monoid</span><span> </span><span class="hs-special">(</span><span class="hs-special">(</span><span class="hs-operator hs-var">&lt;&gt;</span><span class="hs-special">)</span><span class="hs-special">)</span><span>
</span><a name="line-32"></a><span class="hs-keyword">import</span><span> </span><span class="hs-identifier">Data</span><span class="hs-operator">.</span><span class="hs-identifier">Word</span><span> </span><span class="hs-special">(</span><span class="hs-identifier hs-type">Word64</span><span class="hs-special">)</span><span>
</span><a name="line-33"></a><span>
</span><a name="line-34"></a><span class="hs-comment">-- | Decode an unsigned varint.</span><span>
</span><a name="line-35"></a><span class="hs-identifier">getVarInt</span><span> </span><span class="hs-glyph">::</span><span> </span><span class="hs-identifier hs-type">Parser</span><span> </span><span class="hs-identifier hs-type">Word64</span><span>
</span><a name="line-36"></a><a name="getVarInt"><a href="TensorFlow.Internal.VarInt.html#getVarInt"><span class="hs-identifier">getVarInt</span></a></a><span> </span><span class="hs-glyph">=</span><span> </span><a href="#local-6989586621679033260"><span class="hs-identifier hs-var">loop</span></a><span> </span><span class="hs-number">1</span><span> </span><span class="hs-number">0</span><span>
</span><a name="line-37"></a><span> </span><span class="hs-keyword">where</span><span>
</span><a name="line-38"></a><span> </span><a name="local-6989586621679033260"><a href="#local-6989586621679033260"><span class="hs-identifier">loop</span></a></a><span> </span><span class="hs-glyph">!</span><a name="local-6989586621679033261"><a href="#local-6989586621679033261"><span class="hs-identifier">s</span></a></a><span> </span><span class="hs-glyph">!</span><a name="local-6989586621679033262"><a href="#local-6989586621679033262"><span class="hs-identifier">n</span></a></a><span> </span><span class="hs-glyph">=</span><span> </span><span class="hs-keyword">do</span><span>
</span><a name="line-39"></a><span> </span><a name="local-6989586621679033263"><a href="#local-6989586621679033263"><span class="hs-identifier">b</span></a></a><span> </span><span class="hs-glyph">&lt;-</span><span> </span><span class="hs-identifier hs-var">anyWord8</span><span>
</span><a name="line-40"></a><span> </span><span class="hs-keyword">let</span><span> </span><a name="local-6989586621679033264"><a href="#local-6989586621679033264"><span class="hs-identifier">n'</span></a></a><span> </span><span class="hs-glyph">=</span><span> </span><a href="#local-6989586621679033262"><span class="hs-identifier hs-var">n</span></a><span> </span><span class="hs-operator hs-var">+</span><span> </span><a href="#local-6989586621679033261"><span class="hs-identifier hs-var">s</span></a><span> </span><span class="hs-operator hs-var">*</span><span> </span><span class="hs-identifier hs-var">fromIntegral</span><span> </span><span class="hs-special">(</span><a href="#local-6989586621679033263"><span class="hs-identifier hs-var">b</span></a><span> </span><span class="hs-operator hs-var">.&amp;.</span><span> </span><span class="hs-number">127</span><span class="hs-special">)</span><span>
</span><a name="line-41"></a><span> </span><span class="hs-keyword">if</span><span> </span><span class="hs-special">(</span><a href="#local-6989586621679033263"><span class="hs-identifier hs-var">b</span></a><span> </span><span class="hs-operator hs-var">.&amp;.</span><span> </span><span class="hs-number">128</span><span class="hs-special">)</span><span> </span><span class="hs-operator hs-var">==</span><span> </span><span class="hs-number">0</span><span>
</span><a name="line-42"></a><span> </span><span class="hs-keyword">then</span><span> </span><span class="hs-identifier hs-var">return</span><span> </span><a href="#local-6989586621679033264"><span class="hs-identifier hs-var">n'</span></a><span>
</span><a name="line-43"></a><span> </span><span class="hs-keyword">else</span><span> </span><a href="#local-6989586621679033260"><span class="hs-identifier hs-var">loop</span></a><span> </span><span class="hs-special">(</span><span class="hs-number">128</span><span class="hs-operator hs-var">*</span><a href="#local-6989586621679033261"><span class="hs-identifier hs-var">s</span></a><span class="hs-special">)</span><span> </span><a href="#local-6989586621679033264"><span class="hs-identifier hs-var">n'</span></a><span>
</span><a name="line-44"></a><span>
</span><a name="line-45"></a><span class="hs-comment">-- | Encode a Word64.</span><span>
</span><a name="line-46"></a><span class="hs-identifier">putVarInt</span><span> </span><span class="hs-glyph">::</span><span> </span><span class="hs-identifier hs-type">Word64</span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="hs-identifier hs-type">Builder</span><span>
</span><a name="line-47"></a><a name="putVarInt"><a href="TensorFlow.Internal.VarInt.html#putVarInt"><span class="hs-identifier">putVarInt</span></a></a><span> </span><a name="local-6989586621679037436"><a href="#local-6989586621679037436"><span class="hs-identifier">n</span></a></a><span>
</span><a name="line-48"></a><span> </span><span class="hs-glyph">|</span><span> </span><a href="#local-6989586621679037436"><span class="hs-identifier hs-var">n</span></a><span> </span><span class="hs-operator hs-var">&lt;</span><span> </span><span class="hs-number">128</span><span> </span><span class="hs-glyph">=</span><span> </span><span class="hs-identifier hs-var">Builder</span><span class="hs-operator hs-var">.</span><span class="hs-identifier hs-var">word8</span><span> </span><span class="hs-special">(</span><span class="hs-identifier hs-var">fromIntegral</span><span> </span><a href="#local-6989586621679037436"><span class="hs-identifier hs-var">n</span></a><span class="hs-special">)</span><span>
</span><a name="line-49"></a><span> </span><span class="hs-glyph">|</span><span> </span><span class="hs-identifier hs-var">otherwise</span><span> </span><span class="hs-glyph">=</span><span> </span><span class="hs-identifier hs-var">Builder</span><span class="hs-operator hs-var">.</span><span class="hs-identifier hs-var">word8</span><span> </span><span class="hs-special">(</span><span class="hs-identifier hs-var">fromIntegral</span><span> </span><span class="hs-operator hs-var">$</span><span> </span><a href="#local-6989586621679037436"><span class="hs-identifier hs-var">n</span></a><span> </span><span class="hs-operator hs-var">.&amp;.</span><span> </span><span class="hs-number">127</span><span> </span><span class="hs-operator hs-var">.|.</span><span> </span><span class="hs-number">128</span><span class="hs-special">)</span><span>
</span><a name="line-50"></a><span> </span><span class="hs-operator hs-var">&lt;&gt;</span><span> </span><a href="TensorFlow.Internal.VarInt.html#putVarInt"><span class="hs-identifier hs-var">putVarInt</span></a><span> </span><span class="hs-special">(</span><a href="#local-6989586621679037436"><span class="hs-identifier hs-var">n</span></a><span> </span><span class="hs-special">`</span><span class="hs-identifier hs-var">shiftR</span><span class="hs-special">`</span><span> </span><span class="hs-number">7</span><span class="hs-special">)</span><span>
</span><a name="line-51"></a></pre></body></html>