// hey, emacs, treat this like -*- C++ -*- file // ------------------------------------------------------------------ // The Goldware Library. // Copyright (C) 1990-1999 Odinn Sorensen // Copyright (C) 2000 Alex. S. Aganichev // ------------------------------------------------------------------ // 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., 675 Mass Ave, Cambridge, MA 02139, USA. // ------------------------------------------------------------------ // $Id$ // ------------------------------------------------------------------ // Group/Random System. // ------------------------------------------------------------------ #ifndef __gutlgrp_h #define __gutlgrp_h // ------------------------------------------------------------------ #include <map> #include <vector> #include <string> // ------------------------------------------------------------------ #ifdef __GNUG__ #pragma interface "gutlgrp.h" #endif // ------------------------------------------------------------------ enum { GRP_AKA, GRP_AKAMATCHING, GRP_AREACOPYADDID, GRP_AREACOPYDIRECT, GRP_AREACOPYTO, GRP_AREAFORWARDDIRECT, GRP_AREAFREQDIRECT, GRP_AREAFREQTO, GRP_AREAREPLYDIRECT, GRP_AREAREPLYTO, GRP_AREAYOUWROTETO, GRP_ATTRIBUTES, GRP_CTRLINFO, GRP_DISPSOFTCR, GRP_EDITHARDTERM, GRP_EDITMIXCASE, GRP_EDITREPLYRE, GRP_FORCETEMPLATE, GRP_HIDESTYLIES, GRP_USESTYLIES, GRP_INPUTFILE, GRP_INTERNETADDRESS, GRP_INTERNETGATE, GRP_INTERNETMSGID, GRP_INTERNETRFCBODY, GRP_LOADLANGUAGE, GRP_MEMBER, GRP_MSGLISTDATE, GRP_MSGLISTFAST, GRP_MSGLISTFIRST, GRP_MSGLISTHEADER, GRP_MSGLISTWIDESUBJ, GRP_NICKNAME, GRP_NETNAME, GRP_ORGANIZATION, GRP_ORIGIN, GRP_OUTPUTFILE, GRP_PLAY, GRP_QUOTEBUFFILE, GRP_QUOTECHARS, GRP_QUOTECTRL, GRP_QUOTESTRING, GRP_QUOTESTOPS, GRP_QUOTEWRAPHARD, #if defined(GCFG_SPELL_INCLUDED) GRP_SCHECKERDEFLANG, #endif GRP_SEARCHFOR, GRP_STRIPHTML, GRP_TAGLINE, GRP_TAGLINECHAR, GRP_TAGLINESUPPORT, GRP_TEARLINE, GRP_TEMPLATE, GRP_TEMPLATEMATCH, GRP_TWITMODE, GRP_TWITNAME, GRP_TWITSUBJ, GRP_USEAREA, GRP_USEFWD, GRP_USERNAME, GRP_USESOFTCRXLAT, GRP_USETZUTC, GRP_VIEWHIDDEN, GRP_VIEWKLUDGE, GRP_VIEWQUOTE, GRP_WHOTO, GRP_WRITEHEADER, GRP_WRITETEMPLATE, GRP_XLATEXPORT, GRP_XLATIMPORT, GRP_MAX }; // ------------------------------------------------------------------ // Group class class Grp { private: class grp_stock { public: enum { TYPE_BOOL, TYPE_CHAR, TYPE_INT, TYPE_STRING, TYPE_OBJECT }; int type; union { bool bool_item; char char_item; int int_item; std::string *string_item; void *object_item; } data; grp_stock(bool item) { type = TYPE_BOOL; data.bool_item = item; } grp_stock(char item) { type = TYPE_CHAR; data.char_item = item; } grp_stock(int item) { type = TYPE_INT; data.int_item = item; } grp_stock(const std::string& item) { type = TYPE_STRING; data.string_item = new std::string(item); throw_new(data.string_item); } grp_stock(void *item) { type = TYPE_OBJECT; data.object_item = item; } }; std::vector< std::pair<std::string, std::multimap<int, grp_stock> > > container; std::vector< std::pair<std::string, std::multimap<int, grp_stock> > >::iterator currgrp; public: int currgrpno; Grp(); ~Grp(); void AddGrp(const char* id); void AddMbr(const char* id); const char* SetGrp(const char* id); void AddItm(int __type, bool __data); void AddItm(int __type, char __data); void AddItm(int __type, int __data); void AddItm(int __type, const std::string& __data); void AddItm(int __type, void* __data, int __size); int GetItm(int __type, bool& __data, int __no=-1); int GetItm(int __type, char& __data, int __no=-1); int GetItm(int __type, int& __data, int __no=-1); int GetItm(int __type, std::string& __data, int __no=-1); int GetItm(int __type, void* __data, int __size, int __no=-1); }; // ------------------------------------------------------------------ #endif // ------------------------------------------------------------------