string_view refactor

This commit is contained in:
Jack Andersen 2017-11-12 20:15:33 -10:00
parent e18c0a62de
commit 75830dc6dd
10 changed files with 36 additions and 39 deletions

View File

@ -64,7 +64,7 @@ struct AudioGroupDataCollection
bool loadSamp(AudioGroupFilePresenter* presenter); bool loadSamp(AudioGroupFilePresenter* presenter);
bool loadMeta(AudioGroupFilePresenter* presenter); bool loadMeta(AudioGroupFilePresenter* presenter);
AudioGroupDataCollection(const std::string& name, NSURL* proj, NSURL* pool, NSURL* sdir, NSURL* samp, NSURL* meta); AudioGroupDataCollection(std::string_view name, NSURL* proj, NSURL* pool, NSURL* sdir, NSURL* samp, NSURL* meta);
bool isDataComplete() const bool isDataComplete() const
{ {
return m_projData.size() && m_poolData.size() && m_sdirData.size() && m_sampData.size() && m_metaData; return m_projData.size() && m_poolData.size() && m_sdirData.size() && m_sampData.size() && m_metaData;
@ -88,7 +88,7 @@ struct AudioGroupCollection
void addCollection(AudioGroupFilePresenter* presenter, void addCollection(AudioGroupFilePresenter* presenter,
std::vector<std::pair<std::string, amuse::IntrusiveAudioGroupData>>&& collection); std::vector<std::pair<std::string, amuse::IntrusiveAudioGroupData>>&& collection);
void update(AudioGroupFilePresenter* presenter); void update(AudioGroupFilePresenter* presenter);
bool doSearch(const std::string& str); bool doSearch(std::string_view str);
bool doActiveFilter(); bool doActiveFilter();
void addSFX(std::vector<AudioGroupSFXToken*>& vecOut); void addSFX(std::vector<AudioGroupSFXToken*>& vecOut);
void addSamples(std::vector<AudioGroupSampleToken*>& vecOut); void addSamples(std::vector<AudioGroupSampleToken*>& vecOut);

View File

@ -161,13 +161,13 @@ void AudioGroupCollection::update(AudioGroupFilePresenter* presenter)
} }
} }
bool AudioGroupCollection::doSearch(const std::string& str) bool AudioGroupCollection::doSearch(std::string_view str)
{ {
bool ret = false; bool ret = false;
m_filterGroups.clear(); m_filterGroups.clear();
m_filterGroups.reserve(m_groups.size()); m_filterGroups.reserve(m_groups.size());
for (auto it = m_groups.begin() ; it != m_groups.end() ; ++it) for (auto it = m_groups.begin() ; it != m_groups.end() ; ++it)
if (str.empty() || StrToLower(it->first).find(str) != std::string::npos) if (str.empty() || StrToLower(it->first).find(str.data()) != std::string::npos)
{ {
m_filterGroups.push_back(it); m_filterGroups.push_back(it);
ret = true; ret = true;

View File

@ -2,7 +2,7 @@ cmake_minimum_required(VERSION 3.1.0 FATAL_ERROR) # because of CMAKE_CXX_STANDAR
project(amuse) project(amuse)
set(CMAKE_CXX_STANDARD 14) set(CMAKE_CXX_STANDARD 17)
set(CMAKE_CXX_STANDARD_REQUIRED ON) set(CMAKE_CXX_STANDARD_REQUIRED ON)
if(NOT MSVC) if(NOT MSVC)

View File

@ -217,7 +217,7 @@ bool AudioGroupDataCollection::loadMeta()
return ret.operator bool(); return ret.operator bool();
} }
AudioGroupDataCollection::AudioGroupDataCollection(const std::wstring& path, const std::wstring& name) AudioGroupDataCollection::AudioGroupDataCollection(std::wstring_view path, std::wstring_view name)
: m_path(path), m_name(name) : m_path(path), m_name(name)
{ {
} }
@ -295,7 +295,7 @@ void AudioGroupDataCollection::addToEngine(amuse::Engine& engine)
void AudioGroupDataCollection::removeFromEngine(amuse::Engine& engine) const { engine.removeAudioGroup(*m_loadedData); } void AudioGroupDataCollection::removeFromEngine(amuse::Engine& engine) const { engine.removeAudioGroup(*m_loadedData); }
AudioGroupCollection::AudioGroupCollection(const std::wstring& path, const std::wstring& name) AudioGroupCollection::AudioGroupCollection(std::wstring_view path, std::wstring_view name)
: m_path(path), m_name(name) : m_path(path), m_name(name)
{ {
} }
@ -398,7 +398,7 @@ void AudioGroupFilePresenter::update()
} }
void AudioGroupFilePresenter::addCollection( void AudioGroupFilePresenter::addCollection(
const std::wstring& name, std::vector<std::pair<std::wstring, amuse::IntrusiveAudioGroupData>>&& collection) std::wstring_view name, std::vector<std::pair<std::wstring, amuse::IntrusiveAudioGroupData>>&& collection)
{ {
std::wstring path = m_backend.getUserDir() + L'\\' + name; std::wstring path = m_backend.getUserDir() + L'\\' + name;
AudioGroupCollection& insert = AudioGroupCollection& insert =

View File

@ -61,7 +61,7 @@ struct AudioGroupDataCollection
bool loadSamp(); bool loadSamp();
bool loadMeta(); bool loadMeta();
AudioGroupDataCollection(const std::wstring& path, const std::wstring& name); AudioGroupDataCollection(std::wstring_view path, std::wstring_view name);
bool isDataComplete() const bool isDataComplete() const
{ {
return m_projData.size() && m_poolData.size() && m_sdirData.size() && m_sampData.size() && m_metaData; return m_projData.size() && m_poolData.size() && m_sdirData.size() && m_sampData.size() && m_metaData;
@ -82,7 +82,7 @@ struct AudioGroupCollection
std::map<std::wstring, std::unique_ptr<AudioGroupDataCollection>> m_groups; std::map<std::wstring, std::unique_ptr<AudioGroupDataCollection>> m_groups;
std::vector<GroupIterator> m_iteratorVec; std::vector<GroupIterator> m_iteratorVec;
AudioGroupCollection(const std::wstring& path, const std::wstring& name); AudioGroupCollection(std::wstring_view path, std::wstring_view name);
void addCollection(std::vector<std::pair<std::wstring, amuse::IntrusiveAudioGroupData>>&& collection); void addCollection(std::vector<std::pair<std::wstring, amuse::IntrusiveAudioGroupData>>&& collection);
void update(AudioGroupFilePresenter& presenter); void update(AudioGroupFilePresenter& presenter);
void populateFiles(VSTEditor& editor, HTREEITEM colHandle, size_t parentIdx); void populateFiles(VSTEditor& editor, HTREEITEM colHandle, size_t parentIdx);
@ -106,7 +106,7 @@ public:
void populateCollectionColumn(VSTEditor& editor); void populateCollectionColumn(VSTEditor& editor);
void populateGroupColumn(VSTEditor& editor, int collectionIdx, int fileIdx); void populateGroupColumn(VSTEditor& editor, int collectionIdx, int fileIdx);
void populatePageColumn(VSTEditor& editor, int collectionIdx, int fileIdx, int groupIdx); void populatePageColumn(VSTEditor& editor, int collectionIdx, int fileIdx, int groupIdx);
void addCollection(const std::wstring& name, void addCollection(std::wstring_view name,
std::vector<std::pair<std::wstring, amuse::IntrusiveAudioGroupData>>&& collection); std::vector<std::pair<std::wstring, amuse::IntrusiveAudioGroupData>>&& collection);
void removeCollection(unsigned idx); void removeCollection(unsigned idx);
VSTBackend& getBackend() { return m_backend; } VSTBackend& getBackend() { return m_backend; }

View File

@ -59,7 +59,7 @@ public:
void setBlockSize(VstInt32 blockSize); void setBlockSize(VstInt32 blockSize);
amuse::Engine& getAmuseEngine() { return *m_engine; } amuse::Engine& getAmuseEngine() { return *m_engine; }
const std::wstring& getUserDir() const { return m_userDir; } std::wstring_view getUserDir() const { return m_userDir; }
AudioGroupFilePresenter& getFilePresenter() { return m_filePresenter; } AudioGroupFilePresenter& getFilePresenter() { return m_filePresenter; }
void loadGroupFile(int collectionIdx, int fileIdx); void loadGroupFile(int collectionIdx, int fileIdx);

View File

@ -31,22 +31,22 @@ static void ReportConvType(ConvType tp)
} }
} }
static bool BuildAudioGroup(const amuse::SystemString& groupBase, const amuse::SystemString& targetPath) static bool BuildAudioGroup(amuse::SystemStringView groupBase, amuse::SystemStringView targetPath)
{ {
return true; return true;
} }
static bool ExtractAudioGroup(const amuse::SystemString& inPath, const amuse::SystemString& targetPath) static bool ExtractAudioGroup(amuse::SystemStringView inPath, amuse::SystemStringView targetPath)
{ {
amuse::ContainerRegistry::Type type; amuse::ContainerRegistry::Type type;
auto groups = amuse::ContainerRegistry::LoadContainer(inPath.c_str(), type); auto groups = amuse::ContainerRegistry::LoadContainer(inPath.data(), type);
if (groups.size()) if (groups.size())
{ {
Log.report(logvisor::Info, _S("Found '%s'"), amuse::ContainerRegistry::TypeToName(type)); Log.report(logvisor::Info, _S("Found '%s'"), amuse::ContainerRegistry::TypeToName(type));
amuse::Mkdir(targetPath.c_str(), 0755); amuse::Mkdir(targetPath.data(), 0755);
Log.report(logvisor::Info, _S("Established directory at %s"), targetPath.c_str()); Log.report(logvisor::Info, _S("Established directory at %s"), targetPath.data());
for (auto& group : groups) for (auto& group : groups)
{ {
@ -54,14 +54,14 @@ static bool ExtractAudioGroup(const amuse::SystemString& inPath, const amuse::Sy
} }
} }
auto songs = amuse::ContainerRegistry::LoadSongs(inPath.c_str()); auto songs = amuse::ContainerRegistry::LoadSongs(inPath.data());
amuse::SystemString songsDir = targetPath + _S("/midifiles"); amuse::SystemString songsDir = targetPath + _S("/midifiles");
bool madeDir = false; bool madeDir = false;
for (auto& pair : songs) for (auto& pair : songs)
{ {
if (!madeDir) if (!madeDir)
{ {
amuse::Mkdir(targetPath.c_str(), 0755); amuse::Mkdir(targetPath.data(), 0755);
amuse::Mkdir(songsDir.c_str(), 0755); amuse::Mkdir(songsDir.c_str(), 0755);
madeDir = true; madeDir = true;
} }
@ -83,9 +83,9 @@ static bool ExtractAudioGroup(const amuse::SystemString& inPath, const amuse::Sy
return true; return true;
} }
static bool BuildSNG(const amuse::SystemString& inPath, const amuse::SystemString& targetPath, int version, bool big) static bool BuildSNG(amuse::SystemStringView inPath, amuse::SystemStringView targetPath, int version, bool big)
{ {
FILE* fp = amuse::FOpen(inPath.c_str(), _S("rb")); FILE* fp = amuse::FOpen(inPath.data(), _S("rb"));
if (!fp) if (!fp)
return false; return false;
@ -100,16 +100,16 @@ static bool BuildSNG(const amuse::SystemString& inPath, const amuse::SystemStrin
if (out.empty()) if (out.empty())
return false; return false;
fp = amuse::FOpen(targetPath.c_str(), _S("wb")); fp = amuse::FOpen(targetPath.data(), _S("wb"));
fwrite(out.data(), 1, out.size(), fp); fwrite(out.data(), 1, out.size(), fp);
fclose(fp); fclose(fp);
return true; return true;
} }
static bool ExtractSNG(const amuse::SystemString& inPath, const amuse::SystemString& targetPath) static bool ExtractSNG(amuse::SystemStringView inPath, amuse::SystemStringView targetPath)
{ {
FILE* fp = amuse::FOpen(inPath.c_str(), _S("rb")); FILE* fp = amuse::FOpen(inPath.data(), _S("rb"));
if (!fp) if (!fp)
return false; return false;
@ -126,7 +126,7 @@ static bool ExtractSNG(const amuse::SystemString& inPath, const amuse::SystemStr
if (out.empty()) if (out.empty())
return false; return false;
fp = amuse::FOpen(targetPath.c_str(), _S("wb")); fp = amuse::FOpen(targetPath.data(), _S("wb"));
fwrite(out.data(), 1, out.size(), fp); fwrite(out.data(), 1, out.size(), fp);
fclose(fp); fclose(fp);

View File

@ -7,6 +7,7 @@
#include <stdint.h> #include <stdint.h>
#include <stdarg.h> #include <stdarg.h>
#include <string> #include <string>
#include <string_view>
#include <cstring> #include <cstring>
#ifndef _WIN32 #ifndef _WIN32
@ -47,6 +48,7 @@ static inline int Mkdir(const wchar_t* path, int) { return _wmkdir(path); }
static inline int Stat(const wchar_t* path, Sstat* statout) { return _wstat(path, statout); } static inline int Stat(const wchar_t* path, Sstat* statout) { return _wstat(path, statout); }
#else #else
using SystemString = std::string; using SystemString = std::string;
using SystemStringView = std::string_view;
using SystemChar = char; using SystemChar = char;
#ifndef _S #ifndef _S
#define _S(val) val #define _S(val) val

View File

@ -9,21 +9,21 @@ namespace amuse
struct CaseInsensitiveCompare struct CaseInsensitiveCompare
{ {
bool operator()(const std::string& lhs, const std::string& rhs) const bool operator()(std::string_view lhs, std::string_view rhs) const
{ {
#if _WIN32 #if _WIN32
if (_stricmp(lhs.c_str(), rhs.c_str()) < 0) if (_stricmp(lhs.data(), rhs.data()) < 0)
#else #else
if (strcasecmp(lhs.c_str(), rhs.c_str()) < 0) if (strcasecmp(lhs.data(), rhs.data()) < 0)
#endif #endif
return true; return true;
return false; return false;
} }
#if _WIN32 #if _WIN32
bool operator()(const std::wstring& lhs, const std::wstring& rhs) const bool operator()(std::wstring_view lhs, std::wstring_view rhs) const
{ {
if (_wcsicmp(lhs.c_str(), rhs.c_str()) < 0) if (_wcsicmp(lhs.data(), rhs.data()) < 0)
return true; return true;
return false; return false;
} }
@ -59,12 +59,7 @@ private:
std::vector<Entry> m_entries; std::vector<Entry> m_entries;
public: public:
DirectoryEnumerator(const SystemString& path, Mode mode = Mode::DirsThenFilesSorted, bool sizeSort = false, DirectoryEnumerator(SystemStringView path, Mode mode = Mode::DirsThenFilesSorted, bool sizeSort = false,
bool reverse = false, bool noHidden = false)
: DirectoryEnumerator(path.c_str(), mode, sizeSort, reverse, noHidden)
{
}
DirectoryEnumerator(const SystemChar* path, Mode mode = Mode::DirsThenFilesSorted, bool sizeSort = false,
bool reverse = false, bool noHidden = false); bool reverse = false, bool noHidden = false);
operator bool() const { return m_entries.size() != 0; } operator bool() const { return m_entries.size() != 0; }

View File

@ -22,10 +22,10 @@
namespace amuse namespace amuse
{ {
DirectoryEnumerator::DirectoryEnumerator(const SystemChar* path, Mode mode, bool sizeSort, bool reverse, bool noHidden) DirectoryEnumerator::DirectoryEnumerator(SystemStringView path, Mode mode, bool sizeSort, bool reverse, bool noHidden)
{ {
Sstat theStat; Sstat theStat;
if (Stat(path, &theStat) || !S_ISDIR(theStat.st_mode)) if (Stat(path.data(), &theStat) || !S_ISDIR(theStat.st_mode))
return; return;
#if _WIN32 #if _WIN32
@ -160,7 +160,7 @@ DirectoryEnumerator::DirectoryEnumerator(const SystemChar* path, Mode mode, bool
#else #else
DIR* dir = opendir(path); DIR* dir = opendir(path.data());
if (!dir) if (!dir)
return; return;
const dirent* d; const dirent* d;