File: Nick.h

package info (click to toggle)
sbnc 1.2-26
  • links: PTS
  • area: main
  • in suites: wheezy
  • size: 6,216 kB
  • sloc: cpp: 17,556; ansic: 15,514; sh: 13,419; tcl: 5,567; php: 448; makefile: 284
file content (89 lines) | stat: -rw-r--r-- 3,385 bytes parent folder | download | duplicates (3)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
/*******************************************************************************
 * shroudBNC - an object-oriented framework for IRC                            *
 * Copyright (C) 2005-2007 Gunnar Beutner                                      *
 *                                                                             *
 * 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. *
 *******************************************************************************/

class CChannel;

/**
 * nicktag_t
 *
 * A tag which can be attached to nick objects.
 */
typedef struct nicktag_s {
	char *Name; /**< the name of the tag */
	char *Value; /**< the value of the tag */
} nicktag_t;

#ifdef SWIGINTERFACE
%template(CZoneObjectCNick) CZoneObject<class CNick, 128>;
#endif

/**
 * CNick
 *
 * Represents a user on a single channel.
 */
class SBNCAPI CNick : public CObject<CNick, CChannel>, public CZoneObject<CNick, 128> {
	char *m_Nick; /**< the nickname of the user */
	char *m_Prefixes; /**< the user's prefixes (e.g. @, +) */
	char *m_Site; /**< the ident\@host of the user */
	char *m_Realname; /**< the realname of the user */
	char *m_Server; /**< the server this user is using */
	time_t m_Creation; /**< a timestamp, when this user object was created */
	time_t m_IdleSince; /**< a timestamp, when the user last said something */
	CVector<nicktag_t> m_Tags; /**< any tags which belong to this nick object */

	const char *InternalGetSite(void) const;
	const char *InternalGetRealname(void) const;
	const char *InternalGetServer(void) const;
public:
#ifndef SWIG
	CNick(const char *Nick, CChannel *Owner);
	virtual ~CNick(void);
#endif

	bool SetNick(const char *Nick);
	const char *GetNick(void) const;

	bool IsOp(void) const;
	bool IsVoice(void) const;
	bool IsHalfop(void) const;

	bool HasPrefix(char Prefix) const;
	bool AddPrefix(char Prefix);
	bool RemovePrefix(char Prefix);
	bool SetPrefixes(const char *Prefixes);
	const char *GetPrefixes(void) const;

	bool SetSite(const char *Site);
	const char *GetSite(void) const;

	bool SetRealname(const char *Realname);
	const char *GetRealname(void) const;

	bool SetServer(const char *Server);
	const char *GetServer(void) const;

	time_t GetChanJoin(void) const;

	bool SetIdleSince(time_t Time);
	time_t GetIdleSince(void) const;
	
	bool SetTag(const char *Name, const char *Value);
	const char *GetTag(const char *Name) const;
};