private static IConvertible SizeOf(StructInstance context, Expression[] parameters) { if (parameters.Length != 1) { throw new LoadDataException("SizeOf function requires an argument"); } if (!(parameters [0] is SymbolExpression)) { throw new LoadDataException("SizeOf argument must be a symbol"); } string symbol = ((SymbolExpression)parameters[0]).Symbol; StructFile structFile = context.Def.StructFile; StructDef def = structFile.GetStructByName(symbol); if (def == null) { throw new LoadDataException("Structure '" + symbol + "' not found"); } return(def.GetDataSize()); }
public StructFile LoadStructs(string fileName, StructSourceContext context) { StructFile result = new StructFile(fileName.Length > 0 ? Path.GetDirectoryName(fileName) : ""); _curStructFile = result; LoadStructFile(fileName, context); foreach (ReferenceBase reference in result.References) { try { reference.Resolve(); } catch (ParseException ex) { _errors.Add(ex); } } if (_errors.Count == 0) { return(result); } return(null); }
public StructDef(StructFile structFile, string name) { _structFile = structFile; _name = name; }
public EnumDef(StructFile file, string name) { _structFile = file; _name = name; }