]> git.netwichtig.de Git - user/henk/code/inspircd.git/blobdiff - include/modules.h
And the bit I missed... :/
[user/henk/code/inspircd.git] / include / modules.h
index 1f73d3983a1a1ff7676230cfff9b2a4a85322164..a57fbef1a44365987ef018451b323fbe731b0ab0 100644 (file)
@@ -64,6 +64,7 @@ enum TargetTypeFlags {
        TYPE_OTHER
 };
 
+#include "globals.h"
 #include "dynamic.h"
 #include "base.h"
 #include "ctables.h"
@@ -87,10 +88,11 @@ typedef file_cache string_list;
 typedef std::deque<userrec*> chanuserlist;
 
 
-// This #define allows us to call a method in all
-// loaded modules in a readable simple way, e.g.:
-// 'FOREACH_MOD OnConnect(user);'
-
+/**
+ * This #define allows us to call a method in all
+ * loaded modules in a readable simple way, e.g.:
+ * 'FOREACH_MOD(I_OnXonnwxr,OnConnect(user));'
+ */
 #define FOREACH_MOD(y,x) if (Config->global_implementation[y] > 0) { \
        for (int _i = 0; _i <= MODCOUNT; _i++) { \
        if (Config->implement_lists[_i][y]) \
@@ -105,12 +107,11 @@ typedef std::deque<userrec*> chanuserlist;
        } \
   }
 
-// This define is similar to the one above but returns a result in MOD_RESULT.
-// The first module to return a nonzero result is the value to be accepted,
-// and any modules after are ignored.
-
-// *********************************************************************************************
-
+/**
+ *  This define is similar to the one above but returns a result in MOD_RESULT.
+ * The first module to return a nonzero result is the value to be accepted,
+ * and any modules after are ignored.
+ */
 #define FOREACH_RESULT(y,x) { if (Config->global_implementation[y] > 0) { \
                        MOD_RESULT = 0; \
                        for (int _i = 0; _i <= MODCOUNT; _i++) { \
@@ -131,8 +132,6 @@ typedef std::deque<userrec*> chanuserlist;
                } \
        } \
  }
-   
-// *********************************************************************************************
 
 #define FD_MAGIC_NUMBER -42
 
@@ -142,12 +141,6 @@ typedef std::deque<userrec*> chanuserlist;
 #define IS_REMOTE(x) (x->fd < 0)
 #define IS_MODULE_CREATED(x) (x->fd == FD_MAGIC_NUMBER)
 
-/*extern void createcommand(char* cmd, handlerfunc f, char flags, int minparams, char* source);
-extern void server_mode(char **parameters, int pcnt, userrec *user);*/
-
-// class Version holds the version information of a Module, returned
-// by Module::GetVersion (thanks RD)
-
 /** Holds a module's Version information
  *  The four members (set by the constructor only) indicate details as to the version number
  *  of a module. A class of type Version is returned by the GetVersion method of the Module class.
@@ -171,13 +164,9 @@ class Admin : public classbase
         Admin(std::string name, std::string email, std::string nick);
 };
 
-
 // Forward-delacare module for ModuleMessage etc
 class Module;
 
-// Thanks to Rob (from anope) for the idea of this message passing API
-// (its been done before, but this seemed a very neat and tidy way...
-
 /** The ModuleMessage class is the base class of Request and Event
  * This class is used to represent a basic data structure which is passed
  * between modules for safe inter-module communications.
@@ -342,7 +331,7 @@ enum Implementation {       I_OnUserConnect, I_OnUserQuit, I_OnUserDisconnect, I_OnUse
 /** Base class for all InspIRCd modules
  *  This class is the base class for InspIRCd modules. All modules must inherit from this class,
  *  its methods will be called when irc server events occur. class inherited from module must be
- *  instantiated by the ModuleFactory class (see relevent section) for the plugin to be initialised.
+ *  instantiated by the ModuleFactory class (see relevent section) for the module to be initialised.
  */
 class Module : public classbase
 {
@@ -1248,8 +1237,14 @@ class Module : public classbase
         */
        virtual int OnRawSocketRead(int fd, char* buffer, unsigned int count, int &readresult);
 
+       /** Called whenever a user sets away.
+        * This method has no parameter for the away message, as it is available in the
+        * user record as userrec::awaymsg.
+        */
        virtual void OnSetAway(userrec* user);
 
+       /** Called when a user cancels their away state.
+        */
        virtual void OnCancelAway(userrec* user);
 };
 
@@ -1739,12 +1734,27 @@ class Server : public classbase
         */
        virtual void DelSocket(InspSocket* sock);
 
+       /** Causes the local server to rehash immediately.
+        * WARNING: Do not call this method from within your rehash method, for
+        * obvious reasons!
+        */
        virtual void RehashServer();
 
+       /** This method returns the total number of channels on the network.
+        */
        virtual long GetChannelCount();
 
+       /** This method returns a channel whos index is greater than or equal to 0 and less than the number returned by Server::GetChannelCount().
+        * This is slower (by factors of dozens) than requesting a channel by name with Server::FindChannel(), however there are times when
+        * you wish to safely iterate the channel list, saving your position, with large amounts of time in between, which is what this function
+        * is useful for.
+        */
        virtual chanrec* GetChannelIndex(long index);
 
+       /** Dumps text (in a stringstream) to a user. The stringstream should not contain linefeeds, as it will be split
+        * automatically by the function into safe amounts. The line prefix given is prepended onto each line (e.g. a servername
+        * and a numeric).
+        */
        void DumpText(userrec* User, const std::string &LinePrefix, stringstream &TextStream);
 };
 
@@ -1769,10 +1779,11 @@ class ConfigReader : public classbase
         * core is changed). It will contain a pointer to the configuration file data with unneeded data
         * (such as comments) stripped from it.
         */
-       std::stringstream *cache;
-       std::stringstream *errorlog;
+       ConfigDataHash* data;
+       std::ostringstream* errorlog;;
        /** Used to store errors
         */
+       bool privatehash; // If we're using our own config data hash or not.
        bool readerror;
        long error;
        
@@ -1852,6 +1863,8 @@ class ConfigReader : public classbase
  */
 class FileReader : public classbase
 {
+       /** The file contents
+        */
        file_cache fc;
  public:
         /** Default constructor.