| | |
| | | CGlass::CGlass() |
| | | { |
| | | m_pPath = nullptr; |
| | | m_type = MaterialsType::G1; |
| | | m_pBuddy = nullptr; |
| | | } |
| | | |
| | | CGlass::~CGlass() |
| | | { |
| | | |
| | | } |
| | | |
| | | void CGlass::reset() |
| | | { |
| | | CPath* pPath = m_pPath; |
| | | while (pPath != nullptr) { |
| | |
| | | pPath = pTemp; |
| | | } |
| | | m_pPath = nullptr; |
| | | |
| | | if (m_pBuddy != nullptr) { |
| | | m_pBuddy->release(); |
| | | } |
| | | } |
| | | |
| | | std::string& CGlass::getClassName() |
| | |
| | | return strText; |
| | | } |
| | | |
| | | MaterialsType CGlass::getType() |
| | | { |
| | | return m_type; |
| | | } |
| | | |
| | | void CGlass::setType(MaterialsType type) |
| | | { |
| | | m_type = type; |
| | | } |
| | | |
| | | void CGlass::setID(const char* pszID) |
| | | { |
| | | m_strID = pszID; |
| | |
| | | return m_strID; |
| | | } |
| | | |
| | | CPath* CGlass::getPathWithSiteID(unsigned int nSiteId) |
| | | { |
| | | CPath* pPath = m_pPath; |
| | | while (pPath != nullptr) { |
| | | if (nSiteId == pPath->getSiteID()) { |
| | | return pPath; |
| | | } |
| | | pPath = pPath->getNext(); |
| | | } |
| | | |
| | | return nullptr; |
| | | } |
| | | |
| | | CPath* CGlass::getPath() |
| | | { |
| | | return m_pPath; |
| | | } |
| | | |
| | | void CGlass::addPath(unsigned int nSiteId) |
| | | CPath* CGlass::getPathWithEq(unsigned int nEqId, unsigned int nUnit) |
| | | { |
| | | CPath* pPath = new CPath(nSiteId); |
| | | CPath* pTemp = m_pPath; |
| | | while (pTemp != nullptr) { |
| | | if (pTemp->getEqID() == nEqId && pTemp->getUnit() == nUnit) { |
| | | return pTemp; |
| | | } |
| | | |
| | | pTemp = pTemp->getNext(); |
| | | } |
| | | |
| | | return nullptr; |
| | | } |
| | | |
| | | void CGlass::addPath(unsigned int nEqId, unsigned int nUnit) |
| | | { |
| | | CPath* pPath = new CPath(nEqId, nUnit); |
| | | if (m_pPath == nullptr) { |
| | | m_pPath = pPath; |
| | | } |
| | |
| | | if (ar.IsStoring()) |
| | | { |
| | | Lock(); |
| | | ar << (int)m_type; |
| | | WriteString(ar, m_strID); |
| | | ar << (ULONGLONG)m_pPath; |
| | | if (m_pPath != nullptr) { |
| | | m_pPath->serialize(ar); |
| | | } |
| | | char temp[JOBDATAS_SIZE] = { 0 }; |
| | | m_jobDataS.serialize(temp, JOBDATAS_SIZE); |
| | | ar.Write(temp, JOBDATAS_SIZE); |
| | | ar << (ULONGLONG)m_pBuddy; |
| | | WriteString(ar, m_strBuddyId); |
| | | Unlock(); |
| | | } |
| | | else |
| | | { |
| | | Lock(); |
| | | ReadString(ar, m_strID); |
| | | ULONGLONG ullPath; |
| | | int type; |
| | | |
| | | Lock(); |
| | | ar >> type; |
| | | m_type = (MaterialsType)type; |
| | | ReadString(ar, m_strID); |
| | | ar >> ullPath; |
| | | if (ullPath != 0) { |
| | | m_pPath = new CPath(); |
| | | m_pPath->serialize(ar); |
| | | } |
| | | |
| | | char temp[JOBDATAS_SIZE]; |
| | | ar.Read(temp, JOBDATAS_SIZE); |
| | | m_jobDataS.unserialize(temp, JOBDATAS_SIZE); |
| | | ar >> ullPath; m_pBuddy = (CGlass*)ullPath; |
| | | ReadString(ar, m_strBuddyId); |
| | | Unlock(); |
| | | } |
| | | } |
| | | |
| | | void CGlass::setJobDataS(CJobDataS* pJobDataS) |
| | | { |
| | | m_jobDataS.copy(pJobDataS); |
| | | } |
| | | |
| | | void CGlass::updateJobDataS(CJobDataS* pJobDataS) |
| | | { |
| | | m_jobDataS.update(pJobDataS); |
| | | } |
| | | |
| | | CJobDataS* CGlass::getJobDataS() |
| | | { |
| | | return &m_jobDataS; |
| | | } |
| | | |
| | | BOOL CGlass::setBuddy(CGlass* pGlass) |
| | | { |
| | | if (m_pBuddy != nullptr) return FALSE; |
| | | if (pGlass->getType() == this->getType()) return FALSE; |
| | | m_pBuddy = pGlass; |
| | | m_pBuddy->addRef(); |
| | | m_strBuddyId = m_pBuddy->getID(); |
| | | |
| | | return TRUE; |
| | | } |
| | | |
| | | BOOL CGlass::forceSetBuddy(CGlass* pGlass) |
| | | { |
| | | m_pBuddy = pGlass; |
| | | m_pBuddy->addRef(); |
| | | m_strBuddyId = m_pBuddy->getID(); |
| | | |
| | | return TRUE; |
| | | } |
| | | |
| | | CGlass* CGlass::getBuddy() |
| | | { |
| | | return m_pBuddy; |
| | | } |
| | | |
| | | std::string& CGlass::getBuddyId() |
| | | { |
| | | return m_strBuddyId; |
| | | } |
| | | |
| | | void CGlass::processEnd(unsigned int nEqId, unsigned int nUnit) |
| | | { |
| | | CPath* pPath = getPathWithEq(nEqId, nUnit); |
| | | if (pPath != nullptr) { |
| | | pPath->processEnd(); |
| | | } |
| | | } |
| | | |
| | | BOOL CGlass::isProcessed(unsigned int nEqId, unsigned int nUnit) |
| | | { |
| | | CPath* pPath = getPathWithEq(nEqId, nUnit); |
| | | if (pPath == nullptr) return FALSE; |
| | | |
| | | return pPath->isProcessEnd(); |
| | | } |
| | | } |