// $Id: BugEntry.h,v 1.6 1999/06/05 23:29:13 greear Exp $
// $Revision: 1.6 $ $Author: greear $ $Date: 1999/06/05 23:29:13 $
// $Id: BugEntry.h,v 1.6 1999/06/05 23:29:13 greear Exp $
// $Revision: 1.6 $ $Author: greear $ $Date: 1999/06/05 23:29:13 $
//
//ScryMUD Server Code
//Copyright (C) 1998 Ben Greear
//
//This program is free software; you can redistribute it and/or
//modify it under the terms of the GNU General Public License
//as published by the Free Software Foundation; either version 2
//of the License, or (at your option) any later version.
//
//This program is distributed in the hope that it will be useful,
//but WITHOUT ANY WARRANTY; without even the implied warranty of
//MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
//GNU General Public License for more details.
//
//You should have received a copy of the GNU General Public License
//along with this program; if not, write to the Free Software
//Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
//
// To contact the Author, Ben Greear: greear@cyberhighway.net, (preferred)
// greearb@agcs.com
//
#ifndef __BUG_ENTRY_INCLUDE_GRRMUD__
#define __BUG_ENTRY_INCLUDE_GRRMUD__
#include "critter.h"
#include <errno.h>
class CommentEntry {
public:
String date;
String reporter;
String report;
String html_safe_report; //not saved to disk
String heg_safe_report; //not saved to disk
CommentEntry() { }; //Strings initialize themselves...
CommentEntry(const char* d, const char* rr, const char* r);
CommentEntry(const CommentEntry& src)
: date(src.date), reporter(src.reporter), report(src.report),
html_safe_report(src.html_safe_report),
heg_safe_report(src.heg_safe_report) { }
int read(ifstream& dafile);
int write(ofstream& dafile);
int writeHtml(ofstream& dafile, const char* font);
static int writeSentinal(ofstream& dafile);
String toString();
String toStringHeg(); //Hegemon markup
};
class BugEntry {
public:
enum state {
open,
assigned,
retest,
closed,
defer,
all,
none,
high_state
};
BugEntry()
: bug_num(0), room_num(0) {
_cnt++;
}
BugEntry(int bn, const char* _reporter, const char* _date,
const char* _title, int rn);
/** Copy constructor */
BugEntry(const BugEntry& src);
BugEntry& operator=(const BugEntry& src);
~BugEntry() { _cnt--; }
int clear();
int read(ifstream& dafile);
int write(ofstream& dafile);
int writeHtml(ofstream& dafile);
//does checking needed
int changeState(state new_state, int imm_level, const String& name);
String toStringBrief();
String toString();
String toStringHeg(const char* col_name);
int getBugNum() const { return bug_num; }
int getRoomNum() const { return room_num; }
String& getReporter() { return reporter; }
String& getCreateDate() { return create_date; }
state getState() const { return cur_state; }
void setBugNum(int i) { bug_num = i; }
void appendComment(const CommentEntry& re);
void appendComment(const char* date, const char* report,
const char* reporter);
int canComment(int imm_level, const String& name);
int reAssign(const String& new_name, int imm_level, const String& name);
BugEntry* getBugEntry(int bug_num);
static state getState(const String& fer_state);
static int getInstanceCount() { return _cnt; }
static char* state_str[];
static char* html_color[];
protected:
int bug_num;
int room_num;
state cur_state;
bitfield flags; /* none defined yet */
String create_date; //it was created.
String reporter;
String assigned_to; /* name of person asigned to fix it */
List<CommentEntry*> reports;
String title;
String html_safe_title; //not saved to disk
String heg_safe_title; //not saved to disk
private:
static int _cnt;
};
class BugCollection {
public:
enum CollectionType {
BUGS,
IDEAS
};
private:
static int _cnt;
protected:
int next_bug_num;
String file_name;
String coll_name;
CollectionType type;
List<BugEntry*> bugs;
static char* ct_strs[];
// Causes it to write it's self to disk for storage and in html.
int notifyModified();
public:
BugCollection(const char* fname, const char* _coll_name,
CollectionType ct)
: next_bug_num(0), file_name(fname), coll_name(_coll_name),
type(ct) {
_cnt++;
}
~BugCollection() { _cnt--; }
String& getFileName() { return file_name; }
static int getInstanceCount() { return _cnt; }
const char* getColTypeName();
int read();
int write();
int writeHtml();
BugEntry* getBugEntry(int bug_num);
int canComment(int bug, int imm_level, const String& name);
int changeState(int bug, const String& new_state, int imm_level,
const String& name);
int reAssign(int bug, const String& new_name, int imm_level,
const String& name);
int purgeBug(int num);
int addBug(const char* cur_time, int rnum, const String& reporter,
const String& report);
int addBug(BugEntry* be);
int addComment(int bug, const CommentEntry& re, int imm_level,
const String& name);
String toString(const String& in_state, int use_heg_markup);
String toStringBrief(const String& in_state);
};
#endif