#ifndef _ARTICLE_H #define _ARTICLE_H #include "DBObject.h" class Article: public DBObject { //everything here is copied due to the late addition to the DB by another thread //these passed in bodies are often free'd so need to copy them const char *m_title; //copied (freed in destructor) const char *m_description; //copied (freed in destructor) vector m_tags; //copied (contents malloc'd though!) const char *m_body; //copied (freed in destructor) const char *m_origonal; //copied (freed in destructor) const vector m_entities; //copied (int's don't need free) friend class TIPsDatabase; public: Article(TIPsDatabase *_db, const InternetResource *_ir, const vector _entities, const char *_title, const char *_body, const char *_origonal, vector _tags, const char *_description = 0): DBObject(_db, _ir), m_entities(_entities), m_title(strdupCheck(_title)), m_description(strdupCheck(_description)), m_tags(_tags), m_body(strdupCheck(_body)), m_origonal(strdupCheck(_origonal)) {} ~Article() { if (m_title) free((void*)m_title); if (m_body) free((void*)m_body); if (m_origonal) free((void*)m_origonal); if (m_description) free((void*)m_description); for (vector::iterator i = m_tags.begin(); i != m_tags.end(); i++) free((void*)*i); } void addToDB(); }; #endif