Click here to Skip to main content
15,896,359 members
Articles / Desktop Programming / MFC

Include File Hierarchy Viewer

Rate me:
Please Sign up or sign in to vote.
4.84/5 (108 votes)
29 Jul 2003CPOL8 min read 386.2K   4.5K   151  
A tool to view the include file hierarchy of your source code.
//====================================================================
// Although great care has gone into developing this software,
// it is provided without any guarantee of reliability, accuracy
// of information, or correctness of operation.  I am not responsible
// for any damages that may occur as a result of using this software.
// Use this software entirely at your own risk.
// Copyright 2003, Chris Richardson
//
// Description: Classes used to read VC6 projects and workspaces.
//
//====================================================================

#if !defined( _VC_6_OBJECTS_H_DEFINED_ )
#define _VC_6_OBJECTS_H_DEFINED_

#include "DSObjects.h"

//////////////////////////////////////////////////////////////////////
// CVC6Settings - Stores the compile settings that we are interested in,
//                for each configuration, and can read version 6 cmd line.
//////////////////////////////////////////////////////////////////////

class CVC6Settings : public CDSSettings
{
public:
   CVC6Settings();
   virtual ~CVC6Settings();

   virtual void            ParseSettings( CDSSettings * p_roFileSettings,
                                          CDSParsedSettings & p_roSettings ) const;
   
   void                    ParseCPPCommandLine( TCHAR * p_pszLine );
   TCHAR *                 ExtractOptionAndAppend( CDSSettingArray &          p_roSettings,
                                                   TCHAR *                    p_pszOpt,
                                                   CDSSetting::DSSettingType  p_eType );

protected:
   void                    ProcessAddSetting( const CDSSetting * p_poSetting,
                                              CStdStringArray & p_roStdIncludes,
                                              CStdStringArray & p_roIncludes,
                                              CStdStringArray & p_roDefines,
                                              CStdStringArray & p_roNewIncludes,
                                              CStdStringArray & p_roNewDefines ) const;
};

//////////////////////////////////////////////////////////////////////
// CDSConfigurationHolder - Stores a map of configuration names to
//                          compiler settings objects, and can
//                          read version 6 configuration settings.
//////////////////////////////////////////////////////////////////////

class CVC6ConfigurationHolder : public CDSConfigurationHolder
{
public:
   CVC6ConfigurationHolder();
   virtual ~CVC6ConfigurationHolder();

   ParseStatus             ParseIfElseBlock( CStream & p_roStream );
};

//////////////////////////////////////////////////////////////////////
// CVC6File - Represents one source file.
//            Stores the compiler settings for per-file configuration changes,
//            and can read version 6 "# Begin Source" sections.
//////////////////////////////////////////////////////////////////////

class CVC6File : public CDSFile
{
public:
   CVC6File();
   virtual ~CVC6File();
   
   ParseStatus             ReadProject( const TCHAR * p_pszProjectDir,
                                        CStream & p_roStream );
};

//////////////////////////////////////////////////////////////////////
// CVC6Project - Represents one project.
//               Stores the list of files and configurations,
//               and can read version 6 project files.
//////////////////////////////////////////////////////////////////////

class CVC6Project : public CDSProject
{
public:
   CVC6Project();
   virtual ~CVC6Project();
   
   virtual ParseStatus     ReadProject( const TCHAR * p_pszPath );
};

//////////////////////////////////////////////////////////////////////
// CVC6Workspace - Represents one workspace.
//                 Stores the list of projects,
//                 and can read version 6 workspaces.
//////////////////////////////////////////////////////////////////////

class CVC6Workspace : public CDSWorkspace
{
public:
   CVC6Workspace();
   virtual ~CVC6Workspace();
   
   virtual ParseStatus     ReadOneProject( const TCHAR * p_pszProjectPath );

protected:
   virtual ParseStatus     ParseLine( TCHAR * p_pszLine );

   static bool             s_bHaveStandardIncludes;
};

#endif // _VC_6_OBJECTS_H_DEFINED_

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
Software Developer (Senior)
United States United States
I like to program, I like to sail.

Comments and Discussions