ocarina/include/core/tags/generic.h

75 lines
1.5 KiB
C
Raw Normal View History

/**
* @file
* Copyright 2014 (c) Anna Schumaker.
*/
#ifndef OCARINA_CORE_TAGS_GENERIC_H
#define OCARINA_CORE_TAGS_GENERIC_H
#include <core/database.h>
/**
* The GenericTag class implements the basic functions that all
* tag classes need. All other tag structures should inherit
* from this class to have access to all the basic features.
*
* When writing a GenericTag to disk, only the _name field needs
* to be written.
*
* ... << name1
* ... << name2
* ... << name3
*/
class GenericTag : public DatabaseEntry {
private:
std::string _name; /**< The name associated with this tag. */
std::string _lower; /**< The lowercase form of ::_name. */
public:
GenericTag(); /**< GenericTag constructor. */
/**
* Generic tag constructor.
*
* @param name Name to associate with this tag.
*/
GenericTag(const std::string &);
/**
* Called to access the generic tag's primary key.
*
* @return GenericTag::_name.
*/
virtual const std::string primary_key() const;
/**
* Read GenericTag::_name from file and find the lowercase form.
*
* @param file The file to read from.
*/
virtual void read(File &);
/**
* Write GenericTag::_name to file.
*
* @param file The file to write to.
*/
virtual void write(File &);
/**
* Called to access the name associated with this tag.
*
* @return GenericTag::_name.
*/
const std::string &name() const;
/**
* Called to access the lowercase form of ::_name.
*
* @return GenericTag::_lower.
*/
const std::string &lowercase();
};
#endif /* OCARINA_CORE_TAGS_GENERIC_H */