[prev in list] [next in list] [prev in thread] [next in thread] 

List:       doxygen-users
Subject:    [Doxygen-users] Documentation Generation Problem
From:       Jake Colman <colman () ppllc ! com>
Date:       2005-03-28 22:23:53
Message-ID: 761x9z5s06.fsf () newjersey ! ppllc ! com
[Download RAW message or body]


I posted this once before but never heard anything back so I thought I'd try
again.

In the following code example, the method tSMPManager::addEngine() will not
be documented.  Why not?

===============================================================

-- cSMPManager.h --

// Copyright 2004 Principia Partners LLC

#ifndef SMP_MANAGER_H
#define SMP_MANAGER_H

#undef COMMA

#include <cMutex.h>
#include <cSMPQueue.h>

namespace PAS {

template <class cX, class cY> class tSMPThread;

template <class cX, class cY> class tSMPManager
{
private:
  tSMPQueue<tSMPThread<cX,cY> > qWorkThreads;
  tSMPQueue<tSMPThread<cX,cY> > qResultThreads;
  
  tSMPManager( const tSMPManager& ) {}             // not implemented
  tSMPManager& operator=( const tSMPManager& ) {}  // not implemented

protected:
  tSMPQueue<cX> qWork;
  tSMPQueue<cY> qResults;
  unsigned int  EngineCount;
  const cSMPContext*  Context;
  
  bool addEngine( tSMPThread<cX,cY>* T );

public:
  tSMPManager( const cSMPContext* C, int EngineCount );
  virtual ~tSMPManager();

  virtual void init() = 0;
  virtual void start();
  virtual void wait();

  virtual bool createWorkUnits() = 0;
  virtual cX*  nextWorkUnit();

  virtual bool postResults( cY* );
  virtual cY*  nextResult();

  virtual const cSMPContext* context() const;

  virtual void exitCallback( tSMPThread<cX,cY>* T );
};

}

#endif

===============================================================

-- tSMPManager.h --

//
// Copyright 1995-2005 Principia Partners LLC
//

#include <cSMPManager.h>

namespace PAS {

/*!
 * \defgroup SMP Multi-Threading Library
 */

/*!
 * \class tSMPManager cSMPManager.h
 * 
 * \ingroup SMP
 *
 * \brief The %tSMPManager class provides the overall management of a
 * multi-threaded process.
 * 
 */

/*!
 * Creates the SMP Manager object to manage the application's multi-threading
 * requirements.
 *
 * \param C The data area to be passed on to the tSMPThread objects.
 * \param theEngineCount The number of threads that should be created
 */

template <class cX, class cY>
  tSMPManager<cX,cY>::tSMPManager( const cSMPContext* C, int theEngineCount )
    : Context( C ),
      EngineCount( theEngineCount ) 
{}

template <class cX, class cY>
  tSMPManager<cX,cY>::~tSMPManager() {}

/*!
 * This pure virtual method initializes the SMP Manager.
 */

template <class cX, class cY>
  void tSMPManager<cX,cY>::init() {}

/*!
 * This method starts the multi-threading process.
 */

template <class cX, class cY>
  void tSMPManager<cX,cY>::start()
{
}

/*!
 * Adds a new 'engine' (i.e., thread) to one of the Thread Queues that are
 * managed by this (the Manager) object.
 *
 * The object represented by \a T is pushed onto either the \var qWorkThreads
 * or \var qResultThreads queue.  As long as thread objects are on the queue
 * there is outstanding work or results being processed.  When the queue are
 * emptied and closed, all processing has been completed.
 *
 * \param T An instance of a tSMPThread object.
 */

template <class cX, class cY>
  bool tSMPManager<cX,cY>::addEngine( tSMPThread<cX,cY>* T )
{
  return true;
}

/*!
 * This method causes to the manager to wait for all threads to complete.
 * Completion is indicated by the \var qWorkThreads and \var qResultThreads
 * queues being emptied and closed.
 */

template <class cX, class cY>
  void tSMPManager<cX,cY>::wait()
{
}

/*!
 * This pure virtual method is responsible for creating the work units for
 * this application.  The work units are pushed onto the \var qWork queue.
 * 
 * \return TRUE if the work units were succesfully created.
 */

template <class cX, class cY>
  bool tSMPManager<cX,cY>::createWorkUnits() {}

/*!
 * Templatized function to manage the units of work to be processed by the
 * tSMPThread objects.  The method pops work units off the \var qWork
 * queue and returns it to the caller.
 *
 * \return A pointer to an object of type cX, determined by the specific
 * template instantiation.
 */

template <class cX, class cY>
  cX* tSMPManager<cX,cY>::nextWorkUnit()
{
  return NULL;
}

/*!
 * Templatized function to post the results of work that has been completed
 * by the tSMPThread object.  The \a cY object is pushed onto the \a
 * qResults queue.  It is the caller's responsibilty to ensure there is a
 * thread (see tSMPManager::addEngine()) that will be reponsible for calling
 * tSMPManager::nextResult() to pop results off of the queue.
 *
 * \return TRUE if the result could be posted.
 */

template <class cX, class cY>
  bool tSMPManager<cX,cY>::postResults( cY* Y )
{
  return qResults.push( Y );
}

/*!
 * Templatized function to pop result objects off of the \a qResults queue.
 *
 * \return A pointer to an object of type cY, determined by the specific
 * template instantiation.
 */

template <class cX, class cY>
  cY* tSMPManager<cX,cY>::nextResult()
{
  return NULL;
}

/*!
 * Provides access to the Manager's context.
 * \return const pointer to the context
 */

template <class cX, class cY>
  const cSMPContext* tSMPManager<cX,cY>::context() const
{
  return NULL;
}

/*!
 * This method is invoked when an SMP Thread has completed all of its work.
 * This signals the Manager to pop the thread off of its queue.  When the
 * thread queue is empty it indicates that all processing has been completed.
 */

template <class cX, class cY>
  void tSMPManager<cX,cY>::exitCallback( tSMPThread<cX,cY>* T )
{
}

}

// end of file

===============================================================

-- 
Jake Colman
Sr. Applications Developer
Principia Partners LLC
Harborside Financial Center
1001 Plaza Two
Jersey City, NJ 07311
(201) 209-2467
www.principiapartners.com



-------------------------------------------------------
SF email is sponsored by - The IT Product Guide
Read honest & candid reviews on hundreds of IT Products from real users.
Discover which products truly live up to the hype. Start reading now.
http://ads.osdn.com/?ad_id=6595&alloc_id=14396&op=click
_______________________________________________
Doxygen-users mailing list
Doxygen-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/doxygen-users
[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic