// source: spatial.proto
/**
 * @fileoverview
 * @enhanceable
 * @suppress {missingRequire} reports error on implicit type usages.
 * @suppress {messageConventions} JS Compiler reports an error if a variable or
 *     field starts with 'MSG_' and isn't a translatable message.
 * @public
 */
// GENERATED CODE -- DO NOT EDIT!
/* eslint-disable */
// @ts-nocheck

var jspb = require('google-protobuf');
var goog = jspb;
var global = (function() { return this || window || global || self || Function('return this')(); }).call(null);

var vector_pb = require('./vector_pb.js');
goog.object.extend(proto, vector_pb);
goog.exportSymbol('proto.Messages.GridControl', null, global);
goog.exportSymbol('proto.Messages.MeshControl', null, global);
goog.exportSymbol('proto.Messages.Topology', null, global);
goog.exportSymbol('proto.Messages.TreeControl', null, global);
goog.exportSymbol('proto.Messages.Zone', null, global);
/**
 * Generated by JsPbCodeGenerator.
 * @param {Array=} opt_data Optional initial data array, typically from a
 * server response, or constructed directly in Javascript. The array is used
 * in place and becomes part of the constructed object. It is not cloned.
 * If no data is provided, the constructed object will be empty, but still
 * valid.
 * @extends {jspb.Message}
 * @constructor
 */
proto.Messages.Zone = function(opt_data) {
  jspb.Message.initialize(this, opt_data, 0, -1, proto.Messages.Zone.repeatedFields_, null);
};
goog.inherits(proto.Messages.Zone, jspb.Message);
if (goog.DEBUG && !COMPILED) {
  /**
   * @public
   * @override
   */
  proto.Messages.Zone.displayName = 'proto.Messages.Zone';
}
/**
 * Generated by JsPbCodeGenerator.
 * @param {Array=} opt_data Optional initial data array, typically from a
 * server response, or constructed directly in Javascript. The array is used
 * in place and becomes part of the constructed object. It is not cloned.
 * If no data is provided, the constructed object will be empty, but still
 * valid.
 * @extends {jspb.Message}
 * @constructor
 */
proto.Messages.GridControl = function(opt_data) {
  jspb.Message.initialize(this, opt_data, 0, -1, proto.Messages.GridControl.repeatedFields_, null);
};
goog.inherits(proto.Messages.GridControl, jspb.Message);
if (goog.DEBUG && !COMPILED) {
  /**
   * @public
   * @override
   */
  proto.Messages.GridControl.displayName = 'proto.Messages.GridControl';
}
/**
 * Generated by JsPbCodeGenerator.
 * @param {Array=} opt_data Optional initial data array, typically from a
 * server response, or constructed directly in Javascript. The array is used
 * in place and becomes part of the constructed object. It is not cloned.
 * If no data is provided, the constructed object will be empty, but still
 * valid.
 * @extends {jspb.Message}
 * @constructor
 */
proto.Messages.MeshControl = function(opt_data) {
  jspb.Message.initialize(this, opt_data, 0, -1, proto.Messages.MeshControl.repeatedFields_, null);
};
goog.inherits(proto.Messages.MeshControl, jspb.Message);
if (goog.DEBUG && !COMPILED) {
  /**
   * @public
   * @override
   */
  proto.Messages.MeshControl.displayName = 'proto.Messages.MeshControl';
}
/**
 * Generated by JsPbCodeGenerator.
 * @param {Array=} opt_data Optional initial data array, typically from a
 * server response, or constructed directly in Javascript. The array is used
 * in place and becomes part of the constructed object. It is not cloned.
 * If no data is provided, the constructed object will be empty, but still
 * valid.
 * @extends {jspb.Message}
 * @constructor
 */
proto.Messages.TreeControl = function(opt_data) {
  jspb.Message.initialize(this, opt_data, 0, -1, null, null);
};
goog.inherits(proto.Messages.TreeControl, jspb.Message);
if (goog.DEBUG && !COMPILED) {
  /**
   * @public
   * @override
   */
  proto.Messages.TreeControl.displayName = 'proto.Messages.TreeControl';
}
/**
 * Generated by JsPbCodeGenerator.
 * @param {Array=} opt_data Optional initial data array, typically from a
 * server response, or constructed directly in Javascript. The array is used
 * in place and becomes part of the constructed object. It is not cloned.
 * If no data is provided, the constructed object will be empty, but still
 * valid.
 * @extends {jspb.Message}
 * @constructor
 */
proto.Messages.Topology = function(opt_data) {
  jspb.Message.initialize(this, opt_data, 0, -1, proto.Messages.Topology.repeatedFields_, null);
};
goog.inherits(proto.Messages.Topology, jspb.Message);
if (goog.DEBUG && !COMPILED) {
  /**
   * @public
   * @override
   */
  proto.Messages.Topology.displayName = 'proto.Messages.Topology';
}

/**
 * List of repeated fields within this message type.
 * @private {!Array<number>}
 * @const
 */
proto.Messages.Zone.repeatedFields_ = [5,11];



if (jspb.Message.GENERATE_TO_OBJECT) {
/**
 * Creates an object representation of this proto.
 * Field names that are reserved in JavaScript and will be renamed to pb_name.
 * Optional fields that are not set will be set to undefined.
 * To access a reserved field use, foo.pb_<name>, eg, foo.pb_default.
 * For the list of reserved names please see:
 *     net/proto2/compiler/js/internal/generator.cc#kKeyword.
 * @param {boolean=} opt_includeInstance Deprecated. whether to include the
 *     JSPB instance for transitional soy proto support:
 *     http://goto/soy-param-migration
 * @return {!Object}
 */
proto.Messages.Zone.prototype.toObject = function(opt_includeInstance) {
  return proto.Messages.Zone.toObject(opt_includeInstance, this);
};


/**
 * Static version of the {@see toObject} method.
 * @param {boolean|undefined} includeInstance Deprecated. Whether to include
 *     the JSPB instance for transitional soy proto support:
 *     http://goto/soy-param-migration
 * @param {!proto.Messages.Zone} msg The msg instance to transform.
 * @return {!Object}
 * @suppress {unusedLocalVariables} f is only used for nested messages
 */
proto.Messages.Zone.toObject = function(includeInstance, msg) {
  var f, obj = {
    name: jspb.Message.getFieldWithDefault(msg, 1, ""),
    id: jspb.Message.getFieldWithDefault(msg, 2, 0),
    dimensionality: jspb.Message.getFieldWithDefault(msg, 3, 0),
    revision: (f = msg.getRevision()) && vector_pb.Revision.toObject(includeInstance, f),
    elementsList: (f = jspb.Message.getRepeatedField(msg, 5)) == null ? undefined : f,
    elementCount: jspb.Message.getFieldWithDefault(msg, 6, 0),
    comments: jspb.Message.getFieldWithDefault(msg, 7, ""),
    info: jspb.Message.getFieldWithDefault(msg, 8, ""),
    resourceName: jspb.Message.getFieldWithDefault(msg, 9, ""),
    bounds: (f = msg.getBounds()) && vector_pb.Extrema.toObject(includeInstance, f),
    terminalCoordList: (f = jspb.Message.getRepeatedFloatingPointField(msg, 11)) == null ? undefined : f
  };

  if (includeInstance) {
    obj.$jspbMessageInstance = msg;
  }
  return obj;
};
}


/**
 * Deserializes binary data (in protobuf wire format).
 * @param {jspb.ByteSource} bytes The bytes to deserialize.
 * @return {!proto.Messages.Zone}
 */
proto.Messages.Zone.deserializeBinary = function(bytes) {
  var reader = new jspb.BinaryReader(bytes);
  var msg = new proto.Messages.Zone;
  return proto.Messages.Zone.deserializeBinaryFromReader(msg, reader);
};


/**
 * Deserializes binary data (in protobuf wire format) from the
 * given reader into the given message object.
 * @param {!proto.Messages.Zone} msg The message object to deserialize into.
 * @param {!jspb.BinaryReader} reader The BinaryReader to use.
 * @return {!proto.Messages.Zone}
 */
proto.Messages.Zone.deserializeBinaryFromReader = function(msg, reader) {
  while (reader.nextField()) {
    if (reader.isEndGroup()) {
      break;
    }
    var field = reader.getFieldNumber();
    switch (field) {
    case 1:
      var value = /** @type {string} */ (reader.readString());
      msg.setName(value);
      break;
    case 2:
      var value = /** @type {number} */ (reader.readInt32());
      msg.setId(value);
      break;
    case 3:
      var value = /** @type {number} */ (reader.readUint32());
      msg.setDimensionality(value);
      break;
    case 4:
      var value = new vector_pb.Revision;
      reader.readMessage(value,vector_pb.Revision.deserializeBinaryFromReader);
      msg.setRevision(value);
      break;
    case 5:
      var values = /** @type {!Array<number>} */ (reader.isDelimited() ? reader.readPackedUint32() : [reader.readUint32()]);
      for (var i = 0; i < values.length; i++) {
        msg.addElements(values[i]);
      }
      break;
    case 6:
      var value = /** @type {number} */ (reader.readUint32());
      msg.setElementCount(value);
      break;
    case 7:
      var value = /** @type {string} */ (reader.readString());
      msg.setComments(value);
      break;
    case 8:
      var value = /** @type {string} */ (reader.readString());
      msg.setInfo(value);
      break;
    case 9:
      var value = /** @type {string} */ (reader.readString());
      msg.setResourceName(value);
      break;
    case 10:
      var value = new vector_pb.Extrema;
      reader.readMessage(value,vector_pb.Extrema.deserializeBinaryFromReader);
      msg.setBounds(value);
      break;
    case 11:
      var values = /** @type {!Array<number>} */ (reader.isDelimited() ? reader.readPackedFloat() : [reader.readFloat()]);
      for (var i = 0; i < values.length; i++) {
        msg.addTerminalCoord(values[i]);
      }
      break;
    default:
      reader.skipField();
      break;
    }
  }
  return msg;
};


/**
 * Serializes the message to binary data (in protobuf wire format).
 * @return {!Uint8Array}
 */
proto.Messages.Zone.prototype.serializeBinary = function() {
  var writer = new jspb.BinaryWriter();
  proto.Messages.Zone.serializeBinaryToWriter(this, writer);
  return writer.getResultBuffer();
};


/**
 * Serializes the given message to binary data (in protobuf wire
 * format), writing to the given BinaryWriter.
 * @param {!proto.Messages.Zone} message
 * @param {!jspb.BinaryWriter} writer
 * @suppress {unusedLocalVariables} f is only used for nested messages
 */
proto.Messages.Zone.serializeBinaryToWriter = function(message, writer) {
  var f = undefined;
  f = message.getName();
  if (f.length > 0) {
    writer.writeString(
      1,
      f
    );
  }
  f = message.getId();
  if (f !== 0) {
    writer.writeInt32(
      2,
      f
    );
  }
  f = message.getDimensionality();
  if (f !== 0) {
    writer.writeUint32(
      3,
      f
    );
  }
  f = message.getRevision();
  if (f != null) {
    writer.writeMessage(
      4,
      f,
      vector_pb.Revision.serializeBinaryToWriter
    );
  }
  f = message.getElementsList();
  if (f.length > 0) {
    writer.writePackedUint32(
      5,
      f
    );
  }
  f = message.getElementCount();
  if (f !== 0) {
    writer.writeUint32(
      6,
      f
    );
  }
  f = message.getComments();
  if (f.length > 0) {
    writer.writeString(
      7,
      f
    );
  }
  f = message.getInfo();
  if (f.length > 0) {
    writer.writeString(
      8,
      f
    );
  }
  f = message.getResourceName();
  if (f.length > 0) {
    writer.writeString(
      9,
      f
    );
  }
  f = message.getBounds();
  if (f != null) {
    writer.writeMessage(
      10,
      f,
      vector_pb.Extrema.serializeBinaryToWriter
    );
  }
  f = message.getTerminalCoordList();
  if (f.length > 0) {
    writer.writePackedFloat(
      11,
      f
    );
  }
};


/**
 * optional string name = 1;
 * @return {string}
 */
proto.Messages.Zone.prototype.getName = function() {
  return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 1, ""));
};


/**
 * @param {string} value
 * @return {!proto.Messages.Zone} returns this
 */
proto.Messages.Zone.prototype.setName = function(value) {
  return jspb.Message.setProto3StringField(this, 1, value);
};


/**
 * optional int32 id = 2;
 * @return {number}
 */
proto.Messages.Zone.prototype.getId = function() {
  return /** @type {number} */ (jspb.Message.getFieldWithDefault(this, 2, 0));
};


/**
 * @param {number} value
 * @return {!proto.Messages.Zone} returns this
 */
proto.Messages.Zone.prototype.setId = function(value) {
  return jspb.Message.setProto3IntField(this, 2, value);
};


/**
 * optional uint32 dimensionality = 3;
 * @return {number}
 */
proto.Messages.Zone.prototype.getDimensionality = function() {
  return /** @type {number} */ (jspb.Message.getFieldWithDefault(this, 3, 0));
};


/**
 * @param {number} value
 * @return {!proto.Messages.Zone} returns this
 */
proto.Messages.Zone.prototype.setDimensionality = function(value) {
  return jspb.Message.setProto3IntField(this, 3, value);
};


/**
 * optional Revision revision = 4;
 * @return {?proto.Messages.Revision}
 */
proto.Messages.Zone.prototype.getRevision = function() {
  return /** @type{?proto.Messages.Revision} */ (
    jspb.Message.getWrapperField(this, vector_pb.Revision, 4));
};


/**
 * @param {?proto.Messages.Revision|undefined} value
 * @return {!proto.Messages.Zone} returns this
*/
proto.Messages.Zone.prototype.setRevision = function(value) {
  return jspb.Message.setWrapperField(this, 4, value);
};


/**
 * Clears the message field making it undefined.
 * @return {!proto.Messages.Zone} returns this
 */
proto.Messages.Zone.prototype.clearRevision = function() {
  return this.setRevision(undefined);
};


/**
 * Returns whether this field is set.
 * @return {boolean}
 */
proto.Messages.Zone.prototype.hasRevision = function() {
  return jspb.Message.getField(this, 4) != null;
};


/**
 * repeated uint32 elements = 5;
 * @return {!Array<number>}
 */
proto.Messages.Zone.prototype.getElementsList = function() {
  return /** @type {!Array<number>} */ (jspb.Message.getRepeatedField(this, 5));
};


/**
 * @param {!Array<number>} value
 * @return {!proto.Messages.Zone} returns this
 */
proto.Messages.Zone.prototype.setElementsList = function(value) {
  return jspb.Message.setField(this, 5, value || []);
};


/**
 * @param {number} value
 * @param {number=} opt_index
 * @return {!proto.Messages.Zone} returns this
 */
proto.Messages.Zone.prototype.addElements = function(value, opt_index) {
  return jspb.Message.addToRepeatedField(this, 5, value, opt_index);
};


/**
 * Clears the list making it empty but non-null.
 * @return {!proto.Messages.Zone} returns this
 */
proto.Messages.Zone.prototype.clearElementsList = function() {
  return this.setElementsList([]);
};


/**
 * optional uint32 element_count = 6;
 * @return {number}
 */
proto.Messages.Zone.prototype.getElementCount = function() {
  return /** @type {number} */ (jspb.Message.getFieldWithDefault(this, 6, 0));
};


/**
 * @param {number} value
 * @return {!proto.Messages.Zone} returns this
 */
proto.Messages.Zone.prototype.setElementCount = function(value) {
  return jspb.Message.setProto3IntField(this, 6, value);
};


/**
 * optional string comments = 7;
 * @return {string}
 */
proto.Messages.Zone.prototype.getComments = function() {
  return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 7, ""));
};


/**
 * @param {string} value
 * @return {!proto.Messages.Zone} returns this
 */
proto.Messages.Zone.prototype.setComments = function(value) {
  return jspb.Message.setProto3StringField(this, 7, value);
};


/**
 * optional string info = 8;
 * @return {string}
 */
proto.Messages.Zone.prototype.getInfo = function() {
  return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 8, ""));
};


/**
 * @param {string} value
 * @return {!proto.Messages.Zone} returns this
 */
proto.Messages.Zone.prototype.setInfo = function(value) {
  return jspb.Message.setProto3StringField(this, 8, value);
};


/**
 * optional string resource_name = 9;
 * @return {string}
 */
proto.Messages.Zone.prototype.getResourceName = function() {
  return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 9, ""));
};


/**
 * @param {string} value
 * @return {!proto.Messages.Zone} returns this
 */
proto.Messages.Zone.prototype.setResourceName = function(value) {
  return jspb.Message.setProto3StringField(this, 9, value);
};


/**
 * optional Extrema bounds = 10;
 * @return {?proto.Messages.Extrema}
 */
proto.Messages.Zone.prototype.getBounds = function() {
  return /** @type{?proto.Messages.Extrema} */ (
    jspb.Message.getWrapperField(this, vector_pb.Extrema, 10));
};


/**
 * @param {?proto.Messages.Extrema|undefined} value
 * @return {!proto.Messages.Zone} returns this
*/
proto.Messages.Zone.prototype.setBounds = function(value) {
  return jspb.Message.setWrapperField(this, 10, value);
};


/**
 * Clears the message field making it undefined.
 * @return {!proto.Messages.Zone} returns this
 */
proto.Messages.Zone.prototype.clearBounds = function() {
  return this.setBounds(undefined);
};


/**
 * Returns whether this field is set.
 * @return {boolean}
 */
proto.Messages.Zone.prototype.hasBounds = function() {
  return jspb.Message.getField(this, 10) != null;
};


/**
 * repeated float terminal_coord = 11;
 * @return {!Array<number>}
 */
proto.Messages.Zone.prototype.getTerminalCoordList = function() {
  return /** @type {!Array<number>} */ (jspb.Message.getRepeatedFloatingPointField(this, 11));
};


/**
 * @param {!Array<number>} value
 * @return {!proto.Messages.Zone} returns this
 */
proto.Messages.Zone.prototype.setTerminalCoordList = function(value) {
  return jspb.Message.setField(this, 11, value || []);
};


/**
 * @param {number} value
 * @param {number=} opt_index
 * @return {!proto.Messages.Zone} returns this
 */
proto.Messages.Zone.prototype.addTerminalCoord = function(value, opt_index) {
  return jspb.Message.addToRepeatedField(this, 11, value, opt_index);
};


/**
 * Clears the list making it empty but non-null.
 * @return {!proto.Messages.Zone} returns this
 */
proto.Messages.Zone.prototype.clearTerminalCoordList = function() {
  return this.setTerminalCoordList([]);
};



/**
 * List of repeated fields within this message type.
 * @private {!Array<number>}
 * @const
 */
proto.Messages.GridControl.repeatedFields_ = [2,3,4,11];



if (jspb.Message.GENERATE_TO_OBJECT) {
/**
 * Creates an object representation of this proto.
 * Field names that are reserved in JavaScript and will be renamed to pb_name.
 * Optional fields that are not set will be set to undefined.
 * To access a reserved field use, foo.pb_<name>, eg, foo.pb_default.
 * For the list of reserved names please see:
 *     net/proto2/compiler/js/internal/generator.cc#kKeyword.
 * @param {boolean=} opt_includeInstance Deprecated. whether to include the
 *     JSPB instance for transitional soy proto support:
 *     http://goto/soy-param-migration
 * @return {!Object}
 */
proto.Messages.GridControl.prototype.toObject = function(opt_includeInstance) {
  return proto.Messages.GridControl.toObject(opt_includeInstance, this);
};


/**
 * Static version of the {@see toObject} method.
 * @param {boolean|undefined} includeInstance Deprecated. Whether to include
 *     the JSPB instance for transitional soy proto support:
 *     http://goto/soy-param-migration
 * @param {!proto.Messages.GridControl} msg The msg instance to transform.
 * @return {!Object}
 * @suppress {unusedLocalVariables} f is only used for nested messages
 */
proto.Messages.GridControl.toObject = function(includeInstance, msg) {
  var f, obj = {
    basis: jspb.Message.getFieldWithDefault(msg, 1, 0),
    sizeList: (f = jspb.Message.getRepeatedField(msg, 2)) == null ? undefined : f,
    spacingList: (f = jspb.Message.getRepeatedFloatingPointField(msg, 3)) == null ? undefined : f,
    gradingList: (f = jspb.Message.getRepeatedFloatingPointField(msg, 4)) == null ? undefined : f,
    lengthUnits: jspb.Message.getFieldWithDefault(msg, 8, 0),
    targetN: jspb.Message.getFieldWithDefault(msg, 9, 0),
    bounds: (f = msg.getBounds()) && vector_pb.Extrema.toObject(includeInstance, f),
    symmetriesList: (f = jspb.Message.getRepeatedBooleanField(msg, 11)) == null ? undefined : f,
    interior: jspb.Message.getBooleanFieldWithDefault(msg, 12, false),
    exterior: jspb.Message.getBooleanFieldWithDefault(msg, 13, false),
    shell: jspb.Message.getBooleanFieldWithDefault(msg, 14, false)
  };

  if (includeInstance) {
    obj.$jspbMessageInstance = msg;
  }
  return obj;
};
}


/**
 * Deserializes binary data (in protobuf wire format).
 * @param {jspb.ByteSource} bytes The bytes to deserialize.
 * @return {!proto.Messages.GridControl}
 */
proto.Messages.GridControl.deserializeBinary = function(bytes) {
  var reader = new jspb.BinaryReader(bytes);
  var msg = new proto.Messages.GridControl;
  return proto.Messages.GridControl.deserializeBinaryFromReader(msg, reader);
};


/**
 * Deserializes binary data (in protobuf wire format) from the
 * given reader into the given message object.
 * @param {!proto.Messages.GridControl} msg The message object to deserialize into.
 * @param {!jspb.BinaryReader} reader The BinaryReader to use.
 * @return {!proto.Messages.GridControl}
 */
proto.Messages.GridControl.deserializeBinaryFromReader = function(msg, reader) {
  while (reader.nextField()) {
    if (reader.isEndGroup()) {
      break;
    }
    var field = reader.getFieldNumber();
    switch (field) {
    case 1:
      var value = /** @type {number} */ (reader.readUint32());
      msg.setBasis(value);
      break;
    case 2:
      var values = /** @type {!Array<number>} */ (reader.isDelimited() ? reader.readPackedUint32() : [reader.readUint32()]);
      for (var i = 0; i < values.length; i++) {
        msg.addSize(values[i]);
      }
      break;
    case 3:
      var values = /** @type {!Array<number>} */ (reader.isDelimited() ? reader.readPackedDouble() : [reader.readDouble()]);
      for (var i = 0; i < values.length; i++) {
        msg.addSpacing(values[i]);
      }
      break;
    case 4:
      var values = /** @type {!Array<number>} */ (reader.isDelimited() ? reader.readPackedDouble() : [reader.readDouble()]);
      for (var i = 0; i < values.length; i++) {
        msg.addGrading(values[i]);
      }
      break;
    case 8:
      var value = /** @type {number} */ (reader.readUint32());
      msg.setLengthUnits(value);
      break;
    case 9:
      var value = /** @type {number} */ (reader.readUint64());
      msg.setTargetN(value);
      break;
    case 10:
      var value = new vector_pb.Extrema;
      reader.readMessage(value,vector_pb.Extrema.deserializeBinaryFromReader);
      msg.setBounds(value);
      break;
    case 11:
      var values = /** @type {!Array<boolean>} */ (reader.isDelimited() ? reader.readPackedBool() : [reader.readBool()]);
      for (var i = 0; i < values.length; i++) {
        msg.addSymmetries(values[i]);
      }
      break;
    case 12:
      var value = /** @type {boolean} */ (reader.readBool());
      msg.setInterior(value);
      break;
    case 13:
      var value = /** @type {boolean} */ (reader.readBool());
      msg.setExterior(value);
      break;
    case 14:
      var value = /** @type {boolean} */ (reader.readBool());
      msg.setShell(value);
      break;
    default:
      reader.skipField();
      break;
    }
  }
  return msg;
};


/**
 * Serializes the message to binary data (in protobuf wire format).
 * @return {!Uint8Array}
 */
proto.Messages.GridControl.prototype.serializeBinary = function() {
  var writer = new jspb.BinaryWriter();
  proto.Messages.GridControl.serializeBinaryToWriter(this, writer);
  return writer.getResultBuffer();
};


/**
 * Serializes the given message to binary data (in protobuf wire
 * format), writing to the given BinaryWriter.
 * @param {!proto.Messages.GridControl} message
 * @param {!jspb.BinaryWriter} writer
 * @suppress {unusedLocalVariables} f is only used for nested messages
 */
proto.Messages.GridControl.serializeBinaryToWriter = function(message, writer) {
  var f = undefined;
  f = message.getBasis();
  if (f !== 0) {
    writer.writeUint32(
      1,
      f
    );
  }
  f = message.getSizeList();
  if (f.length > 0) {
    writer.writePackedUint32(
      2,
      f
    );
  }
  f = message.getSpacingList();
  if (f.length > 0) {
    writer.writePackedDouble(
      3,
      f
    );
  }
  f = message.getGradingList();
  if (f.length > 0) {
    writer.writePackedDouble(
      4,
      f
    );
  }
  f = message.getLengthUnits();
  if (f !== 0) {
    writer.writeUint32(
      8,
      f
    );
  }
  f = message.getTargetN();
  if (f !== 0) {
    writer.writeUint64(
      9,
      f
    );
  }
  f = message.getBounds();
  if (f != null) {
    writer.writeMessage(
      10,
      f,
      vector_pb.Extrema.serializeBinaryToWriter
    );
  }
  f = message.getSymmetriesList();
  if (f.length > 0) {
    writer.writePackedBool(
      11,
      f
    );
  }
  f = message.getInterior();
  if (f) {
    writer.writeBool(
      12,
      f
    );
  }
  f = message.getExterior();
  if (f) {
    writer.writeBool(
      13,
      f
    );
  }
  f = message.getShell();
  if (f) {
    writer.writeBool(
      14,
      f
    );
  }
};


/**
 * optional uint32 basis = 1;
 * @return {number}
 */
proto.Messages.GridControl.prototype.getBasis = function() {
  return /** @type {number} */ (jspb.Message.getFieldWithDefault(this, 1, 0));
};


/**
 * @param {number} value
 * @return {!proto.Messages.GridControl} returns this
 */
proto.Messages.GridControl.prototype.setBasis = function(value) {
  return jspb.Message.setProto3IntField(this, 1, value);
};


/**
 * repeated uint32 size = 2;
 * @return {!Array<number>}
 */
proto.Messages.GridControl.prototype.getSizeList = function() {
  return /** @type {!Array<number>} */ (jspb.Message.getRepeatedField(this, 2));
};


/**
 * @param {!Array<number>} value
 * @return {!proto.Messages.GridControl} returns this
 */
proto.Messages.GridControl.prototype.setSizeList = function(value) {
  return jspb.Message.setField(this, 2, value || []);
};


/**
 * @param {number} value
 * @param {number=} opt_index
 * @return {!proto.Messages.GridControl} returns this
 */
proto.Messages.GridControl.prototype.addSize = function(value, opt_index) {
  return jspb.Message.addToRepeatedField(this, 2, value, opt_index);
};


/**
 * Clears the list making it empty but non-null.
 * @return {!proto.Messages.GridControl} returns this
 */
proto.Messages.GridControl.prototype.clearSizeList = function() {
  return this.setSizeList([]);
};


/**
 * repeated double spacing = 3;
 * @return {!Array<number>}
 */
proto.Messages.GridControl.prototype.getSpacingList = function() {
  return /** @type {!Array<number>} */ (jspb.Message.getRepeatedFloatingPointField(this, 3));
};


/**
 * @param {!Array<number>} value
 * @return {!proto.Messages.GridControl} returns this
 */
proto.Messages.GridControl.prototype.setSpacingList = function(value) {
  return jspb.Message.setField(this, 3, value || []);
};


/**
 * @param {number} value
 * @param {number=} opt_index
 * @return {!proto.Messages.GridControl} returns this
 */
proto.Messages.GridControl.prototype.addSpacing = function(value, opt_index) {
  return jspb.Message.addToRepeatedField(this, 3, value, opt_index);
};


/**
 * Clears the list making it empty but non-null.
 * @return {!proto.Messages.GridControl} returns this
 */
proto.Messages.GridControl.prototype.clearSpacingList = function() {
  return this.setSpacingList([]);
};


/**
 * repeated double grading = 4;
 * @return {!Array<number>}
 */
proto.Messages.GridControl.prototype.getGradingList = function() {
  return /** @type {!Array<number>} */ (jspb.Message.getRepeatedFloatingPointField(this, 4));
};


/**
 * @param {!Array<number>} value
 * @return {!proto.Messages.GridControl} returns this
 */
proto.Messages.GridControl.prototype.setGradingList = function(value) {
  return jspb.Message.setField(this, 4, value || []);
};


/**
 * @param {number} value
 * @param {number=} opt_index
 * @return {!proto.Messages.GridControl} returns this
 */
proto.Messages.GridControl.prototype.addGrading = function(value, opt_index) {
  return jspb.Message.addToRepeatedField(this, 4, value, opt_index);
};


/**
 * Clears the list making it empty but non-null.
 * @return {!proto.Messages.GridControl} returns this
 */
proto.Messages.GridControl.prototype.clearGradingList = function() {
  return this.setGradingList([]);
};


/**
 * optional uint32 length_units = 8;
 * @return {number}
 */
proto.Messages.GridControl.prototype.getLengthUnits = function() {
  return /** @type {number} */ (jspb.Message.getFieldWithDefault(this, 8, 0));
};


/**
 * @param {number} value
 * @return {!proto.Messages.GridControl} returns this
 */
proto.Messages.GridControl.prototype.setLengthUnits = function(value) {
  return jspb.Message.setProto3IntField(this, 8, value);
};


/**
 * optional uint64 target_n = 9;
 * @return {number}
 */
proto.Messages.GridControl.prototype.getTargetN = function() {
  return /** @type {number} */ (jspb.Message.getFieldWithDefault(this, 9, 0));
};


/**
 * @param {number} value
 * @return {!proto.Messages.GridControl} returns this
 */
proto.Messages.GridControl.prototype.setTargetN = function(value) {
  return jspb.Message.setProto3IntField(this, 9, value);
};


/**
 * optional Extrema bounds = 10;
 * @return {?proto.Messages.Extrema}
 */
proto.Messages.GridControl.prototype.getBounds = function() {
  return /** @type{?proto.Messages.Extrema} */ (
    jspb.Message.getWrapperField(this, vector_pb.Extrema, 10));
};


/**
 * @param {?proto.Messages.Extrema|undefined} value
 * @return {!proto.Messages.GridControl} returns this
*/
proto.Messages.GridControl.prototype.setBounds = function(value) {
  return jspb.Message.setWrapperField(this, 10, value);
};


/**
 * Clears the message field making it undefined.
 * @return {!proto.Messages.GridControl} returns this
 */
proto.Messages.GridControl.prototype.clearBounds = function() {
  return this.setBounds(undefined);
};


/**
 * Returns whether this field is set.
 * @return {boolean}
 */
proto.Messages.GridControl.prototype.hasBounds = function() {
  return jspb.Message.getField(this, 10) != null;
};


/**
 * repeated bool symmetries = 11;
 * @return {!Array<boolean>}
 */
proto.Messages.GridControl.prototype.getSymmetriesList = function() {
  return /** @type {!Array<boolean>} */ (jspb.Message.getRepeatedBooleanField(this, 11));
};


/**
 * @param {!Array<boolean>} value
 * @return {!proto.Messages.GridControl} returns this
 */
proto.Messages.GridControl.prototype.setSymmetriesList = function(value) {
  return jspb.Message.setField(this, 11, value || []);
};


/**
 * @param {boolean} value
 * @param {number=} opt_index
 * @return {!proto.Messages.GridControl} returns this
 */
proto.Messages.GridControl.prototype.addSymmetries = function(value, opt_index) {
  return jspb.Message.addToRepeatedField(this, 11, value, opt_index);
};


/**
 * Clears the list making it empty but non-null.
 * @return {!proto.Messages.GridControl} returns this
 */
proto.Messages.GridControl.prototype.clearSymmetriesList = function() {
  return this.setSymmetriesList([]);
};


/**
 * optional bool interior = 12;
 * @return {boolean}
 */
proto.Messages.GridControl.prototype.getInterior = function() {
  return /** @type {boolean} */ (jspb.Message.getBooleanFieldWithDefault(this, 12, false));
};


/**
 * @param {boolean} value
 * @return {!proto.Messages.GridControl} returns this
 */
proto.Messages.GridControl.prototype.setInterior = function(value) {
  return jspb.Message.setProto3BooleanField(this, 12, value);
};


/**
 * optional bool exterior = 13;
 * @return {boolean}
 */
proto.Messages.GridControl.prototype.getExterior = function() {
  return /** @type {boolean} */ (jspb.Message.getBooleanFieldWithDefault(this, 13, false));
};


/**
 * @param {boolean} value
 * @return {!proto.Messages.GridControl} returns this
 */
proto.Messages.GridControl.prototype.setExterior = function(value) {
  return jspb.Message.setProto3BooleanField(this, 13, value);
};


/**
 * optional bool shell = 14;
 * @return {boolean}
 */
proto.Messages.GridControl.prototype.getShell = function() {
  return /** @type {boolean} */ (jspb.Message.getBooleanFieldWithDefault(this, 14, false));
};


/**
 * @param {boolean} value
 * @return {!proto.Messages.GridControl} returns this
 */
proto.Messages.GridControl.prototype.setShell = function(value) {
  return jspb.Message.setProto3BooleanField(this, 14, value);
};



/**
 * List of repeated fields within this message type.
 * @private {!Array<number>}
 * @const
 */
proto.Messages.MeshControl.repeatedFields_ = [24];



if (jspb.Message.GENERATE_TO_OBJECT) {
/**
 * Creates an object representation of this proto.
 * Field names that are reserved in JavaScript and will be renamed to pb_name.
 * Optional fields that are not set will be set to undefined.
 * To access a reserved field use, foo.pb_<name>, eg, foo.pb_default.
 * For the list of reserved names please see:
 *     net/proto2/compiler/js/internal/generator.cc#kKeyword.
 * @param {boolean=} opt_includeInstance Deprecated. whether to include the
 *     JSPB instance for transitional soy proto support:
 *     http://goto/soy-param-migration
 * @return {!Object}
 */
proto.Messages.MeshControl.prototype.toObject = function(opt_includeInstance) {
  return proto.Messages.MeshControl.toObject(opt_includeInstance, this);
};


/**
 * Static version of the {@see toObject} method.
 * @param {boolean|undefined} includeInstance Deprecated. Whether to include
 *     the JSPB instance for transitional soy proto support:
 *     http://goto/soy-param-migration
 * @param {!proto.Messages.MeshControl} msg The msg instance to transform.
 * @return {!Object}
 * @suppress {unusedLocalVariables} f is only used for nested messages
 */
proto.Messages.MeshControl.toObject = function(includeInstance, msg) {
  var f, obj = {
    targetN: jspb.Message.getFieldWithDefault(msg, 1, 0),
    maxIterations: jspb.Message.getFieldWithDefault(msg, 2, 0),
    sizeRatio: jspb.Message.getFloatingPointFieldWithDefault(msg, 3, 0.0),
    sizeDecay: jspb.Message.getFloatingPointFieldWithDefault(msg, 4, 0.0),
    sizeExponent: jspb.Message.getFloatingPointFieldWithDefault(msg, 5, 0.0),
    curvRatio: jspb.Message.getFloatingPointFieldWithDefault(msg, 6, 0.0),
    curvDecay: jspb.Message.getFloatingPointFieldWithDefault(msg, 7, 0.0),
    curvExponent: jspb.Message.getFloatingPointFieldWithDefault(msg, 8, 0.0),
    nodeRadius: jspb.Message.getFloatingPointFieldWithDefault(msg, 9, 0.0),
    bounds: (f = msg.getBounds()) && vector_pb.Extrema.toObject(includeInstance, f),
    lengthUnits: jspb.Message.getFieldWithDefault(msg, 11, 0),
    interior: jspb.Message.getBooleanFieldWithDefault(msg, 12, false),
    exterior: jspb.Message.getBooleanFieldWithDefault(msg, 13, false),
    shell: jspb.Message.getBooleanFieldWithDefault(msg, 14, false),
    equalize: jspb.Message.getBooleanFieldWithDefault(msg, 15, false),
    smooth: jspb.Message.getBooleanFieldWithDefault(msg, 16, false),
    includeBackground: jspb.Message.getBooleanFieldWithDefault(msg, 18, false),
    keepExistingPoints: jspb.Message.getBooleanFieldWithDefault(msg, 19, false),
    autoFitDomain: jspb.Message.getBooleanFieldWithDefault(msg, 20, false),
    boundaryLayerThickness: jspb.Message.getFloatingPointFieldWithDefault(msg, 23, 0.0),
    symmetriesList: (f = jspb.Message.getRepeatedBooleanField(msg, 24)) == null ? undefined : f,
    backgroundN: jspb.Message.getFieldWithDefault(msg, 30, 0)
  };

  if (includeInstance) {
    obj.$jspbMessageInstance = msg;
  }
  return obj;
};
}


/**
 * Deserializes binary data (in protobuf wire format).
 * @param {jspb.ByteSource} bytes The bytes to deserialize.
 * @return {!proto.Messages.MeshControl}
 */
proto.Messages.MeshControl.deserializeBinary = function(bytes) {
  var reader = new jspb.BinaryReader(bytes);
  var msg = new proto.Messages.MeshControl;
  return proto.Messages.MeshControl.deserializeBinaryFromReader(msg, reader);
};


/**
 * Deserializes binary data (in protobuf wire format) from the
 * given reader into the given message object.
 * @param {!proto.Messages.MeshControl} msg The message object to deserialize into.
 * @param {!jspb.BinaryReader} reader The BinaryReader to use.
 * @return {!proto.Messages.MeshControl}
 */
proto.Messages.MeshControl.deserializeBinaryFromReader = function(msg, reader) {
  while (reader.nextField()) {
    if (reader.isEndGroup()) {
      break;
    }
    var field = reader.getFieldNumber();
    switch (field) {
    case 1:
      var value = /** @type {number} */ (reader.readUint64());
      msg.setTargetN(value);
      break;
    case 2:
      var value = /** @type {number} */ (reader.readUint32());
      msg.setMaxIterations(value);
      break;
    case 3:
      var value = /** @type {number} */ (reader.readDouble());
      msg.setSizeRatio(value);
      break;
    case 4:
      var value = /** @type {number} */ (reader.readDouble());
      msg.setSizeDecay(value);
      break;
    case 5:
      var value = /** @type {number} */ (reader.readDouble());
      msg.setSizeExponent(value);
      break;
    case 6:
      var value = /** @type {number} */ (reader.readDouble());
      msg.setCurvRatio(value);
      break;
    case 7:
      var value = /** @type {number} */ (reader.readDouble());
      msg.setCurvDecay(value);
      break;
    case 8:
      var value = /** @type {number} */ (reader.readDouble());
      msg.setCurvExponent(value);
      break;
    case 9:
      var value = /** @type {number} */ (reader.readDouble());
      msg.setNodeRadius(value);
      break;
    case 10:
      var value = new vector_pb.Extrema;
      reader.readMessage(value,vector_pb.Extrema.deserializeBinaryFromReader);
      msg.setBounds(value);
      break;
    case 11:
      var value = /** @type {number} */ (reader.readUint32());
      msg.setLengthUnits(value);
      break;
    case 12:
      var value = /** @type {boolean} */ (reader.readBool());
      msg.setInterior(value);
      break;
    case 13:
      var value = /** @type {boolean} */ (reader.readBool());
      msg.setExterior(value);
      break;
    case 14:
      var value = /** @type {boolean} */ (reader.readBool());
      msg.setShell(value);
      break;
    case 15:
      var value = /** @type {boolean} */ (reader.readBool());
      msg.setEqualize(value);
      break;
    case 16:
      var value = /** @type {boolean} */ (reader.readBool());
      msg.setSmooth(value);
      break;
    case 18:
      var value = /** @type {boolean} */ (reader.readBool());
      msg.setIncludeBackground(value);
      break;
    case 19:
      var value = /** @type {boolean} */ (reader.readBool());
      msg.setKeepExistingPoints(value);
      break;
    case 20:
      var value = /** @type {boolean} */ (reader.readBool());
      msg.setAutoFitDomain(value);
      break;
    case 23:
      var value = /** @type {number} */ (reader.readDouble());
      msg.setBoundaryLayerThickness(value);
      break;
    case 24:
      var values = /** @type {!Array<boolean>} */ (reader.isDelimited() ? reader.readPackedBool() : [reader.readBool()]);
      for (var i = 0; i < values.length; i++) {
        msg.addSymmetries(values[i]);
      }
      break;
    case 30:
      var value = /** @type {number} */ (reader.readUint64());
      msg.setBackgroundN(value);
      break;
    default:
      reader.skipField();
      break;
    }
  }
  return msg;
};


/**
 * Serializes the message to binary data (in protobuf wire format).
 * @return {!Uint8Array}
 */
proto.Messages.MeshControl.prototype.serializeBinary = function() {
  var writer = new jspb.BinaryWriter();
  proto.Messages.MeshControl.serializeBinaryToWriter(this, writer);
  return writer.getResultBuffer();
};


/**
 * Serializes the given message to binary data (in protobuf wire
 * format), writing to the given BinaryWriter.
 * @param {!proto.Messages.MeshControl} message
 * @param {!jspb.BinaryWriter} writer
 * @suppress {unusedLocalVariables} f is only used for nested messages
 */
proto.Messages.MeshControl.serializeBinaryToWriter = function(message, writer) {
  var f = undefined;
  f = message.getTargetN();
  if (f !== 0) {
    writer.writeUint64(
      1,
      f
    );
  }
  f = message.getMaxIterations();
  if (f !== 0) {
    writer.writeUint32(
      2,
      f
    );
  }
  f = message.getSizeRatio();
  if (f !== 0.0) {
    writer.writeDouble(
      3,
      f
    );
  }
  f = message.getSizeDecay();
  if (f !== 0.0) {
    writer.writeDouble(
      4,
      f
    );
  }
  f = message.getSizeExponent();
  if (f !== 0.0) {
    writer.writeDouble(
      5,
      f
    );
  }
  f = message.getCurvRatio();
  if (f !== 0.0) {
    writer.writeDouble(
      6,
      f
    );
  }
  f = message.getCurvDecay();
  if (f !== 0.0) {
    writer.writeDouble(
      7,
      f
    );
  }
  f = message.getCurvExponent();
  if (f !== 0.0) {
    writer.writeDouble(
      8,
      f
    );
  }
  f = message.getNodeRadius();
  if (f !== 0.0) {
    writer.writeDouble(
      9,
      f
    );
  }
  f = message.getBounds();
  if (f != null) {
    writer.writeMessage(
      10,
      f,
      vector_pb.Extrema.serializeBinaryToWriter
    );
  }
  f = message.getLengthUnits();
  if (f !== 0) {
    writer.writeUint32(
      11,
      f
    );
  }
  f = message.getInterior();
  if (f) {
    writer.writeBool(
      12,
      f
    );
  }
  f = message.getExterior();
  if (f) {
    writer.writeBool(
      13,
      f
    );
  }
  f = message.getShell();
  if (f) {
    writer.writeBool(
      14,
      f
    );
  }
  f = message.getEqualize();
  if (f) {
    writer.writeBool(
      15,
      f
    );
  }
  f = message.getSmooth();
  if (f) {
    writer.writeBool(
      16,
      f
    );
  }
  f = message.getIncludeBackground();
  if (f) {
    writer.writeBool(
      18,
      f
    );
  }
  f = message.getKeepExistingPoints();
  if (f) {
    writer.writeBool(
      19,
      f
    );
  }
  f = message.getAutoFitDomain();
  if (f) {
    writer.writeBool(
      20,
      f
    );
  }
  f = message.getBoundaryLayerThickness();
  if (f !== 0.0) {
    writer.writeDouble(
      23,
      f
    );
  }
  f = message.getSymmetriesList();
  if (f.length > 0) {
    writer.writePackedBool(
      24,
      f
    );
  }
  f = message.getBackgroundN();
  if (f !== 0) {
    writer.writeUint64(
      30,
      f
    );
  }
};


/**
 * optional uint64 target_n = 1;
 * @return {number}
 */
proto.Messages.MeshControl.prototype.getTargetN = function() {
  return /** @type {number} */ (jspb.Message.getFieldWithDefault(this, 1, 0));
};


/**
 * @param {number} value
 * @return {!proto.Messages.MeshControl} returns this
 */
proto.Messages.MeshControl.prototype.setTargetN = function(value) {
  return jspb.Message.setProto3IntField(this, 1, value);
};


/**
 * optional uint32 max_iterations = 2;
 * @return {number}
 */
proto.Messages.MeshControl.prototype.getMaxIterations = function() {
  return /** @type {number} */ (jspb.Message.getFieldWithDefault(this, 2, 0));
};


/**
 * @param {number} value
 * @return {!proto.Messages.MeshControl} returns this
 */
proto.Messages.MeshControl.prototype.setMaxIterations = function(value) {
  return jspb.Message.setProto3IntField(this, 2, value);
};


/**
 * optional double size_ratio = 3;
 * @return {number}
 */
proto.Messages.MeshControl.prototype.getSizeRatio = function() {
  return /** @type {number} */ (jspb.Message.getFloatingPointFieldWithDefault(this, 3, 0.0));
};


/**
 * @param {number} value
 * @return {!proto.Messages.MeshControl} returns this
 */
proto.Messages.MeshControl.prototype.setSizeRatio = function(value) {
  return jspb.Message.setProto3FloatField(this, 3, value);
};


/**
 * optional double size_decay = 4;
 * @return {number}
 */
proto.Messages.MeshControl.prototype.getSizeDecay = function() {
  return /** @type {number} */ (jspb.Message.getFloatingPointFieldWithDefault(this, 4, 0.0));
};


/**
 * @param {number} value
 * @return {!proto.Messages.MeshControl} returns this
 */
proto.Messages.MeshControl.prototype.setSizeDecay = function(value) {
  return jspb.Message.setProto3FloatField(this, 4, value);
};


/**
 * optional double size_exponent = 5;
 * @return {number}
 */
proto.Messages.MeshControl.prototype.getSizeExponent = function() {
  return /** @type {number} */ (jspb.Message.getFloatingPointFieldWithDefault(this, 5, 0.0));
};


/**
 * @param {number} value
 * @return {!proto.Messages.MeshControl} returns this
 */
proto.Messages.MeshControl.prototype.setSizeExponent = function(value) {
  return jspb.Message.setProto3FloatField(this, 5, value);
};


/**
 * optional double curv_ratio = 6;
 * @return {number}
 */
proto.Messages.MeshControl.prototype.getCurvRatio = function() {
  return /** @type {number} */ (jspb.Message.getFloatingPointFieldWithDefault(this, 6, 0.0));
};


/**
 * @param {number} value
 * @return {!proto.Messages.MeshControl} returns this
 */
proto.Messages.MeshControl.prototype.setCurvRatio = function(value) {
  return jspb.Message.setProto3FloatField(this, 6, value);
};


/**
 * optional double curv_decay = 7;
 * @return {number}
 */
proto.Messages.MeshControl.prototype.getCurvDecay = function() {
  return /** @type {number} */ (jspb.Message.getFloatingPointFieldWithDefault(this, 7, 0.0));
};


/**
 * @param {number} value
 * @return {!proto.Messages.MeshControl} returns this
 */
proto.Messages.MeshControl.prototype.setCurvDecay = function(value) {
  return jspb.Message.setProto3FloatField(this, 7, value);
};


/**
 * optional double curv_exponent = 8;
 * @return {number}
 */
proto.Messages.MeshControl.prototype.getCurvExponent = function() {
  return /** @type {number} */ (jspb.Message.getFloatingPointFieldWithDefault(this, 8, 0.0));
};


/**
 * @param {number} value
 * @return {!proto.Messages.MeshControl} returns this
 */
proto.Messages.MeshControl.prototype.setCurvExponent = function(value) {
  return jspb.Message.setProto3FloatField(this, 8, value);
};


/**
 * optional double node_radius = 9;
 * @return {number}
 */
proto.Messages.MeshControl.prototype.getNodeRadius = function() {
  return /** @type {number} */ (jspb.Message.getFloatingPointFieldWithDefault(this, 9, 0.0));
};


/**
 * @param {number} value
 * @return {!proto.Messages.MeshControl} returns this
 */
proto.Messages.MeshControl.prototype.setNodeRadius = function(value) {
  return jspb.Message.setProto3FloatField(this, 9, value);
};


/**
 * optional Extrema bounds = 10;
 * @return {?proto.Messages.Extrema}
 */
proto.Messages.MeshControl.prototype.getBounds = function() {
  return /** @type{?proto.Messages.Extrema} */ (
    jspb.Message.getWrapperField(this, vector_pb.Extrema, 10));
};


/**
 * @param {?proto.Messages.Extrema|undefined} value
 * @return {!proto.Messages.MeshControl} returns this
*/
proto.Messages.MeshControl.prototype.setBounds = function(value) {
  return jspb.Message.setWrapperField(this, 10, value);
};


/**
 * Clears the message field making it undefined.
 * @return {!proto.Messages.MeshControl} returns this
 */
proto.Messages.MeshControl.prototype.clearBounds = function() {
  return this.setBounds(undefined);
};


/**
 * Returns whether this field is set.
 * @return {boolean}
 */
proto.Messages.MeshControl.prototype.hasBounds = function() {
  return jspb.Message.getField(this, 10) != null;
};


/**
 * optional uint32 length_units = 11;
 * @return {number}
 */
proto.Messages.MeshControl.prototype.getLengthUnits = function() {
  return /** @type {number} */ (jspb.Message.getFieldWithDefault(this, 11, 0));
};


/**
 * @param {number} value
 * @return {!proto.Messages.MeshControl} returns this
 */
proto.Messages.MeshControl.prototype.setLengthUnits = function(value) {
  return jspb.Message.setProto3IntField(this, 11, value);
};


/**
 * optional bool interior = 12;
 * @return {boolean}
 */
proto.Messages.MeshControl.prototype.getInterior = function() {
  return /** @type {boolean} */ (jspb.Message.getBooleanFieldWithDefault(this, 12, false));
};


/**
 * @param {boolean} value
 * @return {!proto.Messages.MeshControl} returns this
 */
proto.Messages.MeshControl.prototype.setInterior = function(value) {
  return jspb.Message.setProto3BooleanField(this, 12, value);
};


/**
 * optional bool exterior = 13;
 * @return {boolean}
 */
proto.Messages.MeshControl.prototype.getExterior = function() {
  return /** @type {boolean} */ (jspb.Message.getBooleanFieldWithDefault(this, 13, false));
};


/**
 * @param {boolean} value
 * @return {!proto.Messages.MeshControl} returns this
 */
proto.Messages.MeshControl.prototype.setExterior = function(value) {
  return jspb.Message.setProto3BooleanField(this, 13, value);
};


/**
 * optional bool shell = 14;
 * @return {boolean}
 */
proto.Messages.MeshControl.prototype.getShell = function() {
  return /** @type {boolean} */ (jspb.Message.getBooleanFieldWithDefault(this, 14, false));
};


/**
 * @param {boolean} value
 * @return {!proto.Messages.MeshControl} returns this
 */
proto.Messages.MeshControl.prototype.setShell = function(value) {
  return jspb.Message.setProto3BooleanField(this, 14, value);
};


/**
 * optional bool equalize = 15;
 * @return {boolean}
 */
proto.Messages.MeshControl.prototype.getEqualize = function() {
  return /** @type {boolean} */ (jspb.Message.getBooleanFieldWithDefault(this, 15, false));
};


/**
 * @param {boolean} value
 * @return {!proto.Messages.MeshControl} returns this
 */
proto.Messages.MeshControl.prototype.setEqualize = function(value) {
  return jspb.Message.setProto3BooleanField(this, 15, value);
};


/**
 * optional bool smooth = 16;
 * @return {boolean}
 */
proto.Messages.MeshControl.prototype.getSmooth = function() {
  return /** @type {boolean} */ (jspb.Message.getBooleanFieldWithDefault(this, 16, false));
};


/**
 * @param {boolean} value
 * @return {!proto.Messages.MeshControl} returns this
 */
proto.Messages.MeshControl.prototype.setSmooth = function(value) {
  return jspb.Message.setProto3BooleanField(this, 16, value);
};


/**
 * optional bool include_background = 18;
 * @return {boolean}
 */
proto.Messages.MeshControl.prototype.getIncludeBackground = function() {
  return /** @type {boolean} */ (jspb.Message.getBooleanFieldWithDefault(this, 18, false));
};


/**
 * @param {boolean} value
 * @return {!proto.Messages.MeshControl} returns this
 */
proto.Messages.MeshControl.prototype.setIncludeBackground = function(value) {
  return jspb.Message.setProto3BooleanField(this, 18, value);
};


/**
 * optional bool keep_existing_points = 19;
 * @return {boolean}
 */
proto.Messages.MeshControl.prototype.getKeepExistingPoints = function() {
  return /** @type {boolean} */ (jspb.Message.getBooleanFieldWithDefault(this, 19, false));
};


/**
 * @param {boolean} value
 * @return {!proto.Messages.MeshControl} returns this
 */
proto.Messages.MeshControl.prototype.setKeepExistingPoints = function(value) {
  return jspb.Message.setProto3BooleanField(this, 19, value);
};


/**
 * optional bool auto_fit_domain = 20;
 * @return {boolean}
 */
proto.Messages.MeshControl.prototype.getAutoFitDomain = function() {
  return /** @type {boolean} */ (jspb.Message.getBooleanFieldWithDefault(this, 20, false));
};


/**
 * @param {boolean} value
 * @return {!proto.Messages.MeshControl} returns this
 */
proto.Messages.MeshControl.prototype.setAutoFitDomain = function(value) {
  return jspb.Message.setProto3BooleanField(this, 20, value);
};


/**
 * optional double boundary_layer_thickness = 23;
 * @return {number}
 */
proto.Messages.MeshControl.prototype.getBoundaryLayerThickness = function() {
  return /** @type {number} */ (jspb.Message.getFloatingPointFieldWithDefault(this, 23, 0.0));
};


/**
 * @param {number} value
 * @return {!proto.Messages.MeshControl} returns this
 */
proto.Messages.MeshControl.prototype.setBoundaryLayerThickness = function(value) {
  return jspb.Message.setProto3FloatField(this, 23, value);
};


/**
 * repeated bool symmetries = 24;
 * @return {!Array<boolean>}
 */
proto.Messages.MeshControl.prototype.getSymmetriesList = function() {
  return /** @type {!Array<boolean>} */ (jspb.Message.getRepeatedBooleanField(this, 24));
};


/**
 * @param {!Array<boolean>} value
 * @return {!proto.Messages.MeshControl} returns this
 */
proto.Messages.MeshControl.prototype.setSymmetriesList = function(value) {
  return jspb.Message.setField(this, 24, value || []);
};


/**
 * @param {boolean} value
 * @param {number=} opt_index
 * @return {!proto.Messages.MeshControl} returns this
 */
proto.Messages.MeshControl.prototype.addSymmetries = function(value, opt_index) {
  return jspb.Message.addToRepeatedField(this, 24, value, opt_index);
};


/**
 * Clears the list making it empty but non-null.
 * @return {!proto.Messages.MeshControl} returns this
 */
proto.Messages.MeshControl.prototype.clearSymmetriesList = function() {
  return this.setSymmetriesList([]);
};


/**
 * optional uint64 background_n = 30;
 * @return {number}
 */
proto.Messages.MeshControl.prototype.getBackgroundN = function() {
  return /** @type {number} */ (jspb.Message.getFieldWithDefault(this, 30, 0));
};


/**
 * @param {number} value
 * @return {!proto.Messages.MeshControl} returns this
 */
proto.Messages.MeshControl.prototype.setBackgroundN = function(value) {
  return jspb.Message.setProto3IntField(this, 30, value);
};





if (jspb.Message.GENERATE_TO_OBJECT) {
/**
 * Creates an object representation of this proto.
 * Field names that are reserved in JavaScript and will be renamed to pb_name.
 * Optional fields that are not set will be set to undefined.
 * To access a reserved field use, foo.pb_<name>, eg, foo.pb_default.
 * For the list of reserved names please see:
 *     net/proto2/compiler/js/internal/generator.cc#kKeyword.
 * @param {boolean=} opt_includeInstance Deprecated. whether to include the
 *     JSPB instance for transitional soy proto support:
 *     http://goto/soy-param-migration
 * @return {!Object}
 */
proto.Messages.TreeControl.prototype.toObject = function(opt_includeInstance) {
  return proto.Messages.TreeControl.toObject(opt_includeInstance, this);
};


/**
 * Static version of the {@see toObject} method.
 * @param {boolean|undefined} includeInstance Deprecated. Whether to include
 *     the JSPB instance for transitional soy proto support:
 *     http://goto/soy-param-migration
 * @param {!proto.Messages.TreeControl} msg The msg instance to transform.
 * @return {!Object}
 * @suppress {unusedLocalVariables} f is only used for nested messages
 */
proto.Messages.TreeControl.toObject = function(includeInstance, msg) {
  var f, obj = {
    minDepth: jspb.Message.getFieldWithDefault(msg, 1, 0),
    maxDepth: jspb.Message.getFieldWithDefault(msg, 2, 0),
    maxSize: jspb.Message.getFieldWithDefault(msg, 3, 0),
    refDimensionality: jspb.Message.getFieldWithDefault(msg, 7, 0),
    lengthUnits: jspb.Message.getFieldWithDefault(msg, 8, 0),
    bounds: (f = msg.getBounds()) && vector_pb.Extrema.toObject(includeInstance, f)
  };

  if (includeInstance) {
    obj.$jspbMessageInstance = msg;
  }
  return obj;
};
}


/**
 * Deserializes binary data (in protobuf wire format).
 * @param {jspb.ByteSource} bytes The bytes to deserialize.
 * @return {!proto.Messages.TreeControl}
 */
proto.Messages.TreeControl.deserializeBinary = function(bytes) {
  var reader = new jspb.BinaryReader(bytes);
  var msg = new proto.Messages.TreeControl;
  return proto.Messages.TreeControl.deserializeBinaryFromReader(msg, reader);
};


/**
 * Deserializes binary data (in protobuf wire format) from the
 * given reader into the given message object.
 * @param {!proto.Messages.TreeControl} msg The message object to deserialize into.
 * @param {!jspb.BinaryReader} reader The BinaryReader to use.
 * @return {!proto.Messages.TreeControl}
 */
proto.Messages.TreeControl.deserializeBinaryFromReader = function(msg, reader) {
  while (reader.nextField()) {
    if (reader.isEndGroup()) {
      break;
    }
    var field = reader.getFieldNumber();
    switch (field) {
    case 1:
      var value = /** @type {number} */ (reader.readUint32());
      msg.setMinDepth(value);
      break;
    case 2:
      var value = /** @type {number} */ (reader.readUint32());
      msg.setMaxDepth(value);
      break;
    case 3:
      var value = /** @type {number} */ (reader.readUint64());
      msg.setMaxSize(value);
      break;
    case 7:
      var value = /** @type {number} */ (reader.readUint32());
      msg.setRefDimensionality(value);
      break;
    case 8:
      var value = /** @type {number} */ (reader.readUint32());
      msg.setLengthUnits(value);
      break;
    case 10:
      var value = new vector_pb.Extrema;
      reader.readMessage(value,vector_pb.Extrema.deserializeBinaryFromReader);
      msg.setBounds(value);
      break;
    default:
      reader.skipField();
      break;
    }
  }
  return msg;
};


/**
 * Serializes the message to binary data (in protobuf wire format).
 * @return {!Uint8Array}
 */
proto.Messages.TreeControl.prototype.serializeBinary = function() {
  var writer = new jspb.BinaryWriter();
  proto.Messages.TreeControl.serializeBinaryToWriter(this, writer);
  return writer.getResultBuffer();
};


/**
 * Serializes the given message to binary data (in protobuf wire
 * format), writing to the given BinaryWriter.
 * @param {!proto.Messages.TreeControl} message
 * @param {!jspb.BinaryWriter} writer
 * @suppress {unusedLocalVariables} f is only used for nested messages
 */
proto.Messages.TreeControl.serializeBinaryToWriter = function(message, writer) {
  var f = undefined;
  f = message.getMinDepth();
  if (f !== 0) {
    writer.writeUint32(
      1,
      f
    );
  }
  f = message.getMaxDepth();
  if (f !== 0) {
    writer.writeUint32(
      2,
      f
    );
  }
  f = message.getMaxSize();
  if (f !== 0) {
    writer.writeUint64(
      3,
      f
    );
  }
  f = message.getRefDimensionality();
  if (f !== 0) {
    writer.writeUint32(
      7,
      f
    );
  }
  f = message.getLengthUnits();
  if (f !== 0) {
    writer.writeUint32(
      8,
      f
    );
  }
  f = message.getBounds();
  if (f != null) {
    writer.writeMessage(
      10,
      f,
      vector_pb.Extrema.serializeBinaryToWriter
    );
  }
};


/**
 * optional uint32 min_depth = 1;
 * @return {number}
 */
proto.Messages.TreeControl.prototype.getMinDepth = function() {
  return /** @type {number} */ (jspb.Message.getFieldWithDefault(this, 1, 0));
};


/**
 * @param {number} value
 * @return {!proto.Messages.TreeControl} returns this
 */
proto.Messages.TreeControl.prototype.setMinDepth = function(value) {
  return jspb.Message.setProto3IntField(this, 1, value);
};


/**
 * optional uint32 max_depth = 2;
 * @return {number}
 */
proto.Messages.TreeControl.prototype.getMaxDepth = function() {
  return /** @type {number} */ (jspb.Message.getFieldWithDefault(this, 2, 0));
};


/**
 * @param {number} value
 * @return {!proto.Messages.TreeControl} returns this
 */
proto.Messages.TreeControl.prototype.setMaxDepth = function(value) {
  return jspb.Message.setProto3IntField(this, 2, value);
};


/**
 * optional uint64 max_size = 3;
 * @return {number}
 */
proto.Messages.TreeControl.prototype.getMaxSize = function() {
  return /** @type {number} */ (jspb.Message.getFieldWithDefault(this, 3, 0));
};


/**
 * @param {number} value
 * @return {!proto.Messages.TreeControl} returns this
 */
proto.Messages.TreeControl.prototype.setMaxSize = function(value) {
  return jspb.Message.setProto3IntField(this, 3, value);
};


/**
 * optional uint32 ref_dimensionality = 7;
 * @return {number}
 */
proto.Messages.TreeControl.prototype.getRefDimensionality = function() {
  return /** @type {number} */ (jspb.Message.getFieldWithDefault(this, 7, 0));
};


/**
 * @param {number} value
 * @return {!proto.Messages.TreeControl} returns this
 */
proto.Messages.TreeControl.prototype.setRefDimensionality = function(value) {
  return jspb.Message.setProto3IntField(this, 7, value);
};


/**
 * optional uint32 length_units = 8;
 * @return {number}
 */
proto.Messages.TreeControl.prototype.getLengthUnits = function() {
  return /** @type {number} */ (jspb.Message.getFieldWithDefault(this, 8, 0));
};


/**
 * @param {number} value
 * @return {!proto.Messages.TreeControl} returns this
 */
proto.Messages.TreeControl.prototype.setLengthUnits = function(value) {
  return jspb.Message.setProto3IntField(this, 8, value);
};


/**
 * optional Extrema bounds = 10;
 * @return {?proto.Messages.Extrema}
 */
proto.Messages.TreeControl.prototype.getBounds = function() {
  return /** @type{?proto.Messages.Extrema} */ (
    jspb.Message.getWrapperField(this, vector_pb.Extrema, 10));
};


/**
 * @param {?proto.Messages.Extrema|undefined} value
 * @return {!proto.Messages.TreeControl} returns this
*/
proto.Messages.TreeControl.prototype.setBounds = function(value) {
  return jspb.Message.setWrapperField(this, 10, value);
};


/**
 * Clears the message field making it undefined.
 * @return {!proto.Messages.TreeControl} returns this
 */
proto.Messages.TreeControl.prototype.clearBounds = function() {
  return this.setBounds(undefined);
};


/**
 * Returns whether this field is set.
 * @return {boolean}
 */
proto.Messages.TreeControl.prototype.hasBounds = function() {
  return jspb.Message.getField(this, 10) != null;
};



/**
 * List of repeated fields within this message type.
 * @private {!Array<number>}
 * @const
 */
proto.Messages.Topology.repeatedFields_ = [16];



if (jspb.Message.GENERATE_TO_OBJECT) {
/**
 * Creates an object representation of this proto.
 * Field names that are reserved in JavaScript and will be renamed to pb_name.
 * Optional fields that are not set will be set to undefined.
 * To access a reserved field use, foo.pb_<name>, eg, foo.pb_default.
 * For the list of reserved names please see:
 *     net/proto2/compiler/js/internal/generator.cc#kKeyword.
 * @param {boolean=} opt_includeInstance Deprecated. whether to include the
 *     JSPB instance for transitional soy proto support:
 *     http://goto/soy-param-migration
 * @return {!Object}
 */
proto.Messages.Topology.prototype.toObject = function(opt_includeInstance) {
  return proto.Messages.Topology.toObject(opt_includeInstance, this);
};


/**
 * Static version of the {@see toObject} method.
 * @param {boolean|undefined} includeInstance Deprecated. Whether to include
 *     the JSPB instance for transitional soy proto support:
 *     http://goto/soy-param-migration
 * @param {!proto.Messages.Topology} msg The msg instance to transform.
 * @return {!Object}
 * @suppress {unusedLocalVariables} f is only used for nested messages
 */
proto.Messages.Topology.toObject = function(includeInstance, msg) {
  var f, obj = {
    name: jspb.Message.getFieldWithDefault(msg, 1, ""),
    type: jspb.Message.getFieldWithDefault(msg, 2, 0),
    ndim: jspb.Message.getFieldWithDefault(msg, 3, 0),
    basis: jspb.Message.getFieldWithDefault(msg, 4, 0),
    filename: jspb.Message.getFieldWithDefault(msg, 5, ""),
    revision: (f = msg.getRevision()) && vector_pb.Revision.toObject(includeInstance, f),
    info: jspb.Message.getFieldWithDefault(msg, 7, ""),
    nodes: (f = msg.getNodes()) && vector_pb.Elements.toObject(includeInstance, f),
    edges: (f = msg.getEdges()) && vector_pb.Elements.toObject(includeInstance, f),
    faces: (f = msg.getFaces()) && vector_pb.Elements.toObject(includeInstance, f),
    cells: (f = msg.getCells()) && vector_pb.Elements.toObject(includeInstance, f),
    data: (f = msg.getData()) && vector_pb.Record64.toObject(includeInstance, f),
    sparseDataList: jspb.Message.toObjectList(msg.getSparseDataList(),
    vector_pb.SparseMatrix.toObject, includeInstance),
    gridControl: (f = msg.getGridControl()) && proto.Messages.GridControl.toObject(includeInstance, f),
    meshControl: (f = msg.getMeshControl()) && proto.Messages.MeshControl.toObject(includeInstance, f),
    treeControl: (f = msg.getTreeControl()) && proto.Messages.TreeControl.toObject(includeInstance, f)
  };

  if (includeInstance) {
    obj.$jspbMessageInstance = msg;
  }
  return obj;
};
}


/**
 * Deserializes binary data (in protobuf wire format).
 * @param {jspb.ByteSource} bytes The bytes to deserialize.
 * @return {!proto.Messages.Topology}
 */
proto.Messages.Topology.deserializeBinary = function(bytes) {
  var reader = new jspb.BinaryReader(bytes);
  var msg = new proto.Messages.Topology;
  return proto.Messages.Topology.deserializeBinaryFromReader(msg, reader);
};


/**
 * Deserializes binary data (in protobuf wire format) from the
 * given reader into the given message object.
 * @param {!proto.Messages.Topology} msg The message object to deserialize into.
 * @param {!jspb.BinaryReader} reader The BinaryReader to use.
 * @return {!proto.Messages.Topology}
 */
proto.Messages.Topology.deserializeBinaryFromReader = function(msg, reader) {
  while (reader.nextField()) {
    if (reader.isEndGroup()) {
      break;
    }
    var field = reader.getFieldNumber();
    switch (field) {
    case 1:
      var value = /** @type {string} */ (reader.readString());
      msg.setName(value);
      break;
    case 2:
      var value = /** @type {number} */ (reader.readUint32());
      msg.setType(value);
      break;
    case 3:
      var value = /** @type {number} */ (reader.readUint32());
      msg.setNdim(value);
      break;
    case 4:
      var value = /** @type {number} */ (reader.readUint32());
      msg.setBasis(value);
      break;
    case 5:
      var value = /** @type {string} */ (reader.readString());
      msg.setFilename(value);
      break;
    case 6:
      var value = new vector_pb.Revision;
      reader.readMessage(value,vector_pb.Revision.deserializeBinaryFromReader);
      msg.setRevision(value);
      break;
    case 7:
      var value = /** @type {string} */ (reader.readString());
      msg.setInfo(value);
      break;
    case 10:
      var value = new vector_pb.Elements;
      reader.readMessage(value,vector_pb.Elements.deserializeBinaryFromReader);
      msg.setNodes(value);
      break;
    case 11:
      var value = new vector_pb.Elements;
      reader.readMessage(value,vector_pb.Elements.deserializeBinaryFromReader);
      msg.setEdges(value);
      break;
    case 12:
      var value = new vector_pb.Elements;
      reader.readMessage(value,vector_pb.Elements.deserializeBinaryFromReader);
      msg.setFaces(value);
      break;
    case 13:
      var value = new vector_pb.Elements;
      reader.readMessage(value,vector_pb.Elements.deserializeBinaryFromReader);
      msg.setCells(value);
      break;
    case 15:
      var value = new vector_pb.Record64;
      reader.readMessage(value,vector_pb.Record64.deserializeBinaryFromReader);
      msg.setData(value);
      break;
    case 16:
      var value = new vector_pb.SparseMatrix;
      reader.readMessage(value,vector_pb.SparseMatrix.deserializeBinaryFromReader);
      msg.addSparseData(value);
      break;
    case 20:
      var value = new proto.Messages.GridControl;
      reader.readMessage(value,proto.Messages.GridControl.deserializeBinaryFromReader);
      msg.setGridControl(value);
      break;
    case 21:
      var value = new proto.Messages.MeshControl;
      reader.readMessage(value,proto.Messages.MeshControl.deserializeBinaryFromReader);
      msg.setMeshControl(value);
      break;
    case 22:
      var value = new proto.Messages.TreeControl;
      reader.readMessage(value,proto.Messages.TreeControl.deserializeBinaryFromReader);
      msg.setTreeControl(value);
      break;
    default:
      reader.skipField();
      break;
    }
  }
  return msg;
};


/**
 * Serializes the message to binary data (in protobuf wire format).
 * @return {!Uint8Array}
 */
proto.Messages.Topology.prototype.serializeBinary = function() {
  var writer = new jspb.BinaryWriter();
  proto.Messages.Topology.serializeBinaryToWriter(this, writer);
  return writer.getResultBuffer();
};


/**
 * Serializes the given message to binary data (in protobuf wire
 * format), writing to the given BinaryWriter.
 * @param {!proto.Messages.Topology} message
 * @param {!jspb.BinaryWriter} writer
 * @suppress {unusedLocalVariables} f is only used for nested messages
 */
proto.Messages.Topology.serializeBinaryToWriter = function(message, writer) {
  var f = undefined;
  f = message.getName();
  if (f.length > 0) {
    writer.writeString(
      1,
      f
    );
  }
  f = message.getType();
  if (f !== 0) {
    writer.writeUint32(
      2,
      f
    );
  }
  f = message.getNdim();
  if (f !== 0) {
    writer.writeUint32(
      3,
      f
    );
  }
  f = message.getBasis();
  if (f !== 0) {
    writer.writeUint32(
      4,
      f
    );
  }
  f = message.getFilename();
  if (f.length > 0) {
    writer.writeString(
      5,
      f
    );
  }
  f = message.getRevision();
  if (f != null) {
    writer.writeMessage(
      6,
      f,
      vector_pb.Revision.serializeBinaryToWriter
    );
  }
  f = message.getInfo();
  if (f.length > 0) {
    writer.writeString(
      7,
      f
    );
  }
  f = message.getNodes();
  if (f != null) {
    writer.writeMessage(
      10,
      f,
      vector_pb.Elements.serializeBinaryToWriter
    );
  }
  f = message.getEdges();
  if (f != null) {
    writer.writeMessage(
      11,
      f,
      vector_pb.Elements.serializeBinaryToWriter
    );
  }
  f = message.getFaces();
  if (f != null) {
    writer.writeMessage(
      12,
      f,
      vector_pb.Elements.serializeBinaryToWriter
    );
  }
  f = message.getCells();
  if (f != null) {
    writer.writeMessage(
      13,
      f,
      vector_pb.Elements.serializeBinaryToWriter
    );
  }
  f = message.getData();
  if (f != null) {
    writer.writeMessage(
      15,
      f,
      vector_pb.Record64.serializeBinaryToWriter
    );
  }
  f = message.getSparseDataList();
  if (f.length > 0) {
    writer.writeRepeatedMessage(
      16,
      f,
      vector_pb.SparseMatrix.serializeBinaryToWriter
    );
  }
  f = message.getGridControl();
  if (f != null) {
    writer.writeMessage(
      20,
      f,
      proto.Messages.GridControl.serializeBinaryToWriter
    );
  }
  f = message.getMeshControl();
  if (f != null) {
    writer.writeMessage(
      21,
      f,
      proto.Messages.MeshControl.serializeBinaryToWriter
    );
  }
  f = message.getTreeControl();
  if (f != null) {
    writer.writeMessage(
      22,
      f,
      proto.Messages.TreeControl.serializeBinaryToWriter
    );
  }
};


/**
 * optional string name = 1;
 * @return {string}
 */
proto.Messages.Topology.prototype.getName = function() {
  return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 1, ""));
};


/**
 * @param {string} value
 * @return {!proto.Messages.Topology} returns this
 */
proto.Messages.Topology.prototype.setName = function(value) {
  return jspb.Message.setProto3StringField(this, 1, value);
};


/**
 * optional uint32 type = 2;
 * @return {number}
 */
proto.Messages.Topology.prototype.getType = function() {
  return /** @type {number} */ (jspb.Message.getFieldWithDefault(this, 2, 0));
};


/**
 * @param {number} value
 * @return {!proto.Messages.Topology} returns this
 */
proto.Messages.Topology.prototype.setType = function(value) {
  return jspb.Message.setProto3IntField(this, 2, value);
};


/**
 * optional uint32 ndim = 3;
 * @return {number}
 */
proto.Messages.Topology.prototype.getNdim = function() {
  return /** @type {number} */ (jspb.Message.getFieldWithDefault(this, 3, 0));
};


/**
 * @param {number} value
 * @return {!proto.Messages.Topology} returns this
 */
proto.Messages.Topology.prototype.setNdim = function(value) {
  return jspb.Message.setProto3IntField(this, 3, value);
};


/**
 * optional uint32 basis = 4;
 * @return {number}
 */
proto.Messages.Topology.prototype.getBasis = function() {
  return /** @type {number} */ (jspb.Message.getFieldWithDefault(this, 4, 0));
};


/**
 * @param {number} value
 * @return {!proto.Messages.Topology} returns this
 */
proto.Messages.Topology.prototype.setBasis = function(value) {
  return jspb.Message.setProto3IntField(this, 4, value);
};


/**
 * optional string filename = 5;
 * @return {string}
 */
proto.Messages.Topology.prototype.getFilename = function() {
  return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 5, ""));
};


/**
 * @param {string} value
 * @return {!proto.Messages.Topology} returns this
 */
proto.Messages.Topology.prototype.setFilename = function(value) {
  return jspb.Message.setProto3StringField(this, 5, value);
};


/**
 * optional Revision revision = 6;
 * @return {?proto.Messages.Revision}
 */
proto.Messages.Topology.prototype.getRevision = function() {
  return /** @type{?proto.Messages.Revision} */ (
    jspb.Message.getWrapperField(this, vector_pb.Revision, 6));
};


/**
 * @param {?proto.Messages.Revision|undefined} value
 * @return {!proto.Messages.Topology} returns this
*/
proto.Messages.Topology.prototype.setRevision = function(value) {
  return jspb.Message.setWrapperField(this, 6, value);
};


/**
 * Clears the message field making it undefined.
 * @return {!proto.Messages.Topology} returns this
 */
proto.Messages.Topology.prototype.clearRevision = function() {
  return this.setRevision(undefined);
};


/**
 * Returns whether this field is set.
 * @return {boolean}
 */
proto.Messages.Topology.prototype.hasRevision = function() {
  return jspb.Message.getField(this, 6) != null;
};


/**
 * optional string info = 7;
 * @return {string}
 */
proto.Messages.Topology.prototype.getInfo = function() {
  return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 7, ""));
};


/**
 * @param {string} value
 * @return {!proto.Messages.Topology} returns this
 */
proto.Messages.Topology.prototype.setInfo = function(value) {
  return jspb.Message.setProto3StringField(this, 7, value);
};


/**
 * optional Elements nodes = 10;
 * @return {?proto.Messages.Elements}
 */
proto.Messages.Topology.prototype.getNodes = function() {
  return /** @type{?proto.Messages.Elements} */ (
    jspb.Message.getWrapperField(this, vector_pb.Elements, 10));
};


/**
 * @param {?proto.Messages.Elements|undefined} value
 * @return {!proto.Messages.Topology} returns this
*/
proto.Messages.Topology.prototype.setNodes = function(value) {
  return jspb.Message.setWrapperField(this, 10, value);
};


/**
 * Clears the message field making it undefined.
 * @return {!proto.Messages.Topology} returns this
 */
proto.Messages.Topology.prototype.clearNodes = function() {
  return this.setNodes(undefined);
};


/**
 * Returns whether this field is set.
 * @return {boolean}
 */
proto.Messages.Topology.prototype.hasNodes = function() {
  return jspb.Message.getField(this, 10) != null;
};


/**
 * optional Elements edges = 11;
 * @return {?proto.Messages.Elements}
 */
proto.Messages.Topology.prototype.getEdges = function() {
  return /** @type{?proto.Messages.Elements} */ (
    jspb.Message.getWrapperField(this, vector_pb.Elements, 11));
};


/**
 * @param {?proto.Messages.Elements|undefined} value
 * @return {!proto.Messages.Topology} returns this
*/
proto.Messages.Topology.prototype.setEdges = function(value) {
  return jspb.Message.setWrapperField(this, 11, value);
};


/**
 * Clears the message field making it undefined.
 * @return {!proto.Messages.Topology} returns this
 */
proto.Messages.Topology.prototype.clearEdges = function() {
  return this.setEdges(undefined);
};


/**
 * Returns whether this field is set.
 * @return {boolean}
 */
proto.Messages.Topology.prototype.hasEdges = function() {
  return jspb.Message.getField(this, 11) != null;
};


/**
 * optional Elements faces = 12;
 * @return {?proto.Messages.Elements}
 */
proto.Messages.Topology.prototype.getFaces = function() {
  return /** @type{?proto.Messages.Elements} */ (
    jspb.Message.getWrapperField(this, vector_pb.Elements, 12));
};


/**
 * @param {?proto.Messages.Elements|undefined} value
 * @return {!proto.Messages.Topology} returns this
*/
proto.Messages.Topology.prototype.setFaces = function(value) {
  return jspb.Message.setWrapperField(this, 12, value);
};


/**
 * Clears the message field making it undefined.
 * @return {!proto.Messages.Topology} returns this
 */
proto.Messages.Topology.prototype.clearFaces = function() {
  return this.setFaces(undefined);
};


/**
 * Returns whether this field is set.
 * @return {boolean}
 */
proto.Messages.Topology.prototype.hasFaces = function() {
  return jspb.Message.getField(this, 12) != null;
};


/**
 * optional Elements cells = 13;
 * @return {?proto.Messages.Elements}
 */
proto.Messages.Topology.prototype.getCells = function() {
  return /** @type{?proto.Messages.Elements} */ (
    jspb.Message.getWrapperField(this, vector_pb.Elements, 13));
};


/**
 * @param {?proto.Messages.Elements|undefined} value
 * @return {!proto.Messages.Topology} returns this
*/
proto.Messages.Topology.prototype.setCells = function(value) {
  return jspb.Message.setWrapperField(this, 13, value);
};


/**
 * Clears the message field making it undefined.
 * @return {!proto.Messages.Topology} returns this
 */
proto.Messages.Topology.prototype.clearCells = function() {
  return this.setCells(undefined);
};


/**
 * Returns whether this field is set.
 * @return {boolean}
 */
proto.Messages.Topology.prototype.hasCells = function() {
  return jspb.Message.getField(this, 13) != null;
};


/**
 * optional Record64 data = 15;
 * @return {?proto.Messages.Record64}
 */
proto.Messages.Topology.prototype.getData = function() {
  return /** @type{?proto.Messages.Record64} */ (
    jspb.Message.getWrapperField(this, vector_pb.Record64, 15));
};


/**
 * @param {?proto.Messages.Record64|undefined} value
 * @return {!proto.Messages.Topology} returns this
*/
proto.Messages.Topology.prototype.setData = function(value) {
  return jspb.Message.setWrapperField(this, 15, value);
};


/**
 * Clears the message field making it undefined.
 * @return {!proto.Messages.Topology} returns this
 */
proto.Messages.Topology.prototype.clearData = function() {
  return this.setData(undefined);
};


/**
 * Returns whether this field is set.
 * @return {boolean}
 */
proto.Messages.Topology.prototype.hasData = function() {
  return jspb.Message.getField(this, 15) != null;
};


/**
 * repeated SparseMatrix sparse_data = 16;
 * @return {!Array<!proto.Messages.SparseMatrix>}
 */
proto.Messages.Topology.prototype.getSparseDataList = function() {
  return /** @type{!Array<!proto.Messages.SparseMatrix>} */ (
    jspb.Message.getRepeatedWrapperField(this, vector_pb.SparseMatrix, 16));
};


/**
 * @param {!Array<!proto.Messages.SparseMatrix>} value
 * @return {!proto.Messages.Topology} returns this
*/
proto.Messages.Topology.prototype.setSparseDataList = function(value) {
  return jspb.Message.setRepeatedWrapperField(this, 16, value);
};


/**
 * @param {!proto.Messages.SparseMatrix=} opt_value
 * @param {number=} opt_index
 * @return {!proto.Messages.SparseMatrix}
 */
proto.Messages.Topology.prototype.addSparseData = function(opt_value, opt_index) {
  return jspb.Message.addToRepeatedWrapperField(this, 16, opt_value, proto.Messages.SparseMatrix, opt_index);
};


/**
 * Clears the list making it empty but non-null.
 * @return {!proto.Messages.Topology} returns this
 */
proto.Messages.Topology.prototype.clearSparseDataList = function() {
  return this.setSparseDataList([]);
};


/**
 * optional GridControl grid_control = 20;
 * @return {?proto.Messages.GridControl}
 */
proto.Messages.Topology.prototype.getGridControl = function() {
  return /** @type{?proto.Messages.GridControl} */ (
    jspb.Message.getWrapperField(this, proto.Messages.GridControl, 20));
};


/**
 * @param {?proto.Messages.GridControl|undefined} value
 * @return {!proto.Messages.Topology} returns this
*/
proto.Messages.Topology.prototype.setGridControl = function(value) {
  return jspb.Message.setWrapperField(this, 20, value);
};


/**
 * Clears the message field making it undefined.
 * @return {!proto.Messages.Topology} returns this
 */
proto.Messages.Topology.prototype.clearGridControl = function() {
  return this.setGridControl(undefined);
};


/**
 * Returns whether this field is set.
 * @return {boolean}
 */
proto.Messages.Topology.prototype.hasGridControl = function() {
  return jspb.Message.getField(this, 20) != null;
};


/**
 * optional MeshControl mesh_control = 21;
 * @return {?proto.Messages.MeshControl}
 */
proto.Messages.Topology.prototype.getMeshControl = function() {
  return /** @type{?proto.Messages.MeshControl} */ (
    jspb.Message.getWrapperField(this, proto.Messages.MeshControl, 21));
};


/**
 * @param {?proto.Messages.MeshControl|undefined} value
 * @return {!proto.Messages.Topology} returns this
*/
proto.Messages.Topology.prototype.setMeshControl = function(value) {
  return jspb.Message.setWrapperField(this, 21, value);
};


/**
 * Clears the message field making it undefined.
 * @return {!proto.Messages.Topology} returns this
 */
proto.Messages.Topology.prototype.clearMeshControl = function() {
  return this.setMeshControl(undefined);
};


/**
 * Returns whether this field is set.
 * @return {boolean}
 */
proto.Messages.Topology.prototype.hasMeshControl = function() {
  return jspb.Message.getField(this, 21) != null;
};


/**
 * optional TreeControl tree_control = 22;
 * @return {?proto.Messages.TreeControl}
 */
proto.Messages.Topology.prototype.getTreeControl = function() {
  return /** @type{?proto.Messages.TreeControl} */ (
    jspb.Message.getWrapperField(this, proto.Messages.TreeControl, 22));
};


/**
 * @param {?proto.Messages.TreeControl|undefined} value
 * @return {!proto.Messages.Topology} returns this
*/
proto.Messages.Topology.prototype.setTreeControl = function(value) {
  return jspb.Message.setWrapperField(this, 22, value);
};


/**
 * Clears the message field making it undefined.
 * @return {!proto.Messages.Topology} returns this
 */
proto.Messages.Topology.prototype.clearTreeControl = function() {
  return this.setTreeControl(undefined);
};


/**
 * Returns whether this field is set.
 * @return {boolean}
 */
proto.Messages.Topology.prototype.hasTreeControl = function() {
  return jspb.Message.getField(this, 22) != null;
};


goog.object.extend(exports, proto.Messages);
