void setupMarketDataDictionary() { try { downloadObjects = null; downloadObjects = new WebDownload[6]; downloadObjects[0] = new ThreeInstitutionFutures(); downloadObjects[1] = new ThreeInstitutionOptions(); downloadObjects[2] = new ThreeInstitutionTWII(); downloadObjects[3] = new BigTradersFutures(); downloadObjects[4] = new PCR(); downloadObjects[5] = new TaiFexVix(); GC.KeepAlive(downloadObjects[5]); DicMarketData.Clear(); foreach (WebDownload wd in downloadObjects) { foreach (string item in wd.dataArray) { DicMarketData.Add(item, wd); } } } catch (Exception ex) { this.Invoke((MethodInvoker)(() => lbMsg.Items.Add(DateTime.Now.ToString("HH:mm:ss") + " setupMarketDataDictionary:" + ex.Message))); } }
public Class1() { DataTable PCR; DataTable NGS; //Read in PCR files var filesPCR = Directory.EnumerateFiles("path", "PCR*.csv"); foreach (string file in files) { using (FileStream fs = new FileStream(file, FileMode.Open, FileAccess.Read)) { DataAdapter.fill(ReadCSVFile(file), "PCR"); } } var filesNGS = Directory.EnumerateFiles("path", "NGS*.csv"); foreach (string file in files) { using (FileStream fs = new FileStream(file, FileMode.Open, FileAccess.Read)) { DataAdapter.fill(ReadCSVFile(file), "NGS"); } // merge tables } ////////////////// now merge the two data tables /// // set primary keys of tables NGS.PrimaryKey = new DataColumn[] { idColumn }; PCR.PrimaryKey = new DataColumn[] { idColumn }; DataTable Merged; // merge the two tables. using linQ var result = from dataRows1 in PCR.AsEnumerable() join dataRows2 in NGS.AsEnumerable() on dataRows1.Field<string>("ID") equals dataRows2.Field<string>("ID") select dtResult.LoadDataRow(new object[] { dataRows1.Field<string>("ID"), dataRows1.Field<string>("name"), dataRows2.Field<int>("etc"), }, false); }
static void Main() { var keywords = Properties.Keywords.Default; var paths = new[] { @"(?<=include )%", @"(?<=timetable\:)%", @"(?<=trainset )%", @"(?<=node>P[3]sound>P[3])%", @"(?<=node>P[3]track>P[9])%", @"(?<=node>P[3]track>P[11])%" }; var syntax = new PCR[] { new PCR("LineEnding", @"\r?\n"), new PCR("SingleLF", @"[^\r]\n"), new PCR("CRLF", @"\r\n"), new PCR("Tab", @"\t"), new PCR("HtmlClosingSlash", "</"), new PCR("HtmlEquals", "="), new PCR("HtmlStyleSheet", "(?<=<style>).*?(?=</style>)", RegexOptions.Singleline), new PCR("HWhiteSpace", @"[ \t;]+"), new PCR("VWhiteSpace", @"\r?\n"), new PCR("XVWhiteSpace", @"(?:\r\n){2,}"), new PCR("LineEnd", @"^ +| +(?=[\r\n])", RegexOptions.Multiline), new PCR("LineInterleave", @"(?:\r?\n){2}", RegexOptions.None), new PCR("Comment", @"//.*$", RegexOptions.Multiline), new PCR("CommentLine", @"^(\s*)//(.*)$", RegexOptions.Multiline), new PCR("NonCommentLine", @"^(\s*)(.*)$", RegexOptions.Multiline), new PCR("Keyword1", keywords.Set1.Cast <string>(), PcrOptions.Keywords, RegexOptions.IgnoreCase), new PCR("Keyword2", keywords.Set2.Cast <string>(), PcrOptions.Keywords, RegexOptions.IgnoreCase), new PCR("Keyword3", keywords.Set3.Cast <string>(), PcrOptions.Keywords, RegexOptions.IgnoreCase), new PCR("Keyword4", keywords.Set4.Cast <string>(), PcrOptions.Keywords, RegexOptions.IgnoreCase), new PCR("Keyword5", keywords.Set5.Cast <string>(), PcrOptions.Keywords, RegexOptions.IgnoreCase), new PCR("Number", @"(?<=[ ;\n]|^)[+-]?[\d.]+(?=[ ;\r\n])"), new PCR("Time", @"\b\d?\d:\d\d\b"), new PCR("Command", @"\$\w+"), new PCR("Special", @"\*{1}"), new PCR("Path", paths, PcrOptions.Special), new PCR("ExplicitTexExt", @"\.(?:bmp|tga|dds)\b", RegexOptions.IgnoreCase), new PCR("FirstActiveDynamic", "(?<=node>P[2])%(?= dynamic>P[4](?:headdriver|reardriver))", PcrOptions.Precompiled), new PCR("Include", "(?<=include )%(?= .*?end)", PcrOptions.Precompiled), new PCR("IncludeSimple", "(?<=include )%(?= end)", PcrOptions.Precompiled), new PCR("Timetable", @"(?<=trainset )%|(?<=Timetable\:)%", PcrOptions.Precompiled, RegexOptions.IgnoreCase), new PCR("CommandInclude", @"(?<=// *\$f +[a-z]{2} +)[^ ]+", RegexOptions.IgnoreCase), new PCR("TimetableFrame", @"[\[\]\|_]|(?<= {4,})[1-2]|(?<=\-)[1-2](?=\-)|(?<=_)[1-2](?=_)|\-{2,}"), new PCR("TimetableTime", @"(?<=[1-2] {1,3})\d?\d\.\d\d(?= {1,3}|)"), new PCR("NodeParams", @"(?<=node)(?: (%))+?(?= end[a-z]*)", PcrOptions.Precompiled), new PCR("IncludeParams", @"(?<=include)(?: (%))+?(?= end)", PcrOptions.Precompiled), new PCR("IncludeWithParams", @"(?<=include )((%) )(?!end)((%) )*?(%)(?= end)", PcrOptions.Precompiled), new PCR("EventParams", @"(?<=event )(% )*?(%)(?= endevent)", PcrOptions.Precompiled), new PCR("TrainsetParams", @"(?<=trainset)(?: (%)){4}", PcrOptions.Precompiled), new PCR("Rotate", @"(?<=rotate )(((%) ){2}(%))", PcrOptions.Precompiled) }; Regex.CompileToAssembly(syntax, new AssemblyName("ScnSyntax")); }
static void Main() { var keywords = Properties.Keywords.Default; var paths = new[] { @"(?<=include )%", @"(?<=timetable\:)%", @"(?<=trainset )%", @"(?<=node>P[3]sound>P[3])%", @"(?<=node>P[3]track>P[9])%", @"(?<=node>P[3]track>P[11])%" }; var syntax = new PCR[] { new PCR("LineEnding", @"\r?\n"), new PCR("SingleLF", @"[^\r]\n"), new PCR("CRLF", @"\r\n"), new PCR("Tab", @"\t"), new PCR("HtmlClosingSlash", "</"), new PCR("HtmlEquals", "="), new PCR("HtmlStyleSheet", "(?<=<style>).*?(?=</style>)", RegexOptions.Singleline), new PCR("HWhiteSpace", @"[ \t;]+"), new PCR("VWhiteSpace", @"\r?\n"), new PCR("XVWhiteSpace", @"(?:\r\n){2,}"), new PCR("LineEnd", @"^ +| +(?=[\r\n])", RegexOptions.Multiline), new PCR("LineInterleave", @"(?:\r?\n){2}", RegexOptions.None), new PCR("Comment", @"//.*$", RegexOptions.Multiline), new PCR("CommentLine", @"^(\s*)//(.*)$", RegexOptions.Multiline), new PCR("NonCommentLine", @"^(\s*)(.*)$", RegexOptions.Multiline), new PCR("Keyword1", keywords.Set1.Cast<string>(), PcrOptions.Keywords, RegexOptions.IgnoreCase), new PCR("Keyword2", keywords.Set2.Cast<string>(), PcrOptions.Keywords, RegexOptions.IgnoreCase), new PCR("Keyword3", keywords.Set3.Cast<string>(), PcrOptions.Keywords, RegexOptions.IgnoreCase), new PCR("Keyword4", keywords.Set4.Cast<string>(), PcrOptions.Keywords, RegexOptions.IgnoreCase), new PCR("Keyword5", keywords.Set5.Cast<string>(), PcrOptions.Keywords, RegexOptions.IgnoreCase), new PCR("Number", @"(?<=[ ;\n]|^)[+-]?[\d.]+(?=[ ;\r\n])"), new PCR("Time", @"\b\d?\d:\d\d\b"), new PCR("Command", @"\$\w+"), new PCR("Special", @"\*{1}"), new PCR("Path", paths, PcrOptions.Special), new PCR("ExplicitTexExt", @"\.(?:bmp|tga|dds)\b", RegexOptions.IgnoreCase), new PCR("FirstActiveDynamic", "(?<=node>P[2])%(?= dynamic>P[4](?:headdriver|reardriver))", PcrOptions.Precompiled), new PCR("Include", "(?<=include )%(?= .*?end)", PcrOptions.Precompiled), new PCR("IncludeSimple", "(?<=include )%(?= end)", PcrOptions.Precompiled), new PCR("Timetable", @"(?<=trainset )%|(?<=Timetable\:)%", PcrOptions.Precompiled, RegexOptions.IgnoreCase), new PCR("CommandInclude", @"(?<=// *\$f +[a-z]{2} +)[^ ]+", RegexOptions.IgnoreCase), new PCR("TimetableFrame", @"[\[\]\|_]|(?<= {4,})[1-2]|(?<=\-)[1-2](?=\-)|(?<=_)[1-2](?=_)|\-{2,}"), new PCR("TimetableTime", @"(?<=[1-2] {1,3})\d?\d\.\d\d(?= {1,3}|)"), new PCR("NodeParams", @"(?<=node)(?: (%))+?(?= end[a-z]*)", PcrOptions.Precompiled), new PCR("IncludeParams", @"(?<=include)(?: (%))+?(?= end)", PcrOptions.Precompiled), new PCR("EventParams", @"(?<=event)(?: (%))+?(?= endevent)", PcrOptions.Precompiled), new PCR("TrainsetParams", @"(?<=trainset)(?: (%)){4}", PcrOptions.Precompiled) }; Regex.CompileToAssembly(syntax, new AssemblyName("ScnSyntax")); }
public ActionResult Download(PCR File) { string inFile = File.ReceiptFile; string myFile = inFile.Remove(0, 1); string path = AppDomain.CurrentDomain.BaseDirectory; byte[] fileBytes = System.IO.File.ReadAllBytes(path + myFile); var response = new FileContentResult(fileBytes, "application/octet-stream"); response.FileDownloadName = "Receipt.pdf"; return(response); }
private void btnDownlaodHistoricalData_Click(object sender, EventArgs e) { WebDownload WD; lbDownloadPercent.Text = "0.0%"; switch (cbDownloadChoice.SelectedIndex) { case 0: WD = new ThreeInstitutionFutures(); break; case 1: WD = new ThreeInstitutionOptions(); break; case 2: WD = new ThreeInstitutionTWII(); break; case 3: WD = new BigTradersFutures(); break; case 4: WD = new BidAskQty(); break; case 5: WD = new PCR(); break; default: WD = new ThreeInstitutionFutures(); break; } DateTime be = dtBegin.Value; DateTime en = dtEnd.Value; WD.UpdateMsg += LabelMsg; WD.StartDownloadHistoricalData(be, en); }
/// <summary> /// Constructs an HL7 segment for the specified Segments enum object /// </summary> /// <param name="seg">The Segments enum object to construct for</param> public Segment(Segments seg) { switch (seg) { case Segments.ABS: ABS abs = new ABS(); Name = abs.Name; Description = abs.Description; Fields = abs.Fields; break; case Segments.ACC: ACC acc = new ACC(); Name = acc.Name; Description = acc.Description; Fields = acc.Fields; break; case Segments.ADD: ADD add = new ADD(); Name = add.Name; Description = add.Description; Fields = add.Fields; break; case Segments.AFF: AFF aff = new AFF(); Name = aff.Name; Description = aff.Description; Fields = aff.Fields; break; case Segments.AIG: AIG aig = new AIG(); Name = aig.Name; Description = aig.Description; Fields = aig.Fields; break; case Segments.AIL: AIL ail = new AIL(); Name = ail.Name; Description = ail.Description; Fields = ail.Fields; break; case Segments.AIP: AIP aip = new AIP(); Name = aip.Name; Description = aip.Description; Fields = aip.Fields; break; case Segments.AIS: AIS ais = new AIS(); Name = ais.Name; Description = ais.Description; Fields = ais.Fields; break; case Segments.AL1: AL1 al1 = new AL1(); Name = al1.Name; Description = al1.Description; Fields = al1.Fields; break; case Segments.APR: APR apr = new APR(); Name = apr.Name; Description = apr.Description; Fields = apr.Fields; break; case Segments.ARQ: ARQ arq = new ARQ(); Name = arq.Name; Description = arq.Description; Fields = arq.Fields; break; case Segments.AUT: AUT aut = new AUT(); Name = aut.Name; Description = aut.Description; Fields = aut.Fields; break; case Segments.BHS: BHS bhs = new BHS(); Name = bhs.Name; Description = bhs.Description; Fields = bhs.Fields; break; case Segments.BLC: BLC blc = new BLC(); Name = blc.Name; Description = blc.Description; Fields = blc.Fields; break; case Segments.BLG: BLG blg = new BLG(); Name = blg.Name; Description = blg.Description; Fields = blg.Fields; break; case Segments.BPO: BPO bpo = new BPO(); Name = bpo.Name; Description = bpo.Description; Fields = bpo.Fields; break; case Segments.BPX: BPX bpx = new BPX(); Name = bpx.Name; Description = bpx.Description; Fields = bpx.Fields; break; case Segments.BTS: BTS bts = new BTS(); Name = bts.Name; Description = bts.Description; Fields = bts.Fields; break; case Segments.BTX: BTX btx = new BTX(); Name = btx.Name; Description = btx.Description; Fields = btx.Fields; break; case Segments.CDM: CDM cdm = new CDM(); Name = cdm.Name; Description = cdm.Description; Fields = cdm.Fields; break; case Segments.CER: CER cer = new CER(); Name = cer.Name; Description = cer.Description; Fields = cer.Fields; break; case Segments.CM0: CM0 cm0 = new CM0(); Name = cm0.Name; Description = cm0.Description; Fields = cm0.Fields; break; case Segments.CM1: CM1 cm1 = new CM1(); Name = cm1.Name; Description = cm1.Description; Fields = cm1.Fields; break; case Segments.CM2: CM2 cm2 = new CM2(); Name = cm2.Name; Description = cm2.Description; Fields = cm2.Fields; break; case Segments.CNS: CNS cns = new CNS(); Name = cns.Name; Description = cns.Description; Fields = cns.Fields; break; case Segments.CON: CON con = new CON(); Name = con.Name; Description = con.Description; Fields = con.Fields; break; case Segments.CSP: CSP csp = new CSP(); Name = csp.Name; Description = csp.Description; Fields = csp.Fields; break; case Segments.CSR: CSR csr = new CSR(); Name = csr.Name; Description = csr.Description; Fields = csr.Fields; break; case Segments.CSS: CSS css = new CSS(); Name = css.Name; Description = css.Description; Fields = css.Fields; break; case Segments.CTD: CTD ctd = new CTD(); Name = ctd.Name; Description = ctd.Description; Fields = ctd.Fields; break; case Segments.CTI: CTI cti = new CTI(); Name = cti.Name; Description = cti.Description; Fields = cti.Fields; break; case Segments.DB1: DB1 db1 = new DB1(); Name = db1.Name; Description = db1.Description; Fields = db1.Fields; break; case Segments.DG1: DG1 dg1 = new DG1(); Name = dg1.Name; Description = dg1.Description; Fields = dg1.Fields; break; case Segments.DRG: DRG drg = new DRG(); Name = drg.Name; Description = drg.Description; Fields = drg.Fields; break; case Segments.DSC: DSC dsc = new DSC(); Name = dsc.Name; Description = dsc.Description; Fields = dsc.Fields; break; case Segments.DSP: DSP dsp = new DSP(); Name = dsp.Name; Description = dsp.Description; Fields = dsp.Fields; break; case Segments.ECD: ECD ecd = new ECD(); Name = ecd.Name; Description = ecd.Description; Fields = ecd.Fields; break; case Segments.ECR: ECR ecr = new ECR(); Name = ecr.Name; Description = ecr.Description; Fields = ecr.Fields; break; case Segments.EDU: EDU edu = new EDU(); Name = edu.Name; Description = edu.Description; Fields = edu.Fields; break; case Segments.EQL: EQL eql = new EQL(); Name = eql.Name; Description = eql.Description; Fields = eql.Fields; break; case Segments.EQP: EQP eqp = new EQP(); Name = eqp.Name; Description = eqp.Description; Fields = eqp.Fields; break; case Segments.EQU: EQU equ = new EQU(); Name = equ.Name; Description = equ.Description; Fields = equ.Fields; break; case Segments.ERQ: ERQ erq = new ERQ(); Name = erq.Name; Description = erq.Description; Fields = erq.Fields; break; case Segments.ERR: ERR err = new ERR(); Name = err.Name; Description = err.Description; Fields = err.Fields; break; case Segments.EVN: EVN evn = new EVN(); Name = evn.Name; Description = evn.Description; Fields = evn.Fields; break; case Segments.FAC: FAC fac = new FAC(); Name = fac.Name; Description = fac.Description; Fields = fac.Fields; break; case Segments.FHS: FHS fhs = new FHS(); Name = fhs.Name; Description = fhs.Description; Fields = fhs.Fields; break; case Segments.FT1: FT1 ft1 = new FT1(); Name = ft1.Name; Description = ft1.Description; Fields = ft1.Fields; break; case Segments.FTS: FTS fts = new FTS(); Name = fts.Name; Description = fts.Description; Fields = fts.Fields; break; case Segments.GOL: GOL gol = new GOL(); Name = gol.Name; Description = gol.Description; Fields = gol.Fields; break; case Segments.GP1: GP1 gp1 = new GP1(); Name = gp1.Name; Description = gp1.Description; Fields = gp1.Fields; break; case Segments.GP2: GP2 gp2 = new GP2(); Name = gp2.Name; Description = gp2.Description; Fields = gp2.Fields; break; case Segments.GT1: GT1 gt1 = new GT1(); Name = gt1.Name; Description = gt1.Description; Fields = gt1.Fields; break; case Segments.IAM: IAM iam = new IAM(); Name = iam.Name; Description = iam.Description; Fields = iam.Fields; break; case Segments.IIM: IIM iim = new IIM(); Name = iim.Name; Description = iim.Description; Fields = iim.Fields; break; case Segments.IN1: IN1 in1 = new IN1(); Name = in1.Name; Description = in1.Description; Fields = in1.Fields; break; case Segments.IN2: IN2 in2 = new IN2(); Name = in2.Name; Description = in2.Description; Fields = in2.Fields; break; case Segments.IN3: IN3 in3 = new IN3(); Name = in3.Name; Description = in3.Description; Fields = in3.Fields; break; case Segments.INV: INV inv = new INV(); Name = inv.Name; Description = inv.Description; Fields = inv.Fields; break; case Segments.IPC: IPC ipc = new IPC(); Name = ipc.Name; Description = ipc.Description; Fields = ipc.Fields; break; case Segments.ISD: ISD isd = new ISD(); Name = isd.Name; Description = isd.Description; Fields = isd.Fields; break; case Segments.LAN: LAN lan = new LAN(); Name = lan.Name; Description = lan.Description; Fields = lan.Fields; break; case Segments.LCC: LCC lcc = new LCC(); Name = lcc.Name; Description = lcc.Description; Fields = lcc.Fields; break; case Segments.LCH: LCH lch = new LCH(); Name = lch.Name; Description = lch.Description; Fields = lch.Fields; break; case Segments.LDP: LDP ldp = new LDP(); Name = ldp.Name; Description = ldp.Description; Fields = ldp.Fields; break; case Segments.LOC: LOC loc = new LOC(); Name = loc.Name; Description = loc.Description; Fields = loc.Fields; break; case Segments.LRL: LRL lrl = new LRL(); Name = lrl.Name; Description = lrl.Description; Fields = lrl.Fields; break; case Segments.MFA: MFA mfa = new MFA(); Name = mfa.Name; Description = mfa.Description; Fields = mfa.Fields; break; case Segments.MFE: MFE mfe = new MFE(); Name = mfe.Name; Description = mfe.Description; Fields = mfe.Fields; break; case Segments.MFI: MFI mfi = new MFI(); Name = mfi.Name; Description = mfi.Description; Fields = mfi.Fields; break; case Segments.MRG: MRG mrg = new MRG(); Name = mrg.Name; Description = mrg.Description; Fields = mrg.Fields; break; case Segments.MSA: MSA msa = new MSA(); Name = msa.Name; Description = msa.Description; Fields = msa.Fields; break; case Segments.MSH: MSH msh = new MSH(); Name = msh.Name; Description = msh.Description; Fields = msh.Fields; break; case Segments.NCK: NCK nck = new NCK(); Name = nck.Name; Description = nck.Description; Fields = nck.Fields; break; case Segments.NDS: NDS nds = new NDS(); Name = nds.Name; Description = nds.Description; Fields = nds.Fields; break; case Segments.NK1: NK1 nk1 = new NK1(); Name = nk1.Name; Description = nk1.Description; Fields = nk1.Fields; break; case Segments.NPU: NPU npu = new NPU(); Name = npu.Name; Description = npu.Description; Fields = npu.Fields; break; case Segments.NSC: NSC nsc = new NSC(); Name = nsc.Name; Description = nsc.Description; Fields = nsc.Fields; break; case Segments.NST: NST nst = new NST(); Name = nst.Name; Description = nst.Description; Fields = nst.Fields; break; case Segments.NTE: NTE nte = new NTE(); Name = nte.Name; Description = nte.Description; Fields = nte.Fields; break; case Segments.OBR: OBR obr = new OBR(); Name = obr.Name; Description = obr.Description; Fields = obr.Fields; break; case Segments.OBX: OBX obx = new OBX(); Name = obx.Name; Description = obx.Description; Fields = obx.Fields; break; case Segments.ODS: ODS ods = new ODS(); Name = ods.Name; Description = ods.Description; Fields = ods.Fields; break; case Segments.ODT: ODT odt = new ODT(); Name = odt.Name; Description = odt.Description; Fields = odt.Fields; break; case Segments.OM1: OM1 om1 = new OM1(); Name = om1.Name; Description = om1.Description; Fields = om1.Fields; break; case Segments.OM2: OM2 om2 = new OM2(); Name = om2.Name; Description = om2.Description; Fields = om2.Fields; break; case Segments.OM3: OM3 om3 = new OM3(); Name = om3.Name; Description = om3.Description; Fields = om3.Fields; break; case Segments.OM4: OM4 om4 = new OM4(); Name = om4.Name; Description = om4.Description; Fields = om4.Fields; break; case Segments.OM5: OM5 om5 = new OM5(); Name = om5.Name; Description = om5.Description; Fields = om5.Fields; break; case Segments.OM6: OM6 om6 = new OM6(); Name = om6.Name; Description = om6.Description; Fields = om6.Fields; break; case Segments.OM7: OM7 om7 = new OM7(); Name = om7.Name; Description = om7.Description; Fields = om7.Fields; break; case Segments.ORC: ORC orc = new ORC(); Name = orc.Name; Description = orc.Description; Fields = orc.Fields; break; case Segments.ORG: ORG org = new ORG(); Name = org.Name; Description = org.Description; Fields = org.Fields; break; case Segments.OVR: OVR ovr = new OVR(); Name = ovr.Name; Description = ovr.Description; Fields = ovr.Fields; break; case Segments.PCR: PCR pcr = new PCR(); Name = pcr.Name; Description = pcr.Description; Fields = pcr.Fields; break; case Segments.PD1: PD1 pd1 = new PD1(); Name = pd1.Name; Description = pd1.Description; Fields = pd1.Fields; break; case Segments.PDA: PDA pda = new PDA(); Name = pda.Name; Description = pda.Description; Fields = pda.Fields; break; case Segments.PDC: PDC pdc = new PDC(); Name = pdc.Name; Description = pdc.Description; Fields = pdc.Fields; break; case Segments.PEO: PEO peo = new PEO(); Name = peo.Name; Description = peo.Description; Fields = peo.Fields; break; case Segments.PES: PES pes = new PES(); Name = pes.Name; Description = pes.Description; Fields = pes.Fields; break; case Segments.PID: PID pid = new PID(); Name = pid.Name; Description = pid.Description; Fields = pid.Fields; break; case Segments.PR1: PR1 pr1 = new PR1(); Name = pr1.Name; Description = pr1.Description; Fields = pr1.Fields; break; case Segments.PRA: PRA pra = new PRA(); Name = pra.Name; Description = pra.Description; Fields = pra.Fields; break; case Segments.PRB: PRB prb = new PRB(); Name = prb.Name; Description = prb.Description; Fields = prb.Fields; break; case Segments.PRC: PRC prc = new PRC(); Name = prc.Name; Description = prc.Description; Fields = prc.Fields; break; case Segments.PRD: PRD prd = new PRD(); Name = prd.Name; Description = prd.Description; Fields = prd.Fields; break; case Segments.PSH: PSH psh = new PSH(); Name = psh.Name; Description = psh.Description; Fields = psh.Fields; break; case Segments.PTH: PTH pth = new PTH(); Name = pth.Name; Description = pth.Description; Fields = pth.Fields; break; case Segments.PV1: PV1 pv1 = new PV1(); Name = pv1.Name; Description = pv1.Description; Fields = pv1.Fields; break; case Segments.PV2: PV2 pv2 = new PV2(); Name = pv2.Name; Description = pv2.Description; Fields = pv2.Fields; break; case Segments.QAK: QAK qak = new QAK(); Name = qak.Name; Description = qak.Description; Fields = qak.Fields; break; case Segments.QID: QID qid = new QID(); Name = qid.Name; Description = qid.Description; Fields = qid.Fields; break; case Segments.QPD: QPD qpd = new QPD(); Name = qpd.Name; Description = qpd.Description; Fields = qpd.Fields; break; case Segments.QRD: QRD qrd = new QRD(); Name = qrd.Name; Description = qrd.Description; Fields = qrd.Fields; break; case Segments.QRF: QRF qrf = new QRF(); Name = qrf.Name; Description = qrf.Description; Fields = qrf.Fields; break; case Segments.QRI: QRI qri = new QRI(); Name = qri.Name; Description = qri.Description; Fields = qri.Fields; break; case Segments.RCP: RCP rcp = new RCP(); Name = rcp.Name; Description = rcp.Description; Fields = rcp.Fields; break; case Segments.RDF: RDF rdf = new RDF(); Name = rdf.Name; Description = rdf.Description; Fields = rdf.Fields; break; case Segments.RF1: RF1 rf1 = new RF1(); Name = rf1.Name; Description = rf1.Description; Fields = rf1.Fields; break; case Segments.RGS: RGS rgs = new RGS(); Name = rgs.Name; Description = rgs.Description; Fields = rgs.Fields; break; case Segments.RMI: RMI rmi = new RMI(); Name = rmi.Name; Description = rmi.Description; Fields = rmi.Fields; break; case Segments.ROL: ROL rol = new ROL(); Name = rol.Name; Description = rol.Description; Fields = rol.Fields; break; case Segments.RQ1: RQ1 rq1 = new RQ1(); Name = rq1.Name; Description = rq1.Description; Fields = rq1.Fields; break; case Segments.RQD: RQD rqd = new RQD(); Name = rqd.Name; Description = rqd.Description; Fields = rqd.Fields; break; case Segments.RXA: RXA rxa = new RXA(); Name = rxa.Name; Description = rxa.Description; Fields = rxa.Fields; break; case Segments.RXC: RXC rxc = new RXC(); Name = rxc.Name; Description = rxc.Description; Fields = rxc.Fields; break; case Segments.RXD: RXD rxd = new RXD(); Name = rxd.Name; Description = rxd.Description; Fields = rxd.Fields; break; case Segments.RXE: RXE rxe = new RXE(); Name = rxe.Name; Description = rxe.Description; Fields = rxe.Fields; break; case Segments.RXG: RXG rxg = new RXG(); Name = rxg.Name; Description = rxg.Description; Fields = rxg.Fields; break; case Segments.RXO: RXO rxo = new RXO(); Name = rxo.Name; Description = rxo.Description; Fields = rxo.Fields; break; case Segments.RXR: RXR rxr = new RXR(); Name = rxr.Name; Description = rxr.Description; Fields = rxr.Fields; break; case Segments.SAC: SAC sac = new SAC(); Name = sac.Name; Description = sac.Description; Fields = sac.Fields; break; case Segments.SCH: SCH sch = new SCH(); Name = sch.Name; Description = sch.Description; Fields = sch.Fields; break; case Segments.SFT: SFT sft = new SFT(); Name = sft.Name; Description = sft.Description; Fields = sft.Fields; break; case Segments.SID: SID sid = new SID(); Name = sid.Name; Description = sid.Description; Fields = sid.Fields; break; case Segments.SPM: SPM spm = new SPM(); Name = spm.Name; Description = spm.Description; Fields = spm.Fields; break; case Segments.SPR: SPR spr = new SPR(); Name = spr.Name; Description = spr.Description; Fields = spr.Fields; break; case Segments.STF: STF stf = new STF(); Name = stf.Name; Description = stf.Description; Fields = stf.Fields; break; case Segments.TCC: TCC tcc = new TCC(); Name = tcc.Name; Description = tcc.Description; Fields = tcc.Fields; break; case Segments.TCD: TCD tcd = new TCD(); Name = tcd.Name; Description = tcd.Description; Fields = tcd.Fields; break; case Segments.TQ1: TQ1 tq1 = new TQ1(); Name = tq1.Name; Description = tq1.Description; Fields = tq1.Fields; break; case Segments.TQ2: TQ2 tq2 = new TQ2(); Name = tq2.Name; Description = tq2.Description; Fields = tq2.Fields; break; case Segments.TXA: TXA txa = new TXA(); Name = txa.Name; Description = txa.Description; Fields = txa.Fields; break; case Segments.UB1: UB1 ub1 = new UB1(); Name = ub1.Name; Description = ub1.Description; Fields = ub1.Fields; break; case Segments.UB2: UB2 ub2 = new UB2(); Name = ub2.Name; Description = ub2.Description; Fields = ub2.Fields; break; case Segments.URD: URD urd = new URD(); Name = urd.Name; Description = urd.Description; Fields = urd.Fields; break; case Segments.URS: URS urs = new URS(); Name = urs.Name; Description = urs.Description; Fields = urs.Fields; break; case Segments.VAR: VAR var = new VAR(); Name = var.Name; Description = var.Description; Fields = var.Fields; break; case Segments.VTQ: VTQ vtq = new VTQ(); Name = vtq.Name; Description = vtq.Description; Fields = vtq.Fields; break; } }
public List <Stdf4Record> ReadStdf4(BinaryReader reader) { List <Stdf4Record> records; if (this.OnlyParse) { records = null; } else { records = new List <Stdf4Record>(capacity: this.InitialListCapacity); } int pos = 0; int recordNumber = 0; Stdf4Record rec; StdfValueConverter converter = new StdfValueConverter(); try { ushort recordLength; while (true) { if (this.ReverseBytesOnRead) { this._twoBytes[1] = reader.ReadByte(); this._twoBytes[0] = reader.ReadByte(); recordLength = BitConverter.ToUInt16(_twoBytes, 0); } else { recordLength = reader.ReadUInt16(); } var stdfMajorType = reader.ReadByte(); var stdfMinorType = reader.ReadByte(); int stdfRecordType = (((int)stdfMajorType) << 8) | (int)stdfMinorType; // for a FAR record, always read 6 bytes since we don't know the byte order yet. // Also avoiding a cast here. byte[] bytes; if (stdfRecordType == 10) { recordLength = 2; } bytes = reader.ReadBytes(recordLength); pos += recordLength + 4; recordNumber += 1; //Three most common record types without a cast and outside the switch statement if (this._debugLevel >= 3) { // Fall through to case statement for lots of printing. } else if (stdfRecordType == 3850) { if (this.OnlyParse) { var ignore_PTR = new PTR(bytes, converter); } else { records.Add(new PTR(bytes, converter)); } continue; } else if (stdfRecordType == 1290) { if (this.OnlyParse) { var ignore_PIR = new PIR(bytes, converter); } else { records.Add(new PIR(bytes, converter)); } continue; } if (this._debugLevel >= 3 || (this.Verbose && stdfMajorType != 5 && stdfMajorType != 10 && stdfMajorType != 15)) { Console.WriteLine(string.Empty); Console.WriteLine($" Record {recordNumber} is {recordLength} bytes long (0x{recordLength:X2}) of type {stdfMajorType} - {stdfMinorType} ({stdfRecordType})."); if (this._debugLevel > 0) { Console.Write((new LavaData.Util.Debug.HexDump(bytes)).ToString()); if (this._debugLevel > 1) { // We want the record length and record type/sub-type. var newBytes = new byte[bytes.Length + 4]; (newBytes[0], newBytes[1]) = converter.UshortToBytes(recordLength); newBytes[2] = stdfMajorType; newBytes[3] = stdfMinorType; for (int i = 0; i < bytes.Length; i++) { newBytes[i + 4] = bytes[i]; } Console.WriteLine((new LavaData.Util.Debug.HexDump(newBytes).ToHexByteString())); } } } rec = null; if (Enum.IsDefined(typeof(Stdf4RecordType), stdfRecordType)) { Stdf4RecordType recordType = (Stdf4RecordType)stdfRecordType; switch ((Stdf4RecordType)stdfRecordType) { case Stdf4RecordType.PTR: // UNREACHABLE CODE -- handled above, except with debug >=3 rec = new PTR(bytes, converter); break; case Stdf4RecordType.PIR: // UNREACHABLE CODE -- handled above, except with debug >=3 rec = new PIR(bytes, converter); break; case Stdf4RecordType.PRR: rec = new PRR(bytes, converter); break; case Stdf4RecordType.FAR: var far = new FAR(bytes, converter); converter.CpuType = far.CpuType; this.ReverseBytesOnRead = converter.ReverseBytesOnRead; rec = far; break; //Data collected on a per lot basis; 1-NN Records case Stdf4RecordType.MIR: rec = new MIR(bytes, converter); break; case Stdf4RecordType.MRR: rec = new MRR(bytes, converter); break; case Stdf4RecordType.PCR: rec = new PCR(bytes, converter); break; case Stdf4RecordType.HBR: rec = new HBR(bytes, converter); break; case Stdf4RecordType.SBR: rec = new SBR(bytes, converter); break; case Stdf4RecordType.PMR: throw new Stdf4ParserException("PMR Not Implemented"); case Stdf4RecordType.PGR: throw new Stdf4ParserException("PGR Not Implemented"); case Stdf4RecordType.RDR: throw new Stdf4ParserException("RDR Not Implemented"); case Stdf4RecordType.SDR: rec = new SDR(bytes, converter); break; // Data collected per Wafer; 2-NN Records. case Stdf4RecordType.WIR: rec = new WIR(bytes, converter); break; case Stdf4RecordType.WRR: rec = new WRR(bytes, converter); break; case Stdf4RecordType.WCR: rec = new WCR(bytes, converter); break; case Stdf4RecordType.TSR: //throw new Stdf4ParserException("TSR Not Implemented"); break; // Generic Data; 50-NN Records. case Stdf4RecordType.GDR: //throw new Stdf4ParserException("GDR Not Implemented"); break; case Stdf4RecordType.DTR: rec = new DTR(bytes, converter); break; default: Console.WriteLine($" Unhandled STDF4 Record Type: {recordType} ({stdfMajorType} - {stdfMinorType})."); break; } if (rec != null) { if (this._debugLevel >= 3 || (this.Verbose && stdfRecordType != 1300)) { // Don't print PRR (1300), lots of them, except at a high debug level. Console.WriteLine(rec.ToString()); } if (!this.OnlyParse) { records.Add(rec); } } } else { Console.WriteLine($" No ENUM Defined for STDF4 Record Type: {stdfMajorType} - {stdfMinorType}."); } } } catch (EndOfStreamException) { if (this.Verbose) { Console.WriteLine("Read to the end of the stream!"); } } catch (Exception ex) { Console.WriteLine("Unhandled Exception: " + ex.Message); Console.WriteLine(ex.StackTrace); } if (this.Verbose) { Console.WriteLine($"Read {recordNumber} records."); } return(records); }