Files
MicrochipFor32/Doc/docbook/varint_8h_source.xml
2022-11-24 23:56:57 +08:00

78 lines
15 KiB
XML

<?xml version='1.0' encoding='UTF-8' standalone='no'?>
<section xmlns="http://docbook.org/ns/docbook" version="5.0" xmlns:xlink="http://www.w3.org/1999/xlink" xml:id="_varint_8h_source" xml:lang="zh">
<title>varint.h</title>
<indexterm><primary>D:/gitt/MicrochipFor32/bsp_Device/varint.h</primary></indexterm>
浏览该文件的文档.<programlisting linenumbering="unnumbered"><anchor xml:id="_varint_8h_source_1l00001"/>00001 <emphasis role="comment">/*----------------------------------------------------------------------------------------------------</emphasis>
<anchor xml:id="_varint_8h_source_1l00002"/>00002 <emphasis role="comment">&#32;#</emphasis>
<anchor xml:id="_varint_8h_source_1l00003"/>00003 <emphasis role="comment">&#32;#&#32;&#32;Copyright&#32;(c)&#32;2022&#32;Yuankang&#32;Liang(XerolySkinner)</emphasis>
<anchor xml:id="_varint_8h_source_1l00004"/>00004 <emphasis role="comment">&#32;#</emphasis>
<anchor xml:id="_varint_8h_source_1l00005"/>00005 <emphasis role="comment">&#32;#&#32;&#32;本软件按原样提供,无任何明示或暗示</emphasis>
<anchor xml:id="_varint_8h_source_1l00006"/>00006 <emphasis role="comment">&#32;#&#32;&#32;在任何情况下,作者都不承担任何损害赔偿责任</emphasis>
<anchor xml:id="_varint_8h_source_1l00007"/>00007 <emphasis role="comment">&#32;#</emphasis>
<anchor xml:id="_varint_8h_source_1l00008"/>00008 <emphasis role="comment">&#32;#&#32;&#32;使用的许可声明:</emphasis>
<anchor xml:id="_varint_8h_source_1l00009"/>00009 <emphasis role="comment">&#32;#&#32;&#32;1.&#32;&#32;不得歪曲本软件的来源,你不能声称你编写了原始软件.</emphasis>
<anchor xml:id="_varint_8h_source_1l00010"/>00010 <emphasis role="comment">&#32;#&#32;&#32;2.&#32;&#32;免费授予以任何目的,前提是版权声明出现在所有副本中.</emphasis>
<anchor xml:id="_varint_8h_source_1l00011"/>00011 <emphasis role="comment">&#32;#&#32;&#32;&#32;&#32;&#32;&#32;并且版权声明和许可声明同时出现.</emphasis>
<anchor xml:id="_varint_8h_source_1l00012"/>00012 <emphasis role="comment">&#32;#&#32;&#32;3.&#32;&#32;你有使用,复制,修改,分发,和销售本软件的许可.</emphasis>
<anchor xml:id="_varint_8h_source_1l00013"/>00013 <emphasis role="comment">&#32;#&#32;&#32;4.&#32;&#32;如果你在产品中使用,产品文档中的声明是赞赏的但不是必须的.</emphasis>
<anchor xml:id="_varint_8h_source_1l00014"/>00014 <emphasis role="comment">&#32;#&#32;&#32;5.&#32;&#32;本通知不得从任何来源删除或更改.</emphasis>
<anchor xml:id="_varint_8h_source_1l00015"/>00015 <emphasis role="comment">&#32;#</emphasis>
<anchor xml:id="_varint_8h_source_1l00016"/>00016 <emphasis role="comment">&#32;#&#32;&#32;Yuankang&#32;Liang(XerolySkinner)</emphasis>
<anchor xml:id="_varint_8h_source_1l00017"/>00017 <emphasis role="comment">&#32;#&#32;&#32;&#32;&#32;&#32;&#32;E-mail:zabbcccbbaz@163.com</emphasis>
<anchor xml:id="_varint_8h_source_1l00018"/>00018 <emphasis role="comment">&#32;#&#32;&#32;&#32;&#32;&#32;&#32;QQ:2715099320</emphasis>
<anchor xml:id="_varint_8h_source_1l00019"/>00019 <emphasis role="comment">&#32;#&#32;&#32;&#32;&#32;&#32;&#32;Mobile&#32;Phone:13005636215</emphasis>
<anchor xml:id="_varint_8h_source_1l00020"/>00020 <emphasis role="comment">&#32;#</emphasis>
<anchor xml:id="_varint_8h_source_1l00021"/>00021 <emphasis role="comment">&#32;#&#32;&#32;All&#32;rights&#32;reserved.</emphasis>
<anchor xml:id="_varint_8h_source_1l00022"/>00022 <emphasis role="comment">&#32;*/</emphasis>
<anchor xml:id="_varint_8h_source_1l00023"/>00023
<anchor xml:id="_varint_8h_source_1l00034"/>00034 <emphasis role="preprocessor">#pragma&#32;once</emphasis>
<anchor xml:id="_varint_8h_source_1l00035"/>00035 <emphasis role="preprocessor">#include&#32;&quot;stdint.h&quot;</emphasis>
<anchor xml:id="_varint_8h_source_1l00037"/>00037 <emphasis role="comment">//----------------------------------------------------------------------------------------------------</emphasis>
<anchor xml:id="_varint_8h_source_1l00038"/>00038 <emphasis role="comment">//&#32;&#32;程序</emphasis>
<anchor xml:id="_varint_8h_source_1l00039"/>00039 <emphasis role="comment">//&#32;&#32;</emphasis>
<anchor xml:id="_varint_8h_source_1l00040"/><link linkend="_varint_8h_1a92c50087ca0e64fa93fc59402c55f8ca">00040</link> <emphasis role="keyword">typedef</emphasis>&#32;uint8_t&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;<link linkend="_varint_8h_1a92c50087ca0e64fa93fc59402c55f8ca">u8</link>;&#32;&#32;&#32;&#32;&#32;
<anchor xml:id="_varint_8h_source_1l00041"/><link linkend="_varint_8h_1ace9d960e74685e2cd84b36132dbbf8aa">00041</link> <emphasis role="keyword">typedef</emphasis>&#32;uint16_t&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;<link linkend="_varint_8h_1ace9d960e74685e2cd84b36132dbbf8aa">u16</link>;&#32;&#32;&#32;&#32;
<anchor xml:id="_varint_8h_source_1l00042"/><link linkend="_varint_8h_1afaa62991928fb9fb18ff0db62a040aba">00042</link> <emphasis role="keyword">typedef</emphasis>&#32;uint32_t&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;<link linkend="_varint_8h_1afaa62991928fb9fb18ff0db62a040aba">u32</link>;&#32;&#32;&#32;&#32;
<anchor xml:id="_varint_8h_source_1l00043"/><link linkend="_varint_8h_1a3f7e2bcbb0b4c338f3c4f6c937cd4234">00043</link> <emphasis role="keyword">typedef</emphasis>&#32;uint64_t&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;<link linkend="_varint_8h_1a3f7e2bcbb0b4c338f3c4f6c937cd4234">u64</link>;&#32;&#32;&#32;&#32;
<anchor xml:id="_varint_8h_source_1l00044"/>00044
<anchor xml:id="_varint_8h_source_1l00045"/><link linkend="_varint_8h_1ae3702327b5f47e83b431e22b33da7b58">00045</link> <emphasis role="keyword">typedef</emphasis>&#32;int8_t&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;<link linkend="_varint_8h_1ae3702327b5f47e83b431e22b33da7b58">i8</link>;&#32;&#32;&#32;&#32;&#32;
<anchor xml:id="_varint_8h_source_1l00046"/><link linkend="_varint_8h_1ad309dbcaeea13aa602d686964156ea0b">00046</link> <emphasis role="keyword">typedef</emphasis>&#32;int16_t&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;<link linkend="_varint_8h_1ad309dbcaeea13aa602d686964156ea0b">i16</link>;&#32;&#32;&#32;&#32;
<anchor xml:id="_varint_8h_source_1l00047"/><link linkend="_varint_8h_1a48d6cd8e4135fb2ff7e7f2dac84089ec">00047</link> <emphasis role="keyword">typedef</emphasis>&#32;int32_t&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;<link linkend="_varint_8h_1a48d6cd8e4135fb2ff7e7f2dac84089ec">i32</link>;&#32;&#32;&#32;&#32;
<anchor xml:id="_varint_8h_source_1l00048"/><link linkend="_varint_8h_1a85cb35fbe5bf2961d7ad5f26814a91a2">00048</link> <emphasis role="keyword">typedef</emphasis>&#32;int64_t&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;<link linkend="_varint_8h_1a85cb35fbe5bf2961d7ad5f26814a91a2">i64</link>;&#32;&#32;&#32;&#32;
<anchor xml:id="_varint_8h_source_1l00049"/>00049
<anchor xml:id="_varint_8h_source_1l00050"/><link linkend="_varint_8h_1a1a2a3100a902c32a55d8b08915bce044">00050</link> <emphasis role="keyword">typedef</emphasis>&#32;<emphasis role="keyword">volatile</emphasis>&#32;<link linkend="_varint_8h_1a92c50087ca0e64fa93fc59402c55f8ca">u8</link>&#32;&#32;&#32;&#32;&#32;<link linkend="_varint_8h_1a1a2a3100a902c32a55d8b08915bce044">vu8</link>;&#32;&#32;&#32;&#32;
<anchor xml:id="_varint_8h_source_1l00051"/><link linkend="_varint_8h_1a677aa1edce4bbb53741b1cc24eb4c035">00051</link> <emphasis role="keyword">typedef</emphasis>&#32;<emphasis role="keyword">volatile</emphasis>&#32;<link linkend="_varint_8h_1ace9d960e74685e2cd84b36132dbbf8aa">u16</link>&#32;&#32;&#32;&#32;<link linkend="_varint_8h_1a677aa1edce4bbb53741b1cc24eb4c035">vu16</link>;&#32;&#32;&#32;
<anchor xml:id="_varint_8h_source_1l00052"/><link linkend="_varint_8h_1abcdd5d61f51cb4c472ac6637916cf72a">00052</link> <emphasis role="keyword">typedef</emphasis>&#32;<emphasis role="keyword">volatile</emphasis>&#32;<link linkend="_varint_8h_1afaa62991928fb9fb18ff0db62a040aba">u32</link>&#32;&#32;&#32;&#32;<link linkend="_varint_8h_1abcdd5d61f51cb4c472ac6637916cf72a">vu32</link>;&#32;&#32;&#32;
<anchor xml:id="_varint_8h_source_1l00053"/><link linkend="_varint_8h_1ace392b4d1c3911331b2fe5ddc99fdcba">00053</link> <emphasis role="keyword">typedef</emphasis>&#32;<emphasis role="keyword">volatile</emphasis>&#32;<link linkend="_varint_8h_1a3f7e2bcbb0b4c338f3c4f6c937cd4234">u64</link>&#32;&#32;&#32;&#32;<link linkend="_varint_8h_1ace392b4d1c3911331b2fe5ddc99fdcba">vu64</link>;&#32;&#32;&#32;
<anchor xml:id="_varint_8h_source_1l00054"/>00054
<anchor xml:id="_varint_8h_source_1l00055"/><link linkend="_varint_8h_1ad9f0c7145e15b7b470a138dae48c178d">00055</link> <emphasis role="keyword">typedef</emphasis>&#32;<emphasis role="keyword">volatile</emphasis>&#32;<link linkend="_varint_8h_1ae3702327b5f47e83b431e22b33da7b58">i8</link>&#32;&#32;&#32;&#32;&#32;<link linkend="_varint_8h_1ad9f0c7145e15b7b470a138dae48c178d">vi8</link>;&#32;&#32;&#32;&#32;
<anchor xml:id="_varint_8h_source_1l00056"/><link linkend="_varint_8h_1ab1725f18a2ec2964f4bc0499527e4c5d">00056</link> <emphasis role="keyword">typedef</emphasis>&#32;<emphasis role="keyword">volatile</emphasis>&#32;<link linkend="_varint_8h_1ad309dbcaeea13aa602d686964156ea0b">i16</link>&#32;&#32;&#32;&#32;<link linkend="_varint_8h_1ab1725f18a2ec2964f4bc0499527e4c5d">vi16</link>;&#32;&#32;&#32;
<anchor xml:id="_varint_8h_source_1l00057"/><link linkend="_varint_8h_1a8b81ac6660e74bec836c0a4e0a0b6450">00057</link> <emphasis role="keyword">typedef</emphasis>&#32;<emphasis role="keyword">volatile</emphasis>&#32;<link linkend="_varint_8h_1a48d6cd8e4135fb2ff7e7f2dac84089ec">i32</link>&#32;&#32;&#32;&#32;<link linkend="_varint_8h_1a8b81ac6660e74bec836c0a4e0a0b6450">vi32</link>;&#32;&#32;&#32;
<anchor xml:id="_varint_8h_source_1l00058"/><link linkend="_varint_8h_1aeffd8dafd889cdd80398ffcbb37cd7ef">00058</link> <emphasis role="keyword">typedef</emphasis>&#32;<emphasis role="keyword">volatile</emphasis>&#32;<link linkend="_varint_8h_1a85cb35fbe5bf2961d7ad5f26814a91a2">i64</link>&#32;&#32;&#32;&#32;<link linkend="_varint_8h_1aeffd8dafd889cdd80398ffcbb37cd7ef">vi64</link>;&#32;&#32;&#32;
<anchor xml:id="_varint_8h_source_1l00060"/>00060 <emphasis role="comment">//----------------------------------------------------------------------------------------------------</emphasis>
<anchor xml:id="_varint_8h_source_1l00061"/>00061 <emphasis role="comment">//&#32;&#32;位宏</emphasis>
<anchor xml:id="_varint_8h_source_1l00062"/><link linkend="_varint_8h_1ad35af1fbc60fcc217f7e3c6bae2ba656">00062</link> <emphasis role="preprocessor">#define&#32;P8(x)&#32;&#32;&#32;&#32;&#32;&#32;&#32;((u8*)(&amp;(x)))&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;</emphasis>
<anchor xml:id="_varint_8h_source_1l00063"/><link linkend="_varint_8h_1a71e9586b24447c7ca7bc353aa86da852">00063</link> <emphasis role="preprocessor">#define&#32;Pn8(x,y)&#32;&#32;&#32;&#32;(((u8*)(&amp;(x)))[y])&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;</emphasis>
<anchor xml:id="_varint_8h_source_1l00064"/><link linkend="_varint_8h_1a90e13f6172ebc6d6b8df6ed9a443491f">00064</link> <emphasis role="preprocessor">#define&#32;P16(x)&#32;&#32;&#32;&#32;&#32;&#32;((u16*)(&amp;(x)))&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;</emphasis>
<anchor xml:id="_varint_8h_source_1l00065"/><link linkend="_varint_8h_1aff980abb3664242448c35e7c94df9457">00065</link> <emphasis role="preprocessor">#define&#32;Pn16(x,y)&#32;&#32;&#32;(((u16*)(&amp;(x)))[y])&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;</emphasis>
<anchor xml:id="_varint_8h_source_1l00066"/><link linkend="_varint_8h_1a495d48b6b1b59a2ad797b10d9da431ff">00066</link> <emphasis role="preprocessor">#define&#32;P32(x)&#32;&#32;&#32;&#32;&#32;&#32;((u32*)(&amp;(x)))&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;</emphasis>
<anchor xml:id="_varint_8h_source_1l00067"/><link linkend="_varint_8h_1adc92d7430c7b945896332c2e2540a52a">00067</link> <emphasis role="preprocessor">#define&#32;Pn32(x,y)&#32;&#32;&#32;(((u32*)(&amp;(x)))[y])&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;</emphasis>
<anchor xml:id="_varint_8h_source_1l00068"/>00068
<anchor xml:id="_varint_8h_source_1l00069"/><link linkend="_varint_8h_1ada574ddd6b3c52cf691b29e6efc7a817">00069</link> <emphasis role="preprocessor">#define&#32;DelLb(x)&#32;&#32;&#32;&#32;(x&#32;&amp;&#32;(x&#32;-&#32;1))&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;</emphasis>
<anchor xml:id="_varint_8h_source_1l00070"/><link linkend="_varint_8h_1a4130fb740c8bd3c4986b2fe496c74d78">00070</link> <emphasis role="preprocessor">#define&#32;qDelLb(x)&#32;&#32;&#32;(x=(x&#32;&amp;&#32;(x&#32;-&#32;1)))&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;</emphasis>
<anchor xml:id="_varint_8h_source_1l00071"/>00071
<anchor xml:id="_varint_8h_source_1l00072"/><link linkend="_varint_8h_1a338f1c6d28b8ee314ea8b33df5c6052e">00072</link> <emphasis role="preprocessor">#define&#32;toBool(x)&#32;&#32;&#32;(x!=0)&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;</emphasis>
<anchor xml:id="_varint_8h_source_1l00073"/><link linkend="_varint_8h_1af88c9f4171df59e6e0aa2db71bf9f250">00073</link> <emphasis role="preprocessor">#define&#32;uBit(x,y)&#32;&#32;&#32;(x&amp;(1&lt;&lt;y))&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;</emphasis>
<anchor xml:id="_varint_8h_source_1l00074"/><link linkend="_varint_8h_1ac123183daf1150b8b675c96cfeae4314">00074</link> <emphasis role="preprocessor">#define&#32;tBit(x,y)&#32;&#32;&#32;(toBool(uBit(x,y)))&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;</emphasis>
<anchor xml:id="_varint_8h_source_1l00075"/>00075
<anchor xml:id="_varint_8h_source_1l00076"/><link linkend="_varint_8h_1aa1b4c6a5140aae5adbc14792ed9cbaf5">00076</link> <emphasis role="preprocessor">#define&#32;sBit(x,y)&#32;&#32;&#32;(x|(1&lt;&lt;y))&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;</emphasis>
<anchor xml:id="_varint_8h_source_1l00077"/><link linkend="_varint_8h_1a6c0c97a8768383af5f921a0496bb7e6c">00077</link> <emphasis role="preprocessor">#define&#32;rBit(x,y)&#32;&#32;&#32;(x&amp;(~(1&lt;&lt;y)))&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;</emphasis>
<anchor xml:id="_varint_8h_source_1l00078"/><link linkend="_varint_8h_1a5cce0b9aa61d54efc42512f4c7796455">00078</link> <emphasis role="preprocessor">#define&#32;mBit(x,y,z)&#32;((z)?sBit(x,y):rBit(x,y))&#32;&#32;&#32;</emphasis>
<anchor xml:id="_varint_8h_source_1l00079"/>00079
<anchor xml:id="_varint_8h_source_1l00080"/><link linkend="_varint_8h_1a7ae6889c9eb9c27afb4395ef1d06eec7">00080</link> <emphasis role="preprocessor">#define&#32;LpAdd(x,y)&#32;&#32;((x+1)&lt;y?x+1:0)&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;</emphasis>
<anchor xml:id="_varint_8h_source_1l00081"/><link linkend="_varint_8h_1af8c84f28a4c47bc30bbecb56d1469fd2">00081</link> <emphasis role="preprocessor">#define&#32;LpDec(x,y)&#32;&#32;(x&gt;0?x-1:y-1)&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;</emphasis>
<anchor xml:id="_varint_8h_source_1l00082"/><link linkend="_varint_8h_1ac5268cd1ab382ef2574c21c40590d6bc">00082</link> <emphasis role="preprocessor">#define&#32;qLpAdd(x,y)&#32;(x=(x+1)&lt;y?x+1:0)&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;</emphasis>
<anchor xml:id="_varint_8h_source_1l00083"/>00083 <emphasis role="preprocessor">#define&#32;qLpDec(x,y)&#32;(x=x&gt;0?x-1:y-1)&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;&#32;</emphasis>
<anchor xml:id="_varint_8h_source_1l00085"/>00085
</programlisting></section>