LAPTOP-SNT8I5JK\Boounion
2025-04-26 410ea79955e2d115643a38f40e006f1aeaba897b
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
#include "stdafx.h"
#include "CPath.h"
#include "ToolUnits.h"
 
 
namespace SERVO {
    CPath::CPath()
    {
        m_nSiteID = 0;
        m_timeOut = 0;
        m_timeIn = CToolUnits::getTimestamp();
        m_pPrev = nullptr;
        m_pNext = nullptr;
    }
 
    CPath::CPath(unsigned int nSiteId)
    {
        m_nSiteID = nSiteId;
        m_timeOut = 0;
        m_timeIn = CToolUnits::getTimestamp();
        m_pPrev = nullptr;
        m_pNext = nullptr;
    }
 
    CPath::~CPath()
    {
 
    }
 
    void CPath::getDescription(std::string& strOut)
    {
        strOut.clear();
        strOut = "CPath<SiteID:";
        strOut = strOut + std::to_string(m_nSiteID);
        strOut = strOut + ",InTime:";
        strOut = strOut + CToolUnits::timeToString2(m_timeIn);
        strOut = strOut + ",OutTime:";
        strOut = strOut + (m_timeOut == 0 ? "" : CToolUnits::timeToString2(m_timeOut));
        strOut = strOut + ">";
    }
 
    void CPath::serialize(CArchive& ar)
    {
        if (ar.IsStoring()) {
            ar << m_nSiteID;
            ar << m_timeIn;
            ar << m_timeOut;
            ar << (ULONGLONG)m_pNext;
            if (m_pNext != nullptr) {
                m_pNext->serialize(ar);
            }
        }
        else {
            ar >> m_nSiteID;
            ar >> m_timeIn;
            ar >> m_timeOut;
            ULONGLONG ulNext;
            ar >> ulNext;
            if ((CPath*)ulNext != nullptr) {
                CPath* pPath = new CPath();
                pPath->serialize(ar);
                pPath->m_pPrev = this;
                this->m_pNext = pPath;
            }
        }
    }
 
    unsigned int CPath::getSiteID()
    {
        return m_nSiteID;
    }
 
    ULONGLONG CPath::getInTime()
    {
        return m_timeIn;
    }
 
    void CPath::setOutTime(ULONGLONG time)
    {
        m_timeOut = time;
    }
 
    ULONGLONG CPath::getOutTime()
    {
        return m_timeOut;
    }
 
    CPath* CPath::getPrev()
    {
        return m_pPrev;
    }
 
    CPath* CPath::getNext()
    {
        return m_pNext;
    }
 
    void CPath::addPath(CPath* pPath)
    {
        CPath* pTail = getTailPath();
        ASSERT(pTail);
        pTail->m_pNext = pPath;
        pPath->m_pPrev = this;
    }
 
    CPath* CPath::getTailPath()
    {
        CPath* pPath = this;
        while (pPath->m_pNext != nullptr) {
            pPath = pPath->m_pNext;
        }
 
        return pPath;
    }
 
    CPath* CPath::getHeadPath()
    {
        CPath* pPath = this;
        while (pPath->m_pPrev != nullptr) {
            pPath = pPath->m_pPrev;
        }
 
        return pPath;
    }
}