Click here to Skip to main content
15,897,187 members
Articles / Programming Languages / C++

ToDoList Add-on

Rate me:
Please Sign up or sign in to vote.
4.69/5 (6 votes)
20 Apr 2002CPOL3 min read 242.5K   2.9K   57  
A Visual Studio add-in to help navigate to TODO:, TASK: etc comments, as well as showing STL containers in debug mode such as std::string, std::list etc
/********************************************************************\
  created:    2001/03/04
  created:    4:3:2001   12:51
  filename:   Parser\prsBase.h
  file path:  .\Parser
  file base:  prsBase
  file ext:   h
  author:     Alex Kucherenko
  
  purpose:  
\********************************************************************/

#ifndef _PARSER_TODO_BASE_CLASSES_H_
#define _PARSER_TODO_BASE_CLASSES_H_

#pragma once

#ifndef PURE
  #define PURE =0
#endif 

//////////////////////////////////////////////////////////////////////////
// Template used for defining typical classes iterator functions

template < class T >
class CToDoIterator
{
  public:
    typedef T::iterator It;
    typedef T::key_type Base; 
    
    It* First( void )
    {
      if( m_lCounter == 0 ) throw CToDoNoElements();
      m_mapIter = m_mapStore.begin();
      return &m_mapIter;
    };
    
    It* Next( void )
    {
      if( m_lCounter == 0 ) throw CToDoNoElements();
      if( m_mapIter == m_mapStore.end() ) throw CToDoLastRiched();
      m_mapIter++;
      return &m_mapIter;
    };

    It* Prev( void )
    {
      if( m_lCounter == 0 ) throw CToDoNoElements();
      if( m_mapIter == m_mapStore.begin() ) throw CToDoFirstRiched();
      m_mapIter--;
      return &m_mapIter;
    };
    
    It* Last( void )
    {
      if( m_lCounter == 0 ) throw CToDoNoElements();
      m_mapIter = m_mapStore.end();
      return &m_mapIter;
    };

    It* Find( Base &base_type )
    {
      m_mapFindIter = m_mapStore.find( base_type );
      if( m_mapFindIter == m_mapStore.end() ) throw CToDoNoElements();
      return &m_mapFindIter;
    }

  protected:
    It    m_mapFindIter;
    It    m_mapIter;
    T     m_mapStore;
    long  m_lCounter;
};

//////////////////////////////////////////////////////////////////////////
// Base class of Parser Engine  

class CToDoBaseParser
{
  public:
    // default constructor
    CToDoBaseParser() { };

    // destructor
    virtual ~CToDoBaseParser( ) { };

    // Constructor which set FileName var
    CToDoBaseParser( const string &FileName ) : m_strFileName( FileName ) { };
    
    // Function starts parsing procedure in class
    virtual long StartParsing()
    {
      long tmpRet = 0;
      
      ClearAllElements();

      try { tmpRet = ParseEngine();  }
      catch( CToDoException ex ) { };
      
      return tmpRet;
    };
    
    // Function return FileName of file which will be parsed
    const string &GetFileName( void )  
    {
      return m_strFileName;
    }

    // Fuction set FileName of file which will be parsed
    void SetFileName( const string &FileName )
    {
      m_strFileName = FileName;
    };
    
    // Function clear all element in map
    virtual void ClearAllElements( void ) PURE;

  protected:
    // Parsing Engine which do main job in class
    virtual long ParseEngine( ) PURE;

  private:
    // File name of file for parsing
    string  m_strFileName;
};

#endif /* _PARSER_TODO_BASE_CLASSES_H_ */

//:> end of file

By viewing downloads associated with this article you agree to the Terms of Service and the article's licence.

If a file you wish to view isn't highlighted, and is a text file (not binary), please let us know and we'll add colourisation support for it.

License

This article, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)


Written By
CEO ArtfulBits Inc.
Ukraine Ukraine
Name:Kucherenko Oleksandr

Born:September 20, 1979

Platforms: Win32, Linux; - well known and MS-DOS; Win16; OS/2 - old time not touched;

Hardware: IBM PC

Programming Languages: Assembler (for Intel 80386); Borland C/C++; Borland Pascal; Object Pascal; Borland C++Builder; Delphi; Perl; Java; Visual C++; Visual J++; UML; XML/XSL; C#; VB.NET; T-SQL; PL/SQL; and etc.

Development Environments: MS Visual Studio 2001-2008; MS Visual C++; Borland Delphi; Borland C++Builder; C/C++ any; Rational Rose; GDPro; Together and etc.

Libraries: STL, ATL, WTL, MFC, NuMega Driver Works, VCL; .NET 1.0, 1.1, 2.0, 3.5; and etc.

Technologies: Client/Server; COM; DirectX; DirectX Media; BDE; HTML/DHTML; ActiveX; Java Servlets; DCOM; COM+; ADO; CORBA; .NET; Windows Forms; GDI/GDI+; and etc.

Application Skills: Databases - design and maintain, support, programming; GUI Design; System Programming, Security; Business Software Development. Win/Web Services development and etc.

Comments and Discussions