473,569 Members | 2,691 Online
Bytes | Software Development & Data Engineering Community
+ Post

Home Posts Topics Members FAQ

How to use Tinyxml for G85 wafermap to C?

3 New Member
Anyone have an idea how to use tinyxml for G85 wafermap to C?
Expand|Select|Wrap|Line Numbers
  1. <?xml version='1.0' encoding='utf-8'?>
  2. - <Maps>
  3. - <Map xmlns="http://www.semi.org" SubstrateId="123456705F2" SubstrateType="Wafer"
  4. FormatRevision="SEMI G85-0703">
  5. - <Device Rows="35" LotId="1234567.111" BinType="ASCII" Columns="40" MapType="Array"
  6. NullBin="0" ProductId="MT*" WaferSize="200" CreateDate="20050117093925000" DeviceSizeX="4800.60"
  7. DeviceSizeY="5484.12" MicronLotId="1234567.111" Orientation="0" SupplierName="Micron Technology,
  8. Inc." OriginLocation="2">
  9. <ReferenceDevice ReferenceDeviceX="27" ReferenceDeviceY="34"/>
  10. <Bin BinCode="G" BinCount="830" BinQuality="Pass"/>
  11. <Bin BinCode="X" BinCount="255" BinQuality="Fail"/>
  12. - <Data>
  13. -<Row><![CDATA[00000000000000XXXXGXXGGGXX00000000000000]]></Row>
  14. -<Row><![CDATA[000000000000XXXGGXXGXGGXGGGX000000000000]]></Row>
  15. -<Row><![CDATA[0000000000XGXGGGGGGGGXXXGGGGGX0000000000]]></Row>
  16. -<Row><![CDATA[00000000GGGGGXGGGGGXGXGGGGGXGGXX00000000]]></Row>
  17. -<Row><![CDATA[000000XGXGGGGGGGGGGGGGGGGGGGGGGGG0000000]]></Row>
  18. -<Row><![CDATA[00000XXXGXXXGGGGGGGGXXGGGXGGGGGGGGX00000]]></Row>
  19. -<Row><![CDATA[0000XXGGGGGGGGGGGGGGGGGGGGGGGGGGGGX00000]]></Row>
  20. -<Row><![CDATA[0000GGGGGXGGGGGGGGGGGGGGXGGGXGGGGGGX0000]]></Row>
  21. -<Row><![CDATA[000GGGGGGGGGGGGGGGGGGGGGGXGGGGGXGGXGX000]]></Row>
  22. -<Row><![CDATA[00XXGGGGXGGXGGGGGGGXGGGGGXXGGGGGGXXGGX00]]></Row>
  23. -<Row><![CDATA[00GGGGGGXGXGGGGGGGGGGGGGGGGXXGGXGGGGGG00]]></Row>
  24. -<Row><![CDATA[0XGGGGXGGXGGXGGGGGGGGGGGGGGGGGGGGGGGGGX0]]></Row>
  25. -<Row><![CDATA[0GGGXXGGGXXXGGGGGGGGGGGGGGXGGXGGGXXGGGX0]]></Row>
  26. -<Row><![CDATA[0XGGGGGGGGGXGGGGGGGGGXGGGGXXGGGGGGGGGGG0]]></Row>
  27. -<Row><![CDATA[XGGGGGGGGGGXGGGXGGXGGGGGXGXXGGGGGGGGXGGX]]></Row>
  28. -<Row><![CDATA[XGGGGGGGXGXXGGGGGGGGGGGGGGXGGXGGGXGGXGGX]]></Row>
  29. -<Row><![CDATA[XGGGGGGXXGGXGGGGGGGXXGGGXGGXGXXGGXGXXGGX]]></Row>
  30. -<Row><![CDATA[XGXGGGGGXGXXXXGGGGGXXGGGXXXXXXXGXGGGGGGX]]></Row>
  31. -<Row><![CDATA[XGGGXGGGGGXGGGGGGGGGXGGGXXGGGXXGGGGGGGGX]]></Row>
  32. -<Row><![CDATA[XGXGXGGGGGGXGGGXGGGGGGXGGGGGXXGGGGGGGGGX]]></Row>
  33. -<Row><![CDATA[XGGGGGGGXXGGGGGGXGGXGGGXGGGGXGGGGGGGGXGX]]></Row>
  34. -<Row><![CDATA[0GXGGGGGGGGGGGGGXGGGGGGGGGGGGGGXGGGGGGG0]]></Row>
  35. -<Row><![CDATA[0GXGGGGGGGGGGGGGGGGGGXGGGGGGXXGXGXGGGGX0]]></Row>
  36. -<Row><![CDATA[0XXGGGGGGGGGGGXGGGGGGGGGGGGGGGXXGGGXGG00]]></Row>
  37. -<Row><![CDATA[00GGGGGGGGGGGGGGGGGGGGXGGGXGGGXGGGGGGX00]]></Row>
  38. -<Row><![CDATA[000GGGGGGGGGGGGGGGXGGGGGGXGGGGXGXGGGG000]]></Row>
  39. -<Row><![CDATA[000XGGGGXGGGGGGGGGGGGXGGGGGGGGGXGGGGX000]]></Row>
  40. -<Row><![CDATA[00000XGGGGGGGGGGGGGGXXGGGGGGXXXGGGXX0000]]></Row>
  41. -<Row><![CDATA[00000XGGGGGGXXGGGGGGGGGGGXGXGGGXXGX00000]]></Row>
  42. -<Row><![CDATA[000000GGGXGGGGGGGGGGXXGGGGGXXGGXXX000000]]></Row>
  43. -<Row><![CDATA[0000000XXGGGGGGGGGGGXGGXGGXXXGXGX0000000]]></Row>
  44. -<Row><![CDATA[000000000GGGGXXGXGGGGGGGGGXGGXX000000000]]></Row>
  45. -<Row><![CDATA[00000000000XXXGGGGGGGGXXGGXGXX0000000000]]></Row>
  46. -<Row><![CDATA[0000000000000XXGGGXXXXGXXXX0000000000000]]></Row>
  47. -<Row><![CDATA[0000000000000000XXXXXXX00000000000000000]]></Row>
  48. </Data>
  49. </Device>
  50. </Map>
  51. </Maps>
  52.  
Jun 15 '10 #1
3 6401
thyeun
3 New Member
Expand|Select|Wrap|Line Numbers
  1. bool G85MapParser::ReadHeaderData()
  2. {
  3.         CString csFormatRevision;
  4.         CString csRow;
  5.         CString csBintype;
  6.  
  7.         TiXmlElement *pRoot, *pDevice, *pMap, *pData, *pRow;
  8.         TiXmlText *pRowData;
  9.         TiXmlAttribute *pFormatRevision, *pwaferId, *psubstrateId, *pLotId, *pOrientation, *pFrameId, *pRows, *pColumns, *pOriginLocation, *pNullBin, *pBinType, *pBinQuality, *pBinCode, *pReference, *pBin; 
  10.  
  11.         pRoot = m_pXMLFile->RootElement(); //maps
  12.         if ( pRoot!=NULL && (m_pNode=pRoot->FirstChild("Maps"))!=NULL )
  13.         {
  14.             pMap = pRoot->FirstChildElement("Map");
  15.             while (pMap)
  16.             {
  17.                 pFormatRevision = pMap->FirstAttribute();
  18.                 if (pFormatRevision)
  19.                 {    
  20.                     csFormatRevision = pFormatRevision->Value();
  21.                     if (csFormatRevision == "SEMI G85-1101")
  22.                     {
  23.                         pwaferId = pMap->FirstAttribute();
  24.                         pwaferId->Value();
  25.                     }
  26.                     else 
  27.                     {    if (csFormatRevision == "SEMI G85-0703")
  28.                         {
  29.                             psubstrateId = pMap->FirstAttribute();
  30.                             psubstrateId->Value();
  31.                             pwaferId = pMap->FirstAttribute();
  32.                             if (pwaferId)
  33.                             {
  34.                                 pwaferId->Value();
  35.                                 //pwaferId->GetNewObject(pwaferId);
  36.                             }
  37.                         }
  38.                     }
  39.                     //pFormatRevision->GetNewObject(pFormatRevision);
  40.                 }
  41.  
  42.                 pDevice = pMap->FirstChildElement("Device");
  43.                 while (pDevice)
  44.                 {
  45.                     pLotId = pDevice->FirstAttribute();
  46.                     if (pLotId)
  47.                     {
  48.                         pLotId->Value();
  49.                         //pLotId->GetNewObject(pLotId);
  50.                     }
  51.  
  52.                     pOrientation = pDevice->FirstAttribute();
  53.                     if (pOrientation)
  54.                     {
  55.                         pOrientation->Value();
  56.                         //pOrientation->GetNewObject(pOrientation);
  57.                     }
  58.  
  59.                     pFrameId = pDevice->FirstAttribute();
  60.                     if (pFrameId)
  61.                     {
  62.                         pFrameId->Value();
  63.                         //pFrameId->GetNewObject(pFrameId);
  64.                     }
  65.  
  66.                     pRows = pDevice->FirstAttribute();
  67.                     if (pRows)
  68.                     {
  69.                         pRows->Value();
  70.                         //pRows->GetNewObject(pRows);
  71.                     }
  72.  
  73.                     pReference = pDevice->FirstAttribute();
  74.                     if (pReference)
  75.                         {
  76.                             pReference->Value();
  77.                         }
  78.  
  79.                     pBin = pDevice->FirstAttribute();
  80.                     if (pBin)
  81.                     {
  82.                         pBin->Value();
  83.                     }
  84.  
  85.                     pColumns = pDevice->FirstAttribute();
  86.                     if (pColumns)
  87.                     {
  88.                         pColumns->Value();
  89.                         //pColumns->GetNewObject(pColumns);
  90.                     }
  91.  
  92.                     pOriginLocation = pDevice->FirstAttribute();
  93.                     if (pOriginLocation)
  94.                     {
  95.                         pOriginLocation->Value();
  96.                         //pOriginLocation->GetNewObject(pOriginLocation);
  97.                     }
  98.  
  99.  
  100.                     pNullBin = pDevice->FirstAttribute();
  101.                     if (pNullBin)
  102.                     {
  103.                         pNullBin->Value();
  104.                         //pNullBin->GetNewObject(pNullBin);
  105.                     }
  106.  
  107.                     pBinType = pDevice->FirstAttribute();
  108.                     if (pBinType)
  109.                     {
  110.                         csBintype = pBinType->Value();
  111.                         if (csBintype = "HEXADECIMAL")
  112.                         {
  113.                             m_BCType = BC_HEX;
  114.                             m_pXMLFile->LoadDocument(m_MapFile.buffer());
  115.                         }
  116.                         else 
  117.                         {
  118.                             if (csBintype = "DECIMAL")
  119.                             {
  120.                                 m_BCType = BC_DEC;
  121.                                 m_pXMLFile->LoadDocument(m_MapFile.buffer());
  122.                             }
  123.                             else
  124.                             {
  125.                                 SetError("wrong file name");
  126.                             }
  127.  
  128.                             SetError("wrong file name");
  129.                         }
  130.  
  131.                         //pBinType->GetNewObject(pBinType);
  132.                     }
  133.  
  134.                     pBinQuality = pDevice->FirstAttribute();
  135.                     if (pBinQuality)
  136.                     {
  137.                         pBinQuality->Value();
  138.                         pBinCode = pDevice->FirstAttribute();
  139.                         //pBinQuality = pDevice->GetNewObject(pBinQuality);
  140.                         break;
  141.                     }
  142.  
  143.                     pData = pDevice->FirstChildElement("Data");
  144.                     pRow = NULL;
  145.                     pRowData = NULL;
  146.                     while(pRow = pData->FirstChildElement("Row"))
  147.                     {
  148.                         pRowData = pRow->FirstChild()->ToText();
  149.                         if ( pRowData )
  150.                         {
  151.                             pRowData->SetCDATA(false);
  152.                             csRow = pRowData->Value();
  153.                         }
  154.                     }
  155.         }
  156.     }
  157. }
  158.  
  159.     else
  160.     {
  161.         SetError("Parsing error: 6", APARS_ERR_PARSERR, "1 6");
  162.         return false;
  163.     }
  164.  
  165.     return true;
  166. }
can i write it like that
Jun 22 '10 #2
jkmyoung
2,057 Recognized Expert Top Contributor
What is this "G85 wafermap" you speak of? Spec?
Jun 22 '10 #3
thyeun
3 New Member
@jkmyoung
G85 = a standard of SEMI (semiconductor industry)

so G85 wafermap = a map that use for a wafer to pick-up a die and this file is based on an extension *.xml

so, what i need is, i need to make this *.xml file into a parser that write in C/C++
Jun 22 '10 #4

Sign in to post your reply or Sign up for a free account.

Similar topics

1
1890
by: Rui Maciel | last post by:
Hi there I'm trying to learn how to handle XML information on C++ files. To start off, I'm trying to use the TinyXML library. The thing is, I'm not having muck success using the library and it seems the TinyXML project didn't released a tutorial. What I am trying to achieve is to transfer the following file into the following struct:
1
2282
by: Singee15 | last post by:
How do i go about loading an xml file from a webpage to be used in TinyXML? example: Load from http://www.somepage.com/thexml.xml Any help would be great, thanks!
3
1525
by: Singee15 | last post by:
How do i go about loading an xml file from a webpage to be used in TinyXML? example: Load from http://www.somepage.com/thexml.xml Any help would be great, thanks!
0
3088
Meetee
by: Meetee | last post by:
Hi.. I have created an XML file which contains username and password. I want to parse this XML file so that username and password can be stored in database. I am using TinyXML and want to parse the file. I am C++ programmer but new at XML. I have referred TinyXML classes and files. Please guide me! Regards
1
2056
by: eadavid | last post by:
HI, I am a beginner to perl and I need to write perl code for checking a good die in the wafermap. Here is the wafermap look like in file ....XXXX111111111X1111XXXX.... ..1X1111111X111111111X111X.. I need help in perl code to check number of 1 (good die) and to check X for (bad die). After it read the file it should print out total...
0
1754
by: thomas.frendo | last post by:
Hi, I'm trying to store some elements of TinyXml in a 2d std::vector here is my code #include "stdafx.h" #include "tinyxml.h" #include <vector>
4
10456
by: mamid | last post by:
Hi all, I would like to use a C++ XML parser. But, between Xerces-C++ and Libxml++ I hesitate. I want make the best choice. I would like to compare with that parser on different points (Performance, validating support, XPath support, Use complexity, licence...) Is there any web wile where i can find this comparaison? Or, persons that can...
7
9305
Meetee
by: Meetee | last post by:
Hi, I want to convert tinyxml document file into string. I have found on google as well as tinyxml document but I haven't solve it. What I have done so far is TiXmlDocument doc("xyz.xml"); TiXmlElement * root = new TiXmlElement( "login" ); root->SetAttribute("username","name"); root->SetAttribute("password", "pwd");...
9
26392
by: abhishekltil | last post by:
hello, can you please help me in reading this sample xml using tinyxml library. <?xml version="1.0" encoding="ISO-8859-1"?> <Configuration> <Parameter name="loglevel" value="3"/> <Parameter name="newparam" value="some value"/> <Process Name="osis">
0
1872
by: modykun | last post by:
Reading an XML here is a must for my need I have to say though that i don't have any previous XML experience , so I'm not sure how to make it read it I'm using TinyXML , because i need fast code just to load the information from an XML file . so anyway , this is how my XML file looks like: <?xml version="1.0" ?> <Rects> <Rect x="0"...
0
7612
by: Hystou | last post by:
Most computers default to English, but sometimes we require a different language, especially when relocating. Forgot to request a specific language before your computer shipped? No problem! You can effortlessly switch the default language on Windows 10 without reinstalling. I'll walk you through it. First, let's disable language...
0
7924
Oralloy
by: Oralloy | last post by:
Hello folks, I am unable to find appropriate documentation on the type promotion of bit-fields when using the generalised comparison operator "<=>". The problem is that using the GNU compilers, it seems that the internal comparison operator "<=>" tries to promote arguments from unsigned to signed. This is as boiled down as I can make it. ...
0
8122
jinu1996
by: jinu1996 | last post by:
In today's digital age, having a compelling online presence is paramount for businesses aiming to thrive in a competitive landscape. At the heart of this digital strategy lies an intricately woven tapestry of website design and digital marketing. It's not merely about having a website; it's about crafting an immersive digital experience that...
1
7673
by: Hystou | last post by:
Overview: Windows 11 and 10 have less user interface control over operating system update behaviour than previous versions of Windows. In Windows 11 and 10, there is no way to turn off the Windows Update option using the Control Panel or Settings app; it automatically checks for updates and installs any it finds, whether you like it or not. For...
0
7970
tracyyun
by: tracyyun | last post by:
Dear forum friends, With the development of smart home technology, a variety of wireless communication protocols have appeared on the market, such as Zigbee, Z-Wave, Wi-Fi, Bluetooth, etc. Each protocol has its own unique characteristics and advantages, but as a user who is planning to build a smart home system, I am a bit confused by the...
1
5513
isladogs
by: isladogs | last post by:
The next Access Europe User Group meeting will be on Wednesday 1 May 2024 starting at 18:00 UK time (6PM UTC+1) and finishing by 19:30 (7.30PM). In this session, we are pleased to welcome a new presenter, Adolph Dupré who will be discussing some powerful techniques for using class modules. He will explain when you may want to use classes...
0
5219
by: conductexam | last post by:
I have .net C# application in which I am extracting data from word file and save it in database particularly. To store word all data as it is I am converting the whole word file firstly in HTML and then checking html paragraph one by one. At the time of converting from word file to html my equations which are in the word document file was convert...
0
3653
by: TSSRALBI | last post by:
Hello I'm a network technician in training and I need your help. I am currently learning how to create and manage the different types of VPNs and I have a question about LAN-to-LAN VPNs. The last exercise I practiced was to create a LAN-to-LAN VPN between two Pfsense firewalls, by using IPSEC protocols. I succeeded, with both firewalls in...
1
1213
muto222
by: muto222 | last post by:
How can i add a mobile payment intergratation into php mysql website.

By using Bytes.com and it's services, you agree to our Privacy Policy and Terms of Use.

To disable or enable advertisements and analytics tracking please visit the manage ads & tracking page.