Define method | CodeGuru

Define method

One of the very boring things when hacking a little function directly into the Sourcefile is to copy its definition to the Headerfile. Here is a quick Solution: Put the Cursor in the Line where the Function starts (for Example : void foo( int x) ). Call the Makro ‘DefineMethod’. It searches for the header […]

Written By
CodeGuru Staff
CodeGuru Staff
Aug 1, 1998
1 minute read
CodeGuru content and product recommendations are editorially independent. We may make money when you click on links to our partners. Learn More

One of the very boring things when hacking a little function directly into
the Sourcefile is to copy its definition to the Headerfile.

Here is a quick Solution:

Put the Cursor in the Line where the Function starts (for Example : void
foo( int x) ). Call the Makro ‘DefineMethod’. It searches for the header file,
and then for the beginnig of the public, protected and private blocks. After that
it ask you in which block your function is defined. If there is no block the macro
creates one.

It uses the ‘ToggleHandCPP’ macro from Ian Southwell
(link here) !

‘
‘MTMacro.dsmWritten by M.Taupitz
‘
‘——————————————————————————
‘FILE DESCRIPTION: copys the definition from the CPP to the header.
‘——————————————————————————
Sub DefineMethod()DESCRIPTION: Copy the Definition into the Header-File
	strHpt = ActiveDocument.FullName
	if right(strHpt,3) = "CPP" Or right (strHpt,3) = "cpp" Then
		ActiveDocument.Selection.SelectLine
		strText = ActiveDocument.Selection.Text
		if (Instr(strText, "::" ) = 0) Then
			MsgBox("Line not valid !!")
			Exit Sub
		End If
		pos = Instr(strText, "::")
		strName = Right(strText, (Len(strText)(pos+1)))
		strClass = Left(strText,pos1)
		while (instr(strClass, " ") > 0)
			pos = instr(strClass, " ")
			strTyp = strTyp & Left(strClass, pos)
			strClass = Right(strClass, Len(strClass)(pos) )
		wend
		strName = strTyp & "	" & Left(strName,Len(strName)-2 )(without CRLF also -2)
		iCou = InStr(ActiveDocument.Selection.Text,"//")
		if (iCou > 0) Then
			strName = strName & Trim( Left(strName, iCou1))
		End If
		while (instr(strName, ")" ) = 0 )
			ActiveDocument.Selection.StartOfLine
			ActiveDocument.Selection.LineDown dsMove
			ActiveDocument.Selection.StartOfLine dsExtend
			ActiveDocument.Selection.EndOfLine dsExtend
			while Left(strName,1) = "	" Or Left(strName,1) = " "
				strName = Right(strName, Len(strName) -1)
			Wend
			iCou = InStr(ActiveDocument.Selection.Text,"//")
			if (iCou = 0)Then
				strName = strName & Trim(ActiveDocument.Selection.Text)
			Else
				strName = strName & Trim( Left(ActiveDocument.Selection.Text, iCou1))
			End Ifkill the Tabs
			tabCou = InStr(strName, vbTab)
			while tabCou > 0
				strName = (Left(strName, tabCou-1)) & (Right(strName, Len(strName)-tabCou ) )
				tabCou = InStr(strName, vbTab)
			WendtabCou
		Wend
		strName = strName & ";" & vbCrLf
		ToggleHandCPP
		ActiveDocument.Selection.SelectAll
		strHead = ActiveDocument.Selection.Text
		if (instr(strHead,strClass)  = 0) Then
			MsgBox(" Can’t find class " & strClass & " !!")
			ToggleHandCPP
			Exit Sub
		End If
		pos = instr(strHead,strClass)
		linePublic = 0
		linePrivate = 0
		lineProtected = 0
		ActiveDocument.Selection.EndOfDocument
		lineBottom = ActiveDocument.Selection.CurrentLine
		ActiveDocument.Selection.StartOfDocument
		ActiveDocument.Selection.StartOfLine
		ActiveDocument.Selection.SelectLine
		strLine = ActiveDocument.Selection.Text
		while (instr(strLine, "private:" ) = 0  And ActiveDocument.Selection.CurrentLine <> lineBottom)
			ActiveDocument.Selection.StartOfLine
			ActiveDocument.Selection.LineDown dsMove
			ActiveDocument.Selection.SelectLine
			strLine = ActiveDocument.Selection.Text
		Wend
		if (ActiveDocument.Selection.CurrentLine < lineBottom) Then
			linePrivate = ActiveDocument.Selection.CurrentLine
		else
			linePrivate = 0
		end if
		ActiveDocument.Selection.StartOfDocument
		ActiveDocument.Selection.SelectLine
		strLine = ActiveDocument.Selection.Text
		while (instr(strLine, "protected:" ) = 0 And ActiveDocument.Selection.CurrentLine <> lineBottom)
			ActiveDocument.Selection.StartOfLine
			ActiveDocument.Selection.LineDown dsMove
			ActiveDocument.Selection.SelectLine
			strLine = ActiveDocument.Selection.Text
		Wend
		if (ActiveDocument.Selection.CurrentLine < lineBottom) Then
			lineProtected = ActiveDocument.Selection.CurrentLine
		else
			lineProtected = 0
		end if
		ActiveDocument.Selection.StartOfDocument
		ActiveDocument.Selection.SelectLine
		strLine = ActiveDocument.Selection.Text
		while (instr(strLine, "public:" ) = 0 And ActiveDocument.Selection.CurrentLine <> lineBottom)
			ActiveDocument.Selection.StartOfLine
			ActiveDocument.Selection.LineDown dsMove
			ActiveDocument.Selection.SelectLine
			strLine = ActiveDocument.Selection.Text
		Wend
		if (ActiveDocument.Selection.CurrentLine < lineBottom) Then
			linePublic = ActiveDocument.Selection.CurrentLine
		else
			linePublic = 0
		end if
		ActiveDocument.Selection.StartOfDocument
		ActiveDocument.Selection.SelectLine
		strLine = ActiveDocument.Selection.Text
		while (instr(strLine, "{" ) = 0 And ActiveDocument.Selection.CurrentLine <> lineBottom)
			ActiveDocument.Selection.StartOfLine
			ActiveDocument.Selection.LineDown dsMove
			ActiveDocument.Selection.SelectLine
			strLine = ActiveDocument.Selection.Text
		Wend
		if (ActiveDocument.Selection.CurrentLine < lineBottom) Then
			lineStart = ActiveDocument.Selection.CurrentLine
		else
			lineStart = 0
		end if
		bAnswer = MsgBox("Copy the definition as –public-(YES), –protected-(NO) or –private-(CANCEL) ?", vbYesNoCancel)
		Replace strName, vbCrLf, " "
		Replace strName, vbCr, " "
		Replace strName, vbLf, " "
		If bAnswer = vbYes Then
			if linePublic = 0 Then
				ActiveDocument.Selection.GoToLine lineStart+1, dsSelect
				ActiveDocument.Selection = ActiveDocument.Selection & "public:" & vbCrLf & vbTab & strName
			Else
				ActiveDocument.Selection.GoToLine linePublic+1, dsSelect
				ActiveDocument.Selection = ActiveDocument.Selection & vbTab & strName
			End If
		End If
		If bAnswer = vbNo Then
			if lineProtected = 0 Then
				ActiveDocument.Selection.GoToLine lineStart+1, dsSelect
				ActiveDocument.Selection =  ActiveDocument.Selection & "protected:" & vbCrLf & vbTab & strName
			Else
				ActiveDocument.Selection.GoToLine lineProtected+1, dsSelect
				ActiveDocument.Selection = ActiveDocument.Selection & vbTab & strName
			End If
		End If
		If bAnswer = vbCancel Then
			if linePrivate = 0 Then
				ActiveDocument.Selection.GoToLine lineStart+1, dsSelect
				ActiveDocument.Selection = ActiveDocument.Selection & "private:" & vbCrLf & vbTab & strName
			Else
				ActiveDocument.Selection.GoToLine linePrivate+1, dsSelect
				ActiveDocument.Selection = ActiveDocument.Selection & vbTab & strName
			End If
		End If
		ToggleHandCPP
	End Ifright = "CPP"
End Sub
CodeGuru Logo

CodeGuru covers topics related to Microsoft-related software development, mobile development, database management, and web application programming. In addition to tutorials and how-tos that teach programmers how to code in Microsoft-related languages and frameworks like C# and .Net, we also publish articles on software development tools, the latest in developer news, and advice for project managers. Cloud services such as Microsoft Azure and database options including SQL Server and MSSQL are also frequently covered.

Property of TechnologyAdvice. © 2026 TechnologyAdvice. All Rights Reserved

Advertiser Disclosure: Some of the products that appear on this site are from companies from which TechnologyAdvice receives compensation. This compensation may impact how and where products appear on this site including, for example, the order in which they appear. TechnologyAdvice does not include all companies or all types of products available in the marketplace.