+ * CloudSD data = new CloudSD("myvar").init(new double[]{1, 2, 3, 4, 5});
+ * data.push(); // Push data onto cloud
+ * if(data.fetch()) {
+ * for(double d : data.getData()) {
+ * System.out.println(d);
+ * }
+ * }
+ *
+ *
+ */
+public class CloudSD extends Symbol {
+ protected double[] data = new double[0];
+ protected boolean isOnCloud = false;
+
+ protected CloudConfig localConfig = null;
+
+ protected boolean isReady = true;//Indicate if the result of a function is under evaluating
+ protected boolean isAsync = false; //Test purpose: isAsync==true when isReady==false
+
+ private static AtomicInteger cdsVarNameGenerator = new AtomicInteger(0);
+ protected boolean isGenName = false; //A flag to indicate if the name is a generated name
+
+ /**
+ * Construct an instance with a generated name
+ */
+ public CloudSD() {
+ super(generateName());
+ this.isGenName = true;
+ }
+
+ /**
+ * Construct an instance with a given name
+ *
+ * @param name
+ */
+ public CloudSD(String name) {
+ super(name);
+ }
+
+ /**
+ * Construct a CloudSD object with a generated name based on a given expression.
+ * This constructor is used to create a new instance of CloudSD from other CloudSD.
+ *