for wxWindows documentation from C++ headers git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@1347 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
		
			
				
	
	
		
			157 lines
		
	
	
		
			4.2 KiB
		
	
	
	
		
			C++
		
	
	
	
	
	
			
		
		
	
	
			157 lines
		
	
	
		
			4.2 KiB
		
	
	
	
		
			C++
		
	
	
	
	
	
| /////////////////////////////////////////////////////////////////////////////
 | |
| // Name:        No names yet.
 | |
| // Purpose:     Contrib. demo
 | |
| // Author:      Aleksandras Gluchovas
 | |
| // Modified by:
 | |
| // Created:     22/09/98
 | |
| // RCS-ID:      $Id$
 | |
| // Copyright:   (c) Aleskandars Gluchovas
 | |
| // Licence:   	wxWindows licence
 | |
| /////////////////////////////////////////////////////////////////////////////
 | |
| 
 | |
| #ifndef __DOCRIPPER_G__
 | |
| #define __DOCRIPPER_G__
 | |
| 
 | |
| #include "scriptbinder.h"
 | |
| #include "srcparser.h"
 | |
| #include "sourcepainter.h"
 | |
| 
 | |
| #if defined( wxUSE_TEMPLATE_STL )
 | |
| 		
 | |
| 	#include <vector>
 | |
| 
 | |
| 	typedef vector<ScriptTemplate*> STemplateListT;
 | |
| 
 | |
| #else
 | |
| 
 | |
| 	#include "wxstlvec.h"
 | |
| 
 | |
| 	typedef ScriptTemplate* ScriptTemplatePtrT; 
 | |
| 	typedef WXSTL_VECTOR_SHALLOW_COPY(ScriptTemplatePtrT) STemplateListT;
 | |
| 
 | |
| #endif
 | |
| 
 | |
| 
 | |
| // specific DocGenerator class for "Ripper", 
 | |
| // also acts as source code visitor
 | |
| 
 | |
| class RipperDocGen : public DocGeneratorBase, public spVisitor
 | |
| {
 | |
| protected:
 | |
| 	// templates for various sections
 | |
| 	ScriptTemplate mTopTempl;
 | |
| 	ScriptTemplate mContentIdxTempl;
 | |
| 	ScriptTemplate mSuperContentTempl;
 | |
| 	ScriptTemplate mSubContentTempl;
 | |
| 	ScriptTemplate mOutLineTempl;
 | |
| 	ScriptTemplate mOutLine1Templ;
 | |
| 
 | |
| 	// template used for corss-references
 | |
| 	ScriptTemplate mRefTempl;
 | |
| 
 | |
| 	// template used to show not-existing sections
 | |
| 	ScriptTemplate mDeadRefTempl;
 | |
| 
 | |
| 	// template collection for generation of class-tree
 | |
| 	STemplateListT mTreeTemplates;
 | |
| 
 | |
| 	// pointers to all major index sections
 | |
| 	ScriptSection* mpTopIdx;
 | |
| 	ScriptSection* mpClassIdx;
 | |
| 	ScriptSection* mpEnumIdx;
 | |
| 	ScriptSection* mpTypeDefIdx;
 | |
| 	ScriptSection* mpMacroIdx;
 | |
| 	ScriptSection* mpGlobalVarsIdx;
 | |
| 	ScriptSection* mpGlobalFuncIdx;
 | |
| 	ScriptSection* mpConstIdx;
 | |
| 
 | |
| 	// parser set up from user-code for sepcific language
 | |
| 	SourceParserBase* mpParser;
 | |
| 
 | |
| 	// class section, which is currently being
 | |
| 	// assembled
 | |
| 	ScriptSection*    mpCurClassSect;
 | |
| 	
 | |
| 	// source syntax heighlighter object
 | |
| 	SourcePainter  mSrcPainter;
 | |
| 
 | |
| 	// context, to which all file contexts
 | |
| 	// are assembled
 | |
| 	spContext*     mpFileBinderCtx;
 | |
| 
 | |
| 	// script tags set up from usesr code
 | |
| 	MarkupTagsT    mTags;
 | |
| 
 | |
| protected:
 | |
| 	// helpers
 | |
| 	void AppendComments( spContext& fromContext, string& str );
 | |
| 
 | |
| 	void AppendMulitilineStr( string& st, string& mlStr );
 | |
| 
 | |
| 	void AppendHighlightedSource( string& st, string source );
 | |
| 
 | |
| 	// returns TRUE, if no comments found in the context,
 | |
| 	// plus, creates dummy(empty) section, and puts a 
 | |
| 	// reference woth "dead-link" template to it in the 
 | |
| 	// given index-section "toSect"
 | |
| 
 | |
| 	bool CheckIfUncommented( spContext& ctx, ScriptSection& toSect );
 | |
| 
 | |
| 	// checks if context has any comments, then returns
 | |
| 	// template of normal reference, otherwise of dead reference
 | |
| 
 | |
| 	ScriptTemplate* GetRefTemplFor( spContext& ctx );
 | |
| 
 | |
| 	// adds "someClass::" perfix to the context name,
 | |
| 	// if it's not in the file scope (i.e. if it's not global)
 | |
| 
 | |
| 	string GetScopedName( spContext& ofCtx );
 | |
| 
 | |
| 	// adds section to currently assembled class section
 | |
| 	// and places references to it from "public", "protected"
 | |
| 	// or "private" indexing-subsections of the class, depending
 | |
| 	// on the visibility of the context
 | |
| 
 | |
| 	void AddToCurrentClass( ScriptSection* pSection, spContext& ctx, 
 | |
| 							const char* subSectionName );
 | |
| 
 | |
| 	// called, after all files are processed, to
 | |
| 	// resolve possible super/derived class relations,
 | |
| 	// and put cross references to them - where resolution was
 | |
| 	// successful
 | |
| 	void LinkSuperClassRefs();
 | |
| 
 | |
| 	// implementations of "visiting procedures", declared in spVisitor
 | |
| 
 | |
| 	virtual void VisitClass( spClass& cl );
 | |
| 	virtual void VisitEnumeration( spEnumeration& en );
 | |
| 	virtual void VisitTypeDef( spTypeDef& td );
 | |
| 	virtual void VisitPreprocessorLine( spPreprocessorLine& pd );
 | |
| 	virtual void VisitAttribute( spAttribute& attr );
 | |
| 	virtual void VisitOperation( spOperation& op );
 | |
| 
 | |
| 	// overriden member of DocGernatorBase
 | |
| 
 | |
| 	virtual bool OnSaveDocument( ScriptStream& stm );
 | |
| 
 | |
| 	virtual ScriptSection* GetTopSection() 
 | |
| 		{ return mpTopIdx; }
 | |
| 
 | |
| public:
 | |
| 	RipperDocGen();
 | |
| 	~RipperDocGen();
 | |
| 
 | |
| 	// should be called onece to set user-code provided,
 | |
| 	// parser for specific source code language
 | |
| 	// (NOTE:: it's the user-code's responsibility to
 | |
| 	//  relseas memory of pParser)
 | |
| 
 | |
| 	void Init( SourceParserBase* pParser );
 | |
| 	
 | |
| 	// should be called on each file
 | |
| 	
 | |
| 	void ProcessFile( const char* sourceFile );
 | |
| };
 | |
| 
 | |
| 
 | |
| #endif |