CINXE.COM
RubyGems - bin_struct - Versions diffs - 0.2.0 → 0.3.0 - Mend - Supply Chain Defender
<!DOCTYPE html> <html> <head> <title> RubyGems - bin_struct - Versions diffs - 0.2.0 → 0.3.0 - Mend - Supply Chain Defender </title> <link rel="icon" type="image/png" href="/packs/media/images/production/favicons/favicon-32x32-fa0286238d4d512e71dba3881cbbcc42.png" /> <link rel="mask-icon" type="image/x-icon" href="/packs/media/images/production/favicons/favicon-786db6a85c0dea068c1a7047338024d2.svg" /> <link rel="apple-touch-icon" type="image/png" href="/packs/media/images/production/favicons/apple-touch-icon-11491aa2351c88b3b48534d1576a2ff9.png" /> <link rel="shortcut icon" type="image/x-icon" href="/packs/media/images/production/favicons/favicon-81c62e5500c39bd10e99844e94455995.ico" /> <meta name="csrf-param" content="authenticity_token" /> <meta name="csrf-token" content="UzFU9_NdXb5WBa4YdGcP2YDX71vg3QweVjamW0nnheIc--GW41eqLu5-bmcxH3F8D2mcuPcIwJDLvDVGIEUS8Q" /> <meta content='no-cache' name='turbolinks-cache-control'> <meta content='width=device-width, initial-scale=1' name='viewport'> <link rel="stylesheet" href="/packs/css/application-b44eb75784afb1e9f8ce.css" media="all" /> <script src="/packs/js/application-9f130b109122a7b55e22.js" data-turbolinks-track="reload"></script> <link href='https://fonts.googleapis.com/css?family=Nunito:200,200i,300,300i,400,400i,600,600i,700,700i,800,800i,900,900i' rel='stylesheet'> </head> <body class='registries ruby_gems diffs' id='page-top'> <div id='wrapper'> <div class='d-flex flex-column' id='content-wrapper'> <div id='content'> <nav class='navbar navbar-expand navbar-light bg-white topbar mb-4 shadow'> <a class='sidebar-brand d-flex align-items-center justify-content-center' href='/'> <div class='sidebar-brand-text mx-3 d-none d-xxl-block d-xl-block'> <img alt="Diffend" src="/packs/media/images/production/logos/vertical-dark-5363ad390f9fcfd11bfecf89a3fb60f1.svg" /> </div> </a> <div class='container'> <ul class='navbar-nav'> <li class='nav-item'> <a class='nav-link' href='/gems'> <span class='mr-2 d-none d-lg-inline text-gray-600'> RubyGems </span> </a> </li> <li class='nav-item'> <a class='nav-link' href='/npm'> <span class='mr-2 d-none d-lg-inline text-gray-600'> npm </span> </a> </li> <li class='nav-item'> <a class='nav-link' href='/pypi'> <span class='mr-2 d-none d-lg-inline text-gray-600'> PyPI </span> </a> </li> <div class='topbar-divider d-sm-block'></div> <li class='nav-item'> <a class='nav-link' href='/organizations'> <span class='mr-2 d-none d-lg-inline text-gray-600'> Organizations </span> </a> </li> </ul> <ul class='navbar-nav'> <div class='topbar-divider d-none d-sm-block'></div> <li class='nav-item'> <a class='nav-link' href='/users/sign_in'> <span class='mr-2 d-none d-lg-inline text-gray-600'> <i class='fas fa-key fa-fw mr-2'></i> Log in </span> </a> </li> <li class='nav-item'> <a class='nav-link' href='/users/sign_up'> <span class='mr-2 d-none d-lg-inline text-gray-600'> <i class='fas fa-user-plus fa-fw mr-2'></i> Sign up </span> </a> </li> </ul> </div> </nav> <div class='container'> <div class='row'> <div class='col mb-1'> <nav> <ol class='breadcrumb'> <li class='breadcrumb-item'> <a href="/gems">RubyGems</a> </li> <li class='breadcrumb-item'> <a href="/gems/bin_struct">bin_struct</a> </li> <li class='breadcrumb-item'> <a href="/gems/bin_struct">Versions diffs</a> </li> <li class='breadcrumb-item'> <a href="/gems/bin_struct/0.2.0/0.3.0">0.2.0 → 0.3.0</a> </li> </ol> </nav> </div> </div> <div class='row'> <div class='col'> <div class='text-right mb-4'> </div> </div> </div> <div class='row'> <div class='col align-items-center mb-4'> <div class='text-center'> <h2 class='text-gray-800'> bin_struct 0.2.0 → 0.3.0 </h2> </div> </div> </div> <div data-diff-id='4eb6b585-6212-4183-b341-2751dbd5dc7a' data-diff-state='finished' id='diff-id'> <div class='row'> <div class='col pt-2 text-black'> <div class='row'> <div class='col-lg-12 mb-4 mt-2'> <div class='card bg-info text-white shadow'> <div class='card-body'> <span class='icon text-white-100 mr-2'> <i class='fas fa-info-circle'></i> </span> Sign up to get <strong>free</strong> protection for your applications and to get access to all the features. </div> </div> </div> </div> <div id='diff'> <div class='mb-3'> <div class="d2h-file-list-wrapper"> <div class="d2h-file-list-header"> <span class="d2h-file-list-title">Files changed (12)</span> <a class="d2h-file-switch d2h-hide">hide</a> <a class="d2h-file-switch d2h-show">show</a> </div> <ol class="d2h-file-list"> <li class="d2h-file-list-line"> <span class="d2h-file-name-wrapper"> <svg aria-hidden="true" class="d2h-icon d2h-changed" height="16" title="modified" version="1.1" viewBox="0 0 14 16" width="14"> <path d="M13 1H1C0.45 1 0 1.45 0 2v12c0 0.55 0.45 1 1 1h12c0.55 0 1-0.45 1-1V2c0-0.55-0.45-1-1-1z m0 13H1V2h12v12zM4 8c0-1.66 1.34-3 3-3s3 1.34 3 3-1.34 3-3 3-3-1.34-3-3z"></path> </svg> <a href="/gems/bin_struct/0.2.0/0.3.0/page/1#d2h-683205" class="d2h-file-name">checksums.yaml</a> <span class="d2h-file-stats"> <span class="d2h-lines-added">+4</span> <span class="d2h-lines-deleted">-4</span> </span> </span> </li> <li class="d2h-file-list-line"> <span class="d2h-file-name-wrapper"> <svg aria-hidden="true" class="d2h-icon d2h-changed" height="16" title="modified" version="1.1" viewBox="0 0 14 16" width="14"> <path d="M13 1H1C0.45 1 0 1.45 0 2v12c0 0.55 0.45 1 1 1h12c0.55 0 1-0.45 1-1V2c0-0.55-0.45-1-1-1z m0 13H1V2h12v12zM4 8c0-1.66 1.34-3 3-3s3 1.34 3 3-1.34 3-3 3-3-1.34-3-3z"></path> </svg> <a href="/gems/bin_struct/0.2.0/0.3.0/page/1#d2h-670634" class="d2h-file-name">data/CHANGELOG.md</a> <span class="d2h-file-stats"> <span class="d2h-lines-added">+21</span> <span class="d2h-lines-deleted">-0</span> </span> </span> </li> <li class="d2h-file-list-line"> <span class="d2h-file-name-wrapper"> <svg aria-hidden="true" class="d2h-icon d2h-changed" height="16" title="modified" version="1.1" viewBox="0 0 14 16" width="14"> <path d="M13 1H1C0.45 1 0 1.45 0 2v12c0 0.55 0.45 1 1 1h12c0.55 0 1-0.45 1-1V2c0-0.55-0.45-1-1-1z m0 13H1V2h12v12zM4 8c0-1.66 1.34-3 3-3s3 1.34 3 3-1.34 3-3 3-3-1.34-3-3z"></path> </svg> <a href="/gems/bin_struct/0.2.0/0.3.0/page/1#d2h-027470" class="d2h-file-name">data/README.md</a> <span class="d2h-file-stats"> <span class="d2h-lines-added">+7</span> <span class="d2h-lines-deleted">-1</span> </span> </span> </li> <li class="d2h-file-list-line"> <span class="d2h-file-name-wrapper"> <svg aria-hidden="true" class="d2h-icon d2h-added" height="16" title="added" version="1.1" viewBox="0 0 14 16" width="14"> <path d="M13 1H1C0.45 1 0 1.45 0 2v12c0 0.55 0.45 1 1 1h12c0.55 0 1-0.45 1-1V2c0-0.55-0.45-1-1-1z m0 13H1V2h12v12zM6 9H3V7h3V4h2v3h3v2H8v3H6V9z"></path> </svg> <a href="/gems/bin_struct/0.2.0/0.3.0/page/1#d2h-720104" class="d2h-file-name">data/lib/bin_struct/bit_attr.rb</a> <span class="d2h-file-stats"> <span class="d2h-lines-added">+186</span> <span class="d2h-lines-deleted">-0</span> </span> </span> </li> <li class="d2h-file-list-line"> <span class="d2h-file-name-wrapper"> <svg aria-hidden="true" class="d2h-icon d2h-changed" height="16" title="modified" version="1.1" viewBox="0 0 14 16" width="14"> <path d="M13 1H1C0.45 1 0 1.45 0 2v12c0 0.55 0.45 1 1 1h12c0.55 0 1-0.45 1-1V2c0-0.55-0.45-1-1-1z m0 13H1V2h12v12zM4 8c0-1.66 1.34-3 3-3s3 1.34 3 3-1.34 3-3 3-3-1.34-3-3z"></path> </svg> <a href="/gems/bin_struct/0.2.0/0.3.0/page/1#d2h-871875" class="d2h-file-name">data/lib/bin_struct/cstring.rb</a> <span class="d2h-file-stats"> <span class="d2h-lines-added">+2</span> <span class="d2h-lines-deleted">-1</span> </span> </span> </li> <li class="d2h-file-list-line"> <span class="d2h-file-name-wrapper"> <svg aria-hidden="true" class="d2h-icon d2h-changed" height="16" title="modified" version="1.1" viewBox="0 0 14 16" width="14"> <path d="M13 1H1C0.45 1 0 1.45 0 2v12c0 0.55 0.45 1 1 1h12c0.55 0 1-0.45 1-1V2c0-0.55-0.45-1-1-1z m0 13H1V2h12v12zM4 8c0-1.66 1.34-3 3-3s3 1.34 3 3-1.34 3-3 3-3-1.34-3-3z"></path> </svg> <a href="/gems/bin_struct/0.2.0/0.3.0/page/1#d2h-298902" class="d2h-file-name">data/lib/bin_struct/int_string.rb</a> <span class="d2h-file-stats"> <span class="d2h-lines-added">+4</span> <span class="d2h-lines-deleted">-4</span> </span> </span> </li> <li class="d2h-file-list-line"> <span class="d2h-file-name-wrapper"> <svg aria-hidden="true" class="d2h-icon d2h-changed" height="16" title="modified" version="1.1" viewBox="0 0 14 16" width="14"> <path d="M13 1H1C0.45 1 0 1.45 0 2v12c0 0.55 0.45 1 1 1h12c0.55 0 1-0.45 1-1V2c0-0.55-0.45-1-1-1z m0 13H1V2h12v12zM4 8c0-1.66 1.34-3 3-3s3 1.34 3 3-1.34 3-3 3-3-1.34-3-3z"></path> </svg> <a href="/gems/bin_struct/0.2.0/0.3.0/page/1#d2h-549178" class="d2h-file-name">data/lib/bin_struct/string.rb</a> <span class="d2h-file-stats"> <span class="d2h-lines-added">+2</span> <span class="d2h-lines-deleted">-1</span> </span> </span> </li> <li class="d2h-file-list-line"> <span class="d2h-file-name-wrapper"> <svg aria-hidden="true" class="d2h-icon d2h-changed" height="16" title="modified" version="1.1" viewBox="0 0 14 16" width="14"> <path d="M13 1H1C0.45 1 0 1.45 0 2v12c0 0.55 0.45 1 1 1h12c0.55 0 1-0.45 1-1V2c0-0.55-0.45-1-1-1z m0 13H1V2h12v12zM4 8c0-1.66 1.34-3 3-3s3 1.34 3 3-1.34 3-3 3-3-1.34-3-3z"></path> </svg> <a href="/gems/bin_struct/0.2.0/0.3.0/page/1#d2h-327542" class="d2h-file-name">data/lib/bin_struct/struct.rb</a> <span class="d2h-file-stats"> <span class="d2h-lines-added">+113</span> <span class="d2h-lines-deleted">-134</span> </span> </span> </li> <li class="d2h-file-list-line"> <span class="d2h-file-name-wrapper"> <svg aria-hidden="true" class="d2h-icon d2h-changed" height="16" title="modified" version="1.1" viewBox="0 0 14 16" width="14"> <path d="M13 1H1C0.45 1 0 1.45 0 2v12c0 0.55 0.45 1 1 1h12c0.55 0 1-0.45 1-1V2c0-0.55-0.45-1-1-1z m0 13H1V2h12v12zM4 8c0-1.66 1.34-3 3-3s3 1.34 3 3-1.34 3-3 3-3-1.34-3-3z"></path> </svg> <a href="/gems/bin_struct/0.2.0/0.3.0/page/1#d2h-236508" class="d2h-file-name">data/lib/bin_struct/structable.rb</a> <span class="d2h-file-stats"> <span class="d2h-lines-added">+1</span> <span class="d2h-lines-deleted">-1</span> </span> </span> </li> <li class="d2h-file-list-line"> <span class="d2h-file-name-wrapper"> <svg aria-hidden="true" class="d2h-icon d2h-changed" height="16" title="modified" version="1.1" viewBox="0 0 14 16" width="14"> <path d="M13 1H1C0.45 1 0 1.45 0 2v12c0 0.55 0.45 1 1 1h12c0.55 0 1-0.45 1-1V2c0-0.55-0.45-1-1-1z m0 13H1V2h12v12zM4 8c0-1.66 1.34-3 3-3s3 1.34 3 3-1.34 3-3 3-3-1.34-3-3z"></path> </svg> <a href="/gems/bin_struct/0.2.0/0.3.0/page/1#d2h-879897" class="d2h-file-name">data/lib/bin_struct/version.rb</a> <span class="d2h-file-stats"> <span class="d2h-lines-added">+1</span> <span class="d2h-lines-deleted">-1</span> </span> </span> </li> <li class="d2h-file-list-line"> <span class="d2h-file-name-wrapper"> <svg aria-hidden="true" class="d2h-icon d2h-changed" height="16" title="modified" version="1.1" viewBox="0 0 14 16" width="14"> <path d="M13 1H1C0.45 1 0 1.45 0 2v12c0 0.55 0.45 1 1 1h12c0.55 0 1-0.45 1-1V2c0-0.55-0.45-1-1-1z m0 13H1V2h12v12zM4 8c0-1.66 1.34-3 3-3s3 1.34 3 3-1.34 3-3 3-3-1.34-3-3z"></path> </svg> <a href="/gems/bin_struct/0.2.0/0.3.0/page/1#d2h-828542" class="d2h-file-name">data/lib/bin_struct.rb</a> <span class="d2h-file-stats"> <span class="d2h-lines-added">+1</span> <span class="d2h-lines-deleted">-0</span> </span> </span> </li> <li class="d2h-file-list-line"> <span class="d2h-file-name-wrapper"> <svg aria-hidden="true" class="d2h-icon d2h-changed" height="16" title="modified" version="1.1" viewBox="0 0 14 16" width="14"> <path d="M13 1H1C0.45 1 0 1.45 0 2v12c0 0.55 0.45 1 1 1h12c0.55 0 1-0.45 1-1V2c0-0.55-0.45-1-1-1z m0 13H1V2h12v12zM4 8c0-1.66 1.34-3 3-3s3 1.34 3 3-1.34 3-3 3-3-1.34-3-3z"></path> </svg> <a href="/gems/bin_struct/0.2.0/0.3.0/page/1#d2h-004177" class="d2h-file-name">metadata</a> <span class="d2h-file-stats"> <span class="d2h-lines-added">+3</span> <span class="d2h-lines-deleted">-2</span> </span> </span> </li> </ol> </div> </div> <div id="d2h-683205" class="d2h-file-wrapper" data-lang="yaml"> <div class="d2h-file-header"> <span class="d2h-file-name-wrapper"> <svg aria-hidden="true" class="d2h-icon" height="16" version="1.1" viewBox="0 0 12 16" width="12"> <path d="M6 5H2v-1h4v1zM2 8h7v-1H2v1z m0 2h7v-1H2v1z m0 2h7v-1H2v1z m10-7.5v9.5c0 0.55-0.45 1-1 1H1c-0.55 0-1-0.45-1-1V2c0-0.55 0.45-1 1-1h7.5l3.5 3.5z m-1 0.5L8 2H1v12h10V5z"></path> </svg> <span class="d2h-file-name"><a href="#d2h-683205">checksums.yaml</a></span> <span class="d2h-tag d2h-changed d2h-changed-tag">CHANGED</span></span> <label class="d2h-file-collapse"> <input class="d2h-file-collapse-input" type="checkbox" name="viewed" value="viewed"> Viewed </label> </div> <div class="d2h-file-diff"> <div class="d2h-code-wrapper"> <table class="d2h-diff-table"> <tbody class="d2h-diff-tbody"> <tr> <td class="d2h-code-linenumber d2h-info"></td> <td class="d2h-info"> <div class="d2h-code-line">@@ -1,7 +1,7 @@</div> </td> </tr><tr> <td id="d2h-683205-23" class="d2h-code-linenumber d2h-cntx"><a href="#d2h-683205-23"> <div class="line-num1">1</div> <div class="line-num2">1</div> </a></td> <td class="d2h-cntx"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix"> </span> <span class="d2h-code-line-ctn">---</span> </div> </td> </tr><tr> <td id="d2h-683205-34" class="d2h-code-linenumber d2h-cntx"><a href="#d2h-683205-34"> <div class="line-num1">2</div> <div class="line-num2">2</div> </a></td> <td class="d2h-cntx"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix"> </span> <span class="d2h-code-line-ctn">SHA256:</span> </div> </td> </tr><tr> <td class="d2h-code-linenumber d2h-del d2h-change"> <div class="line-num1">3</div> <div class="line-num2"></div> </a></td> <td class="d2h-del d2h-change"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">-</span> <span class="d2h-code-line-ctn"> metadata.gz: <del>5a90f75409d497521af8957e89577a4e8b7c14211e5343aa9126a71ef413d759</del></span> </div> </td> </tr><tr> <td class="d2h-code-linenumber d2h-del d2h-change"> <div class="line-num1">4</div> <div class="line-num2"></div> </a></td> <td class="d2h-del d2h-change"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">-</span> <span class="d2h-code-line-ctn"> data.tar.gz: <del>b07e2bf73d2cb1f4b7be4340944cd52df4382fc94f171607357adf10ddc7a914</del></span> </div> </td> </tr><tr> <td class="d2h-code-linenumber d2h-ins d2h-change"> <div class="line-num1"></div> <div class="line-num2">3</div> </a></td> <td class="d2h-ins d2h-change"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn"> metadata.gz: <ins>44d43c8007a5ad33899e5c7ee6a09c306a64a95012bd489ee2d14d69c7e40dcf</ins></span> </div> </td> </tr><tr> <td class="d2h-code-linenumber d2h-ins d2h-change"> <div class="line-num1"></div> <div class="line-num2">4</div> </a></td> <td class="d2h-ins d2h-change"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn"> data.tar.gz: <ins>db0b44a68cb8a23b1a5110cb12bb587c4cf4a737b42443f72c0ae9241fffa6c9</ins></span> </div> </td> </tr><tr> <td id="d2h-683205-89" class="d2h-code-linenumber d2h-cntx"><a href="#d2h-683205-89"> <div class="line-num1">5</div> <div class="line-num2">5</div> </a></td> <td class="d2h-cntx"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix"> </span> <span class="d2h-code-line-ctn">SHA512:</span> </div> </td> </tr><tr> <td class="d2h-code-linenumber d2h-del d2h-change"> <div class="line-num1">6</div> <div class="line-num2"></div> </a></td> <td class="d2h-del d2h-change"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">-</span> <span class="d2h-code-line-ctn"> metadata.gz: <del>6acd7aeb0516bf6692ae5971aecb10c8ae685936f24302d909ff16f055118a68588876409819d0ba966e4f3a7b524b194e58713bfb0ccaef95eb542fca221bb3</del></span> </div> </td> </tr><tr> <td class="d2h-code-linenumber d2h-del d2h-change"> <div class="line-num1">7</div> <div class="line-num2"></div> </a></td> <td class="d2h-del d2h-change"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">-</span> <span class="d2h-code-line-ctn"> data.tar.gz: <del>790bf0b81cef084c030e0412731e3b0b852815fa1f66f5d28564278579e12b7e3fd3ef3674c6f36dd32bc792e1c248f7f20b3f65f505d3193f370b2d8c6f1d88</del></span> </div> </td> </tr><tr> <td class="d2h-code-linenumber d2h-ins d2h-change"> <div class="line-num1"></div> <div class="line-num2">6</div> </a></td> <td class="d2h-ins d2h-change"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn"> metadata.gz: <ins>287f8dbf64a09b27b5fe376f9b6a982055713cdb2453ab7dd2b5ec0489678727441a3545427bb9f1f31d0ccc733bcc10e6af703fdc3b85b7cf539614b306bc21</ins></span> </div> </td> </tr><tr> <td class="d2h-code-linenumber d2h-ins d2h-change"> <div class="line-num1"></div> <div class="line-num2">7</div> </a></td> <td class="d2h-ins d2h-change"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn"> data.tar.gz: <ins>cc3ba318afa6ac9706d57676256bbebeeec3b4dc52402728777b8c7a7fb89c9de8d893903b3e753d84a25aa6339b9aa919cfd4a223ff1f1a446a2d169047dee2</ins></span> </div> </td> </tr> </tbody> </table> </div> </div> </div> <div id="d2h-670634" class="d2h-file-wrapper" data-lang="md"> <div class="d2h-file-header"> <span class="d2h-file-name-wrapper"> <svg aria-hidden="true" class="d2h-icon" height="16" version="1.1" viewBox="0 0 12 16" width="12"> <path d="M6 5H2v-1h4v1zM2 8h7v-1H2v1z m0 2h7v-1H2v1z m0 2h7v-1H2v1z m10-7.5v9.5c0 0.55-0.45 1-1 1H1c-0.55 0-1-0.45-1-1V2c0-0.55 0.45-1 1-1h7.5l3.5 3.5z m-1 0.5L8 2H1v12h10V5z"></path> </svg> <span class="d2h-file-name"><a href="#d2h-670634">data/CHANGELOG.md</a></span> <span class="d2h-tag d2h-changed d2h-changed-tag">CHANGED</span></span> <label class="d2h-file-collapse"> <input class="d2h-file-collapse-input" type="checkbox" name="viewed" value="viewed"> Viewed </label> </div> <div class="d2h-file-diff"> <div class="d2h-code-wrapper"> <table class="d2h-diff-table"> <tbody class="d2h-diff-tbody"> <tr> <td class="d2h-code-linenumber d2h-info"></td> <td class="d2h-info"> <div class="d2h-code-line">@@ -3,6 +3,27 @@</div> </td> </tr><tr> <td id="d2h-670634-171" class="d2h-code-linenumber d2h-cntx"><a href="#d2h-670634-171"> <div class="line-num1">3</div> <div class="line-num2">3</div> </a></td> <td class="d2h-cntx"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix"> </span> <span class="d2h-code-line-ctn">The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/),</span> </div> </td> </tr><tr> <td id="d2h-670634-182" class="d2h-code-linenumber d2h-cntx"><a href="#d2h-670634-182"> <div class="line-num1">4</div> <div class="line-num2">4</div> </a></td> <td class="d2h-cntx"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix"> </span> <span class="d2h-code-line-ctn">and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).</span> </div> </td> </tr><tr> <td id="d2h-670634-193" class="d2h-code-linenumber d2h-cntx"><a href="#d2h-670634-193"> <div class="line-num1">5</div> <div class="line-num2">5</div> </a></td> <td class="d2h-cntx"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix"> </span> <span class="d2h-code-line-ctn"><br></span> </div> </td> </tr><tr> <td id="d2h-670634-204" class="d2h-code-linenumber d2h-ins"><a href="#d2h-670634-204"> <div class="line-num1"></div> <div class="line-num2">6</div> </a></td> <td class="d2h-ins"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn">## 0.3.0 - 2024-12-02</span> </div> </td> </tr><tr> <td id="d2h-670634-215" class="d2h-code-linenumber d2h-ins"><a href="#d2h-670634-215"> <div class="line-num1"></div> <div class="line-num2">7</div> </a></td> <td class="d2h-ins"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn"><br></span> </div> </td> </tr><tr> <td id="d2h-670634-226" class="d2h-code-linenumber d2h-ins"><a href="#d2h-670634-226"> <div class="line-num1"></div> <div class="line-num2">8</div> </a></td> <td class="d2h-ins"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn">### Added</span> </div> </td> </tr><tr> <td id="d2h-670634-237" class="d2h-code-linenumber d2h-ins"><a href="#d2h-670634-237"> <div class="line-num1"></div> <div class="line-num2">9</div> </a></td> <td class="d2h-ins"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn"><br></span> </div> </td> </tr><tr> <td id="d2h-670634-248" class="d2h-code-linenumber d2h-ins"><a href="#d2h-670634-248"> <div class="line-num1"></div> <div class="line-num2">10</div> </a></td> <td class="d2h-ins"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn">- `BitAddr` class is added. This class is used as a `Structable` type to handle bitfield attributes.</span> </div> </td> </tr><tr> <td id="d2h-670634-259" class="d2h-code-linenumber d2h-ins"><a href="#d2h-670634-259"> <div class="line-num1"></div> <div class="line-num2">11</div> </a></td> <td class="d2h-ins"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn">- Add `Struct.define_bit_attr`, `.define_bit_attr_before` and `.define_bit_attr_before` to define bitfield attributes.</span> </div> </td> </tr><tr> <td id="d2h-670634-270" class="d2h-code-linenumber d2h-ins"><a href="#d2h-670634-270"> <div class="line-num1"></div> <div class="line-num2">12</div> </a></td> <td class="d2h-ins"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn"><br></span> </div> </td> </tr><tr> <td id="d2h-670634-281" class="d2h-code-linenumber d2h-ins"><a href="#d2h-670634-281"> <div class="line-num1"></div> <div class="line-num2">13</div> </a></td> <td class="d2h-ins"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn">### Changed</span> </div> </td> </tr><tr> <td id="d2h-670634-292" class="d2h-code-linenumber d2h-ins"><a href="#d2h-670634-292"> <div class="line-num1"></div> <div class="line-num2">14</div> </a></td> <td class="d2h-ins"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn"><br></span> </div> </td> </tr><tr> <td id="d2h-670634-303" class="d2h-code-linenumber d2h-ins"><a href="#d2h-670634-303"> <div class="line-num1"></div> <div class="line-num2">15</div> </a></td> <td class="d2h-ins"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn">- `Struct.define_bit_attr_on` is removed in favor of `Struct.define_bit_attr`. Bitfield attributes are now first class attributes, and no more an onverlay on `Int`.</span> </div> </td> </tr><tr> <td id="d2h-670634-314" class="d2h-code-linenumber d2h-ins"><a href="#d2h-670634-314"> <div class="line-num1"></div> <div class="line-num2">16</div> </a></td> <td class="d2h-ins"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn"><br></span> </div> </td> </tr><tr> <td id="d2h-670634-325" class="d2h-code-linenumber d2h-ins"><a href="#d2h-670634-325"> <div class="line-num1"></div> <div class="line-num2">17</div> </a></td> <td class="d2h-ins"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn">## 0.2.1 - 2024-11-25</span> </div> </td> </tr><tr> <td id="d2h-670634-336" class="d2h-code-linenumber d2h-ins"><a href="#d2h-670634-336"> <div class="line-num1"></div> <div class="line-num2">18</div> </a></td> <td class="d2h-ins"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn"><br></span> </div> </td> </tr><tr> <td id="d2h-670634-347" class="d2h-code-linenumber d2h-ins"><a href="#d2h-670634-347"> <div class="line-num1"></div> <div class="line-num2">19</div> </a></td> <td class="d2h-ins"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn">### Added</span> </div> </td> </tr><tr> <td id="d2h-670634-358" class="d2h-code-linenumber d2h-ins"><a href="#d2h-670634-358"> <div class="line-num1"></div> <div class="line-num2">20</div> </a></td> <td class="d2h-ins"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn"><br></span> </div> </td> </tr><tr> <td id="d2h-670634-369" class="d2h-code-linenumber d2h-ins"><a href="#d2h-670634-369"> <div class="line-num1"></div> <div class="line-num2">21</div> </a></td> <td class="d2h-ins"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn">- `CString` and `String` initializers now accepts `:value` option to set string initial value.</span> </div> </td> </tr><tr> <td id="d2h-670634-380" class="d2h-code-linenumber d2h-ins"><a href="#d2h-670634-380"> <div class="line-num1"></div> <div class="line-num2">22</div> </a></td> <td class="d2h-ins"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn"><br></span> </div> </td> </tr><tr> <td id="d2h-670634-391" class="d2h-code-linenumber d2h-ins"><a href="#d2h-670634-391"> <div class="line-num1"></div> <div class="line-num2">23</div> </a></td> <td class="d2h-ins"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn">### Changed</span> </div> </td> </tr><tr> <td id="d2h-670634-402" class="d2h-code-linenumber d2h-ins"><a href="#d2h-670634-402"> <div class="line-num1"></div> <div class="line-num2">24</div> </a></td> <td class="d2h-ins"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn"><br></span> </div> </td> </tr><tr> <td id="d2h-670634-413" class="d2h-code-linenumber d2h-ins"><a href="#d2h-670634-413"> <div class="line-num1"></div> <div class="line-num2">25</div> </a></td> <td class="d2h-ins"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn">- `IntString` initializer option `:string` is renamed into `:value`.</span> </div> </td> </tr><tr> <td id="d2h-670634-424" class="d2h-code-linenumber d2h-ins"><a href="#d2h-670634-424"> <div class="line-num1"></div> <div class="line-num2">26</div> </a></td> <td class="d2h-ins"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn"><br></span> </div> </td> </tr><tr> <td id="d2h-670634-435" class="d2h-code-linenumber d2h-cntx"><a href="#d2h-670634-435"> <div class="line-num1">6</div> <div class="line-num2">27</div> </a></td> <td class="d2h-cntx"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix"> </span> <span class="d2h-code-line-ctn">## 0.2.0 - 2024-07-21</span> </div> </td> </tr><tr> <td id="d2h-670634-446" class="d2h-code-linenumber d2h-cntx"><a href="#d2h-670634-446"> <div class="line-num1">7</div> <div class="line-num2">28</div> </a></td> <td class="d2h-cntx"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix"> </span> <span class="d2h-code-line-ctn"><br></span> </div> </td> </tr><tr> <td id="d2h-670634-457" class="d2h-code-linenumber d2h-cntx"><a href="#d2h-670634-457"> <div class="line-num1">8</div> <div class="line-num2">29</div> </a></td> <td class="d2h-cntx"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix"> </span> <span class="d2h-code-line-ctn">### Changed</span> </div> </td> </tr> </tbody> </table> </div> </div> </div> <div id="d2h-027470" class="d2h-file-wrapper" data-lang="md"> <div class="d2h-file-header"> <span class="d2h-file-name-wrapper"> <svg aria-hidden="true" class="d2h-icon" height="16" version="1.1" viewBox="0 0 12 16" width="12"> <path d="M6 5H2v-1h4v1zM2 8h7v-1H2v1z m0 2h7v-1H2v1z m0 2h7v-1H2v1z m10-7.5v9.5c0 0.55-0.45 1-1 1H1c-0.55 0-1-0.45-1-1V2c0-0.55 0.45-1 1-1h7.5l3.5 3.5z m-1 0.5L8 2H1v12h10V5z"></path> </svg> <span class="d2h-file-name"><a href="#d2h-027470">data/README.md</a></span> <span class="d2h-tag d2h-changed d2h-changed-tag">CHANGED</span></span> <label class="d2h-file-collapse"> <input class="d2h-file-collapse-input" type="checkbox" name="viewed" value="viewed"> Viewed </label> </div> <div class="d2h-file-diff"> <div class="d2h-code-wrapper"> <table class="d2h-diff-table"> <tbody class="d2h-diff-tbody"> <tr> <td class="d2h-code-linenumber d2h-info"></td> <td class="d2h-info"> <div class="d2h-code-line">@@ -1,3 +1,6 @@</div> </td> </tr><tr> <td id="d2h-027470-495" class="d2h-code-linenumber d2h-ins"><a href="#d2h-027470-495"> <div class="line-num1"></div> <div class="line-num2">1</div> </a></td> <td class="d2h-ins"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn">[](https://badge.fury.io/rb/bin_struct)</span> </div> </td> </tr><tr> <td id="d2h-027470-506" class="d2h-code-linenumber d2h-ins"><a href="#d2h-027470-506"> <div class="line-num1"></div> <div class="line-num2">2</div> </a></td> <td class="d2h-ins"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn">[](https://github.com/lemontree55/bin_struct/actions/workflows/main.yml)</span> </div> </td> </tr><tr> <td id="d2h-027470-517" class="d2h-code-linenumber d2h-ins"><a href="#d2h-027470-517"> <div class="line-num1"></div> <div class="line-num2">3</div> </a></td> <td class="d2h-ins"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn"><br></span> </div> </td> </tr><tr> <td id="d2h-027470-528" class="d2h-code-linenumber d2h-cntx"><a href="#d2h-027470-528"> <div class="line-num1">1</div> <div class="line-num2">4</div> </a></td> <td class="d2h-cntx"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix"> </span> <span class="d2h-code-line-ctn"># BinStruct</span> </div> </td> </tr><tr> <td id="d2h-027470-539" class="d2h-code-linenumber d2h-cntx"><a href="#d2h-027470-539"> <div class="line-num1">2</div> <div class="line-num2">5</div> </a></td> <td class="d2h-cntx"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix"> </span> <span class="d2h-code-line-ctn"><br></span> </div> </td> </tr><tr> <td id="d2h-027470-550" class="d2h-code-linenumber d2h-cntx"><a href="#d2h-027470-550"> <div class="line-num1">3</div> <div class="line-num2">6</div> </a></td> <td class="d2h-cntx"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix"> </span> <span class="d2h-code-line-ctn">BinStruct provides a simple way to create and dissect binary data. It is an extraction from [PacketGen](https://github.com/lemontree55/packetgen) 3.x Fields.</span> </div> </td> </tr> <tr> <td class="d2h-code-linenumber d2h-info"></td> <td class="d2h-info"> <div class="d2h-code-line">@@ -6,9 +9,12 @@ BinStruct provides a simple way to create and dissect binary data. It is an extr</div> </td> </tr><tr> <td id="d2h-027470-567" class="d2h-code-linenumber d2h-cntx"><a href="#d2h-027470-567"> <div class="line-num1">6</div> <div class="line-num2">9</div> </a></td> <td class="d2h-cntx"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix"> </span> <span class="d2h-code-line-ctn"><br></span> </div> </td> </tr><tr> <td id="d2h-027470-578" class="d2h-code-linenumber d2h-cntx"><a href="#d2h-027470-578"> <div class="line-num1">7</div> <div class="line-num2">10</div> </a></td> <td class="d2h-cntx"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix"> </span> <span class="d2h-code-line-ctn">Installation using RubyGems is easy:</span> </div> </td> </tr><tr> <td id="d2h-027470-589" class="d2h-code-linenumber d2h-cntx"><a href="#d2h-027470-589"> <div class="line-num1">8</div> <div class="line-num2">11</div> </a></td> <td class="d2h-cntx"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix"> </span> <span class="d2h-code-line-ctn"><br></span> </div> </td> </tr><tr> <td class="d2h-code-linenumber d2h-del d2h-change"> <div class="line-num1">9</div> <div class="line-num2"></div> </a></td> <td class="d2h-del d2h-change"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">-</span> <span class="d2h-code-line-ctn"><del> $ gem install bin_struct</del></span> </div> </td> </tr><tr> <td class="d2h-code-linenumber d2h-ins d2h-change"> <div class="line-num1"></div> <div class="line-num2">12</div> </a></td> <td class="d2h-ins d2h-change"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn"><ins>```shell</ins></span> </div> </td> </tr><tr> <td id="d2h-027470-622" class="d2h-code-linenumber d2h-ins"><a href="#d2h-027470-622"> <div class="line-num1"></div> <div class="line-num2">13</div> </a></td> <td class="d2h-ins"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn">gem install bin_struct</span> </div> </td> </tr><tr> <td id="d2h-027470-633" class="d2h-code-linenumber d2h-ins"><a href="#d2h-027470-633"> <div class="line-num1"></div> <div class="line-num2">14</div> </a></td> <td class="d2h-ins"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn">```</span> </div> </td> </tr><tr> <td id="d2h-027470-644" class="d2h-code-linenumber d2h-cntx"><a href="#d2h-027470-644"> <div class="line-num1">10</div> <div class="line-num2">15</div> </a></td> <td class="d2h-cntx"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix"> </span> <span class="d2h-code-line-ctn"><br></span> </div> </td> </tr><tr> <td id="d2h-027470-655" class="d2h-code-linenumber d2h-cntx"><a href="#d2h-027470-655"> <div class="line-num1">11</div> <div class="line-num2">16</div> </a></td> <td class="d2h-cntx"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix"> </span> <span class="d2h-code-line-ctn">Or add it to a Gemfile:</span> </div> </td> </tr><tr> <td id="d2h-027470-666" class="d2h-code-linenumber d2h-ins"><a href="#d2h-027470-666"> <div class="line-num1"></div> <div class="line-num2">17</div> </a></td> <td class="d2h-ins"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn"><br></span> </div> </td> </tr><tr> <td id="d2h-027470-677" class="d2h-code-linenumber d2h-cntx"><a href="#d2h-027470-677"> <div class="line-num1">12</div> <div class="line-num2">18</div> </a></td> <td class="d2h-cntx"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix"> </span> <span class="d2h-code-line-ctn">```ruby</span> </div> </td> </tr><tr> <td id="d2h-027470-688" class="d2h-code-linenumber d2h-cntx"><a href="#d2h-027470-688"> <div class="line-num1">13</div> <div class="line-num2">19</div> </a></td> <td class="d2h-cntx"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix"> </span> <span class="d2h-code-line-ctn">gem 'bin_struct'</span> </div> </td> </tr><tr> <td id="d2h-027470-699" class="d2h-code-linenumber d2h-cntx"><a href="#d2h-027470-699"> <div class="line-num1">14</div> <div class="line-num2">20</div> </a></td> <td class="d2h-cntx"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix"> </span> <span class="d2h-code-line-ctn">```</span> </div> </td> </tr> </tbody> </table> </div> </div> </div> <div id="d2h-720104" class="d2h-file-wrapper" data-lang="rb"> <div class="d2h-file-header"> <span class="d2h-file-name-wrapper"> <svg aria-hidden="true" class="d2h-icon" height="16" version="1.1" viewBox="0 0 12 16" width="12"> <path d="M6 5H2v-1h4v1zM2 8h7v-1H2v1z m0 2h7v-1H2v1z m0 2h7v-1H2v1z m10-7.5v9.5c0 0.55-0.45 1-1 1H1c-0.55 0-1-0.45-1-1V2c0-0.55 0.45-1 1-1h7.5l3.5 3.5z m-1 0.5L8 2H1v12h10V5z"></path> </svg> <span class="d2h-file-name"><a href="#d2h-720104">data/lib/bin_struct/bit_attr.rb</a></span> <span class="d2h-tag d2h-added d2h-added-tag">ADDED</span></span> <label class="d2h-file-collapse"> <input class="d2h-file-collapse-input" type="checkbox" name="viewed" value="viewed"> Viewed </label> </div> <div class="d2h-file-diff"> <div class="d2h-code-wrapper"> <table class="d2h-diff-table"> <tbody class="d2h-diff-tbody"> <tr> <td class="d2h-code-linenumber d2h-info"></td> <td class="d2h-info"> <div class="d2h-code-line">@@ -0,0 +1,186 @@</div> </td> </tr><tr> <td id="d2h-720104-737" class="d2h-code-linenumber d2h-ins"><a href="#d2h-720104-737"> <div class="line-num1"></div> <div class="line-num2">1</div> </a></td> <td class="d2h-ins"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn"># frozen_string_literal: true</span> </div> </td> </tr><tr> <td id="d2h-720104-748" class="d2h-code-linenumber d2h-ins"><a href="#d2h-720104-748"> <div class="line-num1"></div> <div class="line-num2">2</div> </a></td> <td class="d2h-ins"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn"><br></span> </div> </td> </tr><tr> <td id="d2h-720104-759" class="d2h-code-linenumber d2h-ins"><a href="#d2h-720104-759"> <div class="line-num1"></div> <div class="line-num2">3</div> </a></td> <td class="d2h-ins"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn"># This file is part of BinStruct</span> </div> </td> </tr><tr> <td id="d2h-720104-770" class="d2h-code-linenumber d2h-ins"><a href="#d2h-720104-770"> <div class="line-num1"></div> <div class="line-num2">4</div> </a></td> <td class="d2h-ins"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn"># see https://github.com/lemontree55/bin_struct for more informations</span> </div> </td> </tr><tr> <td id="d2h-720104-781" class="d2h-code-linenumber d2h-ins"><a href="#d2h-720104-781"> <div class="line-num1"></div> <div class="line-num2">5</div> </a></td> <td class="d2h-ins"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn"># Copyright (C) 2024 LemonTree55 <lenontree@proton.me></span> </div> </td> </tr><tr> <td id="d2h-720104-792" class="d2h-code-linenumber d2h-ins"><a href="#d2h-720104-792"> <div class="line-num1"></div> <div class="line-num2">6</div> </a></td> <td class="d2h-ins"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn"># This program is published under MIT license.</span> </div> </td> </tr><tr> <td id="d2h-720104-803" class="d2h-code-linenumber d2h-ins"><a href="#d2h-720104-803"> <div class="line-num1"></div> <div class="line-num2">7</div> </a></td> <td class="d2h-ins"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn">require 'digest'</span> </div> </td> </tr><tr> <td id="d2h-720104-814" class="d2h-code-linenumber d2h-ins"><a href="#d2h-720104-814"> <div class="line-num1"></div> <div class="line-num2">8</div> </a></td> <td class="d2h-ins"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn"><br></span> </div> </td> </tr><tr> <td id="d2h-720104-825" class="d2h-code-linenumber d2h-ins"><a href="#d2h-720104-825"> <div class="line-num1"></div> <div class="line-num2">9</div> </a></td> <td class="d2h-ins"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn">module BinStruct</span> </div> </td> </tr><tr> <td id="d2h-720104-836" class="d2h-code-linenumber d2h-ins"><a href="#d2h-720104-836"> <div class="line-num1"></div> <div class="line-num2">10</div> </a></td> <td class="d2h-ins"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn"> # Define a bitfield attribute to embed in a {Struct}.</span> </div> </td> </tr><tr> <td id="d2h-720104-847" class="d2h-code-linenumber d2h-ins"><a href="#d2h-720104-847"> <div class="line-num1"></div> <div class="line-num2">11</div> </a></td> <td class="d2h-ins"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn"> #</span> </div> </td> </tr><tr> <td id="d2h-720104-858" class="d2h-code-linenumber d2h-ins"><a href="#d2h-720104-858"> <div class="line-num1"></div> <div class="line-num2">12</div> </a></td> <td class="d2h-ins"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn"> # class MyStruct < BinStruct::Struct</span> </div> </td> </tr><tr> <td id="d2h-720104-869" class="d2h-code-linenumber d2h-ins"><a href="#d2h-720104-869"> <div class="line-num1"></div> <div class="line-num2">13</div> </a></td> <td class="d2h-ins"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn"> # # Create a 32-bit bitfield attribute, with fields a (16 bits), b and c (4 bits each) and d (8 bits).</span> </div> </td> </tr><tr> <td id="d2h-720104-880" class="d2h-code-linenumber d2h-ins"><a href="#d2h-720104-880"> <div class="line-num1"></div> <div class="line-num2">14</div> </a></td> <td class="d2h-ins"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn"> # # a is the leftmost field in bitfield, and d the rightmost one.</span> </div> </td> </tr><tr> <td id="d2h-720104-891" class="d2h-code-linenumber d2h-ins"><a href="#d2h-720104-891"> <div class="line-num1"></div> <div class="line-num2">15</div> </a></td> <td class="d2h-ins"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn"> # define_attr :int32, BinStruct::BitAttr.create(width: 32, a: 16, b: 4, c: 4, d:8)</span> </div> </td> </tr><tr> <td id="d2h-720104-902" class="d2h-code-linenumber d2h-ins"><a href="#d2h-720104-902"> <div class="line-num1"></div> <div class="line-num2">16</div> </a></td> <td class="d2h-ins"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn"> # end</span> </div> </td> </tr><tr> <td id="d2h-720104-913" class="d2h-code-linenumber d2h-ins"><a href="#d2h-720104-913"> <div class="line-num1"></div> <div class="line-num2">17</div> </a></td> <td class="d2h-ins"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn"> # @since 0.3.0</span> </div> </td> </tr><tr> <td id="d2h-720104-924" class="d2h-code-linenumber d2h-ins"><a href="#d2h-720104-924"> <div class="line-num1"></div> <div class="line-num2">18</div> </a></td> <td class="d2h-ins"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn"> # @author LemonTree55</span> </div> </td> </tr><tr> <td id="d2h-720104-935" class="d2h-code-linenumber d2h-ins"><a href="#d2h-720104-935"> <div class="line-num1"></div> <div class="line-num2">19</div> </a></td> <td class="d2h-ins"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn"> class BitAttr</span> </div> </td> </tr><tr> <td id="d2h-720104-946" class="d2h-code-linenumber d2h-ins"><a href="#d2h-720104-946"> <div class="line-num1"></div> <div class="line-num2">20</div> </a></td> <td class="d2h-ins"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn"> include Structable</span> </div> </td> </tr><tr> <td id="d2h-720104-957" class="d2h-code-linenumber d2h-ins"><a href="#d2h-720104-957"> <div class="line-num1"></div> <div class="line-num2">21</div> </a></td> <td class="d2h-ins"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn"><br></span> </div> </td> </tr><tr> <td id="d2h-720104-968" class="d2h-code-linenumber d2h-ins"><a href="#d2h-720104-968"> <div class="line-num1"></div> <div class="line-num2">22</div> </a></td> <td class="d2h-ins"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn"> # @return [Integer] width in bits of bit attribute</span> </div> </td> </tr><tr> <td id="d2h-720104-979" class="d2h-code-linenumber d2h-ins"><a href="#d2h-720104-979"> <div class="line-num1"></div> <div class="line-num2">23</div> </a></td> <td class="d2h-ins"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn"> attr_reader :width</span> </div> </td> </tr><tr> <td id="d2h-720104-990" class="d2h-code-linenumber d2h-ins"><a href="#d2h-720104-990"> <div class="line-num1"></div> <div class="line-num2">24</div> </a></td> <td class="d2h-ins"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn"> # @return [Array[Symbol]]</span> </div> </td> </tr><tr> <td id="d2h-720104-1001" class="d2h-code-linenumber d2h-ins"><a href="#d2h-720104-1001"> <div class="line-num1"></div> <div class="line-num2">25</div> </a></td> <td class="d2h-ins"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn"> attr_reader :bit_methods</span> </div> </td> </tr><tr> <td id="d2h-720104-1012" class="d2h-code-linenumber d2h-ins"><a href="#d2h-720104-1012"> <div class="line-num1"></div> <div class="line-num2">26</div> </a></td> <td class="d2h-ins"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn"><br></span> </div> </td> </tr><tr> <td id="d2h-720104-1023" class="d2h-code-linenumber d2h-ins"><a href="#d2h-720104-1023"> <div class="line-num1"></div> <div class="line-num2">27</div> </a></td> <td class="d2h-ins"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn"> # @private</span> </div> </td> </tr><tr> <td id="d2h-720104-1034" class="d2h-code-linenumber d2h-ins"><a href="#d2h-720104-1034"> <div class="line-num1"></div> <div class="line-num2">28</div> </a></td> <td class="d2h-ins"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn"> Parameters = Struct.new(:width, :fields, :int)</span> </div> </td> </tr><tr> <td id="d2h-720104-1045" class="d2h-code-linenumber d2h-ins"><a href="#d2h-720104-1045"> <div class="line-num1"></div> <div class="line-num2">29</div> </a></td> <td class="d2h-ins"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn"><br></span> </div> </td> </tr><tr> <td id="d2h-720104-1056" class="d2h-code-linenumber d2h-ins"><a href="#d2h-720104-1056"> <div class="line-num1"></div> <div class="line-num2">30</div> </a></td> <td class="d2h-ins"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn"> class << self</span> </div> </td> </tr><tr> <td id="d2h-720104-1067" class="d2h-code-linenumber d2h-ins"><a href="#d2h-720104-1067"> <div class="line-num1"></div> <div class="line-num2">31</div> </a></td> <td class="d2h-ins"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn"> @cache = {}</span> </div> </td> </tr><tr> <td id="d2h-720104-1078" class="d2h-code-linenumber d2h-ins"><a href="#d2h-720104-1078"> <div class="line-num1"></div> <div class="line-num2">32</div> </a></td> <td class="d2h-ins"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn"><br></span> </div> </td> </tr><tr> <td id="d2h-720104-1089" class="d2h-code-linenumber d2h-ins"><a href="#d2h-720104-1089"> <div class="line-num1"></div> <div class="line-num2">33</div> </a></td> <td class="d2h-ins"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn"> # @private</span> </div> </td> </tr><tr> <td id="d2h-720104-1100" class="d2h-code-linenumber d2h-ins"><a href="#d2h-720104-1100"> <div class="line-num1"></div> <div class="line-num2">34</div> </a></td> <td class="d2h-ins"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn"> # @return [Parameters]</span> </div> </td> </tr><tr> <td id="d2h-720104-1111" class="d2h-code-linenumber d2h-ins"><a href="#d2h-720104-1111"> <div class="line-num1"></div> <div class="line-num2">35</div> </a></td> <td class="d2h-ins"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn"> attr_reader :parameters</span> </div> </td> </tr><tr> <td id="d2h-720104-1122" class="d2h-code-linenumber d2h-ins"><a href="#d2h-720104-1122"> <div class="line-num1"></div> <div class="line-num2">36</div> </a></td> <td class="d2h-ins"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn"><br></span> </div> </td> </tr><tr> <td id="d2h-720104-1133" class="d2h-code-linenumber d2h-ins"><a href="#d2h-720104-1133"> <div class="line-num1"></div> <div class="line-num2">37</div> </a></td> <td class="d2h-ins"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn"> # Create a new {BitAttr} subclass with specified parameters</span> </div> </td> </tr><tr> <td id="d2h-720104-1144" class="d2h-code-linenumber d2h-ins"><a href="#d2h-720104-1144"> <div class="line-num1"></div> <div class="line-num2">38</div> </a></td> <td class="d2h-ins"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn"> # @param [Integer] width size of bitfields in bits. Must be a size of an {Int} (8, 16, 24, 32 or 64 bits).</span> </div> </td> </tr><tr> <td id="d2h-720104-1155" class="d2h-code-linenumber d2h-ins"><a href="#d2h-720104-1155"> <div class="line-num1"></div> <div class="line-num2">39</div> </a></td> <td class="d2h-ins"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn"> # @param [:big,:little,:native] endian endianess of bit attribute as an integer</span> </div> </td> </tr><tr> <td id="d2h-720104-1166" class="d2h-code-linenumber d2h-ins"><a href="#d2h-720104-1166"> <div class="line-num1"></div> <div class="line-num2">40</div> </a></td> <td class="d2h-ins"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn"> # @param [Hash{Symbol=>Integer}] fields hash associating field names with their size. Total size MUST be equal</span> </div> </td> </tr><tr> <td id="d2h-720104-1177" class="d2h-code-linenumber d2h-ins"><a href="#d2h-720104-1177"> <div class="line-num1"></div> <div class="line-num2">41</div> </a></td> <td class="d2h-ins"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn"> # to +width+.</span> </div> </td> </tr><tr> <td id="d2h-720104-1188" class="d2h-code-linenumber d2h-ins"><a href="#d2h-720104-1188"> <div class="line-num1"></div> <div class="line-num2">42</div> </a></td> <td class="d2h-ins"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn"> # @return [Class]</span> </div> </td> </tr><tr> <td id="d2h-720104-1199" class="d2h-code-linenumber d2h-ins"><a href="#d2h-720104-1199"> <div class="line-num1"></div> <div class="line-num2">43</div> </a></td> <td class="d2h-ins"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn"> # @raise [ArgumentError] raise if:</span> </div> </td> </tr><tr> <td id="d2h-720104-1210" class="d2h-code-linenumber d2h-ins"><a href="#d2h-720104-1210"> <div class="line-num1"></div> <div class="line-num2">44</div> </a></td> <td class="d2h-ins"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn"> # * width is not a size of one of {Int} subclasses,</span> </div> </td> </tr><tr> <td id="d2h-720104-1221" class="d2h-code-linenumber d2h-ins"><a href="#d2h-720104-1221"> <div class="line-num1"></div> <div class="line-num2">45</div> </a></td> <td class="d2h-ins"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn"> # * sum of bitfield sizes is not equal to +width+</span> </div> </td> </tr><tr> <td id="d2h-720104-1232" class="d2h-code-linenumber d2h-ins"><a href="#d2h-720104-1232"> <div class="line-num1"></div> <div class="line-num2">46</div> </a></td> <td class="d2h-ins"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn"> def create(width:, endian: :big, **fields)</span> </div> </td> </tr><tr> <td id="d2h-720104-1243" class="d2h-code-linenumber d2h-ins"><a href="#d2h-720104-1243"> <div class="line-num1"></div> <div class="line-num2">47</div> </a></td> <td class="d2h-ins"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn"> raise ArgumentError, 'with must be 8, 16, 24, 32 or 64' unless [8, 16, 24, 32, 64].include?(width)</span> </div> </td> </tr><tr> <td id="d2h-720104-1254" class="d2h-code-linenumber d2h-ins"><a href="#d2h-720104-1254"> <div class="line-num1"></div> <div class="line-num2">48</div> </a></td> <td class="d2h-ins"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn"><br></span> </div> </td> </tr><tr> <td id="d2h-720104-1265" class="d2h-code-linenumber d2h-ins"><a href="#d2h-720104-1265"> <div class="line-num1"></div> <div class="line-num2">49</div> </a></td> <td class="d2h-ins"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn"> hsh = compute_hash(width, endian, fields)</span> </div> </td> </tr><tr> <td id="d2h-720104-1276" class="d2h-code-linenumber d2h-ins"><a href="#d2h-720104-1276"> <div class="line-num1"></div> <div class="line-num2">50</div> </a></td> <td class="d2h-ins"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn"> cached = cache[hsh]</span> </div> </td> </tr><tr> <td id="d2h-720104-1287" class="d2h-code-linenumber d2h-ins"><a href="#d2h-720104-1287"> <div class="line-num1"></div> <div class="line-num2">51</div> </a></td> <td class="d2h-ins"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn"> return cached if cached</span> </div> </td> </tr><tr> <td id="d2h-720104-1298" class="d2h-code-linenumber d2h-ins"><a href="#d2h-720104-1298"> <div class="line-num1"></div> <div class="line-num2">52</div> </a></td> <td class="d2h-ins"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn"><br></span> </div> </td> </tr><tr> <td id="d2h-720104-1309" class="d2h-code-linenumber d2h-ins"><a href="#d2h-720104-1309"> <div class="line-num1"></div> <div class="line-num2">53</div> </a></td> <td class="d2h-ins"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn"> total_size = fields.reduce(0) { |acc, ary| acc + ary.last }</span> </div> </td> </tr><tr> <td id="d2h-720104-1320" class="d2h-code-linenumber d2h-ins"><a href="#d2h-720104-1320"> <div class="line-num1"></div> <div class="line-num2">54</div> </a></td> <td class="d2h-ins"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn"> raise ArgumentError, "sum of bitfield sizes is not equal to #{width}" unless total_size == width</span> </div> </td> </tr><tr> <td id="d2h-720104-1331" class="d2h-code-linenumber d2h-ins"><a href="#d2h-720104-1331"> <div class="line-num1"></div> <div class="line-num2">55</div> </a></td> <td class="d2h-ins"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn"><br></span> </div> </td> </tr><tr> <td id="d2h-720104-1342" class="d2h-code-linenumber d2h-ins"><a href="#d2h-720104-1342"> <div class="line-num1"></div> <div class="line-num2">56</div> </a></td> <td class="d2h-ins"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn"> cache[hsh] = Class.new(self) do</span> </div> </td> </tr><tr> <td id="d2h-720104-1353" class="d2h-code-linenumber d2h-ins"><a href="#d2h-720104-1353"> <div class="line-num1"></div> <div class="line-num2">57</div> </a></td> <td class="d2h-ins"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn"> int_klass = BinStruct.const_get("Int#{width}")</span> </div> </td> </tr><tr> <td id="d2h-720104-1364" class="d2h-code-linenumber d2h-ins"><a href="#d2h-720104-1364"> <div class="line-num1"></div> <div class="line-num2">58</div> </a></td> <td class="d2h-ins"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn"> @parameters = Parameters.new(width, fields, int_klass.new(endian: endian)).freeze</span> </div> </td> </tr><tr> <td id="d2h-720104-1375" class="d2h-code-linenumber d2h-ins"><a href="#d2h-720104-1375"> <div class="line-num1"></div> <div class="line-num2">59</div> </a></td> <td class="d2h-ins"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn"> end</span> </div> </td> </tr><tr> <td id="d2h-720104-1386" class="d2h-code-linenumber d2h-ins"><a href="#d2h-720104-1386"> <div class="line-num1"></div> <div class="line-num2">60</div> </a></td> <td class="d2h-ins"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn"> end</span> </div> </td> </tr><tr> <td id="d2h-720104-1397" class="d2h-code-linenumber d2h-ins"><a href="#d2h-720104-1397"> <div class="line-num1"></div> <div class="line-num2">61</div> </a></td> <td class="d2h-ins"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn"><br></span> </div> </td> </tr><tr> <td id="d2h-720104-1408" class="d2h-code-linenumber d2h-ins"><a href="#d2h-720104-1408"> <div class="line-num1"></div> <div class="line-num2">62</div> </a></td> <td class="d2h-ins"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn"> private</span> </div> </td> </tr><tr> <td id="d2h-720104-1419" class="d2h-code-linenumber d2h-ins"><a href="#d2h-720104-1419"> <div class="line-num1"></div> <div class="line-num2">63</div> </a></td> <td class="d2h-ins"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn"><br></span> </div> </td> </tr><tr> <td id="d2h-720104-1430" class="d2h-code-linenumber d2h-ins"><a href="#d2h-720104-1430"> <div class="line-num1"></div> <div class="line-num2">64</div> </a></td> <td class="d2h-ins"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn"> # @return [Hash{::String=>Class}]</span> </div> </td> </tr><tr> <td id="d2h-720104-1441" class="d2h-code-linenumber d2h-ins"><a href="#d2h-720104-1441"> <div class="line-num1"></div> <div class="line-num2">65</div> </a></td> <td class="d2h-ins"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn"> def cache</span> </div> </td> </tr><tr> <td id="d2h-720104-1452" class="d2h-code-linenumber d2h-ins"><a href="#d2h-720104-1452"> <div class="line-num1"></div> <div class="line-num2">66</div> </a></td> <td class="d2h-ins"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn"> return @cache if defined? @cache</span> </div> </td> </tr><tr> <td id="d2h-720104-1463" class="d2h-code-linenumber d2h-ins"><a href="#d2h-720104-1463"> <div class="line-num1"></div> <div class="line-num2">67</div> </a></td> <td class="d2h-ins"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn"><br></span> </div> </td> </tr><tr> <td id="d2h-720104-1474" class="d2h-code-linenumber d2h-ins"><a href="#d2h-720104-1474"> <div class="line-num1"></div> <div class="line-num2">68</div> </a></td> <td class="d2h-ins"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn"> @cache = {}</span> </div> </td> </tr><tr> <td id="d2h-720104-1485" class="d2h-code-linenumber d2h-ins"><a href="#d2h-720104-1485"> <div class="line-num1"></div> <div class="line-num2">69</div> </a></td> <td class="d2h-ins"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn"> end</span> </div> </td> </tr><tr> <td id="d2h-720104-1496" class="d2h-code-linenumber d2h-ins"><a href="#d2h-720104-1496"> <div class="line-num1"></div> <div class="line-num2">70</div> </a></td> <td class="d2h-ins"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn"><br></span> </div> </td> </tr><tr> <td id="d2h-720104-1507" class="d2h-code-linenumber d2h-ins"><a href="#d2h-720104-1507"> <div class="line-num1"></div> <div class="line-num2">71</div> </a></td> <td class="d2h-ins"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn"> # @param [::Array] params</span> </div> </td> </tr><tr> <td id="d2h-720104-1518" class="d2h-code-linenumber d2h-ins"><a href="#d2h-720104-1518"> <div class="line-num1"></div> <div class="line-num2">72</div> </a></td> <td class="d2h-ins"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn"> # @return [::String]</span> </div> </td> </tr><tr> <td id="d2h-720104-1529" class="d2h-code-linenumber d2h-ins"><a href="#d2h-720104-1529"> <div class="line-num1"></div> <div class="line-num2">73</div> </a></td> <td class="d2h-ins"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn"> def compute_hash(*params)</span> </div> </td> </tr><tr> <td id="d2h-720104-1540" class="d2h-code-linenumber d2h-ins"><a href="#d2h-720104-1540"> <div class="line-num1"></div> <div class="line-num2">74</div> </a></td> <td class="d2h-ins"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn"> Digest::MD5.digest(Marshal.dump(params))</span> </div> </td> </tr><tr> <td id="d2h-720104-1551" class="d2h-code-linenumber d2h-ins"><a href="#d2h-720104-1551"> <div class="line-num1"></div> <div class="line-num2">75</div> </a></td> <td class="d2h-ins"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn"> end</span> </div> </td> </tr><tr> <td id="d2h-720104-1562" class="d2h-code-linenumber d2h-ins"><a href="#d2h-720104-1562"> <div class="line-num1"></div> <div class="line-num2">76</div> </a></td> <td class="d2h-ins"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn"> end</span> </div> </td> </tr><tr> <td id="d2h-720104-1573" class="d2h-code-linenumber d2h-ins"><a href="#d2h-720104-1573"> <div class="line-num1"></div> <div class="line-num2">77</div> </a></td> <td class="d2h-ins"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn"><br></span> </div> </td> </tr><tr> <td id="d2h-720104-1584" class="d2h-code-linenumber d2h-ins"><a href="#d2h-720104-1584"> <div class="line-num1"></div> <div class="line-num2">78</div> </a></td> <td class="d2h-ins"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn"> # Initialize bit attribute</span> </div> </td> </tr><tr> <td id="d2h-720104-1595" class="d2h-code-linenumber d2h-ins"><a href="#d2h-720104-1595"> <div class="line-num1"></div> <div class="line-num2">79</div> </a></td> <td class="d2h-ins"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn"> # @param [Hash{Symbol=>Integer}] opts initialization values for fields, where keys are field names and values are</span> </div> </td> </tr><tr> <td id="d2h-720104-1606" class="d2h-code-linenumber d2h-ins"><a href="#d2h-720104-1606"> <div class="line-num1"></div> <div class="line-num2">80</div> </a></td> <td class="d2h-ins"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn"> # initialization values</span> </div> </td> </tr><tr> <td id="d2h-720104-1617" class="d2h-code-linenumber d2h-ins"><a href="#d2h-720104-1617"> <div class="line-num1"></div> <div class="line-num2">81</div> </a></td> <td class="d2h-ins"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn"> # @return [self]</span> </div> </td> </tr><tr> <td id="d2h-720104-1628" class="d2h-code-linenumber d2h-ins"><a href="#d2h-720104-1628"> <div class="line-num1"></div> <div class="line-num2">82</div> </a></td> <td class="d2h-ins"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn"> def initialize(opts = {})</span> </div> </td> </tr><tr> <td id="d2h-720104-1639" class="d2h-code-linenumber d2h-ins"><a href="#d2h-720104-1639"> <div class="line-num1"></div> <div class="line-num2">83</div> </a></td> <td class="d2h-ins"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn"> parameters = self.class.parameters</span> </div> </td> </tr><tr> <td id="d2h-720104-1650" class="d2h-code-linenumber d2h-ins"><a href="#d2h-720104-1650"> <div class="line-num1"></div> <div class="line-num2">84</div> </a></td> <td class="d2h-ins"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn"> raise NotImplementedError, '#initialize may only be called on subclass of {self.class}' if parameters.nil?</span> </div> </td> </tr><tr> <td id="d2h-720104-1661" class="d2h-code-linenumber d2h-ins"><a href="#d2h-720104-1661"> <div class="line-num1"></div> <div class="line-num2">85</div> </a></td> <td class="d2h-ins"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn"><br></span> </div> </td> </tr><tr> <td id="d2h-720104-1672" class="d2h-code-linenumber d2h-ins"><a href="#d2h-720104-1672"> <div class="line-num1"></div> <div class="line-num2">86</div> </a></td> <td class="d2h-ins"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn"> @width = parameters.width</span> </div> </td> </tr><tr> <td id="d2h-720104-1683" class="d2h-code-linenumber d2h-ins"><a href="#d2h-720104-1683"> <div class="line-num1"></div> <div class="line-num2">87</div> </a></td> <td class="d2h-ins"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn"> @fields = parameters.fields</span> </div> </td> </tr><tr> <td id="d2h-720104-1694" class="d2h-code-linenumber d2h-ins"><a href="#d2h-720104-1694"> <div class="line-num1"></div> <div class="line-num2">88</div> </a></td> <td class="d2h-ins"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn"> @int = parameters.int.dup</span> </div> </td> </tr><tr> <td id="d2h-720104-1705" class="d2h-code-linenumber d2h-ins"><a href="#d2h-720104-1705"> <div class="line-num1"></div> <div class="line-num2">89</div> </a></td> <td class="d2h-ins"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn"> @data = {}</span> </div> </td> </tr><tr> <td id="d2h-720104-1716" class="d2h-code-linenumber d2h-ins"><a href="#d2h-720104-1716"> <div class="line-num1"></div> <div class="line-num2">90</div> </a></td> <td class="d2h-ins"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn"> @bit_methods = []</span> </div> </td> </tr><tr> <td id="d2h-720104-1727" class="d2h-code-linenumber d2h-ins"><a href="#d2h-720104-1727"> <div class="line-num1"></div> <div class="line-num2">91</div> </a></td> <td class="d2h-ins"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn"><br></span> </div> </td> </tr><tr> <td id="d2h-720104-1738" class="d2h-code-linenumber d2h-ins"><a href="#d2h-720104-1738"> <div class="line-num1"></div> <div class="line-num2">92</div> </a></td> <td class="d2h-ins"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn"> parameters.fields.each do |name, size|</span> </div> </td> </tr><tr> <td id="d2h-720104-1749" class="d2h-code-linenumber d2h-ins"><a href="#d2h-720104-1749"> <div class="line-num1"></div> <div class="line-num2">93</div> </a></td> <td class="d2h-ins"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn"> @data[name] = opts[name] || 0</span> </div> </td> </tr><tr> <td id="d2h-720104-1760" class="d2h-code-linenumber d2h-ins"><a href="#d2h-720104-1760"> <div class="line-num1"></div> <div class="line-num2">94</div> </a></td> <td class="d2h-ins"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn"> define_methods(name, size)</span> </div> </td> </tr><tr> <td id="d2h-720104-1771" class="d2h-code-linenumber d2h-ins"><a href="#d2h-720104-1771"> <div class="line-num1"></div> <div class="line-num2">95</div> </a></td> <td class="d2h-ins"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn"> end</span> </div> </td> </tr><tr> <td id="d2h-720104-1782" class="d2h-code-linenumber d2h-ins"><a href="#d2h-720104-1782"> <div class="line-num1"></div> <div class="line-num2">96</div> </a></td> <td class="d2h-ins"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn"> @bit_methods.freeze</span> </div> </td> </tr><tr> <td id="d2h-720104-1793" class="d2h-code-linenumber d2h-ins"><a href="#d2h-720104-1793"> <div class="line-num1"></div> <div class="line-num2">97</div> </a></td> <td class="d2h-ins"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn"> end</span> </div> </td> </tr><tr> <td id="d2h-720104-1804" class="d2h-code-linenumber d2h-ins"><a href="#d2h-720104-1804"> <div class="line-num1"></div> <div class="line-num2">98</div> </a></td> <td class="d2h-ins"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn"><br></span> </div> </td> </tr><tr> <td id="d2h-720104-1815" class="d2h-code-linenumber d2h-ins"><a href="#d2h-720104-1815"> <div class="line-num1"></div> <div class="line-num2">99</div> </a></td> <td class="d2h-ins"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn"> # Get type name</span> </div> </td> </tr><tr> <td id="d2h-720104-1826" class="d2h-code-linenumber d2h-ins"><a href="#d2h-720104-1826"> <div class="line-num1"></div> <div class="line-num2">100</div> </a></td> <td class="d2h-ins"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn"> # @return [::String]</span> </div> </td> </tr><tr> <td id="d2h-720104-1837" class="d2h-code-linenumber d2h-ins"><a href="#d2h-720104-1837"> <div class="line-num1"></div> <div class="line-num2">101</div> </a></td> <td class="d2h-ins"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn"> def type_name</span> </div> </td> </tr><tr> <td id="d2h-720104-1848" class="d2h-code-linenumber d2h-ins"><a href="#d2h-720104-1848"> <div class="line-num1"></div> <div class="line-num2">102</div> </a></td> <td class="d2h-ins"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn"> return @type_name if defined? @type_name</span> </div> </td> </tr><tr> <td id="d2h-720104-1859" class="d2h-code-linenumber d2h-ins"><a href="#d2h-720104-1859"> <div class="line-num1"></div> <div class="line-num2">103</div> </a></td> <td class="d2h-ins"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn"><br></span> </div> </td> </tr><tr> <td id="d2h-720104-1870" class="d2h-code-linenumber d2h-ins"><a href="#d2h-720104-1870"> <div class="line-num1"></div> <div class="line-num2">104</div> </a></td> <td class="d2h-ins"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn"> endian_suffix = case @int.endian</span> </div> </td> </tr><tr> <td id="d2h-720104-1881" class="d2h-code-linenumber d2h-ins"><a href="#d2h-720104-1881"> <div class="line-num1"></div> <div class="line-num2">105</div> </a></td> <td class="d2h-ins"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn"> when :big then ''</span> </div> </td> </tr><tr> <td id="d2h-720104-1892" class="d2h-code-linenumber d2h-ins"><a href="#d2h-720104-1892"> <div class="line-num1"></div> <div class="line-num2">106</div> </a></td> <td class="d2h-ins"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn"> when :little then 'le'</span> </div> </td> </tr><tr> <td id="d2h-720104-1903" class="d2h-code-linenumber d2h-ins"><a href="#d2h-720104-1903"> <div class="line-num1"></div> <div class="line-num2">107</div> </a></td> <td class="d2h-ins"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn"> when :native then 'n'</span> </div> </td> </tr><tr> <td id="d2h-720104-1914" class="d2h-code-linenumber d2h-ins"><a href="#d2h-720104-1914"> <div class="line-num1"></div> <div class="line-num2">108</div> </a></td> <td class="d2h-ins"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn"> end</span> </div> </td> </tr><tr> <td id="d2h-720104-1925" class="d2h-code-linenumber d2h-ins"><a href="#d2h-720104-1925"> <div class="line-num1"></div> <div class="line-num2">109</div> </a></td> <td class="d2h-ins"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn"> @type_name = "BitAttr#{@width}#{endian_suffix}"</span> </div> </td> </tr><tr> <td id="d2h-720104-1936" class="d2h-code-linenumber d2h-ins"><a href="#d2h-720104-1936"> <div class="line-num1"></div> <div class="line-num2">110</div> </a></td> <td class="d2h-ins"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn"> end</span> </div> </td> </tr><tr> <td id="d2h-720104-1947" class="d2h-code-linenumber d2h-ins"><a href="#d2h-720104-1947"> <div class="line-num1"></div> <div class="line-num2">111</div> </a></td> <td class="d2h-ins"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn"><br></span> </div> </td> </tr><tr> <td id="d2h-720104-1958" class="d2h-code-linenumber d2h-ins"><a href="#d2h-720104-1958"> <div class="line-num1"></div> <div class="line-num2">112</div> </a></td> <td class="d2h-ins"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn"> # Populate bit attribute from +str+</span> </div> </td> </tr><tr> <td id="d2h-720104-1969" class="d2h-code-linenumber d2h-ins"><a href="#d2h-720104-1969"> <div class="line-num1"></div> <div class="line-num2">113</div> </a></td> <td class="d2h-ins"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn"> # @param [::String,nil] str</span> </div> </td> </tr><tr> <td id="d2h-720104-1980" class="d2h-code-linenumber d2h-ins"><a href="#d2h-720104-1980"> <div class="line-num1"></div> <div class="line-num2">114</div> </a></td> <td class="d2h-ins"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn"> # @return [self]</span> </div> </td> </tr><tr> <td id="d2h-720104-1991" class="d2h-code-linenumber d2h-ins"><a href="#d2h-720104-1991"> <div class="line-num1"></div> <div class="line-num2">115</div> </a></td> <td class="d2h-ins"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn"> def read(str)</span> </div> </td> </tr><tr> <td id="d2h-720104-2002" class="d2h-code-linenumber d2h-ins"><a href="#d2h-720104-2002"> <div class="line-num1"></div> <div class="line-num2">116</div> </a></td> <td class="d2h-ins"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn"> return self if str.nil?</span> </div> </td> </tr><tr> <td id="d2h-720104-2013" class="d2h-code-linenumber d2h-ins"><a href="#d2h-720104-2013"> <div class="line-num1"></div> <div class="line-num2">117</div> </a></td> <td class="d2h-ins"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn"><br></span> </div> </td> </tr><tr> <td id="d2h-720104-2024" class="d2h-code-linenumber d2h-ins"><a href="#d2h-720104-2024"> <div class="line-num1"></div> <div class="line-num2">118</div> </a></td> <td class="d2h-ins"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn"> @int.read(str)</span> </div> </td> </tr><tr> <td id="d2h-720104-2035" class="d2h-code-linenumber d2h-ins"><a href="#d2h-720104-2035"> <div class="line-num1"></div> <div class="line-num2">119</div> </a></td> <td class="d2h-ins"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn"> compute_data(@int.to_i)</span> </div> </td> </tr><tr> <td id="d2h-720104-2046" class="d2h-code-linenumber d2h-ins"><a href="#d2h-720104-2046"> <div class="line-num1"></div> <div class="line-num2">120</div> </a></td> <td class="d2h-ins"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn"> end</span> </div> </td> </tr><tr> <td id="d2h-720104-2057" class="d2h-code-linenumber d2h-ins"><a href="#d2h-720104-2057"> <div class="line-num1"></div> <div class="line-num2">121</div> </a></td> <td class="d2h-ins"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn"><br></span> </div> </td> </tr><tr> <td id="d2h-720104-2068" class="d2h-code-linenumber d2h-ins"><a href="#d2h-720104-2068"> <div class="line-num1"></div> <div class="line-num2">122</div> </a></td> <td class="d2h-ins"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn"> # Give integer associated to this attribute</span> </div> </td> </tr><tr> <td id="d2h-720104-2079" class="d2h-code-linenumber d2h-ins"><a href="#d2h-720104-2079"> <div class="line-num1"></div> <div class="line-num2">123</div> </a></td> <td class="d2h-ins"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn"> # @return [Integer]</span> </div> </td> </tr><tr> <td id="d2h-720104-2090" class="d2h-code-linenumber d2h-ins"><a href="#d2h-720104-2090"> <div class="line-num1"></div> <div class="line-num2">124</div> </a></td> <td class="d2h-ins"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn"> def to_i</span> </div> </td> </tr><tr> <td id="d2h-720104-2101" class="d2h-code-linenumber d2h-ins"><a href="#d2h-720104-2101"> <div class="line-num1"></div> <div class="line-num2">125</div> </a></td> <td class="d2h-ins"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn"> v = 0</span> </div> </td> </tr><tr> <td id="d2h-720104-2112" class="d2h-code-linenumber d2h-ins"><a href="#d2h-720104-2112"> <div class="line-num1"></div> <div class="line-num2">126</div> </a></td> <td class="d2h-ins"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn"> @fields.each do |name, size|</span> </div> </td> </tr><tr> <td id="d2h-720104-2123" class="d2h-code-linenumber d2h-ins"><a href="#d2h-720104-2123"> <div class="line-num1"></div> <div class="line-num2">127</div> </a></td> <td class="d2h-ins"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn"> v <<= size</span> </div> </td> </tr><tr> <td id="d2h-720104-2134" class="d2h-code-linenumber d2h-ins"><a href="#d2h-720104-2134"> <div class="line-num1"></div> <div class="line-num2">128</div> </a></td> <td class="d2h-ins"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn"> v |= @data[name]</span> </div> </td> </tr><tr> <td id="d2h-720104-2145" class="d2h-code-linenumber d2h-ins"><a href="#d2h-720104-2145"> <div class="line-num1"></div> <div class="line-num2">129</div> </a></td> <td class="d2h-ins"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn"> end</span> </div> </td> </tr><tr> <td id="d2h-720104-2156" class="d2h-code-linenumber d2h-ins"><a href="#d2h-720104-2156"> <div class="line-num1"></div> <div class="line-num2">130</div> </a></td> <td class="d2h-ins"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn"><br></span> </div> </td> </tr><tr> <td id="d2h-720104-2167" class="d2h-code-linenumber d2h-ins"><a href="#d2h-720104-2167"> <div class="line-num1"></div> <div class="line-num2">131</div> </a></td> <td class="d2h-ins"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn"> v</span> </div> </td> </tr><tr> <td id="d2h-720104-2178" class="d2h-code-linenumber d2h-ins"><a href="#d2h-720104-2178"> <div class="line-num1"></div> <div class="line-num2">132</div> </a></td> <td class="d2h-ins"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn"> end</span> </div> </td> </tr><tr> <td id="d2h-720104-2189" class="d2h-code-linenumber d2h-ins"><a href="#d2h-720104-2189"> <div class="line-num1"></div> <div class="line-num2">133</div> </a></td> <td class="d2h-ins"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn"> alias to_human to_i</span> </div> </td> </tr><tr> <td id="d2h-720104-2200" class="d2h-code-linenumber d2h-ins"><a href="#d2h-720104-2200"> <div class="line-num1"></div> <div class="line-num2">134</div> </a></td> <td class="d2h-ins"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn"><br></span> </div> </td> </tr><tr> <td id="d2h-720104-2211" class="d2h-code-linenumber d2h-ins"><a href="#d2h-720104-2211"> <div class="line-num1"></div> <div class="line-num2">135</div> </a></td> <td class="d2h-ins"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn"> # Return binary string</span> </div> </td> </tr><tr> <td id="d2h-720104-2222" class="d2h-code-linenumber d2h-ins"><a href="#d2h-720104-2222"> <div class="line-num1"></div> <div class="line-num2">136</div> </a></td> <td class="d2h-ins"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn"> # @return [::String]</span> </div> </td> </tr><tr> <td id="d2h-720104-2233" class="d2h-code-linenumber d2h-ins"><a href="#d2h-720104-2233"> <div class="line-num1"></div> <div class="line-num2">137</div> </a></td> <td class="d2h-ins"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn"> def to_s</span> </div> </td> </tr><tr> <td id="d2h-720104-2244" class="d2h-code-linenumber d2h-ins"><a href="#d2h-720104-2244"> <div class="line-num1"></div> <div class="line-num2">138</div> </a></td> <td class="d2h-ins"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn"> @int.value = to_i</span> </div> </td> </tr><tr> <td id="d2h-720104-2255" class="d2h-code-linenumber d2h-ins"><a href="#d2h-720104-2255"> <div class="line-num1"></div> <div class="line-num2">139</div> </a></td> <td class="d2h-ins"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn"> @int.to_s</span> </div> </td> </tr><tr> <td id="d2h-720104-2266" class="d2h-code-linenumber d2h-ins"><a href="#d2h-720104-2266"> <div class="line-num1"></div> <div class="line-num2">140</div> </a></td> <td class="d2h-ins"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn"> end</span> </div> </td> </tr><tr> <td id="d2h-720104-2277" class="d2h-code-linenumber d2h-ins"><a href="#d2h-720104-2277"> <div class="line-num1"></div> <div class="line-num2">141</div> </a></td> <td class="d2h-ins"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn"><br></span> </div> </td> </tr><tr> <td id="d2h-720104-2288" class="d2h-code-linenumber d2h-ins"><a href="#d2h-720104-2288"> <div class="line-num1"></div> <div class="line-num2">142</div> </a></td> <td class="d2h-ins"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn"> # Set fields from associated integer</span> </div> </td> </tr><tr> <td id="d2h-720104-2299" class="d2h-code-linenumber d2h-ins"><a href="#d2h-720104-2299"> <div class="line-num1"></div> <div class="line-num2">143</div> </a></td> <td class="d2h-ins"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn"> # @param [#to_i] value</span> </div> </td> </tr><tr> <td id="d2h-720104-2310" class="d2h-code-linenumber d2h-ins"><a href="#d2h-720104-2310"> <div class="line-num1"></div> <div class="line-num2">144</div> </a></td> <td class="d2h-ins"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn"> # @return [self]</span> </div> </td> </tr><tr> <td id="d2h-720104-2321" class="d2h-code-linenumber d2h-ins"><a href="#d2h-720104-2321"> <div class="line-num1"></div> <div class="line-num2">145</div> </a></td> <td class="d2h-ins"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn"> def from_human(value)</span> </div> </td> </tr><tr> <td id="d2h-720104-2332" class="d2h-code-linenumber d2h-ins"><a href="#d2h-720104-2332"> <div class="line-num1"></div> <div class="line-num2">146</div> </a></td> <td class="d2h-ins"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn"> compute_data(value.to_i)</span> </div> </td> </tr><tr> <td id="d2h-720104-2343" class="d2h-code-linenumber d2h-ins"><a href="#d2h-720104-2343"> <div class="line-num1"></div> <div class="line-num2">147</div> </a></td> <td class="d2h-ins"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn"> end</span> </div> </td> </tr><tr> <td id="d2h-720104-2354" class="d2h-code-linenumber d2h-ins"><a href="#d2h-720104-2354"> <div class="line-num1"></div> <div class="line-num2">148</div> </a></td> <td class="d2h-ins"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn"><br></span> </div> </td> </tr><tr> <td id="d2h-720104-2365" class="d2h-code-linenumber d2h-ins"><a href="#d2h-720104-2365"> <div class="line-num1"></div> <div class="line-num2">149</div> </a></td> <td class="d2h-ins"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn"> def format_inspect</span> </div> </td> </tr><tr> <td id="d2h-720104-2376" class="d2h-code-linenumber d2h-ins"><a href="#d2h-720104-2376"> <div class="line-num1"></div> <div class="line-num2">150</div> </a></td> <td class="d2h-ins"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn"> str = @int.format_inspect << "\n"</span> </div> </td> </tr><tr> <td id="d2h-720104-2387" class="d2h-code-linenumber d2h-ins"><a href="#d2h-720104-2387"> <div class="line-num1"></div> <div class="line-num2">151</div> </a></td> <td class="d2h-ins"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn"> str << @data.map { |name, value| "#{name}:#{value}" }.join(' ')</span> </div> </td> </tr><tr> <td id="d2h-720104-2398" class="d2h-code-linenumber d2h-ins"><a href="#d2h-720104-2398"> <div class="line-num1"></div> <div class="line-num2">152</div> </a></td> <td class="d2h-ins"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn"> end</span> </div> </td> </tr><tr> <td id="d2h-720104-2409" class="d2h-code-linenumber d2h-ins"><a href="#d2h-720104-2409"> <div class="line-num1"></div> <div class="line-num2">153</div> </a></td> <td class="d2h-ins"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn"><br></span> </div> </td> </tr><tr> <td id="d2h-720104-2420" class="d2h-code-linenumber d2h-ins"><a href="#d2h-720104-2420"> <div class="line-num1"></div> <div class="line-num2">154</div> </a></td> <td class="d2h-ins"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn"> private</span> </div> </td> </tr><tr> <td id="d2h-720104-2431" class="d2h-code-linenumber d2h-ins"><a href="#d2h-720104-2431"> <div class="line-num1"></div> <div class="line-num2">155</div> </a></td> <td class="d2h-ins"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn"><br></span> </div> </td> </tr><tr> <td id="d2h-720104-2442" class="d2h-code-linenumber d2h-ins"><a href="#d2h-720104-2442"> <div class="line-num1"></div> <div class="line-num2">156</div> </a></td> <td class="d2h-ins"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn"> # @param [Integer] value</span> </div> </td> </tr><tr> <td id="d2h-720104-2453" class="d2h-code-linenumber d2h-ins"><a href="#d2h-720104-2453"> <div class="line-num1"></div> <div class="line-num2">157</div> </a></td> <td class="d2h-ins"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn"> # @return [self]</span> </div> </td> </tr><tr> <td id="d2h-720104-2464" class="d2h-code-linenumber d2h-ins"><a href="#d2h-720104-2464"> <div class="line-num1"></div> <div class="line-num2">158</div> </a></td> <td class="d2h-ins"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn"> def compute_data(value)</span> </div> </td> </tr><tr> <td id="d2h-720104-2475" class="d2h-code-linenumber d2h-ins"><a href="#d2h-720104-2475"> <div class="line-num1"></div> <div class="line-num2">159</div> </a></td> <td class="d2h-ins"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn"> @fields.reverse_each do |name, size|</span> </div> </td> </tr><tr> <td id="d2h-720104-2486" class="d2h-code-linenumber d2h-ins"><a href="#d2h-720104-2486"> <div class="line-num1"></div> <div class="line-num2">160</div> </a></td> <td class="d2h-ins"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn"> @data[name] = value & ((2**size) - 1)</span> </div> </td> </tr><tr> <td id="d2h-720104-2497" class="d2h-code-linenumber d2h-ins"><a href="#d2h-720104-2497"> <div class="line-num1"></div> <div class="line-num2">161</div> </a></td> <td class="d2h-ins"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn"> value >>= size</span> </div> </td> </tr><tr> <td id="d2h-720104-2508" class="d2h-code-linenumber d2h-ins"><a href="#d2h-720104-2508"> <div class="line-num1"></div> <div class="line-num2">162</div> </a></td> <td class="d2h-ins"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn"> end</span> </div> </td> </tr><tr> <td id="d2h-720104-2519" class="d2h-code-linenumber d2h-ins"><a href="#d2h-720104-2519"> <div class="line-num1"></div> <div class="line-num2">163</div> </a></td> <td class="d2h-ins"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn"><br></span> </div> </td> </tr><tr> <td id="d2h-720104-2530" class="d2h-code-linenumber d2h-ins"><a href="#d2h-720104-2530"> <div class="line-num1"></div> <div class="line-num2">164</div> </a></td> <td class="d2h-ins"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn"> self</span> </div> </td> </tr><tr> <td id="d2h-720104-2541" class="d2h-code-linenumber d2h-ins"><a href="#d2h-720104-2541"> <div class="line-num1"></div> <div class="line-num2">165</div> </a></td> <td class="d2h-ins"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn"> end</span> </div> </td> </tr><tr> <td id="d2h-720104-2552" class="d2h-code-linenumber d2h-ins"><a href="#d2h-720104-2552"> <div class="line-num1"></div> <div class="line-num2">166</div> </a></td> <td class="d2h-ins"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn"><br></span> </div> </td> </tr><tr> <td id="d2h-720104-2563" class="d2h-code-linenumber d2h-ins"><a href="#d2h-720104-2563"> <div class="line-num1"></div> <div class="line-num2">167</div> </a></td> <td class="d2h-ins"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn"> # @param [Symbol] name</span> </div> </td> </tr><tr> <td id="d2h-720104-2574" class="d2h-code-linenumber d2h-ins"><a href="#d2h-720104-2574"> <div class="line-num1"></div> <div class="line-num2">168</div> </a></td> <td class="d2h-ins"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn"> # @return [void]</span> </div> </td> </tr><tr> <td id="d2h-720104-2585" class="d2h-code-linenumber d2h-ins"><a href="#d2h-720104-2585"> <div class="line-num1"></div> <div class="line-num2">169</div> </a></td> <td class="d2h-ins"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn"> def define_methods(name, size)</span> </div> </td> </tr><tr> <td id="d2h-720104-2596" class="d2h-code-linenumber d2h-ins"><a href="#d2h-720104-2596"> <div class="line-num1"></div> <div class="line-num2">170</div> </a></td> <td class="d2h-ins"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn"> instance_eval "def #{name}; @data[#{name.inspect}]; end\n", __FILE__, __LINE__ # def name; data[:name]; end</span> </div> </td> </tr><tr> <td id="d2h-720104-2607" class="d2h-code-linenumber d2h-ins"><a href="#d2h-720104-2607"> <div class="line-num1"></div> <div class="line-num2">171</div> </a></td> <td class="d2h-ins"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn"> bit_methods << name</span> </div> </td> </tr><tr> <td id="d2h-720104-2618" class="d2h-code-linenumber d2h-ins"><a href="#d2h-720104-2618"> <div class="line-num1"></div> <div class="line-num2">172</div> </a></td> <td class="d2h-ins"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn"> bit_methods << :"#{name}="</span> </div> </td> </tr><tr> <td id="d2h-720104-2629" class="d2h-code-linenumber d2h-ins"><a href="#d2h-720104-2629"> <div class="line-num1"></div> <div class="line-num2">173</div> </a></td> <td class="d2h-ins"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn"><br></span> </div> </td> </tr><tr> <td id="d2h-720104-2640" class="d2h-code-linenumber d2h-ins"><a href="#d2h-720104-2640"> <div class="line-num1"></div> <div class="line-num2">174</div> </a></td> <td class="d2h-ins"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn"> # rubocop:disable Style/DocumentDynamicEvalDefinition</span> </div> </td> </tr><tr> <td id="d2h-720104-2651" class="d2h-code-linenumber d2h-ins"><a href="#d2h-720104-2651"> <div class="line-num1"></div> <div class="line-num2">175</div> </a></td> <td class="d2h-ins"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn"> if size == 1</span> </div> </td> </tr><tr> <td id="d2h-720104-2662" class="d2h-code-linenumber d2h-ins"><a href="#d2h-720104-2662"> <div class="line-num1"></div> <div class="line-num2">176</div> </a></td> <td class="d2h-ins"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn"> instance_eval "def #{name}?; @data[#{name.inspect}] != 0; end\n", __FILE__, __LINE__</span> </div> </td> </tr><tr> <td id="d2h-720104-2673" class="d2h-code-linenumber d2h-ins"><a href="#d2h-720104-2673"> <div class="line-num1"></div> <div class="line-num2">177</div> </a></td> <td class="d2h-ins"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn"> instance_eval "def #{name}=(val); v = case val when TrueClass; 1 when FalseClass; 0 else val end; " \</span> </div> </td> </tr><tr> <td id="d2h-720104-2684" class="d2h-code-linenumber d2h-ins"><a href="#d2h-720104-2684"> <div class="line-num1"></div> <div class="line-num2">178</div> </a></td> <td class="d2h-ins"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn"> "@data[#{name.inspect}] = v; end", __FILE__, __LINE__ - 2</span> </div> </td> </tr><tr> <td id="d2h-720104-2695" class="d2h-code-linenumber d2h-ins"><a href="#d2h-720104-2695"> <div class="line-num1"></div> <div class="line-num2">179</div> </a></td> <td class="d2h-ins"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn"> bit_methods << :"#{name}?"</span> </div> </td> </tr><tr> <td id="d2h-720104-2706" class="d2h-code-linenumber d2h-ins"><a href="#d2h-720104-2706"> <div class="line-num1"></div> <div class="line-num2">180</div> </a></td> <td class="d2h-ins"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn"> else</span> </div> </td> </tr><tr> <td id="d2h-720104-2717" class="d2h-code-linenumber d2h-ins"><a href="#d2h-720104-2717"> <div class="line-num1"></div> <div class="line-num2">181</div> </a></td> <td class="d2h-ins"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn"> instance_eval "def #{name}=(val); @data[#{name.inspect}] = val; end", __FILE__, __LINE__</span> </div> </td> </tr><tr> <td id="d2h-720104-2728" class="d2h-code-linenumber d2h-ins"><a href="#d2h-720104-2728"> <div class="line-num1"></div> <div class="line-num2">182</div> </a></td> <td class="d2h-ins"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn"> end</span> </div> </td> </tr><tr> <td id="d2h-720104-2739" class="d2h-code-linenumber d2h-ins"><a href="#d2h-720104-2739"> <div class="line-num1"></div> <div class="line-num2">183</div> </a></td> <td class="d2h-ins"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn"> # rubocop:enable Style/DocumentDynamicEvalDefinition</span> </div> </td> </tr><tr> <td id="d2h-720104-2750" class="d2h-code-linenumber d2h-ins"><a href="#d2h-720104-2750"> <div class="line-num1"></div> <div class="line-num2">184</div> </a></td> <td class="d2h-ins"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn"> end</span> </div> </td> </tr><tr> <td id="d2h-720104-2761" class="d2h-code-linenumber d2h-ins"><a href="#d2h-720104-2761"> <div class="line-num1"></div> <div class="line-num2">185</div> </a></td> <td class="d2h-ins"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn"> end</span> </div> </td> </tr><tr> <td id="d2h-720104-2772" class="d2h-code-linenumber d2h-ins"><a href="#d2h-720104-2772"> <div class="line-num1"></div> <div class="line-num2">186</div> </a></td> <td class="d2h-ins"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn">end</span> </div> </td> </tr> </tbody> </table> </div> </div> </div> <div id="d2h-871875" class="d2h-file-wrapper" data-lang="rb"> <div class="d2h-file-header"> <span class="d2h-file-name-wrapper"> <svg aria-hidden="true" class="d2h-icon" height="16" version="1.1" viewBox="0 0 12 16" width="12"> <path d="M6 5H2v-1h4v1zM2 8h7v-1H2v1z m0 2h7v-1H2v1z m0 2h7v-1H2v1z m10-7.5v9.5c0 0.55-0.45 1-1 1H1c-0.55 0-1-0.45-1-1V2c0-0.55 0.45-1 1-1h7.5l3.5 3.5z m-1 0.5L8 2H1v12h10V5z"></path> </svg> <span class="d2h-file-name"><a href="#d2h-871875">data/lib/bin_struct/cstring.rb</a></span> <span class="d2h-tag d2h-changed d2h-changed-tag">CHANGED</span></span> <label class="d2h-file-collapse"> <input class="d2h-file-collapse-input" type="checkbox" name="viewed" value="viewed"> Viewed </label> </div> <div class="d2h-file-diff"> <div class="d2h-code-wrapper"> <table class="d2h-diff-table"> <tbody class="d2h-diff-tbody"> <tr> <td class="d2h-code-linenumber d2h-info"></td> <td class="d2h-info"> <div class="d2h-code-line">@@ -76,8 +76,9 @@ module BinStruct</div> </td> </tr><tr> <td id="d2h-871875-2810" class="d2h-code-linenumber d2h-cntx"><a href="#d2h-871875-2810"> <div class="line-num1">76</div> <div class="line-num2">76</div> </a></td> <td class="d2h-cntx"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix"> </span> <span class="d2h-code-line-ctn"><br></span> </div> </td> </tr><tr> <td id="d2h-871875-2821" class="d2h-code-linenumber d2h-cntx"><a href="#d2h-871875-2821"> <div class="line-num1">77</div> <div class="line-num2">77</div> </a></td> <td class="d2h-cntx"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix"> </span> <span class="d2h-code-line-ctn"> # @param [Hash] options</span> </div> </td> </tr><tr> <td id="d2h-871875-2832" class="d2h-code-linenumber d2h-cntx"><a href="#d2h-871875-2832"> <div class="line-num1">78</div> <div class="line-num2">78</div> </a></td> <td class="d2h-cntx"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix"> </span> <span class="d2h-code-line-ctn"> # @option options [Integer] :static_length set a static length for this string</span> </div> </td> </tr><tr> <td id="d2h-871875-2843" class="d2h-code-linenumber d2h-ins"><a href="#d2h-871875-2843"> <div class="line-num1"></div> <div class="line-num2">79</div> </a></td> <td class="d2h-ins"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn"> # @option options [::String] :value string value (default to +''+)</span> </div> </td> </tr><tr> <td id="d2h-871875-2854" class="d2h-code-linenumber d2h-cntx"><a href="#d2h-871875-2854"> <div class="line-num1">79</div> <div class="line-num2">80</div> </a></td> <td class="d2h-cntx"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix"> </span> <span class="d2h-code-line-ctn"> def initialize(options = {})</span> </div> </td> </tr><tr> <td class="d2h-code-linenumber d2h-del d2h-change"> <div class="line-num1">80</div> <div class="line-num2"></div> </a></td> <td class="d2h-del d2h-change"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">-</span> <span class="d2h-code-line-ctn"> register_internal_string(+'')</span> </div> </td> </tr><tr> <td class="d2h-code-linenumber d2h-ins d2h-change"> <div class="line-num1"></div> <div class="line-num2">81</div> </a></td> <td class="d2h-ins d2h-change"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn"> register_internal_string(<ins>options[:value] || </ins>+'')</span> </div> </td> </tr><tr> <td id="d2h-871875-2887" class="d2h-code-linenumber d2h-cntx"><a href="#d2h-871875-2887"> <div class="line-num1">81</div> <div class="line-num2">82</div> </a></td> <td class="d2h-cntx"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix"> </span> <span class="d2h-code-line-ctn"> @static_length = options[:static_length]</span> </div> </td> </tr><tr> <td id="d2h-871875-2898" class="d2h-code-linenumber d2h-cntx"><a href="#d2h-871875-2898"> <div class="line-num1">82</div> <div class="line-num2">83</div> </a></td> <td class="d2h-cntx"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix"> </span> <span class="d2h-code-line-ctn"> end</span> </div> </td> </tr><tr> <td id="d2h-871875-2909" class="d2h-code-linenumber d2h-cntx"><a href="#d2h-871875-2909"> <div class="line-num1">83</div> <div class="line-num2">84</div> </a></td> <td class="d2h-cntx"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix"> </span> <span class="d2h-code-line-ctn"><br></span> </div> </td> </tr> </tbody> </table> </div> </div> </div> <div id="d2h-298902" class="d2h-file-wrapper" data-lang="rb"> <div class="d2h-file-header"> <span class="d2h-file-name-wrapper"> <svg aria-hidden="true" class="d2h-icon" height="16" version="1.1" viewBox="0 0 12 16" width="12"> <path d="M6 5H2v-1h4v1zM2 8h7v-1H2v1z m0 2h7v-1H2v1z m0 2h7v-1H2v1z m10-7.5v9.5c0 0.55-0.45 1-1 1H1c-0.55 0-1-0.45-1-1V2c0-0.55 0.45-1 1-1h7.5l3.5 3.5z m-1 0.5L8 2H1v12h10V5z"></path> </svg> <span class="d2h-file-name"><a href="#d2h-298902">data/lib/bin_struct/int_string.rb</a></span> <span class="d2h-tag d2h-changed d2h-changed-tag">CHANGED</span></span> <label class="d2h-file-collapse"> <input class="d2h-file-collapse-input" type="checkbox" name="viewed" value="viewed"> Viewed </label> </div> <div class="d2h-file-diff"> <div class="d2h-code-wrapper"> <table class="d2h-diff-table"> <tbody class="d2h-diff-tbody"> <tr> <td class="d2h-code-linenumber d2h-info"></td> <td class="d2h-info"> <div class="d2h-code-line">@@ -20,9 +20,9 @@ module BinStruct</div> </td> </tr><tr> <td id="d2h-298902-2947" class="d2h-code-linenumber d2h-cntx"><a href="#d2h-298902-2947"> <div class="line-num1">20</div> <div class="line-num2">20</div> </a></td> <td class="d2h-cntx"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix"> </span> <span class="d2h-code-line-ctn"><br></span> </div> </td> </tr><tr> <td id="d2h-298902-2958" class="d2h-code-linenumber d2h-cntx"><a href="#d2h-298902-2958"> <div class="line-num1">21</div> <div class="line-num2">21</div> </a></td> <td class="d2h-cntx"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix"> </span> <span class="d2h-code-line-ctn"> # @param [Hash] options</span> </div> </td> </tr><tr> <td id="d2h-298902-2969" class="d2h-code-linenumber d2h-cntx"><a href="#d2h-298902-2969"> <div class="line-num1">22</div> <div class="line-num2">22</div> </a></td> <td class="d2h-cntx"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix"> </span> <span class="d2h-code-line-ctn"> # @option options [Class] :length_type should be a {Int} subclass. Default to {Int8}.</span> </div> </td> </tr><tr> <td class="d2h-code-linenumber d2h-del d2h-change"> <div class="line-num1">23</div> <div class="line-num2"></div> </a></td> <td class="d2h-del d2h-change"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">-</span> <span class="d2h-code-line-ctn"> # @option options [::String] :<del>string</del> String value. Default to +""+</span> </div> </td> </tr><tr> <td class="d2h-code-linenumber d2h-ins d2h-change"> <div class="line-num1"></div> <div class="line-num2">23</div> </a></td> <td class="d2h-ins d2h-change"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn"> # @option options [::String] :<ins>value</ins> String value. Default to +""+</span> </div> </td> </tr><tr> <td id="d2h-298902-3002" class="d2h-code-linenumber d2h-cntx"><a href="#d2h-298902-3002"> <div class="line-num1">24</div> <div class="line-num2">24</div> </a></td> <td class="d2h-cntx"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix"> </span> <span class="d2h-code-line-ctn"> def initialize(options = {})</span> </div> </td> </tr><tr> <td class="d2h-code-linenumber d2h-del d2h-change"> <div class="line-num1">25</div> <div class="line-num2"></div> </a></td> <td class="d2h-del d2h-change"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">-</span> <span class="d2h-code-line-ctn"> @string = BinStruct::String.new.read(options[:<del>string</del>] || '')</span> </div> </td> </tr><tr> <td class="d2h-code-linenumber d2h-ins d2h-change"> <div class="line-num1"></div> <div class="line-num2">25</div> </a></td> <td class="d2h-ins d2h-change"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn"> @string = BinStruct::String.new.read(options[:<ins>value</ins>] || <ins>+</ins>'')</span> </div> </td> </tr><tr> <td id="d2h-298902-3035" class="d2h-code-linenumber d2h-cntx"><a href="#d2h-298902-3035"> <div class="line-num1">26</div> <div class="line-num2">26</div> </a></td> <td class="d2h-cntx"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix"> </span> <span class="d2h-code-line-ctn"> @length = (options[:length_type] || Int8).new</span> </div> </td> </tr><tr> <td id="d2h-298902-3046" class="d2h-code-linenumber d2h-cntx"><a href="#d2h-298902-3046"> <div class="line-num1">27</div> <div class="line-num2">27</div> </a></td> <td class="d2h-cntx"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix"> </span> <span class="d2h-code-line-ctn"> calc_length</span> </div> </td> </tr><tr> <td id="d2h-298902-3057" class="d2h-code-linenumber d2h-cntx"><a href="#d2h-298902-3057"> <div class="line-num1">28</div> <div class="line-num2">28</div> </a></td> <td class="d2h-cntx"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix"> </span> <span class="d2h-code-line-ctn"> end</span> </div> </td> </tr> <tr> <td class="d2h-code-linenumber d2h-info"></td> <td class="d2h-info"> <div class="d2h-code-line">@@ -61,7 +61,7 @@ module BinStruct</div> </td> </tr><tr> <td id="d2h-298902-3074" class="d2h-code-linenumber d2h-cntx"><a href="#d2h-298902-3074"> <div class="line-num1">61</div> <div class="line-num2">61</div> </a></td> <td class="d2h-cntx"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix"> </span> <span class="d2h-code-line-ctn"> # @return [::String]</span> </div> </td> </tr><tr> <td id="d2h-298902-3085" class="d2h-code-linenumber d2h-cntx"><a href="#d2h-298902-3085"> <div class="line-num1">62</div> <div class="line-num2">62</div> </a></td> <td class="d2h-cntx"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix"> </span> <span class="d2h-code-line-ctn"> def string=(str)</span> </div> </td> </tr><tr> <td id="d2h-298902-3096" class="d2h-code-linenumber d2h-cntx"><a href="#d2h-298902-3096"> <div class="line-num1">63</div> <div class="line-num2">63</div> </a></td> <td class="d2h-cntx"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix"> </span> <span class="d2h-code-line-ctn"> @length.value = str.to_s.size</span> </div> </td> </tr><tr> <td class="d2h-code-linenumber d2h-del d2h-change"> <div class="line-num1">64</div> <div class="line-num2"></div> </a></td> <td class="d2h-del d2h-change"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">-</span> <span class="d2h-code-line-ctn"> @string<del> = </del>str<del>.to_s</del></span> </div> </td> </tr><tr> <td class="d2h-code-linenumber d2h-ins d2h-change"> <div class="line-num1"></div> <div class="line-num2">64</div> </a></td> <td class="d2h-ins d2h-change"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn"> @string<ins>.read(</ins>str<ins>)</ins></span> </div> </td> </tr><tr> <td id="d2h-298902-3129" class="d2h-code-linenumber d2h-cntx"><a href="#d2h-298902-3129"> <div class="line-num1">65</div> <div class="line-num2">65</div> </a></td> <td class="d2h-cntx"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix"> </span> <span class="d2h-code-line-ctn"> end</span> </div> </td> </tr><tr> <td id="d2h-298902-3140" class="d2h-code-linenumber d2h-cntx"><a href="#d2h-298902-3140"> <div class="line-num1">66</div> <div class="line-num2">66</div> </a></td> <td class="d2h-cntx"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix"> </span> <span class="d2h-code-line-ctn"><br></span> </div> </td> </tr><tr> <td id="d2h-298902-3151" class="d2h-code-linenumber d2h-cntx"><a href="#d2h-298902-3151"> <div class="line-num1">67</div> <div class="line-num2">67</div> </a></td> <td class="d2h-cntx"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix"> </span> <span class="d2h-code-line-ctn"> # Get binary string</span> </div> </td> </tr> <tr> <td class="d2h-code-linenumber d2h-info"></td> <td class="d2h-info"> <div class="d2h-code-line">@@ -82,7 +82,7 @@ module BinStruct</div> </td> </tr><tr> <td id="d2h-298902-3168" class="d2h-code-linenumber d2h-cntx"><a href="#d2h-298902-3168"> <div class="line-num1">82</div> <div class="line-num2">82</div> </a></td> <td class="d2h-cntx"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix"> </span> <span class="d2h-code-line-ctn"> # Get human readable string</span> </div> </td> </tr><tr> <td id="d2h-298902-3179" class="d2h-code-linenumber d2h-cntx"><a href="#d2h-298902-3179"> <div class="line-num1">83</div> <div class="line-num2">83</div> </a></td> <td class="d2h-cntx"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix"> </span> <span class="d2h-code-line-ctn"> # @return [::String]</span> </div> </td> </tr><tr> <td id="d2h-298902-3190" class="d2h-code-linenumber d2h-cntx"><a href="#d2h-298902-3190"> <div class="line-num1">84</div> <div class="line-num2">84</div> </a></td> <td class="d2h-cntx"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix"> </span> <span class="d2h-code-line-ctn"> def to_human</span> </div> </td> </tr><tr> <td class="d2h-code-linenumber d2h-del d2h-change"> <div class="line-num1">85</div> <div class="line-num2"></div> </a></td> <td class="d2h-del d2h-change"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">-</span> <span class="d2h-code-line-ctn"> @string</span> </div> </td> </tr><tr> <td class="d2h-code-linenumber d2h-ins d2h-change"> <div class="line-num1"></div> <div class="line-num2">85</div> </a></td> <td class="d2h-ins d2h-change"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn"> @string<ins>.to_s</ins></span> </div> </td> </tr><tr> <td id="d2h-298902-3223" class="d2h-code-linenumber d2h-cntx"><a href="#d2h-298902-3223"> <div class="line-num1">86</div> <div class="line-num2">86</div> </a></td> <td class="d2h-cntx"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix"> </span> <span class="d2h-code-line-ctn"> end</span> </div> </td> </tr><tr> <td id="d2h-298902-3234" class="d2h-code-linenumber d2h-cntx"><a href="#d2h-298902-3234"> <div class="line-num1">87</div> <div class="line-num2">87</div> </a></td> <td class="d2h-cntx"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix"> </span> <span class="d2h-code-line-ctn"><br></span> </div> </td> </tr><tr> <td id="d2h-298902-3245" class="d2h-code-linenumber d2h-cntx"><a href="#d2h-298902-3245"> <div class="line-num1">88</div> <div class="line-num2">88</div> </a></td> <td class="d2h-cntx"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix"> </span> <span class="d2h-code-line-ctn"> # Set length from internal string length</span> </div> </td> </tr> </tbody> </table> </div> </div> </div> <div id="d2h-549178" class="d2h-file-wrapper" data-lang="rb"> <div class="d2h-file-header"> <span class="d2h-file-name-wrapper"> <svg aria-hidden="true" class="d2h-icon" height="16" version="1.1" viewBox="0 0 12 16" width="12"> <path d="M6 5H2v-1h4v1zM2 8h7v-1H2v1z m0 2h7v-1H2v1z m0 2h7v-1H2v1z m10-7.5v9.5c0 0.55-0.45 1-1 1H1c-0.55 0-1-0.45-1-1V2c0-0.55 0.45-1 1-1h7.5l3.5 3.5z m-1 0.5L8 2H1v12h10V5z"></path> </svg> <span class="d2h-file-name"><a href="#d2h-549178">data/lib/bin_struct/string.rb</a></span> <span class="d2h-tag d2h-changed d2h-changed-tag">CHANGED</span></span> <label class="d2h-file-collapse"> <input class="d2h-file-collapse-input" type="checkbox" name="viewed" value="viewed"> Viewed </label> </div> <div class="d2h-file-diff"> <div class="d2h-code-wrapper"> <table class="d2h-diff-table"> <tbody class="d2h-diff-tbody"> <tr> <td class="d2h-code-linenumber d2h-info"></td> <td class="d2h-info"> <div class="d2h-code-line">@@ -32,8 +32,9 @@ module BinStruct</div> </td> </tr><tr> <td id="d2h-549178-3283" class="d2h-code-linenumber d2h-cntx"><a href="#d2h-549178-3283"> <div class="line-num1">32</div> <div class="line-num2">32</div> </a></td> <td class="d2h-cntx"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix"> </span> <span class="d2h-code-line-ctn"> # @option options [Int,Proc] :length_from object or proc from which</span> </div> </td> </tr><tr> <td id="d2h-549178-3294" class="d2h-code-linenumber d2h-cntx"><a href="#d2h-549178-3294"> <div class="line-num1">33</div> <div class="line-num2">33</div> </a></td> <td class="d2h-cntx"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix"> </span> <span class="d2h-code-line-ctn"> # takes length when reading</span> </div> </td> </tr><tr> <td id="d2h-549178-3305" class="d2h-code-linenumber d2h-cntx"><a href="#d2h-549178-3305"> <div class="line-num1">34</div> <div class="line-num2">34</div> </a></td> <td class="d2h-cntx"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix"> </span> <span class="d2h-code-line-ctn"> # @option options [Integer] :static_length set a static length for this string</span> </div> </td> </tr><tr> <td id="d2h-549178-3316" class="d2h-code-linenumber d2h-ins"><a href="#d2h-549178-3316"> <div class="line-num1"></div> <div class="line-num2">35</div> </a></td> <td class="d2h-ins"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn"> # @option options [::String] :value string value (default to +''+)</span> </div> </td> </tr><tr> <td id="d2h-549178-3327" class="d2h-code-linenumber d2h-cntx"><a href="#d2h-549178-3327"> <div class="line-num1">35</div> <div class="line-num2">36</div> </a></td> <td class="d2h-cntx"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix"> </span> <span class="d2h-code-line-ctn"> def initialize(options = {})</span> </div> </td> </tr><tr> <td class="d2h-code-linenumber d2h-del d2h-change"> <div class="line-num1">36</div> <div class="line-num2"></div> </a></td> <td class="d2h-del d2h-change"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">-</span> <span class="d2h-code-line-ctn"> register_internal_string(+'')</span> </div> </td> </tr><tr> <td class="d2h-code-linenumber d2h-ins d2h-change"> <div class="line-num1"></div> <div class="line-num2">37</div> </a></td> <td class="d2h-ins d2h-change"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn"> register_internal_string(<ins>options[:value] || </ins>+'')</span> </div> </td> </tr><tr> <td id="d2h-549178-3360" class="d2h-code-linenumber d2h-cntx"><a href="#d2h-549178-3360"> <div class="line-num1">37</div> <div class="line-num2">38</div> </a></td> <td class="d2h-cntx"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix"> </span> <span class="d2h-code-line-ctn"> initialize_length_from(options)</span> </div> </td> </tr><tr> <td id="d2h-549178-3371" class="d2h-code-linenumber d2h-cntx"><a href="#d2h-549178-3371"> <div class="line-num1">38</div> <div class="line-num2">39</div> </a></td> <td class="d2h-cntx"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix"> </span> <span class="d2h-code-line-ctn"> @static_length = options[:static_length]</span> </div> </td> </tr><tr> <td id="d2h-549178-3382" class="d2h-code-linenumber d2h-cntx"><a href="#d2h-549178-3382"> <div class="line-num1">39</div> <div class="line-num2">40</div> </a></td> <td class="d2h-cntx"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix"> </span> <span class="d2h-code-line-ctn"> end</span> </div> </td> </tr> </tbody> </table> </div> </div> </div> <div id="d2h-327542" class="d2h-file-wrapper" data-lang="rb"> <div class="d2h-file-header"> <span class="d2h-file-name-wrapper"> <svg aria-hidden="true" class="d2h-icon" height="16" version="1.1" viewBox="0 0 12 16" width="12"> <path d="M6 5H2v-1h4v1zM2 8h7v-1H2v1z m0 2h7v-1H2v1z m0 2h7v-1H2v1z m10-7.5v9.5c0 0.55-0.45 1-1 1H1c-0.55 0-1-0.45-1-1V2c0-0.55 0.45-1 1-1h7.5l3.5 3.5z m-1 0.5L8 2H1v12h10V5z"></path> </svg> <span class="d2h-file-name"><a href="#d2h-327542">data/lib/bin_struct/struct.rb</a></span> <span class="d2h-tag d2h-changed d2h-changed-tag">CHANGED</span></span> <label class="d2h-file-collapse"> <input class="d2h-file-collapse-input" type="checkbox" name="viewed" value="viewed"> Viewed </label> </div> <div class="d2h-file-diff"> <div class="d2h-code-wrapper"> <table class="d2h-diff-table"> <tbody class="d2h-diff-tbody"> <tr> <td class="d2h-code-linenumber d2h-info"></td> <td class="d2h-info"> <div class="d2h-code-line">@@ -81,25 +81,23 @@ module BinStruct</div> </td> </tr><tr> <td id="d2h-327542-3420" class="d2h-code-linenumber d2h-cntx"><a href="#d2h-327542-3420"> <div class="line-num1">81</div> <div class="line-num2">81</div> </a></td> <td class="d2h-cntx"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix"> </span> <span class="d2h-code-line-ctn"> # define_attr :opt1, BinStruct::Int16, optional: ->(h) { h.type == 42 }</span> </div> </td> </tr><tr> <td id="d2h-327542-3431" class="d2h-code-linenumber d2h-cntx"><a href="#d2h-327542-3431"> <div class="line-num1">82</div> <div class="line-num2">82</div> </a></td> <td class="d2h-cntx"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix"> </span> <span class="d2h-code-line-ctn"> #</span> </div> </td> </tr><tr> <td id="d2h-327542-3442" class="d2h-code-linenumber d2h-cntx"><a href="#d2h-327542-3442"> <div class="line-num1">83</div> <div class="line-num2">83</div> </a></td> <td class="d2h-cntx"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix"> </span> <span class="d2h-code-line-ctn"> # == Generating bit attributes</span> </div> </td> </tr><tr> <td class="d2h-code-linenumber d2h-del d2h-change"> <div class="line-num1">84</div> <div class="line-num2"></div> </a></td> <td class="d2h-del d2h-change"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">-</span> <span class="d2h-code-line-ctn"> # {.<del>define_bit_attr_on</del>} creates bit <del>attributes</del> <del>on</del> <del>a</del> <del>previously</del> <del>declared</del> <del>integer</del></span> </div> </td> </tr><tr> <td class="d2h-code-linenumber d2h-del d2h-change"> <div class="line-num1">85</div> <div class="line-num2"></div> </a></td> <td class="d2h-del d2h-change"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">-</span> <span class="d2h-code-line-ctn"> # <del>attribute.</del> <del>For</del> <del>example</del>, <del>+frag+</del> <del>attribute</del> <del>in</del> <del>IP</del> <del>header</del>:</span> </div> </td> </tr><tr> <td id="d2h-327542-3475" class="d2h-code-linenumber d2h-del"><a href="#d2h-327542-3475"> <div class="line-num1">86</div> <div class="line-num2"></div> </a></td> <td class="d2h-del"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">-</span> <span class="d2h-code-line-ctn"> # define_attr :frag, BinStruct::Int16, default: 0</span> </div> </td> </tr><tr> <td id="d2h-327542-3486" class="d2h-code-linenumber d2h-del"><a href="#d2h-327542-3486"> <div class="line-num1">87</div> <div class="line-num2"></div> </a></td> <td class="d2h-del"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">-</span> <span class="d2h-code-line-ctn"> # define_bit_attr_on :frag, :flag_rsv, :flag_df, :flag_mf, :fragment_offset, 13</span> </div> </td> </tr><tr> <td class="d2h-code-linenumber d2h-ins d2h-change"> <div class="line-num1"></div> <div class="line-num2">84</div> </a></td> <td class="d2h-ins d2h-change"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn"> # {.<ins>define_bit_attr</ins>} creates <ins>a </ins>bit <ins>attribute.</ins> <ins>For</ins> <ins>example,</ins> <ins>+frag+</ins> <ins>attribute</ins> <ins>in IP header:</ins></span> </div> </td> </tr><tr> <td class="d2h-code-linenumber d2h-ins d2h-change"> <div class="line-num1"></div> <div class="line-num2">85</div> </a></td> <td class="d2h-ins d2h-change"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn"> #<ins> define_bit_attr</ins> <ins>:frag,</ins> <ins>flag_rsv:</ins> <ins>1</ins>, <ins>flag_df:</ins> <ins>1,</ins> <ins>flag_mf:</ins> <ins>1,</ins> <ins>fragment_offset</ins>:<ins> 13</ins></span> </div> </td> </tr><tr> <td id="d2h-327542-3519" class="d2h-code-linenumber d2h-cntx"><a href="#d2h-327542-3519"> <div class="line-num1">88</div> <div class="line-num2">86</div> </a></td> <td class="d2h-cntx"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix"> </span> <span class="d2h-code-line-ctn"> #</span> </div> </td> </tr><tr> <td id="d2h-327542-3530" class="d2h-code-linenumber d2h-cntx"><a href="#d2h-327542-3530"> <div class="line-num1">89</div> <div class="line-num2">87</div> </a></td> <td class="d2h-cntx"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix"> </span> <span class="d2h-code-line-ctn"> # This example generates methods:</span> </div> </td> </tr><tr> <td id="d2h-327542-3541" class="d2h-code-linenumber d2h-cntx"><a href="#d2h-327542-3541"> <div class="line-num1">90</div> <div class="line-num2">88</div> </a></td> <td class="d2h-cntx"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix"> </span> <span class="d2h-code-line-ctn"> # * +#frag+ and +#frag=+ to access +frag+ attribute as a 16-bit integer,</span> </div> </td> </tr><tr> <td id="d2h-327542-3552" class="d2h-code-linenumber d2h-cntx"><a href="#d2h-327542-3552"> <div class="line-num1">91</div> <div class="line-num2">89</div> </a></td> <td class="d2h-cntx"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix"> </span> <span class="d2h-code-line-ctn"> # * +#flag_rsv?+, +#flag_rsv=+, +#flag_df?+, +#flag_df=+, +#flag_mf?+ and +#flag_mf=+</span> </div> </td> </tr><tr> <td id="d2h-327542-3563" class="d2h-code-linenumber d2h-cntx"><a href="#d2h-327542-3563"> <div class="line-num1">92</div> <div class="line-num2">90</div> </a></td> <td class="d2h-cntx"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix"> </span> <span class="d2h-code-line-ctn"> # to access Boolean RSV, MF and DF flags from +frag+ attribute,</span> </div> </td> </tr><tr> <td id="d2h-327542-3574" class="d2h-code-linenumber d2h-ins"><a href="#d2h-327542-3574"> <div class="line-num1"></div> <div class="line-num2">91</div> </a></td> <td class="d2h-ins"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn"> # * +#flag_rsv+, +#flag_df+ and +#flag_mf# to read RSV, MF and DF flags as Integer,</span> </div> </td> </tr><tr> <td id="d2h-327542-3585" class="d2h-code-linenumber d2h-cntx"><a href="#d2h-327542-3585"> <div class="line-num1">93</div> <div class="line-num2">92</div> </a></td> <td class="d2h-cntx"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix"> </span> <span class="d2h-code-line-ctn"> # * +#fragment_offset+ and +#fragment_offset=+ to access 13-bit integer fragment</span> </div> </td> </tr><tr> <td id="d2h-327542-3596" class="d2h-code-linenumber d2h-cntx"><a href="#d2h-327542-3596"> <div class="line-num1">94</div> <div class="line-num2">93</div> </a></td> <td class="d2h-cntx"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix"> </span> <span class="d2h-code-line-ctn"> # offset subattribute from +frag+ attribute.</span> </div> </td> </tr><tr> <td id="d2h-327542-3607" class="d2h-code-linenumber d2h-cntx"><a href="#d2h-327542-3607"> <div class="line-num1">95</div> <div class="line-num2">94</div> </a></td> <td class="d2h-cntx"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix"> </span> <span class="d2h-code-line-ctn"> #</span> </div> </td> </tr><tr> <td id="d2h-327542-3618" class="d2h-code-linenumber d2h-cntx"><a href="#d2h-327542-3618"> <div class="line-num1">96</div> <div class="line-num2">95</div> </a></td> <td class="d2h-cntx"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix"> </span> <span class="d2h-code-line-ctn"> # == Creating a new Struct class from another one</span> </div> </td> </tr><tr> <td id="d2h-327542-3629" class="d2h-code-linenumber d2h-cntx"><a href="#d2h-327542-3629"> <div class="line-num1">97</div> <div class="line-num2">96</div> </a></td> <td class="d2h-cntx"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix"> </span> <span class="d2h-code-line-ctn"> # Some methods may help in this case:</span> </div> </td> </tr><tr> <td class="d2h-code-linenumber d2h-del d2h-change"> <div class="line-num1">98</div> <div class="line-num2"></div> </a></td> <td class="d2h-del d2h-change"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">-</span> <span class="d2h-code-line-ctn"> # * {.define_attr_before} to define a new attribute before an existing one,</span> </div> </td> </tr><tr> <td class="d2h-code-linenumber d2h-del d2h-change"> <div class="line-num1">99</div> <div class="line-num2"></div> </a></td> <td class="d2h-del d2h-change"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">-</span> <span class="d2h-code-line-ctn"> # * {.define_attr_after} to define a new attribute after an existing onr,</span> </div> </td> </tr><tr> <td class="d2h-code-linenumber d2h-del d2h-change"> <div class="line-num1">100</div> <div class="line-num2"></div> </a></td> <td class="d2h-del d2h-change"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">-</span> <span class="d2h-code-line-ctn"> # * {.<del>remove_attribute</del>} to remove an existing attribute,</span> </div> </td> </tr><tr> <td class="d2h-code-linenumber d2h-del d2h-change"> <div class="line-num1">101</div> <div class="line-num2"></div> </a></td> <td class="d2h-del d2h-change"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">-</span> <span class="d2h-code-line-ctn"> # * {.<del>uptade_fied</del>} to change options of an attribute (but not its type),</span> </div> </td> </tr><tr> <td id="d2h-327542-3684" class="d2h-code-linenumber d2h-del"><a href="#d2h-327542-3684"> <div class="line-num1">102</div> <div class="line-num2"></div> </a></td> <td class="d2h-del"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">-</span> <span class="d2h-code-line-ctn"> # * {.remove_bit_attrs_on} to remove bit attribute definition.</span> </div> </td> </tr><tr> <td class="d2h-code-linenumber d2h-ins d2h-change"> <div class="line-num1"></div> <div class="line-num2">97</div> </a></td> <td class="d2h-ins d2h-change"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn"> # * {.define_attr_before} <ins>and {.define_bit_attr_before} </ins>to define a new attribute before an existing one,</span> </div> </td> </tr><tr> <td class="d2h-code-linenumber d2h-ins d2h-change"> <div class="line-num1"></div> <div class="line-num2">98</div> </a></td> <td class="d2h-ins d2h-change"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn"> # * {.define_attr_after} <ins>and {.define_bit_attr_after} </ins>to define a new attribute after an existing onr,</span> </div> </td> </tr><tr> <td class="d2h-code-linenumber d2h-ins d2h-change"> <div class="line-num1"></div> <div class="line-num2">99</div> </a></td> <td class="d2h-ins d2h-change"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn"> # * {.<ins>remove_attr</ins>} to remove an existing attribute,</span> </div> </td> </tr><tr> <td class="d2h-code-linenumber d2h-ins d2h-change"> <div class="line-num1"></div> <div class="line-num2">100</div> </a></td> <td class="d2h-ins d2h-change"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn"> # * {.<ins>uptade_attr</ins>} to change options of an attribute (but not its type),</span> </div> </td> </tr><tr> <td id="d2h-327542-3739" class="d2h-code-linenumber d2h-cntx"><a href="#d2h-327542-3739"> <div class="line-num1">103</div> <div class="line-num2">101</div> </a></td> <td class="d2h-cntx"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix"> </span> <span class="d2h-code-line-ctn"> #</span> </div> </td> </tr><tr> <td id="d2h-327542-3750" class="d2h-code-linenumber d2h-cntx"><a href="#d2h-327542-3750"> <div class="line-num1">104</div> <div class="line-num2">102</div> </a></td> <td class="d2h-cntx"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix"> </span> <span class="d2h-code-line-ctn"> # @author Sylvain Daubert (2016-2024)</span> </div> </td> </tr><tr> <td id="d2h-327542-3761" class="d2h-code-linenumber d2h-cntx"><a href="#d2h-327542-3761"> <div class="line-num1">105</div> <div class="line-num2">103</div> </a></td> <td class="d2h-cntx"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix"> </span> <span class="d2h-code-line-ctn"> # @author LemonTree55</span> </div> </td> </tr> <tr> <td class="d2h-code-linenumber d2h-info"></td> <td class="d2h-info"> <div class="d2h-code-line">@@ -121,7 +119,7 @@ module BinStruct</div> </td> </tr><tr> <td id="d2h-327542-3778" class="d2h-code-linenumber d2h-cntx"><a href="#d2h-327542-3778"> <div class="line-num1">121</div> <div class="line-num2">119</div> </a></td> <td class="d2h-cntx"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix"> </span> <span class="d2h-code-line-ctn"> # @return [Hash]</span> </div> </td> </tr><tr> <td id="d2h-327542-3789" class="d2h-code-linenumber d2h-cntx"><a href="#d2h-327542-3789"> <div class="line-num1">122</div> <div class="line-num2">120</div> </a></td> <td class="d2h-cntx"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix"> </span> <span class="d2h-code-line-ctn"> attr_reader :attr_defs</span> </div> </td> </tr><tr> <td id="d2h-327542-3800" class="d2h-code-linenumber d2h-cntx"><a href="#d2h-327542-3800"> <div class="line-num1">123</div> <div class="line-num2">121</div> </a></td> <td class="d2h-cntx"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix"> </span> <span class="d2h-code-line-ctn"> # Get bit attribute defintions for this class</span> </div> </td> </tr><tr> <td class="d2h-code-linenumber d2h-del d2h-change"> <div class="line-num1">124</div> <div class="line-num2"></div> </a></td> <td class="d2h-del d2h-change"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">-</span> <span class="d2h-code-line-ctn"> # @return [Hash]</span> </div> </td> </tr><tr> <td class="d2h-code-linenumber d2h-ins d2h-change"> <div class="line-num1"></div> <div class="line-num2">122</div> </a></td> <td class="d2h-ins d2h-change"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn"> # @return [Hash<ins>{Symbol=>Array[Symbol</ins>]<ins>}]</ins></span> </div> </td> </tr><tr> <td id="d2h-327542-3833" class="d2h-code-linenumber d2h-cntx"><a href="#d2h-327542-3833"> <div class="line-num1">125</div> <div class="line-num2">123</div> </a></td> <td class="d2h-cntx"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix"> </span> <span class="d2h-code-line-ctn"> attr_reader :bit_attrs</span> </div> </td> </tr><tr> <td id="d2h-327542-3844" class="d2h-code-linenumber d2h-cntx"><a href="#d2h-327542-3844"> <div class="line-num1">126</div> <div class="line-num2">124</div> </a></td> <td class="d2h-cntx"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix"> </span> <span class="d2h-code-line-ctn"><br></span> </div> </td> </tr><tr> <td id="d2h-327542-3855" class="d2h-code-linenumber d2h-cntx"><a href="#d2h-327542-3855"> <div class="line-num1">127</div> <div class="line-num2">125</div> </a></td> <td class="d2h-cntx"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix"> </span> <span class="d2h-code-line-ctn"> # On inheritage, create +@attr_defs+ class variable</span> </div> </td> </tr> <tr> <td class="d2h-code-linenumber d2h-info"></td> <td class="d2h-info"> <div class="d2h-code-line">@@ -198,11 +196,7 @@ module BinStruct</div> </td> </tr><tr> <td id="d2h-327542-3872" class="d2h-code-linenumber d2h-cntx"><a href="#d2h-327542-3872"> <div class="line-num1">198</div> <div class="line-num2">196</div> </a></td> <td class="d2h-cntx"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix"> </span> <span class="d2h-code-line-ctn"> define_attr name, type, options</span> </div> </td> </tr><tr> <td id="d2h-327542-3883" class="d2h-code-linenumber d2h-cntx"><a href="#d2h-327542-3883"> <div class="line-num1">199</div> <div class="line-num2">197</div> </a></td> <td class="d2h-cntx"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix"> </span> <span class="d2h-code-line-ctn"> return if other.nil?</span> </div> </td> </tr><tr> <td id="d2h-327542-3894" class="d2h-code-linenumber d2h-cntx"><a href="#d2h-327542-3894"> <div class="line-num1">200</div> <div class="line-num2">198</div> </a></td> <td class="d2h-cntx"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix"> </span> <span class="d2h-code-line-ctn"><br></span> </div> </td> </tr><tr> <td class="d2h-code-linenumber d2h-del d2h-change"> <div class="line-num1">201</div> <div class="line-num2"></div> </a></td> <td class="d2h-del d2h-change"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">-</span> <span class="d2h-code-line-ctn"> <del>attributes.delete</del> <del>name</del></span> </div> </td> </tr><tr> <td id="d2h-327542-3916" class="d2h-code-linenumber d2h-del"><a href="#d2h-327542-3916"> <div class="line-num1">202</div> <div class="line-num2"></div> </a></td> <td class="d2h-del"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">-</span> <span class="d2h-code-line-ctn"> idx = attributes.index(other)</span> </div> </td> </tr><tr> <td id="d2h-327542-3927" class="d2h-code-linenumber d2h-del"><a href="#d2h-327542-3927"> <div class="line-num1">203</div> <div class="line-num2"></div> </a></td> <td class="d2h-del"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">-</span> <span class="d2h-code-line-ctn"> raise ArgumentError, "unknown #{other} attribute" if idx.nil?</span> </div> </td> </tr><tr> <td id="d2h-327542-3938" class="d2h-code-linenumber d2h-del"><a href="#d2h-327542-3938"> <div class="line-num1">204</div> <div class="line-num2"></div> </a></td> <td class="d2h-del"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">-</span> <span class="d2h-code-line-ctn"><br></span> </div> </td> </tr><tr> <td id="d2h-327542-3949" class="d2h-code-linenumber d2h-del"><a href="#d2h-327542-3949"> <div class="line-num1">205</div> <div class="line-num2"></div> </a></td> <td class="d2h-del"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">-</span> <span class="d2h-code-line-ctn"> attributes[idx, 0] = name</span> </div> </td> </tr><tr> <td class="d2h-code-linenumber d2h-ins d2h-change"> <div class="line-num1"></div> <div class="line-num2">199</div> </a></td> <td class="d2h-ins d2h-change"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn"> <ins>move_attr(name,</ins> <ins>before: other)</ins></span> </div> </td> </tr><tr> <td id="d2h-327542-3971" class="d2h-code-linenumber d2h-cntx"><a href="#d2h-327542-3971"> <div class="line-num1">206</div> <div class="line-num2">200</div> </a></td> <td class="d2h-cntx"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix"> </span> <span class="d2h-code-line-ctn"> end</span> </div> </td> </tr><tr> <td id="d2h-327542-3982" class="d2h-code-linenumber d2h-cntx"><a href="#d2h-327542-3982"> <div class="line-num1">207</div> <div class="line-num2">201</div> </a></td> <td class="d2h-cntx"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix"> </span> <span class="d2h-code-line-ctn"><br></span> </div> </td> </tr><tr> <td id="d2h-327542-3993" class="d2h-code-linenumber d2h-cntx"><a href="#d2h-327542-3993"> <div class="line-num1">208</div> <div class="line-num2">202</div> </a></td> <td class="d2h-cntx"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix"> </span> <span class="d2h-code-line-ctn"> # Define an attribute, after another one</span> </div> </td> </tr> <tr> <td class="d2h-code-linenumber d2h-info"></td> <td class="d2h-info"> <div class="d2h-code-line">@@ -217,11 +211,7 @@ module BinStruct</div> </td> </tr><tr> <td id="d2h-327542-4010" class="d2h-code-linenumber d2h-cntx"><a href="#d2h-327542-4010"> <div class="line-num1">217</div> <div class="line-num2">211</div> </a></td> <td class="d2h-cntx"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix"> </span> <span class="d2h-code-line-ctn"> define_attr name, type, options</span> </div> </td> </tr><tr> <td id="d2h-327542-4021" class="d2h-code-linenumber d2h-cntx"><a href="#d2h-327542-4021"> <div class="line-num1">218</div> <div class="line-num2">212</div> </a></td> <td class="d2h-cntx"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix"> </span> <span class="d2h-code-line-ctn"> return if other.nil?</span> </div> </td> </tr><tr> <td id="d2h-327542-4032" class="d2h-code-linenumber d2h-cntx"><a href="#d2h-327542-4032"> <div class="line-num1">219</div> <div class="line-num2">213</div> </a></td> <td class="d2h-cntx"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix"> </span> <span class="d2h-code-line-ctn"><br></span> </div> </td> </tr><tr> <td class="d2h-code-linenumber d2h-del d2h-change"> <div class="line-num1">220</div> <div class="line-num2"></div> </a></td> <td class="d2h-del d2h-change"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">-</span> <span class="d2h-code-line-ctn"> <del>attributes.delete</del> <del>name</del></span> </div> </td> </tr><tr> <td id="d2h-327542-4054" class="d2h-code-linenumber d2h-del"><a href="#d2h-327542-4054"> <div class="line-num1">221</div> <div class="line-num2"></div> </a></td> <td class="d2h-del"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">-</span> <span class="d2h-code-line-ctn"> idx = attributes.index(other)</span> </div> </td> </tr><tr> <td id="d2h-327542-4065" class="d2h-code-linenumber d2h-del"><a href="#d2h-327542-4065"> <div class="line-num1">222</div> <div class="line-num2"></div> </a></td> <td class="d2h-del"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">-</span> <span class="d2h-code-line-ctn"> raise ArgumentError, "unknown #{other} attribute" if idx.nil?</span> </div> </td> </tr><tr> <td id="d2h-327542-4076" class="d2h-code-linenumber d2h-del"><a href="#d2h-327542-4076"> <div class="line-num1">223</div> <div class="line-num2"></div> </a></td> <td class="d2h-del"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">-</span> <span class="d2h-code-line-ctn"><br></span> </div> </td> </tr><tr> <td id="d2h-327542-4087" class="d2h-code-linenumber d2h-del"><a href="#d2h-327542-4087"> <div class="line-num1">224</div> <div class="line-num2"></div> </a></td> <td class="d2h-del"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">-</span> <span class="d2h-code-line-ctn"> attributes[idx + 1, 0] = name</span> </div> </td> </tr><tr> <td class="d2h-code-linenumber d2h-ins d2h-change"> <div class="line-num1"></div> <div class="line-num2">214</div> </a></td> <td class="d2h-ins d2h-change"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn"> <ins>move_attr(name,</ins> <ins>after: other)</ins></span> </div> </td> </tr><tr> <td id="d2h-327542-4109" class="d2h-code-linenumber d2h-cntx"><a href="#d2h-327542-4109"> <div class="line-num1">225</div> <div class="line-num2">215</div> </a></td> <td class="d2h-cntx"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix"> </span> <span class="d2h-code-line-ctn"> end</span> </div> </td> </tr><tr> <td id="d2h-327542-4120" class="d2h-code-linenumber d2h-cntx"><a href="#d2h-327542-4120"> <div class="line-num1">226</div> <div class="line-num2">216</div> </a></td> <td class="d2h-cntx"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix"> </span> <span class="d2h-code-line-ctn"><br></span> </div> </td> </tr><tr> <td id="d2h-327542-4131" class="d2h-code-linenumber d2h-cntx"><a href="#d2h-327542-4131"> <div class="line-num1">227</div> <div class="line-num2">217</div> </a></td> <td class="d2h-cntx"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix"> </span> <span class="d2h-code-line-ctn"> # Remove a previously defined attribute</span> </div> </td> </tr> <tr> <td class="d2h-code-linenumber d2h-info"></td> <td class="d2h-info"> <div class="d2h-code-line">@@ -229,9 +219,12 @@ module BinStruct</div> </td> </tr><tr> <td id="d2h-327542-4148" class="d2h-code-linenumber d2h-cntx"><a href="#d2h-327542-4148"> <div class="line-num1">229</div> <div class="line-num2">219</div> </a></td> <td class="d2h-cntx"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix"> </span> <span class="d2h-code-line-ctn"> # @return [void]</span> </div> </td> </tr><tr> <td id="d2h-327542-4159" class="d2h-code-linenumber d2h-cntx"><a href="#d2h-327542-4159"> <div class="line-num1">230</div> <div class="line-num2">220</div> </a></td> <td class="d2h-cntx"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix"> </span> <span class="d2h-code-line-ctn"> def remove_attr(name)</span> </div> </td> </tr><tr> <td id="d2h-327542-4170" class="d2h-code-linenumber d2h-cntx"><a href="#d2h-327542-4170"> <div class="line-num1">231</div> <div class="line-num2">221</div> </a></td> <td class="d2h-cntx"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix"> </span> <span class="d2h-code-line-ctn"> attributes.delete(name)</span> </div> </td> </tr><tr> <td class="d2h-code-linenumber d2h-del d2h-change"> <div class="line-num1">232</div> <div class="line-num2"></div> </a></td> <td class="d2h-del d2h-change"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">-</span> <span class="d2h-code-line-ctn"> <del>@</del>attr_defs.delete(name)</span> </div> </td> </tr><tr> <td class="d2h-code-linenumber d2h-ins d2h-change"> <div class="line-num1"></div> <div class="line-num2">222</div> </a></td> <td class="d2h-ins d2h-change"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn"> <ins>attr_def = </ins>attr_defs.delete(name)</span> </div> </td> </tr><tr> <td id="d2h-327542-4203" class="d2h-code-linenumber d2h-cntx"><a href="#d2h-327542-4203"> <div class="line-num1">233</div> <div class="line-num2">223</div> </a></td> <td class="d2h-cntx"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix"> </span> <span class="d2h-code-line-ctn"> undef_method name if method_defined?(name)</span> </div> </td> </tr><tr> <td id="d2h-327542-4214" class="d2h-code-linenumber d2h-cntx"><a href="#d2h-327542-4214"> <div class="line-num1">234</div> <div class="line-num2">224</div> </a></td> <td class="d2h-cntx"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix"> </span> <span class="d2h-code-line-ctn"> undef_method :"#{name}=" if method_defined?(:"#{name}=")</span> </div> </td> </tr><tr> <td id="d2h-327542-4225" class="d2h-code-linenumber d2h-ins"><a href="#d2h-327542-4225"> <div class="line-num1"></div> <div class="line-num2">225</div> </a></td> <td class="d2h-ins"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn"> return unless bit_attrs[name]</span> </div> </td> </tr><tr> <td id="d2h-327542-4236" class="d2h-code-linenumber d2h-ins"><a href="#d2h-327542-4236"> <div class="line-num1"></div> <div class="line-num2">226</div> </a></td> <td class="d2h-ins"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn"><br></span> </div> </td> </tr><tr> <td id="d2h-327542-4247" class="d2h-code-linenumber d2h-ins"><a href="#d2h-327542-4247"> <div class="line-num1"></div> <div class="line-num2">227</div> </a></td> <td class="d2h-ins"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn"> attr_def.type.new.bit_methods.each { |meth| undef_method(meth) }</span> </div> </td> </tr><tr> <td id="d2h-327542-4258" class="d2h-code-linenumber d2h-cntx"><a href="#d2h-327542-4258"> <div class="line-num1">235</div> <div class="line-num2">228</div> </a></td> <td class="d2h-cntx"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix"> </span> <span class="d2h-code-line-ctn"> end</span> </div> </td> </tr><tr> <td id="d2h-327542-4269" class="d2h-code-linenumber d2h-cntx"><a href="#d2h-327542-4269"> <div class="line-num1">236</div> <div class="line-num2">229</div> </a></td> <td class="d2h-cntx"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix"> </span> <span class="d2h-code-line-ctn"><br></span> </div> </td> </tr><tr> <td id="d2h-327542-4280" class="d2h-code-linenumber d2h-cntx"><a href="#d2h-327542-4280"> <div class="line-num1">237</div> <div class="line-num2">230</div> </a></td> <td class="d2h-cntx"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix"> </span> <span class="d2h-code-line-ctn"> # Update a previously defined attribute</span> </div> </td> </tr> <tr> <td class="d2h-code-linenumber d2h-info"></td> <td class="d2h-info"> <div class="d2h-code-line">@@ -250,64 +243,95 @@ module BinStruct</div> </td> </tr><tr> <td id="d2h-327542-4297" class="d2h-code-linenumber d2h-cntx"><a href="#d2h-327542-4297"> <div class="line-num1">250</div> <div class="line-num2">243</div> </a></td> <td class="d2h-cntx"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix"> </span> <span class="d2h-code-line-ctn"> attr_defs[name].options.merge!(options)</span> </div> </td> </tr><tr> <td id="d2h-327542-4308" class="d2h-code-linenumber d2h-cntx"><a href="#d2h-327542-4308"> <div class="line-num1">251</div> <div class="line-num2">244</div> </a></td> <td class="d2h-cntx"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix"> </span> <span class="d2h-code-line-ctn"> end</span> </div> </td> </tr><tr> <td id="d2h-327542-4319" class="d2h-code-linenumber d2h-cntx"><a href="#d2h-327542-4319"> <div class="line-num1">252</div> <div class="line-num2">245</div> </a></td> <td class="d2h-cntx"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix"> </span> <span class="d2h-code-line-ctn"><br></span> </div> </td> </tr><tr> <td class="d2h-code-linenumber d2h-del d2h-change"> <div class="line-num1">253</div> <div class="line-num2"></div> </a></td> <td class="d2h-del d2h-change"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">-</span> <span class="d2h-code-line-ctn"> # Define a bit attribute<del> on given attribute</del></span> </div> </td> </tr><tr> <td class="d2h-code-linenumber d2h-ins d2h-change"> <div class="line-num1"></div> <div class="line-num2">246</div> </a></td> <td class="d2h-ins d2h-change"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn"> # Define a bit attribute</span> </div> </td> </tr><tr> <td id="d2h-327542-4352" class="d2h-code-linenumber d2h-cntx"><a href="#d2h-327542-4352"> <div class="line-num1">254</div> <div class="line-num2">247</div> </a></td> <td class="d2h-cntx"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix"> </span> <span class="d2h-code-line-ctn"> # class MyHeader < BinStruct::Struct</span> </div> </td> </tr><tr> <td class="d2h-code-linenumber d2h-del d2h-change"> <div class="line-num1">255</div> <div class="line-num2"></div> </a></td> <td class="d2h-del d2h-change"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">-</span> <span class="d2h-code-line-ctn"> # <del>define_attr</del> :<del>flags, BinStruct::Int16</del></span> </div> </td> </tr><tr> <td id="d2h-327542-4374" class="d2h-code-linenumber d2h-del"><a href="#d2h-327542-4374"> <div class="line-num1">256</div> <div class="line-num2"></div> </a></td> <td class="d2h-del"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">-</span> <span class="d2h-code-line-ctn"> # # define a bit attribute on :flag attribute</span> </div> </td> </tr><tr> <td class="d2h-code-linenumber d2h-ins d2h-change"> <div class="line-num1"></div> <div class="line-num2">248</div> </a></td> <td class="d2h-ins d2h-change"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn"> # <ins>#</ins> <ins>define a 16-bit attribute named </ins>:<ins>flag</ins></span> </div> </td> </tr><tr> <td id="d2h-327542-4396" class="d2h-code-linenumber d2h-cntx"><a href="#d2h-327542-4396"> <div class="line-num1">257</div> <div class="line-num2">249</div> </a></td> <td class="d2h-cntx"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix"> </span> <span class="d2h-code-line-ctn"> # # flag1, flag2 and flag3 are 1-bit attributes</span> </div> </td> </tr><tr> <td class="d2h-code-linenumber d2h-del d2h-change"> <div class="line-num1">258</div> <div class="line-num2"></div> </a></td> <td class="d2h-del d2h-change"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">-</span> <span class="d2h-code-line-ctn"> # # type and stype are 3-bit attributes. reserved is a <del>6</del>-bit attribute</span> </div> </td> </tr><tr> <td class="d2h-code-linenumber d2h-del d2h-change"> <div class="line-num1">259</div> <div class="line-num2"></div> </a></td> <td class="d2h-del d2h-change"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">-</span> <span class="d2h-code-line-ctn"> # <del>define_bit_attributes_on</del> :flags, :<del>flag1</del>, :<del>flag2</del>, :<del>flag3</del>, :<del>type,</del> 3, :<del>stype,</del> 3, :<del>reserved,</del> 7</span> </div> </td> </tr><tr> <td class="d2h-code-linenumber d2h-ins d2h-change"> <div class="line-num1"></div> <div class="line-num2">250</div> </a></td> <td class="d2h-ins d2h-change"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn"> # # type and stype are 3-bit attributes. reserved is a <ins>7</ins>-bit attribute</span> </div> </td> </tr><tr> <td class="d2h-code-linenumber d2h-ins d2h-change"> <div class="line-num1"></div> <div class="line-num2">251</div> </a></td> <td class="d2h-ins d2h-change"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn"> # <ins>define_bit_attr</ins> :flags, <ins>flag1</ins>:<ins> 1</ins>, <ins>flag2</ins>:<ins> 1</ins>, <ins>flag3</ins>:<ins> 1</ins>, <ins>type</ins>: 3, <ins>stype</ins>: 3, <ins>reserved</ins>: 7</span> </div> </td> </tr><tr> <td id="d2h-327542-4451" class="d2h-code-linenumber d2h-cntx"><a href="#d2h-327542-4451"> <div class="line-num1">260</div> <div class="line-num2">252</div> </a></td> <td class="d2h-cntx"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix"> </span> <span class="d2h-code-line-ctn"> # end</span> </div> </td> </tr><tr> <td class="d2h-code-linenumber d2h-del d2h-change"> <div class="line-num1">261</div> <div class="line-num2"></div> </a></td> <td class="d2h-del d2h-change"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">-</span> <span class="d2h-code-line-ctn"> # A bit attribute of size 1 bit defines <del>2</del> methods:</span> </div> </td> </tr><tr> <td class="d2h-code-linenumber d2h-del d2h-change"> <div class="line-num1">262</div> <div class="line-num2"></div> </a></td> <td class="d2h-del d2h-change"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">-</span> <span class="d2h-code-line-ctn"> # * +#attr+ which returns <del>a</del> <del>Boolean</del>,</span> </div> </td> </tr><tr> <td class="d2h-code-linenumber d2h-del d2h-change"> <div class="line-num1">263</div> <div class="line-num2"></div> </a></td> <td class="d2h-del d2h-change"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">-</span> <span class="d2h-code-line-ctn"> # * +#attr<del>=+</del> which <del>takes and </del>returns a Boolean<del>.</del></span> </div> </td> </tr><tr> <td class="d2h-code-linenumber d2h-del d2h-change"> <div class="line-num1">264</div> <div class="line-num2"></div> </a></td> <td class="d2h-del d2h-change"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">-</span> <span class="d2h-code-line-ctn"> # <del>A</del> <del>bit</del> <del>attribute</del> <del>of</del> <del>more</del> <del>bits</del> <del>defines</del> <del>2</del> <del>methods:</del></span> </div> </td> </tr><tr> <td class="d2h-code-linenumber d2h-ins d2h-change"> <div class="line-num1"></div> <div class="line-num2">253</div> </a></td> <td class="d2h-ins d2h-change"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn"> # A bit attribute of size 1 bit defines <ins>3</ins> methods:</span> </div> </td> </tr><tr> <td class="d2h-code-linenumber d2h-ins d2h-change"> <div class="line-num1"></div> <div class="line-num2">254</div> </a></td> <td class="d2h-ins d2h-change"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn"> # * +#attr+ which returns <ins>an</ins> <ins>Integer</ins>,</span> </div> </td> </tr><tr> <td class="d2h-code-linenumber d2h-ins d2h-change"> <div class="line-num1"></div> <div class="line-num2">255</div> </a></td> <td class="d2h-ins d2h-change"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn"> # * +#attr<ins>?+</ins> which returns a Boolean<ins>,</ins></span> </div> </td> </tr><tr> <td class="d2h-code-linenumber d2h-ins d2h-change"> <div class="line-num1"></div> <div class="line-num2">256</div> </a></td> <td class="d2h-ins d2h-change"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn"> # <ins>*</ins> <ins>+#attr=+</ins> <ins>which</ins> <ins>accepts</ins> <ins>an</ins> <ins>Integer</ins> <ins>or</ins> <ins>a</ins> <ins>Boolean.</ins></span> </div> </td> </tr><tr> <td id="d2h-327542-4550" class="d2h-code-linenumber d2h-ins"><a href="#d2h-327542-4550"> <div class="line-num1"></div> <div class="line-num2">257</div> </a></td> <td class="d2h-ins"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn"> # A bit attribute of more bits defines only 2 methods:</span> </div> </td> </tr><tr> <td id="d2h-327542-4561" class="d2h-code-linenumber d2h-cntx"><a href="#d2h-327542-4561"> <div class="line-num1">265</div> <div class="line-num2">258</div> </a></td> <td class="d2h-cntx"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix"> </span> <span class="d2h-code-line-ctn"> # * +#attr+ which returns an Integer,</span> </div> </td> </tr><tr> <td class="d2h-code-linenumber d2h-del d2h-change"> <div class="line-num1">266</div> <div class="line-num2"></div> </a></td> <td class="d2h-del d2h-change"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">-</span> <span class="d2h-code-line-ctn"> # * +#attr=+ which takes <del>and returns </del>an Integer.</span> </div> </td> </tr><tr> <td class="d2h-code-linenumber d2h-del d2h-change"> <div class="line-num1">267</div> <div class="line-num2"></div> </a></td> <td class="d2h-del d2h-change"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">-</span> <span class="d2h-code-line-ctn"> # @param [Symbol] attr attribute name<del> (attribute should be a {BinStruct::Int}</del></span> </div> </td> </tr><tr> <td class="d2h-code-linenumber d2h-del d2h-change"> <div class="line-num1">268</div> <div class="line-num2"></div> </a></td> <td class="d2h-del d2h-change"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">-</span> <span class="d2h-code-line-ctn"> #<del> subclass)</del></span> </div> </td> </tr><tr> <td class="d2h-code-linenumber d2h-del d2h-change"> <div class="line-num1">269</div> <div class="line-num2"></div> </a></td> <td class="d2h-del d2h-change"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">-</span> <span class="d2h-code-line-ctn"> # @param [<del>Array</del>] <del>args</del> <del>list</del> <del>of</del> <del>bit</del> attribute<del> names. Name may be followed</del></span> </div> </td> </tr><tr> <td class="d2h-code-linenumber d2h-del d2h-change"> <div class="line-num1">270</div> <div class="line-num2"></div> </a></td> <td class="d2h-del d2h-change"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">-</span> <span class="d2h-code-line-ctn"> #<del> by</del> <del>bit</del> <del>size</del>. <del>If</del> <del>no</del> <del>size</del> <del>is given</del>, <del>1</del> <del>bit</del> <del>is</del> <del>assumed</del>.</span> </div> </td> </tr><tr> <td id="d2h-327542-4627" class="d2h-code-linenumber d2h-del"><a href="#d2h-327542-4627"> <div class="line-num1">271</div> <div class="line-num2"></div> </a></td> <td class="d2h-del"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">-</span> <span class="d2h-code-line-ctn"> # @raise [ArgumentError] unknown +attr+</span> </div> </td> </tr><tr> <td class="d2h-code-linenumber d2h-ins d2h-change"> <div class="line-num1"></div> <div class="line-num2">259</div> </a></td> <td class="d2h-ins d2h-change"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn"> # * +#attr=+ which takes an Integer.</span> </div> </td> </tr><tr> <td class="d2h-code-linenumber d2h-ins d2h-change"> <div class="line-num1"></div> <div class="line-num2">260</div> </a></td> <td class="d2h-ins d2h-change"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn"> # @param [Symbol] attr attribute name</span> </div> </td> </tr><tr> <td class="d2h-code-linenumber d2h-ins d2h-change"> <div class="line-num1"></div> <div class="line-num2">261</div> </a></td> <td class="d2h-ins d2h-change"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn"> #<ins> @param [:big,:little,:native] endian endianess of Integer</ins></span> </div> </td> </tr><tr> <td class="d2h-code-linenumber d2h-ins d2h-change"> <div class="line-num1"></div> <div class="line-num2">262</div> </a></td> <td class="d2h-ins d2h-change"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn"> # @param [<ins>Integer</ins>] <ins>default</ins> <ins>default</ins> <ins>value</ins> <ins>for</ins> <ins>whole </ins>attribute</span> </div> </td> </tr><tr> <td class="d2h-code-linenumber d2h-ins d2h-change"> <div class="line-num1"></div> <div class="line-num2">263</div> </a></td> <td class="d2h-ins d2h-change"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn"> # <ins>@param</ins> <ins>[Hash{Symbol=>Integer}] fields Hash defining fields</ins>. <ins>Keys</ins> <ins>are</ins> <ins>field</ins> <ins>names</ins>, <ins>values</ins> <ins>are</ins> <ins>field</ins> <ins>sizes</ins>.</span> </div> </td> </tr><tr> <td id="d2h-327542-4693" class="d2h-code-linenumber d2h-cntx"><a href="#d2h-327542-4693"> <div class="line-num1">272</div> <div class="line-num2">264</div> </a></td> <td class="d2h-cntx"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix"> </span> <span class="d2h-code-line-ctn"> # @return [void]</span> </div> </td> </tr><tr> <td class="d2h-code-linenumber d2h-del d2h-change"> <div class="line-num1">273</div> <div class="line-num2"></div> </a></td> <td class="d2h-del d2h-change"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">-</span> <span class="d2h-code-line-ctn"> <del>def</del> <del>define_bit_attrs_on(attr,</del> <del>*args)</del></span> </div> </td> </tr><tr> <td class="d2h-code-linenumber d2h-del d2h-change"> <div class="line-num1">274</div> <div class="line-num2"></div> </a></td> <td class="d2h-del d2h-change"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">-</span> <span class="d2h-code-line-ctn"><del> check_existence_of</del>(attr)</span> </div> </td> </tr><tr> <td class="d2h-code-linenumber d2h-del d2h-change"> <div class="line-num1">275</div> <div class="line-num2"></div> </a></td> <td class="d2h-del d2h-change"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">-</span> <span class="d2h-code-line-ctn"><br></span> </div> </td> </tr><tr> <td class="d2h-code-linenumber d2h-del d2h-change"> <div class="line-num1">276</div> <div class="line-num2"></div> </a></td> <td class="d2h-del d2h-change"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">-</span> <span class="d2h-code-line-ctn"> <del>type</del> = <del>attr_defs[attr]</del>.<del>type</del></span> </div> </td> </tr><tr> <td class="d2h-code-linenumber d2h-del d2h-change"> <div class="line-num1">277</div> <div class="line-num2"></div> </a></td> <td class="d2h-del d2h-change"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">-</span> <span class="d2h-code-line-ctn"> <del>raise</del> <del>TypeError</del>, <del>"#{attr}</del> <del>is not a BinStruct::Int" unless type < Int</del></span> </div> </td> </tr><tr> <td class="d2h-code-linenumber d2h-del d2h-change"> <div class="line-num1">278</div> <div class="line-num2"></div> </a></td> <td class="d2h-del d2h-change"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">-</span> <span class="d2h-code-line-ctn"><br></span> </div> </td> </tr><tr> <td class="d2h-code-linenumber d2h-del d2h-change"> <div class="line-num1">279</div> <div class="line-num2"></div> </a></td> <td class="d2h-del d2h-change"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">-</span> <span class="d2h-code-line-ctn"> <del>total_size = type</del>.new.<del>nbits</del></span> </div> </td> </tr><tr> <td class="d2h-code-linenumber d2h-del d2h-change"> <div class="line-num1">280</div> <div class="line-num2"></div> </a></td> <td class="d2h-del d2h-change"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">-</span> <span class="d2h-code-line-ctn"><del> idx</del> =<del> total_size - 1</del></span> </div> </td> </tr><tr> <td class="d2h-code-linenumber d2h-ins d2h-change"> <div class="line-num1"></div> <div class="line-num2">265</div> </a></td> <td class="d2h-ins d2h-change"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn"> <ins>#</ins> <ins>@since</ins> <ins>0.3.0</ins></span> </div> </td> </tr><tr> <td class="d2h-code-linenumber d2h-ins d2h-change"> <div class="line-num1"></div> <div class="line-num2">266</div> </a></td> <td class="d2h-ins d2h-change"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn"><ins> def define_bit_attr</ins>(attr<ins>, endian: :big, default: 0, **fields</ins>)</span> </div> </td> </tr><tr> <td class="d2h-code-linenumber d2h-ins d2h-change"> <div class="line-num1"></div> <div class="line-num2">267</div> </a></td> <td class="d2h-ins d2h-change"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn"><ins> width = fields.reduce(0) { |acc, ary| acc + ary.last }</ins></span> </div> </td> </tr><tr> <td class="d2h-code-linenumber d2h-ins d2h-change"> <div class="line-num1"></div> <div class="line-num2">268</div> </a></td> <td class="d2h-ins d2h-change"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn"> <ins>bit_attr_klass</ins> = <ins>BitAttr</ins>.<ins>create(width: width, endian: endian, **fields)</ins></span> </div> </td> </tr><tr> <td class="d2h-code-linenumber d2h-ins d2h-change"> <div class="line-num1"></div> <div class="line-num2">269</div> </a></td> <td class="d2h-ins d2h-change"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn"> <ins>define_attr(attr,</ins> <ins>bit_attr_klass</ins>, <ins>default:</ins> <ins>default)</ins></span> </div> </td> </tr><tr> <td class="d2h-code-linenumber d2h-ins d2h-change"> <div class="line-num1"></div> <div class="line-num2">270</div> </a></td> <td class="d2h-ins d2h-change"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn"><ins> fields.each_key { |field| register_bit_attr_field(attr, field) }</ins></span> </div> </td> </tr><tr> <td class="d2h-code-linenumber d2h-ins d2h-change"> <div class="line-num1"></div> <div class="line-num2">271</div> </a></td> <td class="d2h-ins d2h-change"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn"> <ins>bit_attr_klass</ins>.new.<ins>bit_methods.each do |meth|</ins></span> </div> </td> </tr><tr> <td class="d2h-code-linenumber d2h-ins d2h-change"> <div class="line-num1"></div> <div class="line-num2">272</div> </a></td> <td class="d2h-ins d2h-change"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn"><ins> if</ins> <ins>meth.to_s.end_with?('</ins>=<ins>')</ins></span> </div> </td> </tr><tr> <td id="d2h-327542-4880" class="d2h-code-linenumber d2h-ins"><a href="#d2h-327542-4880"> <div class="line-num1"></div> <div class="line-num2">273</div> </a></td> <td class="d2h-ins"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn"> define_method(meth) { |value| self[attr].send(meth, value) }</span> </div> </td> </tr><tr> <td id="d2h-327542-4891" class="d2h-code-linenumber d2h-ins"><a href="#d2h-327542-4891"> <div class="line-num1"></div> <div class="line-num2">274</div> </a></td> <td class="d2h-ins"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn"> else</span> </div> </td> </tr><tr> <td id="d2h-327542-4902" class="d2h-code-linenumber d2h-ins"><a href="#d2h-327542-4902"> <div class="line-num1"></div> <div class="line-num2">275</div> </a></td> <td class="d2h-ins"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn"> define_method(meth) { self[attr].send(meth) }</span> </div> </td> </tr><tr> <td id="d2h-327542-4913" class="d2h-code-linenumber d2h-ins"><a href="#d2h-327542-4913"> <div class="line-num1"></div> <div class="line-num2">276</div> </a></td> <td class="d2h-ins"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn"> end</span> </div> </td> </tr><tr> <td id="d2h-327542-4924" class="d2h-code-linenumber d2h-ins"><a href="#d2h-327542-4924"> <div class="line-num1"></div> <div class="line-num2">277</div> </a></td> <td class="d2h-ins"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn"> end</span> </div> </td> </tr><tr> <td id="d2h-327542-4935" class="d2h-code-linenumber d2h-ins"><a href="#d2h-327542-4935"> <div class="line-num1"></div> <div class="line-num2">278</div> </a></td> <td class="d2h-ins"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn"> end</span> </div> </td> </tr><tr> <td id="d2h-327542-4946" class="d2h-code-linenumber d2h-cntx"><a href="#d2h-327542-4946"> <div class="line-num1">281</div> <div class="line-num2">279</div> </a></td> <td class="d2h-cntx"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix"> </span> <span class="d2h-code-line-ctn"><br></span> </div> </td> </tr><tr> <td class="d2h-code-linenumber d2h-del d2h-change"> <div class="line-num1">282</div> <div class="line-num2"></div> </a></td> <td class="d2h-del d2h-change"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">-</span> <span class="d2h-code-line-ctn"><del> until</del> <del>args.empty?</del></span> </div> </td> </tr><tr> <td class="d2h-code-linenumber d2h-del d2h-change"> <div class="line-num1">283</div> <div class="line-num2"></div> </a></td> <td class="d2h-del d2h-change"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">-</span> <span class="d2h-code-line-ctn"><del> arg</del> <del>=</del> <del>args</del>.<del>shift</del></span> </div> </td> </tr><tr> <td class="d2h-code-linenumber d2h-del d2h-change"> <div class="line-num1">284</div> <div class="line-num2"></div> </a></td> <td class="d2h-del d2h-change"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">-</span> <span class="d2h-code-line-ctn"><del> next</del> <del>unless</del> <del>arg</del>.<del>is_a? Symbol</del></span> </div> </td> </tr><tr> <td class="d2h-code-linenumber d2h-ins d2h-change"> <div class="line-num1"></div> <div class="line-num2">280</div> </a></td> <td class="d2h-ins d2h-change"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn"><ins> #</ins> <ins>Define a bit attribute, before another attribute</ins></span> </div> </td> </tr><tr> <td class="d2h-code-linenumber d2h-ins d2h-change"> <div class="line-num1"></div> <div class="line-num2">281</div> </a></td> <td class="d2h-ins d2h-change"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn"><ins> #</ins> <ins>@param</ins> <ins>[Symbol,nil] other attribute name to create a new one before</ins>.</span> </div> </td> </tr><tr> <td class="d2h-code-linenumber d2h-ins d2h-change"> <div class="line-num1"></div> <div class="line-num2">282</div> </a></td> <td class="d2h-ins d2h-change"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn"><ins> # If</ins> <ins>+nil+,</ins> <ins>new attribute is appended</ins>.</span> </div> </td> </tr><tr> <td id="d2h-327542-5023" class="d2h-code-linenumber d2h-ins"><a href="#d2h-327542-5023"> <div class="line-num1"></div> <div class="line-num2">283</div> </a></td> <td class="d2h-ins"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn"> # @param [Symbol] name attribute name to create</span> </div> </td> </tr><tr> <td id="d2h-327542-5034" class="d2h-code-linenumber d2h-ins"><a href="#d2h-327542-5034"> <div class="line-num1"></div> <div class="line-num2">284</div> </a></td> <td class="d2h-ins"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn"> # @param [:big,:little,:native] endian endianess of Integer</span> </div> </td> </tr><tr> <td id="d2h-327542-5045" class="d2h-code-linenumber d2h-ins"><a href="#d2h-327542-5045"> <div class="line-num1"></div> <div class="line-num2">285</div> </a></td> <td class="d2h-ins"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn"> # @param [Hash{Symbol=>Integer}] fields Hash defining fields. Keys are field names, values are field sizes.</span> </div> </td> </tr><tr> <td id="d2h-327542-5056" class="d2h-code-linenumber d2h-ins"><a href="#d2h-327542-5056"> <div class="line-num1"></div> <div class="line-num2">286</div> </a></td> <td class="d2h-ins"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn"> # @return [void]</span> </div> </td> </tr><tr> <td id="d2h-327542-5067" class="d2h-code-linenumber d2h-ins"><a href="#d2h-327542-5067"> <div class="line-num1"></div> <div class="line-num2">287</div> </a></td> <td class="d2h-ins"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn"> # @since 0.3.0</span> </div> </td> </tr><tr> <td id="d2h-327542-5078" class="d2h-code-linenumber d2h-ins"><a href="#d2h-327542-5078"> <div class="line-num1"></div> <div class="line-num2">288</div> </a></td> <td class="d2h-ins"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn"> # @see .define_bit_attr</span> </div> </td> </tr><tr> <td id="d2h-327542-5089" class="d2h-code-linenumber d2h-ins"><a href="#d2h-327542-5089"> <div class="line-num1"></div> <div class="line-num2">289</div> </a></td> <td class="d2h-ins"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn"> def define_bit_attr_before(other, name, endian: :big, **fields)</span> </div> </td> </tr><tr> <td id="d2h-327542-5100" class="d2h-code-linenumber d2h-ins"><a href="#d2h-327542-5100"> <div class="line-num1"></div> <div class="line-num2">290</div> </a></td> <td class="d2h-ins"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn"> define_bit_attr(name, endian: endian, **fields)</span> </div> </td> </tr><tr> <td id="d2h-327542-5111" class="d2h-code-linenumber d2h-ins"><a href="#d2h-327542-5111"> <div class="line-num1"></div> <div class="line-num2">291</div> </a></td> <td class="d2h-ins"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn"> return if other.nil?</span> </div> </td> </tr><tr> <td id="d2h-327542-5122" class="d2h-code-linenumber d2h-cntx"><a href="#d2h-327542-5122"> <div class="line-num1">285</div> <div class="line-num2">292</div> </a></td> <td class="d2h-cntx"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix"> </span> <span class="d2h-code-line-ctn"><br></span> </div> </td> </tr><tr> <td class="d2h-code-linenumber d2h-del d2h-change"> <div class="line-num1">286</div> <div class="line-num2"></div> </a></td> <td class="d2h-del d2h-change"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">-</span> <span class="d2h-code-line-ctn"><del> size</del> <del>=</del> <del>size_from(args</del>)</span> </div> </td> </tr><tr> <td class="d2h-code-linenumber d2h-ins d2h-change"> <div class="line-num1"></div> <div class="line-num2">293</div> </a></td> <td class="d2h-ins d2h-change"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn"><ins> move_attr(name,</ins> <ins>before:</ins> <ins>other</ins>)</span> </div> </td> </tr><tr> <td id="d2h-327542-5155" class="d2h-code-linenumber d2h-ins"><a href="#d2h-327542-5155"> <div class="line-num1"></div> <div class="line-num2">294</div> </a></td> <td class="d2h-ins"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn"> end</span> </div> </td> </tr><tr> <td id="d2h-327542-5166" class="d2h-code-linenumber d2h-cntx"><a href="#d2h-327542-5166"> <div class="line-num1">287</div> <div class="line-num2">295</div> </a></td> <td class="d2h-cntx"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix"> </span> <span class="d2h-code-line-ctn"><br></span> </div> </td> </tr><tr> <td class="d2h-code-linenumber d2h-del d2h-change"> <div class="line-num1">288</div> <div class="line-num2"></div> </a></td> <td class="d2h-del d2h-change"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">-</span> <span class="d2h-code-line-ctn"><del> unless</del> <del>attr</del> <del>==</del> <del>:_</del></span> </div> </td> </tr><tr> <td class="d2h-code-linenumber d2h-del d2h-change"> <div class="line-num1">289</div> <div class="line-num2"></div> </a></td> <td class="d2h-del d2h-change"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">-</span> <span class="d2h-code-line-ctn"><del> add_bit_methods(attr,</del> <del>arg,</del> <del>size</del>, <del>total_size,</del> <del>idx)</del></span> </div> </td> </tr><tr> <td class="d2h-code-linenumber d2h-del d2h-change"> <div class="line-num1">290</div> <div class="line-num2"></div> </a></td> <td class="d2h-del d2h-change"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">-</span> <span class="d2h-code-line-ctn"><del> register_bit_attr_size(attr,</del> <del>arg,</del> <del>size)</del></span> </div> </td> </tr><tr> <td class="d2h-code-linenumber d2h-del d2h-change"> <div class="line-num1">291</div> <div class="line-num2"></div> </a></td> <td class="d2h-del d2h-change"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">-</span> <span class="d2h-code-line-ctn"><del> end</del></span> </div> </td> </tr><tr> <td class="d2h-code-linenumber d2h-ins d2h-change"> <div class="line-num1"></div> <div class="line-num2">296</div> </a></td> <td class="d2h-ins d2h-change"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn"><ins> #</ins> <ins>Define</ins> <ins>a</ins> <ins>bit attribute after another attribute</ins></span> </div> </td> </tr><tr> <td class="d2h-code-linenumber d2h-ins d2h-change"> <div class="line-num1"></div> <div class="line-num2">297</div> </a></td> <td class="d2h-ins d2h-change"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn"><ins> #</ins> <ins>@param</ins> <ins>[Symbol</ins>,<ins>nil]</ins> <ins>other</ins> <ins>attribute name to create a new one after.</ins></span> </div> </td> </tr><tr> <td class="d2h-code-linenumber d2h-ins d2h-change"> <div class="line-num1"></div> <div class="line-num2">298</div> </a></td> <td class="d2h-ins d2h-change"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn"><ins> # If</ins> <ins>+nil+,</ins> <ins>new attribute is appended.</ins></span> </div> </td> </tr><tr> <td class="d2h-code-linenumber d2h-ins d2h-change"> <div class="line-num1"></div> <div class="line-num2">299</div> </a></td> <td class="d2h-ins d2h-change"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn"><ins> # @param [Symbol] name attribute name to create</ins></span> </div> </td> </tr><tr> <td id="d2h-327542-5265" class="d2h-code-linenumber d2h-ins"><a href="#d2h-327542-5265"> <div class="line-num1"></div> <div class="line-num2">300</div> </a></td> <td class="d2h-ins"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn"> # @param [:big,:little,:native] endian endianess of Integer</span> </div> </td> </tr><tr> <td id="d2h-327542-5276" class="d2h-code-linenumber d2h-ins"><a href="#d2h-327542-5276"> <div class="line-num1"></div> <div class="line-num2">301</div> </a></td> <td class="d2h-ins"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn"> # @param [Hash{Symbol=>Integer}] fields Hash defining fields. Keys are field names, values are field sizes.</span> </div> </td> </tr><tr> <td id="d2h-327542-5287" class="d2h-code-linenumber d2h-ins"><a href="#d2h-327542-5287"> <div class="line-num1"></div> <div class="line-num2">302</div> </a></td> <td class="d2h-ins"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn"> # @return [void]</span> </div> </td> </tr><tr> <td id="d2h-327542-5298" class="d2h-code-linenumber d2h-ins"><a href="#d2h-327542-5298"> <div class="line-num1"></div> <div class="line-num2">303</div> </a></td> <td class="d2h-ins"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn"> # @since 0.3.0</span> </div> </td> </tr><tr> <td id="d2h-327542-5309" class="d2h-code-linenumber d2h-ins"><a href="#d2h-327542-5309"> <div class="line-num1"></div> <div class="line-num2">304</div> </a></td> <td class="d2h-ins"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn"> # @see .define_bit_attr</span> </div> </td> </tr><tr> <td id="d2h-327542-5320" class="d2h-code-linenumber d2h-ins"><a href="#d2h-327542-5320"> <div class="line-num1"></div> <div class="line-num2">305</div> </a></td> <td class="d2h-ins"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn"> def define_bit_attr_after(other, name, endian: :big, **fields)</span> </div> </td> </tr><tr> <td id="d2h-327542-5331" class="d2h-code-linenumber d2h-ins"><a href="#d2h-327542-5331"> <div class="line-num1"></div> <div class="line-num2">306</div> </a></td> <td class="d2h-ins"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn"> define_bit_attr(name, endian: endian, **fields)</span> </div> </td> </tr><tr> <td id="d2h-327542-5342" class="d2h-code-linenumber d2h-ins"><a href="#d2h-327542-5342"> <div class="line-num1"></div> <div class="line-num2">307</div> </a></td> <td class="d2h-ins"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn"> return if other.nil?</span> </div> </td> </tr><tr> <td id="d2h-327542-5353" class="d2h-code-linenumber d2h-cntx"><a href="#d2h-327542-5353"> <div class="line-num1">292</div> <div class="line-num2">308</div> </a></td> <td class="d2h-cntx"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix"> </span> <span class="d2h-code-line-ctn"><br></span> </div> </td> </tr><tr> <td class="d2h-code-linenumber d2h-del d2h-change"> <div class="line-num1">293</div> <div class="line-num2"></div> </a></td> <td class="d2h-del d2h-change"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">-</span> <span class="d2h-code-line-ctn"><del> idx</del> <del>-=</del> <del>size</del></span> </div> </td> </tr><tr> <td id="d2h-327542-5375" class="d2h-code-linenumber d2h-del"><a href="#d2h-327542-5375"> <div class="line-num1">294</div> <div class="line-num2"></div> </a></td> <td class="d2h-del"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">-</span> <span class="d2h-code-line-ctn"> end</span> </div> </td> </tr><tr> <td class="d2h-code-linenumber d2h-ins d2h-change"> <div class="line-num1"></div> <div class="line-num2">309</div> </a></td> <td class="d2h-ins d2h-change"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn"><ins> move_attr(name,</ins> <ins>after:</ins> <ins>other)</ins></span> </div> </td> </tr><tr> <td id="d2h-327542-5397" class="d2h-code-linenumber d2h-cntx"><a href="#d2h-327542-5397"> <div class="line-num1">295</div> <div class="line-num2">310</div> </a></td> <td class="d2h-cntx"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix"> </span> <span class="d2h-code-line-ctn"> end</span> </div> </td> </tr><tr> <td id="d2h-327542-5408" class="d2h-code-linenumber d2h-cntx"><a href="#d2h-327542-5408"> <div class="line-num1">296</div> <div class="line-num2">311</div> </a></td> <td class="d2h-cntx"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix"> </span> <span class="d2h-code-line-ctn"><br></span> </div> </td> </tr><tr> <td class="d2h-code-linenumber d2h-del d2h-change"> <div class="line-num1">297</div> <div class="line-num2"></div> </a></td> <td class="d2h-del d2h-change"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">-</span> <span class="d2h-code-line-ctn"> <del># Remove all bit attributes defined on +attr+</del></span> </div> </td> </tr><tr> <td class="d2h-code-linenumber d2h-del d2h-change"> <div class="line-num1">298</div> <div class="line-num2"></div> </a></td> <td class="d2h-del d2h-change"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">-</span> <span class="d2h-code-line-ctn"><del> # @param [Symbol] attr attribute defining bit attributes</del></span> </div> </td> </tr><tr> <td class="d2h-code-linenumber d2h-ins d2h-change"> <div class="line-num1"></div> <div class="line-num2">312</div> </a></td> <td class="d2h-ins d2h-change"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn"> <ins>private</ins></span> </div> </td> </tr><tr> <td class="d2h-code-linenumber d2h-ins d2h-change"> <div class="line-num1"></div> <div class="line-num2">313</div> </a></td> <td class="d2h-ins d2h-change"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn"><br></span> </div> </td> </tr><tr> <td id="d2h-327542-5463" class="d2h-code-linenumber d2h-ins"><a href="#d2h-327542-5463"> <div class="line-num1"></div> <div class="line-num2">314</div> </a></td> <td class="d2h-ins"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn"> # @param [Symbol] name</span> </div> </td> </tr><tr> <td id="d2h-327542-5474" class="d2h-code-linenumber d2h-ins"><a href="#d2h-327542-5474"> <div class="line-num1"></div> <div class="line-num2">315</div> </a></td> <td class="d2h-ins"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn"> # @param [Symbol,nil] before</span> </div> </td> </tr><tr> <td id="d2h-327542-5485" class="d2h-code-linenumber d2h-ins"><a href="#d2h-327542-5485"> <div class="line-num1"></div> <div class="line-num2">316</div> </a></td> <td class="d2h-ins"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn"> # @param [Symbol,nil] after</span> </div> </td> </tr><tr> <td id="d2h-327542-5496" class="d2h-code-linenumber d2h-cntx"><a href="#d2h-327542-5496"> <div class="line-num1">299</div> <div class="line-num2">317</div> </a></td> <td class="d2h-cntx"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix"> </span> <span class="d2h-code-line-ctn"> # @return [void]</span> </div> </td> </tr><tr> <td class="d2h-code-linenumber d2h-del d2h-change"> <div class="line-num1">300</div> <div class="line-num2"></div> </a></td> <td class="d2h-del d2h-change"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">-</span> <span class="d2h-code-line-ctn"> <del>def</del> <del>remove_bit_attrs_on(attr)</del></span> </div> </td> </tr><tr> <td class="d2h-code-linenumber d2h-del d2h-change"> <div class="line-num1">301</div> <div class="line-num2"></div> </a></td> <td class="d2h-del d2h-change"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">-</span> <span class="d2h-code-line-ctn"><del> bits</del> <del>=</del> <del>bit_attrs.delete(attr</del>)</span> </div> </td> </tr><tr> <td class="d2h-code-linenumber d2h-del d2h-change"> <div class="line-num1">302</div> <div class="line-num2"></div> </a></td> <td class="d2h-del d2h-change"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">-</span> <span class="d2h-code-line-ctn"> <del>return</del> <del>if bits.nil?</del></span> </div> </td> </tr><tr> <td class="d2h-code-linenumber d2h-ins d2h-change"> <div class="line-num1"></div> <div class="line-num2">318</div> </a></td> <td class="d2h-ins d2h-change"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn"> <ins>#</ins> <ins>@raise [ArgumentError] Both +before+ and +after+ are nil, or both are set.</ins></span> </div> </td> </tr><tr> <td class="d2h-code-linenumber d2h-ins d2h-change"> <div class="line-num1"></div> <div class="line-num2">319</div> </a></td> <td class="d2h-ins d2h-change"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn"><ins> def</ins> <ins>move_attr(name,</ins> <ins>before: nil, after: nil</ins>)</span> </div> </td> </tr><tr> <td class="d2h-code-linenumber d2h-ins d2h-change"> <div class="line-num1"></div> <div class="line-num2">320</div> </a></td> <td class="d2h-ins d2h-change"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn"> <ins>move_check_destination(before,</ins> <ins>after)</ins></span> </div> </td> </tr><tr> <td id="d2h-327542-5573" class="d2h-code-linenumber d2h-cntx"><a href="#d2h-327542-5573"> <div class="line-num1">303</div> <div class="line-num2">321</div> </a></td> <td class="d2h-cntx"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix"> </span> <span class="d2h-code-line-ctn"><br></span> </div> </td> </tr><tr> <td class="d2h-code-linenumber d2h-del d2h-change"> <div class="line-num1">304</div> <div class="line-num2"></div> </a></td> <td class="d2h-del d2h-change"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">-</span> <span class="d2h-code-line-ctn"> <del>bits.each</del> <del>do</del> <del>|bit,</del> <del>size|</del></span> </div> </td> </tr><tr> <td class="d2h-code-linenumber d2h-del d2h-change"> <div class="line-num1">305</div> <div class="line-num2"></div> </a></td> <td class="d2h-del d2h-change"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">-</span> <span class="d2h-code-line-ctn"><del> undef_method :"#{bit}="</del></span> </div> </td> </tr><tr> <td class="d2h-code-linenumber d2h-del d2h-change"> <div class="line-num1">306</div> <div class="line-num2"></div> </a></td> <td class="d2h-del d2h-change"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">-</span> <span class="d2h-code-line-ctn"><del> undef_method(size</del> <del>==</del> <del>1 ? "#{bit}?" : bit</del>)</span> </div> </td> </tr><tr> <td class="d2h-code-linenumber d2h-del d2h-change"> <div class="line-num1">307</div> <div class="line-num2"></div> </a></td> <td class="d2h-del d2h-change"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">-</span> <span class="d2h-code-line-ctn"> <del>end</del></span> </div> </td> </tr><tr> <td class="d2h-code-linenumber d2h-ins d2h-change"> <div class="line-num1"></div> <div class="line-num2">322</div> </a></td> <td class="d2h-ins d2h-change"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn"> <ins>other</ins> <ins>=</ins> <ins>before</ins> <ins>|| after</ins></span> </div> </td> </tr><tr> <td class="d2h-code-linenumber d2h-ins d2h-change"> <div class="line-num1"></div> <div class="line-num2">323</div> </a></td> <td class="d2h-ins d2h-change"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn"><ins> attributes.delete(name)</ins></span> </div> </td> </tr><tr> <td class="d2h-code-linenumber d2h-ins d2h-change"> <div class="line-num1"></div> <div class="line-num2">324</div> </a></td> <td class="d2h-ins d2h-change"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn"><ins> idx</ins> <ins>=</ins> <ins>attributes.index(other</ins>)</span> </div> </td> </tr><tr> <td class="d2h-code-linenumber d2h-ins d2h-change"> <div class="line-num1"></div> <div class="line-num2">325</div> </a></td> <td class="d2h-ins d2h-change"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn"> <ins>raise ArgumentError, "unknown #{other} attribute" if idx.nil?</ins></span> </div> </td> </tr><tr> <td id="d2h-327542-5672" class="d2h-code-linenumber d2h-ins"><a href="#d2h-327542-5672"> <div class="line-num1"></div> <div class="line-num2">326</div> </a></td> <td class="d2h-ins"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn"><br></span> </div> </td> </tr><tr> <td id="d2h-327542-5683" class="d2h-code-linenumber d2h-ins"><a href="#d2h-327542-5683"> <div class="line-num1"></div> <div class="line-num2">327</div> </a></td> <td class="d2h-ins"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn"> idx += 1 unless after.nil?</span> </div> </td> </tr><tr> <td id="d2h-327542-5694" class="d2h-code-linenumber d2h-ins"><a href="#d2h-327542-5694"> <div class="line-num1"></div> <div class="line-num2">328</div> </a></td> <td class="d2h-ins"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn"> attributes[idx, 0] = name</span> </div> </td> </tr><tr> <td id="d2h-327542-5705" class="d2h-code-linenumber d2h-cntx"><a href="#d2h-327542-5705"> <div class="line-num1">308</div> <div class="line-num2">329</div> </a></td> <td class="d2h-cntx"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix"> </span> <span class="d2h-code-line-ctn"> end</span> </div> </td> </tr><tr> <td id="d2h-327542-5716" class="d2h-code-linenumber d2h-cntx"><a href="#d2h-327542-5716"> <div class="line-num1">309</div> <div class="line-num2">330</div> </a></td> <td class="d2h-cntx"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix"> </span> <span class="d2h-code-line-ctn"><br></span> </div> </td> </tr><tr> <td class="d2h-code-linenumber d2h-del d2h-change"> <div class="line-num1">310</div> <div class="line-num2"></div> </a></td> <td class="d2h-del d2h-change"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">-</span> <span class="d2h-code-line-ctn"> <del>private</del></span> </div> </td> </tr><tr> <td class="d2h-code-linenumber d2h-ins d2h-change"> <div class="line-num1"></div> <div class="line-num2">331</div> </a></td> <td class="d2h-ins d2h-change"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn"> <ins>def move_check_destination(before, after)</ins></span> </div> </td> </tr><tr> <td id="d2h-327542-5749" class="d2h-code-linenumber d2h-ins"><a href="#d2h-327542-5749"> <div class="line-num1"></div> <div class="line-num2">332</div> </a></td> <td class="d2h-ins"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn"> raise ArgumentError 'one of before: and after: arguments MUST be set' if before.nil? && after.nil?</span> </div> </td> </tr><tr> <td id="d2h-327542-5760" class="d2h-code-linenumber d2h-ins"><a href="#d2h-327542-5760"> <div class="line-num1"></div> <div class="line-num2">333</div> </a></td> <td class="d2h-ins"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn"> raise ArgumentError 'only one of before and after argument MUST be set' if !before.nil? && !after.nil?</span> </div> </td> </tr><tr> <td id="d2h-327542-5771" class="d2h-code-linenumber d2h-ins"><a href="#d2h-327542-5771"> <div class="line-num1"></div> <div class="line-num2">334</div> </a></td> <td class="d2h-ins"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn"> end</span> </div> </td> </tr><tr> <td id="d2h-327542-5782" class="d2h-code-linenumber d2h-cntx"><a href="#d2h-327542-5782"> <div class="line-num1">311</div> <div class="line-num2">335</div> </a></td> <td class="d2h-cntx"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix"> </span> <span class="d2h-code-line-ctn"><br></span> </div> </td> </tr><tr> <td id="d2h-327542-5793" class="d2h-code-linenumber d2h-cntx"><a href="#d2h-327542-5793"> <div class="line-num1">312</div> <div class="line-num2">336</div> </a></td> <td class="d2h-cntx"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix"> </span> <span class="d2h-code-line-ctn"> def add_methods(name, type)</span> </div> </td> </tr><tr> <td id="d2h-327542-5804" class="d2h-code-linenumber d2h-cntx"><a href="#d2h-327542-5804"> <div class="line-num1">313</div> <div class="line-num2">337</div> </a></td> <td class="d2h-cntx"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix"> </span> <span class="d2h-code-line-ctn"> define = []</span> </div> </td> </tr> <tr> <td class="d2h-code-linenumber d2h-info"></td> <td class="d2h-info"> <div class="d2h-code-line">@@ -328,73 +352,15 @@ module BinStruct</div> </td> </tr><tr> <td id="d2h-327542-5821" class="d2h-code-linenumber d2h-cntx"><a href="#d2h-327542-5821"> <div class="line-num1">328</div> <div class="line-num2">352</div> </a></td> <td class="d2h-cntx"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix"> </span> <span class="d2h-code-line-ctn"> class_eval define.join("\n")</span> </div> </td> </tr><tr> <td id="d2h-327542-5832" class="d2h-code-linenumber d2h-cntx"><a href="#d2h-327542-5832"> <div class="line-num1">329</div> <div class="line-num2">353</div> </a></td> <td class="d2h-cntx"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix"> </span> <span class="d2h-code-line-ctn"> end</span> </div> </td> </tr><tr> <td id="d2h-327542-5843" class="d2h-code-linenumber d2h-cntx"><a href="#d2h-327542-5843"> <div class="line-num1">330</div> <div class="line-num2">354</div> </a></td> <td class="d2h-cntx"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix"> </span> <span class="d2h-code-line-ctn"><br></span> </div> </td> </tr><tr> <td class="d2h-code-linenumber d2h-del d2h-change"> <div class="line-num1">331</div> <div class="line-num2"></div> </a></td> <td class="d2h-del d2h-change"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">-</span> <span class="d2h-code-line-ctn"> def <del>add_bit_methods</del>(attr, <del>name, size, total_size, idx</del>)</span> </div> </td> </tr><tr> <td class="d2h-code-linenumber d2h-del d2h-change"> <div class="line-num1">332</div> <div class="line-num2"></div> </a></td> <td class="d2h-del d2h-change"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">-</span> <span class="d2h-code-line-ctn"> <del>shift</del> <del>=</del> <del>idx - (size - 1)</del></span> </div> </td> </tr><tr> <td class="d2h-code-linenumber d2h-del d2h-change"> <div class="line-num1">333</div> <div class="line-num2"></div> </a></td> <td class="d2h-del d2h-change"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">-</span> <span class="d2h-code-line-ctn"><br></span> </div> </td> </tr><tr> <td id="d2h-327542-5887" class="d2h-code-linenumber d2h-del"><a href="#d2h-327542-5887"> <div class="line-num1">334</div> <div class="line-num2"></div> </a></td> <td class="d2h-del"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">-</span> <span class="d2h-code-line-ctn"> if size == 1</span> </div> </td> </tr><tr> <td id="d2h-327542-5898" class="d2h-code-linenumber d2h-del"><a href="#d2h-327542-5898"> <div class="line-num1">335</div> <div class="line-num2"></div> </a></td> <td class="d2h-del"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">-</span> <span class="d2h-code-line-ctn"> add_single_bit_methods(attr, name, size, total_size, shift)</span> </div> </td> </tr><tr> <td id="d2h-327542-5909" class="d2h-code-linenumber d2h-del"><a href="#d2h-327542-5909"> <div class="line-num1">336</div> <div class="line-num2"></div> </a></td> <td class="d2h-del"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">-</span> <span class="d2h-code-line-ctn"> else</span> </div> </td> </tr><tr> <td id="d2h-327542-5920" class="d2h-code-linenumber d2h-del"><a href="#d2h-327542-5920"> <div class="line-num1">337</div> <div class="line-num2"></div> </a></td> <td class="d2h-del"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">-</span> <span class="d2h-code-line-ctn"> add_multibit_methods(attr, name, size, total_size, shift)</span> </div> </td> </tr><tr> <td id="d2h-327542-5931" class="d2h-code-linenumber d2h-del"><a href="#d2h-327542-5931"> <div class="line-num1">338</div> <div class="line-num2"></div> </a></td> <td class="d2h-del"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">-</span> <span class="d2h-code-line-ctn"> end</span> </div> </td> </tr><tr> <td id="d2h-327542-5942" class="d2h-code-linenumber d2h-del"><a href="#d2h-327542-5942"> <div class="line-num1">339</div> <div class="line-num2"></div> </a></td> <td class="d2h-del"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">-</span> <span class="d2h-code-line-ctn"> end</span> </div> </td> </tr><tr> <td id="d2h-327542-5953" class="d2h-code-linenumber d2h-del"><a href="#d2h-327542-5953"> <div class="line-num1">340</div> <div class="line-num2"></div> </a></td> <td class="d2h-del"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">-</span> <span class="d2h-code-line-ctn"><br></span> </div> </td> </tr><tr> <td id="d2h-327542-5964" class="d2h-code-linenumber d2h-del"><a href="#d2h-327542-5964"> <div class="line-num1">341</div> <div class="line-num2"></div> </a></td> <td class="d2h-del"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">-</span> <span class="d2h-code-line-ctn"> def compute_mask(size, shift)</span> </div> </td> </tr><tr> <td id="d2h-327542-5975" class="d2h-code-linenumber d2h-del"><a href="#d2h-327542-5975"> <div class="line-num1">342</div> <div class="line-num2"></div> </a></td> <td class="d2h-del"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">-</span> <span class="d2h-code-line-ctn"> ((2**size) - 1) << shift</span> </div> </td> </tr><tr> <td id="d2h-327542-5986" class="d2h-code-linenumber d2h-del"><a href="#d2h-327542-5986"> <div class="line-num1">343</div> <div class="line-num2"></div> </a></td> <td class="d2h-del"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">-</span> <span class="d2h-code-line-ctn"> end</span> </div> </td> </tr><tr> <td id="d2h-327542-5997" class="d2h-code-linenumber d2h-del"><a href="#d2h-327542-5997"> <div class="line-num1">344</div> <div class="line-num2"></div> </a></td> <td class="d2h-del"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">-</span> <span class="d2h-code-line-ctn"><br></span> </div> </td> </tr><tr> <td id="d2h-327542-6008" class="d2h-code-linenumber d2h-del"><a href="#d2h-327542-6008"> <div class="line-num1">345</div> <div class="line-num2"></div> </a></td> <td class="d2h-del"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">-</span> <span class="d2h-code-line-ctn"> def compute_clear_mask(total_size, mask)</span> </div> </td> </tr><tr> <td id="d2h-327542-6019" class="d2h-code-linenumber d2h-del"><a href="#d2h-327542-6019"> <div class="line-num1">346</div> <div class="line-num2"></div> </a></td> <td class="d2h-del"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">-</span> <span class="d2h-code-line-ctn"> ((2**total_size) - 1) & (~mask & ((2**total_size) - 1))</span> </div> </td> </tr><tr> <td id="d2h-327542-6030" class="d2h-code-linenumber d2h-del"><a href="#d2h-327542-6030"> <div class="line-num1">347</div> <div class="line-num2"></div> </a></td> <td class="d2h-del"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">-</span> <span class="d2h-code-line-ctn"> end</span> </div> </td> </tr><tr> <td id="d2h-327542-6041" class="d2h-code-linenumber d2h-del"><a href="#d2h-327542-6041"> <div class="line-num1">348</div> <div class="line-num2"></div> </a></td> <td class="d2h-del"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">-</span> <span class="d2h-code-line-ctn"><br></span> </div> </td> </tr><tr> <td id="d2h-327542-6052" class="d2h-code-linenumber d2h-del"><a href="#d2h-327542-6052"> <div class="line-num1">349</div> <div class="line-num2"></div> </a></td> <td class="d2h-del"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">-</span> <span class="d2h-code-line-ctn"> def add_single_bit_methods(attr, name, size, total_size, shift)</span> </div> </td> </tr><tr> <td id="d2h-327542-6063" class="d2h-code-linenumber d2h-del"><a href="#d2h-327542-6063"> <div class="line-num1">350</div> <div class="line-num2"></div> </a></td> <td class="d2h-del"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">-</span> <span class="d2h-code-line-ctn"> mask = compute_mask(size, shift)</span> </div> </td> </tr><tr> <td id="d2h-327542-6074" class="d2h-code-linenumber d2h-del"><a href="#d2h-327542-6074"> <div class="line-num1">351</div> <div class="line-num2"></div> </a></td> <td class="d2h-del"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">-</span> <span class="d2h-code-line-ctn"> clear_mask = compute_clear_mask(total_size, mask)</span> </div> </td> </tr><tr> <td id="d2h-327542-6085" class="d2h-code-linenumber d2h-del"><a href="#d2h-327542-6085"> <div class="line-num1">352</div> <div class="line-num2"></div> </a></td> <td class="d2h-del"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">-</span> <span class="d2h-code-line-ctn"><br></span> </div> </td> </tr><tr> <td id="d2h-327542-6096" class="d2h-code-linenumber d2h-del"><a href="#d2h-327542-6096"> <div class="line-num1">353</div> <div class="line-num2"></div> </a></td> <td class="d2h-del"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">-</span> <span class="d2h-code-line-ctn"> class_eval <<-METHODS, __FILE__, __LINE__ + 1</span> </div> </td> </tr><tr> <td id="d2h-327542-6107" class="d2h-code-linenumber d2h-del"><a href="#d2h-327542-6107"> <div class="line-num1">354</div> <div class="line-num2"></div> </a></td> <td class="d2h-del"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">-</span> <span class="d2h-code-line-ctn"> def #{name}? # def bit?</span> </div> </td> </tr><tr> <td id="d2h-327542-6118" class="d2h-code-linenumber d2h-del"><a href="#d2h-327542-6118"> <div class="line-num1">355</div> <div class="line-num2"></div> </a></td> <td class="d2h-del"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">-</span> <span class="d2h-code-line-ctn"> val = (self[:#{attr}].to_i & #{mask}) >> #{shift} # val = (self[:attr}].to_i & 1}) >> 1</span> </div> </td> </tr><tr> <td id="d2h-327542-6129" class="d2h-code-linenumber d2h-del"><a href="#d2h-327542-6129"> <div class="line-num1">356</div> <div class="line-num2"></div> </a></td> <td class="d2h-del"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">-</span> <span class="d2h-code-line-ctn"> val != 0 # val != 0</span> </div> </td> </tr><tr> <td id="d2h-327542-6140" class="d2h-code-linenumber d2h-del"><a href="#d2h-327542-6140"> <div class="line-num1">357</div> <div class="line-num2"></div> </a></td> <td class="d2h-del"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">-</span> <span class="d2h-code-line-ctn"> end # end</span> </div> </td> </tr><tr> <td id="d2h-327542-6151" class="d2h-code-linenumber d2h-del"><a href="#d2h-327542-6151"> <div class="line-num1">358</div> <div class="line-num2"></div> </a></td> <td class="d2h-del"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">-</span> <span class="d2h-code-line-ctn"> def #{name}=(v) # def bit=(v)</span> </div> </td> </tr><tr> <td id="d2h-327542-6162" class="d2h-code-linenumber d2h-del"><a href="#d2h-327542-6162"> <div class="line-num1">359</div> <div class="line-num2"></div> </a></td> <td class="d2h-del"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">-</span> <span class="d2h-code-line-ctn"> val = v ? 1 : 0 # val = v ? 1 : 0</span> </div> </td> </tr><tr> <td id="d2h-327542-6173" class="d2h-code-linenumber d2h-del"><a href="#d2h-327542-6173"> <div class="line-num1">360</div> <div class="line-num2"></div> </a></td> <td class="d2h-del"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">-</span> <span class="d2h-code-line-ctn"> self[:#{attr}].value = self[:#{attr}].to_i & #{clear_mask} # self[:attr].value = self[:attr].to_i & 0xfffd</span> </div> </td> </tr><tr> <td id="d2h-327542-6184" class="d2h-code-linenumber d2h-del"><a href="#d2h-327542-6184"> <div class="line-num1">361</div> <div class="line-num2"></div> </a></td> <td class="d2h-del"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">-</span> <span class="d2h-code-line-ctn"> self[:#{attr}].value |= val << #{shift} # self[:attr].value |= val << 1</span> </div> </td> </tr><tr> <td id="d2h-327542-6195" class="d2h-code-linenumber d2h-del"><a href="#d2h-327542-6195"> <div class="line-num1">362</div> <div class="line-num2"></div> </a></td> <td class="d2h-del"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">-</span> <span class="d2h-code-line-ctn"> end # end</span> </div> </td> </tr><tr> <td id="d2h-327542-6206" class="d2h-code-linenumber d2h-del"><a href="#d2h-327542-6206"> <div class="line-num1">363</div> <div class="line-num2"></div> </a></td> <td class="d2h-del"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">-</span> <span class="d2h-code-line-ctn"> METHODS</span> </div> </td> </tr><tr> <td id="d2h-327542-6217" class="d2h-code-linenumber d2h-del"><a href="#d2h-327542-6217"> <div class="line-num1">364</div> <div class="line-num2"></div> </a></td> <td class="d2h-del"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">-</span> <span class="d2h-code-line-ctn"> end</span> </div> </td> </tr><tr> <td id="d2h-327542-6228" class="d2h-code-linenumber d2h-del"><a href="#d2h-327542-6228"> <div class="line-num1">365</div> <div class="line-num2"></div> </a></td> <td class="d2h-del"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">-</span> <span class="d2h-code-line-ctn"><br></span> </div> </td> </tr><tr> <td id="d2h-327542-6239" class="d2h-code-linenumber d2h-del"><a href="#d2h-327542-6239"> <div class="line-num1">366</div> <div class="line-num2"></div> </a></td> <td class="d2h-del"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">-</span> <span class="d2h-code-line-ctn"> def add_multibit_methods(attr, name, size, total_size, shift)</span> </div> </td> </tr><tr> <td id="d2h-327542-6250" class="d2h-code-linenumber d2h-del"><a href="#d2h-327542-6250"> <div class="line-num1">367</div> <div class="line-num2"></div> </a></td> <td class="d2h-del"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">-</span> <span class="d2h-code-line-ctn"> mask = compute_mask(size, shift)</span> </div> </td> </tr><tr> <td id="d2h-327542-6261" class="d2h-code-linenumber d2h-del"><a href="#d2h-327542-6261"> <div class="line-num1">368</div> <div class="line-num2"></div> </a></td> <td class="d2h-del"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">-</span> <span class="d2h-code-line-ctn"> clear_mask = compute_clear_mask(total_size, mask)</span> </div> </td> </tr><tr> <td id="d2h-327542-6272" class="d2h-code-linenumber d2h-del"><a href="#d2h-327542-6272"> <div class="line-num1">369</div> <div class="line-num2"></div> </a></td> <td class="d2h-del"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">-</span> <span class="d2h-code-line-ctn"><br></span> </div> </td> </tr><tr> <td id="d2h-327542-6283" class="d2h-code-linenumber d2h-del"><a href="#d2h-327542-6283"> <div class="line-num1">370</div> <div class="line-num2"></div> </a></td> <td class="d2h-del"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">-</span> <span class="d2h-code-line-ctn"> class_eval <<-METHODS, __FILE__, __LINE__ + 1</span> </div> </td> </tr><tr> <td id="d2h-327542-6294" class="d2h-code-linenumber d2h-del"><a href="#d2h-327542-6294"> <div class="line-num1">371</div> <div class="line-num2"></div> </a></td> <td class="d2h-del"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">-</span> <span class="d2h-code-line-ctn"> def #{name} # def multibit</span> </div> </td> </tr><tr> <td id="d2h-327542-6305" class="d2h-code-linenumber d2h-del"><a href="#d2h-327542-6305"> <div class="line-num1">372</div> <div class="line-num2"></div> </a></td> <td class="d2h-del"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">-</span> <span class="d2h-code-line-ctn"> (self[:#{attr}].to_i & #{mask}) >> #{shift} # (self[:attr].to_i & 6) >> 1</span> </div> </td> </tr><tr> <td id="d2h-327542-6316" class="d2h-code-linenumber d2h-del"><a href="#d2h-327542-6316"> <div class="line-num1">373</div> <div class="line-num2"></div> </a></td> <td class="d2h-del"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">-</span> <span class="d2h-code-line-ctn"> end # end</span> </div> </td> </tr><tr> <td id="d2h-327542-6327" class="d2h-code-linenumber d2h-del"><a href="#d2h-327542-6327"> <div class="line-num1">374</div> <div class="line-num2"></div> </a></td> <td class="d2h-del"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">-</span> <span class="d2h-code-line-ctn"> def #{name}=(v) # def multibit=(v)</span> </div> </td> </tr><tr> <td id="d2h-327542-6338" class="d2h-code-linenumber d2h-del"><a href="#d2h-327542-6338"> <div class="line-num1">375</div> <div class="line-num2"></div> </a></td> <td class="d2h-del"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">-</span> <span class="d2h-code-line-ctn"> self[:#{attr}].value = self[:#{attr}].to_i & #{clear_mask} # self[:attr].value = self[:attr].to_i & 0xfff9</span> </div> </td> </tr><tr> <td id="d2h-327542-6349" class="d2h-code-linenumber d2h-del"><a href="#d2h-327542-6349"> <div class="line-num1">376</div> <div class="line-num2"></div> </a></td> <td class="d2h-del"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">-</span> <span class="d2h-code-line-ctn"> self[:#{attr}].value |= (v & #{(2**size) - 1}) << #{shift} # self[:attr].value |= (v & 3) << 1</span> </div> </td> </tr><tr> <td id="d2h-327542-6360" class="d2h-code-linenumber d2h-del"><a href="#d2h-327542-6360"> <div class="line-num1">377</div> <div class="line-num2"></div> </a></td> <td class="d2h-del"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">-</span> <span class="d2h-code-line-ctn"> end # end</span> </div> </td> </tr><tr> <td id="d2h-327542-6371" class="d2h-code-linenumber d2h-del"><a href="#d2h-327542-6371"> <div class="line-num1">378</div> <div class="line-num2"></div> </a></td> <td class="d2h-del"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">-</span> <span class="d2h-code-line-ctn"> METHODS</span> </div> </td> </tr><tr> <td id="d2h-327542-6382" class="d2h-code-linenumber d2h-del"><a href="#d2h-327542-6382"> <div class="line-num1">379</div> <div class="line-num2"></div> </a></td> <td class="d2h-del"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">-</span> <span class="d2h-code-line-ctn"> end</span> </div> </td> </tr><tr> <td id="d2h-327542-6393" class="d2h-code-linenumber d2h-del"><a href="#d2h-327542-6393"> <div class="line-num1">380</div> <div class="line-num2"></div> </a></td> <td class="d2h-del"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">-</span> <span class="d2h-code-line-ctn"><br></span> </div> </td> </tr><tr> <td id="d2h-327542-6404" class="d2h-code-linenumber d2h-del"><a href="#d2h-327542-6404"> <div class="line-num1">381</div> <div class="line-num2"></div> </a></td> <td class="d2h-del"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">-</span> <span class="d2h-code-line-ctn"> def register_bit_attr_size(attr, name, size)</span> </div> </td> </tr><tr> <td id="d2h-327542-6415" class="d2h-code-linenumber d2h-del"><a href="#d2h-327542-6415"> <div class="line-num1">382</div> <div class="line-num2"></div> </a></td> <td class="d2h-del"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">-</span> <span class="d2h-code-line-ctn"> bit_attrs[attr] = {} if bit_attrs[attr].nil?</span> </div> </td> </tr><tr> <td id="d2h-327542-6426" class="d2h-code-linenumber d2h-del"><a href="#d2h-327542-6426"> <div class="line-num1">383</div> <div class="line-num2"></div> </a></td> <td class="d2h-del"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">-</span> <span class="d2h-code-line-ctn"> bit_attrs[attr][name] = size</span> </div> </td> </tr><tr> <td class="d2h-code-linenumber d2h-ins d2h-change"> <div class="line-num1"></div> <div class="line-num2">355</div> </a></td> <td class="d2h-ins d2h-change"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn"> def <ins>register_bit_attr_field</ins>(attr, <ins>field</ins>)</span> </div> </td> </tr><tr> <td class="d2h-code-linenumber d2h-ins d2h-change"> <div class="line-num1"></div> <div class="line-num2">356</div> </a></td> <td class="d2h-ins d2h-change"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn"> <ins>bit_attrs[attr]</ins> <ins>||=</ins> <ins>[]</ins></span> </div> </td> </tr><tr> <td class="d2h-code-linenumber d2h-ins d2h-change"> <div class="line-num1"></div> <div class="line-num2">357</div> </a></td> <td class="d2h-ins d2h-change"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn"><ins> bit_attrs[attr] << field</ins></span> </div> </td> </tr><tr> <td id="d2h-327542-6470" class="d2h-code-linenumber d2h-cntx"><a href="#d2h-327542-6470"> <div class="line-num1">384</div> <div class="line-num2">358</div> </a></td> <td class="d2h-cntx"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix"> </span> <span class="d2h-code-line-ctn"> end</span> </div> </td> </tr><tr> <td id="d2h-327542-6481" class="d2h-code-linenumber d2h-cntx"><a href="#d2h-327542-6481"> <div class="line-num1">385</div> <div class="line-num2">359</div> </a></td> <td class="d2h-cntx"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix"> </span> <span class="d2h-code-line-ctn"><br></span> </div> </td> </tr><tr> <td id="d2h-327542-6492" class="d2h-code-linenumber d2h-cntx"><a href="#d2h-327542-6492"> <div class="line-num1">386</div> <div class="line-num2">360</div> </a></td> <td class="d2h-cntx"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix"> </span> <span class="d2h-code-line-ctn"> def attr_defs_property_from(attr, property, options)</span> </div> </td> </tr><tr> <td id="d2h-327542-6503" class="d2h-code-linenumber d2h-cntx"><a href="#d2h-327542-6503"> <div class="line-num1">387</div> <div class="line-num2">361</div> </a></td> <td class="d2h-cntx"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix"> </span> <span class="d2h-code-line-ctn"> attr_defs[attr].send(:"#{property}=", options.delete(property)) if options.key?(property)</span> </div> </td> </tr><tr> <td id="d2h-327542-6514" class="d2h-code-linenumber d2h-cntx"><a href="#d2h-327542-6514"> <div class="line-num1">388</div> <div class="line-num2">362</div> </a></td> <td class="d2h-cntx"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix"> </span> <span class="d2h-code-line-ctn"> end</span> </div> </td> </tr><tr> <td id="d2h-327542-6525" class="d2h-code-linenumber d2h-cntx"><a href="#d2h-327542-6525"> <div class="line-num1">389</div> <div class="line-num2">363</div> </a></td> <td class="d2h-cntx"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix"> </span> <span class="d2h-code-line-ctn"><br></span> </div> </td> </tr><tr> <td id="d2h-327542-6536" class="d2h-code-linenumber d2h-del"><a href="#d2h-327542-6536"> <div class="line-num1">390</div> <div class="line-num2"></div> </a></td> <td class="d2h-del"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">-</span> <span class="d2h-code-line-ctn"> def size_from(args)</span> </div> </td> </tr><tr> <td id="d2h-327542-6547" class="d2h-code-linenumber d2h-del"><a href="#d2h-327542-6547"> <div class="line-num1">391</div> <div class="line-num2"></div> </a></td> <td class="d2h-del"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">-</span> <span class="d2h-code-line-ctn"> if args.first.is_a? Integer</span> </div> </td> </tr><tr> <td id="d2h-327542-6558" class="d2h-code-linenumber d2h-del"><a href="#d2h-327542-6558"> <div class="line-num1">392</div> <div class="line-num2"></div> </a></td> <td class="d2h-del"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">-</span> <span class="d2h-code-line-ctn"> args.shift</span> </div> </td> </tr><tr> <td id="d2h-327542-6569" class="d2h-code-linenumber d2h-del"><a href="#d2h-327542-6569"> <div class="line-num1">393</div> <div class="line-num2"></div> </a></td> <td class="d2h-del"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">-</span> <span class="d2h-code-line-ctn"> else</span> </div> </td> </tr><tr> <td id="d2h-327542-6580" class="d2h-code-linenumber d2h-del"><a href="#d2h-327542-6580"> <div class="line-num1">394</div> <div class="line-num2"></div> </a></td> <td class="d2h-del"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">-</span> <span class="d2h-code-line-ctn"> 1</span> </div> </td> </tr><tr> <td id="d2h-327542-6591" class="d2h-code-linenumber d2h-del"><a href="#d2h-327542-6591"> <div class="line-num1">395</div> <div class="line-num2"></div> </a></td> <td class="d2h-del"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">-</span> <span class="d2h-code-line-ctn"> end</span> </div> </td> </tr><tr> <td id="d2h-327542-6602" class="d2h-code-linenumber d2h-del"><a href="#d2h-327542-6602"> <div class="line-num1">396</div> <div class="line-num2"></div> </a></td> <td class="d2h-del"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">-</span> <span class="d2h-code-line-ctn"> end</span> </div> </td> </tr><tr> <td id="d2h-327542-6613" class="d2h-code-linenumber d2h-del"><a href="#d2h-327542-6613"> <div class="line-num1">397</div> <div class="line-num2"></div> </a></td> <td class="d2h-del"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">-</span> <span class="d2h-code-line-ctn"><br></span> </div> </td> </tr><tr> <td id="d2h-327542-6624" class="d2h-code-linenumber d2h-cntx"><a href="#d2h-327542-6624"> <div class="line-num1">398</div> <div class="line-num2">364</div> </a></td> <td class="d2h-cntx"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix"> </span> <span class="d2h-code-line-ctn"> def check_existence_of(attr)</span> </div> </td> </tr><tr> <td id="d2h-327542-6635" class="d2h-code-linenumber d2h-cntx"><a href="#d2h-327542-6635"> <div class="line-num1">399</div> <div class="line-num2">365</div> </a></td> <td class="d2h-cntx"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix"> </span> <span class="d2h-code-line-ctn"> raise ArgumentError, "unknown #{attr} attribute for #{self}" unless attr_defs.key?(attr)</span> </div> </td> </tr><tr> <td id="d2h-327542-6646" class="d2h-code-linenumber d2h-cntx"><a href="#d2h-327542-6646"> <div class="line-num1">400</div> <div class="line-num2">366</div> </a></td> <td class="d2h-cntx"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix"> </span> <span class="d2h-code-line-ctn"> end</span> </div> </td> </tr> <tr> <td class="d2h-code-linenumber d2h-info"></td> <td class="d2h-info"> <div class="d2h-code-line">@@ -402,7 +368,7 @@ module BinStruct</div> </td> </tr><tr> <td id="d2h-327542-6663" class="d2h-code-linenumber d2h-cntx"><a href="#d2h-327542-6663"> <div class="line-num1">402</div> <div class="line-num2">368</div> </a></td> <td class="d2h-cntx"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix"> </span> <span class="d2h-code-line-ctn"><br></span> </div> </td> </tr><tr> <td id="d2h-327542-6674" class="d2h-code-linenumber d2h-cntx"><a href="#d2h-327542-6674"> <div class="line-num1">403</div> <div class="line-num2">369</div> </a></td> <td class="d2h-cntx"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix"> </span> <span class="d2h-code-line-ctn"> # Create a new Struct object</span> </div> </td> </tr><tr> <td id="d2h-327542-6685" class="d2h-code-linenumber d2h-cntx"><a href="#d2h-327542-6685"> <div class="line-num1">404</div> <div class="line-num2">370</div> </a></td> <td class="d2h-cntx"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix"> </span> <span class="d2h-code-line-ctn"> # @param [Hash] options Keys are symbols. They should have name of object</span> </div> </td> </tr><tr> <td class="d2h-code-linenumber d2h-del d2h-change"> <div class="line-num1">405</div> <div class="line-num2"></div> </a></td> <td class="d2h-del d2h-change"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">-</span> <span class="d2h-code-line-ctn"> # attributes, as defined by {.define_attr} and by {.<del>define_bit_attrs_on</del>}.</span> </div> </td> </tr><tr> <td class="d2h-code-linenumber d2h-ins d2h-change"> <div class="line-num1"></div> <div class="line-num2">371</div> </a></td> <td class="d2h-ins d2h-change"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn"> # attributes, as defined by {.define_attr} and by {.<ins>define_bit_attr</ins>}.</span> </div> </td> </tr><tr> <td id="d2h-327542-6718" class="d2h-code-linenumber d2h-cntx"><a href="#d2h-327542-6718"> <div class="line-num1">406</div> <div class="line-num2">372</div> </a></td> <td class="d2h-cntx"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix"> </span> <span class="d2h-code-line-ctn"> def initialize(options = {})</span> </div> </td> </tr><tr> <td id="d2h-327542-6729" class="d2h-code-linenumber d2h-cntx"><a href="#d2h-327542-6729"> <div class="line-num1">407</div> <div class="line-num2">373</div> </a></td> <td class="d2h-cntx"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix"> </span> <span class="d2h-code-line-ctn"> @attributes = {}</span> </div> </td> </tr><tr> <td id="d2h-327542-6740" class="d2h-code-linenumber d2h-cntx"><a href="#d2h-327542-6740"> <div class="line-num1">408</div> <div class="line-num2">374</div> </a></td> <td class="d2h-cntx"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix"> </span> <span class="d2h-code-line-ctn"> @optional_attributes = {}</span> </div> </td> </tr> <tr> <td class="d2h-code-linenumber d2h-info"></td> <td class="d2h-info"> <div class="d2h-code-line">@@ -413,8 +379,8 @@ module BinStruct</div> </td> </tr><tr> <td id="d2h-327542-6757" class="d2h-code-linenumber d2h-cntx"><a href="#d2h-327542-6757"> <div class="line-num1">413</div> <div class="line-num2">379</div> </a></td> <td class="d2h-cntx"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix"> </span> <span class="d2h-code-line-ctn"> initialize_optional(attr)</span> </div> </td> </tr><tr> <td id="d2h-327542-6768" class="d2h-code-linenumber d2h-cntx"><a href="#d2h-327542-6768"> <div class="line-num1">414</div> <div class="line-num2">380</div> </a></td> <td class="d2h-cntx"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix"> </span> <span class="d2h-code-line-ctn"> end</span> </div> </td> </tr><tr> <td id="d2h-327542-6779" class="d2h-code-linenumber d2h-cntx"><a href="#d2h-327542-6779"> <div class="line-num1">415</div> <div class="line-num2">381</div> </a></td> <td class="d2h-cntx"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix"> </span> <span class="d2h-code-line-ctn"><br></span> </div> </td> </tr><tr> <td class="d2h-code-linenumber d2h-del d2h-change"> <div class="line-num1">416</div> <div class="line-num2"></div> </a></td> <td class="d2h-del d2h-change"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">-</span> <span class="d2h-code-line-ctn"> self.class.bit_attrs.each_value do |<del>hsh</del>|</span> </div> </td> </tr><tr> <td class="d2h-code-linenumber d2h-del d2h-change"> <div class="line-num1">417</div> <div class="line-num2"></div> </a></td> <td class="d2h-del d2h-change"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">-</span> <span class="d2h-code-line-ctn"> <del>hsh</del>.<del>each_key</del> do |bit|</span> </div> </td> </tr><tr> <td class="d2h-code-linenumber d2h-ins d2h-change"> <div class="line-num1"></div> <div class="line-num2">382</div> </a></td> <td class="d2h-ins d2h-change"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn"> self.class.bit_attrs.each_value do |<ins>bit_fields</ins>|</span> </div> </td> </tr><tr> <td class="d2h-code-linenumber d2h-ins d2h-change"> <div class="line-num1"></div> <div class="line-num2">383</div> </a></td> <td class="d2h-ins d2h-change"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn"> <ins>bit_fields</ins>.<ins>each</ins> do |bit|</span> </div> </td> </tr><tr> <td id="d2h-327542-6834" class="d2h-code-linenumber d2h-cntx"><a href="#d2h-327542-6834"> <div class="line-num1">418</div> <div class="line-num2">384</div> </a></td> <td class="d2h-cntx"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix"> </span> <span class="d2h-code-line-ctn"> send(:"#{bit}=", options[bit]) if options[bit]</span> </div> </td> </tr><tr> <td id="d2h-327542-6845" class="d2h-code-linenumber d2h-cntx"><a href="#d2h-327542-6845"> <div class="line-num1">419</div> <div class="line-num2">385</div> </a></td> <td class="d2h-cntx"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix"> </span> <span class="d2h-code-line-ctn"> end</span> </div> </td> </tr><tr> <td id="d2h-327542-6856" class="d2h-code-linenumber d2h-cntx"><a href="#d2h-327542-6856"> <div class="line-num1">420</div> <div class="line-num2">386</div> </a></td> <td class="d2h-cntx"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix"> </span> <span class="d2h-code-line-ctn"> end</span> </div> </td> </tr> <tr> <td class="d2h-code-linenumber d2h-info"></td> <td class="d2h-info"> <div class="d2h-code-line">@@ -599,26 +565,39 @@ module BinStruct</div> </td> </tr><tr> <td id="d2h-327542-6873" class="d2h-code-linenumber d2h-cntx"><a href="#d2h-327542-6873"> <div class="line-num1">599</div> <div class="line-num2">565</div> </a></td> <td class="d2h-cntx"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix"> </span> <span class="d2h-code-line-ctn"> end</span> </div> </td> </tr><tr> <td id="d2h-327542-6884" class="d2h-code-linenumber d2h-cntx"><a href="#d2h-327542-6884"> <div class="line-num1">600</div> <div class="line-num2">566</div> </a></td> <td class="d2h-cntx"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix"> </span> <span class="d2h-code-line-ctn"> end</span> </div> </td> </tr><tr> <td id="d2h-327542-6895" class="d2h-code-linenumber d2h-cntx"><a href="#d2h-327542-6895"> <div class="line-num1">601</div> <div class="line-num2">567</div> </a></td> <td class="d2h-cntx"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix"> </span> <span class="d2h-code-line-ctn"><br></span> </div> </td> </tr><tr> <td id="d2h-327542-6906" class="d2h-code-linenumber d2h-ins"><a href="#d2h-327542-6906"> <div class="line-num1"></div> <div class="line-num2">568</div> </a></td> <td class="d2h-ins"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn"> # @param [Symbol] attr</span> </div> </td> </tr><tr> <td id="d2h-327542-6917" class="d2h-code-linenumber d2h-ins"><a href="#d2h-327542-6917"> <div class="line-num1"></div> <div class="line-num2">569</div> </a></td> <td class="d2h-ins"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn"> # @return [void]</span> </div> </td> </tr><tr> <td id="d2h-327542-6928" class="d2h-code-linenumber d2h-cntx"><a href="#d2h-327542-6928"> <div class="line-num1">602</div> <div class="line-num2">570</div> </a></td> <td class="d2h-cntx"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix"> </span> <span class="d2h-code-line-ctn"> def initialize_optional(attr)</span> </div> </td> </tr><tr> <td id="d2h-327542-6939" class="d2h-code-linenumber d2h-cntx"><a href="#d2h-327542-6939"> <div class="line-num1">603</div> <div class="line-num2">571</div> </a></td> <td class="d2h-cntx"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix"> </span> <span class="d2h-code-line-ctn"> optional = attr_defs[attr].optional</span> </div> </td> </tr><tr> <td id="d2h-327542-6950" class="d2h-code-linenumber d2h-cntx"><a href="#d2h-327542-6950"> <div class="line-num1">604</div> <div class="line-num2">572</div> </a></td> <td class="d2h-cntx"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix"> </span> <span class="d2h-code-line-ctn"> @optional_attributes[attr] = optional if optional</span> </div> </td> </tr><tr> <td id="d2h-327542-6961" class="d2h-code-linenumber d2h-cntx"><a href="#d2h-327542-6961"> <div class="line-num1">605</div> <div class="line-num2">573</div> </a></td> <td class="d2h-cntx"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix"> </span> <span class="d2h-code-line-ctn"> end</span> </div> </td> </tr><tr> <td id="d2h-327542-6972" class="d2h-code-linenumber d2h-cntx"><a href="#d2h-327542-6972"> <div class="line-num1">606</div> <div class="line-num2">574</div> </a></td> <td class="d2h-cntx"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix"> </span> <span class="d2h-code-line-ctn"><br></span> </div> </td> </tr><tr> <td id="d2h-327542-6983" class="d2h-code-linenumber d2h-ins"><a href="#d2h-327542-6983"> <div class="line-num1"></div> <div class="line-num2">575</div> </a></td> <td class="d2h-ins"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn"> # @return [String]</span> </div> </td> </tr><tr> <td id="d2h-327542-6994" class="d2h-code-linenumber d2h-cntx"><a href="#d2h-327542-6994"> <div class="line-num1">607</div> <div class="line-num2">576</div> </a></td> <td class="d2h-cntx"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix"> </span> <span class="d2h-code-line-ctn"> def inspect_titleize</span> </div> </td> </tr><tr> <td id="d2h-327542-7005" class="d2h-code-linenumber d2h-cntx"><a href="#d2h-327542-7005"> <div class="line-num1">608</div> <div class="line-num2">577</div> </a></td> <td class="d2h-cntx"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix"> </span> <span class="d2h-code-line-ctn"> title = self.class.to_s</span> </div> </td> </tr><tr> <td id="d2h-327542-7016" class="d2h-code-linenumber d2h-cntx"><a href="#d2h-327542-7016"> <div class="line-num1">609</div> <div class="line-num2">578</div> </a></td> <td class="d2h-cntx"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix"> </span> <span class="d2h-code-line-ctn"> +"-- #{title} #{'-' * (66 - title.length)}\n"</span> </div> </td> </tr><tr> <td id="d2h-327542-7027" class="d2h-code-linenumber d2h-cntx"><a href="#d2h-327542-7027"> <div class="line-num1">610</div> <div class="line-num2">579</div> </a></td> <td class="d2h-cntx"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix"> </span> <span class="d2h-code-line-ctn"> end</span> </div> </td> </tr><tr> <td id="d2h-327542-7038" class="d2h-code-linenumber d2h-cntx"><a href="#d2h-327542-7038"> <div class="line-num1">611</div> <div class="line-num2">580</div> </a></td> <td class="d2h-cntx"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix"> </span> <span class="d2h-code-line-ctn"><br></span> </div> </td> </tr><tr> <td id="d2h-327542-7049" class="d2h-code-linenumber d2h-ins"><a href="#d2h-327542-7049"> <div class="line-num1"></div> <div class="line-num2">581</div> </a></td> <td class="d2h-ins"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn"> # @param [:Symbol] attr</span> </div> </td> </tr><tr> <td id="d2h-327542-7060" class="d2h-code-linenumber d2h-ins"><a href="#d2h-327542-7060"> <div class="line-num1"></div> <div class="line-num2">582</div> </a></td> <td class="d2h-ins"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn"> # @param [Structable] value</span> </div> </td> </tr><tr> <td id="d2h-327542-7071" class="d2h-code-linenumber d2h-ins"><a href="#d2h-327542-7071"> <div class="line-num1"></div> <div class="line-num2">583</div> </a></td> <td class="d2h-ins"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn"> # @param [Integer] level</span> </div> </td> </tr><tr> <td id="d2h-327542-7082" class="d2h-code-linenumber d2h-ins"><a href="#d2h-327542-7082"> <div class="line-num1"></div> <div class="line-num2">584</div> </a></td> <td class="d2h-ins"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn"> # @return [::String]</span> </div> </td> </tr><tr> <td id="d2h-327542-7093" class="d2h-code-linenumber d2h-cntx"><a href="#d2h-327542-7093"> <div class="line-num1">612</div> <div class="line-num2">585</div> </a></td> <td class="d2h-cntx"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix"> </span> <span class="d2h-code-line-ctn"> def inspect_attribute(attr, value, level = 1)</span> </div> </td> </tr><tr> <td id="d2h-327542-7104" class="d2h-code-linenumber d2h-del"><a href="#d2h-327542-7104"> <div class="line-num1">613</div> <div class="line-num2"></div> </a></td> <td class="d2h-del"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">-</span> <span class="d2h-code-line-ctn"> type = value.class.to_s.sub(/.*::/, '')</span> </div> </td> </tr><tr> <td id="d2h-327542-7115" class="d2h-code-linenumber d2h-del"><a href="#d2h-327542-7115"> <div class="line-num1">614</div> <div class="line-num2"></div> </a></td> <td class="d2h-del"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">-</span> <span class="d2h-code-line-ctn"> inspect_format(type, attr, value.format_inspect, level)</span> </div> </td> </tr><tr> <td id="d2h-327542-7126" class="d2h-code-linenumber d2h-del"><a href="#d2h-327542-7126"> <div class="line-num1">615</div> <div class="line-num2"></div> </a></td> <td class="d2h-del"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">-</span> <span class="d2h-code-line-ctn"> end</span> </div> </td> </tr><tr> <td id="d2h-327542-7137" class="d2h-code-linenumber d2h-del"><a href="#d2h-327542-7137"> <div class="line-num1">616</div> <div class="line-num2"></div> </a></td> <td class="d2h-del"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">-</span> <span class="d2h-code-line-ctn"><br></span> </div> </td> </tr><tr> <td id="d2h-327542-7148" class="d2h-code-linenumber d2h-del"><a href="#d2h-327542-7148"> <div class="line-num1">617</div> <div class="line-num2"></div> </a></td> <td class="d2h-del"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">-</span> <span class="d2h-code-line-ctn"> def inspect_format(type, attr, value, level = 1)</span> </div> </td> </tr><tr> <td id="d2h-327542-7159" class="d2h-code-linenumber d2h-cntx"><a href="#d2h-327542-7159"> <div class="line-num1">618</div> <div class="line-num2">586</div> </a></td> <td class="d2h-cntx"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix"> </span> <span class="d2h-code-line-ctn"> str = inspect_shift_level(level)</span> </div> </td> </tr><tr> <td class="d2h-code-linenumber d2h-del d2h-change"> <div class="line-num1">619</div> <div class="line-num2"></div> </a></td> <td class="d2h-del d2h-change"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">-</span> <span class="d2h-code-line-ctn"> <del>str</del> <del><<</del> (<del>FMT_ATTR % [type, attr, value]</del>)</span> </div> </td> </tr><tr> <td class="d2h-code-linenumber d2h-ins d2h-change"> <div class="line-num1"></div> <div class="line-num2">587</div> </a></td> <td class="d2h-ins d2h-change"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn"> <ins>value_lines</ins> <ins>=</ins> <ins>value.format_inspect.split</ins>(<ins>"\n"</ins>)</span> </div> </td> </tr><tr> <td id="d2h-327542-7192" class="d2h-code-linenumber d2h-ins"><a href="#d2h-327542-7192"> <div class="line-num1"></div> <div class="line-num2">588</div> </a></td> <td class="d2h-ins"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn"> str << (FMT_ATTR % [value.type_name, attr, value_lines.shift])</span> </div> </td> </tr><tr> <td id="d2h-327542-7203" class="d2h-code-linenumber d2h-ins"><a href="#d2h-327542-7203"> <div class="line-num1"></div> <div class="line-num2">589</div> </a></td> <td class="d2h-ins"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn"> return str if value_lines.empty?</span> </div> </td> </tr><tr> <td id="d2h-327542-7214" class="d2h-code-linenumber d2h-ins"><a href="#d2h-327542-7214"> <div class="line-num1"></div> <div class="line-num2">590</div> </a></td> <td class="d2h-ins"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn"><br></span> </div> </td> </tr><tr> <td id="d2h-327542-7225" class="d2h-code-linenumber d2h-ins"><a href="#d2h-327542-7225"> <div class="line-num1"></div> <div class="line-num2">591</div> </a></td> <td class="d2h-ins"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn"> shift = (FMT_ATTR % ['', '', 'START']).index('START')</span> </div> </td> </tr><tr> <td id="d2h-327542-7236" class="d2h-code-linenumber d2h-ins"><a href="#d2h-327542-7236"> <div class="line-num1"></div> <div class="line-num2">592</div> </a></td> <td class="d2h-ins"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn"> value_lines.each do |l|</span> </div> </td> </tr><tr> <td id="d2h-327542-7247" class="d2h-code-linenumber d2h-ins"><a href="#d2h-327542-7247"> <div class="line-num1"></div> <div class="line-num2">593</div> </a></td> <td class="d2h-ins"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn"> str << inspect_shift_level(level)</span> </div> </td> </tr><tr> <td id="d2h-327542-7258" class="d2h-code-linenumber d2h-ins"><a href="#d2h-327542-7258"> <div class="line-num1"></div> <div class="line-num2">594</div> </a></td> <td class="d2h-ins"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn"> str << (' ' * shift) << l << "\n"</span> </div> </td> </tr><tr> <td id="d2h-327542-7269" class="d2h-code-linenumber d2h-ins"><a href="#d2h-327542-7269"> <div class="line-num1"></div> <div class="line-num2">595</div> </a></td> <td class="d2h-ins"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn"> end</span> </div> </td> </tr><tr> <td id="d2h-327542-7280" class="d2h-code-linenumber d2h-ins"><a href="#d2h-327542-7280"> <div class="line-num1"></div> <div class="line-num2">596</div> </a></td> <td class="d2h-ins"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn"> str</span> </div> </td> </tr><tr> <td id="d2h-327542-7291" class="d2h-code-linenumber d2h-cntx"><a href="#d2h-327542-7291"> <div class="line-num1">620</div> <div class="line-num2">597</div> </a></td> <td class="d2h-cntx"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix"> </span> <span class="d2h-code-line-ctn"> end</span> </div> </td> </tr><tr> <td id="d2h-327542-7302" class="d2h-code-linenumber d2h-cntx"><a href="#d2h-327542-7302"> <div class="line-num1">621</div> <div class="line-num2">598</div> </a></td> <td class="d2h-cntx"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix"> </span> <span class="d2h-code-line-ctn"><br></span> </div> </td> </tr><tr> <td id="d2h-327542-7313" class="d2h-code-linenumber d2h-ins"><a href="#d2h-327542-7313"> <div class="line-num1"></div> <div class="line-num2">599</div> </a></td> <td class="d2h-ins"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn"> # @param [Integer] level</span> </div> </td> </tr><tr> <td id="d2h-327542-7324" class="d2h-code-linenumber d2h-ins"><a href="#d2h-327542-7324"> <div class="line-num1"></div> <div class="line-num2">600</div> </a></td> <td class="d2h-ins"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn"> # @return [String]</span> </div> </td> </tr><tr> <td id="d2h-327542-7335" class="d2h-code-linenumber d2h-cntx"><a href="#d2h-327542-7335"> <div class="line-num1">622</div> <div class="line-num2">601</div> </a></td> <td class="d2h-cntx"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix"> </span> <span class="d2h-code-line-ctn"> def inspect_shift_level(level = 1)</span> </div> </td> </tr><tr> <td id="d2h-327542-7346" class="d2h-code-linenumber d2h-cntx"><a href="#d2h-327542-7346"> <div class="line-num1">623</div> <div class="line-num2">602</div> </a></td> <td class="d2h-cntx"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix"> </span> <span class="d2h-code-line-ctn"> ' ' * (level + 1)</span> </div> </td> </tr><tr> <td id="d2h-327542-7357" class="d2h-code-linenumber d2h-cntx"><a href="#d2h-327542-7357"> <div class="line-num1">624</div> <div class="line-num2">603</div> </a></td> <td class="d2h-cntx"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix"> </span> <span class="d2h-code-line-ctn"> end</span> </div> </td> </tr> </tbody> </table> </div> </div> </div> <div id="d2h-236508" class="d2h-file-wrapper" data-lang="rb"> <div class="d2h-file-header"> <span class="d2h-file-name-wrapper"> <svg aria-hidden="true" class="d2h-icon" height="16" version="1.1" viewBox="0 0 12 16" width="12"> <path d="M6 5H2v-1h4v1zM2 8h7v-1H2v1z m0 2h7v-1H2v1z m0 2h7v-1H2v1z m10-7.5v9.5c0 0.55-0.45 1-1 1H1c-0.55 0-1-0.45-1-1V2c0-0.55 0.45-1 1-1h7.5l3.5 3.5z m-1 0.5L8 2H1v12h10V5z"></path> </svg> <span class="d2h-file-name"><a href="#d2h-236508">data/lib/bin_struct/structable.rb</a></span> <span class="d2h-tag d2h-changed d2h-changed-tag">CHANGED</span></span> <label class="d2h-file-collapse"> <input class="d2h-file-collapse-input" type="checkbox" name="viewed" value="viewed"> Viewed </label> </div> <div class="d2h-file-diff"> <div class="d2h-code-wrapper"> <table class="d2h-diff-table"> <tbody class="d2h-diff-tbody"> <tr> <td class="d2h-code-linenumber d2h-info"></td> <td class="d2h-info"> <div class="d2h-code-line">@@ -58,7 +58,7 @@ module BinStruct</div> </td> </tr><tr> <td id="d2h-236508-7395" class="d2h-code-linenumber d2h-cntx"><a href="#d2h-236508-7395"> <div class="line-num1">58</div> <div class="line-num2">58</div> </a></td> <td class="d2h-cntx"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix"> </span> <span class="d2h-code-line-ctn"> # Format object when inspecting a {Struct} object</span> </div> </td> </tr><tr> <td id="d2h-236508-7406" class="d2h-code-linenumber d2h-cntx"><a href="#d2h-236508-7406"> <div class="line-num1">59</div> <div class="line-num2">59</div> </a></td> <td class="d2h-cntx"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix"> </span> <span class="d2h-code-line-ctn"> # @return [::String]</span> </div> </td> </tr><tr> <td id="d2h-236508-7417" class="d2h-code-linenumber d2h-cntx"><a href="#d2h-236508-7417"> <div class="line-num1">60</div> <div class="line-num2">60</div> </a></td> <td class="d2h-cntx"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix"> </span> <span class="d2h-code-line-ctn"> def format_inspect</span> </div> </td> </tr><tr> <td class="d2h-code-linenumber d2h-del d2h-change"> <div class="line-num1">61</div> <div class="line-num2"></div> </a></td> <td class="d2h-del d2h-change"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">-</span> <span class="d2h-code-line-ctn"> to_human</span> </div> </td> </tr><tr> <td class="d2h-code-linenumber d2h-ins d2h-change"> <div class="line-num1"></div> <div class="line-num2">61</div> </a></td> <td class="d2h-ins d2h-change"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn"> to_human<ins>.to_s</ins></span> </div> </td> </tr><tr> <td id="d2h-236508-7450" class="d2h-code-linenumber d2h-cntx"><a href="#d2h-236508-7450"> <div class="line-num1">62</div> <div class="line-num2">62</div> </a></td> <td class="d2h-cntx"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix"> </span> <span class="d2h-code-line-ctn"> end</span> </div> </td> </tr><tr> <td id="d2h-236508-7461" class="d2h-code-linenumber d2h-cntx"><a href="#d2h-236508-7461"> <div class="line-num1">63</div> <div class="line-num2">63</div> </a></td> <td class="d2h-cntx"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix"> </span> <span class="d2h-code-line-ctn"> end</span> </div> </td> </tr><tr> <td id="d2h-236508-7472" class="d2h-code-linenumber d2h-cntx"><a href="#d2h-236508-7472"> <div class="line-num1">64</div> <div class="line-num2">64</div> </a></td> <td class="d2h-cntx"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix"> </span> <span class="d2h-code-line-ctn">end</span> </div> </td> </tr> </tbody> </table> </div> </div> </div> <div id="d2h-879897" class="d2h-file-wrapper" data-lang="rb"> <div class="d2h-file-header"> <span class="d2h-file-name-wrapper"> <svg aria-hidden="true" class="d2h-icon" height="16" version="1.1" viewBox="0 0 12 16" width="12"> <path d="M6 5H2v-1h4v1zM2 8h7v-1H2v1z m0 2h7v-1H2v1z m0 2h7v-1H2v1z m10-7.5v9.5c0 0.55-0.45 1-1 1H1c-0.55 0-1-0.45-1-1V2c0-0.55 0.45-1 1-1h7.5l3.5 3.5z m-1 0.5L8 2H1v12h10V5z"></path> </svg> <span class="d2h-file-name"><a href="#d2h-879897">data/lib/bin_struct/version.rb</a></span> <span class="d2h-tag d2h-changed d2h-changed-tag">CHANGED</span></span> <label class="d2h-file-collapse"> <input class="d2h-file-collapse-input" type="checkbox" name="viewed" value="viewed"> Viewed </label> </div> <div class="d2h-file-diff"> <div class="d2h-code-wrapper"> <table class="d2h-diff-table"> <tbody class="d2h-diff-tbody"> <tr> <td class="d2h-code-linenumber d2h-info"></td> <td class="d2h-info"> <div class="d2h-code-line">@@ -8,5 +8,5 @@</div> </td> </tr><tr> <td id="d2h-879897-7510" class="d2h-code-linenumber d2h-cntx"><a href="#d2h-879897-7510"> <div class="line-num1">8</div> <div class="line-num2">8</div> </a></td> <td class="d2h-cntx"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix"> </span> <span class="d2h-code-line-ctn"><br></span> </div> </td> </tr><tr> <td id="d2h-879897-7521" class="d2h-code-linenumber d2h-cntx"><a href="#d2h-879897-7521"> <div class="line-num1">9</div> <div class="line-num2">9</div> </a></td> <td class="d2h-cntx"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix"> </span> <span class="d2h-code-line-ctn">module BinStruct</span> </div> </td> </tr><tr> <td id="d2h-879897-7532" class="d2h-code-linenumber d2h-cntx"><a href="#d2h-879897-7532"> <div class="line-num1">10</div> <div class="line-num2">10</div> </a></td> <td class="d2h-cntx"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix"> </span> <span class="d2h-code-line-ctn"> # BinStruct version</span> </div> </td> </tr><tr> <td class="d2h-code-linenumber d2h-del d2h-change"> <div class="line-num1">11</div> <div class="line-num2"></div> </a></td> <td class="d2h-del d2h-change"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">-</span> <span class="d2h-code-line-ctn"> VERSION = '0.<del>2</del>.0'</span> </div> </td> </tr><tr> <td class="d2h-code-linenumber d2h-ins d2h-change"> <div class="line-num1"></div> <div class="line-num2">11</div> </a></td> <td class="d2h-ins d2h-change"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn"> VERSION = '0.<ins>3</ins>.0'</span> </div> </td> </tr><tr> <td id="d2h-879897-7565" class="d2h-code-linenumber d2h-cntx"><a href="#d2h-879897-7565"> <div class="line-num1">12</div> <div class="line-num2">12</div> </a></td> <td class="d2h-cntx"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix"> </span> <span class="d2h-code-line-ctn">end</span> </div> </td> </tr> </tbody> </table> </div> </div> </div> <div id="d2h-828542" class="d2h-file-wrapper" data-lang="rb"> <div class="d2h-file-header"> <span class="d2h-file-name-wrapper"> <svg aria-hidden="true" class="d2h-icon" height="16" version="1.1" viewBox="0 0 12 16" width="12"> <path d="M6 5H2v-1h4v1zM2 8h7v-1H2v1z m0 2h7v-1H2v1z m0 2h7v-1H2v1z m10-7.5v9.5c0 0.55-0.45 1-1 1H1c-0.55 0-1-0.45-1-1V2c0-0.55 0.45-1 1-1h7.5l3.5 3.5z m-1 0.5L8 2H1v12h10V5z"></path> </svg> <span class="d2h-file-name"><a href="#d2h-828542">data/lib/bin_struct.rb</a></span> <span class="d2h-tag d2h-changed d2h-changed-tag">CHANGED</span></span> <label class="d2h-file-collapse"> <input class="d2h-file-collapse-input" type="checkbox" name="viewed" value="viewed"> Viewed </label> </div> <div class="d2h-file-diff"> <div class="d2h-code-wrapper"> <table class="d2h-diff-table"> <tbody class="d2h-diff-tbody"> <tr> <td class="d2h-code-linenumber d2h-info"></td> <td class="d2h-info"> <div class="d2h-code-line">@@ -25,6 +25,7 @@ end</div> </td> </tr><tr> <td id="d2h-828542-7603" class="d2h-code-linenumber d2h-cntx"><a href="#d2h-828542-7603"> <div class="line-num1">25</div> <div class="line-num2">25</div> </a></td> <td class="d2h-cntx"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix"> </span> <span class="d2h-code-line-ctn">require_relative 'bin_struct/structable'</span> </div> </td> </tr><tr> <td id="d2h-828542-7614" class="d2h-code-linenumber d2h-cntx"><a href="#d2h-828542-7614"> <div class="line-num1">26</div> <div class="line-num2">26</div> </a></td> <td class="d2h-cntx"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix"> </span> <span class="d2h-code-line-ctn">require_relative 'bin_struct/int'</span> </div> </td> </tr><tr> <td id="d2h-828542-7625" class="d2h-code-linenumber d2h-cntx"><a href="#d2h-828542-7625"> <div class="line-num1">27</div> <div class="line-num2">27</div> </a></td> <td class="d2h-cntx"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix"> </span> <span class="d2h-code-line-ctn">require_relative 'bin_struct/enum'</span> </div> </td> </tr><tr> <td id="d2h-828542-7636" class="d2h-code-linenumber d2h-ins"><a href="#d2h-828542-7636"> <div class="line-num1"></div> <div class="line-num2">28</div> </a></td> <td class="d2h-ins"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn">require_relative 'bin_struct/bit_attr'</span> </div> </td> </tr><tr> <td id="d2h-828542-7647" class="d2h-code-linenumber d2h-cntx"><a href="#d2h-828542-7647"> <div class="line-num1">28</div> <div class="line-num2">29</div> </a></td> <td class="d2h-cntx"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix"> </span> <span class="d2h-code-line-ctn">require_relative 'bin_struct/struct'</span> </div> </td> </tr><tr> <td id="d2h-828542-7658" class="d2h-code-linenumber d2h-cntx"><a href="#d2h-828542-7658"> <div class="line-num1">29</div> <div class="line-num2">30</div> </a></td> <td class="d2h-cntx"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix"> </span> <span class="d2h-code-line-ctn">require_relative 'bin_struct/length_from'</span> </div> </td> </tr><tr> <td id="d2h-828542-7669" class="d2h-code-linenumber d2h-cntx"><a href="#d2h-828542-7669"> <div class="line-num1">30</div> <div class="line-num2">31</div> </a></td> <td class="d2h-cntx"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix"> </span> <span class="d2h-code-line-ctn">require_relative 'bin_struct/abstract_tlv'</span> </div> </td> </tr> </tbody> </table> </div> </div> </div> <div id="d2h-004177" class="d2h-file-wrapper" data-lang=""> <div class="d2h-file-header"> <span class="d2h-file-name-wrapper"> <svg aria-hidden="true" class="d2h-icon" height="16" version="1.1" viewBox="0 0 12 16" width="12"> <path d="M6 5H2v-1h4v1zM2 8h7v-1H2v1z m0 2h7v-1H2v1z m0 2h7v-1H2v1z m10-7.5v9.5c0 0.55-0.45 1-1 1H1c-0.55 0-1-0.45-1-1V2c0-0.55 0.45-1 1-1h7.5l3.5 3.5z m-1 0.5L8 2H1v12h10V5z"></path> </svg> <span class="d2h-file-name"><a href="#d2h-004177">metadata</a></span> <span class="d2h-tag d2h-changed d2h-changed-tag">CHANGED</span></span> <label class="d2h-file-collapse"> <input class="d2h-file-collapse-input" type="checkbox" name="viewed" value="viewed"> Viewed </label> </div> <div class="d2h-file-diff"> <div class="d2h-code-wrapper"> <table class="d2h-diff-table"> <tbody class="d2h-diff-tbody"> <tr> <td class="d2h-code-linenumber d2h-info"></td> <td class="d2h-info"> <div class="d2h-code-line">@@ -1,14 +1,14 @@</div> </td> </tr><tr> <td id="d2h-004177-7707" class="d2h-code-linenumber d2h-cntx"><a href="#d2h-004177-7707"> <div class="line-num1">1</div> <div class="line-num2">1</div> </a></td> <td class="d2h-cntx"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix"> </span> <span class="d2h-code-line-ctn">--- !ruby/object:Gem::Specification</span> </div> </td> </tr><tr> <td id="d2h-004177-7718" class="d2h-code-linenumber d2h-cntx"><a href="#d2h-004177-7718"> <div class="line-num1">2</div> <div class="line-num2">2</div> </a></td> <td class="d2h-cntx"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix"> </span> <span class="d2h-code-line-ctn">name: bin_struct</span> </div> </td> </tr><tr> <td id="d2h-004177-7729" class="d2h-code-linenumber d2h-cntx"><a href="#d2h-004177-7729"> <div class="line-num1">3</div> <div class="line-num2">3</div> </a></td> <td class="d2h-cntx"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix"> </span> <span class="d2h-code-line-ctn">version: !ruby/object:Gem::Version</span> </div> </td> </tr><tr> <td class="d2h-code-linenumber d2h-del d2h-change"> <div class="line-num1">4</div> <div class="line-num2"></div> </a></td> <td class="d2h-del d2h-change"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">-</span> <span class="d2h-code-line-ctn"> version: 0.<del>2</del>.0</span> </div> </td> </tr><tr> <td class="d2h-code-linenumber d2h-ins d2h-change"> <div class="line-num1"></div> <div class="line-num2">4</div> </a></td> <td class="d2h-ins d2h-change"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn"> version: 0.<ins>3</ins>.0</span> </div> </td> </tr><tr> <td id="d2h-004177-7762" class="d2h-code-linenumber d2h-cntx"><a href="#d2h-004177-7762"> <div class="line-num1">5</div> <div class="line-num2">5</div> </a></td> <td class="d2h-cntx"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix"> </span> <span class="d2h-code-line-ctn">platform: ruby</span> </div> </td> </tr><tr> <td id="d2h-004177-7773" class="d2h-code-linenumber d2h-cntx"><a href="#d2h-004177-7773"> <div class="line-num1">6</div> <div class="line-num2">6</div> </a></td> <td class="d2h-cntx"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix"> </span> <span class="d2h-code-line-ctn">authors:</span> </div> </td> </tr><tr> <td id="d2h-004177-7784" class="d2h-code-linenumber d2h-cntx"><a href="#d2h-004177-7784"> <div class="line-num1">7</div> <div class="line-num2">7</div> </a></td> <td class="d2h-cntx"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix"> </span> <span class="d2h-code-line-ctn">- LemonTree55</span> </div> </td> </tr><tr> <td id="d2h-004177-7795" class="d2h-code-linenumber d2h-cntx"><a href="#d2h-004177-7795"> <div class="line-num1">8</div> <div class="line-num2">8</div> </a></td> <td class="d2h-cntx"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix"> </span> <span class="d2h-code-line-ctn">autorequire:</span> </div> </td> </tr><tr> <td id="d2h-004177-7806" class="d2h-code-linenumber d2h-cntx"><a href="#d2h-004177-7806"> <div class="line-num1">9</div> <div class="line-num2">9</div> </a></td> <td class="d2h-cntx"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix"> </span> <span class="d2h-code-line-ctn">bindir: bin</span> </div> </td> </tr><tr> <td id="d2h-004177-7817" class="d2h-code-linenumber d2h-cntx"><a href="#d2h-004177-7817"> <div class="line-num1">10</div> <div class="line-num2">10</div> </a></td> <td class="d2h-cntx"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix"> </span> <span class="d2h-code-line-ctn">cert_chain: []</span> </div> </td> </tr><tr> <td class="d2h-code-linenumber d2h-del d2h-change"> <div class="line-num1">11</div> <div class="line-num2"></div> </a></td> <td class="d2h-del d2h-change"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">-</span> <span class="d2h-code-line-ctn">date: 2024-<del>07</del>-<del>21</del> 00:00:00.000000000 Z</span> </div> </td> </tr><tr> <td class="d2h-code-linenumber d2h-ins d2h-change"> <div class="line-num1"></div> <div class="line-num2">11</div> </a></td> <td class="d2h-ins d2h-change"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn">date: 2024-<ins>12</ins>-<ins>02</ins> 00:00:00.000000000 Z</span> </div> </td> </tr><tr> <td id="d2h-004177-7850" class="d2h-code-linenumber d2h-cntx"><a href="#d2h-004177-7850"> <div class="line-num1">12</div> <div class="line-num2">12</div> </a></td> <td class="d2h-cntx"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix"> </span> <span class="d2h-code-line-ctn">dependencies: []</span> </div> </td> </tr><tr> <td id="d2h-004177-7861" class="d2h-code-linenumber d2h-cntx"><a href="#d2h-004177-7861"> <div class="line-num1">13</div> <div class="line-num2">13</div> </a></td> <td class="d2h-cntx"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix"> </span> <span class="d2h-code-line-ctn">description: 'BinStruct is a binary dissector and generator. It eases manipulating</span> </div> </td> </tr><tr> <td id="d2h-004177-7872" class="d2h-code-linenumber d2h-cntx"><a href="#d2h-004177-7872"> <div class="line-num1">14</div> <div class="line-num2">14</div> </a></td> <td class="d2h-cntx"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix"> </span> <span class="d2h-code-line-ctn"> complex binary data.</span> </div> </td> </tr> <tr> <td class="d2h-code-linenumber d2h-info"></td> <td class="d2h-info"> <div class="d2h-code-line">@@ -26,6 +26,7 @@ files:</div> </td> </tr><tr> <td id="d2h-004177-7889" class="d2h-code-linenumber d2h-cntx"><a href="#d2h-004177-7889"> <div class="line-num1">26</div> <div class="line-num2">26</div> </a></td> <td class="d2h-cntx"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix"> </span> <span class="d2h-code-line-ctn">- lib/bin_struct.rb</span> </div> </td> </tr><tr> <td id="d2h-004177-7900" class="d2h-code-linenumber d2h-cntx"><a href="#d2h-004177-7900"> <div class="line-num1">27</div> <div class="line-num2">27</div> </a></td> <td class="d2h-cntx"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix"> </span> <span class="d2h-code-line-ctn">- lib/bin_struct/abstract_tlv.rb</span> </div> </td> </tr><tr> <td id="d2h-004177-7911" class="d2h-code-linenumber d2h-cntx"><a href="#d2h-004177-7911"> <div class="line-num1">28</div> <div class="line-num2">28</div> </a></td> <td class="d2h-cntx"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix"> </span> <span class="d2h-code-line-ctn">- lib/bin_struct/array.rb</span> </div> </td> </tr><tr> <td id="d2h-004177-7922" class="d2h-code-linenumber d2h-ins"><a href="#d2h-004177-7922"> <div class="line-num1"></div> <div class="line-num2">29</div> </a></td> <td class="d2h-ins"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn">- lib/bin_struct/bit_attr.rb</span> </div> </td> </tr><tr> <td id="d2h-004177-7933" class="d2h-code-linenumber d2h-cntx"><a href="#d2h-004177-7933"> <div class="line-num1">29</div> <div class="line-num2">30</div> </a></td> <td class="d2h-cntx"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix"> </span> <span class="d2h-code-line-ctn">- lib/bin_struct/cstring.rb</span> </div> </td> </tr><tr> <td id="d2h-004177-7944" class="d2h-code-linenumber d2h-cntx"><a href="#d2h-004177-7944"> <div class="line-num1">30</div> <div class="line-num2">31</div> </a></td> <td class="d2h-cntx"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix"> </span> <span class="d2h-code-line-ctn">- lib/bin_struct/enum.rb</span> </div> </td> </tr><tr> <td id="d2h-004177-7955" class="d2h-code-linenumber d2h-cntx"><a href="#d2h-004177-7955"> <div class="line-num1">31</div> <div class="line-num2">32</div> </a></td> <td class="d2h-cntx"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix"> </span> <span class="d2h-code-line-ctn">- lib/bin_struct/int.rb</span> </div> </td> </tr> </tbody> </table> </div> </div> </div> </div> </div> </div> </div> </div> <footer class='sticky-footer mt-3'> <div class='container text-center mb-3 copyright'> <a class='mr-4 text-gray-600' href='mailto:diffend@whitesourcesoftware.com'> Contact Us </a> <a class='mr-4 text-gray-600' href='https://www.whitesourcesoftware.com/terms-of-service/'> Terms of Service </a> <a class='mr-4 text-gray-600' href='https://www.whitesourcesoftware.com/privacy-policy/'> Privacy Policy </a> <a class='mr-4 text-gray-600' href='https://diffend.io/docs'> Docs </a> </div> <div class='container mt-4'> <div class='copyright text-center'> Copyright © 2025 Mend Software </div> </div> </footer> </div> </div> </div> </body> </html>