CINXE.COM

RubyGems - bin_struct - Versions diffs - 0.3.0 → 0.5.0 - Mend - Supply Chain Defender

<!DOCTYPE html> <html> <head> <title> RubyGems - bin_struct - Versions diffs - 0.3.0 → 0.5.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="Q7ucm1mJe4IGyVikn6OJZM2In61QNuHTvJSuLNmUMT7TkRF_UNN8uWApN8yvIv5Zhz82fM14yqUlveLnkX-nNA" /> <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.3.0/0.5.0">0.3.0 → 0.5.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.3.0 → 0.5.0 </h2> </div> </div> </div> <div data-diff-id='8d50e3f8-80c9-4ebc-a4da-b248f8e726a0' 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 (17)</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.3.0/0.5.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.3.0/0.5.0/page/1#d2h-670634" class="d2h-file-name">data/CHANGELOG.md</a> <span class="d2h-file-stats"> <span class="d2h-lines-added">+26</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.3.0/0.5.0/page/1#d2h-027470" class="d2h-file-name">data/README.md</a> <span class="d2h-file-stats"> <span class="d2h-lines-added">+83</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.3.0/0.5.0/page/1#d2h-210838" class="d2h-file-name">data/lib/bin_struct/abstract_tlv.rb</a> <span class="d2h-file-stats"> <span class="d2h-lines-added">+80</span> <span class="d2h-lines-deleted">-22</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.3.0/0.5.0/page/1#d2h-989240" class="d2h-file-name">data/lib/bin_struct/array.rb</a> <span class="d2h-file-stats"> <span class="d2h-lines-added">+62</span> <span class="d2h-lines-deleted">-5</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.3.0/0.5.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">+18</span> <span class="d2h-lines-deleted">-6</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.3.0/0.5.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">+8</span> <span class="d2h-lines-deleted">-6</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.3.0/0.5.0/page/1#d2h-891082" class="d2h-file-name">data/lib/bin_struct/enum.rb</a> <span class="d2h-file-stats"> <span class="d2h-lines-added">+16</span> <span class="d2h-lines-deleted">-13</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.3.0/0.5.0/page/1#d2h-161506" class="d2h-file-name">data/lib/bin_struct/int.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.3.0/0.5.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">+7</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.3.0/0.5.0/page/1#d2h-902382" class="d2h-file-name">data/lib/bin_struct/length_from.rb</a> <span class="d2h-file-stats"> <span class="d2h-lines-added">+2</span> <span class="d2h-lines-deleted">-2</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.3.0/0.5.0/page/1#d2h-073358" class="d2h-file-name">data/lib/bin_struct/oui.rb</a> <span class="d2h-file-stats"> <span class="d2h-lines-added">+3</span> <span class="d2h-lines-deleted">-2</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.3.0/0.5.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">+40</span> <span class="d2h-lines-deleted">-9</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.3.0/0.5.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">+18</span> <span class="d2h-lines-deleted">-9</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.3.0/0.5.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.3.0/0.5.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">+27</span> <span class="d2h-lines-deleted">-2</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.3.0/0.5.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">-3</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">&nbsp;</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">&nbsp;</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>44d43c8007a5ad33899e5c7ee6a09c306a64a95012bd489ee2d14d69c7e40dcf</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>db0b44a68cb8a23b1a5110cb12bb587c4cf4a737b42443f72c0ae9241fffa6c9</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>b6e644878c67b11f8006b130b0964a2349f0aa66645f2706cb97a20bf1ec6b77</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>0bbf06e91de1bc410888f9c0e79f8caa0b7bb7f7082b5c775186c41c4a3d04db</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">&nbsp;</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>287f8dbf64a09b27b5fe376f9b6a982055713cdb2453ab7dd2b5ec0489678727441a3545427bb9f1f31d0ccc733bcc10e6af703fdc3b85b7cf539614b306bc21</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>cc3ba318afa6ac9706d57676256bbebeeec3b4dc52402728777b8c7a7fb89c9de8d893903b3e753d84a25aa6339b9aa919cfd4a223ff1f1a446a2d169047dee2</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>c1bd8b95ce395af08b53ea41385929e9d06490d4ab21588dd46e02d8ba1d66207879174ec2f3a98400667446956042b581a032d93e8b9b97cc2d8448b20ced44</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>b81c04e4ddcf9a4bbe3af1b36735a5221014f69f43ef5d11c166d33e595aa989f0feb436ed2ba5547f42372c636383a5196c302f54548d0525d49057576f2467</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,32 @@</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">&nbsp;</span> <span class="d2h-code-line-ctn">The format is based on [Keep a Changelog](https:&#x2F;&#x2F;keepachangelog.com&#x2F;en&#x2F;1.1.0&#x2F;),</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">&nbsp;</span> <span class="d2h-code-line-ctn">and this project adheres to [Semantic Versioning](https:&#x2F;&#x2F;semver.org&#x2F;spec&#x2F;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">&nbsp;</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.5.0 - 2025-02-17</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">- Add `String#b` to mimic Ruby&#x27;s `String`</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 a lot of examples in YARD documentation. These examples are checked using yard-doctest.</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">### Deprecated</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">- Deprecate `BinStruct.force_binary` and `Struct.force_binary` in favor of Ruby&#x27;s `String#b`</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">### Fixed</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">- Fix `String#to_s` when static_length is set. `#to_s` was not aware of static length option.</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">## 0.4.0 - 2025-02-13</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">### Added</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">- Add `Struct#attribute?` to check existence of an attribute.</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">- Add `AbstractTLV.derive` to derive a new subclass from a concrete TLV class.</span> </div> </td> </tr><tr> <td id="d2h-670634-435" class="d2h-code-linenumber d2h-ins"><a href="#d2h-670634-435"> <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"><br></span> </div> </td> </tr><tr> <td id="d2h-670634-446" class="d2h-code-linenumber d2h-ins"><a href="#d2h-670634-446"> <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">### Fixed</span> </div> </td> </tr><tr> <td id="d2h-670634-457" class="d2h-code-linenumber d2h-ins"><a href="#d2h-670634-457"> <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-670634-468" class="d2h-code-linenumber d2h-ins"><a href="#d2h-670634-468"> <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">- Update and fix Yard documentation.</span> </div> </td> </tr><tr> <td id="d2h-670634-479" class="d2h-code-linenumber d2h-ins"><a href="#d2h-670634-479"> <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"><br></span> </div> </td> </tr><tr> <td id="d2h-670634-490" class="d2h-code-linenumber d2h-cntx"><a href="#d2h-670634-490"> <div class="line-num1">6</div> <div class="line-num2">32</div> </a></td> <td class="d2h-cntx"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">&nbsp;</span> <span class="d2h-code-line-ctn">## 0.3.0 - 2024-12-02</span> </div> </td> </tr><tr> <td id="d2h-670634-501" class="d2h-code-linenumber d2h-cntx"><a href="#d2h-670634-501"> <div class="line-num1">7</div> <div class="line-num2">33</div> </a></td> <td class="d2h-cntx"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">&nbsp;</span> <span class="d2h-code-line-ctn"><br></span> </div> </td> </tr><tr> <td id="d2h-670634-512" class="d2h-code-linenumber d2h-cntx"><a href="#d2h-670634-512"> <div class="line-num1">8</div> <div class="line-num2">34</div> </a></td> <td class="d2h-cntx"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">&nbsp;</span> <span class="d2h-code-line-ctn">### Added</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">@@ -19,6 +19,89 @@ Or add it to a Gemfile:</div> </td> </tr><tr> <td id="d2h-027470-550" class="d2h-code-linenumber d2h-cntx"><a href="#d2h-027470-550"> <div class="line-num1">19</div> <div class="line-num2">19</div> </a></td> <td class="d2h-cntx"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">&nbsp;</span> <span class="d2h-code-line-ctn">gem &#x27;bin_struct&#x27;</span> </div> </td> </tr><tr> <td id="d2h-027470-561" class="d2h-code-linenumber d2h-cntx"><a href="#d2h-027470-561"> <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">&nbsp;</span> <span class="d2h-code-line-ctn">```</span> </div> </td> </tr><tr> <td id="d2h-027470-572" class="d2h-code-linenumber d2h-cntx"><a href="#d2h-027470-572"> <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">&nbsp;</span> <span class="d2h-code-line-ctn"><br></span> </div> </td> </tr><tr> <td id="d2h-027470-583" class="d2h-code-linenumber d2h-ins"><a href="#d2h-027470-583"> <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">## Usage</span> </div> </td> </tr><tr> <td id="d2h-027470-594" class="d2h-code-linenumber d2h-ins"><a href="#d2h-027470-594"> <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"><br></span> </div> </td> </tr><tr> <td id="d2h-027470-605" class="d2h-code-linenumber d2h-ins"><a href="#d2h-027470-605"> <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">### Create a struct</span> </div> </td> </tr><tr> <td id="d2h-027470-616" class="d2h-code-linenumber d2h-ins"><a href="#d2h-027470-616"> <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"><br></span> </div> </td> </tr><tr> <td id="d2h-027470-627" class="d2h-code-linenumber d2h-ins"><a href="#d2h-027470-627"> <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">To create a BinStruct, create a new class inheriting from `BinStruct::Struct`. Then, defines struct attributes using `.define_attr`. `.define_bit_attr` may also be used to define bit field attributes.</span> </div> </td> </tr><tr> <td id="d2h-027470-638" class="d2h-code-linenumber d2h-ins"><a href="#d2h-027470-638"> <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"><br></span> </div> </td> </tr><tr> <td id="d2h-027470-649" class="d2h-code-linenumber d2h-ins"><a href="#d2h-027470-649"> <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">```ruby</span> </div> </td> </tr><tr> <td id="d2h-027470-660" class="d2h-code-linenumber d2h-ins"><a href="#d2h-027470-660"> <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">require &#x27;bin_struct&#x27;</span> </div> </td> </tr><tr> <td id="d2h-027470-671" class="d2h-code-linenumber d2h-ins"><a href="#d2h-027470-671"> <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"><br></span> </div> </td> </tr><tr> <td id="d2h-027470-682" class="d2h-code-linenumber d2h-ins"><a href="#d2h-027470-682"> <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">class IPHeader &lt; BinStruct::Struct</span> </div> </td> </tr><tr> <td id="d2h-027470-693" class="d2h-code-linenumber d2h-ins"><a href="#d2h-027470-693"> <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"> # Define a bir field, defaulting to 0x45, and splitted in 2 sub-fields: version and ihl,</span> </div> </td> </tr><tr> <td id="d2h-027470-704" class="d2h-code-linenumber d2h-ins"><a href="#d2h-027470-704"> <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"> # 4-bit size each</span> </div> </td> </tr><tr> <td id="d2h-027470-715" class="d2h-code-linenumber d2h-ins"><a href="#d2h-027470-715"> <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"> define_bit_attr :u8, default: 0x45, version: 4, ihl: 4</span> </div> </td> </tr><tr> <td id="d2h-027470-726" class="d2h-code-linenumber d2h-ins"><a href="#d2h-027470-726"> <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"> # Define a 8-bit unsigned integer named tos</span> </div> </td> </tr><tr> <td id="d2h-027470-737" class="d2h-code-linenumber d2h-ins"><a href="#d2h-027470-737"> <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"> # 1st argument: a symbol to define attribute name</span> </div> </td> </tr><tr> <td id="d2h-027470-748" class="d2h-code-linenumber d2h-ins"><a href="#d2h-027470-748"> <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"> # 2nd argument: a class to define attribute type. May be a type provided by BinStruct,</span> </div> </td> </tr><tr> <td id="d2h-027470-759" class="d2h-code-linenumber d2h-ins"><a href="#d2h-027470-759"> <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"> # or a user-defined class inheriting from one of these classes</span> </div> </td> </tr><tr> <td id="d2h-027470-770" class="d2h-code-linenumber d2h-ins"><a href="#d2h-027470-770"> <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"> # others arguments: options. Here, :default defines a default value for the attribute.</span> </div> </td> </tr><tr> <td id="d2h-027470-781" class="d2h-code-linenumber d2h-ins"><a href="#d2h-027470-781"> <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"> define_attr :tos, BinStruct::Int8, default: 0</span> </div> </td> </tr><tr> <td id="d2h-027470-792" class="d2h-code-linenumber d2h-ins"><a href="#d2h-027470-792"> <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"> # Define a 16-bit unsigned integer named length. Default to 20.</span> </div> </td> </tr><tr> <td id="d2h-027470-803" class="d2h-code-linenumber d2h-ins"><a href="#d2h-027470-803"> <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"> define_attr :length, BinStruct::Int16, default: 20</span> </div> </td> </tr><tr> <td id="d2h-027470-814" class="d2h-code-linenumber d2h-ins"><a href="#d2h-027470-814"> <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"> # Define a 16-bir unsigned integer named id. It is initialized with a random number</span> </div> </td> </tr><tr> <td id="d2h-027470-825" class="d2h-code-linenumber d2h-ins"><a href="#d2h-027470-825"> <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"> define_attr :id, BinStruct::Int16, default: -&gt;(_) { rand(65_535) }</span> </div> </td> </tr><tr> <td id="d2h-027470-836" class="d2h-code-linenumber d2h-ins"><a href="#d2h-027470-836"> <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"> # Define a bit field composed of 4 subfields of 1, 1, 1 and 13 bit, respectively</span> </div> </td> </tr><tr> <td id="d2h-027470-847" class="d2h-code-linenumber d2h-ins"><a href="#d2h-027470-847"> <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"> define_bit_attr :frag, flag_rsv: 1, flag_df: 1, flag_mf: 1, fragment_offset: 13</span> </div> </td> </tr><tr> <td id="d2h-027470-858" class="d2h-code-linenumber d2h-ins"><a href="#d2h-027470-858"> <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"> # Define TTL field, a 8-bit unsigned integer, default to 64</span> </div> </td> </tr><tr> <td id="d2h-027470-869" class="d2h-code-linenumber d2h-ins"><a href="#d2h-027470-869"> <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"> define_attr :ttl, BinStruct::Int8, default: 64</span> </div> </td> </tr><tr> <td id="d2h-027470-880" class="d2h-code-linenumber d2h-ins"><a href="#d2h-027470-880"> <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"> # Define protocol field (8-bit unsigned integer)</span> </div> </td> </tr><tr> <td id="d2h-027470-891" class="d2h-code-linenumber d2h-ins"><a href="#d2h-027470-891"> <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"> define_attr :protocol, BinStruct::Int8</span> </div> </td> </tr><tr> <td id="d2h-027470-902" class="d2h-code-linenumber d2h-ins"><a href="#d2h-027470-902"> <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"> # Define checksum field (16-bit unsigned integer), default to 0</span> </div> </td> </tr><tr> <td id="d2h-027470-913" class="d2h-code-linenumber d2h-ins"><a href="#d2h-027470-913"> <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"> define_attr :checksum, BinStruct::Int16, default: 0</span> </div> </td> </tr><tr> <td id="d2h-027470-924" class="d2h-code-linenumber d2h-ins"><a href="#d2h-027470-924"> <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"> # Source and destination addresses, defined as array of 4 8-bit unsigned integers</span> </div> </td> </tr><tr> <td id="d2h-027470-935" class="d2h-code-linenumber d2h-ins"><a href="#d2h-027470-935"> <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"> define_attr :src, BinStruct::ArrayOfInt8, length_from: -&gt; { 4 }</span> </div> </td> </tr><tr> <td id="d2h-027470-946" class="d2h-code-linenumber d2h-ins"><a href="#d2h-027470-946"> <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"> define_attr :dst, BinStruct::ArrayOfInt8, length_from: -&gt; { 4 }</span> </div> </td> </tr><tr> <td id="d2h-027470-957" class="d2h-code-linenumber d2h-ins"><a href="#d2h-027470-957"> <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">end</span> </div> </td> </tr><tr> <td id="d2h-027470-968" class="d2h-code-linenumber d2h-ins"><a href="#d2h-027470-968"> <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">```</span> </div> </td> </tr><tr> <td id="d2h-027470-979" class="d2h-code-linenumber d2h-ins"><a href="#d2h-027470-979"> <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"><br></span> </div> </td> </tr><tr> <td id="d2h-027470-990" class="d2h-code-linenumber d2h-ins"><a href="#d2h-027470-990"> <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">### Parse a binary string</span> </div> </td> </tr><tr> <td id="d2h-027470-1001" class="d2h-code-linenumber d2h-ins"><a href="#d2h-027470-1001"> <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"><br></span> </div> </td> </tr><tr> <td id="d2h-027470-1012" class="d2h-code-linenumber d2h-ins"><a href="#d2h-027470-1012"> <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">```ruby</span> </div> </td> </tr><tr> <td id="d2h-027470-1023" class="d2h-code-linenumber d2h-ins"><a href="#d2h-027470-1023"> <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"># Initialize struct from a binary string</span> </div> </td> </tr><tr> <td id="d2h-027470-1034" class="d2h-code-linenumber d2h-ins"><a href="#d2h-027470-1034"> <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">ip = IPHeader.new.read(&quot;\x45\x00\x00\x14\x43\x21\x00\x00\x40\x01\x00\x00\x7f\x00\x00\x01\x7f\x00\x00\x01&quot;.b)</span> </div> </td> </tr><tr> <td id="d2h-027470-1045" class="d2h-code-linenumber d2h-ins"><a href="#d2h-027470-1045"> <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"><br></span> </div> </td> </tr><tr> <td id="d2h-027470-1056" class="d2h-code-linenumber d2h-ins"><a href="#d2h-027470-1056"> <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"># Access some fields</span> </div> </td> </tr><tr> <td id="d2h-027470-1067" class="d2h-code-linenumber d2h-ins"><a href="#d2h-027470-1067"> <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">p ip.version #=&gt; 4</span> </div> </td> </tr><tr> <td id="d2h-027470-1078" class="d2h-code-linenumber d2h-ins"><a href="#d2h-027470-1078"> <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">p ip.ihl #=&gt; 5</span> </div> </td> </tr><tr> <td id="d2h-027470-1089" class="d2h-code-linenumber d2h-ins"><a href="#d2h-027470-1089"> <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">p ip.id.to_s(16) #=&gt; &quot;4321&quot;</span> </div> </td> </tr><tr> <td id="d2h-027470-1100" class="d2h-code-linenumber d2h-ins"><a href="#d2h-027470-1100"> <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">p ip.protocol #=&gt; 1</span> </div> </td> </tr><tr> <td id="d2h-027470-1111" class="d2h-code-linenumber d2h-ins"><a href="#d2h-027470-1111"> <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">p ip.src.map { |byte| byte.to_i }.join(&#x27;.&#x27;) #=&gt; &quot;127.0.0.1&quot;</span> </div> </td> </tr><tr> <td id="d2h-027470-1122" class="d2h-code-linenumber d2h-ins"><a href="#d2h-027470-1122"> <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">```</span> </div> </td> </tr><tr> <td id="d2h-027470-1133" class="d2h-code-linenumber d2h-ins"><a href="#d2h-027470-1133"> <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"><br></span> </div> </td> </tr><tr> <td id="d2h-027470-1144" class="d2h-code-linenumber d2h-ins"><a href="#d2h-027470-1144"> <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">```text</span> </div> </td> </tr><tr> <td id="d2h-027470-1155" class="d2h-code-linenumber d2h-ins"><a href="#d2h-027470-1155"> <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">&gt; p IPHeader.new.read(&quot;\x45\x00\x00\x14\x43\x21\x00\x00\x40\x01\x00\x00\x7f\x00\x00\x01\x7f\x00\x00\x01&quot;)</span> </div> </td> </tr><tr> <td id="d2h-027470-1166" class="d2h-code-linenumber d2h-ins"><a href="#d2h-027470-1166"> <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">-- IPHeader -----------------------------------------------------------</span> </div> </td> </tr><tr> <td id="d2h-027470-1177" class="d2h-code-linenumber d2h-ins"><a href="#d2h-027470-1177"> <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"> BitAttr8 u8: 69 (0x45)</span> </div> </td> </tr><tr> <td id="d2h-027470-1188" class="d2h-code-linenumber d2h-ins"><a href="#d2h-027470-1188"> <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"> version:4 ihl:5</span> </div> </td> </tr><tr> <td id="d2h-027470-1199" class="d2h-code-linenumber d2h-ins"><a href="#d2h-027470-1199"> <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"> Int8 tos: 0 (0x00)</span> </div> </td> </tr><tr> <td id="d2h-027470-1210" class="d2h-code-linenumber d2h-ins"><a href="#d2h-027470-1210"> <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"> Int16 length: 20 (0x0014)</span> </div> </td> </tr><tr> <td id="d2h-027470-1221" class="d2h-code-linenumber d2h-ins"><a href="#d2h-027470-1221"> <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"> Int16 id: 17185 (0x4321)</span> </div> </td> </tr><tr> <td id="d2h-027470-1232" class="d2h-code-linenumber d2h-ins"><a href="#d2h-027470-1232"> <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"> BitAttr16 frag: 0 (0x0000)</span> </div> </td> </tr><tr> <td id="d2h-027470-1243" class="d2h-code-linenumber d2h-ins"><a href="#d2h-027470-1243"> <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"> flag_rsv:0 flag_df:0 flag_mf:0 fragment_offset:0</span> </div> </td> </tr><tr> <td id="d2h-027470-1254" class="d2h-code-linenumber d2h-ins"><a href="#d2h-027470-1254"> <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"> Int8 ttl: 64 (0x40)</span> </div> </td> </tr><tr> <td id="d2h-027470-1265" class="d2h-code-linenumber d2h-ins"><a href="#d2h-027470-1265"> <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"> Int8 protocol: 1 (0x01)</span> </div> </td> </tr><tr> <td id="d2h-027470-1276" class="d2h-code-linenumber d2h-ins"><a href="#d2h-027470-1276"> <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"> Int16 checksum: 0 (0x0000)</span> </div> </td> </tr><tr> <td id="d2h-027470-1287" class="d2h-code-linenumber d2h-ins"><a href="#d2h-027470-1287"> <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"> ArrayOfInt8 src: 127,0,0,1</span> </div> </td> </tr><tr> <td id="d2h-027470-1298" class="d2h-code-linenumber d2h-ins"><a href="#d2h-027470-1298"> <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"> ArrayOfInt8 dst: 127,0,0,1</span> </div> </td> </tr><tr> <td id="d2h-027470-1309" class="d2h-code-linenumber d2h-ins"><a href="#d2h-027470-1309"> <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"><br></span> </div> </td> </tr><tr> <td id="d2h-027470-1320" class="d2h-code-linenumber d2h-ins"><a href="#d2h-027470-1320"> <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">```</span> </div> </td> </tr><tr> <td id="d2h-027470-1331" class="d2h-code-linenumber d2h-ins"><a href="#d2h-027470-1331"> <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"><br></span> </div> </td> </tr><tr> <td id="d2h-027470-1342" class="d2h-code-linenumber d2h-ins"><a href="#d2h-027470-1342"> <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">### Generate a binary string</span> </div> </td> </tr><tr> <td id="d2h-027470-1353" class="d2h-code-linenumber d2h-ins"><a href="#d2h-027470-1353"> <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"><br></span> </div> </td> </tr><tr> <td id="d2h-027470-1364" class="d2h-code-linenumber d2h-ins"><a href="#d2h-027470-1364"> <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">```ruby</span> </div> </td> </tr><tr> <td id="d2h-027470-1375" class="d2h-code-linenumber d2h-ins"><a href="#d2h-027470-1375"> <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"># Create a new struct with some fields initialized</span> </div> </td> </tr><tr> <td id="d2h-027470-1386" class="d2h-code-linenumber d2h-ins"><a href="#d2h-027470-1386"> <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">ip = IPHeader.new(tos: 42, id: 0x1234)</span> </div> </td> </tr><tr> <td id="d2h-027470-1397" class="d2h-code-linenumber d2h-ins"><a href="#d2h-027470-1397"> <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"><br></span> </div> </td> </tr><tr> <td id="d2h-027470-1408" class="d2h-code-linenumber d2h-ins"><a href="#d2h-027470-1408"> <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"># Initialize fields after creation</span> </div> </td> </tr><tr> <td id="d2h-027470-1419" class="d2h-code-linenumber d2h-ins"><a href="#d2h-027470-1419"> <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">ip.src = [192, 168, 1, 1]</span> </div> </td> </tr><tr> <td id="d2h-027470-1430" class="d2h-code-linenumber d2h-ins"><a href="#d2h-027470-1430"> <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">ip.dst = [192, 168, 1, 2]</span> </div> </td> </tr><tr> <td id="d2h-027470-1441" class="d2h-code-linenumber d2h-ins"><a href="#d2h-027470-1441"> <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"><br></span> </div> </td> </tr><tr> <td id="d2h-027470-1452" class="d2h-code-linenumber d2h-ins"><a href="#d2h-027470-1452"> <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"># Generate binary string</span> </div> </td> </tr><tr> <td id="d2h-027470-1463" class="d2h-code-linenumber d2h-ins"><a href="#d2h-027470-1463"> <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">ip.to_s</span> </div> </td> </tr><tr> <td id="d2h-027470-1474" class="d2h-code-linenumber d2h-ins"><a href="#d2h-027470-1474"> <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">```</span> </div> </td> </tr><tr> <td id="d2h-027470-1485" class="d2h-code-linenumber d2h-ins"><a href="#d2h-027470-1485"> <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"><br></span> </div> </td> </tr><tr> <td id="d2h-027470-1496" class="d2h-code-linenumber d2h-cntx"><a href="#d2h-027470-1496"> <div class="line-num1">22</div> <div class="line-num2">105</div> </a></td> <td class="d2h-cntx"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">&nbsp;</span> <span class="d2h-code-line-ctn">## License</span> </div> </td> </tr><tr> <td id="d2h-027470-1507" class="d2h-code-linenumber d2h-cntx"><a href="#d2h-027470-1507"> <div class="line-num1">23</div> <div class="line-num2">106</div> </a></td> <td class="d2h-cntx"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">&nbsp;</span> <span class="d2h-code-line-ctn"><br></span> </div> </td> </tr><tr> <td id="d2h-027470-1518" class="d2h-code-linenumber d2h-cntx"><a href="#d2h-027470-1518"> <div class="line-num1">24</div> <div class="line-num2">107</div> </a></td> <td class="d2h-cntx"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">&nbsp;</span> <span class="d2h-code-line-ctn">The gem is available as open source under the terms of the [MIT License](https:&#x2F;&#x2F;opensource.org&#x2F;licenses&#x2F;MIT).</span> </div> </td> </tr> </tbody> </table> </div> </div> </div> <div id="d2h-210838" 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-210838">data/lib/bin_struct/abstract_tlv.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">@@ -6,14 +6,11 @@</div> </td> </tr><tr> <td id="d2h-210838-1556" class="d2h-code-linenumber d2h-cntx"><a href="#d2h-210838-1556"> <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">&nbsp;</span> <span class="d2h-code-line-ctn"># Copyright (C) 2024 LemonTree55 &lt;lenontree@proton.me&gt;</span> </div> </td> </tr><tr> <td id="d2h-210838-1567" class="d2h-code-linenumber d2h-cntx"><a href="#d2h-210838-1567"> <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">&nbsp;</span> <span class="d2h-code-line-ctn"># This program is published under MIT license.</span> </div> </td> </tr><tr> <td id="d2h-210838-1578" class="d2h-code-linenumber d2h-cntx"><a href="#d2h-210838-1578"> <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">&nbsp;</span> <span class="d2h-code-line-ctn"><br></span> </div> </td> </tr><tr> <td id="d2h-210838-1589" class="d2h-code-linenumber d2h-del"><a href="#d2h-210838-1589"> <div class="line-num1">9</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"># BinStruct module</span> </div> </td> </tr><tr> <td id="d2h-210838-1600" class="d2h-code-linenumber d2h-del"><a href="#d2h-210838-1600"> <div class="line-num1">10</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"># @author LemonTree55</span> </div> </td> </tr><tr> <td id="d2h-210838-1611" class="d2h-code-linenumber d2h-cntx"><a href="#d2h-210838-1611"> <div class="line-num1">11</div> <div class="line-num2">9</div> </a></td> <td class="d2h-cntx"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">&nbsp;</span> <span class="d2h-code-line-ctn">module BinStruct</span> </div> </td> </tr><tr> <td id="d2h-210838-1622" class="d2h-code-linenumber d2h-cntx"><a href="#d2h-210838-1622"> <div class="line-num1">12</div> <div class="line-num2">10</div> </a></td> <td class="d2h-cntx"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">&nbsp;</span> <span class="d2h-code-line-ctn"> # @abstract Base class to define type-length-value data.</span> </div> </td> </tr><tr> <td id="d2h-210838-1633" class="d2h-code-linenumber d2h-cntx"><a href="#d2h-210838-1633"> <div class="line-num1">13</div> <div class="line-num2">11</div> </a></td> <td class="d2h-cntx"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">&nbsp;</span> <span class="d2h-code-line-ctn"> #</span> </div> </td> </tr><tr> <td class="d2h-code-linenumber d2h-del d2h-change"> <div class="line-num1">14</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>===Usage</del></span> </div> </td> </tr><tr> <td class="d2h-code-linenumber d2h-del d2h-change"> <div class="line-num1">15</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>To</del> <del>simply define a new TLV class, do:</del></span> </div> </td> </tr><tr> <td id="d2h-210838-1666" class="d2h-code-linenumber d2h-del"><a href="#d2h-210838-1666"> <div class="line-num1">16</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"> # MyTLV = PacketGen::Types::AbstractTLV.create</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>You have to define a concrete class from AbstractTLV</ins></span> </div> </td> </tr><tr> <td class="d2h-code-linenumber d2h-ins d2h-change"> <div class="line-num1"></div> <div class="line-num2">13</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> MyTLV</ins> <ins>=</ins> <ins>BinStruct::AbstractTLV.create</ins></span> </div> </td> </tr><tr> <td id="d2h-210838-1699" class="d2h-code-linenumber d2h-cntx"><a href="#d2h-210838-1699"> <div class="line-num1">17</div> <div class="line-num2">14</div> </a></td> <td class="d2h-cntx"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">&nbsp;</span> <span class="d2h-code-line-ctn"> # MyTLV.define_type_enum &#x27;one&#x27; =&gt; 1, &#x27;two&#x27; =&gt; 2</span> </div> </td> </tr><tr> <td id="d2h-210838-1710" class="d2h-code-linenumber d2h-cntx"><a href="#d2h-210838-1710"> <div class="line-num1">18</div> <div class="line-num2">15</div> </a></td> <td class="d2h-cntx"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">&nbsp;</span> <span class="d2h-code-line-ctn"> # This will define a new +MyTLV+ class, subclass of {AbstractTLV}. This class will</span> </div> </td> </tr><tr> <td id="d2h-210838-1721" class="d2h-code-linenumber d2h-cntx"><a href="#d2h-210838-1721"> <div class="line-num1">19</div> <div class="line-num2">16</div> </a></td> <td class="d2h-cntx"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">&nbsp;</span> <span class="d2h-code-line-ctn"> # define 3 attributes:</span> </div> </td> </tr> <tr> <td class="d2h-code-linenumber d2h-info"></td> <td class="d2h-info"> <div class="d2h-code-line">@@ -23,29 +20,36 @@ module BinStruct</div> </td> </tr><tr> <td id="d2h-210838-1738" class="d2h-code-linenumber d2h-cntx"><a href="#d2h-210838-1738"> <div class="line-num1">23</div> <div class="line-num2">20</div> </a></td> <td class="d2h-cntx"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">&nbsp;</span> <span class="d2h-code-line-ctn"> # +.define_type_enum+ is, here, necessary to define enum hash to be used</span> </div> </td> </tr><tr> <td id="d2h-210838-1749" class="d2h-code-linenumber d2h-cntx"><a href="#d2h-210838-1749"> <div class="line-num1">24</div> <div class="line-num2">21</div> </a></td> <td class="d2h-cntx"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">&nbsp;</span> <span class="d2h-code-line-ctn"> # for +#type+ accessor, as this one is defined as an {Enum}.</span> </div> </td> </tr><tr> <td id="d2h-210838-1760" class="d2h-code-linenumber d2h-cntx"><a href="#d2h-210838-1760"> <div class="line-num1">25</div> <div class="line-num2">22</div> </a></td> <td class="d2h-cntx"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">&nbsp;</span> <span class="d2h-code-line-ctn"> #</span> </div> </td> </tr><tr> <td class="d2h-code-linenumber d2h-del d2h-change"> <div class="line-num1">26</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>This</del> <del>new</del> <del>defined class may now be easily used:</del></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"> # <ins>@example</ins> <ins>Basic</ins> <ins>usage</ins></span> </div> </td> </tr><tr> <td id="d2h-210838-1793" class="d2h-code-linenumber d2h-ins"><a href="#d2h-210838-1793"> <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"> # MyTLV = BinStruct::AbstractTLV.create</span> </div> </td> </tr><tr> <td id="d2h-210838-1804" class="d2h-code-linenumber d2h-ins"><a href="#d2h-210838-1804"> <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"> # MyTLV.define_type_enum &#x27;one&#x27; =&gt; 1, &#x27;two&#x27; =&gt; 2</span> </div> </td> </tr><tr> <td id="d2h-210838-1815" class="d2h-code-linenumber d2h-ins"><a href="#d2h-210838-1815"> <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"> #</span> </div> </td> </tr><tr> <td id="d2h-210838-1826" class="d2h-code-linenumber d2h-cntx"><a href="#d2h-210838-1826"> <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">&nbsp;</span> <span class="d2h-code-line-ctn"> # tlv = MyTLV.new(type: 1, value: &#x27;abcd&#x27;) # automagically set #length from value</span> </div> </td> </tr><tr> <td id="d2h-210838-1837" class="d2h-code-linenumber d2h-cntx"><a href="#d2h-210838-1837"> <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">&nbsp;</span> <span class="d2h-code-line-ctn"> # tlv.type #=&gt; 1</span> </div> </td> </tr><tr> <td id="d2h-210838-1848" class="d2h-code-linenumber d2h-cntx"><a href="#d2h-210838-1848"> <div class="line-num1">29</div> <div class="line-num2">29</div> </a></td> <td class="d2h-cntx"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">&nbsp;</span> <span class="d2h-code-line-ctn"> # tlv.human_type #=&gt; &#x27;one&#x27;</span> </div> </td> </tr><tr> <td id="d2h-210838-1859" class="d2h-code-linenumber d2h-cntx"><a href="#d2h-210838-1859"> <div class="line-num1">30</div> <div class="line-num2">30</div> </a></td> <td class="d2h-cntx"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">&nbsp;</span> <span class="d2h-code-line-ctn"> # tlv.length #=&gt; 4</span> </div> </td> </tr><tr> <td id="d2h-210838-1870" class="d2h-code-linenumber d2h-cntx"><a href="#d2h-210838-1870"> <div class="line-num1">31</div> <div class="line-num2">31</div> </a></td> <td class="d2h-cntx"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">&nbsp;</span> <span class="d2h-code-line-ctn"> # tlv.value #=&gt; &quot;abcd&quot;</span> </div> </td> </tr><tr> <td id="d2h-210838-1881" class="d2h-code-linenumber d2h-cntx"><a href="#d2h-210838-1881"> <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">&nbsp;</span> <span class="d2h-code-line-ctn"> #</span> </div> </td> </tr><tr> <td class="d2h-code-linenumber d2h-del d2h-change"> <div class="line-num1">33</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>===Advanced</del> <del>usage</del></span> </div> </td> </tr><tr> <td class="d2h-code-linenumber d2h-del d2h-change"> <div class="line-num1">34</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>Each</del> <del>attribute&#x27;s </del>type <del>may</del> <del>be</del> <del>changed at generating TLV class:</del></span> </div> </td> </tr><tr> <td class="d2h-code-linenumber d2h-del d2h-change"> <div class="line-num1">35</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>MyTLV</del> <del>=</del> <del>PacketGen::Types::AbstractTLV.create(type_class:</del> <del>PacketGen::Types::Int16,</del></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"> #<del> length_class:</del> <del>PacketGen::Types::Int16,</del></span> </div> </td> </tr><tr> <td class="d2h-code-linenumber d2h-del d2h-change"> <div class="line-num1">37</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> value_class</del>: <del>PacketGen</del>::<del>Header::IP::Addr)</del></span> </div> </td> </tr><tr> <td class="d2h-code-linenumber d2h-del d2h-change"> <div class="line-num1">38</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> tlv = MyTLV.new(type</del>: <del>1</del>,<del> value: &#x27;1.2.3.4&#x27;)</del></span> </div> </td> </tr><tr> <td class="d2h-code-linenumber d2h-ins d2h-change"> <div class="line-num1"></div> <div class="line-num2">33</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>@example</ins> <ins>Change attribute types</ins></span> </div> </td> </tr><tr> <td class="d2h-code-linenumber d2h-ins d2h-change"> <div class="line-num1"></div> <div class="line-num2">34</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>Change</ins> type <ins>for</ins> <ins>each</ins> <ins>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">35</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>Type</ins> <ins>and</ins> <ins>length are 16-bit big endian integers</ins></span> </div> </td> </tr><tr> <td class="d2h-code-linenumber d2h-ins d2h-change"> <div class="line-num1"></div> <div class="line-num2">36</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>Value is a OUI</ins></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"> #<ins> MyTLV = BinStruct::AbstractTLV.create(type_class</ins>: <ins>BinStruct</ins>::<ins>Int16,</ins></span> </div> </td> </tr><tr> <td class="d2h-code-linenumber d2h-ins d2h-change"> <div class="line-num1"></div> <div class="line-num2">38</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> length_class</ins>: <ins>BinStruct::Int16</ins>,</span> </div> </td> </tr><tr> <td id="d2h-210838-2024" class="d2h-code-linenumber d2h-ins"><a href="#d2h-210838-2024"> <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"> # value_class: BinStruct::OUI)</span> </div> </td> </tr><tr> <td id="d2h-210838-2035" class="d2h-code-linenumber d2h-ins"><a href="#d2h-210838-2035"> <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"> # tlv = MyTLV.new(type: 1, value: &#x27;01:02:03&#x27;)</span> </div> </td> </tr><tr> <td id="d2h-210838-2046" class="d2h-code-linenumber d2h-cntx"><a href="#d2h-210838-2046"> <div class="line-num1">39</div> <div class="line-num2">41</div> </a></td> <td class="d2h-cntx"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">&nbsp;</span> <span class="d2h-code-line-ctn"> # tlv.type #=&gt; 1</span> </div> </td> </tr><tr> <td class="d2h-code-linenumber d2h-del d2h-change"> <div class="line-num1">40</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"> # tlv.length #=&gt; <del>4</del></span> </div> </td> </tr><tr> <td class="d2h-code-linenumber d2h-del d2h-change"> <div class="line-num1">41</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"> # tlv.value #=&gt; &#x27;<del>1.2.3.4</del>&#x27;</span> </div> </td> </tr><tr> <td class="d2h-code-linenumber d2h-del d2h-change"> <div class="line-num1">42</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"> # tlv.to_s #=&gt; &quot;\x00\x01\x00\<del>x04</del>\x01\x02\x03<del>\x04</del>&quot;</span> </div> </td> </tr><tr> <td class="d2h-code-linenumber d2h-ins d2h-change"> <div class="line-num1"></div> <div class="line-num2">42</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"> # tlv.length #=&gt; <ins>3</ins></span> </div> </td> </tr><tr> <td class="d2h-code-linenumber d2h-ins d2h-change"> <div class="line-num1"></div> <div class="line-num2">43</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"> # tlv.value #=&gt; &#x27;<ins>01:02:03</ins>&#x27;</span> </div> </td> </tr><tr> <td class="d2h-code-linenumber d2h-ins d2h-change"> <div class="line-num1"></div> <div class="line-num2">44</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"> # tlv.to_s #=&gt; &quot;\x00\x01\x00\<ins>x03</ins>\x01\x02\x03&quot;</span> </div> </td> </tr><tr> <td id="d2h-210838-2123" class="d2h-code-linenumber d2h-cntx"><a href="#d2h-210838-2123"> <div class="line-num1">43</div> <div class="line-num2">45</div> </a></td> <td class="d2h-cntx"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">&nbsp;</span> <span class="d2h-code-line-ctn"> #</span> </div> </td> </tr><tr> <td class="d2h-code-linenumber d2h-del d2h-change"> <div class="line-num1">44</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>Some aliases may also be defined. For </del>example<del>,</del> <del>to</del> <del>create a TLV type</del></span> </div> </td> </tr><tr> <td class="d2h-code-linenumber d2h-del d2h-change"> <div class="line-num1">45</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>whose</del> <del>+type+</del> <del>attribute</del> <del>should</del> <del>be</del> <del>named</del> <del>+code+:</del></span> </div> </td> </tr><tr> <td class="d2h-code-linenumber d2h-del d2h-change"> <div class="line-num1">46</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>MyTLV</del> <del>=</del> <del>PacketGen::Types::AbstractTLV.create(type_class:</del> <del>PacketGen::Types::Int16,</del></span> </div> </td> </tr><tr> <td class="d2h-code-linenumber d2h-del d2h-change"> <div class="line-num1">47</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> length_class:</del> <del>PacketGen::Types::Int16,</del></span> </div> </td> </tr><tr> <td class="d2h-code-linenumber d2h-del d2h-change"> <div class="line-num1">48</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> aliases:</del> <del>{</del> <del>code</del>: <del>:type })</del></span> </div> </td> </tr><tr> <td class="d2h-code-linenumber d2h-ins d2h-change"> <div class="line-num1"></div> <div class="line-num2">46</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>example <ins>Using</ins> <ins>aliases</ins></span> </div> </td> </tr><tr> <td class="d2h-code-linenumber d2h-ins d2h-change"> <div class="line-num1"></div> <div class="line-num2">47</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>Type</ins> <ins>and</ins> <ins>length</ins> <ins>are</ins> <ins>16-bit</ins> <ins>big</ins> <ins>endian integers</ins></span> </div> </td> </tr><tr> <td class="d2h-code-linenumber d2h-ins d2h-change"> <div class="line-num1"></div> <div class="line-num2">48</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>Value</ins> <ins>is</ins> <ins>a string</ins></span> </div> </td> </tr><tr> <td class="d2h-code-linenumber d2h-ins d2h-change"> <div class="line-num1"></div> <div class="line-num2">49</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>code is an alias for type</ins></span> </div> </td> </tr><tr> <td class="d2h-code-linenumber d2h-ins d2h-change"> <div class="line-num1"></div> <div class="line-num2">50</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> MyTLV</ins> <ins>=</ins> <ins>BinStruct::AbstractTLV.create(type_class</ins>: <ins>BinStruct::Int16,</ins></span> </div> </td> </tr><tr> <td id="d2h-210838-2244" class="d2h-code-linenumber d2h-ins"><a href="#d2h-210838-2244"> <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"> # length_class: BinStruct::Int16,</span> </div> </td> </tr><tr> <td id="d2h-210838-2255" class="d2h-code-linenumber d2h-ins"><a href="#d2h-210838-2255"> <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"> # aliases: { code: :type })</span> </div> </td> </tr><tr> <td id="d2h-210838-2266" class="d2h-code-linenumber d2h-cntx"><a href="#d2h-210838-2266"> <div class="line-num1">49</div> <div class="line-num2">53</div> </a></td> <td class="d2h-cntx"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">&nbsp;</span> <span class="d2h-code-line-ctn"> # tlv = MyTLV.new(code: 1, value: &#x27;abcd&#x27;)</span> </div> </td> </tr><tr> <td id="d2h-210838-2277" class="d2h-code-linenumber d2h-cntx"><a href="#d2h-210838-2277"> <div class="line-num1">50</div> <div class="line-num2">54</div> </a></td> <td class="d2h-cntx"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">&nbsp;</span> <span class="d2h-code-line-ctn"> # tlv.code #=&gt; 1</span> </div> </td> </tr><tr> <td id="d2h-210838-2288" class="d2h-code-linenumber d2h-cntx"><a href="#d2h-210838-2288"> <div class="line-num1">51</div> <div class="line-num2">55</div> </a></td> <td class="d2h-cntx"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">&nbsp;</span> <span class="d2h-code-line-ctn"> # tlv.type #=&gt; 1</span> </div> </td> </tr> <tr> <td class="d2h-code-linenumber d2h-info"></td> <td class="d2h-info"> <div class="d2h-code-line">@@ -77,11 +81,12 @@ module BinStruct</div> </td> </tr><tr> <td id="d2h-210838-2305" class="d2h-code-linenumber d2h-cntx"><a href="#d2h-210838-2305"> <div class="line-num1">77</div> <div class="line-num2">81</div> </a></td> <td class="d2h-cntx"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">&nbsp;</span> <span class="d2h-code-line-ctn"> # in the desired order.</span> </div> </td> </tr><tr> <td id="d2h-210838-2316" class="d2h-code-linenumber d2h-cntx"><a href="#d2h-210838-2316"> <div class="line-num1">78</div> <div class="line-num2">82</div> </a></td> <td class="d2h-cntx"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">&nbsp;</span> <span class="d2h-code-line-ctn"> # @param [::String] attr_in_length give attributes to compute length on.</span> </div> </td> </tr><tr> <td id="d2h-210838-2327" class="d2h-code-linenumber d2h-cntx"><a href="#d2h-210838-2327"> <div class="line-num1">79</div> <div class="line-num2">83</div> </a></td> <td class="d2h-cntx"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">&nbsp;</span> <span class="d2h-code-line-ctn"> # @return [Class]</span> </div> </td> </tr><tr> <td id="d2h-210838-2338" class="d2h-code-linenumber d2h-ins"><a href="#d2h-210838-2338"> <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 [Error] Called on {AbstractTLV} subclass</span> </div> </td> </tr><tr> <td id="d2h-210838-2349" class="d2h-code-linenumber d2h-cntx"><a href="#d2h-210838-2349"> <div class="line-num1">80</div> <div class="line-num2">85</div> </a></td> <td class="d2h-cntx"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">&nbsp;</span> <span class="d2h-code-line-ctn"> def create(type_class: Int8Enum, length_class: Int8, value_class: String,</span> </div> </td> </tr><tr> <td id="d2h-210838-2360" class="d2h-code-linenumber d2h-cntx"><a href="#d2h-210838-2360"> <div class="line-num1">81</div> <div class="line-num2">86</div> </a></td> <td class="d2h-cntx"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">&nbsp;</span> <span class="d2h-code-line-ctn"> aliases: {}, attr_order: &#x27;TLV&#x27;, attr_in_length: &#x27;V&#x27;)</span> </div> </td> </tr><tr> <td id="d2h-210838-2371" class="d2h-code-linenumber d2h-cntx"><a href="#d2h-210838-2371"> <div class="line-num1">82</div> <div class="line-num2">87</div> </a></td> <td class="d2h-cntx"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">&nbsp;</span> <span class="d2h-code-line-ctn"> unless equal?(AbstractTLV)</span> </div> </td> </tr><tr> <td id="d2h-210838-2382" class="d2h-code-linenumber d2h-cntx"><a href="#d2h-210838-2382"> <div class="line-num1">83</div> <div class="line-num2">88</div> </a></td> <td class="d2h-cntx"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">&nbsp;</span> <span class="d2h-code-line-ctn"> raise Error,</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"> &#x27;.create cannot be called on a subclass of <del>PacketGen</del>::<del>Types::</del>AbstractTLV&#x27;</span> </div> </td> </tr><tr> <td class="d2h-code-linenumber d2h-ins d2h-change"> <div class="line-num1"></div> <div class="line-num2">89</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"> &#x27;.create cannot be called on a subclass of <ins>BinStruct</ins>::AbstractTLV&#x27;</span> </div> </td> </tr><tr> <td id="d2h-210838-2415" class="d2h-code-linenumber d2h-cntx"><a href="#d2h-210838-2415"> <div class="line-num1">85</div> <div class="line-num2">90</div> </a></td> <td class="d2h-cntx"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">&nbsp;</span> <span class="d2h-code-line-ctn"> end</span> </div> </td> </tr><tr> <td id="d2h-210838-2426" class="d2h-code-linenumber d2h-cntx"><a href="#d2h-210838-2426"> <div class="line-num1">86</div> <div class="line-num2">91</div> </a></td> <td class="d2h-cntx"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">&nbsp;</span> <span class="d2h-code-line-ctn"><br></span> </div> </td> </tr><tr> <td id="d2h-210838-2437" class="d2h-code-linenumber d2h-cntx"><a href="#d2h-210838-2437"> <div class="line-num1">87</div> <div class="line-num2">92</div> </a></td> <td class="d2h-cntx"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">&nbsp;</span> <span class="d2h-code-line-ctn"> klass = Class.new(self)</span> </div> </td> </tr> <tr> <td class="d2h-code-linenumber d2h-info"></td> <td class="d2h-info"> <div class="d2h-code-line">@@ -91,7 +96,7 @@ module BinStruct</div> </td> </tr><tr> <td id="d2h-210838-2454" class="d2h-code-linenumber d2h-cntx"><a href="#d2h-210838-2454"> <div class="line-num1">91</div> <div class="line-num2">96</div> </a></td> <td class="d2h-cntx"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">&nbsp;</span> <span class="d2h-code-line-ctn"> check_attr_in_length(attr_in_length)</span> </div> </td> </tr><tr> <td id="d2h-210838-2465" class="d2h-code-linenumber d2h-cntx"><a href="#d2h-210838-2465"> <div class="line-num1">92</div> <div class="line-num2">97</div> </a></td> <td class="d2h-cntx"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">&nbsp;</span> <span class="d2h-code-line-ctn"> check_attr_order(attr_order)</span> </div> </td> </tr><tr> <td id="d2h-210838-2476" class="d2h-code-linenumber d2h-cntx"><a href="#d2h-210838-2476"> <div class="line-num1">93</div> <div class="line-num2">98</div> </a></td> <td class="d2h-cntx"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">&nbsp;</span> <span class="d2h-code-line-ctn"> generate_attributes(klass, attr_order, type_class, length_class, value_class)</span> </div> </td> </tr><tr> <td class="d2h-code-linenumber d2h-del d2h-change"> <div class="line-num1">94</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-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> generate_aliases_for(klass, aliases)</ins></span> </div> </td> </tr><tr> <td id="d2h-210838-2509" class="d2h-code-linenumber d2h-cntx"><a href="#d2h-210838-2509"> <div class="line-num1">95</div> <div class="line-num2">100</div> </a></td> <td class="d2h-cntx"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">&nbsp;</span> <span class="d2h-code-line-ctn"> aliases.each do |al, orig|</span> </div> </td> </tr><tr> <td id="d2h-210838-2520" class="d2h-code-linenumber d2h-cntx"><a href="#d2h-210838-2520"> <div class="line-num1">96</div> <div class="line-num2">101</div> </a></td> <td class="d2h-cntx"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">&nbsp;</span> <span class="d2h-code-line-ctn"> klass.instance_eval do</span> </div> </td> </tr><tr> <td id="d2h-210838-2531" class="d2h-code-linenumber d2h-cntx"><a href="#d2h-210838-2531"> <div class="line-num1">97</div> <div class="line-num2">102</div> </a></td> <td class="d2h-cntx"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">&nbsp;</span> <span class="d2h-code-line-ctn"> alias_method al, orig if klass.method_defined?(orig)</span> </div> </td> </tr> <tr> <td class="d2h-code-linenumber d2h-info"></td> <td class="d2h-info"> <div class="d2h-code-line">@@ -103,6 +108,50 @@ module BinStruct</div> </td> </tr><tr> <td id="d2h-210838-2548" class="d2h-code-linenumber d2h-cntx"><a href="#d2h-210838-2548"> <div class="line-num1">103</div> <div class="line-num2">108</div> </a></td> <td class="d2h-cntx"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">&nbsp;</span> <span class="d2h-code-line-ctn"> end</span> </div> </td> </tr><tr> <td id="d2h-210838-2559" class="d2h-code-linenumber d2h-cntx"><a href="#d2h-210838-2559"> <div class="line-num1">104</div> <div class="line-num2">109</div> </a></td> <td class="d2h-cntx"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">&nbsp;</span> <span class="d2h-code-line-ctn"> # rubocop:enable Metrics&#x2F;ParameterLists</span> </div> </td> </tr><tr> <td id="d2h-210838-2570" class="d2h-code-linenumber d2h-cntx"><a href="#d2h-210838-2570"> <div class="line-num1">105</div> <div class="line-num2">110</div> </a></td> <td class="d2h-cntx"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">&nbsp;</span> <span class="d2h-code-line-ctn"><br></span> </div> </td> </tr><tr> <td id="d2h-210838-2581" class="d2h-code-linenumber d2h-ins"><a href="#d2h-210838-2581"> <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"> # On inheritage, copy aliases and attr_in_length</span> </div> </td> </tr><tr> <td id="d2h-210838-2592" class="d2h-code-linenumber d2h-ins"><a href="#d2h-210838-2592"> <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"> # @param [Class] klass inheriting class</span> </div> </td> </tr><tr> <td id="d2h-210838-2603" class="d2h-code-linenumber d2h-ins"><a href="#d2h-210838-2603"> <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"> # @return [void]</span> </div> </td> </tr><tr> <td id="d2h-210838-2614" class="d2h-code-linenumber d2h-ins"><a href="#d2h-210838-2614"> <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"> # @since 0.4.0</span> </div> </td> </tr><tr> <td id="d2h-210838-2625" class="d2h-code-linenumber d2h-ins"><a href="#d2h-210838-2625"> <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"> # @author LemonTree55</span> </div> </td> </tr><tr> <td id="d2h-210838-2636" class="d2h-code-linenumber d2h-ins"><a href="#d2h-210838-2636"> <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"> def inherited(klass)</span> </div> </td> </tr><tr> <td id="d2h-210838-2647" class="d2h-code-linenumber d2h-ins"><a href="#d2h-210838-2647"> <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"> super</span> </div> </td> </tr><tr> <td id="d2h-210838-2658" class="d2h-code-linenumber d2h-ins"><a href="#d2h-210838-2658"> <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"><br></span> </div> </td> </tr><tr> <td id="d2h-210838-2669" class="d2h-code-linenumber d2h-ins"><a href="#d2h-210838-2669"> <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"> aliases = @aliases.clone</span> </div> </td> </tr><tr> <td id="d2h-210838-2680" class="d2h-code-linenumber d2h-ins"><a href="#d2h-210838-2680"> <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"> attr_in_length = @attr_in_length.clone</span> </div> </td> </tr><tr> <td id="d2h-210838-2691" class="d2h-code-linenumber d2h-ins"><a href="#d2h-210838-2691"> <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-210838-2702" class="d2h-code-linenumber d2h-ins"><a href="#d2h-210838-2702"> <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"> klass.class_eval do</span> </div> </td> </tr><tr> <td id="d2h-210838-2713" class="d2h-code-linenumber d2h-ins"><a href="#d2h-210838-2713"> <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"> @aliases = aliases</span> </div> </td> </tr><tr> <td id="d2h-210838-2724" class="d2h-code-linenumber d2h-ins"><a href="#d2h-210838-2724"> <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"> @attr_in_length = attr_in_length</span> </div> </td> </tr><tr> <td id="d2h-210838-2735" class="d2h-code-linenumber d2h-ins"><a href="#d2h-210838-2735"> <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"> end</span> </div> </td> </tr><tr> <td id="d2h-210838-2746" class="d2h-code-linenumber d2h-ins"><a href="#d2h-210838-2746"> <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"> end</span> </div> </td> </tr><tr> <td id="d2h-210838-2757" class="d2h-code-linenumber d2h-ins"><a href="#d2h-210838-2757"> <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"><br></span> </div> </td> </tr><tr> <td id="d2h-210838-2768" class="d2h-code-linenumber d2h-ins"><a href="#d2h-210838-2768"> <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"> # Derive a new TLV class from an existing one</span> </div> </td> </tr><tr> <td id="d2h-210838-2779" class="d2h-code-linenumber d2h-ins"><a href="#d2h-210838-2779"> <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"> # @param [Class,nil] type_class New class to use for +type+. Unchanged if +nil+.</span> </div> </td> </tr><tr> <td id="d2h-210838-2790" class="d2h-code-linenumber d2h-ins"><a href="#d2h-210838-2790"> <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"> # @param [Class,nil] length_class New class to use for +length+. Unchanged if +nil+.</span> </div> </td> </tr><tr> <td id="d2h-210838-2801" class="d2h-code-linenumber d2h-ins"><a href="#d2h-210838-2801"> <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"> # @param [Class,nil] value_class New class to use for +value+. Unchanged if +nil+.</span> </div> </td> </tr><tr> <td id="d2h-210838-2812" class="d2h-code-linenumber d2h-ins"><a href="#d2h-210838-2812"> <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"> # @return [Class]</span> </div> </td> </tr><tr> <td id="d2h-210838-2823" class="d2h-code-linenumber d2h-ins"><a href="#d2h-210838-2823"> <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"> # @raise [Error] Called on {AbstractTLV} class</span> </div> </td> </tr><tr> <td id="d2h-210838-2834" class="d2h-code-linenumber d2h-ins"><a href="#d2h-210838-2834"> <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"> # @since 0.4.0</span> </div> </td> </tr><tr> <td id="d2h-210838-2845" class="d2h-code-linenumber d2h-ins"><a href="#d2h-210838-2845"> <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"> # @author LemonTree55</span> </div> </td> </tr><tr> <td id="d2h-210838-2856" class="d2h-code-linenumber d2h-ins"><a href="#d2h-210838-2856"> <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"> # @example</span> </div> </td> </tr><tr> <td id="d2h-210838-2867" class="d2h-code-linenumber d2h-ins"><a href="#d2h-210838-2867"> <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"> # # TLV with type and length on 16 bits, value is a BinStruct::String</span> </div> </td> </tr><tr> <td id="d2h-210838-2878" class="d2h-code-linenumber d2h-ins"><a href="#d2h-210838-2878"> <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"> # FirstTLV = BinStruct::AbstractTLV.create(type_class: BinStruct::Int16, length_class: BinStruct::Int16)</span> </div> </td> </tr><tr> <td id="d2h-210838-2889" class="d2h-code-linenumber d2h-ins"><a href="#d2h-210838-2889"> <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"> # # TLV with same type and length classes than FirstTLV, but value is an array of Int8</span> </div> </td> </tr><tr> <td id="d2h-210838-2900" class="d2h-code-linenumber d2h-ins"><a href="#d2h-210838-2900"> <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"> # SecondTLV = FirstTLV.derive(value_class: BinStruct::ArrayOfInt8)</span> </div> </td> </tr><tr> <td id="d2h-210838-2911" class="d2h-code-linenumber d2h-ins"><a href="#d2h-210838-2911"> <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"> def derive(type_class: nil, length_class: nil, value_class: nil, aliases: {})</span> </div> </td> </tr><tr> <td id="d2h-210838-2922" class="d2h-code-linenumber d2h-ins"><a href="#d2h-210838-2922"> <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"> raise Error, &quot;.derive cannot be called on #{name}&quot; if equal?(AbstractTLV)</span> </div> </td> </tr><tr> <td id="d2h-210838-2933" class="d2h-code-linenumber d2h-ins"><a href="#d2h-210838-2933"> <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"><br></span> </div> </td> </tr><tr> <td id="d2h-210838-2944" class="d2h-code-linenumber d2h-ins"><a href="#d2h-210838-2944"> <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"> klass = Class.new(self)</span> </div> </td> </tr><tr> <td id="d2h-210838-2955" class="d2h-code-linenumber d2h-ins"><a href="#d2h-210838-2955"> <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"> klass.aliases.merge!(aliases)</span> </div> </td> </tr><tr> <td id="d2h-210838-2966" class="d2h-code-linenumber d2h-ins"><a href="#d2h-210838-2966"> <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"> generate_aliases_for(klass, aliases)</span> </div> </td> </tr><tr> <td id="d2h-210838-2977" class="d2h-code-linenumber d2h-ins"><a href="#d2h-210838-2977"> <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"><br></span> </div> </td> </tr><tr> <td id="d2h-210838-2988" class="d2h-code-linenumber d2h-ins"><a href="#d2h-210838-2988"> <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"> klass.attr_defs[:type].type = type_class unless type_class.nil?</span> </div> </td> </tr><tr> <td id="d2h-210838-2999" class="d2h-code-linenumber d2h-ins"><a href="#d2h-210838-2999"> <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"> klass.attr_defs[:length].type = length_class unless length_class.nil?</span> </div> </td> </tr><tr> <td id="d2h-210838-3010" class="d2h-code-linenumber d2h-ins"><a href="#d2h-210838-3010"> <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"> klass.attr_defs[:value].type = value_class unless value_class.nil?</span> </div> </td> </tr><tr> <td id="d2h-210838-3021" class="d2h-code-linenumber d2h-ins"><a href="#d2h-210838-3021"> <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"><br></span> </div> </td> </tr><tr> <td id="d2h-210838-3032" class="d2h-code-linenumber d2h-ins"><a href="#d2h-210838-3032"> <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"> klass</span> </div> </td> </tr><tr> <td id="d2h-210838-3043" class="d2h-code-linenumber d2h-ins"><a href="#d2h-210838-3043"> <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"> end</span> </div> </td> </tr><tr> <td id="d2h-210838-3054" class="d2h-code-linenumber d2h-ins"><a href="#d2h-210838-3054"> <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"><br></span> </div> </td> </tr><tr> <td id="d2h-210838-3065" class="d2h-code-linenumber d2h-cntx"><a href="#d2h-210838-3065"> <div class="line-num1">106</div> <div class="line-num2">155</div> </a></td> <td class="d2h-cntx"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">&nbsp;</span> <span class="d2h-code-line-ctn"> # @!attribute type</span> </div> </td> </tr><tr> <td id="d2h-210838-3076" class="d2h-code-linenumber d2h-cntx"><a href="#d2h-210838-3076"> <div class="line-num1">107</div> <div class="line-num2">156</div> </a></td> <td class="d2h-cntx"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">&nbsp;</span> <span class="d2h-code-line-ctn"> # @abstract</span> </div> </td> </tr><tr> <td id="d2h-210838-3087" class="d2h-code-linenumber d2h-cntx"><a href="#d2h-210838-3087"> <div class="line-num1">108</div> <div class="line-num2">157</div> </a></td> <td class="d2h-cntx"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">&nbsp;</span> <span class="d2h-code-line-ctn"> # Type attribute for real TLV class</span> </div> </td> </tr> <tr> <td class="d2h-code-linenumber d2h-info"></td> <td class="d2h-info"> <div class="d2h-code-line">@@ -168,6 +217,15 @@ module BinStruct</div> </td> </tr><tr> <td id="d2h-210838-3104" class="d2h-code-linenumber d2h-cntx"><a href="#d2h-210838-3104"> <div class="line-num1">168</div> <div class="line-num2">217</div> </a></td> <td class="d2h-cntx"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">&nbsp;</span> <span class="d2h-code-line-ctn"> end</span> </div> </td> </tr><tr> <td id="d2h-210838-3115" class="d2h-code-linenumber d2h-cntx"><a href="#d2h-210838-3115"> <div class="line-num1">169</div> <div class="line-num2">218</div> </a></td> <td class="d2h-cntx"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">&nbsp;</span> <span class="d2h-code-line-ctn"> end</span> </div> </td> </tr><tr> <td id="d2h-210838-3126" class="d2h-code-linenumber d2h-cntx"><a href="#d2h-210838-3126"> <div class="line-num1">170</div> <div class="line-num2">219</div> </a></td> <td class="d2h-cntx"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">&nbsp;</span> <span class="d2h-code-line-ctn"> end</span> </div> </td> </tr><tr> <td id="d2h-210838-3137" class="d2h-code-linenumber d2h-ins"><a href="#d2h-210838-3137"> <div class="line-num1"></div> <div class="line-num2">220</div> </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-210838-3148" class="d2h-code-linenumber d2h-ins"><a href="#d2h-210838-3148"> <div class="line-num1"></div> <div class="line-num2">221</div> </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 generate_aliases_for(klass, aliases)</span> </div> </td> </tr><tr> <td id="d2h-210838-3159" class="d2h-code-linenumber d2h-ins"><a href="#d2h-210838-3159"> <div class="line-num1"></div> <div class="line-num2">222</div> </a></td> <td class="d2h-ins"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn"> aliases.each do |al, orig|</span> </div> </td> </tr><tr> <td id="d2h-210838-3170" class="d2h-code-linenumber d2h-ins"><a href="#d2h-210838-3170"> <div class="line-num1"></div> <div class="line-num2">223</div> </a></td> <td class="d2h-ins"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn"> klass.instance_eval do</span> </div> </td> </tr><tr> <td id="d2h-210838-3181" class="d2h-code-linenumber d2h-ins"><a href="#d2h-210838-3181"> <div class="line-num1"></div> <div class="line-num2">224</div> </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_method al, orig if klass.method_defined?(orig)</span> </div> </td> </tr><tr> <td id="d2h-210838-3192" class="d2h-code-linenumber d2h-ins"><a href="#d2h-210838-3192"> <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"> alias_method :&quot;#{al}=&quot;, :&quot;#{orig}=&quot; if klass.method_defined?(:&quot;#{orig}=&quot;)</span> </div> </td> </tr><tr> <td id="d2h-210838-3203" class="d2h-code-linenumber d2h-ins"><a href="#d2h-210838-3203"> <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"> end</span> </div> </td> </tr><tr> <td id="d2h-210838-3214" class="d2h-code-linenumber d2h-ins"><a href="#d2h-210838-3214"> <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"> end</span> </div> </td> </tr><tr> <td id="d2h-210838-3225" class="d2h-code-linenumber d2h-ins"><a href="#d2h-210838-3225"> <div class="line-num1"></div> <div class="line-num2">228</div> </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-210838-3236" class="d2h-code-linenumber d2h-cntx"><a href="#d2h-210838-3236"> <div class="line-num1">171</div> <div class="line-num2">229</div> </a></td> <td class="d2h-cntx"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">&nbsp;</span> <span class="d2h-code-line-ctn"> end</span> </div> </td> </tr><tr> <td id="d2h-210838-3247" class="d2h-code-linenumber d2h-cntx"><a href="#d2h-210838-3247"> <div class="line-num1">172</div> <div class="line-num2">230</div> </a></td> <td class="d2h-cntx"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">&nbsp;</span> <span class="d2h-code-line-ctn"><br></span> </div> </td> </tr><tr> <td id="d2h-210838-3258" class="d2h-code-linenumber d2h-cntx"><a href="#d2h-210838-3258"> <div class="line-num1">173</div> <div class="line-num2">231</div> </a></td> <td class="d2h-cntx"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">&nbsp;</span> <span class="d2h-code-line-ctn"> # @!attribute type</span> </div> </td> </tr> </tbody> </table> </div> </div> </div> <div id="d2h-989240" 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-989240">data/lib/bin_struct/array.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">@@ -9,7 +9,7 @@</div> </td> </tr><tr> <td id="d2h-989240-3296" class="d2h-code-linenumber d2h-cntx"><a href="#d2h-989240-3296"> <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">&nbsp;</span> <span class="d2h-code-line-ctn">require &#x27;forwardable&#x27;</span> </div> </td> </tr><tr> <td id="d2h-989240-3307" class="d2h-code-linenumber d2h-cntx"><a href="#d2h-989240-3307"> <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">&nbsp;</span> <span class="d2h-code-line-ctn"><br></span> </div> </td> </tr><tr> <td id="d2h-989240-3318" class="d2h-code-linenumber d2h-cntx"><a href="#d2h-989240-3318"> <div class="line-num1">11</div> <div class="line-num2">11</div> </a></td> <td class="d2h-cntx"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">&nbsp;</span> <span class="d2h-code-line-ctn">module BinStruct</span> </div> </td> </tr><tr> <td class="d2h-code-linenumber d2h-del d2h-change"> <div class="line-num1">12</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"> # @abstract Base class to define set of {<del>Struct</del>} subclasses.</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"> # @abstract Base class to define set of {<ins>Structable</ins>} subclasses.</span> </div> </td> </tr><tr> <td id="d2h-989240-3351" class="d2h-code-linenumber d2h-cntx"><a href="#d2h-989240-3351"> <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">&nbsp;</span> <span class="d2h-code-line-ctn"> #</span> </div> </td> </tr><tr> <td id="d2h-989240-3362" class="d2h-code-linenumber d2h-cntx"><a href="#d2h-989240-3362"> <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">&nbsp;</span> <span class="d2h-code-line-ctn"> # This class mimics regular Ruby Array, but it is {Structable} and responds to {LengthFrom}.</span> </div> </td> </tr><tr> <td id="d2h-989240-3373" class="d2h-code-linenumber d2h-cntx"><a href="#d2h-989240-3373"> <div class="line-num1">15</div> <div class="line-num2">15</div> </a></td> <td class="d2h-cntx"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">&nbsp;</span> <span class="d2h-code-line-ctn"> #</span> </div> </td> </tr> <tr> <td class="d2h-code-linenumber d2h-info"></td> <td class="d2h-info"> <div class="d2h-code-line">@@ -44,10 +44,11 @@ module BinStruct</div> </td> </tr><tr> <td id="d2h-989240-3390" class="d2h-code-linenumber d2h-cntx"><a href="#d2h-989240-3390"> <div class="line-num1">44</div> <div class="line-num2">44</div> </a></td> <td class="d2h-cntx"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">&nbsp;</span> <span class="d2h-code-line-ctn"> # @!method clear</span> </div> </td> </tr><tr> <td id="d2h-989240-3401" class="d2h-code-linenumber d2h-cntx"><a href="#d2h-989240-3401"> <div class="line-num1">45</div> <div class="line-num2">45</div> </a></td> <td class="d2h-cntx"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">&nbsp;</span> <span class="d2h-code-line-ctn"> # Clear array.</span> </div> </td> </tr><tr> <td id="d2h-989240-3412" class="d2h-code-linenumber d2h-cntx"><a href="#d2h-989240-3412"> <div class="line-num1">46</div> <div class="line-num2">46</div> </a></td> <td class="d2h-cntx"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">&nbsp;</span> <span class="d2h-code-line-ctn"> # @return [void]</span> </div> </td> </tr><tr> <td id="d2h-989240-3423" class="d2h-code-linenumber d2h-ins"><a href="#d2h-989240-3423"> <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"> # @see #clear!</span> </div> </td> </tr><tr> <td id="d2h-989240-3434" class="d2h-code-linenumber d2h-cntx"><a href="#d2h-989240-3434"> <div class="line-num1">47</div> <div class="line-num2">48</div> </a></td> <td class="d2h-cntx"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">&nbsp;</span> <span class="d2h-code-line-ctn"> # @!method each</span> </div> </td> </tr><tr> <td id="d2h-989240-3445" class="d2h-code-linenumber d2h-cntx"><a href="#d2h-989240-3445"> <div class="line-num1">48</div> <div class="line-num2">49</div> </a></td> <td class="d2h-cntx"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">&nbsp;</span> <span class="d2h-code-line-ctn"> # Calls the given block once for each element in self, passing that</span> </div> </td> </tr><tr> <td class="d2h-code-linenumber d2h-del d2h-change"> <div class="line-num1">49</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"> # element as a parameter. Returns the array itself.</span> </div> </td> </tr><tr> <td class="d2h-code-linenumber d2h-del d2h-change"> <div class="line-num1">50</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 [::Array]</span> </div> </td> </tr><tr> <td class="d2h-code-linenumber d2h-ins d2h-change"> <div class="line-num1"></div> <div class="line-num2">50</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"> # element as a parameter. Returns the array itself<ins>, or an enumerator if no block is given</ins>.</span> </div> </td> </tr><tr> <td class="d2h-code-linenumber d2h-ins d2h-change"> <div class="line-num1"></div> <div class="line-num2">51</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 [::Array<ins>, Enumerator</ins>]</span> </div> </td> </tr><tr> <td id="d2h-989240-3500" class="d2h-code-linenumber d2h-cntx"><a href="#d2h-989240-3500"> <div class="line-num1">51</div> <div class="line-num2">52</div> </a></td> <td class="d2h-cntx"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">&nbsp;</span> <span class="d2h-code-line-ctn"> # @method empty?</span> </div> </td> </tr><tr> <td id="d2h-989240-3511" class="d2h-code-linenumber d2h-cntx"><a href="#d2h-989240-3511"> <div class="line-num1">52</div> <div class="line-num2">53</div> </a></td> <td class="d2h-cntx"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">&nbsp;</span> <span class="d2h-code-line-ctn"> # Return +true+ if contains no element.</span> </div> </td> </tr><tr> <td id="d2h-989240-3522" class="d2h-code-linenumber d2h-cntx"><a href="#d2h-989240-3522"> <div class="line-num1">53</div> <div class="line-num2">54</div> </a></td> <td class="d2h-cntx"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">&nbsp;</span> <span class="d2h-code-line-ctn"> # @return [Boolean]</span> </div> </td> </tr> <tr> <td class="d2h-code-linenumber d2h-info"></td> <td class="d2h-info"> <div class="d2h-code-line">@@ -86,6 +87,23 @@ module BinStruct</div> </td> </tr><tr> <td id="d2h-989240-3539" class="d2h-code-linenumber d2h-cntx"><a href="#d2h-989240-3539"> <div class="line-num1">86</div> <div class="line-num2">87</div> </a></td> <td class="d2h-cntx"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">&nbsp;</span> <span class="d2h-code-line-ctn"><br></span> </div> </td> </tr><tr> <td id="d2h-989240-3550" class="d2h-code-linenumber d2h-cntx"><a href="#d2h-989240-3550"> <div class="line-num1">87</div> <div class="line-num2">88</div> </a></td> <td class="d2h-cntx"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">&nbsp;</span> <span class="d2h-code-line-ctn"> # @param [Hash] options</span> </div> </td> </tr><tr> <td id="d2h-989240-3561" class="d2h-code-linenumber d2h-cntx"><a href="#d2h-989240-3561"> <div class="line-num1">88</div> <div class="line-num2">89</div> </a></td> <td class="d2h-cntx"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">&nbsp;</span> <span class="d2h-code-line-ctn"> # @option options [Int] counter Int object used as a counter for this set</span> </div> </td> </tr><tr> <td id="d2h-989240-3572" class="d2h-code-linenumber d2h-ins"><a href="#d2h-989240-3572"> <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"> # @example counter example</span> </div> </td> </tr><tr> <td id="d2h-989240-3583" class="d2h-code-linenumber d2h-ins"><a href="#d2h-989240-3583"> <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"> # # Define a counter</span> </div> </td> </tr><tr> <td id="d2h-989240-3594" class="d2h-code-linenumber d2h-ins"><a href="#d2h-989240-3594"> <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"> # counter = BinStruct::Int8.new</span> </div> </td> </tr><tr> <td id="d2h-989240-3605" class="d2h-code-linenumber d2h-ins"><a href="#d2h-989240-3605"> <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"> # counter.to_i # =&gt; 0</span> </div> </td> </tr><tr> <td id="d2h-989240-3616" class="d2h-code-linenumber d2h-ins"><a href="#d2h-989240-3616"> <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"> #</span> </div> </td> </tr><tr> <td id="d2h-989240-3627" class="d2h-code-linenumber d2h-ins"><a href="#d2h-989240-3627"> <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"> # # Define an array with associated counter</span> </div> </td> </tr><tr> <td id="d2h-989240-3638" class="d2h-code-linenumber d2h-ins"><a href="#d2h-989240-3638"> <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"> # ary = BinStruct::ArrayOfInt8.new(counter: counter)</span> </div> </td> </tr><tr> <td id="d2h-989240-3649" class="d2h-code-linenumber d2h-ins"><a href="#d2h-989240-3649"> <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"> # # Add 2 elements to arry, increment counter twice</span> </div> </td> </tr><tr> <td id="d2h-989240-3660" class="d2h-code-linenumber d2h-ins"><a href="#d2h-989240-3660"> <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"> # ary.read([1, 2])</span> </div> </td> </tr><tr> <td id="d2h-989240-3671" class="d2h-code-linenumber d2h-ins"><a href="#d2h-989240-3671"> <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"> # counter.to_i #=&gt; 2</span> </div> </td> </tr><tr> <td id="d2h-989240-3682" class="d2h-code-linenumber d2h-ins"><a href="#d2h-989240-3682"> <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"> # # Add a third element</span> </div> </td> </tr><tr> <td id="d2h-989240-3693" class="d2h-code-linenumber d2h-ins"><a href="#d2h-989240-3693"> <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"> # ary &lt;&lt; BinStruct::Int8.new(value: 42)</span> </div> </td> </tr><tr> <td id="d2h-989240-3704" class="d2h-code-linenumber d2h-ins"><a href="#d2h-989240-3704"> <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"> # counter.to_i #=&gt; 3</span> </div> </td> </tr><tr> <td id="d2h-989240-3715" class="d2h-code-linenumber d2h-ins"><a href="#d2h-989240-3715"> <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"> #</span> </div> </td> </tr><tr> <td id="d2h-989240-3726" class="d2h-code-linenumber d2h-ins"><a href="#d2h-989240-3726"> <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"> # # push does not increment the counter</span> </div> </td> </tr><tr> <td id="d2h-989240-3737" class="d2h-code-linenumber d2h-ins"><a href="#d2h-989240-3737"> <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"> # ary.push(BinStruct::Int8.new(value: 100))</span> </div> </td> </tr><tr> <td id="d2h-989240-3748" class="d2h-code-linenumber d2h-ins"><a href="#d2h-989240-3748"> <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"> # counter.to_i #=&gt; 3</span> </div> </td> </tr><tr> <td id="d2h-989240-3759" class="d2h-code-linenumber d2h-cntx"><a href="#d2h-989240-3759"> <div class="line-num1">89</div> <div class="line-num2">107</div> </a></td> <td class="d2h-cntx"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">&nbsp;</span> <span class="d2h-code-line-ctn"> def initialize(options = {})</span> </div> </td> </tr><tr> <td id="d2h-989240-3770" class="d2h-code-linenumber d2h-cntx"><a href="#d2h-989240-3770"> <div class="line-num1">90</div> <div class="line-num2">108</div> </a></td> <td class="d2h-cntx"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">&nbsp;</span> <span class="d2h-code-line-ctn"> @counter = options[:counter]</span> </div> </td> </tr><tr> <td id="d2h-989240-3781" class="d2h-code-linenumber d2h-cntx"><a href="#d2h-989240-3781"> <div class="line-num1">91</div> <div class="line-num2">109</div> </a></td> <td class="d2h-cntx"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">&nbsp;</span> <span class="d2h-code-line-ctn"> @array = []</span> </div> </td> </tr> <tr> <td class="d2h-code-linenumber d2h-info"></td> <td class="d2h-info"> <div class="d2h-code-line">@@ -112,6 +130,7 @@ module BinStruct</div> </td> </tr><tr> <td id="d2h-989240-3798" class="d2h-code-linenumber d2h-cntx"><a href="#d2h-989240-3798"> <div class="line-num1">112</div> <div class="line-num2">130</div> </a></td> <td class="d2h-cntx"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">&nbsp;</span> <span class="d2h-code-line-ctn"><br></span> </div> </td> </tr><tr> <td id="d2h-989240-3809" class="d2h-code-linenumber d2h-cntx"><a href="#d2h-989240-3809"> <div class="line-num1">113</div> <div class="line-num2">131</div> </a></td> <td class="d2h-cntx"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">&nbsp;</span> <span class="d2h-code-line-ctn"> # Clear array. Reset associated counter, if any.</span> </div> </td> </tr><tr> <td id="d2h-989240-3820" class="d2h-code-linenumber d2h-cntx"><a href="#d2h-989240-3820"> <div class="line-num1">114</div> <div class="line-num2">132</div> </a></td> <td class="d2h-cntx"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">&nbsp;</span> <span class="d2h-code-line-ctn"> # @return [void]</span> </div> </td> </tr><tr> <td id="d2h-989240-3831" class="d2h-code-linenumber d2h-ins"><a href="#d2h-989240-3831"> <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"> # @see #clear</span> </div> </td> </tr><tr> <td id="d2h-989240-3842" class="d2h-code-linenumber d2h-cntx"><a href="#d2h-989240-3842"> <div class="line-num1">115</div> <div class="line-num2">134</div> </a></td> <td class="d2h-cntx"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">&nbsp;</span> <span class="d2h-code-line-ctn"> def clear!</span> </div> </td> </tr><tr> <td id="d2h-989240-3853" class="d2h-code-linenumber d2h-cntx"><a href="#d2h-989240-3853"> <div class="line-num1">116</div> <div class="line-num2">135</div> </a></td> <td class="d2h-cntx"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">&nbsp;</span> <span class="d2h-code-line-ctn"> @array.clear</span> </div> </td> </tr><tr> <td id="d2h-989240-3864" class="d2h-code-linenumber d2h-cntx"><a href="#d2h-989240-3864"> <div class="line-num1">117</div> <div class="line-num2">136</div> </a></td> <td class="d2h-cntx"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">&nbsp;</span> <span class="d2h-code-line-ctn"> @counter&amp;.from_human(0)</span> </div> </td> </tr> <tr> <td class="d2h-code-linenumber d2h-info"></td> <td class="d2h-info"> <div class="d2h-code-line">@@ -137,7 +156,8 @@ module BinStruct</div> </td> </tr><tr> <td id="d2h-989240-3881" class="d2h-code-linenumber d2h-cntx"><a href="#d2h-989240-3881"> <div class="line-num1">137</div> <div class="line-num2">156</div> </a></td> <td class="d2h-cntx"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">&nbsp;</span> <span class="d2h-code-line-ctn"><br></span> </div> </td> </tr><tr> <td id="d2h-989240-3892" class="d2h-code-linenumber d2h-cntx"><a href="#d2h-989240-3892"> <div class="line-num1">138</div> <div class="line-num2">157</div> </a></td> <td class="d2h-cntx"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">&nbsp;</span> <span class="d2h-code-line-ctn"> # @abstract depend on private method +#record_from_hash+ which should be</span> </div> </td> </tr><tr> <td id="d2h-989240-3903" class="d2h-code-linenumber d2h-cntx"><a href="#d2h-989240-3903"> <div class="line-num1">139</div> <div class="line-num2">158</div> </a></td> <td class="d2h-cntx"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">&nbsp;</span> <span class="d2h-code-line-ctn"> # declared by subclasses.</span> </div> </td> </tr><tr> <td class="d2h-code-linenumber d2h-del d2h-change"> <div class="line-num1">140</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"> # Add an object to this array. Do not update associated counter.</span> </div> </td> </tr><tr> <td class="d2h-code-linenumber d2h-ins d2h-change"> <div class="line-num1"></div> <div class="line-num2">159</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"> # Add an object to this array. Do not update associated counter.<ins> If associated must be incremented, use</ins></span> </div> </td> </tr><tr> <td id="d2h-989240-3936" class="d2h-code-linenumber d2h-ins"><a href="#d2h-989240-3936"> <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"> # {#&lt;&lt;}</span> </div> </td> </tr><tr> <td id="d2h-989240-3947" class="d2h-code-linenumber d2h-cntx"><a href="#d2h-989240-3947"> <div class="line-num1">141</div> <div class="line-num2">161</div> </a></td> <td class="d2h-cntx"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">&nbsp;</span> <span class="d2h-code-line-ctn"> # @param [Object] obj type depends on subclass</span> </div> </td> </tr><tr> <td id="d2h-989240-3958" class="d2h-code-linenumber d2h-cntx"><a href="#d2h-989240-3958"> <div class="line-num1">142</div> <div class="line-num2">162</div> </a></td> <td class="d2h-cntx"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">&nbsp;</span> <span class="d2h-code-line-ctn"> # @return [self]</span> </div> </td> </tr><tr> <td id="d2h-989240-3969" class="d2h-code-linenumber d2h-cntx"><a href="#d2h-989240-3969"> <div class="line-num1">143</div> <div class="line-num2">163</div> </a></td> <td class="d2h-cntx"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">&nbsp;</span> <span class="d2h-code-line-ctn"> # @see #&lt;&lt;</span> </div> </td> </tr> <tr> <td class="d2h-code-linenumber d2h-info"></td> <td class="d2h-info"> <div class="d2h-code-line">@@ -154,9 +174,11 @@ module BinStruct</div> </td> </tr><tr> <td id="d2h-989240-3986" class="d2h-code-linenumber d2h-cntx"><a href="#d2h-989240-3986"> <div class="line-num1">154</div> <div class="line-num2">174</div> </a></td> <td class="d2h-cntx"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">&nbsp;</span> <span class="d2h-code-line-ctn"><br></span> </div> </td> </tr><tr> <td id="d2h-989240-3997" class="d2h-code-linenumber d2h-cntx"><a href="#d2h-989240-3997"> <div class="line-num1">155</div> <div class="line-num2">175</div> </a></td> <td class="d2h-cntx"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">&nbsp;</span> <span class="d2h-code-line-ctn"> # @abstract depend on private method +#record_from_hash+ which should be</span> </div> </td> </tr><tr> <td id="d2h-989240-4008" class="d2h-code-linenumber d2h-cntx"><a href="#d2h-989240-4008"> <div class="line-num1">156</div> <div class="line-num2">176</div> </a></td> <td class="d2h-cntx"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">&nbsp;</span> <span class="d2h-code-line-ctn"> # declared by subclasses.</span> </div> </td> </tr><tr> <td class="d2h-code-linenumber d2h-del d2h-change"> <div class="line-num1">157</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"> # Add an object to this array, and increment associated counter, if any</span> </div> </td> </tr><tr> <td class="d2h-code-linenumber d2h-ins d2h-change"> <div class="line-num1"></div> <div class="line-num2">177</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"> # Add an object to this array, and increment associated counter, if any<ins>. If associated counter must not be</ins></span> </div> </td> </tr><tr> <td id="d2h-989240-4041" class="d2h-code-linenumber d2h-ins"><a href="#d2h-989240-4041"> <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"> # incremented, use {#push}.</span> </div> </td> </tr><tr> <td id="d2h-989240-4052" class="d2h-code-linenumber d2h-cntx"><a href="#d2h-989240-4052"> <div class="line-num1">158</div> <div class="line-num2">179</div> </a></td> <td class="d2h-cntx"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">&nbsp;</span> <span class="d2h-code-line-ctn"> # @param [Object] obj type depends on subclass</span> </div> </td> </tr><tr> <td id="d2h-989240-4063" class="d2h-code-linenumber d2h-cntx"><a href="#d2h-989240-4063"> <div class="line-num1">159</div> <div class="line-num2">180</div> </a></td> <td class="d2h-cntx"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">&nbsp;</span> <span class="d2h-code-line-ctn"> # @return [self]</span> </div> </td> </tr><tr> <td id="d2h-989240-4074" class="d2h-code-linenumber d2h-ins"><a href="#d2h-989240-4074"> <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"> # @see #push</span> </div> </td> </tr><tr> <td id="d2h-989240-4085" class="d2h-code-linenumber d2h-cntx"><a href="#d2h-989240-4085"> <div class="line-num1">160</div> <div class="line-num2">182</div> </a></td> <td class="d2h-cntx"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">&nbsp;</span> <span class="d2h-code-line-ctn"> def &lt;&lt;(obj)</span> </div> </td> </tr><tr> <td id="d2h-989240-4096" class="d2h-code-linenumber d2h-cntx"><a href="#d2h-989240-4096"> <div class="line-num1">161</div> <div class="line-num2">183</div> </a></td> <td class="d2h-cntx"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">&nbsp;</span> <span class="d2h-code-line-ctn"> push(obj)</span> </div> </td> </tr><tr> <td id="d2h-989240-4107" class="d2h-code-linenumber d2h-cntx"><a href="#d2h-989240-4107"> <div class="line-num1">162</div> <div class="line-num2">184</div> </a></td> <td class="d2h-cntx"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">&nbsp;</span> <span class="d2h-code-line-ctn"> @counter&amp;.from_human(@counter.to_i + 1)</span> </div> </td> </tr> <tr> <td class="d2h-code-linenumber d2h-info"></td> <td class="d2h-info"> <div class="d2h-code-line">@@ -266,30 +288,65 @@ module BinStruct</div> </td> </tr><tr> <td id="d2h-989240-4124" class="d2h-code-linenumber d2h-cntx"><a href="#d2h-989240-4124"> <div class="line-num1">266</div> <div class="line-num2">288</div> </a></td> <td class="d2h-cntx"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">&nbsp;</span> <span class="d2h-code-line-ctn"> end</span> </div> </td> </tr><tr> <td id="d2h-989240-4135" class="d2h-code-linenumber d2h-cntx"><a href="#d2h-989240-4135"> <div class="line-num1">267</div> <div class="line-num2">289</div> </a></td> <td class="d2h-cntx"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">&nbsp;</span> <span class="d2h-code-line-ctn"><br></span> </div> </td> </tr><tr> <td id="d2h-989240-4146" class="d2h-code-linenumber d2h-cntx"><a href="#d2h-989240-4146"> <div class="line-num1">268</div> <div class="line-num2">290</div> </a></td> <td class="d2h-cntx"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">&nbsp;</span> <span class="d2h-code-line-ctn"> # Specialized {Array} to handle serie of {Int8}.</span> </div> </td> </tr><tr> <td id="d2h-989240-4157" class="d2h-code-linenumber d2h-ins"><a href="#d2h-989240-4157"> <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"> # @example</span> </div> </td> </tr><tr> <td id="d2h-989240-4168" class="d2h-code-linenumber d2h-ins"><a href="#d2h-989240-4168"> <div class="line-num1"></div> <div class="line-num2">292</div> </a></td> <td class="d2h-ins"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn"> # ary = BinStruct::ArrayOfInt8.new</span> </div> </td> </tr><tr> <td id="d2h-989240-4179" class="d2h-code-linenumber d2h-ins"><a href="#d2h-989240-4179"> <div class="line-num1"></div> <div class="line-num2">293</div> </a></td> <td class="d2h-ins"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn"> # ary.read([0, 1, 2])</span> </div> </td> </tr><tr> <td id="d2h-989240-4190" class="d2h-code-linenumber d2h-ins"><a href="#d2h-989240-4190"> <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"> # ary.to_s #=&gt; &quot;\x00\x01\x02&quot;.b</span> </div> </td> </tr><tr> <td id="d2h-989240-4201" class="d2h-code-linenumber d2h-ins"><a href="#d2h-989240-4201"> <div class="line-num1"></div> <div class="line-num2">295</div> </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-989240-4212" class="d2h-code-linenumber d2h-ins"><a href="#d2h-989240-4212"> <div class="line-num1"></div> <div class="line-num2">296</div> </a></td> <td class="d2h-ins"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn"> # ary.read(&quot;\x05\x06&quot;)</span> </div> </td> </tr><tr> <td id="d2h-989240-4223" class="d2h-code-linenumber d2h-ins"><a href="#d2h-989240-4223"> <div class="line-num1"></div> <div class="line-num2">297</div> </a></td> <td class="d2h-ins"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn"> # ary.map(&amp;:to_i) #=&gt; [5, 6]</span> </div> </td> </tr><tr> <td id="d2h-989240-4234" class="d2h-code-linenumber d2h-cntx"><a href="#d2h-989240-4234"> <div class="line-num1">269</div> <div class="line-num2">298</div> </a></td> <td class="d2h-cntx"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">&nbsp;</span> <span class="d2h-code-line-ctn"> class ArrayOfInt8 &lt; Array</span> </div> </td> </tr><tr> <td id="d2h-989240-4245" class="d2h-code-linenumber d2h-cntx"><a href="#d2h-989240-4245"> <div class="line-num1">270</div> <div class="line-num2">299</div> </a></td> <td class="d2h-cntx"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">&nbsp;</span> <span class="d2h-code-line-ctn"> include ArrayOfIntMixin</span> </div> </td> </tr><tr> <td id="d2h-989240-4256" class="d2h-code-linenumber d2h-cntx"><a href="#d2h-989240-4256"> <div class="line-num1">271</div> <div class="line-num2">300</div> </a></td> <td class="d2h-cntx"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">&nbsp;</span> <span class="d2h-code-line-ctn"> set_of Int8</span> </div> </td> </tr><tr> <td id="d2h-989240-4267" class="d2h-code-linenumber d2h-cntx"><a href="#d2h-989240-4267"> <div class="line-num1">272</div> <div class="line-num2">301</div> </a></td> <td class="d2h-cntx"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">&nbsp;</span> <span class="d2h-code-line-ctn"> end</span> </div> </td> </tr><tr> <td id="d2h-989240-4278" class="d2h-code-linenumber d2h-cntx"><a href="#d2h-989240-4278"> <div class="line-num1">273</div> <div class="line-num2">302</div> </a></td> <td class="d2h-cntx"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">&nbsp;</span> <span class="d2h-code-line-ctn"><br></span> </div> </td> </tr><tr> <td id="d2h-989240-4289" class="d2h-code-linenumber d2h-cntx"><a href="#d2h-989240-4289"> <div class="line-num1">274</div> <div class="line-num2">303</div> </a></td> <td class="d2h-cntx"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">&nbsp;</span> <span class="d2h-code-line-ctn"> # Specialized {Array} to handle serie of {Int16}.</span> </div> </td> </tr><tr> <td id="d2h-989240-4300" class="d2h-code-linenumber d2h-ins"><a href="#d2h-989240-4300"> <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"> # @example</span> </div> </td> </tr><tr> <td id="d2h-989240-4311" class="d2h-code-linenumber d2h-ins"><a href="#d2h-989240-4311"> <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"> # ary = BinStruct::ArrayOfInt16.new</span> </div> </td> </tr><tr> <td id="d2h-989240-4322" class="d2h-code-linenumber d2h-ins"><a href="#d2h-989240-4322"> <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"> # ary.read([0, 1, 2])</span> </div> </td> </tr><tr> <td id="d2h-989240-4333" class="d2h-code-linenumber d2h-ins"><a href="#d2h-989240-4333"> <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"> # ary.to_s #=&gt; &quot;\x00\x00\x00\x01\x00\x02&quot;.b</span> </div> </td> </tr><tr> <td id="d2h-989240-4344" class="d2h-code-linenumber d2h-ins"><a href="#d2h-989240-4344"> <div class="line-num1"></div> <div class="line-num2">308</div> </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-989240-4355" class="d2h-code-linenumber d2h-ins"><a href="#d2h-989240-4355"> <div class="line-num1"></div> <div class="line-num2">309</div> </a></td> <td class="d2h-ins"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn"> # ary.read(&quot;\x05\x06&quot;)</span> </div> </td> </tr><tr> <td id="d2h-989240-4366" class="d2h-code-linenumber d2h-ins"><a href="#d2h-989240-4366"> <div class="line-num1"></div> <div class="line-num2">310</div> </a></td> <td class="d2h-ins"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn"> # ary.map(&amp;:to_i) #=&gt; [0x0506]</span> </div> </td> </tr><tr> <td id="d2h-989240-4377" class="d2h-code-linenumber d2h-cntx"><a href="#d2h-989240-4377"> <div class="line-num1">275</div> <div class="line-num2">311</div> </a></td> <td class="d2h-cntx"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">&nbsp;</span> <span class="d2h-code-line-ctn"> class ArrayOfInt16 &lt; Array</span> </div> </td> </tr><tr> <td id="d2h-989240-4388" class="d2h-code-linenumber d2h-cntx"><a href="#d2h-989240-4388"> <div class="line-num1">276</div> <div class="line-num2">312</div> </a></td> <td class="d2h-cntx"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">&nbsp;</span> <span class="d2h-code-line-ctn"> include ArrayOfIntMixin</span> </div> </td> </tr><tr> <td id="d2h-989240-4399" class="d2h-code-linenumber d2h-cntx"><a href="#d2h-989240-4399"> <div class="line-num1">277</div> <div class="line-num2">313</div> </a></td> <td class="d2h-cntx"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">&nbsp;</span> <span class="d2h-code-line-ctn"> set_of Int16</span> </div> </td> </tr><tr> <td id="d2h-989240-4410" class="d2h-code-linenumber d2h-cntx"><a href="#d2h-989240-4410"> <div class="line-num1">278</div> <div class="line-num2">314</div> </a></td> <td class="d2h-cntx"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">&nbsp;</span> <span class="d2h-code-line-ctn"> end</span> </div> </td> </tr><tr> <td id="d2h-989240-4421" class="d2h-code-linenumber d2h-cntx"><a href="#d2h-989240-4421"> <div class="line-num1">279</div> <div class="line-num2">315</div> </a></td> <td class="d2h-cntx"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">&nbsp;</span> <span class="d2h-code-line-ctn"><br></span> </div> </td> </tr><tr> <td id="d2h-989240-4432" class="d2h-code-linenumber d2h-cntx"><a href="#d2h-989240-4432"> <div class="line-num1">280</div> <div class="line-num2">316</div> </a></td> <td class="d2h-cntx"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">&nbsp;</span> <span class="d2h-code-line-ctn"> # Specialized {Array} to handle serie of {Int16le}.</span> </div> </td> </tr><tr> <td id="d2h-989240-4443" class="d2h-code-linenumber d2h-ins"><a href="#d2h-989240-4443"> <div class="line-num1"></div> <div class="line-num2">317</div> </a></td> <td class="d2h-ins"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn"> # @example</span> </div> </td> </tr><tr> <td id="d2h-989240-4454" class="d2h-code-linenumber d2h-ins"><a href="#d2h-989240-4454"> <div class="line-num1"></div> <div class="line-num2">318</div> </a></td> <td class="d2h-ins"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn"> # ary = BinStruct::ArrayOfInt16le.new</span> </div> </td> </tr><tr> <td id="d2h-989240-4465" class="d2h-code-linenumber d2h-ins"><a href="#d2h-989240-4465"> <div class="line-num1"></div> <div class="line-num2">319</div> </a></td> <td class="d2h-ins"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn"> # ary.read([0, 1, 2])</span> </div> </td> </tr><tr> <td id="d2h-989240-4476" class="d2h-code-linenumber d2h-ins"><a href="#d2h-989240-4476"> <div class="line-num1"></div> <div class="line-num2">320</div> </a></td> <td class="d2h-ins"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn"> # ary.to_s #=&gt; &quot;\x00\x00\x01\x00\x02\x00&quot;.b</span> </div> </td> </tr><tr> <td id="d2h-989240-4487" class="d2h-code-linenumber d2h-ins"><a href="#d2h-989240-4487"> <div class="line-num1"></div> <div class="line-num2">321</div> </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-989240-4498" class="d2h-code-linenumber d2h-ins"><a href="#d2h-989240-4498"> <div class="line-num1"></div> <div class="line-num2">322</div> </a></td> <td class="d2h-ins"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn"> # ary.read(&quot;\x05\x06&quot;)</span> </div> </td> </tr><tr> <td id="d2h-989240-4509" class="d2h-code-linenumber d2h-ins"><a href="#d2h-989240-4509"> <div class="line-num1"></div> <div class="line-num2">323</div> </a></td> <td class="d2h-ins"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn"> # ary.map(&amp;:to_i) #=&gt; [0x0605]</span> </div> </td> </tr><tr> <td id="d2h-989240-4520" class="d2h-code-linenumber d2h-cntx"><a href="#d2h-989240-4520"> <div class="line-num1">281</div> <div class="line-num2">324</div> </a></td> <td class="d2h-cntx"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">&nbsp;</span> <span class="d2h-code-line-ctn"> class ArrayOfInt16le &lt; Array</span> </div> </td> </tr><tr> <td id="d2h-989240-4531" class="d2h-code-linenumber d2h-cntx"><a href="#d2h-989240-4531"> <div class="line-num1">282</div> <div class="line-num2">325</div> </a></td> <td class="d2h-cntx"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">&nbsp;</span> <span class="d2h-code-line-ctn"> include ArrayOfIntMixin</span> </div> </td> </tr><tr> <td id="d2h-989240-4542" class="d2h-code-linenumber d2h-cntx"><a href="#d2h-989240-4542"> <div class="line-num1">283</div> <div class="line-num2">326</div> </a></td> <td class="d2h-cntx"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">&nbsp;</span> <span class="d2h-code-line-ctn"> set_of Int16le</span> </div> </td> </tr><tr> <td id="d2h-989240-4553" class="d2h-code-linenumber d2h-cntx"><a href="#d2h-989240-4553"> <div class="line-num1">284</div> <div class="line-num2">327</div> </a></td> <td class="d2h-cntx"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">&nbsp;</span> <span class="d2h-code-line-ctn"> end</span> </div> </td> </tr><tr> <td id="d2h-989240-4564" class="d2h-code-linenumber d2h-cntx"><a href="#d2h-989240-4564"> <div class="line-num1">285</div> <div class="line-num2">328</div> </a></td> <td class="d2h-cntx"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">&nbsp;</span> <span class="d2h-code-line-ctn"><br></span> </div> </td> </tr><tr> <td id="d2h-989240-4575" class="d2h-code-linenumber d2h-cntx"><a href="#d2h-989240-4575"> <div class="line-num1">286</div> <div class="line-num2">329</div> </a></td> <td class="d2h-cntx"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">&nbsp;</span> <span class="d2h-code-line-ctn"> # Specialized {Array} to handle serie of {Int32}.</span> </div> </td> </tr><tr> <td id="d2h-989240-4586" class="d2h-code-linenumber d2h-ins"><a href="#d2h-989240-4586"> <div class="line-num1"></div> <div class="line-num2">330</div> </a></td> <td class="d2h-ins"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn"> # @example</span> </div> </td> </tr><tr> <td id="d2h-989240-4597" class="d2h-code-linenumber d2h-ins"><a href="#d2h-989240-4597"> <div class="line-num1"></div> <div class="line-num2">331</div> </a></td> <td class="d2h-ins"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn"> # ary = BinStruct::ArrayOfInt32.new</span> </div> </td> </tr><tr> <td id="d2h-989240-4608" class="d2h-code-linenumber d2h-ins"><a href="#d2h-989240-4608"> <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"> # ary.read([0, 1, 2])</span> </div> </td> </tr><tr> <td id="d2h-989240-4619" class="d2h-code-linenumber d2h-ins"><a href="#d2h-989240-4619"> <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"> # ary.to_s #=&gt; &quot;\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x02&quot;.b</span> </div> </td> </tr><tr> <td id="d2h-989240-4630" class="d2h-code-linenumber d2h-ins"><a href="#d2h-989240-4630"> <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"> #</span> </div> </td> </tr><tr> <td id="d2h-989240-4641" class="d2h-code-linenumber d2h-ins"><a href="#d2h-989240-4641"> <div class="line-num1"></div> <div class="line-num2">335</div> </a></td> <td class="d2h-ins"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn"> # ary.read(&quot;\x00\x00\x05\x06&quot;)</span> </div> </td> </tr><tr> <td id="d2h-989240-4652" class="d2h-code-linenumber d2h-ins"><a href="#d2h-989240-4652"> <div class="line-num1"></div> <div class="line-num2">336</div> </a></td> <td class="d2h-ins"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn"> # ary.map(&amp;:to_i) #=&gt; [0x00000506]</span> </div> </td> </tr><tr> <td id="d2h-989240-4663" class="d2h-code-linenumber d2h-cntx"><a href="#d2h-989240-4663"> <div class="line-num1">287</div> <div class="line-num2">337</div> </a></td> <td class="d2h-cntx"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">&nbsp;</span> <span class="d2h-code-line-ctn"> class ArrayOfInt32 &lt; BinStruct::Array</span> </div> </td> </tr><tr> <td id="d2h-989240-4674" class="d2h-code-linenumber d2h-cntx"><a href="#d2h-989240-4674"> <div class="line-num1">288</div> <div class="line-num2">338</div> </a></td> <td class="d2h-cntx"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">&nbsp;</span> <span class="d2h-code-line-ctn"> include ArrayOfIntMixin</span> </div> </td> </tr><tr> <td id="d2h-989240-4685" class="d2h-code-linenumber d2h-cntx"><a href="#d2h-989240-4685"> <div class="line-num1">289</div> <div class="line-num2">339</div> </a></td> <td class="d2h-cntx"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">&nbsp;</span> <span class="d2h-code-line-ctn"> set_of Int32</span> </div> </td> </tr><tr> <td id="d2h-989240-4696" class="d2h-code-linenumber d2h-cntx"><a href="#d2h-989240-4696"> <div class="line-num1">290</div> <div class="line-num2">340</div> </a></td> <td class="d2h-cntx"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">&nbsp;</span> <span class="d2h-code-line-ctn"> end</span> </div> </td> </tr><tr> <td id="d2h-989240-4707" class="d2h-code-linenumber d2h-cntx"><a href="#d2h-989240-4707"> <div class="line-num1">291</div> <div class="line-num2">341</div> </a></td> <td class="d2h-cntx"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">&nbsp;</span> <span class="d2h-code-line-ctn"><br></span> </div> </td> </tr><tr> <td id="d2h-989240-4718" class="d2h-code-linenumber d2h-cntx"><a href="#d2h-989240-4718"> <div class="line-num1">292</div> <div class="line-num2">342</div> </a></td> <td class="d2h-cntx"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">&nbsp;</span> <span class="d2h-code-line-ctn"> # Specialized {Array} to handle serie of {Int32le}.</span> </div> </td> </tr><tr> <td id="d2h-989240-4729" class="d2h-code-linenumber d2h-ins"><a href="#d2h-989240-4729"> <div class="line-num1"></div> <div class="line-num2">343</div> </a></td> <td class="d2h-ins"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn"> # @example</span> </div> </td> </tr><tr> <td id="d2h-989240-4740" class="d2h-code-linenumber d2h-ins"><a href="#d2h-989240-4740"> <div class="line-num1"></div> <div class="line-num2">344</div> </a></td> <td class="d2h-ins"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn"> # ary = BinStruct::ArrayOfInt32le.new</span> </div> </td> </tr><tr> <td id="d2h-989240-4751" class="d2h-code-linenumber d2h-ins"><a href="#d2h-989240-4751"> <div class="line-num1"></div> <div class="line-num2">345</div> </a></td> <td class="d2h-ins"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn"> # ary.read([0, 1, 2])</span> </div> </td> </tr><tr> <td id="d2h-989240-4762" class="d2h-code-linenumber d2h-ins"><a href="#d2h-989240-4762"> <div class="line-num1"></div> <div class="line-num2">346</div> </a></td> <td class="d2h-ins"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn"> # ary.to_s #=&gt; &quot;\x00\x00\x00\x00\x01\x00\x00\x00\x02\x00\x00\x00&quot;.b</span> </div> </td> </tr><tr> <td id="d2h-989240-4773" class="d2h-code-linenumber d2h-ins"><a href="#d2h-989240-4773"> <div class="line-num1"></div> <div class="line-num2">347</div> </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-989240-4784" class="d2h-code-linenumber d2h-ins"><a href="#d2h-989240-4784"> <div class="line-num1"></div> <div class="line-num2">348</div> </a></td> <td class="d2h-ins"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn"> # ary.read(&quot;\x00\x00\x05\x06&quot;)</span> </div> </td> </tr><tr> <td id="d2h-989240-4795" class="d2h-code-linenumber d2h-ins"><a href="#d2h-989240-4795"> <div class="line-num1"></div> <div class="line-num2">349</div> </a></td> <td class="d2h-ins"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn"> # ary.map(&amp;:to_i) #=&gt; [0x06050000]</span> </div> </td> </tr><tr> <td id="d2h-989240-4806" class="d2h-code-linenumber d2h-cntx"><a href="#d2h-989240-4806"> <div class="line-num1">293</div> <div class="line-num2">350</div> </a></td> <td class="d2h-cntx"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">&nbsp;</span> <span class="d2h-code-line-ctn"> class ArrayOfInt32le &lt; BinStruct::Array</span> </div> </td> </tr><tr> <td id="d2h-989240-4817" class="d2h-code-linenumber d2h-cntx"><a href="#d2h-989240-4817"> <div class="line-num1">294</div> <div class="line-num2">351</div> </a></td> <td class="d2h-cntx"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">&nbsp;</span> <span class="d2h-code-line-ctn"> include ArrayOfIntMixin</span> </div> </td> </tr><tr> <td id="d2h-989240-4828" class="d2h-code-linenumber d2h-cntx"><a href="#d2h-989240-4828"> <div class="line-num1">295</div> <div class="line-num2">352</div> </a></td> <td class="d2h-cntx"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">&nbsp;</span> <span class="d2h-code-line-ctn"> set_of Int32le</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-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">@@ -7,21 +7,32 @@</div> </td> </tr><tr> <td id="d2h-720104-4866" class="d2h-code-linenumber d2h-cntx"><a href="#d2h-720104-4866"> <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">&nbsp;</span> <span class="d2h-code-line-ctn">require &#x27;digest&#x27;</span> </div> </td> </tr><tr> <td id="d2h-720104-4877" class="d2h-code-linenumber d2h-cntx"><a href="#d2h-720104-4877"> <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">&nbsp;</span> <span class="d2h-code-line-ctn"><br></span> </div> </td> </tr><tr> <td id="d2h-720104-4888" class="d2h-code-linenumber d2h-cntx"><a href="#d2h-720104-4888"> <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">&nbsp;</span> <span class="d2h-code-line-ctn">module BinStruct</span> </div> </td> </tr><tr> <td class="d2h-code-linenumber d2h-del d2h-change"> <div class="line-num1">10</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 bitfield attribute to embed in a {Struct}.</span> </div> </td> </tr><tr> <td class="d2h-code-linenumber d2h-ins d2h-change"> <div class="line-num1"></div> <div class="line-num2">10</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 bitfield attribute to embed in a {Struct}.<ins> Use it through {Struct.define_bit_attr}</ins></span> </div> </td> </tr><tr> <td id="d2h-720104-4921" class="d2h-code-linenumber d2h-cntx"><a href="#d2h-720104-4921"> <div class="line-num1">11</div> <div class="line-num2">11</div> </a></td> <td class="d2h-cntx"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">&nbsp;</span> <span class="d2h-code-line-ctn"> #</span> </div> </td> </tr><tr> <td id="d2h-720104-4932" class="d2h-code-linenumber d2h-ins"><a href="#d2h-720104-4932"> <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"> # @example</span> </div> </td> </tr><tr> <td id="d2h-720104-4943" class="d2h-code-linenumber d2h-cntx"><a href="#d2h-720104-4943"> <div class="line-num1">12</div> <div class="line-num2">13</div> </a></td> <td class="d2h-cntx"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">&nbsp;</span> <span class="d2h-code-line-ctn"> # class MyStruct &lt; BinStruct::Struct</span> </div> </td> </tr><tr> <td id="d2h-720104-4954" class="d2h-code-linenumber d2h-cntx"><a href="#d2h-720104-4954"> <div class="line-num1">13</div> <div class="line-num2">14</div> </a></td> <td class="d2h-cntx"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">&nbsp;</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-4965" class="d2h-code-linenumber d2h-cntx"><a href="#d2h-720104-4965"> <div class="line-num1">14</div> <div class="line-num2">15</div> </a></td> <td class="d2h-cntx"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">&nbsp;</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 class="d2h-code-linenumber d2h-del d2h-change"> <div class="line-num1">15</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> :int32, <del>BinStruct::BitAttr.create(</del>width: 32, a: 16, b: 4, c: 4, d:8<del>)</del></span> </div> </td> </tr><tr> <td class="d2h-code-linenumber d2h-ins d2h-change"> <div class="line-num1"></div> <div class="line-num2">16</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> :int32, width: 32, a: 16, b: 4, c: 4, d:8</span> </div> </td> </tr><tr> <td id="d2h-720104-4998" class="d2h-code-linenumber d2h-cntx"><a href="#d2h-720104-4998"> <div class="line-num1">16</div> <div class="line-num2">17</div> </a></td> <td class="d2h-cntx"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">&nbsp;</span> <span class="d2h-code-line-ctn"> # end</span> </div> </td> </tr><tr> <td id="d2h-720104-5009" class="d2h-code-linenumber d2h-ins"><a href="#d2h-720104-5009"> <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"> #</span> </div> </td> </tr><tr> <td id="d2h-720104-5020" class="d2h-code-linenumber d2h-ins"><a href="#d2h-720104-5020"> <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"> # s1 = MyStruct.new(int32: 0x12345678)</span> </div> </td> </tr><tr> <td id="d2h-720104-5031" class="d2h-code-linenumber d2h-ins"><a href="#d2h-720104-5031"> <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"> # s1.a #=&gt; 0x1234</span> </div> </td> </tr><tr> <td id="d2h-720104-5042" class="d2h-code-linenumber d2h-ins"><a href="#d2h-720104-5042"> <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"> # s1.b #=&gt; 5</span> </div> </td> </tr><tr> <td id="d2h-720104-5053" class="d2h-code-linenumber d2h-ins"><a href="#d2h-720104-5053"> <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"> # s1.c #=&gt; 6</span> </div> </td> </tr><tr> <td id="d2h-720104-5064" class="d2h-code-linenumber d2h-ins"><a href="#d2h-720104-5064"> <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"> # s1.d #=&gt; 0x78</span> </div> </td> </tr><tr> <td id="d2h-720104-5075" class="d2h-code-linenumber d2h-ins"><a href="#d2h-720104-5075"> <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"> #</span> </div> </td> </tr><tr> <td id="d2h-720104-5086" class="d2h-code-linenumber d2h-ins"><a href="#d2h-720104-5086"> <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"> # s2 = MyStruct.new(a: 0x1234, d: 0x42)</span> </div> </td> </tr><tr> <td id="d2h-720104-5097" class="d2h-code-linenumber d2h-ins"><a href="#d2h-720104-5097"> <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"> # s2.to_s #=&gt; &quot;\x12\x34\x00\x42&quot;.b</span> </div> </td> </tr><tr> <td id="d2h-720104-5108" class="d2h-code-linenumber d2h-cntx"><a href="#d2h-720104-5108"> <div class="line-num1">17</div> <div class="line-num2">27</div> </a></td> <td class="d2h-cntx"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">&nbsp;</span> <span class="d2h-code-line-ctn"> # @since 0.3.0</span> </div> </td> </tr><tr> <td id="d2h-720104-5119" class="d2h-code-linenumber d2h-ins"><a href="#d2h-720104-5119"> <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"> # @abstract Subclasses must de derived using {.create}.</span> </div> </td> </tr><tr> <td id="d2h-720104-5130" class="d2h-code-linenumber d2h-cntx"><a href="#d2h-720104-5130"> <div class="line-num1">18</div> <div class="line-num2">29</div> </a></td> <td class="d2h-cntx"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">&nbsp;</span> <span class="d2h-code-line-ctn"> # @author LemonTree55</span> </div> </td> </tr><tr> <td id="d2h-720104-5141" class="d2h-code-linenumber d2h-cntx"><a href="#d2h-720104-5141"> <div class="line-num1">19</div> <div class="line-num2">30</div> </a></td> <td class="d2h-cntx"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">&nbsp;</span> <span class="d2h-code-line-ctn"> class BitAttr</span> </div> </td> </tr><tr> <td id="d2h-720104-5152" class="d2h-code-linenumber d2h-cntx"><a href="#d2h-720104-5152"> <div class="line-num1">20</div> <div class="line-num2">31</div> </a></td> <td class="d2h-cntx"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">&nbsp;</span> <span class="d2h-code-line-ctn"> include Structable</span> </div> </td> </tr><tr> <td id="d2h-720104-5163" class="d2h-code-linenumber d2h-cntx"><a href="#d2h-720104-5163"> <div class="line-num1">21</div> <div class="line-num2">32</div> </a></td> <td class="d2h-cntx"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">&nbsp;</span> <span class="d2h-code-line-ctn"><br></span> </div> </td> </tr><tr> <td id="d2h-720104-5174" class="d2h-code-linenumber d2h-cntx"><a href="#d2h-720104-5174"> <div class="line-num1">22</div> <div class="line-num2">33</div> </a></td> <td class="d2h-cntx"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">&nbsp;</span> <span class="d2h-code-line-ctn"> # @return [Integer] width in bits of bit attribute</span> </div> </td> </tr><tr> <td id="d2h-720104-5185" class="d2h-code-linenumber d2h-cntx"><a href="#d2h-720104-5185"> <div class="line-num1">23</div> <div class="line-num2">34</div> </a></td> <td class="d2h-cntx"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">&nbsp;</span> <span class="d2h-code-line-ctn"> attr_reader :width</span> </div> </td> </tr><tr> <td class="d2h-code-linenumber d2h-del d2h-change"> <div class="line-num1">24</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 [Array[Symbol]]</span> </div> </td> </tr><tr> <td class="d2h-code-linenumber d2h-ins d2h-change"> <div class="line-num1"></div> <div class="line-num2">35</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 [<ins>::</ins>Array[Symbol]]</span> </div> </td> </tr><tr> <td id="d2h-720104-5218" class="d2h-code-linenumber d2h-cntx"><a href="#d2h-720104-5218"> <div class="line-num1">25</div> <div class="line-num2">36</div> </a></td> <td class="d2h-cntx"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">&nbsp;</span> <span class="d2h-code-line-ctn"> attr_reader :bit_methods</span> </div> </td> </tr><tr> <td id="d2h-720104-5229" class="d2h-code-linenumber d2h-cntx"><a href="#d2h-720104-5229"> <div class="line-num1">26</div> <div class="line-num2">37</div> </a></td> <td class="d2h-cntx"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">&nbsp;</span> <span class="d2h-code-line-ctn"><br></span> </div> </td> </tr><tr> <td id="d2h-720104-5240" class="d2h-code-linenumber d2h-cntx"><a href="#d2h-720104-5240"> <div class="line-num1">27</div> <div class="line-num2">38</div> </a></td> <td class="d2h-cntx"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">&nbsp;</span> <span class="d2h-code-line-ctn"> # @private</span> </div> </td> </tr> <tr> <td class="d2h-code-linenumber d2h-info"></td> <td class="d2h-info"> <div class="d2h-code-line">@@ -79,9 +90,10 @@ module BinStruct</div> </td> </tr><tr> <td id="d2h-720104-5257" class="d2h-code-linenumber d2h-cntx"><a href="#d2h-720104-5257"> <div class="line-num1">79</div> <div class="line-num2">90</div> </a></td> <td class="d2h-cntx"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">&nbsp;</span> <span class="d2h-code-line-ctn"> # @param [Hash{Symbol=&gt;Integer}] opts initialization values for fields, where keys are field names and values are</span> </div> </td> </tr><tr> <td id="d2h-720104-5268" class="d2h-code-linenumber d2h-cntx"><a href="#d2h-720104-5268"> <div class="line-num1">80</div> <div class="line-num2">91</div> </a></td> <td class="d2h-cntx"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">&nbsp;</span> <span class="d2h-code-line-ctn"> # initialization values</span> </div> </td> </tr><tr> <td id="d2h-720104-5279" class="d2h-code-linenumber d2h-cntx"><a href="#d2h-720104-5279"> <div class="line-num1">81</div> <div class="line-num2">92</div> </a></td> <td class="d2h-cntx"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">&nbsp;</span> <span class="d2h-code-line-ctn"> # @return [self]</span> </div> </td> </tr><tr> <td id="d2h-720104-5290" class="d2h-code-linenumber d2h-ins"><a href="#d2h-720104-5290"> <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"> # @raise [NotImplementedError] raised when called on {BitAttr} class</span> </div> </td> </tr><tr> <td id="d2h-720104-5301" class="d2h-code-linenumber d2h-cntx"><a href="#d2h-720104-5301"> <div class="line-num1">82</div> <div class="line-num2">94</div> </a></td> <td class="d2h-cntx"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">&nbsp;</span> <span class="d2h-code-line-ctn"> def initialize(opts = {})</span> </div> </td> </tr><tr> <td id="d2h-720104-5312" class="d2h-code-linenumber d2h-cntx"><a href="#d2h-720104-5312"> <div class="line-num1">83</div> <div class="line-num2">95</div> </a></td> <td class="d2h-cntx"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">&nbsp;</span> <span class="d2h-code-line-ctn"> parameters = self.class.parameters</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"> raise NotImplementedError, <del>&#x27;</del>#initialize may only be called on subclass of {self.class}<del>&#x27;</del> if parameters.nil?</span> </div> </td> </tr><tr> <td class="d2h-code-linenumber d2h-ins d2h-change"> <div class="line-num1"></div> <div class="line-num2">96</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"> raise NotImplementedError, <ins>&quot;</ins>#initialize may only be called on subclass of <ins>#</ins>{self.class}<ins>&quot;</ins> if parameters.nil?</span> </div> </td> </tr><tr> <td id="d2h-720104-5345" class="d2h-code-linenumber d2h-cntx"><a href="#d2h-720104-5345"> <div class="line-num1">85</div> <div class="line-num2">97</div> </a></td> <td class="d2h-cntx"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">&nbsp;</span> <span class="d2h-code-line-ctn"><br></span> </div> </td> </tr><tr> <td id="d2h-720104-5356" class="d2h-code-linenumber d2h-cntx"><a href="#d2h-720104-5356"> <div class="line-num1">86</div> <div class="line-num2">98</div> </a></td> <td class="d2h-cntx"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">&nbsp;</span> <span class="d2h-code-line-ctn"> @width = parameters.width</span> </div> </td> </tr><tr> <td id="d2h-720104-5367" class="d2h-code-linenumber d2h-cntx"><a href="#d2h-720104-5367"> <div class="line-num1">87</div> <div class="line-num2">99</div> </a></td> <td class="d2h-cntx"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">&nbsp;</span> <span class="d2h-code-line-ctn"> @fields = parameters.fields</span> </div> </td> </tr> <tr> <td class="d2h-code-linenumber d2h-info"></td> <td class="d2h-info"> <div class="d2h-code-line">@@ -110,7 +122,7 @@ module BinStruct</div> </td> </tr><tr> <td id="d2h-720104-5384" class="d2h-code-linenumber d2h-cntx"><a href="#d2h-720104-5384"> <div class="line-num1">110</div> <div class="line-num2">122</div> </a></td> <td class="d2h-cntx"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">&nbsp;</span> <span class="d2h-code-line-ctn"> end</span> </div> </td> </tr><tr> <td id="d2h-720104-5395" class="d2h-code-linenumber d2h-cntx"><a href="#d2h-720104-5395"> <div class="line-num1">111</div> <div class="line-num2">123</div> </a></td> <td class="d2h-cntx"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">&nbsp;</span> <span class="d2h-code-line-ctn"><br></span> </div> </td> </tr><tr> <td id="d2h-720104-5406" class="d2h-code-linenumber d2h-cntx"><a href="#d2h-720104-5406"> <div class="line-num1">112</div> <div class="line-num2">124</div> </a></td> <td class="d2h-cntx"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">&nbsp;</span> <span class="d2h-code-line-ctn"> # Populate bit attribute from +str+</span> </div> </td> </tr><tr> <td class="d2h-code-linenumber d2h-del d2h-change"> <div class="line-num1">113</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>::String</del>,nil] str</span> </div> </td> </tr><tr> <td class="d2h-code-linenumber d2h-ins d2h-change"> <div class="line-num1"></div> <div class="line-num2">125</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>#to_s</ins>,nil] str</span> </div> </td> </tr><tr> <td id="d2h-720104-5439" class="d2h-code-linenumber d2h-cntx"><a href="#d2h-720104-5439"> <div class="line-num1">114</div> <div class="line-num2">126</div> </a></td> <td class="d2h-cntx"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">&nbsp;</span> <span class="d2h-code-line-ctn"> # @return [self]</span> </div> </td> </tr><tr> <td id="d2h-720104-5450" class="d2h-code-linenumber d2h-cntx"><a href="#d2h-720104-5450"> <div class="line-num1">115</div> <div class="line-num2">127</div> </a></td> <td class="d2h-cntx"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">&nbsp;</span> <span class="d2h-code-line-ctn"> def read(str)</span> </div> </td> </tr><tr> <td id="d2h-720104-5461" class="d2h-code-linenumber d2h-cntx"><a href="#d2h-720104-5461"> <div class="line-num1">116</div> <div class="line-num2">128</div> </a></td> <td class="d2h-cntx"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">&nbsp;</span> <span class="d2h-code-line-ctn"> return self if str.nil?</span> </div> </td> </tr> <tr> <td class="d2h-code-linenumber d2h-info"></td> <td class="d2h-info"> <div class="d2h-code-line">@@ -175,7 +187,7 @@ module BinStruct</div> </td> </tr><tr> <td id="d2h-720104-5478" class="d2h-code-linenumber d2h-cntx"><a href="#d2h-720104-5478"> <div class="line-num1">175</div> <div class="line-num2">187</div> </a></td> <td class="d2h-cntx"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">&nbsp;</span> <span class="d2h-code-line-ctn"> if size == 1</span> </div> </td> </tr><tr> <td id="d2h-720104-5489" class="d2h-code-linenumber d2h-cntx"><a href="#d2h-720104-5489"> <div class="line-num1">176</div> <div class="line-num2">188</div> </a></td> <td class="d2h-cntx"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">&nbsp;</span> <span class="d2h-code-line-ctn"> instance_eval &quot;def #{name}?; @data[#{name.inspect}] != 0; end\n&quot;, __FILE__, __LINE__</span> </div> </td> </tr><tr> <td id="d2h-720104-5500" class="d2h-code-linenumber d2h-cntx"><a href="#d2h-720104-5500"> <div class="line-num1">177</div> <div class="line-num2">189</div> </a></td> <td class="d2h-cntx"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">&nbsp;</span> <span class="d2h-code-line-ctn"> instance_eval &quot;def #{name}=(val); v = case val when TrueClass; 1 when FalseClass; 0 else val end; &quot; \</span> </div> </td> </tr><tr> <td class="d2h-code-linenumber d2h-del d2h-change"> <div class="line-num1">178</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"> &quot;@data[#{name.inspect}] = v; end&quot;, __FILE__, __LINE__ - <del>2</del></span> </div> </td> </tr><tr> <td class="d2h-code-linenumber d2h-ins d2h-change"> <div class="line-num1"></div> <div class="line-num2">190</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"> &quot;@data[#{name.inspect}] = v; end&quot;, __FILE__, __LINE__ - <ins>1</ins></span> </div> </td> </tr><tr> <td id="d2h-720104-5533" class="d2h-code-linenumber d2h-cntx"><a href="#d2h-720104-5533"> <div class="line-num1">179</div> <div class="line-num2">191</div> </a></td> <td class="d2h-cntx"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">&nbsp;</span> <span class="d2h-code-line-ctn"> bit_methods &lt;&lt; :&quot;#{name}?&quot;</span> </div> </td> </tr><tr> <td id="d2h-720104-5544" class="d2h-code-linenumber d2h-cntx"><a href="#d2h-720104-5544"> <div class="line-num1">180</div> <div class="line-num2">192</div> </a></td> <td class="d2h-cntx"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">&nbsp;</span> <span class="d2h-code-line-ctn"> else</span> </div> </td> </tr><tr> <td id="d2h-720104-5555" class="d2h-code-linenumber d2h-cntx"><a href="#d2h-720104-5555"> <div class="line-num1">181</div> <div class="line-num2">193</div> </a></td> <td class="d2h-cntx"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">&nbsp;</span> <span class="d2h-code-line-ctn"> instance_eval &quot;def #{name}=(val); @data[#{name.inspect}] = val; end&quot;, __FILE__, __LINE__</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">@@ -10,6 +10,9 @@ require &#x27;forwardable&#x27;</div> </td> </tr><tr> <td id="d2h-871875-5593" class="d2h-code-linenumber d2h-cntx"><a href="#d2h-871875-5593"> <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">&nbsp;</span> <span class="d2h-code-line-ctn"><br></span> </div> </td> </tr><tr> <td id="d2h-871875-5604" class="d2h-code-linenumber d2h-cntx"><a href="#d2h-871875-5604"> <div class="line-num1">11</div> <div class="line-num2">11</div> </a></td> <td class="d2h-cntx"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">&nbsp;</span> <span class="d2h-code-line-ctn">module BinStruct</span> </div> </td> </tr><tr> <td id="d2h-871875-5615" class="d2h-code-linenumber d2h-cntx"><a href="#d2h-871875-5615"> <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">&nbsp;</span> <span class="d2h-code-line-ctn"> # This class handles null-terminated strings (aka C strings).</span> </div> </td> </tr><tr> <td id="d2h-871875-5626" class="d2h-code-linenumber d2h-ins"><a href="#d2h-871875-5626"> <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"> # # @example</span> </div> </td> </tr><tr> <td id="d2h-871875-5637" class="d2h-code-linenumber d2h-ins"><a href="#d2h-871875-5637"> <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"> # cstr = BinStruct::CString.new(value: &#x27;abcd&#x27;)</span> </div> </td> </tr><tr> <td id="d2h-871875-5648" class="d2h-code-linenumber d2h-ins"><a href="#d2h-871875-5648"> <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"> # cstr.to_s #=&gt; &quot;abcd\x00&quot;.b</span> </div> </td> </tr><tr> <td id="d2h-871875-5659" class="d2h-code-linenumber d2h-cntx"><a href="#d2h-871875-5659"> <div class="line-num1">13</div> <div class="line-num2">16</div> </a></td> <td class="d2h-cntx"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">&nbsp;</span> <span class="d2h-code-line-ctn"> # @author Sylvain Daubert (2016-2024)</span> </div> </td> </tr><tr> <td id="d2h-871875-5670" class="d2h-code-linenumber d2h-cntx"><a href="#d2h-871875-5670"> <div class="line-num1">14</div> <div class="line-num2">17</div> </a></td> <td class="d2h-cntx"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">&nbsp;</span> <span class="d2h-code-line-ctn"> # @author LemonTree55</span> </div> </td> </tr><tr> <td id="d2h-871875-5681" class="d2h-code-linenumber d2h-cntx"><a href="#d2h-871875-5681"> <div class="line-num1">15</div> <div class="line-num2">18</div> </a></td> <td class="d2h-cntx"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">&nbsp;</span> <span class="d2h-code-line-ctn"> class CString</span> </div> </td> </tr> <tr> <td class="d2h-code-linenumber d2h-info"></td> <td class="d2h-info"> <div class="d2h-code-line">@@ -76,14 +79,14 @@ module BinStruct</div> </td> </tr><tr> <td id="d2h-871875-5698" class="d2h-code-linenumber d2h-cntx"><a href="#d2h-871875-5698"> <div class="line-num1">76</div> <div class="line-num2">79</div> </a></td> <td class="d2h-cntx"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">&nbsp;</span> <span class="d2h-code-line-ctn"><br></span> </div> </td> </tr><tr> <td id="d2h-871875-5709" class="d2h-code-linenumber d2h-cntx"><a href="#d2h-871875-5709"> <div class="line-num1">77</div> <div class="line-num2">80</div> </a></td> <td class="d2h-cntx"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">&nbsp;</span> <span class="d2h-code-line-ctn"> # @param [Hash] options</span> </div> </td> </tr><tr> <td id="d2h-871875-5720" class="d2h-code-linenumber d2h-cntx"><a href="#d2h-871875-5720"> <div class="line-num1">78</div> <div class="line-num2">81</div> </a></td> <td class="d2h-cntx"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">&nbsp;</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 class="d2h-code-linenumber d2h-del d2h-change"> <div class="line-num1">79</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] :value string value (default to +<del>&#x27;&#x27;</del>+)</span> </div> </td> </tr><tr> <td class="d2h-code-linenumber d2h-ins d2h-change"> <div class="line-num1"></div> <div class="line-num2">82</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] :value string value (default to +<ins>&quot;&quot;</ins>+)</span> </div> </td> </tr><tr> <td id="d2h-871875-5753" class="d2h-code-linenumber d2h-cntx"><a href="#d2h-871875-5753"> <div class="line-num1">80</div> <div class="line-num2">83</div> </a></td> <td class="d2h-cntx"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">&nbsp;</span> <span class="d2h-code-line-ctn"> def initialize(options = {})</span> </div> </td> </tr><tr> <td id="d2h-871875-5764" class="d2h-code-linenumber d2h-cntx"><a href="#d2h-871875-5764"> <div class="line-num1">81</div> <div class="line-num2">84</div> </a></td> <td class="d2h-cntx"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">&nbsp;</span> <span class="d2h-code-line-ctn"> register_internal_string(options[:value] || +&#x27;&#x27;)</span> </div> </td> </tr><tr> <td id="d2h-871875-5775" class="d2h-code-linenumber d2h-cntx"><a href="#d2h-871875-5775"> <div class="line-num1">82</div> <div class="line-num2">85</div> </a></td> <td class="d2h-cntx"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">&nbsp;</span> <span class="d2h-code-line-ctn"> @static_length = options[:static_length]</span> </div> </td> </tr><tr> <td id="d2h-871875-5786" class="d2h-code-linenumber d2h-cntx"><a href="#d2h-871875-5786"> <div class="line-num1">83</div> <div class="line-num2">86</div> </a></td> <td class="d2h-cntx"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">&nbsp;</span> <span class="d2h-code-line-ctn"> end</span> </div> </td> </tr><tr> <td id="d2h-871875-5797" class="d2h-code-linenumber d2h-cntx"><a href="#d2h-871875-5797"> <div class="line-num1">84</div> <div class="line-num2">87</div> </a></td> <td class="d2h-cntx"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">&nbsp;</span> <span class="d2h-code-line-ctn"><br></span> </div> </td> </tr><tr> <td id="d2h-871875-5808" class="d2h-code-linenumber d2h-cntx"><a href="#d2h-871875-5808"> <div class="line-num1">85</div> <div class="line-num2">88</div> </a></td> <td class="d2h-cntx"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">&nbsp;</span> <span class="d2h-code-line-ctn"> # Populate self from binary string</span> </div> </td> </tr><tr> <td class="d2h-code-linenumber d2h-del d2h-change"> <div class="line-num1">86</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>::String</del>] str</span> </div> </td> </tr><tr> <td class="d2h-code-linenumber d2h-ins d2h-change"> <div class="line-num1"></div> <div class="line-num2">89</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>#to_s</ins>] str</span> </div> </td> </tr><tr> <td id="d2h-871875-5841" class="d2h-code-linenumber d2h-cntx"><a href="#d2h-871875-5841"> <div class="line-num1">87</div> <div class="line-num2">90</div> </a></td> <td class="d2h-cntx"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">&nbsp;</span> <span class="d2h-code-line-ctn"> # @return [self]</span> </div> </td> </tr><tr> <td id="d2h-871875-5852" class="d2h-code-linenumber d2h-cntx"><a href="#d2h-871875-5852"> <div class="line-num1">88</div> <div class="line-num2">91</div> </a></td> <td class="d2h-cntx"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">&nbsp;</span> <span class="d2h-code-line-ctn"> def read(str)</span> </div> </td> </tr><tr> <td id="d2h-871875-5863" class="d2h-code-linenumber d2h-cntx"><a href="#d2h-871875-5863"> <div class="line-num1">89</div> <div class="line-num2">92</div> </a></td> <td class="d2h-cntx"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">&nbsp;</span> <span class="d2h-code-line-ctn"> s = str.to_s</span> </div> </td> </tr> <tr> <td class="d2h-code-linenumber d2h-info"></td> <td class="d2h-info"> <div class="d2h-code-line">@@ -102,7 +105,7 @@ module BinStruct</div> </td> </tr><tr> <td id="d2h-871875-5880" class="d2h-code-linenumber d2h-cntx"><a href="#d2h-871875-5880"> <div class="line-num1">102</div> <div class="line-num2">105</div> </a></td> <td class="d2h-cntx"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">&nbsp;</span> <span class="d2h-code-line-ctn"> else</span> </div> </td> </tr><tr> <td id="d2h-871875-5891" class="d2h-code-linenumber d2h-cntx"><a href="#d2h-871875-5891"> <div class="line-num1">103</div> <div class="line-num2">106</div> </a></td> <td class="d2h-cntx"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">&nbsp;</span> <span class="d2h-code-line-ctn"> s = &quot;#{string}\x00&quot;</span> </div> </td> </tr><tr> <td id="d2h-871875-5902" class="d2h-code-linenumber d2h-cntx"><a href="#d2h-871875-5902"> <div class="line-num1">104</div> <div class="line-num2">107</div> </a></td> <td class="d2h-cntx"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">&nbsp;</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">105</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>BinStruct</del>.<del>force_binary(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">108</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>s</ins>.<ins>b</ins></span> </div> </td> </tr><tr> <td id="d2h-871875-5935" class="d2h-code-linenumber d2h-cntx"><a href="#d2h-871875-5935"> <div class="line-num1">106</div> <div class="line-num2">109</div> </a></td> <td class="d2h-cntx"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">&nbsp;</span> <span class="d2h-code-line-ctn"> end</span> </div> </td> </tr><tr> <td id="d2h-871875-5946" class="d2h-code-linenumber d2h-cntx"><a href="#d2h-871875-5946"> <div class="line-num1">107</div> <div class="line-num2">110</div> </a></td> <td class="d2h-cntx"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">&nbsp;</span> <span class="d2h-code-line-ctn"><br></span> </div> </td> </tr><tr> <td id="d2h-871875-5957" class="d2h-code-linenumber d2h-cntx"><a href="#d2h-871875-5957"> <div class="line-num1">108</div> <div class="line-num2">111</div> </a></td> <td class="d2h-cntx"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">&nbsp;</span> <span class="d2h-code-line-ctn"> # Append the given string to CString</span> </div> </td> </tr> <tr> <td class="d2h-code-linenumber d2h-info"></td> <td class="d2h-info"> <div class="d2h-code-line">@@ -134,7 +137,7 @@ module BinStruct</div> </td> </tr><tr> <td id="d2h-871875-5974" class="d2h-code-linenumber d2h-cntx"><a href="#d2h-871875-5974"> <div class="line-num1">134</div> <div class="line-num2">137</div> </a></td> <td class="d2h-cntx"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">&nbsp;</span> <span class="d2h-code-line-ctn"> # @param [::String] str</span> </div> </td> </tr><tr> <td id="d2h-871875-5985" class="d2h-code-linenumber d2h-cntx"><a href="#d2h-871875-5985"> <div class="line-num1">135</div> <div class="line-num2">138</div> </a></td> <td class="d2h-cntx"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">&nbsp;</span> <span class="d2h-code-line-ctn"> # @return [self]</span> </div> </td> </tr><tr> <td id="d2h-871875-5996" class="d2h-code-linenumber d2h-cntx"><a href="#d2h-871875-5996"> <div class="line-num1">136</div> <div class="line-num2">139</div> </a></td> <td class="d2h-cntx"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">&nbsp;</span> <span class="d2h-code-line-ctn"> def from_human(str)</span> </div> </td> </tr><tr> <td class="d2h-code-linenumber d2h-del d2h-change"> <div class="line-num1">137</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"> read<del> </del>str</span> </div> </td> </tr><tr> <td class="d2h-code-linenumber d2h-ins d2h-change"> <div class="line-num1"></div> <div class="line-num2">140</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"> read<ins>(</ins>str<ins>)</ins></span> </div> </td> </tr><tr> <td id="d2h-871875-6029" class="d2h-code-linenumber d2h-cntx"><a href="#d2h-871875-6029"> <div class="line-num1">138</div> <div class="line-num2">141</div> </a></td> <td class="d2h-cntx"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">&nbsp;</span> <span class="d2h-code-line-ctn"> end</span> </div> </td> </tr><tr> <td id="d2h-871875-6040" class="d2h-code-linenumber d2h-cntx"><a href="#d2h-871875-6040"> <div class="line-num1">139</div> <div class="line-num2">142</div> </a></td> <td class="d2h-cntx"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">&nbsp;</span> <span class="d2h-code-line-ctn"><br></span> </div> </td> </tr><tr> <td id="d2h-871875-6051" class="d2h-code-linenumber d2h-cntx"><a href="#d2h-871875-6051"> <div class="line-num1">140</div> <div class="line-num2">143</div> </a></td> <td class="d2h-cntx"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">&nbsp;</span> <span class="d2h-code-line-ctn"> # Get human-readable string</span> </div> </td> </tr> <tr> <td class="d2h-code-linenumber d2h-info"></td> <td class="d2h-info"> <div class="d2h-code-line">@@ -146,8 +149,7 @@ module BinStruct</div> </td> </tr><tr> <td id="d2h-871875-6068" class="d2h-code-linenumber d2h-cntx"><a href="#d2h-871875-6068"> <div class="line-num1">146</div> <div class="line-num2">149</div> </a></td> <td class="d2h-cntx"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">&nbsp;</span> <span class="d2h-code-line-ctn"> private</span> </div> </td> </tr><tr> <td id="d2h-871875-6079" class="d2h-code-linenumber d2h-cntx"><a href="#d2h-871875-6079"> <div class="line-num1">147</div> <div class="line-num2">150</div> </a></td> <td class="d2h-cntx"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">&nbsp;</span> <span class="d2h-code-line-ctn"><br></span> </div> </td> </tr><tr> <td id="d2h-871875-6090" class="d2h-code-linenumber d2h-cntx"><a href="#d2h-871875-6090"> <div class="line-num1">148</div> <div class="line-num2">151</div> </a></td> <td class="d2h-cntx"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">&nbsp;</span> <span class="d2h-code-line-ctn"> def register_internal_string(str)</span> </div> </td> </tr><tr> <td class="d2h-code-linenumber d2h-del d2h-change"> <div class="line-num1">149</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 = str</span> </div> </td> </tr><tr> <td id="d2h-871875-6112" class="d2h-code-linenumber d2h-del"><a href="#d2h-871875-6112"> <div class="line-num1">150</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"> BinStruct.force_binary(@string)</span> </div> </td> </tr><tr> <td class="d2h-code-linenumber d2h-ins d2h-change"> <div class="line-num1"></div> <div class="line-num2">152</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 = str<ins>.b</ins></span> </div> </td> </tr><tr> <td id="d2h-871875-6134" class="d2h-code-linenumber d2h-cntx"><a href="#d2h-871875-6134"> <div class="line-num1">151</div> <div class="line-num2">153</div> </a></td> <td class="d2h-cntx"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">&nbsp;</span> <span class="d2h-code-line-ctn"> end</span> </div> </td> </tr><tr> <td id="d2h-871875-6145" class="d2h-code-linenumber d2h-cntx"><a href="#d2h-871875-6145"> <div class="line-num1">152</div> <div class="line-num2">154</div> </a></td> <td class="d2h-cntx"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">&nbsp;</span> <span class="d2h-code-line-ctn"><br></span> </div> </td> </tr><tr> <td id="d2h-871875-6156" class="d2h-code-linenumber d2h-cntx"><a href="#d2h-871875-6156"> <div class="line-num1">153</div> <div class="line-num2">155</div> </a></td> <td class="d2h-cntx"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">&nbsp;</span> <span class="d2h-code-line-ctn"> def remove_null_character</span> </div> </td> </tr> </tbody> </table> </div> </div> </div> <div id="d2h-891082" 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-891082">data/lib/bin_struct/enum.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">@@ -12,20 +12,23 @@ module BinStruct</div> </td> </tr><tr> <td id="d2h-891082-6194" class="d2h-code-linenumber d2h-cntx"><a href="#d2h-891082-6194"> <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">&nbsp;</span> <span class="d2h-code-line-ctn"> # An {Enum} type is used to handle an {Int} attribute with limited</span> </div> </td> </tr><tr> <td id="d2h-891082-6205" class="d2h-code-linenumber d2h-cntx"><a href="#d2h-891082-6205"> <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">&nbsp;</span> <span class="d2h-code-line-ctn"> # and named values.</span> </div> </td> </tr><tr> <td id="d2h-891082-6216" class="d2h-code-linenumber d2h-cntx"><a href="#d2h-891082-6216"> <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">&nbsp;</span> <span class="d2h-code-line-ctn"> #</span> </div> </td> </tr><tr> <td class="d2h-code-linenumber d2h-del d2h-change"> <div class="line-num1">15</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> <del>Simple</del> <del>example</del></span> </div> </td> </tr><tr> <td class="d2h-code-linenumber d2h-del d2h-change"> <div class="line-num1">16</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>enum = <del>Int8Enum.new(</del>&#x27;<del>low</del>&#x27; =&gt; <del>0, &#x27;medium&#x27; =&gt; 1, &#x27;high&#x27; =&gt; 2})</del></span> </div> </td> </tr><tr> <td class="d2h-code-linenumber d2h-del d2h-change"> <div class="line-num1">17</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>In</del> <del>this</del> <del>example,</del> <del>+enum+</del> <del>is</del> <del>a</del> <del>8-bit</del> <del>attribute</del> <del>which</del> <del>may</del> <del>take</del> <del>one</del></span> </div> </td> </tr><tr> <td id="d2h-891082-6260" class="d2h-code-linenumber d2h-del"><a href="#d2h-891082-6260"> <div class="line-num1">18</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"> # among three values: +low+, +medium+ or +high+:</span> </div> </td> </tr><tr> <td id="d2h-891082-6271" class="d2h-code-linenumber d2h-del"><a href="#d2h-891082-6271"> <div class="line-num1">19</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"> # enum.value = &#x27;high&#x27;</span> </div> </td> </tr><tr> <td id="d2h-891082-6282" class="d2h-code-linenumber d2h-del"><a href="#d2h-891082-6282"> <div class="line-num1">20</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"> # enum.value # =&gt; 2</span> </div> </td> </tr><tr> <td id="d2h-891082-6293" class="d2h-code-linenumber d2h-del"><a href="#d2h-891082-6293"> <div class="line-num1">21</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"> # enum.value = 1</span> </div> </td> </tr><tr> <td id="d2h-891082-6304" class="d2h-code-linenumber d2h-del"><a href="#d2h-891082-6304"> <div class="line-num1">22</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"> # enum.value # =&gt; 1</span> </div> </td> </tr><tr> <td id="d2h-891082-6315" class="d2h-code-linenumber d2h-del"><a href="#d2h-891082-6315"> <div class="line-num1">23</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"> # enum.to_human # =&gt; &quot;medium&quot;</span> </div> </td> </tr><tr> <td id="d2h-891082-6326" class="d2h-code-linenumber d2h-del"><a href="#d2h-891082-6326"> <div class="line-num1">24</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"> # Setting an unknown value will raise an exception:</span> </div> </td> </tr><tr> <td id="d2h-891082-6337" class="d2h-code-linenumber d2h-del"><a href="#d2h-891082-6337"> <div class="line-num1">25</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"> # enum.value = 4 # =&gt; raise!</span> </div> </td> </tr><tr> <td id="d2h-891082-6348" class="d2h-code-linenumber d2h-del"><a href="#d2h-891082-6348"> <div class="line-num1">26</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"> # enum.value = &#x27;unknown&#x27; # =&gt; raise!</span> </div> </td> </tr><tr> <td id="d2h-891082-6359" class="d2h-code-linenumber d2h-del"><a href="#d2h-891082-6359"> <div class="line-num1">27</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"> # But {#read} will not raise when reading an outbound value. This</span> </div> </td> </tr><tr> <td class="d2h-code-linenumber d2h-ins d2h-change"> <div class="line-num1"></div> <div class="line-num2">15</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>Setting</ins> <ins>an</ins> <ins>unknown name will raise an exception:</ins></span> </div> </td> </tr><tr> <td class="d2h-code-linenumber d2h-ins d2h-change"> <div class="line-num1"></div> <div class="line-num2">16</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>enum<ins>.value</ins> = &#x27;<ins>unknown</ins>&#x27;<ins> #</ins> =&gt; <ins>raise!</ins></span> </div> </td> </tr><tr> <td class="d2h-code-linenumber d2h-ins d2h-change"> <div class="line-num1"></div> <div class="line-num2">17</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>But</ins> <ins>{#read}</ins> <ins>and</ins> <ins>{#value=}</ins> <ins>will</ins> <ins>not</ins> <ins>raise</ins> <ins>when</ins> <ins>reading&#x2F;setting</ins> <ins>an</ins> <ins>out-of-bound</ins> <ins>integer. This</ins></span> </div> </td> </tr><tr> <td id="d2h-891082-6403" class="d2h-code-linenumber d2h-cntx"><a href="#d2h-891082-6403"> <div class="line-num1">28</div> <div class="line-num2">18</div> </a></td> <td class="d2h-cntx"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">&nbsp;</span> <span class="d2h-code-line-ctn"> # to enable decoding (or forging) of bad packets.</span> </div> </td> </tr><tr> <td id="d2h-891082-6414" class="d2h-code-linenumber d2h-ins"><a href="#d2h-891082-6414"> <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"> # enum.read(&quot;\x05&quot;.b).value # =&gt; 5</span> </div> </td> </tr><tr> <td id="d2h-891082-6425" class="d2h-code-linenumber d2h-ins"><a href="#d2h-891082-6425"> <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"> # enum.value = 4 # =&gt; 4</span> </div> </td> </tr><tr> <td id="d2h-891082-6436" class="d2h-code-linenumber d2h-ins"><a href="#d2h-891082-6436"> <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"> #</span> </div> </td> </tr><tr> <td id="d2h-891082-6447" class="d2h-code-linenumber d2h-ins"><a href="#d2h-891082-6447"> <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"> # @example Simple example</span> </div> </td> </tr><tr> <td id="d2h-891082-6458" class="d2h-code-linenumber d2h-ins"><a href="#d2h-891082-6458"> <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"> # # Define an enum on 8-bit integer. It may take one among</span> </div> </td> </tr><tr> <td id="d2h-891082-6469" class="d2h-code-linenumber d2h-ins"><a href="#d2h-891082-6469"> <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"> # # three values: low, medium or high</span> </div> </td> </tr><tr> <td id="d2h-891082-6480" class="d2h-code-linenumber d2h-ins"><a href="#d2h-891082-6480"> <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"> # enum = BinStruct::Int8Enum.new(enum: {&#x27;low&#x27; =&gt; 0, &#x27;medium&#x27; =&gt; 1, &#x27;high&#x27; =&gt; 2})</span> </div> </td> </tr><tr> <td id="d2h-891082-6491" class="d2h-code-linenumber d2h-ins"><a href="#d2h-891082-6491"> <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"> # enum.value = &#x27;high&#x27;</span> </div> </td> </tr><tr> <td id="d2h-891082-6502" class="d2h-code-linenumber d2h-ins"><a href="#d2h-891082-6502"> <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"> # enum.value # =&gt; 2</span> </div> </td> </tr><tr> <td id="d2h-891082-6513" class="d2h-code-linenumber d2h-ins"><a href="#d2h-891082-6513"> <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"> # enum.value = 1</span> </div> </td> </tr><tr> <td id="d2h-891082-6524" class="d2h-code-linenumber d2h-ins"><a href="#d2h-891082-6524"> <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"> # enum.value # =&gt; 1</span> </div> </td> </tr><tr> <td id="d2h-891082-6535" class="d2h-code-linenumber d2h-ins"><a href="#d2h-891082-6535"> <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"> # enum.to_human # =&gt; &quot;medium&quot;</span> </div> </td> </tr><tr> <td id="d2h-891082-6546" class="d2h-code-linenumber d2h-ins"><a href="#d2h-891082-6546"> <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"> #</span> </div> </td> </tr><tr> <td id="d2h-891082-6557" class="d2h-code-linenumber d2h-cntx"><a href="#d2h-891082-6557"> <div class="line-num1">29</div> <div class="line-num2">32</div> </a></td> <td class="d2h-cntx"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">&nbsp;</span> <span class="d2h-code-line-ctn"> # @author Sylvain Daubert (2016-2024)</span> </div> </td> </tr><tr> <td id="d2h-891082-6568" class="d2h-code-linenumber d2h-cntx"><a href="#d2h-891082-6568"> <div class="line-num1">30</div> <div class="line-num2">33</div> </a></td> <td class="d2h-cntx"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">&nbsp;</span> <span class="d2h-code-line-ctn"> # @author LemonTree55</span> </div> </td> </tr><tr> <td id="d2h-891082-6579" class="d2h-code-linenumber d2h-cntx"><a href="#d2h-891082-6579"> <div class="line-num1">31</div> <div class="line-num2">34</div> </a></td> <td class="d2h-cntx"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">&nbsp;</span> <span class="d2h-code-line-ctn"> class Enum &lt; Int</span> </div> </td> </tr> </tbody> </table> </div> </div> </div> <div id="d2h-161506" 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-161506">data/lib/bin_struct/int.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">@@ -55,7 +55,7 @@ module BinStruct</div> </td> </tr><tr> <td id="d2h-161506-6617" class="d2h-code-linenumber d2h-cntx"><a href="#d2h-161506-6617"> <div class="line-num1">55</div> <div class="line-num2">55</div> </a></td> <td class="d2h-cntx"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">&nbsp;</span> <span class="d2h-code-line-ctn"><br></span> </div> </td> </tr><tr> <td id="d2h-161506-6628" class="d2h-code-linenumber d2h-cntx"><a href="#d2h-161506-6628"> <div class="line-num1">56</div> <div class="line-num2">56</div> </a></td> <td class="d2h-cntx"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">&nbsp;</span> <span class="d2h-code-line-ctn"> # @abstract</span> </div> </td> </tr><tr> <td id="d2h-161506-6639" class="d2h-code-linenumber d2h-cntx"><a href="#d2h-161506-6639"> <div class="line-num1">57</div> <div class="line-num2">57</div> </a></td> <td class="d2h-cntx"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">&nbsp;</span> <span class="d2h-code-line-ctn"> # @return [::String]</span> </div> </td> </tr><tr> <td class="d2h-code-linenumber d2h-del d2h-change"> <div class="line-num1">58</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"> # @raise [Error] This is an <del>abstrat</del> method and must be redefined</span> </div> </td> </tr><tr> <td class="d2h-code-linenumber d2h-ins d2h-change"> <div class="line-num1"></div> <div class="line-num2">58</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"> # @raise [Error] This is an <ins>abstract</ins> method and must be redefined</span> </div> </td> </tr><tr> <td id="d2h-161506-6672" class="d2h-code-linenumber d2h-cntx"><a href="#d2h-161506-6672"> <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">&nbsp;</span> <span class="d2h-code-line-ctn"> def to_s</span> </div> </td> </tr><tr> <td id="d2h-161506-6683" class="d2h-code-linenumber d2h-cntx"><a href="#d2h-161506-6683"> <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">&nbsp;</span> <span class="d2h-code-line-ctn"> raise Error, &#x27;BinStruct::Int#to_s is abstract&#x27; unless defined? @packstr</span> </div> </td> </tr><tr> <td id="d2h-161506-6694" class="d2h-code-linenumber d2h-cntx"><a href="#d2h-161506-6694"> <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">&nbsp;</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">@@ -9,6 +9,13 @@</div> </td> </tr><tr> <td id="d2h-298902-6732" class="d2h-code-linenumber d2h-cntx"><a href="#d2h-298902-6732"> <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">&nbsp;</span> <span class="d2h-code-line-ctn">module BinStruct</span> </div> </td> </tr><tr> <td id="d2h-298902-6743" class="d2h-code-linenumber d2h-cntx"><a href="#d2h-298902-6743"> <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">&nbsp;</span> <span class="d2h-code-line-ctn"> # Provides a class for creating strings preceeded by their length as an {Int}.</span> </div> </td> </tr><tr> <td id="d2h-298902-6754" class="d2h-code-linenumber d2h-cntx"><a href="#d2h-298902-6754"> <div class="line-num1">11</div> <div class="line-num2">11</div> </a></td> <td class="d2h-cntx"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">&nbsp;</span> <span class="d2h-code-line-ctn"> # By default, a null string will have one byte length (length byte set to 0).</span> </div> </td> </tr><tr> <td id="d2h-298902-6765" class="d2h-code-linenumber d2h-ins"><a href="#d2h-298902-6765"> <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"> # == Examples</span> </div> </td> </tr><tr> <td id="d2h-298902-6776" class="d2h-code-linenumber d2h-ins"><a href="#d2h-298902-6776"> <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"> # # IntString with 8-bit length</span> </div> </td> </tr><tr> <td id="d2h-298902-6787" class="d2h-code-linenumber d2h-ins"><a href="#d2h-298902-6787"> <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"> # is8 = BinStruct::IntString.new(value: &quot;abcd&quot;)</span> </div> </td> </tr><tr> <td id="d2h-298902-6798" class="d2h-code-linenumber d2h-ins"><a href="#d2h-298902-6798"> <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"> # is8.to_s # =&gt; &quot;\x04abcd&quot;</span> </div> </td> </tr><tr> <td id="d2h-298902-6809" class="d2h-code-linenumber d2h-ins"><a href="#d2h-298902-6809"> <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"> # # IntString with 16-bit length</span> </div> </td> </tr><tr> <td id="d2h-298902-6820" class="d2h-code-linenumber d2h-ins"><a href="#d2h-298902-6820"> <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"> # is16 = BinStruct::IntString.new(length_type: BinStruct::Int16le, value: &quot;abcd&quot;)</span> </div> </td> </tr><tr> <td id="d2h-298902-6831" class="d2h-code-linenumber d2h-ins"><a href="#d2h-298902-6831"> <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"> # is16.to_s # =&gt; &quot;\x04\x00abcd&quot;</span> </div> </td> </tr><tr> <td id="d2h-298902-6842" class="d2h-code-linenumber d2h-cntx"><a href="#d2h-298902-6842"> <div class="line-num1">12</div> <div class="line-num2">19</div> </a></td> <td class="d2h-cntx"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">&nbsp;</span> <span class="d2h-code-line-ctn"> # @author Sylvain Daubert (2016-2024)</span> </div> </td> </tr><tr> <td id="d2h-298902-6853" class="d2h-code-linenumber d2h-cntx"><a href="#d2h-298902-6853"> <div class="line-num1">13</div> <div class="line-num2">20</div> </a></td> <td class="d2h-cntx"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">&nbsp;</span> <span class="d2h-code-line-ctn"> # @author LemonTree55</span> </div> </td> </tr><tr> <td id="d2h-298902-6864" class="d2h-code-linenumber d2h-cntx"><a href="#d2h-298902-6864"> <div class="line-num1">14</div> <div class="line-num2">21</div> </a></td> <td class="d2h-cntx"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">&nbsp;</span> <span class="d2h-code-line-ctn"> class IntString</span> </div> </td> </tr> </tbody> </table> </div> </div> </div> <div id="d2h-902382" 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-902382">data/lib/bin_struct/length_from.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">@@ -9,7 +9,7 @@</div> </td> </tr><tr> <td id="d2h-902382-6902" class="d2h-code-linenumber d2h-cntx"><a href="#d2h-902382-6902"> <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">&nbsp;</span> <span class="d2h-code-line-ctn">module BinStruct</span> </div> </td> </tr><tr> <td id="d2h-902382-6913" class="d2h-code-linenumber d2h-cntx"><a href="#d2h-902382-6913"> <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">&nbsp;</span> <span class="d2h-code-line-ctn"> # This module is a mixin adding +length_from+ capacity to a type.</span> </div> </td> </tr><tr> <td id="d2h-902382-6924" class="d2h-code-linenumber d2h-cntx"><a href="#d2h-902382-6924"> <div class="line-num1">11</div> <div class="line-num2">11</div> </a></td> <td class="d2h-cntx"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">&nbsp;</span> <span class="d2h-code-line-ctn"> # +length_from+ capacity is the capacity, for a type, to gets its</span> </div> </td> </tr><tr> <td class="d2h-code-linenumber d2h-del d2h-change"> <div class="line-num1">12</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"> # length from another object.</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"> # length from another object.<ins> For an example, see {String}.</ins></span> </div> </td> </tr><tr> <td id="d2h-902382-6957" class="d2h-code-linenumber d2h-cntx"><a href="#d2h-902382-6957"> <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">&nbsp;</span> <span class="d2h-code-line-ctn"> # @author Sylvain Daubert (2016-2024)</span> </div> </td> </tr><tr> <td id="d2h-902382-6968" class="d2h-code-linenumber d2h-cntx"><a href="#d2h-902382-6968"> <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">&nbsp;</span> <span class="d2h-code-line-ctn"> # @author LemonTree55</span> </div> </td> </tr><tr> <td id="d2h-902382-6979" class="d2h-code-linenumber d2h-cntx"><a href="#d2h-902382-6979"> <div class="line-num1">15</div> <div class="line-num2">15</div> </a></td> <td class="d2h-cntx"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">&nbsp;</span> <span class="d2h-code-line-ctn"> module LengthFrom</span> </div> </td> </tr> <tr> <td class="d2h-code-linenumber d2h-info"></td> <td class="d2h-info"> <div class="d2h-code-line">@@ -30,7 +30,7 @@ module BinStruct</div> </td> </tr><tr> <td id="d2h-902382-6996" class="d2h-code-linenumber d2h-cntx"><a href="#d2h-902382-6996"> <div class="line-num1">30</div> <div class="line-num2">30</div> </a></td> <td class="d2h-cntx"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">&nbsp;</span> <span class="d2h-code-line-ctn"> # @param [#to_s] str</span> </div> </td> </tr><tr> <td id="d2h-902382-7007" class="d2h-code-linenumber d2h-cntx"><a href="#d2h-902382-7007"> <div class="line-num1">31</div> <div class="line-num2">31</div> </a></td> <td class="d2h-cntx"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">&nbsp;</span> <span class="d2h-code-line-ctn"> # @return [::String]</span> </div> </td> </tr><tr> <td id="d2h-902382-7018" class="d2h-code-linenumber d2h-cntx"><a href="#d2h-902382-7018"> <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">&nbsp;</span> <span class="d2h-code-line-ctn"> def read_with_length_from(str)</span> </div> </td> </tr><tr> <td class="d2h-code-linenumber d2h-del d2h-change"> <div class="line-num1">33</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"> s = <del>BinStruct.force_binary(</del>str.to_s<del>)</del></span> </div> </td> </tr><tr> <td class="d2h-code-linenumber d2h-ins d2h-change"> <div class="line-num1"></div> <div class="line-num2">33</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"> s = str.to_s<ins>.b</ins></span> </div> </td> </tr><tr> <td id="d2h-902382-7051" class="d2h-code-linenumber d2h-cntx"><a href="#d2h-902382-7051"> <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">&nbsp;</span> <span class="d2h-code-line-ctn"> s[0, sz_to_read]</span> </div> </td> </tr><tr> <td id="d2h-902382-7062" class="d2h-code-linenumber d2h-cntx"><a href="#d2h-902382-7062"> <div class="line-num1">35</div> <div class="line-num2">35</div> </a></td> <td class="d2h-cntx"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">&nbsp;</span> <span class="d2h-code-line-ctn"> end</span> </div> </td> </tr><tr> <td id="d2h-902382-7073" class="d2h-code-linenumber d2h-cntx"><a href="#d2h-902382-7073"> <div class="line-num1">36</div> <div class="line-num2">36</div> </a></td> <td class="d2h-cntx"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">&nbsp;</span> <span class="d2h-code-line-ctn"><br></span> </div> </td> </tr> </tbody> </table> </div> </div> </div> <div id="d2h-073358" 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-073358">data/lib/bin_struct/oui.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,10 +8,11 @@</div> </td> </tr><tr> <td id="d2h-073358-7111" class="d2h-code-linenumber d2h-cntx"><a href="#d2h-073358-7111"> <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">&nbsp;</span> <span class="d2h-code-line-ctn"><br></span> </div> </td> </tr><tr> <td id="d2h-073358-7122" class="d2h-code-linenumber d2h-cntx"><a href="#d2h-073358-7122"> <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">&nbsp;</span> <span class="d2h-code-line-ctn">module BinStruct</span> </div> </td> </tr><tr> <td id="d2h-073358-7133" class="d2h-code-linenumber d2h-cntx"><a href="#d2h-073358-7133"> <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">&nbsp;</span> <span class="d2h-code-line-ctn"> # OUI type, defined as a set of 3 bytes</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"> #<del> oui</del> <del>= OUI.new</del></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"> # <ins>@example</ins></span> </div> </td> </tr><tr> <td id="d2h-073358-7166" class="d2h-code-linenumber d2h-ins"><a href="#d2h-073358-7166"> <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"> # oui = BinStruct::OUI.new</span> </div> </td> </tr><tr> <td id="d2h-073358-7177" class="d2h-code-linenumber d2h-cntx"><a href="#d2h-073358-7177"> <div class="line-num1">12</div> <div class="line-num2">13</div> </a></td> <td class="d2h-cntx"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">&nbsp;</span> <span class="d2h-code-line-ctn"> # oui.from_human(&#x27;00:01:02&#x27;)</span> </div> </td> </tr><tr> <td id="d2h-073358-7188" class="d2h-code-linenumber d2h-cntx"><a href="#d2h-073358-7188"> <div class="line-num1">13</div> <div class="line-num2">14</div> </a></td> <td class="d2h-cntx"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">&nbsp;</span> <span class="d2h-code-line-ctn"> # oui.to_human # =&gt; &quot;00:01:02&quot;</span> </div> </td> </tr><tr> <td class="d2h-code-linenumber d2h-del d2h-change"> <div class="line-num1">14</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"> # oui.to_s # =&gt; &quot;\x00\x01\<del>x03</del>&quot;</span> </div> </td> </tr><tr> <td class="d2h-code-linenumber d2h-ins d2h-change"> <div class="line-num1"></div> <div class="line-num2">15</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"> # oui.to_s # =&gt; &quot;\x00\x01\<ins>x02</ins>&quot;<ins>.b</ins></span> </div> </td> </tr><tr> <td id="d2h-073358-7221" class="d2h-code-linenumber d2h-cntx"><a href="#d2h-073358-7221"> <div class="line-num1">15</div> <div class="line-num2">16</div> </a></td> <td class="d2h-cntx"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">&nbsp;</span> <span class="d2h-code-line-ctn"> # @author Sylvain Daubert (2016-2024)</span> </div> </td> </tr><tr> <td id="d2h-073358-7232" class="d2h-code-linenumber d2h-cntx"><a href="#d2h-073358-7232"> <div class="line-num1">16</div> <div class="line-num2">17</div> </a></td> <td class="d2h-cntx"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">&nbsp;</span> <span class="d2h-code-line-ctn"> # @author LemonTree55</span> </div> </td> </tr><tr> <td id="d2h-073358-7243" class="d2h-code-linenumber d2h-cntx"><a href="#d2h-073358-7243"> <div class="line-num1">17</div> <div class="line-num2">18</div> </a></td> <td class="d2h-cntx"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">&nbsp;</span> <span class="d2h-code-line-ctn"> class OUI &lt; Struct</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">@@ -10,6 +10,33 @@ require &#x27;forwardable&#x27;</div> </td> </tr><tr> <td id="d2h-549178-7281" class="d2h-code-linenumber d2h-cntx"><a href="#d2h-549178-7281"> <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">&nbsp;</span> <span class="d2h-code-line-ctn"><br></span> </div> </td> </tr><tr> <td id="d2h-549178-7292" class="d2h-code-linenumber d2h-cntx"><a href="#d2h-549178-7292"> <div class="line-num1">11</div> <div class="line-num2">11</div> </a></td> <td class="d2h-cntx"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">&nbsp;</span> <span class="d2h-code-line-ctn">module BinStruct</span> </div> </td> </tr><tr> <td id="d2h-549178-7303" class="d2h-code-linenumber d2h-cntx"><a href="#d2h-549178-7303"> <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">&nbsp;</span> <span class="d2h-code-line-ctn"> # This class mimics regular String, but it is {Structable}.</span> </div> </td> </tr><tr> <td id="d2h-549178-7314" class="d2h-code-linenumber d2h-ins"><a href="#d2h-549178-7314"> <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"> #</span> </div> </td> </tr><tr> <td id="d2h-549178-7325" class="d2h-code-linenumber d2h-ins"><a href="#d2h-549178-7325"> <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"> # It may take its length from another field ({LengthFrom} capacity). It may also has a static length</span> </div> </td> </tr><tr> <td id="d2h-549178-7336" class="d2h-code-linenumber d2h-ins"><a href="#d2h-549178-7336"> <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"> # (i.e. string has always the same length, whatever its content is).</span> </div> </td> </tr><tr> <td id="d2h-549178-7347" class="d2h-code-linenumber d2h-ins"><a href="#d2h-549178-7347"> <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"> #</span> </div> </td> </tr><tr> <td id="d2h-549178-7358" class="d2h-code-linenumber d2h-ins"><a href="#d2h-549178-7358"> <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"> # @example Basic example</span> </div> </td> </tr><tr> <td id="d2h-549178-7369" class="d2h-code-linenumber d2h-ins"><a href="#d2h-549178-7369"> <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"> # str = BinStruct::String.new</span> </div> </td> </tr><tr> <td id="d2h-549178-7380" class="d2h-code-linenumber d2h-ins"><a href="#d2h-549178-7380"> <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"> # str.read(&quot;abc&quot;)</span> </div> </td> </tr><tr> <td id="d2h-549178-7391" class="d2h-code-linenumber d2h-ins"><a href="#d2h-549178-7391"> <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"> # str.to_s #=&gt; &quot;abc&quot;.b</span> </div> </td> </tr><tr> <td id="d2h-549178-7402" class="d2h-code-linenumber d2h-ins"><a href="#d2h-549178-7402"> <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"> #</span> </div> </td> </tr><tr> <td id="d2h-549178-7413" class="d2h-code-linenumber d2h-ins"><a href="#d2h-549178-7413"> <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"> # @example LengthFrom example</span> </div> </td> </tr><tr> <td id="d2h-549178-7424" class="d2h-code-linenumber d2h-ins"><a href="#d2h-549178-7424"> <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"> # class StrLen &lt; BinStruct::Struct</span> </div> </td> </tr><tr> <td id="d2h-549178-7435" class="d2h-code-linenumber d2h-ins"><a href="#d2h-549178-7435"> <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"> # define_attr :length, BinStruct::Int8</span> </div> </td> </tr><tr> <td id="d2h-549178-7446" class="d2h-code-linenumber d2h-ins"><a href="#d2h-549178-7446"> <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"> # define_attr :str, BinStruct::String, builder: -&gt;(h, t) { t.new(length_from: h[:length]) }</span> </div> </td> </tr><tr> <td id="d2h-549178-7457" class="d2h-code-linenumber d2h-ins"><a href="#d2h-549178-7457"> <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"> # end</span> </div> </td> </tr><tr> <td id="d2h-549178-7468" class="d2h-code-linenumber d2h-ins"><a href="#d2h-549178-7468"> <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"> #</span> </div> </td> </tr><tr> <td id="d2h-549178-7479" class="d2h-code-linenumber d2h-ins"><a href="#d2h-549178-7479"> <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"> # # Length is 3, but rest of data is 4 byte long. Only 3 bytes will be read.</span> </div> </td> </tr><tr> <td id="d2h-549178-7490" class="d2h-code-linenumber d2h-ins"><a href="#d2h-549178-7490"> <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"> # s = StrLen.new.read(&quot;\x03abcd&quot;)</span> </div> </td> </tr><tr> <td id="d2h-549178-7501" class="d2h-code-linenumber d2h-ins"><a href="#d2h-549178-7501"> <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"> # s.length #=&gt; 3</span> </div> </td> </tr><tr> <td id="d2h-549178-7512" class="d2h-code-linenumber d2h-ins"><a href="#d2h-549178-7512"> <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"> # s.str.to_s #=&gt; &quot;abc&quot;.b</span> </div> </td> </tr><tr> <td id="d2h-549178-7523" class="d2h-code-linenumber d2h-ins"><a href="#d2h-549178-7523"> <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"> # s.to_s # =&gt; &quot;\x03abc&quot;.b</span> </div> </td> </tr><tr> <td id="d2h-549178-7534" class="d2h-code-linenumber d2h-ins"><a href="#d2h-549178-7534"> <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"> #</span> </div> </td> </tr><tr> <td id="d2h-549178-7545" class="d2h-code-linenumber d2h-ins"><a href="#d2h-549178-7545"> <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"> # @example static length example</span> </div> </td> </tr><tr> <td id="d2h-549178-7556" class="d2h-code-linenumber d2h-ins"><a href="#d2h-549178-7556"> <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"> # s = BinStruct::String.new(static_length: 10)</span> </div> </td> </tr><tr> <td id="d2h-549178-7567" class="d2h-code-linenumber d2h-ins"><a href="#d2h-549178-7567"> <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"> # s.sz #=&gt; 10</span> </div> </td> </tr><tr> <td id="d2h-549178-7578" class="d2h-code-linenumber d2h-ins"><a href="#d2h-549178-7578"> <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"> # s.to_s #=&gt; &quot;\0\0\0\0\0\0\0\0\0\0&quot;.b</span> </div> </td> </tr><tr> <td id="d2h-549178-7589" class="d2h-code-linenumber d2h-ins"><a href="#d2h-549178-7589"> <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"> # s.read(&quot;01234567890123456789&quot;)</span> </div> </td> </tr><tr> <td id="d2h-549178-7600" class="d2h-code-linenumber d2h-ins"><a href="#d2h-549178-7600"> <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"> # s.to_s #=&gt; &quot;0123456789&quot;.b</span> </div> </td> </tr><tr> <td id="d2h-549178-7611" class="d2h-code-linenumber d2h-cntx"><a href="#d2h-549178-7611"> <div class="line-num1">13</div> <div class="line-num2">40</div> </a></td> <td class="d2h-cntx"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">&nbsp;</span> <span class="d2h-code-line-ctn"> # @author Sylvain Daubert (2016-2024)</span> </div> </td> </tr><tr> <td id="d2h-549178-7622" class="d2h-code-linenumber d2h-cntx"><a href="#d2h-549178-7622"> <div class="line-num1">14</div> <div class="line-num2">41</div> </a></td> <td class="d2h-cntx"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">&nbsp;</span> <span class="d2h-code-line-ctn"> # @author LemonTree55</span> </div> </td> </tr><tr> <td id="d2h-549178-7633" class="d2h-code-linenumber d2h-cntx"><a href="#d2h-549178-7633"> <div class="line-num1">15</div> <div class="line-num2">42</div> </a></td> <td class="d2h-cntx"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">&nbsp;</span> <span class="d2h-code-line-ctn"> class String</span> </div> </td> </tr> <tr> <td class="d2h-code-linenumber d2h-info"></td> <td class="d2h-info"> <div class="d2h-code-line">@@ -19,7 +46,7 @@ module BinStruct</div> </td> </tr><tr> <td id="d2h-549178-7650" class="d2h-code-linenumber d2h-cntx"><a href="#d2h-549178-7650"> <div class="line-num1">19</div> <div class="line-num2">46</div> </a></td> <td class="d2h-cntx"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">&nbsp;</span> <span class="d2h-code-line-ctn"><br></span> </div> </td> </tr><tr> <td id="d2h-549178-7661" class="d2h-code-linenumber d2h-cntx"><a href="#d2h-549178-7661"> <div class="line-num1">20</div> <div class="line-num2">47</div> </a></td> <td class="d2h-cntx"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">&nbsp;</span> <span class="d2h-code-line-ctn"> def_delegators :@string, :[], :length, :size, :inspect, :==,</span> </div> </td> </tr><tr> <td id="d2h-549178-7672" class="d2h-code-linenumber d2h-cntx"><a href="#d2h-549178-7672"> <div class="line-num1">21</div> <div class="line-num2">48</div> </a></td> <td class="d2h-cntx"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">&nbsp;</span> <span class="d2h-code-line-ctn"> :unpack, :force_encoding, :encoding, :index, :empty?,</span> </div> </td> </tr><tr> <td class="d2h-code-linenumber d2h-del d2h-change"> <div class="line-num1">22</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"> :encode, :slice, :slice!, :[]<del>=</del></span> </div> </td> </tr><tr> <td class="d2h-code-linenumber d2h-ins d2h-change"> <div class="line-num1"></div> <div class="line-num2">49</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"> :encode, :slice, :slice!, :[]<ins>=, :b</ins></span> </div> </td> </tr><tr> <td id="d2h-549178-7705" class="d2h-code-linenumber d2h-cntx"><a href="#d2h-549178-7705"> <div class="line-num1">23</div> <div class="line-num2">50</div> </a></td> <td class="d2h-cntx"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">&nbsp;</span> <span class="d2h-code-line-ctn"><br></span> </div> </td> </tr><tr> <td id="d2h-549178-7716" class="d2h-code-linenumber d2h-cntx"><a href="#d2h-549178-7716"> <div class="line-num1">24</div> <div class="line-num2">51</div> </a></td> <td class="d2h-cntx"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">&nbsp;</span> <span class="d2h-code-line-ctn"> # Underlying Ruby String</span> </div> </td> </tr><tr> <td id="d2h-549178-7727" class="d2h-code-linenumber d2h-cntx"><a href="#d2h-549178-7727"> <div class="line-num1">25</div> <div class="line-num2">52</div> </a></td> <td class="d2h-cntx"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">&nbsp;</span> <span class="d2h-code-line-ctn"> # @return [::String]</span> </div> </td> </tr> <tr> <td class="d2h-code-linenumber d2h-info"></td> <td class="d2h-info"> <div class="d2h-code-line">@@ -32,7 +59,7 @@ module BinStruct</div> </td> </tr><tr> <td id="d2h-549178-7744" class="d2h-code-linenumber d2h-cntx"><a href="#d2h-549178-7744"> <div class="line-num1">32</div> <div class="line-num2">59</div> </a></td> <td class="d2h-cntx"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">&nbsp;</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-7755" class="d2h-code-linenumber d2h-cntx"><a href="#d2h-549178-7755"> <div class="line-num1">33</div> <div class="line-num2">60</div> </a></td> <td class="d2h-cntx"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">&nbsp;</span> <span class="d2h-code-line-ctn"> # takes length when reading</span> </div> </td> </tr><tr> <td id="d2h-549178-7766" class="d2h-code-linenumber d2h-cntx"><a href="#d2h-549178-7766"> <div class="line-num1">34</div> <div class="line-num2">61</div> </a></td> <td class="d2h-cntx"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">&nbsp;</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 class="d2h-code-linenumber d2h-del d2h-change"> <div class="line-num1">35</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] :value string value (default to +<del>&#x27;&#x27;</del>+)</span> </div> </td> </tr><tr> <td class="d2h-code-linenumber d2h-ins d2h-change"> <div class="line-num1"></div> <div class="line-num2">62</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] :value string value (default to +<ins>&quot;&quot;</ins>+)</span> </div> </td> </tr><tr> <td id="d2h-549178-7799" class="d2h-code-linenumber d2h-cntx"><a href="#d2h-549178-7799"> <div class="line-num1">36</div> <div class="line-num2">63</div> </a></td> <td class="d2h-cntx"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">&nbsp;</span> <span class="d2h-code-line-ctn"> def initialize(options = {})</span> </div> </td> </tr><tr> <td id="d2h-549178-7810" class="d2h-code-linenumber d2h-cntx"><a href="#d2h-549178-7810"> <div class="line-num1">37</div> <div class="line-num2">64</div> </a></td> <td class="d2h-cntx"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">&nbsp;</span> <span class="d2h-code-line-ctn"> register_internal_string(options[:value] || +&#x27;&#x27;)</span> </div> </td> </tr><tr> <td id="d2h-549178-7821" class="d2h-code-linenumber d2h-cntx"><a href="#d2h-549178-7821"> <div class="line-num1">38</div> <div class="line-num2">65</div> </a></td> <td class="d2h-cntx"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">&nbsp;</span> <span class="d2h-code-line-ctn"> initialize_length_from(options)</span> </div> </td> </tr> <tr> <td class="d2h-code-linenumber d2h-info"></td> <td class="d2h-info"> <div class="d2h-code-line">@@ -47,7 +74,7 @@ module BinStruct</div> </td> </tr><tr> <td id="d2h-549178-7838" class="d2h-code-linenumber d2h-cntx"><a href="#d2h-549178-7838"> <div class="line-num1">47</div> <div class="line-num2">74</div> </a></td> <td class="d2h-cntx"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">&nbsp;</span> <span class="d2h-code-line-ctn"> end</span> </div> </td> </tr><tr> <td id="d2h-549178-7849" class="d2h-code-linenumber d2h-cntx"><a href="#d2h-549178-7849"> <div class="line-num1">48</div> <div class="line-num2">75</div> </a></td> <td class="d2h-cntx"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">&nbsp;</span> <span class="d2h-code-line-ctn"><br></span> </div> </td> </tr><tr> <td id="d2h-549178-7860" class="d2h-code-linenumber d2h-cntx"><a href="#d2h-549178-7860"> <div class="line-num1">49</div> <div class="line-num2">76</div> </a></td> <td class="d2h-cntx"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">&nbsp;</span> <span class="d2h-code-line-ctn"> # Populate String from a binary String. Limit length using {LengthFrom} or {#static_length}, if one is set.</span> </div> </td> </tr><tr> <td class="d2h-code-linenumber d2h-del d2h-change"> <div class="line-num1">50</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 [::String] str</span> </div> </td> </tr><tr> <td class="d2h-code-linenumber d2h-ins d2h-change"> <div class="line-num1"></div> <div class="line-num2">77</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 [::String<ins>,nil</ins>] str</span> </div> </td> </tr><tr> <td id="d2h-549178-7893" class="d2h-code-linenumber d2h-cntx"><a href="#d2h-549178-7893"> <div class="line-num1">51</div> <div class="line-num2">78</div> </a></td> <td class="d2h-cntx"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">&nbsp;</span> <span class="d2h-code-line-ctn"> # @return [self]</span> </div> </td> </tr><tr> <td id="d2h-549178-7904" class="d2h-code-linenumber d2h-cntx"><a href="#d2h-549178-7904"> <div class="line-num1">52</div> <div class="line-num2">79</div> </a></td> <td class="d2h-cntx"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">&nbsp;</span> <span class="d2h-code-line-ctn"> def read(str)</span> </div> </td> </tr><tr> <td id="d2h-549178-7915" class="d2h-code-linenumber d2h-cntx"><a href="#d2h-549178-7915"> <div class="line-num1">53</div> <div class="line-num2">80</div> </a></td> <td class="d2h-cntx"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">&nbsp;</span> <span class="d2h-code-line-ctn"> s = read_with_length_from(str)</span> </div> </td> </tr> <tr> <td class="d2h-code-linenumber d2h-info"></td> <td class="d2h-info"> <div class="d2h-code-line">@@ -83,25 +110,29 @@ module BinStruct</div> </td> </tr><tr> <td id="d2h-549178-7932" class="d2h-code-linenumber d2h-cntx"><a href="#d2h-549178-7932"> <div class="line-num1">83</div> <div class="line-num2">110</div> </a></td> <td class="d2h-cntx"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">&nbsp;</span> <span class="d2h-code-line-ctn"> # @param [#to_s] str</span> </div> </td> </tr><tr> <td id="d2h-549178-7943" class="d2h-code-linenumber d2h-cntx"><a href="#d2h-549178-7943"> <div class="line-num1">84</div> <div class="line-num2">111</div> </a></td> <td class="d2h-cntx"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">&nbsp;</span> <span class="d2h-code-line-ctn"> # @return [self]</span> </div> </td> </tr><tr> <td id="d2h-549178-7954" class="d2h-code-linenumber d2h-cntx"><a href="#d2h-549178-7954"> <div class="line-num1">85</div> <div class="line-num2">112</div> </a></td> <td class="d2h-cntx"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">&nbsp;</span> <span class="d2h-code-line-ctn"> def &lt;&lt;(str)</span> </div> </td> </tr><tr> <td class="d2h-code-linenumber d2h-del d2h-change"> <div class="line-num1">86</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 &lt;&lt; <del>BinStruct.force_binary(</del>str.to_s<del>)</del></span> </div> </td> </tr><tr> <td class="d2h-code-linenumber d2h-ins d2h-change"> <div class="line-num1"></div> <div class="line-num2">113</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 &lt;&lt; str.to_s<ins>.b</ins></span> </div> </td> </tr><tr> <td id="d2h-549178-7987" class="d2h-code-linenumber d2h-cntx"><a href="#d2h-549178-7987"> <div class="line-num1">87</div> <div class="line-num2">114</div> </a></td> <td class="d2h-cntx"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">&nbsp;</span> <span class="d2h-code-line-ctn"> self</span> </div> </td> </tr><tr> <td id="d2h-549178-7998" class="d2h-code-linenumber d2h-cntx"><a href="#d2h-549178-7998"> <div class="line-num1">88</div> <div class="line-num2">115</div> </a></td> <td class="d2h-cntx"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">&nbsp;</span> <span class="d2h-code-line-ctn"> end</span> </div> </td> </tr><tr> <td id="d2h-549178-8009" class="d2h-code-linenumber d2h-cntx"><a href="#d2h-549178-8009"> <div class="line-num1">89</div> <div class="line-num2">116</div> </a></td> <td class="d2h-cntx"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">&nbsp;</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">90</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"> # Generate binary string</span> </div> </td> </tr><tr> <td class="d2h-code-linenumber d2h-ins d2h-change"> <div class="line-num1"></div> <div class="line-num2">117</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"> # Generate <ins>&quot;</ins>binary<ins>&quot;</ins> string</span> </div> </td> </tr><tr> <td id="d2h-549178-8042" class="d2h-code-linenumber d2h-cntx"><a href="#d2h-549178-8042"> <div class="line-num1">91</div> <div class="line-num2">118</div> </a></td> <td class="d2h-cntx"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">&nbsp;</span> <span class="d2h-code-line-ctn"> # @return [::String]</span> </div> </td> </tr><tr> <td id="d2h-549178-8053" class="d2h-code-linenumber d2h-cntx"><a href="#d2h-549178-8053"> <div class="line-num1">92</div> <div class="line-num2">119</div> </a></td> <td class="d2h-cntx"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">&nbsp;</span> <span class="d2h-code-line-ctn"> def to_s</span> </div> </td> </tr><tr> <td class="d2h-code-linenumber d2h-del d2h-change"> <div class="line-num1">93</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>@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">120</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 static_length?</ins></span> </div> </td> </tr><tr> <td id="d2h-549178-8086" class="d2h-code-linenumber d2h-ins"><a href="#d2h-549178-8086"> <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"> s = @string[0, static_length]</span> </div> </td> </tr><tr> <td id="d2h-549178-8097" class="d2h-code-linenumber d2h-ins"><a href="#d2h-549178-8097"> <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"> s &lt;&lt; (&quot;\x00&quot; * (static_length - s.length))</span> </div> </td> </tr><tr> <td id="d2h-549178-8108" class="d2h-code-linenumber d2h-ins"><a href="#d2h-549178-8108"> <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"> s.b</span> </div> </td> </tr><tr> <td id="d2h-549178-8119" class="d2h-code-linenumber d2h-ins"><a href="#d2h-549178-8119"> <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"> else</span> </div> </td> </tr><tr> <td id="d2h-549178-8130" class="d2h-code-linenumber d2h-ins"><a href="#d2h-549178-8130"> <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"> @string.b</span> </div> </td> </tr><tr> <td id="d2h-549178-8141" class="d2h-code-linenumber d2h-ins"><a href="#d2h-549178-8141"> <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"> end</span> </div> </td> </tr><tr> <td id="d2h-549178-8152" class="d2h-code-linenumber d2h-cntx"><a href="#d2h-549178-8152"> <div class="line-num1">94</div> <div class="line-num2">127</div> </a></td> <td class="d2h-cntx"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">&nbsp;</span> <span class="d2h-code-line-ctn"> end</span> </div> </td> </tr><tr> <td id="d2h-549178-8163" class="d2h-code-linenumber d2h-cntx"><a href="#d2h-549178-8163"> <div class="line-num1">95</div> <div class="line-num2">128</div> </a></td> <td class="d2h-cntx"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">&nbsp;</span> <span class="d2h-code-line-ctn"><br></span> </div> </td> </tr><tr> <td id="d2h-549178-8174" class="d2h-code-linenumber d2h-del"><a href="#d2h-549178-8174"> <div class="line-num1">96</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"> alias sz length</span> </div> </td> </tr><tr> <td id="d2h-549178-8185" class="d2h-code-linenumber d2h-cntx"><a href="#d2h-549178-8185"> <div class="line-num1">97</div> <div class="line-num2">129</div> </a></td> <td class="d2h-cntx"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">&nbsp;</span> <span class="d2h-code-line-ctn"> alias to_human to_s</span> </div> </td> </tr><tr> <td id="d2h-549178-8196" class="d2h-code-linenumber d2h-cntx"><a href="#d2h-549178-8196"> <div class="line-num1">98</div> <div class="line-num2">130</div> </a></td> <td class="d2h-cntx"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">&nbsp;</span> <span class="d2h-code-line-ctn"> alias from_human read</span> </div> </td> </tr><tr> <td id="d2h-549178-8207" class="d2h-code-linenumber d2h-cntx"><a href="#d2h-549178-8207"> <div class="line-num1">99</div> <div class="line-num2">131</div> </a></td> <td class="d2h-cntx"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">&nbsp;</span> <span class="d2h-code-line-ctn"><br></span> </div> </td> </tr><tr> <td id="d2h-549178-8218" class="d2h-code-linenumber d2h-cntx"><a href="#d2h-549178-8218"> <div class="line-num1">100</div> <div class="line-num2">132</div> </a></td> <td class="d2h-cntx"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">&nbsp;</span> <span class="d2h-code-line-ctn"> private</span> </div> </td> </tr><tr> <td id="d2h-549178-8229" class="d2h-code-linenumber d2h-cntx"><a href="#d2h-549178-8229"> <div class="line-num1">101</div> <div class="line-num2">133</div> </a></td> <td class="d2h-cntx"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">&nbsp;</span> <span class="d2h-code-line-ctn"><br></span> </div> </td> </tr><tr> <td id="d2h-549178-8240" class="d2h-code-linenumber d2h-cntx"><a href="#d2h-549178-8240"> <div class="line-num1">102</div> <div class="line-num2">134</div> </a></td> <td class="d2h-cntx"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">&nbsp;</span> <span class="d2h-code-line-ctn"> def register_internal_string(str)</span> </div> </td> </tr><tr> <td class="d2h-code-linenumber d2h-del d2h-change"> <div class="line-num1">103</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 = str</span> </div> </td> </tr><tr> <td id="d2h-549178-8262" class="d2h-code-linenumber d2h-del"><a href="#d2h-549178-8262"> <div class="line-num1">104</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"> BinStruct.force_binary(@string)</span> </div> </td> </tr><tr> <td class="d2h-code-linenumber d2h-ins d2h-change"> <div class="line-num1"></div> <div class="line-num2">135</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 = str<ins>.b</ins></span> </div> </td> </tr><tr> <td id="d2h-549178-8284" class="d2h-code-linenumber d2h-cntx"><a href="#d2h-549178-8284"> <div class="line-num1">105</div> <div class="line-num2">136</div> </a></td> <td class="d2h-cntx"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">&nbsp;</span> <span class="d2h-code-line-ctn"> end</span> </div> </td> </tr><tr> <td id="d2h-549178-8295" class="d2h-code-linenumber d2h-cntx"><a href="#d2h-549178-8295"> <div class="line-num1">106</div> <div class="line-num2">137</div> </a></td> <td class="d2h-cntx"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">&nbsp;</span> <span class="d2h-code-line-ctn"> end</span> </div> </td> </tr><tr> <td id="d2h-549178-8306" class="d2h-code-linenumber d2h-cntx"><a href="#d2h-549178-8306"> <div class="line-num1">107</div> <div class="line-num2">138</div> </a></td> <td class="d2h-cntx"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">&nbsp;</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">@@ -32,8 +32,8 @@ module BinStruct</div> </td> </tr><tr> <td id="d2h-327542-8344" class="d2h-code-linenumber d2h-cntx"><a href="#d2h-327542-8344"> <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">&nbsp;</span> <span class="d2h-code-line-ctn"> # Attributes may also be accessed through {#[]} ans {#[]=}. These methods give access</span> </div> </td> </tr><tr> <td id="d2h-327542-8355" class="d2h-code-linenumber d2h-cntx"><a href="#d2h-327542-8355"> <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">&nbsp;</span> <span class="d2h-code-line-ctn"> # to type object:</span> </div> </td> </tr><tr> <td id="d2h-327542-8366" class="d2h-code-linenumber d2h-cntx"><a href="#d2h-327542-8366"> <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">&nbsp;</span> <span class="d2h-code-line-ctn"> # mybs = MyBinaryStructure.new</span> </div> </td> </tr><tr> <td class="d2h-code-linenumber d2h-del d2h-change"> <div class="line-num1">35</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"> # mybs.attr1 # =&gt; Integer</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"> # mybs[:attr1] # =&gt; BinStruct::Int8</span> </div> </td> </tr><tr> <td class="d2h-code-linenumber d2h-ins d2h-change"> <div class="line-num1"></div> <div class="line-num2">35</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"> # mybs.attr1<ins>.class</ins> # =&gt; Integer</span> </div> </td> </tr><tr> <td class="d2h-code-linenumber d2h-ins d2h-change"> <div class="line-num1"></div> <div class="line-num2">36</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"> # mybs[:attr1]<ins>.class</ins> # =&gt; BinStruct::Int8</span> </div> </td> </tr><tr> <td id="d2h-327542-8421" class="d2h-code-linenumber d2h-cntx"><a href="#d2h-327542-8421"> <div class="line-num1">37</div> <div class="line-num2">37</div> </a></td> <td class="d2h-cntx"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">&nbsp;</span> <span class="d2h-code-line-ctn"> #</span> </div> </td> </tr><tr> <td id="d2h-327542-8432" class="d2h-code-linenumber d2h-cntx"><a href="#d2h-327542-8432"> <div class="line-num1">38</div> <div class="line-num2">38</div> </a></td> <td class="d2h-cntx"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">&nbsp;</span> <span class="d2h-code-line-ctn"> # {#initialize} accepts an option hash to populate attributes. Keys are attribute</span> </div> </td> </tr><tr> <td id="d2h-327542-8443" class="d2h-code-linenumber d2h-cntx"><a href="#d2h-327542-8443"> <div class="line-num1">39</div> <div class="line-num2">39</div> </a></td> <td class="d2h-cntx"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">&nbsp;</span> <span class="d2h-code-line-ctn"> # name symbols, and values are those expected by writer accessor.</span> </div> </td> </tr> <tr> <td class="d2h-code-linenumber d2h-info"></td> <td class="d2h-info"> <div class="d2h-code-line">@@ -57,7 +57,7 @@ module BinStruct</div> </td> </tr><tr> <td id="d2h-327542-8460" class="d2h-code-linenumber d2h-cntx"><a href="#d2h-327542-8460"> <div class="line-num1">57</div> <div class="line-num2">57</div> </a></td> <td class="d2h-cntx"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">&nbsp;</span> <span class="d2h-code-line-ctn"> # +#body+, +#body=+, +#mac_addr+ and +#mac_addr=+.</span> </div> </td> </tr><tr> <td id="d2h-327542-8471" class="d2h-code-linenumber d2h-cntx"><a href="#d2h-327542-8471"> <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">&nbsp;</span> <span class="d2h-code-line-ctn"> #</span> </div> </td> </tr><tr> <td id="d2h-327542-8482" class="d2h-code-linenumber d2h-cntx"><a href="#d2h-327542-8482"> <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">&nbsp;</span> <span class="d2h-code-line-ctn"> # {.define_attr} has many options (third optional Hash argument):</span> </div> </td> </tr><tr> <td class="d2h-code-linenumber d2h-del d2h-change"> <div class="line-num1">60</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"> # * +:default+ <del>gives</del> default attribute value. It may be a simple value (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">60</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"> # * +:default+ <ins>to</ins> <ins>define </ins>default attribute value. It may be a simple value (an Integer</span> </div> </td> </tr><tr> <td id="d2h-327542-8515" class="d2h-code-linenumber d2h-cntx"><a href="#d2h-327542-8515"> <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">&nbsp;</span> <span class="d2h-code-line-ctn"> # for an Int attribute, for example) or a lambda,</span> </div> </td> </tr><tr> <td id="d2h-327542-8526" class="d2h-code-linenumber d2h-cntx"><a href="#d2h-327542-8526"> <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">&nbsp;</span> <span class="d2h-code-line-ctn"> # * +:builder+ to give a builder&#x2F;constructor lambda to create attribute. The lambda</span> </div> </td> </tr><tr> <td id="d2h-327542-8537" class="d2h-code-linenumber d2h-cntx"><a href="#d2h-327542-8537"> <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">&nbsp;</span> <span class="d2h-code-line-ctn"> # takes 2 arguments: {Struct} subclass object owning attribute, and type class as passes</span> </div> </td> </tr> <tr> <td class="d2h-code-linenumber d2h-info"></td> <td class="d2h-info"> <div class="d2h-code-line">@@ -97,7 +97,7 @@ module BinStruct</div> </td> </tr><tr> <td id="d2h-327542-8554" class="d2h-code-linenumber d2h-cntx"><a href="#d2h-327542-8554"> <div class="line-num1">97</div> <div class="line-num2">97</div> </a></td> <td class="d2h-cntx"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">&nbsp;</span> <span class="d2h-code-line-ctn"> # * {.define_attr_before} and {.define_bit_attr_before} to define a new attribute before an existing one,</span> </div> </td> </tr><tr> <td id="d2h-327542-8565" class="d2h-code-linenumber d2h-cntx"><a href="#d2h-327542-8565"> <div class="line-num1">98</div> <div class="line-num2">98</div> </a></td> <td class="d2h-cntx"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">&nbsp;</span> <span class="d2h-code-line-ctn"> # * {.define_attr_after} and {.define_bit_attr_after} to define a new attribute after an existing onr,</span> </div> </td> </tr><tr> <td id="d2h-327542-8576" class="d2h-code-linenumber d2h-cntx"><a href="#d2h-327542-8576"> <div class="line-num1">99</div> <div class="line-num2">99</div> </a></td> <td class="d2h-cntx"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">&nbsp;</span> <span class="d2h-code-line-ctn"> # * {.remove_attr} to remove an existing attribute,</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>uptade_attr</del>} to change options of an attribute (but not its type),</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>update_attr</ins>} to change options of an attribute (but not its type),</span> </div> </td> </tr><tr> <td id="d2h-327542-8609" class="d2h-code-linenumber d2h-cntx"><a href="#d2h-327542-8609"> <div class="line-num1">101</div> <div class="line-num2">101</div> </a></td> <td class="d2h-cntx"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">&nbsp;</span> <span class="d2h-code-line-ctn"> #</span> </div> </td> </tr><tr> <td id="d2h-327542-8620" class="d2h-code-linenumber d2h-cntx"><a href="#d2h-327542-8620"> <div class="line-num1">102</div> <div class="line-num2">102</div> </a></td> <td class="d2h-cntx"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">&nbsp;</span> <span class="d2h-code-line-ctn"> # @author Sylvain Daubert (2016-2024)</span> </div> </td> </tr><tr> <td id="d2h-327542-8631" class="d2h-code-linenumber d2h-cntx"><a href="#d2h-327542-8631"> <div class="line-num1">103</div> <div class="line-num2">103</div> </a></td> <td class="d2h-cntx"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">&nbsp;</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">@@ -247,7 +247,7 @@ module BinStruct</div> </td> </tr><tr> <td id="d2h-327542-8648" class="d2h-code-linenumber d2h-cntx"><a href="#d2h-327542-8648"> <div class="line-num1">247</div> <div class="line-num2">247</div> </a></td> <td class="d2h-cntx"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">&nbsp;</span> <span class="d2h-code-line-ctn"> # class MyHeader &lt; BinStruct::Struct</span> </div> </td> </tr><tr> <td id="d2h-327542-8659" class="d2h-code-linenumber d2h-cntx"><a href="#d2h-327542-8659"> <div class="line-num1">248</div> <div class="line-num2">248</div> </a></td> <td class="d2h-cntx"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">&nbsp;</span> <span class="d2h-code-line-ctn"> # # define a 16-bit attribute named :flag</span> </div> </td> </tr><tr> <td id="d2h-327542-8670" class="d2h-code-linenumber d2h-cntx"><a href="#d2h-327542-8670"> <div class="line-num1">249</div> <div class="line-num2">249</div> </a></td> <td class="d2h-cntx"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">&nbsp;</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">250</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<del>.</del> reserved is a 7-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">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<ins>,</ins> reserved is a 7-bit attribute</span> </div> </td> </tr><tr> <td id="d2h-327542-8703" class="d2h-code-linenumber d2h-cntx"><a href="#d2h-327542-8703"> <div class="line-num1">251</div> <div class="line-num2">251</div> </a></td> <td class="d2h-cntx"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">&nbsp;</span> <span class="d2h-code-line-ctn"> # define_bit_attr :flags, flag1: 1, flag2: 1, flag3: 1, type: 3, stype: 3, reserved: 7</span> </div> </td> </tr><tr> <td id="d2h-327542-8714" class="d2h-code-linenumber d2h-cntx"><a href="#d2h-327542-8714"> <div class="line-num1">252</div> <div class="line-num2">252</div> </a></td> <td class="d2h-cntx"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">&nbsp;</span> <span class="d2h-code-line-ctn"> # end</span> </div> </td> </tr><tr> <td id="d2h-327542-8725" class="d2h-code-linenumber d2h-cntx"><a href="#d2h-327542-8725"> <div class="line-num1">253</div> <div class="line-num2">253</div> </a></td> <td class="d2h-cntx"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">&nbsp;</span> <span class="d2h-code-line-ctn"> # A bit attribute of size 1 bit defines 3 methods:</span> </div> </td> </tr> <tr> <td class="d2h-code-linenumber d2h-info"></td> <td class="d2h-info"> <div class="d2h-code-line">@@ -401,6 +401,15 @@ module BinStruct</div> </td> </tr><tr> <td id="d2h-327542-8742" class="d2h-code-linenumber d2h-cntx"><a href="#d2h-327542-8742"> <div class="line-num1">401</div> <div class="line-num2">401</div> </a></td> <td class="d2h-cntx"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">&nbsp;</span> <span class="d2h-code-line-ctn"> @attributes[attr] = obj</span> </div> </td> </tr><tr> <td id="d2h-327542-8753" class="d2h-code-linenumber d2h-cntx"><a href="#d2h-327542-8753"> <div class="line-num1">402</div> <div class="line-num2">402</div> </a></td> <td class="d2h-cntx"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">&nbsp;</span> <span class="d2h-code-line-ctn"> end</span> </div> </td> </tr><tr> <td id="d2h-327542-8764" class="d2h-code-linenumber d2h-cntx"><a href="#d2h-327542-8764"> <div class="line-num1">403</div> <div class="line-num2">403</div> </a></td> <td class="d2h-cntx"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">&nbsp;</span> <span class="d2h-code-line-ctn"><br></span> </div> </td> </tr><tr> <td id="d2h-327542-8775" class="d2h-code-linenumber d2h-ins"><a href="#d2h-327542-8775"> <div class="line-num1"></div> <div class="line-num2">404</div> </a></td> <td class="d2h-ins"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn"> # Say if struct has given attribute</span> </div> </td> </tr><tr> <td id="d2h-327542-8786" class="d2h-code-linenumber d2h-ins"><a href="#d2h-327542-8786"> <div class="line-num1"></div> <div class="line-num2">405</div> </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 attribute name</span> </div> </td> </tr><tr> <td id="d2h-327542-8797" class="d2h-code-linenumber d2h-ins"><a href="#d2h-327542-8797"> <div class="line-num1"></div> <div class="line-num2">406</div> </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 [Boolean]</span> </div> </td> </tr><tr> <td id="d2h-327542-8808" class="d2h-code-linenumber d2h-ins"><a href="#d2h-327542-8808"> <div class="line-num1"></div> <div class="line-num2">407</div> </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.4.0</span> </div> </td> </tr><tr> <td id="d2h-327542-8819" class="d2h-code-linenumber d2h-ins"><a href="#d2h-327542-8819"> <div class="line-num1"></div> <div class="line-num2">408</div> </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-327542-8830" class="d2h-code-linenumber d2h-ins"><a href="#d2h-327542-8830"> <div class="line-num1"></div> <div class="line-num2">409</div> </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 attribute?(attr)</span> </div> </td> </tr><tr> <td id="d2h-327542-8841" class="d2h-code-linenumber d2h-ins"><a href="#d2h-327542-8841"> <div class="line-num1"></div> <div class="line-num2">410</div> </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.key?(attr)</span> </div> </td> </tr><tr> <td id="d2h-327542-8852" class="d2h-code-linenumber d2h-ins"><a href="#d2h-327542-8852"> <div class="line-num1"></div> <div class="line-num2">411</div> </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-8863" class="d2h-code-linenumber d2h-ins"><a href="#d2h-327542-8863"> <div class="line-num1"></div> <div class="line-num2">412</div> </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-8874" class="d2h-code-linenumber d2h-cntx"><a href="#d2h-327542-8874"> <div class="line-num1">404</div> <div class="line-num2">413</div> </a></td> <td class="d2h-cntx"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">&nbsp;</span> <span class="d2h-code-line-ctn"> # Get all attribute names</span> </div> </td> </tr><tr> <td id="d2h-327542-8885" class="d2h-code-linenumber d2h-cntx"><a href="#d2h-327542-8885"> <div class="line-num1">405</div> <div class="line-num2">414</div> </a></td> <td class="d2h-cntx"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">&nbsp;</span> <span class="d2h-code-line-ctn"> # @return [Array&lt;Symbol&gt;]</span> </div> </td> </tr><tr> <td id="d2h-327542-8896" class="d2h-code-linenumber d2h-cntx"><a href="#d2h-327542-8896"> <div class="line-num1">406</div> <div class="line-num2">415</div> </a></td> <td class="d2h-cntx"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">&nbsp;</span> <span class="d2h-code-line-ctn"> def attributes</span> </div> </td> </tr> <tr> <td class="d2h-code-linenumber d2h-info"></td> <td class="d2h-info"> <div class="d2h-code-line">@@ -434,12 +443,11 @@ module BinStruct</div> </td> </tr><tr> <td id="d2h-327542-8913" class="d2h-code-linenumber d2h-cntx"><a href="#d2h-327542-8913"> <div class="line-num1">434</div> <div class="line-num2">443</div> </a></td> <td class="d2h-cntx"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">&nbsp;</span> <span class="d2h-code-line-ctn"> def read(str)</span> </div> </td> </tr><tr> <td id="d2h-327542-8924" class="d2h-code-linenumber d2h-cntx"><a href="#d2h-327542-8924"> <div class="line-num1">435</div> <div class="line-num2">444</div> </a></td> <td class="d2h-cntx"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">&nbsp;</span> <span class="d2h-code-line-ctn"> return self if str.nil?</span> </div> </td> </tr><tr> <td id="d2h-327542-8935" class="d2h-code-linenumber d2h-cntx"><a href="#d2h-327542-8935"> <div class="line-num1">436</div> <div class="line-num2">445</div> </a></td> <td class="d2h-cntx"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">&nbsp;</span> <span class="d2h-code-line-ctn"><br></span> </div> </td> </tr><tr> <td id="d2h-327542-8946" class="d2h-code-linenumber d2h-del"><a href="#d2h-327542-8946"> <div class="line-num1">437</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"> force_binary(str)</span> </div> </td> </tr><tr> <td id="d2h-327542-8957" class="d2h-code-linenumber d2h-cntx"><a href="#d2h-327542-8957"> <div class="line-num1">438</div> <div class="line-num2">446</div> </a></td> <td class="d2h-cntx"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">&nbsp;</span> <span class="d2h-code-line-ctn"> start = 0</span> </div> </td> </tr><tr> <td id="d2h-327542-8968" class="d2h-code-linenumber d2h-cntx"><a href="#d2h-327542-8968"> <div class="line-num1">439</div> <div class="line-num2">447</div> </a></td> <td class="d2h-cntx"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">&nbsp;</span> <span class="d2h-code-line-ctn"> attributes.each do |attr|</span> </div> </td> </tr><tr> <td id="d2h-327542-8979" class="d2h-code-linenumber d2h-cntx"><a href="#d2h-327542-8979"> <div class="line-num1">440</div> <div class="line-num2">448</div> </a></td> <td class="d2h-cntx"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">&nbsp;</span> <span class="d2h-code-line-ctn"> next unless present?(attr)</span> </div> </td> </tr><tr> <td id="d2h-327542-8990" class="d2h-code-linenumber d2h-cntx"><a href="#d2h-327542-8990"> <div class="line-num1">441</div> <div class="line-num2">449</div> </a></td> <td class="d2h-cntx"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">&nbsp;</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">442</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"> obj = self[attr].read(str[start..])</span> </div> </td> </tr><tr> <td class="d2h-code-linenumber d2h-ins d2h-change"> <div class="line-num1"></div> <div class="line-num2">450</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"> obj = self[attr].read(str<ins>.b</ins>[start..])</span> </div> </td> </tr><tr> <td id="d2h-327542-9023" class="d2h-code-linenumber d2h-cntx"><a href="#d2h-327542-9023"> <div class="line-num1">443</div> <div class="line-num2">451</div> </a></td> <td class="d2h-cntx"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">&nbsp;</span> <span class="d2h-code-line-ctn"> start += self[attr].sz</span> </div> </td> </tr><tr> <td id="d2h-327542-9034" class="d2h-code-linenumber d2h-cntx"><a href="#d2h-327542-9034"> <div class="line-num1">444</div> <div class="line-num2">452</div> </a></td> <td class="d2h-cntx"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">&nbsp;</span> <span class="d2h-code-line-ctn"> self[attr] = obj unless obj == self[attr]</span> </div> </td> </tr><tr> <td id="d2h-327542-9045" class="d2h-code-linenumber d2h-cntx"><a href="#d2h-327542-9045"> <div class="line-num1">445</div> <div class="line-num2">453</div> </a></td> <td class="d2h-cntx"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">&nbsp;</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">@@ -471,7 +479,7 @@ module BinStruct</div> </td> </tr><tr> <td id="d2h-327542-9062" class="d2h-code-linenumber d2h-cntx"><a href="#d2h-327542-9062"> <div class="line-num1">471</div> <div class="line-num2">479</div> </a></td> <td class="d2h-cntx"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">&nbsp;</span> <span class="d2h-code-line-ctn"> # @return [String]</span> </div> </td> </tr><tr> <td id="d2h-327542-9073" class="d2h-code-linenumber d2h-cntx"><a href="#d2h-327542-9073"> <div class="line-num1">472</div> <div class="line-num2">480</div> </a></td> <td class="d2h-cntx"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">&nbsp;</span> <span class="d2h-code-line-ctn"> def to_s</span> </div> </td> </tr><tr> <td id="d2h-327542-9084" class="d2h-code-linenumber d2h-cntx"><a href="#d2h-327542-9084"> <div class="line-num1">473</div> <div class="line-num2">481</div> </a></td> <td class="d2h-cntx"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">&nbsp;</span> <span class="d2h-code-line-ctn"> attributes.select { |attr| present?(attr) }</span> </div> </td> </tr><tr> <td class="d2h-code-linenumber d2h-del d2h-change"> <div class="line-num1">474</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"> .map! { |attr| <del>force_binary </del>@attributes[attr].to_s }.join</span> </div> </td> </tr><tr> <td class="d2h-code-linenumber d2h-ins d2h-change"> <div class="line-num1"></div> <div class="line-num2">482</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"> .map! { |attr| @attributes[attr].to_s<ins>.b</ins> }.join</span> </div> </td> </tr><tr> <td id="d2h-327542-9117" class="d2h-code-linenumber d2h-cntx"><a href="#d2h-327542-9117"> <div class="line-num1">475</div> <div class="line-num2">483</div> </a></td> <td class="d2h-cntx"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">&nbsp;</span> <span class="d2h-code-line-ctn"> end</span> </div> </td> </tr><tr> <td id="d2h-327542-9128" class="d2h-code-linenumber d2h-cntx"><a href="#d2h-327542-9128"> <div class="line-num1">476</div> <div class="line-num2">484</div> </a></td> <td class="d2h-cntx"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">&nbsp;</span> <span class="d2h-code-line-ctn"><br></span> </div> </td> </tr><tr> <td id="d2h-327542-9139" class="d2h-code-linenumber d2h-cntx"><a href="#d2h-327542-9139"> <div class="line-num1">477</div> <div class="line-num2">485</div> </a></td> <td class="d2h-cntx"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">&nbsp;</span> <span class="d2h-code-line-ctn"> # Size of object as binary string</span> </div> </td> </tr> <tr> <td class="d2h-code-linenumber d2h-info"></td> <td class="d2h-info"> <div class="d2h-code-line">@@ -522,6 +530,7 @@ module BinStruct</div> </td> </tr><tr> <td id="d2h-327542-9156" class="d2h-code-linenumber d2h-cntx"><a href="#d2h-327542-9156"> <div class="line-num1">522</div> <div class="line-num2">530</div> </a></td> <td class="d2h-cntx"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">&nbsp;</span> <span class="d2h-code-line-ctn"> # Force str to binary encoding</span> </div> </td> </tr><tr> <td id="d2h-327542-9167" class="d2h-code-linenumber d2h-cntx"><a href="#d2h-327542-9167"> <div class="line-num1">523</div> <div class="line-num2">531</div> </a></td> <td class="d2h-cntx"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">&nbsp;</span> <span class="d2h-code-line-ctn"> # @param [String] str</span> </div> </td> </tr><tr> <td id="d2h-327542-9178" class="d2h-code-linenumber d2h-cntx"><a href="#d2h-327542-9178"> <div class="line-num1">524</div> <div class="line-num2">532</div> </a></td> <td class="d2h-cntx"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">&nbsp;</span> <span class="d2h-code-line-ctn"> # @return [String]</span> </div> </td> </tr><tr> <td id="d2h-327542-9189" class="d2h-code-linenumber d2h-ins"><a href="#d2h-327542-9189"> <div class="line-num1"></div> <div class="line-num2">533</div> </a></td> <td class="d2h-ins"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">+</span> <span class="d2h-code-line-ctn"> # @deprecated Prefer use of Ruby&#x27;s {::String#b}</span> </div> </td> </tr><tr> <td id="d2h-327542-9200" class="d2h-code-linenumber d2h-cntx"><a href="#d2h-327542-9200"> <div class="line-num1">525</div> <div class="line-num2">534</div> </a></td> <td class="d2h-cntx"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">&nbsp;</span> <span class="d2h-code-line-ctn"> def force_binary(str)</span> </div> </td> </tr><tr> <td id="d2h-327542-9211" class="d2h-code-linenumber d2h-cntx"><a href="#d2h-327542-9211"> <div class="line-num1">526</div> <div class="line-num2">535</div> </a></td> <td class="d2h-cntx"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">&nbsp;</span> <span class="d2h-code-line-ctn"> BinStruct.force_binary(str)</span> </div> </td> </tr><tr> <td id="d2h-327542-9222" class="d2h-code-linenumber d2h-cntx"><a href="#d2h-327542-9222"> <div class="line-num1">527</div> <div class="line-num2">536</div> </a></td> <td class="d2h-cntx"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">&nbsp;</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">@@ -575,7 +584,7 @@ module BinStruct</div> </td> </tr><tr> <td id="d2h-327542-9239" class="d2h-code-linenumber d2h-cntx"><a href="#d2h-327542-9239"> <div class="line-num1">575</div> <div class="line-num2">584</div> </a></td> <td class="d2h-cntx"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">&nbsp;</span> <span class="d2h-code-line-ctn"> # @return [String]</span> </div> </td> </tr><tr> <td id="d2h-327542-9250" class="d2h-code-linenumber d2h-cntx"><a href="#d2h-327542-9250"> <div class="line-num1">576</div> <div class="line-num2">585</div> </a></td> <td class="d2h-cntx"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">&nbsp;</span> <span class="d2h-code-line-ctn"> def inspect_titleize</span> </div> </td> </tr><tr> <td id="d2h-327542-9261" class="d2h-code-linenumber d2h-cntx"><a href="#d2h-327542-9261"> <div class="line-num1">577</div> <div class="line-num2">586</div> </a></td> <td class="d2h-cntx"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">&nbsp;</span> <span class="d2h-code-line-ctn"> title = self.class.to_s</span> </div> </td> </tr><tr> <td class="d2h-code-linenumber d2h-del d2h-change"> <div class="line-num1">578</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>&quot;-- #{title} #{&#x27;-&#x27; * (66 - title.length)}\n&quot;</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"> &quot;-- #{title} #{&#x27;-&#x27; * (66 - title.length)}\n&quot;</span> </div> </td> </tr><tr> <td id="d2h-327542-9294" class="d2h-code-linenumber d2h-cntx"><a href="#d2h-327542-9294"> <div class="line-num1">579</div> <div class="line-num2">588</div> </a></td> <td class="d2h-cntx"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">&nbsp;</span> <span class="d2h-code-line-ctn"> end</span> </div> </td> </tr><tr> <td id="d2h-327542-9305" class="d2h-code-linenumber d2h-cntx"><a href="#d2h-327542-9305"> <div class="line-num1">580</div> <div class="line-num2">589</div> </a></td> <td class="d2h-cntx"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">&nbsp;</span> <span class="d2h-code-line-ctn"><br></span> </div> </td> </tr><tr> <td id="d2h-327542-9316" class="d2h-code-linenumber d2h-cntx"><a href="#d2h-327542-9316"> <div class="line-num1">581</div> <div class="line-num2">590</div> </a></td> <td class="d2h-cntx"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">&nbsp;</span> <span class="d2h-code-line-ctn"> # @param [:Symbol] attr</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-9354" class="d2h-code-linenumber d2h-cntx"><a href="#d2h-879897-9354"> <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">&nbsp;</span> <span class="d2h-code-line-ctn"><br></span> </div> </td> </tr><tr> <td id="d2h-879897-9365" class="d2h-code-linenumber d2h-cntx"><a href="#d2h-879897-9365"> <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">&nbsp;</span> <span class="d2h-code-line-ctn">module BinStruct</span> </div> </td> </tr><tr> <td id="d2h-879897-9376" class="d2h-code-linenumber d2h-cntx"><a href="#d2h-879897-9376"> <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">&nbsp;</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 = &#x27;0.<del>3</del>.0&#x27;</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 = &#x27;0.<ins>5</ins>.0&#x27;</span> </div> </td> </tr><tr> <td id="d2h-879897-9409" class="d2h-code-linenumber d2h-cntx"><a href="#d2h-879897-9409"> <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">&nbsp;</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">@@ -8,7 +8,31 @@</div> </td> </tr><tr> <td id="d2h-828542-9447" class="d2h-code-linenumber d2h-cntx"><a href="#d2h-828542-9447"> <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">&nbsp;</span> <span class="d2h-code-line-ctn"><br></span> </div> </td> </tr><tr> <td id="d2h-828542-9458" class="d2h-code-linenumber d2h-cntx"><a href="#d2h-828542-9458"> <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">&nbsp;</span> <span class="d2h-code-line-ctn">require_relative &#x27;bin_struct&#x2F;version&#x27;</span> </div> </td> </tr><tr> <td id="d2h-828542-9469" class="d2h-code-linenumber d2h-cntx"><a href="#d2h-828542-9469"> <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">&nbsp;</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">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"># BinStruct module</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"># BinStruct module<ins> provides classes to easily serialize&#x2F;deserialize data to&#x2F;from binary strings.</ins></span> </div> </td> </tr><tr> <td id="d2h-828542-9502" class="d2h-code-linenumber d2h-ins"><a href="#d2h-828542-9502"> <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"># @example Basic example</span> </div> </td> </tr><tr> <td id="d2h-828542-9513" class="d2h-code-linenumber d2h-ins"><a href="#d2h-828542-9513"> <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"># class MyData &lt; BinStruct::Struct</span> </div> </td> </tr><tr> <td id="d2h-828542-9524" class="d2h-code-linenumber d2h-ins"><a href="#d2h-828542-9524"> <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"># # Define 2 attributes as a 8-bit integer</span> </div> </td> </tr><tr> <td id="d2h-828542-9535" class="d2h-code-linenumber d2h-ins"><a href="#d2h-828542-9535"> <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 :byte1, BinStruct::Int8</span> </div> </td> </tr><tr> <td id="d2h-828542-9546" class="d2h-code-linenumber d2h-ins"><a href="#d2h-828542-9546"> <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"># define_attr :byte2, BinStruct::Int8</span> </div> </td> </tr><tr> <td id="d2h-828542-9557" class="d2h-code-linenumber d2h-ins"><a href="#d2h-828542-9557"> <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"># # Define an attribute as a 16-bit big endian integer</span> </div> </td> </tr><tr> <td id="d2h-828542-9568" class="d2h-code-linenumber d2h-ins"><a href="#d2h-828542-9568"> <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"># define_attr :word, BinStruct::Int16</span> </div> </td> </tr><tr> <td id="d2h-828542-9579" class="d2h-code-linenumber d2h-ins"><a href="#d2h-828542-9579"> <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"># # Define a 32-bit little endian integer attribute</span> </div> </td> </tr><tr> <td id="d2h-828542-9590" class="d2h-code-linenumber d2h-ins"><a href="#d2h-828542-9590"> <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"># define_attr :dword, BinStruct::Int32le</span> </div> </td> </tr><tr> <td id="d2h-828542-9601" class="d2h-code-linenumber d2h-ins"><a href="#d2h-828542-9601"> <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"># # Define a string prepending with its length (8-bit integer)</span> </div> </td> </tr><tr> <td id="d2h-828542-9612" class="d2h-code-linenumber d2h-ins"><a href="#d2h-828542-9612"> <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"># define_attr :str, BinStruct::IntString</span> </div> </td> </tr><tr> <td id="d2h-828542-9623" class="d2h-code-linenumber d2h-ins"><a href="#d2h-828542-9623"> <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"># end</span> </div> </td> </tr><tr> <td id="d2h-828542-9634" class="d2h-code-linenumber d2h-ins"><a href="#d2h-828542-9634"> <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">#</span> </div> </td> </tr><tr> <td id="d2h-828542-9645" class="d2h-code-linenumber d2h-ins"><a href="#d2h-828542-9645"> <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"># # Generate binary data</span> </div> </td> </tr><tr> <td id="d2h-828542-9656" class="d2h-code-linenumber d2h-ins"><a href="#d2h-828542-9656"> <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"># mydata = MyData.new(byte1: 1, byte2: 2, word: 3, dword: 4, str: &#x27;abc&#x27;)</span> </div> </td> </tr><tr> <td id="d2h-828542-9667" class="d2h-code-linenumber d2h-ins"><a href="#d2h-828542-9667"> <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"># mydata.to_s #=&gt; &quot;\x01\x02\x00\x03\x04\x00\x00\x00\x03abc&quot;.b</span> </div> </td> </tr><tr> <td id="d2h-828542-9678" class="d2h-code-linenumber d2h-ins"><a href="#d2h-828542-9678"> <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">#</span> </div> </td> </tr><tr> <td id="d2h-828542-9689" class="d2h-code-linenumber d2h-ins"><a href="#d2h-828542-9689"> <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"># # Parse binary data</span> </div> </td> </tr><tr> <td id="d2h-828542-9700" class="d2h-code-linenumber d2h-ins"><a href="#d2h-828542-9700"> <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"># mydata.read(&quot;\x00\xff\x01\x23\x11\x22\x33\x44\x00&quot;)</span> </div> </td> </tr><tr> <td id="d2h-828542-9711" class="d2h-code-linenumber d2h-ins"><a href="#d2h-828542-9711"> <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"># mydata.byte1 #=&gt; 0</span> </div> </td> </tr><tr> <td id="d2h-828542-9722" class="d2h-code-linenumber d2h-ins"><a href="#d2h-828542-9722"> <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"># mydata.byte2 #=&gt; 255</span> </div> </td> </tr><tr> <td id="d2h-828542-9733" class="d2h-code-linenumber d2h-ins"><a href="#d2h-828542-9733"> <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"># mydata.word #=&gt; 0x0123</span> </div> </td> </tr><tr> <td id="d2h-828542-9744" class="d2h-code-linenumber d2h-ins"><a href="#d2h-828542-9744"> <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"># mydata.dword #=&gt; 0x44332211</span> </div> </td> </tr><tr> <td id="d2h-828542-9755" class="d2h-code-linenumber d2h-ins"><a href="#d2h-828542-9755"> <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"># mydata.str #=&gt; &quot;&quot;</span> </div> </td> </tr><tr> <td id="d2h-828542-9766" class="d2h-code-linenumber d2h-cntx"><a href="#d2h-828542-9766"> <div class="line-num1">12</div> <div class="line-num2">36</div> </a></td> <td class="d2h-cntx"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">&nbsp;</span> <span class="d2h-code-line-ctn"># @author LemonTree55</span> </div> </td> </tr><tr> <td id="d2h-828542-9777" class="d2h-code-linenumber d2h-cntx"><a href="#d2h-828542-9777"> <div class="line-num1">13</div> <div class="line-num2">37</div> </a></td> <td class="d2h-cntx"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">&nbsp;</span> <span class="d2h-code-line-ctn">module BinStruct</span> </div> </td> </tr><tr> <td id="d2h-828542-9788" class="d2h-code-linenumber d2h-cntx"><a href="#d2h-828542-9788"> <div class="line-num1">14</div> <div class="line-num2">38</div> </a></td> <td class="d2h-cntx"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">&nbsp;</span> <span class="d2h-code-line-ctn"> # BinStruct error class</span> </div> </td> </tr> <tr> <td class="d2h-code-linenumber d2h-info"></td> <td class="d2h-info"> <div class="d2h-code-line">@@ -17,8 +41,9 @@ module BinStruct</div> </td> </tr><tr> <td id="d2h-828542-9805" class="d2h-code-linenumber d2h-cntx"><a href="#d2h-828542-9805"> <div class="line-num1">17</div> <div class="line-num2">41</div> </a></td> <td class="d2h-cntx"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">&nbsp;</span> <span class="d2h-code-line-ctn"> # Force binary encoding for +str+</span> </div> </td> </tr><tr> <td id="d2h-828542-9816" class="d2h-code-linenumber d2h-cntx"><a href="#d2h-828542-9816"> <div class="line-num1">18</div> <div class="line-num2">42</div> </a></td> <td class="d2h-cntx"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">&nbsp;</span> <span class="d2h-code-line-ctn"> # @param [String] str</span> </div> </td> </tr><tr> <td id="d2h-828542-9827" class="d2h-code-linenumber d2h-cntx"><a href="#d2h-828542-9827"> <div class="line-num1">19</div> <div class="line-num2">43</div> </a></td> <td class="d2h-cntx"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">&nbsp;</span> <span class="d2h-code-line-ctn"> # @return [String] binary encoded string</span> </div> </td> </tr><tr> <td id="d2h-828542-9838" class="d2h-code-linenumber d2h-ins"><a href="#d2h-828542-9838"> <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"> # @deprecated Use {::String#b} instead of this method</span> </div> </td> </tr><tr> <td id="d2h-828542-9849" class="d2h-code-linenumber d2h-cntx"><a href="#d2h-828542-9849"> <div class="line-num1">20</div> <div class="line-num2">45</div> </a></td> <td class="d2h-cntx"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">&nbsp;</span> <span class="d2h-code-line-ctn"> def self.force_binary(str)</span> </div> </td> </tr><tr> <td class="d2h-code-linenumber d2h-del d2h-change"> <div class="line-num1">21</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"> str.<del>dup.force_encoding(Encoding::BINARY)</del></span> </div> </td> </tr><tr> <td class="d2h-code-linenumber d2h-ins d2h-change"> <div class="line-num1"></div> <div class="line-num2">46</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"> str.<ins>b</ins></span> </div> </td> </tr><tr> <td id="d2h-828542-9882" class="d2h-code-linenumber d2h-cntx"><a href="#d2h-828542-9882"> <div class="line-num1">22</div> <div class="line-num2">47</div> </a></td> <td class="d2h-cntx"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">&nbsp;</span> <span class="d2h-code-line-ctn"> end</span> </div> </td> </tr><tr> <td id="d2h-828542-9893" class="d2h-code-linenumber d2h-cntx"><a href="#d2h-828542-9893"> <div class="line-num1">23</div> <div class="line-num2">48</div> </a></td> <td class="d2h-cntx"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">&nbsp;</span> <span class="d2h-code-line-ctn">end</span> </div> </td> </tr><tr> <td id="d2h-828542-9904" class="d2h-code-linenumber d2h-cntx"><a href="#d2h-828542-9904"> <div class="line-num1">24</div> <div class="line-num2">49</div> </a></td> <td class="d2h-cntx"> <div class="d2h-code-line"> <span class="d2h-code-line-prefix">&nbsp;</span> <span class="d2h-code-line-ctn"><br></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-9942" class="d2h-code-linenumber d2h-cntx"><a href="#d2h-004177-9942"> <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">&nbsp;</span> <span class="d2h-code-line-ctn">--- !ruby&#x2F;object:Gem::Specification</span> </div> </td> </tr><tr> <td id="d2h-004177-9953" class="d2h-code-linenumber d2h-cntx"><a href="#d2h-004177-9953"> <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">&nbsp;</span> <span class="d2h-code-line-ctn">name: bin_struct</span> </div> </td> </tr><tr> <td id="d2h-004177-9964" class="d2h-code-linenumber d2h-cntx"><a href="#d2h-004177-9964"> <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">&nbsp;</span> <span class="d2h-code-line-ctn">version: !ruby&#x2F;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>3</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>5</ins>.0</span> </div> </td> </tr><tr> <td id="d2h-004177-9997" class="d2h-code-linenumber d2h-cntx"><a href="#d2h-004177-9997"> <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">&nbsp;</span> <span class="d2h-code-line-ctn">platform: ruby</span> </div> </td> </tr><tr> <td id="d2h-004177-10008" class="d2h-code-linenumber d2h-cntx"><a href="#d2h-004177-10008"> <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">&nbsp;</span> <span class="d2h-code-line-ctn">authors:</span> </div> </td> </tr><tr> <td id="d2h-004177-10019" class="d2h-code-linenumber d2h-cntx"><a href="#d2h-004177-10019"> <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">&nbsp;</span> <span class="d2h-code-line-ctn">- LemonTree55</span> </div> </td> </tr><tr> <td id="d2h-004177-10030" class="d2h-code-linenumber d2h-cntx"><a href="#d2h-004177-10030"> <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">&nbsp;</span> <span class="d2h-code-line-ctn">autorequire:</span> </div> </td> </tr><tr> <td id="d2h-004177-10041" class="d2h-code-linenumber d2h-cntx"><a href="#d2h-004177-10041"> <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">&nbsp;</span> <span class="d2h-code-line-ctn">bindir: bin</span> </div> </td> </tr><tr> <td id="d2h-004177-10052" class="d2h-code-linenumber d2h-cntx"><a href="#d2h-004177-10052"> <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">&nbsp;</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: <del>2024</del>-<del>12</del>-<del>02</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: <ins>2025</ins>-<ins>02</ins>-<ins>17</ins> 00:00:00.000000000 Z</span> </div> </td> </tr><tr> <td id="d2h-004177-10085" class="d2h-code-linenumber d2h-cntx"><a href="#d2h-004177-10085"> <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">&nbsp;</span> <span class="d2h-code-line-ctn">dependencies: []</span> </div> </td> </tr><tr> <td id="d2h-004177-10096" class="d2h-code-linenumber d2h-cntx"><a href="#d2h-004177-10096"> <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">&nbsp;</span> <span class="d2h-code-line-ctn">description: &#x27;BinStruct is a binary dissector and generator. It eases manipulating</span> </div> </td> </tr><tr> <td id="d2h-004177-10107" class="d2h-code-linenumber d2h-cntx"><a href="#d2h-004177-10107"> <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">&nbsp;</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">@@ -58,7 +58,7 @@ required_ruby_version: !ruby&#x2F;object:Gem::Requirement</div> </td> </tr><tr> <td id="d2h-004177-10124" class="d2h-code-linenumber d2h-cntx"><a href="#d2h-004177-10124"> <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">&nbsp;</span> <span class="d2h-code-line-ctn"> requirements:</span> </div> </td> </tr><tr> <td id="d2h-004177-10135" class="d2h-code-linenumber d2h-cntx"><a href="#d2h-004177-10135"> <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">&nbsp;</span> <span class="d2h-code-line-ctn"> - - &quot;&gt;=&quot;</span> </div> </td> </tr><tr> <td id="d2h-004177-10146" class="d2h-code-linenumber d2h-cntx"><a href="#d2h-004177-10146"> <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">&nbsp;</span> <span class="d2h-code-line-ctn"> - !ruby&#x2F;object:Gem::Version</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"> version: <del>2</del>.<del>7</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">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"> version: <ins>3</ins>.<ins>0</ins>.0</span> </div> </td> </tr><tr> <td id="d2h-004177-10179" class="d2h-code-linenumber d2h-cntx"><a href="#d2h-004177-10179"> <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">&nbsp;</span> <span class="d2h-code-line-ctn">required_rubygems_version: !ruby&#x2F;object:Gem::Requirement</span> </div> </td> </tr><tr> <td id="d2h-004177-10190" class="d2h-code-linenumber d2h-cntx"><a href="#d2h-004177-10190"> <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">&nbsp;</span> <span class="d2h-code-line-ctn"> requirements:</span> </div> </td> </tr><tr> <td id="d2h-004177-10201" class="d2h-code-linenumber d2h-cntx"><a href="#d2h-004177-10201"> <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">&nbsp;</span> <span class="d2h-code-line-ctn"> - - &quot;&gt;=&quot;</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>

Pages: 1 2 3 4 5 6 7 8 9 10