public Entity ParseEntity(DataBlock dataBlock, string entity, string parent) { var e = new Entity(); e.rootPath = rootPath; // construye el encabezado esperable var block = dataBlock.makeStringBlock(entity); var blockParent = dataBlock.makeStringBlock(parent); byte[] full; if (parent != "") full = dataBlock.addArrays(block, block, blockParent); else full = dataBlock.addArrays(block, blockParent); if (dataBlock.moveTo(full) == false) throw new Exception("Sequence not found."); // lee la entidad e.Name = dataBlock.eatShortString(); e.RelationChild = dataBlock.eatShortString(); if (e.RelationChild != "") e.RelationParent = dataBlock.eatShortString(); e.Description = dataBlock.eatShortString(); e.IndexFilename = dataBlock.eatShortString(); e.s1 = dataBlock.eat16int(); if (e.IndexFilename != "") { e.CodesVariable = dataBlock.eatShortString(); e.LabelVariable = dataBlock.eatShortString(); e.Level = dataBlock.eat32int(); e.b1 = dataBlock.eatByte(); //e.VariableCount = no es confiable...que guarde rangos... eat32int(); // en base al count de variables, que busque los "dataset" while (true) { Variable v = ParseVariable(dataBlock, e); if (v != null) e.Variables.Add(v); else break; } } e.VariableCount = e.Variables.Count; return e; }
private int ParseBeginning(DataBlock dataBlock, string entity, string parent) { var e = new Entity(); e.rootPath = rootPath; // construye el encabezado esperable var block = dataBlock.makeStringBlock(entity); var blockParent = dataBlock.makeStringBlock(parent); byte[] full; if (parent != "") full = dataBlock.addArrays(block, block, blockParent); else full = dataBlock.addArrays(block, blockParent); if (dataBlock.moveTo(full) == false) throw new Exception("Sequence not found."); return dataBlock.n; }
private bool JumptToDataSet(DataBlock dataBlock) { if (dataBlock.moveTo("DATASET") == false) return false; // valida el tipo de dato if (checkDataType(dataBlock) == false) return false; // dataBlock.move(-2); // retrocede para leer el nombre if (dataBlock.moveBackString(32) < 1) { dataBlock.move(6); // este no es válido... busca si hay más... return JumptToDataSet(dataBlock); } else return true; }