Ejemplo n.º 1
0
 public void init(string thisName, sinter_Variable.sinter_IOMode iomode, string desc, string[] addStrings, int nn, int mm)
 {
     o_name           = thisName;
     o_mode           = iomode;
     o_description    = desc;
     o_addressStrings = addStrings;
     if (nn >= 1 && mm >= 1)
     {
         o_value = new sinter_Variable[nn, mm];
     }
     else
     {
         o_value = null;
     }
 }
Ejemplo n.º 2
0
 private void addIO(sinter_Variable.sinter_IOMode iomode, sinter_Variable.sinter_IOType type, string name, string desc, string[] addStrings, int[] bounds)
 {
     if (type == sinter_Variable.sinter_IOType.si_TABLE)
     {
         sinter_Table thisTable = new sinter_Table();
         if (bounds == null || bounds.Length < 2)
         {
             thisTable.init(name, iomode, desc, addStrings, 0, 0);
         }
         else
         {
             thisTable.init(name, iomode, desc, addStrings, bounds[0], bounds[1]);
         }
         addTable(thisTable);
     }
     else if (type == sinter_Variable.sinter_IOType.si_DOUBLE_VEC ||
              type == sinter_Variable.sinter_IOType.si_INTEGER_VEC ||
              type == sinter_Variable.sinter_IOType.si_STRING_VEC)
     {
         sinter_Vector o = new sinter_Vector();
         if (bounds == null || bounds.Length < 1)
         {
             o.init(name, iomode, type, desc, addStrings, 0);
         }
         else
         {
             o.init(name, iomode, type, desc, addStrings, bounds[0]);
         }
         addVariable(o);
     }
     else
     {
         sinter_Variable o = new sinter_Variable();
         o.init(name, iomode, type, desc, addStrings);
         if (o.isSetting)
         {
             addSetting(o);
         }
         else
         {
             addVariable(o);
         }
     }
 }
Ejemplo n.º 3
0
 public override void init(string thisName, sinter_Variable.sinter_IOMode iomode, sinter_Variable.sinter_IOType thisType, string desc, string[] addStrings)
 {
     throw new NotImplementedException("Dynamic Scalar does not implement init with no time series");
 }
Ejemplo n.º 4
0
        //----------------------------------
        //Constuctor
        //----------------------------------

        public sinter_Table()
            : base()
        {
            o_mode = sinter_Variable.sinter_IOMode.si_IN;
        }
Ejemplo n.º 5
0
        private sinter.sinter_AppError processLine(string l)
        {
            string[] fields = null;
            sinter_Variable.sinter_IOType type = default(sinter_Variable.sinter_IOType);
            sinter_Variable.sinter_IOMode mode = default(sinter_Variable.sinter_IOMode);
            //
            // Split line using a bar
            //
            if (l.Length < 1)
            {
                return(sinter.sinter_AppError.si_OKAY);
            }

            fields = l.Split('|');
            if (fields.Length == 0)
            {
                return(sinter.sinter_AppError.si_OKAY);
            }
            for (int i = 0; i <= fields.Length - 1; i++)
            {
                fields[i] = fields[i].Trim();//  Strings.Trim(fields[i]);
                char tab = '\u0009';
                fields[i] = fields[i].Replace(tab.ToString(), "");
            }
            //
            // Check for special key words
            //
            if (fields[0].Length == 0)
            {
                return(sinter.sinter_AppError.si_OKAY);
                //Blank or invalid line, ignore it
            }
            if (fields[0][0] == '#')  //If first char in line is a #
            {
                return(sinter.sinter_AppError.si_OKAY);
                //it is a comment ignore line
            }
            else if (fields[0] == "file" & fields.Length == 2)
            {
                o_aspenFilename = fields[1];
                //e = sim.openSim();
                //open sim so can inspect IO
                //return e;
                return(sinter.sinter_AppError.si_OKAY);
            }
            else if (fields[0] == "dir" & fields.Length == 2)
            {
//                o_workingDir = fields[1];
                return(sinter.sinter_AppError.si_UNKNOWN_FIELD);
            }
            else if (fields[0] == "title" & fields.Length == 2)
            {
                o_title = fields[1];
                return(sinter.sinter_AppError.si_OKAY);
            }
            else if (fields[0] == "author" & fields.Length == 2)
            {
                o_author = fields[1];
                return(sinter.sinter_AppError.si_OKAY);
            }
            else if (fields[0] == "date" & fields.Length == 2)
            {
                o_dateString = fields[1];
                return(sinter.sinter_AppError.si_OKAY);
            }
            else if (fields[0] == "description" & fields.Length == 2)
            {
                o_simDesc = fields[1];
                return(sinter.sinter_AppError.si_OKAY);
            }
            else if (fields[0] == "min")
            {
                processMin(fields);
                return(sinter.sinter_AppError.si_OKAY);
            }
            else if (fields[0] == "max")
            {
                processMax(fields);
                return(sinter.sinter_AppError.si_OKAY);
            }
            else if (fields[0] == "default")
            {
                processDefault(fields);
                return(sinter.sinter_AppError.si_OKAY);
            }
            else if (fields[0] == "limits")
            {
                if (getIOByName(fields[1]) == null)
                {
                    throw new System.IO.IOException("Cannot apply labels, Object " + fields[1] + " not found.  (Settings not allowed)");
                    //return sinter.sinter_AppError.si_OKAY;
                }
                else if (!(getIOByName(fields[1]).isScalar))
                {
                    throw new System.IO.IOException("Cannot use limits on non scalar");
                    //return sinter.sinter_AppError.si_OKAY;
                }
                else if (fields.Length != 4)
                {
                    throw new System.IO.IOException("Limits on " + fields[1] + " too few arguments");
                    //return sinter.sinter_AppError.si_OKAY;
                }
                if (getIOByName(fields[1]).type == sinter_Variable.sinter_IOType.si_DOUBLE)
                {
                    sinter_Variable thisVar = (sinter_Variable)getIOByName(fields[1]);
                    thisVar.minimum = Convert.ToDouble(fields[2]);
                    thisVar.maximum = Convert.ToDouble(fields[3]);
                }
                else if (getIOByName(fields[1]).type == sinter_Variable.sinter_IOType.si_INTEGER)
                {
                    sinter_Variable thisVar = (sinter_Variable)getIOByName(fields[1]);
                    thisVar.minimum = Convert.ToInt32(fields[2]);
                    thisVar.maximum = Convert.ToInt32(fields[3]);
                }
                return(sinter.sinter_AppError.si_OKAY);
            }
            else if (fields[0] == "cLabels" | fields[0] == "clabels")
            {
                if (getIOByName(fields[1]) == null)
                {
                    throw new System.IO.IOException("Cannot apply labels, Object " + fields[1] + " not found");
                }
                processLabels("c", fields, getIOByName(fields[1]));
                return(sinter.sinter_AppError.si_OKAY);
            }
            else if (fields[0] == "rLabels" | fields[0] == "rlabels")
            {
                if (getIOByName(fields[1]) == null)
                {
                    throw new System.IO.IOException("Cannot apply labels, Object " + fields[1] + " not found");
                }
                processLabels("r", fields, getIOByName(fields[1]));
                return(sinter.sinter_AppError.si_OKAY);
            }
            else if (fields[0] == "cStrings" | fields[0] == "cstrings")
            {
                if (getIOByName(fields[1]) == null)
                {
                    throw new System.IO.IOException("Cannot apply strings, Object " + fields[1] + " not found");
                }
                processLabels("cs", fields, getIOByName(fields[1]));
                sinter_IVariable io = getIOByName(fields[1]);
                return(sinter.sinter_AppError.si_OKAY);
            }
            else if (fields[0] == "rStrings" | fields[0] == "rstrings")
            {
                if (getIOByName(fields[1]) == null)
                {
                    throw new System.IO.IOException("Cannot apply strings, Object " + fields[1] + " not found");
                }
                processLabels("rs", fields, getIOByName(fields[1]));
                return(sinter.sinter_AppError.si_OKAY);
            }
            else if (fields[0] == "rStrings_ForEach" | fields[0] == "rstrings_ForEach")
            {
                throw new System.IO.IOException("No Foreach allowed with this version of sinter.");
            }
            //
            // Check lines that add input and output
            //
            if (fields.Length >= 5)
            {
                //assume if a line isn't a keyword line and it has 5 or more fields
                // it is adding an input or output
                //
                // 0-name | 1-iomode | 2-iotype | 3-description | 4-addess-string ... (There may be multiple address strings)

                if ((fields[1] == "input"))
                {
                    mode = sinter_Variable.sinter_IOMode.si_IN;
                }
                else
                {
                    mode = sinter_Variable.sinter_IOMode.si_OUT;
                }
                int[] bounds = null;
                sinter_Variable.string2Type(fields[2], ref type, ref bounds);
                string[] addresses = new string[fields.Length - 4];
                Array.Copy(fields, 4, addresses, 0, fields.Length - 4);
                //Copy all address strings for this line
                addIO(mode, type, fields[0], fields[3], addresses, bounds);
                return(sinter.sinter_AppError.si_OKAY);
            }

            throw new System.IO.IOException(String.Format("Sinter Config Line unknown: {0}", l));
        }