std::wstring CServerPath::GetPath() const { if (empty()) { return std::wstring(); } std::wstring path; if (!traits[m_type].prefixmode && m_data->m_prefix) { path = *m_data->m_prefix; } if (traits[m_type].left_enclosure != 0) { path += traits[m_type].left_enclosure; } if (m_data->m_segments.empty() && (!traits[m_type].has_root || !m_data->m_prefix || traits[m_type].separator_after_prefix)) { path += traits[m_type].separators[0]; } for (auto iter = m_data->m_segments.cbegin(); iter != m_data->m_segments.cend(); ++iter) { std::wstring const& segment = *iter; if (iter != m_data->m_segments.cbegin()) { path += traits[m_type].separators[0]; } else if (traits[m_type].has_root) { if (!m_data->m_prefix || traits[m_type].separator_after_prefix) { path += traits[m_type].separators[0]; } } if (traits[m_type].separatorEscape) { std::wstring tmp = segment; EscapeSeparators(m_type, tmp); path += tmp; } else { path += segment; } } if (traits[m_type].prefixmode && m_data->m_prefix) { path += *m_data->m_prefix; } if (traits[m_type].right_enclosure != 0) { path += traits[m_type].right_enclosure; } // DOS is strange. // C: is current working dir on drive C, C:\ the drive root. if ((m_type == DOS || m_type == DOS_FWD_SLASHES) && m_data->m_segments.size() == 1) { path += traits[m_type].separators[0]; } return path; }
wxString CServerPath::FormatSubdir(const wxString &subdir) const { if (!traits[m_type].separatorEscape) return subdir; wxString res = subdir; EscapeSeparators(m_type, res); return res; }
std::wstring CServerPath::FormatSubdir(std::wstring const& subdir) const { if (!traits[m_type].separatorEscape) { return subdir; } std::wstring res = subdir; EscapeSeparators(m_type, res); return res; }
wxString CServerPath::GetPath() const { if (empty()) return wxString(); wxString path; if (!traits[m_type].prefixmode && m_data->m_prefix) path = *m_data->m_prefix; if (traits[m_type].left_enclosure != 0) path += traits[m_type].left_enclosure; if (m_data->m_segments.empty() && (!traits[m_type].has_root || !m_data->m_prefix || traits[m_type].separator_after_prefix)) path += traits[m_type].separators[0]; for (tConstSegmentIter iter = m_data->m_segments.begin(); iter != m_data->m_segments.end(); ++iter) { const wxString& segment = *iter; if (iter != m_data->m_segments.begin()) path += traits[m_type].separators[0]; else if (traits[m_type].has_root) { if (!m_data->m_prefix || traits[m_type].separator_after_prefix) path += traits[m_type].separators[0]; } if (traits[m_type].separatorEscape) { wxString tmp = segment; EscapeSeparators(m_type, tmp); path += tmp; } else path += segment; } if (traits[m_type].prefixmode && m_data->m_prefix) path += *m_data->m_prefix; if (traits[m_type].right_enclosure != 0) path += traits[m_type].right_enclosure; // DOS is strange. // C: is current working dir on drive C, C:\ the drive root. if (m_type == DOS && m_data->m_segments.size() == 1) path += traits[m_type].separators[0]; return path; }