LAPTOP-SNT8I5JK\Boounion
2025-09-13 b17d444a0da9cabf775f90be04d14fac113bb9fb
SourceCode/Bond/Servo/CControlJob.cpp
@@ -4,9 +4,12 @@
#include "SerializeUtil.h"
static inline std::string trimCopy(std::string s) {
    auto notspace = [](int ch) { return !std::isspace(ch); };
    s.erase(s.begin(), std::find_if(s.begin(), s.end(), notspace));
    s.erase(std::find_if(s.rbegin(), s.rend(), notspace).base(), s.end());
    s.erase(s.begin(),
        std::find_if(s.begin(), s.end(),
            [](char c) { return !std::isspace(static_cast<unsigned char>(c)); }));
    s.erase(std::find_if(s.rbegin(), s.rend(),
        [](char c) { return !std::isspace(static_cast<unsigned char>(c)); }).base(),
        s.end());
    return s;
}
@@ -281,23 +284,12 @@
        out = CControlJob(cjId);
        out.setPriority(prio);
        // 直接恢复内部状态(若你要求走状态机,可在这里按合法过渡调用 queue()/start()/...)
        // 简化:直接赋值(你在 CControlJob.cpp 内部,可访问私有成员)
        struct Access : CControlJob {
            using CControlJob::m_state;
            using CControlJob::m_failReason;
            using CControlJob::m_tQueued;
            using CControlJob::m_tStart;
            using CControlJob::m_tEnd;
            using CControlJob::m_pjIds;
        };
        auto& a = reinterpret_cast<Access&>(out);
        a.m_state = static_cast<CJState>(st);
        a.m_failReason = std::move(failText);
        a.m_tQueued = std::move(tQ);
        a.m_tStart = std::move(tS);
        a.m_tEnd = std::move(tE);
        a.m_pjIds = std::move(pjIds);
        out.m_state = static_cast<CJState>(st);
        out.m_failReason = std::move(failText);
        out.m_tQueued = std::move(tQ);
        out.m_tStart = std::move(tS);
        out.m_tEnd = std::move(tE);
        out.m_pjIds = std::move(pjIds);
        return true;
    }