From 8809644c81d440acc2dcb28be8919ab8e6b83d78 Mon Sep 17 00:00:00 2001 From: skyjake Date: Wed, 30 Jan 2013 11:30:29 +0200 Subject: [PATCH] libdeng2: Cleanup --- doomsday/libdeng2/include/de/data/observers.h | 34 ++++++++++++------- 1 file changed, 22 insertions(+), 12 deletions(-) diff --git a/doomsday/libdeng2/include/de/data/observers.h b/doomsday/libdeng2/include/de/data/observers.h index 3bf7dee68f..f2eb302305 100644 --- a/doomsday/libdeng2/include/de/data/observers.h +++ b/doomsday/libdeng2/include/de/data/observers.h @@ -24,14 +24,16 @@ #include +/** + * Macro that forms the name of an observer interface. + */ #define DENG2_AUDIENCE_INTERFACE(Name) \ I##Name##Observer /** - * Macro for declaring an observer interface with a single method. + * Macro for declaring an observer interface containing one method. * - * @param Name Name of the audience. E.g., "Deletion" produces @c DeletionAudience - * and @c audienceForDeletion. + * @param Name Name of the audience. E.g., "Deletion" produces @c DeletionAudience. * @param Method The pure virtual method that the observer has to implement. * The @c virtual keyword and =0 are automatically included. */ @@ -42,12 +44,19 @@ virtual Method = 0; \ }; +/** + * Defines an audience. Typically used inside a class to define the observers + * as a public member variable (used by DENG_DEFINE_AUDIENCE). Produces a + * member variable called "audienceFor{Name}". + * + * @param Name Name of the audience. + */ #define DENG2_AUDIENCE(Name) \ typedef de::Observers Name##Audience; \ Name##Audience audienceFor##Name; /** - * Macro for defining an observer interface with a single method. + * Macro for defining an observer interface containing a single method. * * @param Name Name of the audience. E.g., "Deletion" produces @c DeletionAudience * and @c audienceForDeletion. @@ -67,14 +76,6 @@ */ #define DENG2_OBSERVES(Type, Audience) public Type::I##Audience##Observer -/** - * Macro for looping through the audience members. - * - * @param Name Name of the audience. - * @param Var Variable used in the loop. - */ -#define DENG2_FOR_AUDIENCE(Name, Var) for(Name##Audience::Loop Var(audienceFor##Name); !Var.done(); ++Var) - /** * Macro for looping through all observers. @note The @a Audience type needs to be defined * in the scope. @@ -85,6 +86,15 @@ */ #define DENG2_FOR_EACH_OBSERVER(SetName, Var, Name) for(SetName::Loop Var(Name); !Var.done(); ++Var) +/** + * Macro for looping through the audience members. + * + * @param Name Name of the audience. + * @param Var Variable used in the loop. + */ +#define DENG2_FOR_AUDIENCE(Name, Var) \ + DENG2_FOR_EACH_OBSERVER(Name##Audience, Var, audienceFor##Name) + namespace de { /**