Skip to content

Commit fa80c28

Browse files
committed
First idea of db cache
1 parent b06595d commit fa80c28

File tree

9 files changed

+1343
-311
lines changed

9 files changed

+1343
-311
lines changed

src/NotesLoaderSM.cpp

Lines changed: 37 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -673,8 +673,11 @@ void SMLoader::ProcessBPMsAndStops(TimingData &out,
673673
}
674674
}
675675
}
676-
677-
void SMLoader::ProcessDelays( TimingData &out, const RString &line, const int rowsPerBeat )
676+
void SMLoader::ProcessDelays(TimingData &out, const RString &line, const int rowsPerBeat)
677+
{
678+
ProcessDelays(out, line, this->GetSongTitle(), rowsPerBeat);
679+
}
680+
void SMLoader::ProcessDelays( TimingData &out, const RString &line, string songname, const int rowsPerBeat )
678681
{
679682
vector<RString> arrayDelayExpressions;
680683
split( line, ",", arrayDelayExpressions );
@@ -686,7 +689,7 @@ void SMLoader::ProcessDelays( TimingData &out, const RString &line, const int ro
686689
if( arrayDelayValues.size() != 2 )
687690
{
688691
LOG->UserLog("Song file",
689-
this->GetSongTitle(),
692+
songname,
690693
"has an invalid #DELAYS value \"%s\" (must have exactly one '='), ignored.",
691694
arrayDelayExpressions[f].c_str() );
692695
continue;
@@ -700,13 +703,17 @@ void SMLoader::ProcessDelays( TimingData &out, const RString &line, const int ro
700703
else
701704
LOG->UserLog(
702705
"Song file",
703-
this->GetSongTitle(),
706+
songname,
704707
"has an invalid delay at beat %f, length %f.",
705708
fFreezeBeat, fFreezeSeconds );
706709
}
707710
}
708711

709-
void SMLoader::ProcessTimeSignatures( TimingData &out, const RString &line, const int rowsPerBeat )
712+
void SMLoader::ProcessTimeSignatures(TimingData &out, const RString &line, const int rowsPerBeat)
713+
{
714+
ProcessTimeSignatures(out, line, this->GetSongTitle(), rowsPerBeat);
715+
}
716+
void SMLoader::ProcessTimeSignatures( TimingData &out, const RString &line, string songname, const int rowsPerBeat )
710717
{
711718
vector<RString> vs1;
712719
split( line, ",", vs1 );
@@ -719,7 +726,7 @@ void SMLoader::ProcessTimeSignatures( TimingData &out, const RString &line, cons
719726
if( vs2.size() < 3 )
720727
{
721728
LOG->UserLog("Song file",
722-
GetSongTitle(),
729+
songname,
723730
"has an invalid time signature change with %i values.",
724731
static_cast<int>(vs2.size()) );
725732
continue;
@@ -732,7 +739,7 @@ void SMLoader::ProcessTimeSignatures( TimingData &out, const RString &line, cons
732739
if( fBeat < 0 )
733740
{
734741
LOG->UserLog("Song file",
735-
this->GetSongTitle(),
742+
songname,
736743
"has an invalid time signature change with beat %f.",
737744
fBeat );
738745
continue;
@@ -741,7 +748,7 @@ void SMLoader::ProcessTimeSignatures( TimingData &out, const RString &line, cons
741748
if( iNumerator < 1 )
742749
{
743750
LOG->UserLog("Song file",
744-
this->GetSongTitle(),
751+
songname,
745752
"has an invalid time signature change with beat %f, iNumerator %i.",
746753
fBeat, iNumerator );
747754
continue;
@@ -750,7 +757,7 @@ void SMLoader::ProcessTimeSignatures( TimingData &out, const RString &line, cons
750757
if( iDenominator < 1 )
751758
{
752759
LOG->UserLog("Song file",
753-
this->GetSongTitle(),
760+
songname,
754761
"has an invalid time signature change with beat %f, iDenominator %i.",
755762
fBeat, iDenominator );
756763
continue;
@@ -760,7 +767,11 @@ void SMLoader::ProcessTimeSignatures( TimingData &out, const RString &line, cons
760767
}
761768
}
762769

763-
void SMLoader::ProcessTickcounts( TimingData &out, const RString &line, const int rowsPerBeat )
770+
void SMLoader::ProcessTickcounts(TimingData &out, const RString &line, const int rowsPerBeat)
771+
{
772+
ProcessTickcounts(out, line, this->GetSongTitle(), rowsPerBeat);
773+
}
774+
void SMLoader::ProcessTickcounts( TimingData &out, const RString &line, string songname, const int rowsPerBeat )
764775
{
765776
vector<RString> arrayTickcountExpressions;
766777
split( line, ",", arrayTickcountExpressions );
@@ -772,7 +783,7 @@ void SMLoader::ProcessTickcounts( TimingData &out, const RString &line, const in
772783
if( arrayTickcountValues.size() != 2 )
773784
{
774785
LOG->UserLog("Song file",
775-
this->GetSongTitle(),
786+
songname,
776787
"has an invalid #TICKCOUNTS value \"%s\" (must have exactly one '='), ignored.",
777788
arrayTickcountExpressions[f].c_str() );
778789
continue;
@@ -785,7 +796,11 @@ void SMLoader::ProcessTickcounts( TimingData &out, const RString &line, const in
785796
}
786797
}
787798

788-
void SMLoader::ProcessSpeeds( TimingData &out, const RString &line, const int rowsPerBeat )
799+
void SMLoader::ProcessSpeeds(TimingData &out, const RString &line, const int rowsPerBeat)
800+
{
801+
ProcessSpeeds(out, line, this->GetSongTitle(), rowsPerBeat);
802+
}
803+
void SMLoader::ProcessSpeeds( TimingData &out, const RString &line, string songname, const int rowsPerBeat )
789804
{
790805
vector<RString> vs1;
791806
split( line, ",", vs1 );
@@ -808,7 +823,7 @@ void SMLoader::ProcessSpeeds( TimingData &out, const RString &line, const int ro
808823
if( vs2.size() < 4 )
809824
{
810825
LOG->UserLog("Song file",
811-
this->GetSongTitle(),
826+
songname,
812827
"has an speed change with %i values.",
813828
static_cast<int>(vs2.size()) );
814829
continue;
@@ -826,7 +841,7 @@ void SMLoader::ProcessSpeeds( TimingData &out, const RString &line, const int ro
826841
if( fBeat < 0 )
827842
{
828843
LOG->UserLog("Song file",
829-
this->GetSongTitle(),
844+
songname,
830845
"has an speed change with beat %f.",
831846
fBeat );
832847
continue;
@@ -835,7 +850,7 @@ void SMLoader::ProcessSpeeds( TimingData &out, const RString &line, const int ro
835850
if( fDelay < 0 )
836851
{
837852
LOG->UserLog("Song file",
838-
this->GetSongTitle(),
853+
songname,
839854
"has an speed change with beat %f, length %f.",
840855
fBeat, fDelay );
841856
continue;
@@ -845,7 +860,11 @@ void SMLoader::ProcessSpeeds( TimingData &out, const RString &line, const int ro
845860
}
846861
}
847862

848-
void SMLoader::ProcessFakes( TimingData &out, const RString &line, const int rowsPerBeat )
863+
void SMLoader::ProcessFakes(TimingData &out, const RString &line, const int rowsPerBeat)
864+
{
865+
ProcessFakes(out, line, this->GetSongTitle(), rowsPerBeat);
866+
}
867+
void SMLoader::ProcessFakes( TimingData &out, const RString &line, string songname, const int rowsPerBeat )
849868
{
850869
vector<RString> arrayFakeExpressions;
851870
split( line, ",", arrayFakeExpressions );
@@ -857,7 +876,7 @@ void SMLoader::ProcessFakes( TimingData &out, const RString &line, const int row
857876
if( arrayFakeValues.size() != 2 )
858877
{
859878
LOG->UserLog("Song file",
860-
this->GetSongTitle(),
879+
songname,
861880
"has an invalid #FAKES value \"%s\" (must have exactly one '='), ignored.",
862881
arrayFakeExpressions[b].c_str() );
863882
continue;
@@ -871,7 +890,7 @@ void SMLoader::ProcessFakes( TimingData &out, const RString &line, const int row
871890
else
872891
{
873892
LOG->UserLog("Song file",
874-
this->GetSongTitle(),
893+
songname,
875894
"has an invalid Fake at beat %f, beats to skip %f.",
876895
fBeat, fSkippedBeats );
877896
}

src/NotesLoaderSM.h

Lines changed: 17 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -40,7 +40,7 @@ struct SMLoader
4040
* @param song a reference to the song that may need cleaning up.
4141
* @param bFromCache a flag to determine if this song is loaded from a cache file.
4242
*/
43-
virtual void TidyUpData( Song &song, bool bFromCache );
43+
static void TidyUpData( Song &song, bool bFromCache );
4444

4545
/**
4646
* @brief Retrieve the relevant notedata from the simfile.
@@ -112,6 +112,9 @@ struct SMLoader
112112
void ProcessDelays(TimingData & out,
113113
const RString &line,
114114
const int rowsPerBeat = -1);
115+
static void ProcessDelays(TimingData & out,
116+
const RString &line, string songname,
117+
const int rowsPerBeat = -1);
115118
/**
116119
* @brief Process the Time Signature Segments from the string.
117120
* @param out the TimingData being modified.
@@ -120,6 +123,9 @@ struct SMLoader
120123
void ProcessTimeSignatures(TimingData & out,
121124
const RString &line,
122125
const int rowsPerBeat = -1);
126+
static void ProcessTimeSignatures(TimingData & out,
127+
const RString &line, string songname,
128+
const int rowsPerBeat = -1);
123129
/**
124130
* @brief Process the Tickcount Segments from the string.
125131
* @param out the TimingData being modified.
@@ -128,6 +134,9 @@ struct SMLoader
128134
void ProcessTickcounts(TimingData & out,
129135
const RString &line,
130136
const int rowsPerBeat = -1);
137+
static void ProcessTickcounts(TimingData & out,
138+
const RString &line, string songname,
139+
const int rowsPerBeat = -1);
131140

132141
/**
133142
* @brief Process the Speed Segments from the string.
@@ -137,6 +146,9 @@ struct SMLoader
137146
virtual void ProcessSpeeds(TimingData & out,
138147
const RString &line,
139148
const int rowsPerBeat = -1);
149+
static void ProcessSpeeds(TimingData & out,
150+
const RString &line, string songname,
151+
const int rowsPerBeat = -1);
140152

141153
virtual void ProcessCombos(TimingData & /* out */,
142154
const RString &line,
@@ -150,6 +162,9 @@ struct SMLoader
150162
virtual void ProcessFakes(TimingData & out,
151163
const RString &line,
152164
const int rowsPerBeat = -1);
165+
static void ProcessFakes(TimingData & out,
166+
const RString &line, string songname,
167+
const int rowsPerBeat = -1);
153168

154169
virtual void ProcessBGChanges( Song &out, const RString &sValueName,
155170
const RString &sPath, const RString &sParam );
@@ -163,7 +178,7 @@ struct SMLoader
163178
* @param line The line that contains the value.
164179
* @param rowsPerBeat the number of rows per beat according to the original file.
165180
* @return the converted beat value. */
166-
float RowToBeat(const RString &line, const int rowsPerBeat);
181+
static float RowToBeat(const RString &line, const int rowsPerBeat);
167182

168183
protected:
169184
/**

0 commit comments

Comments
 (0)