public VariableTable(FStruct _struc, String _name, String _delim, FStruct _fs) : base(_struc) { name = _name; delim = _delim; fs = _fs; }
public static SizeBufferTable loadEntry(FStruct _struc, String name, List <string> parms) { String delim = parms[1].Trim(); SizeBufferTable f = new SizeBufferTable(_struc, name, delim); return(f); }
public static IntField loadEntry(FStruct _struct, string name, List <string> fparams) { int width = Int32.Parse(fparams[1].Trim()); IntField f = new IntField(_struct, name, width); return(f); }
public static VariableBuffer loadEntry(FStruct _struct, string name, List <string> fparams) { String _delim = fparams[1].Trim(); VariableBuffer f = new VariableBuffer(_struct, name, _delim); return(f); }
public static FixedBuffer loadEntry(FStruct _struct, string name, List <string> fparams) { int width = Int32.Parse(fparams[1].Trim()); FixedBuffer f = new FixedBuffer(_struct, name, width); return(f); }
public static VariableTable loadEntry(FStruct _struc, String name, List <string> parms) { String delim = parms[1].Trim(); FStruct fs = (FStruct)_struc.format.structs.getEntry(parms[2].Trim()); VariableTable f = new VariableTable(_struc, name, delim, fs); return(f); }
public static FField loadField(FStruct fs, String fname, List <String> parms) { FField f = null; //check for loaded struct FEntry ftype = fs.format.structs.getEntry(parms[0].ToLower()); if (ftype != null) { f = new StructField(fs, fname, (FStruct)ftype); } //else is a predefined struct else { switch (parms[0]) { case "int": f = IntField.loadEntry(fs, fname, parms); break; case "fixedstr": f = FixedString.loadEntry(fs, fname, parms); break; case "fixedbuf": f = FixedBuffer.loadEntry(fs, fname, parms); break; case "varbuf": f = VariableBuffer.loadEntry(fs, fname, parms); break; case "vartable": f = VariableTable.loadEntry(fs, fname, parms); break; case "sizebuftable": f = SizeBufferTable.loadEntry(fs, fname, parms); break; default: break; } } return(f); }
//use hard coded fields for now public static Format loadFormatFile(string filepath) { Format format = new Format(); EnamlData gosling = EnamlData.loadFromFile(filepath); string gosVersion = gosling.getStringValue("Gosling.version", ""); //read in structure data List <String> structs = gosling.getPathKeys("structs"); foreach (String structname in structs) { FStruct fs = new FStruct(format, structname); List <String> fields = gosling.getPathKeys("structs." + structname); String fieldpath = "structs." + structname + "."; foreach (String fieldname in fields) { String fline = gosling.getStringValue(fieldpath + fieldname, ""); List <String> parms = getParams(fline); FField f = loadField(fs, fieldname, parms); fs.fields.Add(f); fs.symTable.addEntry(fieldname, f); } format.structs.addEntry(structname, fs); } //read in file structure data format.fyle = new FStruct(format, "file"); List <String> ffields = gosling.getPathKeys("file"); foreach (String fieldname in ffields) { String fline = gosling.getStringValue("file." + fieldname, "").Trim(); List <String> parms = getParams(fline); FField f = loadField(format.fyle, fieldname, parms); format.fyle.fields.Add(f); format.fyle.symTable.addEntry(fieldname, f); } return(format); }
public StructField(FStruct _struct, String _name, FStruct _ftype) : base(_struct) { name = _name; ftype = _ftype; }
public FField(FStruct _struct) : base(_struct.format) { structure = _struct; }
public SizeBufferTable(FStruct _struc, String _name, String _delim) : base(_struc) { name = _name; delim = _delim; }
public VariableBuffer(FStruct _struct, string _name, String _delim) : base(_struct) { name = _name; delim = _delim; }
public FixedBuffer(FStruct _struct, string _name, int _width) : base(_struct) { name = _name; width = _width; }
public FixedString(FStruct _struct, String _name, int _width) : base(_struct) { name = _name; width = _width; }
public IntField(FStruct _struct, String _name, int _width) : base(_struct) { name = _name; width = _width; }