Revision: 20267
          http://sourceforge.net/p/jmol/code/20267
Author:   hansonr
Date:     2015-02-04 12:52:20 +0000 (Wed, 04 Feb 2015)
Log Message:
-----------
Jmol.___JmolVersion="14.2.12_2015.02.04"

bug fix: show mouse  fails in JavaScript
  -- we cannot test using PT.isAI() in org.jmol.viewer.binding.Binding 
  -- because of a Java2Script compiler creates standard array [...] 
  -- from new int[] {....} whereas it should create Clazz.newArray() and fill it
bug fix: label %r should print "1" for non-PDB file atoms
bug fix; lcaoCartoon broken in 14.3.10_2014.11.27/14.2.12_2015.01.22
bug fix: isosurface id surf1 solvent; select within(2.0, $surf1) broken
bug fix: 01.22 version may not correctly clear rasmol hydrogen bonds in 
trajectories
bug fix: write "t.pdb" now correctly sequences groups and atoms
bug fix: select thisModel does not select all atoms in visible frame set
bug fix: select %w %x %y %z not implemented

Modified Paths:
--------------
    branches/v14_2/Jmol/src/javajs/util/PT.java
    branches/v14_2/Jmol/src/org/jmol/api/JmolPropertyManager.java
    branches/v14_2/Jmol/src/org/jmol/jvxl/readers/Parameters.java
    branches/v14_2/Jmol/src/org/jmol/jvxl/readers/SurfaceGenerator.java
    branches/v14_2/Jmol/src/org/jmol/modelset/AtomCollection.java
    branches/v14_2/Jmol/src/org/jmol/modelset/LabelToken.java
    branches/v14_2/Jmol/src/org/jmol/modelsetbio/BioModel.java
    branches/v14_2/Jmol/src/org/jmol/script/ScriptTokenParser.java
    branches/v14_2/Jmol/src/org/jmol/scriptext/CmdExt.java
    branches/v14_2/Jmol/src/org/jmol/scriptext/MathExt.java
    branches/v14_2/Jmol/src/org/jmol/viewer/Jmol.properties
    branches/v14_2/Jmol/src/org/jmol/viewer/PropertyManager.java
    branches/v14_2/Jmol/src/org/jmol/viewer/Viewer.java
    branches/v14_2/Jmol/src/org/jmol/viewer/binding/Binding.java

Modified: branches/v14_2/Jmol/src/javajs/util/PT.java
===================================================================
--- branches/v14_2/Jmol/src/javajs/util/PT.java 2015-02-04 12:47:46 UTC (rev 
20266)
+++ branches/v14_2/Jmol/src/javajs/util/PT.java 2015-02-04 12:52:20 UTC (rev 
20267)
@@ -1438,6 +1438,13 @@
     return sb.toString().replace('\1', '%');
   }
 
+  /**
+   * left-justify s2 in s1 and append to s
+   * 
+   * @param s
+   * @param s1
+   * @param s2
+   */
   public static void leftJustify(SB s, String s1, String s2) {
     s.append(s2);
     int n = s1.length() - s2.length();
@@ -1445,6 +1452,13 @@
       s.append(s1.substring(0, n));
   }
 
+  /**
+   * right-justify s2 in s1 and append to s
+   * 
+   * @param s
+   * @param s1
+   * @param s2
+   */
   public static void rightJustify(SB s, String s1, String s2) {
     int n = s1.length() - s2.length();
     if (n > 0)

Modified: branches/v14_2/Jmol/src/org/jmol/api/JmolPropertyManager.java
===================================================================
--- branches/v14_2/Jmol/src/org/jmol/api/JmolPropertyManager.java       
2015-02-04 12:47:46 UTC (rev 20266)
+++ branches/v14_2/Jmol/src/org/jmol/api/JmolPropertyManager.java       
2015-02-04 12:52:20 UTC (rev 20267)
@@ -35,7 +35,7 @@
   String getModelExtract(BS atomBitSet, boolean doTransform, boolean 
isModelKit,
                          String type);
 
-  String getPdbAtomData(BS bs, OC sb);
+  String getPdbAtomData(BS bs, OC sb, boolean asPQR);
 
   String getPdbData(int modelIndex, String type, BS bsA, Object[] parameters,
                     OC oc, boolean addStructure);

Modified: branches/v14_2/Jmol/src/org/jmol/jvxl/readers/Parameters.java
===================================================================
--- branches/v14_2/Jmol/src/org/jmol/jvxl/readers/Parameters.java       
2015-02-04 12:47:46 UTC (rev 20266)
+++ branches/v14_2/Jmol/src/org/jmol/jvxl/readers/Parameters.java       
2015-02-04 12:52:20 UTC (rev 20267)
@@ -467,7 +467,7 @@
     cutoff = PT.FLOAT_MIN_SAFE;
     isCutoffAbsolute = false;
     isSilent = !logMessages;
-    if (center.x == Float.MAX_VALUE)
+    if (Float.isNaN(center.x))
       center.set(0, 0, 0);
     if (resolution == Float.MAX_VALUE)
       resolution = 6;

Modified: branches/v14_2/Jmol/src/org/jmol/jvxl/readers/SurfaceGenerator.java
===================================================================
--- branches/v14_2/Jmol/src/org/jmol/jvxl/readers/SurfaceGenerator.java 
2015-02-04 12:47:46 UTC (rev 20266)
+++ branches/v14_2/Jmol/src/org/jmol/jvxl/readers/SurfaceGenerator.java 
2015-02-04 12:52:20 UTC (rev 20267)
@@ -790,7 +790,7 @@
     if ("lcaoCartoonCenter" == propertyName) {
       if (++params.state != Parameters.STATE_DATA_READ)
         return true;
-      if (params.center.x == Float.MAX_VALUE)
+      if (Float.isNaN(params.center.x))
         params.center.setT((V3) value);
       return false;
     }

Modified: branches/v14_2/Jmol/src/org/jmol/modelset/AtomCollection.java
===================================================================
--- branches/v14_2/Jmol/src/org/jmol/modelset/AtomCollection.java       
2015-02-04 12:47:46 UTC (rev 20266)
+++ branches/v14_2/Jmol/src/org/jmol/modelset/AtomCollection.java       
2015-02-04 12:52:20 UTC (rev 20267)
@@ -2539,7 +2539,7 @@
     return bsResult;
   }
   
-  public BS getAtomsNearPts(float distance, P3[] points,
+  public BS getAtomsNearPts(float distance, T3[] points,
                                BS bsInclude) {
     BS bsResult = new BS();
     if (points.length == 0 || bsInclude != null && bsInclude.cardinality() == 
0)

Modified: branches/v14_2/Jmol/src/org/jmol/modelset/LabelToken.java
===================================================================
--- branches/v14_2/Jmol/src/org/jmol/modelset/LabelToken.java   2015-02-04 
12:47:46 UTC (rev 20266)
+++ branches/v14_2/Jmol/src/org/jmol/modelset/LabelToken.java   2015-02-04 
12:52:20 UTC (rev 20267)
@@ -568,6 +568,8 @@
         break;
       case 'r':
         strT = atom.getSeqcodeString();
+        if (strT == null)
+          strT = "1";
         break;
       case T.strucid:
         strT = atom.getStructureId();

Modified: branches/v14_2/Jmol/src/org/jmol/modelsetbio/BioModel.java
===================================================================
--- branches/v14_2/Jmol/src/org/jmol/modelsetbio/BioModel.java  2015-02-04 
12:47:46 UTC (rev 20266)
+++ branches/v14_2/Jmol/src/org/jmol/modelsetbio/BioModel.java  2015-02-04 
12:52:20 UTC (rev 20267)
@@ -465,19 +465,37 @@
   public void calcRasmolHydrogenBonds(ModelSet ms, BS bsA, BS bsB, Lst<Bond> 
vHBonds,
                                       boolean nucleicOnly, int nMax,
                                       boolean dsspIgnoreHydrogens, BS 
bsHBonds) {
-    boolean isSame = (bsB == null || bsA.equals(bsB));
     Model[] am = ms.am;
+    if (vHBonds == null) {
+      // autobond -- clear all hydrogen bonds
+      BS bsAtoms = bsA;
+      if (bsB != null && !bsA.equals(bsB))
+        (bsAtoms = BSUtil.copy(bsA)).or(bsB);
+      BS bsDelete = new BS();
+      BS bsOK = new BS();
+      Model[] models = ms.am;
+      Bond[] bonds = ms.bo;
+      for (int i = ms.bondCount; --i >= 0;) {
+        Bond bond = bonds[i];
+        if ((bond.order & Edge.BOND_H_CALC_MASK) == 0)
+          continue;
+        // trajectory atom .mi will be pointing to their trajectory;
+        // here we check to see if their base model is this model
+        if (bsAtoms.get(bond.atom1.i))
+          bsDelete.set(i);
+        else
+          bsOK.set(models[bond.atom1.mi].trajectoryBaseIndex);
+      }
+      for (int i = ms.mc; --i >= 0;)
+        if (models[i].isBioModel)
+          ((BioModel) models[i]).hasRasmolHBonds = bsOK.get(i);
+      if (bsDelete.nextSetBit(0) >= 0)
+        ms.deleteBonds(bsDelete, false);
+    }
     for (int i = ms.mc; --i >= 0;)
-      if (am[i].isBioModel && am[i].trajectoryBaseIndex == i) {
-        BioModel m = (BioModel) am[i];
-        if (vHBonds == null) {
-          clearRasmolHydrogenBonds(ms, m, bsA);
-          if (!isSame)
-            clearRasmolHydrogenBonds(ms, m, bsB);
-        }
-        m.getRasmolHydrogenBonds(bsA, bsB, vHBonds, nucleicOnly, nMax,
+      if (am[i].isBioModel && !ms.isTrajectorySubFrame(i))
+        ((BioModel) am[i]).getRasmolHydrogenBonds(bsA, bsB, vHBonds, 
nucleicOnly, nMax,
             dsspIgnoreHydrogens, bsHBonds);
-      }
   }
 
   private void getRasmolHydrogenBonds(BS bsA, BS bsB,

Modified: branches/v14_2/Jmol/src/org/jmol/script/ScriptTokenParser.java
===================================================================
--- branches/v14_2/Jmol/src/org/jmol/script/ScriptTokenParser.java      
2015-02-04 12:47:46 UTC (rev 20266)
+++ branches/v14_2/Jmol/src/org/jmol/script/ScriptTokenParser.java      
2015-02-04 12:52:20 UTC (rev 20267)
@@ -1287,6 +1287,10 @@
     case T.string:
     case T.integer:
     case T.identifier:
+    case T.x:
+    case T.y:
+    case T.z:
+    case T.w:
       break;
     default:
       return error(ERROR_invalidModelSpecification);

Modified: branches/v14_2/Jmol/src/org/jmol/scriptext/CmdExt.java
===================================================================
--- branches/v14_2/Jmol/src/org/jmol/scriptext/CmdExt.java      2015-02-04 
12:47:46 UTC (rev 20266)
+++ branches/v14_2/Jmol/src/org/jmol/scriptext/CmdExt.java      2015-02-04 
12:52:20 UTC (rev 20267)
@@ -3301,12 +3301,6 @@
             data = vwr.getPdbAtomData(null, null);
           } else {
             doDefer = true;
-            /*
-             * OutputStream os = vwr.getOutputStream(fileName, fullPath); msg =
-             * vwr.getPdbData(null, new BufferedOutputStream(os)); if (msg !=
-             * null) msg = "OK " + msg + " " + fullPath[0]; try { os.close(); }
-             * catch (IOException e) { // TODO }
-             */
           }
         } else if (data == "FILE") {
           if (isShow)

Modified: branches/v14_2/Jmol/src/org/jmol/scriptext/MathExt.java
===================================================================
--- branches/v14_2/Jmol/src/org/jmol/scriptext/MathExt.java     2015-02-04 
12:47:46 UTC (rev 20266)
+++ branches/v14_2/Jmol/src/org/jmol/scriptext/MathExt.java     2015-02-04 
12:52:20 UTC (rev 20267)
@@ -2558,7 +2558,7 @@
   private BS getAtomsNearSurface(float distance, String surfaceId) {
     Object[] data = new Object[] { surfaceId, null, null };
     if (e.getShapePropertyData(JC.SHAPE_ISOSURFACE, "getVertices", data))
-      return vwr.ms.getAtomsNearPts(distance, (P3[]) data[1], (BS) data[2]);
+      return vwr.ms.getAtomsNearPts(distance, (T3[]) data[1], (BS) data[2]);
     data[1] = Integer.valueOf(0);
     data[2] = Integer.valueOf(-1);
     if (e.getShapePropertyData(JC.SHAPE_DRAW, "getCenter", data))

Modified: branches/v14_2/Jmol/src/org/jmol/viewer/Jmol.properties
===================================================================
--- branches/v14_2/Jmol/src/org/jmol/viewer/Jmol.properties     2015-02-04 
12:47:46 UTC (rev 20266)
+++ branches/v14_2/Jmol/src/org/jmol/viewer/Jmol.properties     2015-02-04 
12:52:20 UTC (rev 20267)
@@ -5,6 +5,20 @@
 # THIS IS THE RELEASE BRANCH 
 # BUG FIXES ONLY, PLEASE
 
+Jmol.___JmolVersion="14.2.12_2015.02.04"
+
+bug fix: show mouse  fails in JavaScript
+  -- we cannot test using PT.isAI() in org.jmol.viewer.binding.Binding 
+  -- because of a Java2Script compiler creates standard array [...] 
+  -- from new int[] {....} whereas it should create Clazz.newArray() and fill 
it
+bug fix: label %r should print "1" for non-PDB file atoms
+bug fix; lcaoCartoon broken in 14.3.10_2014.11.27/14.2.12_2015.01.22
+bug fix: isosurface id surf1 solvent; select within(2.0, $surf1) broken
+bug fix: 01.22 version may not correctly clear rasmol hydrogen bonds in 
trajectories
+bug fix: write "t.pdb" now correctly sequences groups and atoms
+bug fix: select thisModel does not select all atoms in visible frame set
+bug fix: select %w %x %y %z not implemented
+
 Jmol.___JmolVersion="14.2.12_2015.01.27"
 
 bug fix: CGO LINE_LOOP not closing

Modified: branches/v14_2/Jmol/src/org/jmol/viewer/PropertyManager.java
===================================================================
--- branches/v14_2/Jmol/src/org/jmol/viewer/PropertyManager.java        
2015-02-04 12:47:46 UTC (rev 20266)
+++ branches/v14_2/Jmol/src/org/jmol/viewer/PropertyManager.java        
2015-02-04 12:52:20 UTC (rev 20267)
@@ -41,6 +41,7 @@
 
 import java.util.Arrays;
 import java.util.Calendar;
+import java.util.Comparator;
 import java.util.Date;
 import java.util.Enumeration;
 import java.util.Hashtable;
@@ -82,7 +83,7 @@
 
 
 @J2SIgnoreImport({ javajs.util.XmlUtil.class })
-public class PropertyManager implements JmolPropertyManager {
+public class PropertyManager implements JmolPropertyManager, 
Comparator<String> {
 
   public PropertyManager() {
     // required for reflection
@@ -1643,7 +1644,7 @@
    * @return PDB file data string
    */
   @Override
-  public String getPdbAtomData(BS bs, OC out) {
+  public String getPdbAtomData(BS bs, OC out, boolean asPQR) {
     if (vwr.ms.ac == 0 || bs.nextSetBit(0) < 0)
       return "";
     if (out == null)
@@ -1653,6 +1654,7 @@
     int iModel = atoms[bs.nextSetBit(0)].mi;
     int iModelLast = -1;
     boolean isPQR = "PQR".equals(out.getType());
+    boolean isBiomodel = false;
     String occTemp = "%6.2Q%6.2b          ";
     if (isPQR) {
       occTemp = "%8.4P%7.4V       ";
@@ -1671,21 +1673,25 @@
     int lastAtomIndex = bs.length() - 1;
     boolean showModels = (iModel != atoms[lastAtomIndex].mi);
     SB sbCONECT = (showModels ? null : new SB());
+    SB sbATOMS = new SB();
     boolean isMultipleBondPDB = models[iModel].isPdbWithMultipleBonds;
     LabelToken[] tokens;
     P3 ptTemp = new P3();
+    boolean doConnect = false;
     for (int i = bs.nextSetBit(0); i >= 0; i = bs.nextSetBit(i + 1)) {
       Atom a = atoms[i];
+      isBiomodel = models[a.mi].isBioModel;
+      doConnect = (isBiomodel && !showModels);
       if (showModels && a.mi != iModelLast) {
         if (iModelLast != -1)
           out.append("ENDMDL\n");
         iModelLast = a.mi;
         out.append("MODEL     " + (iModelLast + 1) + "\n");
+        sbATOMS = new SB();
       }
       String sa = a.getAtomName();
       boolean leftJustify = (a.getElementSymbol().length() == 2
           || sa.length() >= 4 || PT.isDigit(sa.charAt(0)));
-      boolean isBiomodel = models[a.mi].isBioModel;
       boolean isHetero = a.isHetero();
       if (!isBiomodel)
         tokens = (leftJustify ? LabelToken.compile(vwr,
@@ -1709,38 +1715,55 @@
             "ATOM  %5.-5i  %-3.3a%1A%3.-3n %1c%4.-4R%1E   %8.3x%8.3y%8.3z"
                 + occTemp, '\0', null));
       String XX = a.getElementSymbolIso(false).toUpperCase();
-      out.append(LabelToken.formatLabelAtomArray(vwr, a, tokens, '\0', null, 
ptTemp))
+      if (isBiomodel && doConnect)
+        PT.leftJustify(sbATOMS, "    ", "" + a.getPolymerIndexInModel());
+      sbATOMS
+          .append(
+              LabelToken.formatLabelAtomArray(vwr, a, tokens, '\0', null,
+                  ptTemp))
           .append(XX.length() == 1 ? " " + XX : XX.substring(0, 2))
           .append("  \n");
-      if (!showModels && (!isBiomodel || isHetero || isMultipleBondPDB)) {
-        Bond[] bonds = a.bonds;
-        if (bonds != null)
-          for (int j = 0; j < bonds.length; j++) {
-            int iThis = a.getAtomNumber();
-            Atom a2 = bonds[j].getOtherAtom(a);
-            if (!bs.get(a2.i))
-              continue;
-            int n = bonds[j].getCovalentOrder();
-            if (n == 1 && isMultipleBondPDB && !isHetero)
-              continue;
-            int iOther = a2.getAtomNumber();
-            switch (n) {
-            case 2:
-            case 3:
-              if (iOther < iThis)
-                continue; // only one entry in this case -- pseudo-PDB style
-              //$FALL-THROUGH$
-            case 1:
-              sbCONECT.append("CONECT").append(
-                  PT.formatStringI("%5i", "i", iThis));
-              for (int k = 0; k < n; k++)
-                sbCONECT.append(PT.formatStringI("%5i", "i", iOther));
-              sbCONECT.appendC('\n');
-              break;
+    }
+    Map<Integer, Integer> map = (doConnect ? new Hashtable<Integer, Integer>() 
: null);
+    String sAtoms = fixPDBFormat(sbATOMS.toString(), map);
+    if (doConnect) {
+      for (int i = bs.nextSetBit(0); i >= 0; i = bs.nextSetBit(i + 1)) {
+        Atom a = atoms[i];
+        boolean isHetero = a.isHetero();
+        boolean isCysS = !isHetero && (a.getElementNumber() == 16);
+        if (isHetero || isMultipleBondPDB || isCysS) {
+          Bond[] bonds = a.bonds;
+          if (bonds != null)
+            for (int j = 0; j < bonds.length; j++) {
+              int iThis = a.getAtomNumber();
+              Atom a2 = bonds[j].getOtherAtom(a);
+              if (!bs.get(a2.i))
+                continue;
+              int n = bonds[j].getCovalentOrder();
+              if (n == 1 && (isMultipleBondPDB && !isHetero && !isCysS
+                  || isCysS && a2.getElementNumber() != 16))
+                continue;
+              int iOther = a2.getAtomNumber();
+              switch (n) {
+              case 2:
+              case 3:
+                if (iOther < iThis)
+                  continue; // only one entry in this case -- pseudo-PDB style
+                //$FALL-THROUGH$
+              case 1:
+                sbCONECT.append("CONECT").append(
+                    PT.formatStringI("%5i", "i", 
map.get(Integer.valueOf(iThis)).intValue()));
+                String s = PT.formatStringI("%5i", "i", 
map.get(Integer.valueOf(iOther)).intValue());
+                for (int k = 0; k < n; k++)
+                  sbCONECT.append(s);
+                sbCONECT.appendC('\n');
+                break;
+              }
             }
-          }
+        }
       }
     }
+    out.append(sAtoms);
     if (showModels)
       out.append("ENDMDL\n");
     else
@@ -1748,13 +1771,40 @@
     return out.toString();
   }
 
-  /* **********************
-   * 
-   * Jmol Data Frame methods
-   * 
-   *****************************/
+  /**
+   * must re-order by resno and then renumber atoms
+   * @param s
+   * @param map 
+   * @return fixed string
+   */
+  private String fixPDBFormat(String s, Map<Integer, Integer> map) {
+    String[] lines = PT.split(s, "\n");
+    Arrays.sort(lines, this);
+      SB sb = new SB();
+      for (int i = 0; i < lines.length; i++) {
+        s = lines[i];
+        int p = PT.parseInt(lines[i].substring(6, 12));
+        if (map != null)
+          map.put(Integer.valueOf(p), Integer.valueOf(i + 1));
+        String si = "     " + (i + 1);
+        sb.append(s.substring(0, 6))
+        .append(si.substring(si.length() - 5))
+        .append(s.substring(11)).append("\n");
+      }
+    return sb.toString();
+  }
 
   @Override
+  public int compare(String s1, String s2) {
+    int atA = PT.parseInt(s1.substring(10, 16));
+    int atB = PT.parseInt(s2.substring(10, 16));
+    int resA = PT.parseInt(s1.substring(26, 30));
+    int resB = PT.parseInt(s2.substring(26, 30));
+    return (resA < resB ? -1 : resA > resB ? 1 : atA < atB ? -1
+        : atA > atB ? 1 : 0);
+  }
+
+  @Override
   @SuppressWarnings("static-access")
   public String getPdbData(int modelIndex, String type, BS bsSelected,
                            Object[] parameters, OC out, boolean addStructure) {

Modified: branches/v14_2/Jmol/src/org/jmol/viewer/Viewer.java
===================================================================
--- branches/v14_2/Jmol/src/org/jmol/viewer/Viewer.java 2015-02-04 12:47:46 UTC 
(rev 20266)
+++ branches/v14_2/Jmol/src/org/jmol/viewer/Viewer.java 2015-02-04 12:52:20 UTC 
(rev 20267)
@@ -7192,7 +7192,7 @@
   }
 
   public String getPdbAtomData(BS bs, OC sb) {
-    return getPropertyManager().getPdbAtomData(bs == null ? bsA() : bs, sb);
+    return getPropertyManager().getPdbAtomData(bs == null ? bsA() : bs, sb, 
false);
   }
 
   public boolean isJmolDataFrame() {

Modified: branches/v14_2/Jmol/src/org/jmol/viewer/binding/Binding.java
===================================================================
--- branches/v14_2/Jmol/src/org/jmol/viewer/binding/Binding.java        
2015-02-04 12:47:46 UTC (rev 20266)
+++ branches/v14_2/Jmol/src/org/jmol/viewer/binding/Binding.java        
2015-02-04 12:52:20 UTC (rev 20267)
@@ -307,7 +307,16 @@
     Lst<String>[] names = new Lst[actionInfo.length];
     Lst<String[]> user = new Lst<String[]>();
     for (Object obj : bindings.values()) {
-      if (PT.isAI(obj)) {
+      if (PT.isAS(obj)) {
+        String action = ((String[]) obj)[0];
+        String script = ((String[]) obj)[1];
+        if (qlow == null || qlow.indexOf("user") >= 0 || action.indexOf(qlow) 
>= 0 || script.indexOf(qlow) >= 0)
+          user.addLast((String[]) obj);
+      } else {
+        
+        // we cannot test using PT.isAI() here because of a Java2Script 
compiler error
+        // in relation to new int[] {.....}  BH  2015.02.03
+        
         int[] info = (int[]) obj;
         int i = info[1];
         if (names[i] == null)
@@ -316,11 +325,6 @@
         if (qlow == null
           || (actionNames[i] + ";" + actionInfo[i] + ";" + 
name).toLowerCase().indexOf(qlow) >= 0)
         names[i].addLast(name);
-      } else if (PT.isAS(obj)) {
-        String action = ((String[]) obj)[0];
-        String script = ((String[]) obj)[1];
-        if (qlow == null || qlow.indexOf("user") >= 0 || action.indexOf(qlow) 
>= 0 || script.indexOf(qlow) >= 0)
-          user.addLast((String[]) obj);
       }
     }
     for (int i = 0; i < actionInfo.length; i++) {

This was sent by the SourceForge.net collaborative development platform, the 
world's largest Open Source development site.


------------------------------------------------------------------------------
Dive into the World of Parallel Programming. The Go Parallel Website,
sponsored by Intel and developed in partnership with Slashdot Media, is your
hub for all things parallel software development, from weekly thought
leadership blogs to news, videos, case studies, tutorials and more. Take a
look and join the conversation now. http://goparallel.sourceforge.net/
_______________________________________________
Jmol-commits mailing list
Jmol-commits@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/jmol-commits

Reply via email to