// Generated by CoffeeScript 1.7.1 (function() { var NumberT, StringT, utils; NumberT = require('./Number').Number; utils = require('./utils'); StringT = (function() { function StringT(length, encoding) { this.length = length; this.encoding = encoding != null ? encoding : 'ascii'; } StringT.prototype.decode = function(stream, parent) { var buffer, encoding, length, pos, string; length = (function() { if (this.length != null) { return utils.resolveLength(this.length, stream, parent); } else { buffer = stream.buffer, length = stream.length, pos = stream.pos; while (pos < length && buffer[pos] !== 0x00) { ++pos; } return pos - stream.pos; } }).call(this); encoding = this.encoding; if (typeof encoding === 'function') { encoding = encoding.call(parent, parent) || 'ascii'; } string = stream.readString(length, encoding); if ((this.length == null) && stream.pos < stream.length) { stream.pos++; } return string; }; StringT.prototype.size = function(val, parent) { var encoding, size; if (!val) { return utils.resolveLength(this.length, null, parent); } encoding = this.encoding; if (typeof encoding === 'function') { encoding = encoding.call(parent != null ? parent.val : void 0, parent != null ? parent.val : void 0) || 'ascii'; } if (encoding === 'utf16be') { encoding = 'utf16le'; } size = Buffer.byteLength(val, encoding); if (this.length instanceof NumberT) { size += this.length.size(); } if (this.length == null) { size++; } return size; }; StringT.prototype.encode = function(stream, val, parent) { var encoding; encoding = this.encoding; if (typeof encoding === 'function') { encoding = encoding.call(parent != null ? parent.val : void 0, parent != null ? parent.val : void 0) || 'ascii'; } if (this.length instanceof NumberT) { this.length.encode(stream, Buffer.byteLength(val, encoding)); } stream.writeString(val, encoding); if (this.length == null) { return stream.writeUInt8(0x00); } }; return StringT; })(); module.exports = StringT; }).call(this);