-
Notifications
You must be signed in to change notification settings - Fork 0
/
Track.cpp
89 lines (82 loc) · 2.1 KB
/
Track.cpp
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
// Eli Simmonds
// Project 3
// Track.cpp
#include "Track.hpp"
int trackRefCount = 0;
Track::Track() {
// initializes all private variables
trackRefCount++;
_title = _artistName = _albumName = _duration = _position = "";
_albumID = 0;
cachedTitle = cachedArtistName = cachedAlbumName =
cachedDuration = cachedAlbumID = cachedPosition = false;
}
Track::~Track() {
// doesn't do anything except decrement the counter I created
// to track memory allocation and deallocation
trackRefCount--;
}
std::string Track::title() {
if (cachedTitle)
return _title;
cachedTitle = true;
return _title = valueForStringAttribute("title");
}
std::string Track::artist_name() {
if (cachedArtistName)
return _artistName;
cachedArtistName = true;
return _artistName = valueForStringAttribute("artist_name");
}
std::string Track::album_name() {
if (cachedAlbumName)
return _albumName;
cachedAlbumName = true;
return _albumName = valueForStringAttribute("album_name");
}
std::string Track::duration() {
if (cachedDuration)
return _duration;
cachedDuration = true;
return _duration = valueForStringAttribute("duration");
}
int Track::album_ID() {
if (cachedAlbumID)
return _albumID;
cachedAlbumID = true;
return _albumID = valueForIntegerAttribute("album_id");
}
std::string Track::position() {
if (cachedPosition)
return _position;
cachedPosition = true;
return _position = valueForStringAttribute("position");
}
void Track::print() {
// prints all track variables.
std::cout << "Title: " << title() << "\n"
<< "Artist Name: " << artist_name() << "\n"
<< "Album Name: " << album_name() << "\n"
<< "Duration: " << duration() << "\n"
<< "Album_ID: " << album_ID() << "\n"
<< "Position: " << position() << std::endl;
}
std::string Track::htmlString() {
// creates html for each track instance.
// only needs the trackname and duraction.
std::string html;
html += "<tr class=";
html += '"';
html += "tracks";
html += '"';
html += "><td class=";
html += '"';
html += "trackName";
html += '"';
html += ">";
html += title();
html += "</td><td>";
html += duration();
html += "</td></tr>";
return html;
}