paludis  Version 2.6.0
notifier_callback.hh
1 /* vim: set sw=4 sts=4 et foldmethod=syntax : */
2 
3 /*
4  * Copyright (c) 2009, 2010, 2011 Ciaran McCreesh
5  *
6  * This file is part of the Paludis package manager. Paludis is free software;
7  * you can redistribute it and/or modify it under the terms of the GNU General
8  * Public License version 2, as published by the Free Software Foundation.
9  *
10  * Paludis is distributed in the hope that it will be useful, but WITHOUT ANY
11  * WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
12  * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
13  * details.
14  *
15  * You should have received a copy of the GNU General Public License along with
16  * this program; if not, write to the Free Software Foundation, Inc., 59 Temple
17  * Place, Suite 330, Boston, MA 02111-1307 USA
18  */
19 
20 #ifndef PALUDIS_GUARD_PALUDIS_NOTIFIER_CALLBACK_HH
21 #define PALUDIS_GUARD_PALUDIS_NOTIFIER_CALLBACK_HH 1
22 
23 #include <paludis/notifier_callback-fwd.hh>
24 #include <paludis/util/pimp.hh>
25 #include <paludis/util/visitor.hh>
26 #include <paludis/util/type_list.hh>
27 #include <paludis/util/fs_path.hh>
28 #include <paludis/name.hh>
30 
31 namespace paludis
32 {
34  public virtual DeclareAbstractAcceptMethods<NotifierCallbackEvent, MakeTypeList<
35  NotifierCallbackGeneratingMetadataEvent,
36  NotifierCallbackResolverStepEvent,
37  NotifierCallbackResolverStageEvent,
38  NotifierCallbackLinkageStepEvent>::Type>
39  {
40  };
41 
43  public NotifierCallbackEvent,
44  public ImplementAcceptMethods<NotifierCallbackEvent, NotifierCallbackGeneratingMetadataEvent>
45  {
46  private:
47  const RepositoryName _repo;
48 
49  public:
51 
52  const RepositoryName repository() const PALUDIS_ATTRIBUTE((warn_unused_result));
53  };
54 
56  public NotifierCallbackEvent,
57  public ImplementAcceptMethods<NotifierCallbackEvent, NotifierCallbackResolverStepEvent>
58  {
59  };
60 
62  public NotifierCallbackEvent,
63  public ImplementAcceptMethods<NotifierCallbackEvent, NotifierCallbackResolverStageEvent>
64  {
65  private:
66  const std::string _stage;
67 
68  public:
69  NotifierCallbackResolverStageEvent(const std::string &);
70 
71  const std::string stage() const PALUDIS_ATTRIBUTE((warn_unused_result));
72  };
73 
75  public NotifierCallbackEvent,
76  public ImplementAcceptMethods<NotifierCallbackEvent, NotifierCallbackLinkageStepEvent>
77  {
78  private:
79  const FSPath _location;
80 
81  public:
83 
84  const FSPath location() const PALUDIS_ATTRIBUTE((warn_unused_result));
85  };
86 
88  {
89  private:
91 
92  public:
93  ScopedNotifierCallback(Environment * const, const NotifierCallbackFunction &);
95 
96  void remove_now();
97  };
98 
99  extern template class Pimp<ScopedNotifierCallback>;
100 }
101 
102 #endif
Definition: pimp.hh:51
Definition: about_metadata-fwd.hh:23
Definition: visitor-fwd.hh:52
Definition: notifier_callback.hh:74
Definition: notifier_callback.hh:55
Definition: notifier_callback.hh:87
Definition: environment.hh:200
Definition: notifier_callback.hh:33
Definition: notifier_callback.hh:42
Definition: wrapped_value-fwd.hh:29
Definition: notifier_callback.hh:61
Definition: visitor-fwd.hh:49
Definition: fs_path.hh:33
#define PALUDIS_ATTRIBUTE(x)
Definition: attributes.hh:53
#define PALUDIS_VISIBLE
Definition: attributes.hh:59