text: Clazz.declarePackage ("JS");
  Clazz.load (null, "JS.HallInfo", ["JU.P3i", "$.SB", "JS.HallRotationTerm", "$.HallTranslation", "JU.Logger"], function () {
  c$ = Clazz.decorateAsClass (function () {
  this.hallSymbol = null;
  this.primitiveHallSymbol = null;
  this.latticeCode = '\0';
  this.latticeExtension = null;
  this.isCentrosymmetric = false;
  this.nRotations = 0;
  this.rotationTerms = null;
  this.vector12ths = null;
  this.vectorCode = null;
  Clazz.instantialize (this, arguments);
  }, JS, "HallInfo");
  Clazz.prepareFields (c$, function () {
  this.rotationTerms =  new Array (16);
  });
  Clazz.makeConstructor (c$, 
  function (hallSymbol) {
  try {
  var str = this.hallSymbol = hallSymbol.trim ();
  str = this.extractLatticeInfo (str);
  if (JS.HallTranslation.getLatticeIndex (this.latticeCode) == 0) return;
  this.latticeExtension = JS.HallTranslation.getLatticeExtension (this.latticeCode, this.isCentrosymmetric);
  str = this.extractVectorInfo (str) + this.latticeExtension;
  if (JU.Logger.debugging) JU.Logger.debug ("Hallinfo: " + hallSymbol + " " + str);
  var prevOrder = 0;
  var prevAxisType = '\u0000';
  this.primitiveHallSymbol = "P";
  while (str.length > 0 && this.nRotations < 16) {
  str = this.extractRotationInfo (str, prevOrder, prevAxisType);
  var r = this.rotationTerms[this.nRotations - 1];
  prevOrder = r.order;
  prevAxisType = r.axisType;
  this.primitiveHallSymbol += " " + r.primitiveCode;
  }
  this.primitiveHallSymbol += this.vectorCode;
  } catch (e) {
  if (Clazz.exceptionOf (e, Exception)) {
  JU.Logger.error ("Invalid Hall symbol " + e);
  this.nRotations = 0;
  } else {
  throw e;
  }
  }
  }, "~S");
  Clazz.defineMethod (c$, "dumpInfo", 
  function () {
  var sb =  new JU.SB ();
  sb.append ("\nHall symbol: ").append (this.hallSymbol).append ("\nprimitive Hall symbol: ").append (this.primitiveHallSymbol).append ("\nlattice type: ").append (this.getLatticeDesignation ());
  for (var i = 0; i < this.nRotations; i++) {
  sb.append ("\n\nrotation term ").appendI (i + 1).append (this.rotationTerms[i].dumpInfo (this.vectorCode));
  }
  return sb.toString ();
  });
  Clazz.defineMethod (c$, "getLatticeDesignation", 
   function () {
  return JS.HallTranslation.getLatticeDesignation2 (this.latticeCode, this.isCentrosymmetric);
  });
  Clazz.defineMethod (c$, "extractLatticeInfo", 
   function (name) {
  var i = name.indexOf (" ");
  if (i < 0) return "";
  var term = name.substring (0, i).toUpperCase ();
  this.latticeCode = term.charAt (0);
  if (this.latticeCode == '-') {
  this.isCentrosymmetric = true;
  this.latticeCode = term.charAt (1);
  }return name.substring (i + 1).trim ();
  }, "~S");
  Clazz.defineMethod (c$, "extractVectorInfo", 
   function (name) {
  this.vector12ths =  new JU.P3i ();
  this.vectorCode = "";
  var i = name.indexOf ("(");
  var j = name.indexOf (")", i);
  if (i > 0 && j > i) {
  var term = name.substring (i + 1, j);
  this.vectorCode = " (" + term + ")";
  name = name.substring (0, i).trim ();
  i = term.indexOf (" ");
  if (i >= 0) {
  this.vector12ths.x = Integer.parseInt (term.substring (0, i));
  term = term.substring (i + 1).trim ();
  i = term.indexOf (" ");
  if (i >= 0) {
  this.vector12ths.y = Integer.parseInt (term.substring (0, i));
  term = term.substring (i + 1).trim ();
  }}this.vector12ths.z = Integer.parseInt (term);
  }return name;
  }, "~S");
  Clazz.defineMethod (c$, "extractRotationInfo", 
   function (name, prevOrder, prevAxisType) {
  var i = name.indexOf (" ");
  var code;
  if (i >= 0) {
  code = name.substring (0, i);
  name = name.substring (i + 1).trim ();
  } else {
  code = name;
  name = "";
  }this.rotationTerms[this.nRotations] =  new JS.HallRotationTerm (this, code, prevOrder, prevAxisType);
  this.nRotations++;
  return name;
  }, "~S,~N,~S");
  });
  