-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathMusicData.cpp
105 lines (95 loc) · 1.73 KB
/
MusicData.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
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
#include "MusicData.h"
MusicData::MusicData()
: artists{ new ArtistTree } {};
MusicData::MusicData(std::string artist)
{
if (artists)
{
add_artist(artist);
}
else
{
TreeNode *temp = new TreeNode(artist);
artists = new ArtistTree(temp);
}
}
MusicData::MusicData(ArtistTree* artistry)
: artists{ artistry } {}
void MusicData::add_artist(std::string artist)
{
if (artists)
{
artists->insert(artist);
}
else
{
MusicData(artist);
}
}
TreeNode *MusicData::get_artist(std::string artist)
{
if (artists)
{
TreeNode *temp = artists->find(artist);
return temp;
}
else
{
return nullptr;
}
}
void MusicData::add_album(std::string artist, int year, std::string album)
{
TreeNode *temp = get_artist(artist);
// check that the artist was found
if (temp)
{
// if there is already a pointer to an album list, add to that list
if (temp->album)
{
temp->album->add_end(year, album);
}
// otherwise, create a new list with (year, album) as the head
else
{
temp->album = new AlbumList(year, album);
}
}
}
void MusicData::print_artists()
{
artists->print_inorder();
}
void MusicData::print_albums(std::string artist)
{
TreeNode* temp = get_artist(artist);
if (temp)
{
if (temp->album)
{
std::cout << "Albums by " << artist << ":" << std::endl;
temp->album->print();
}
else
{
std::cout << "Arist " << artist << " has no albums stored." << std::endl;
}
}
}
std::vector<std::string> MusicData::get_artist_strings()
{
return artists->get_strings();
}
std::vector<std::string> MusicData::get_album_strings(std::string artist)
{
std::vector<std::string> albums;
TreeNode *temp = get_artist(artist);
if (temp)
{
if (temp->album)
{
albums = temp->album->get_strings();
}
}
return albums;
}