NGL@1.0.0-beta.7 Home Manual Reference Source Gallery

src/store/chain-store.js

/**
 * @file Chain Store
 * @author Alexander Rose <alexander.rose@weirdbyte.de>
 * @private
 */

import Store from './store.js'

/**
 * Chain store
 */
class ChainStore extends Store {
  get _defaultFields () {
    return [
      [ 'entityIndex', 1, 'uint16' ],
      [ 'modelIndex', 1, 'uint16' ],
      [ 'residueOffset', 1, 'uint32' ],
      [ 'residueCount', 1, 'uint32' ],

      [ 'chainname', 4, 'uint8' ],
      [ 'chainid', 4, 'uint8' ]
    ]
  }

  setChainname (i, str) {
    const j = 4 * i
    this.chainname[ j ] = str.charCodeAt(0)
    this.chainname[ j + 1 ] = str.charCodeAt(1)
    this.chainname[ j + 2 ] = str.charCodeAt(2)
    this.chainname[ j + 3 ] = str.charCodeAt(3)
  }

  getChainname (i) {
    let chainname = ''
    for (let k = 0; k < 4; ++k) {
      const code = this.chainname[ 4 * i + k ]
      if (code) {
        chainname += String.fromCharCode(code)
      } else {
        break
      }
    }
    return chainname
  }

  setChainid (i, str) {
    const j = 4 * i
    this.chainid[ j ] = str.charCodeAt(0)
    this.chainid[ j + 1 ] = str.charCodeAt(1)
    this.chainid[ j + 2 ] = str.charCodeAt(2)
    this.chainid[ j + 3 ] = str.charCodeAt(3)
  }

  getChainid (i) {
    let chainid = ''
    for (let k = 0; k < 4; ++k) {
      const code = this.chainid[ 4 * i + k ]
      if (code) {
        chainid += String.fromCharCode(code)
      } else {
        break
      }
    }
    return chainid
  }
}

export default ChainStore