Skip to content

Instantly share code, notes, and snippets.

@AlexBolotsin
Created July 28, 2017 19:11
Show Gist options
  • Save AlexBolotsin/59467ac9ff8ced21833bb0979826389d to your computer and use it in GitHub Desktop.
Save AlexBolotsin/59467ac9ff8ced21833bb0979826389d to your computer and use it in GitHub Desktop.
class Image
{
public:
int sizeInBytes;
//...
};
Image makeMiniatureImage(Image img) {
//...
return img;
}
void removeImageFromDisk(Image img) {
//...
}
class ImageStorage
{
std::map<std::string, Image> _imageMap;
private:
Image GetImage(const std::string& name) const {
auto itr = _imageMap.find(name);
if (itr == _imageMap.end())
throw std::exception();
// developer thought that name is a local variable
std::string tmpName = name.substr(5);
// some kind of preview image
if (tmpName.size() < 2)
return makeMiniatureImage(itr->second);
return itr->second;
}
bool AddImage(const std::string& name, const Image& image)
{
auto itr = _imageMap.find(name);
if (itr == _imageMap.end())
return false;
_imageMap[name] = image;
return true;
}
size_t CalculateImagesDiskSpace() const
{
size_t space = 0;
for (auto& pair : _imageMap)
{
space += pair.second.sizeInBytes;
}
return space;
}
void removeEmptyImages()
{
for (auto& pair : _imageMap)
{
if (pair.second.sizeInBytes == 0)
{
removeImageFromDisk(pair.second);
_imageMap.erase(_imageMap.find(pair.first));
}
}
}
};
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment