OPAL (Object Oriented Parallel Accelerator Library) 2022.1
OPAL
UserList.h
Go to the documentation of this file.
1// -*- C++ -*-
2/***************************************************************************
3 *
4 * The IPPL Framework
5 *
6 *
7 * Visit http://people.web.psi.ch/adelmann/ for more details
8 *
9 ***************************************************************************/
10
11#ifndef USER_LIST_H
12#define USER_LIST_H
13
14/***********************************************************************
15 *
16 * UserList is a base class for classes which need to maintain a list
17 * of users of that particular instance. It provides 'checkinUser' and
18 * 'checkoutUser' methods which are called by the users of an instance
19 * of this class. UserList is templated on a 'key' (used to uniquely
20 * distinguish a particular user, provided in the checkin call) and on
21 * the type of the user. It stores a list of pointers to the users.
22 *
23 * When an instance of this class is deleted, it informs all users of
24 * its demise via a call to 'notifyUserOfDelete', specifying the unique
25 * ID of the UserList. This ID is generated when the UserList instance
26 * is created, and is returned to the user when they check in.
27 *
28 ***********************************************************************/
29
30// include files
31#include "Utility/vmap.h"
32#include "Utility/Unique.h"
33#include "Utility/User.h"
34
35
36// class definition
37class UserList {
38
39public:
40 // useful typedefs
41 typedef User::ID_t Key;
44 // typedef UserList_t::const_iterator const_iterator_user;
47
48public:
49 // constructor: just get unique ID for this object
50 UserList();
51
52 // destructor: inform all users of our untimely demise
53 virtual ~UserList();
54
55 //
56 // informative methods
57 //
58
59 // return the number of users
61
62 // return the ID of this userlist
63 ID_t getUserListID() const;
64
65 // do we have a user with the given key? Return true if we do.
66 bool haveUser(Key key) const;
67
68 // return the user with the given key
69 User& getUser(Key key);
70
71 // return begin/end iterators for the users
74 // const_iterator_user begin_user() const;
75 // const_iterator_user end_user() const;
76
77 //
78 // virtual checkin/checkout functions
79 //
80
81 // Check in a new user with the given key. Check to make sure we do
82 // not already have that key. Return our UserList ID number. Derived
83 // classes can override this, but should call this base class version
84 // to actually store the user.
85 virtual ID_t checkinUser(User& user);
86
87 // Check out a user, by removing them from our list. Check to make sure
88 // a user with the given key is in our list. If the second argument is
89 // true (by default it is not), the user is notified that they are
90 // being checked out (this may be useful if the person calling checkoutUser
91 // is not the user being checked out).
92 virtual void checkoutUser(Key key, bool informuser = false);
93
94 // also checkout a user, by specifying the user to checkout instead of
95 // the user key. The key is obtained from the user in this case.
96 virtual void checkoutUser(const User& user, bool informuser = false);
97
98private:
99 // the list of users
101
102 // our unique ID
104};
105
106#endif // USER_LIST_H
107
108/***************************************************************************
109 * $RCSfile: UserList.h,v $ $Author: adelmann $
110 * $Revision: 1.1.1.1 $ $Date: 2003/01/23 07:40:34 $
111 * IPPL_VERSION_ID: $Id: UserList.h,v 1.1.1.1 2003/01/23 07:40:34 adelmann Exp $
112 ***************************************************************************/
Definition: User.h:31
Unique::type ID_t
Definition: User.h:35
bool haveUser(Key key) const
Definition: UserList.cpp:61
ID_t userlistID
Definition: UserList.h:103
iterator_user begin_user()
Definition: UserList.cpp:77
vmap< Key, User * > UserList_t
Definition: UserList.h:42
ID_t getUserListID() const
Definition: UserList.cpp:54
User::ID_t Key
Definition: UserList.h:41
virtual void checkoutUser(Key key, bool informuser=false)
Definition: UserList.cpp:124
UserList()
Definition: UserList.cpp:34
UserList_t::iterator iterator_user
Definition: UserList.h:43
virtual ~UserList()
Definition: UserList.cpp:39
UserList_t userlist
Definition: UserList.h:100
iterator_user end_user()
Definition: UserList.cpp:84
User::ID_t ID_t
Definition: UserList.h:46
size_type_user getNumUsers() const
Definition: UserList.cpp:47
UserList_t::size_type size_type_user
Definition: UserList.h:45
User & getUser(Key key)
Definition: UserList.cpp:68
virtual ID_t checkinUser(User &user)
Definition: UserList.cpp:109
rep_type::iterator iterator
Definition: vmap.h:98
rep_type::size_type size_type
Definition: vmap.h:102