Index: sakura_core/CDlgFuncList.cpp
===================================================================
--- sakura_core/CDlgFuncList.cpp	(revision 1011)
+++ sakura_core/CDlgFuncList.cpp	(working copy)
@@ -100,6 +100,7 @@
 }
 
 CDlgFuncList::CDlgFuncList()
+	: m_nCurLineCRLF( 0 )
 {
 	m_pcFuncInfoArr = NULL;		/* ŠÖ�”�î•ñ”z—ñ */
 	m_nCurLine = 0;				/* Œ»�Ý�s */
@@ -173,6 +174,17 @@
 	hwndList = ::GetDlgItem( m_hWnd, IDC_LIST1 );
 	hwndTree = ::GetDlgItem( m_hWnd, IDC_TREE1 );
 
+	//	From Here Oct. 29, 2006 genta
+	CLayoutMgr* pcLayoutMgr = &(((CEditView*)m_lParam)->m_pcEditDoc->m_cLayoutMgr);
+	{
+		//	Œ»�Ý‚Ì˜_—��s‚É‘Î‰ž‚·‚é•¨—��s‚ðŽæ“¾(Œ»�ÝˆÊ’u”»’è‚ÉŽg‚¤)
+		int phx, phy;
+		
+		pcLayoutMgr->CaretPos_Log2Phys( 0, m_nCurLine - 1, &phx, &phy );
+		m_nCurLineCRLF = phy + 1;	// 1�`
+	}
+	//	To Here Oct. 29, 2006 genta
+
 	//2002.02.08 hor ‰B‚µ‚Æ‚¢‚ÄƒAƒCƒeƒ€�í�œ�¨‚ ‚Æ‚Å•\Ž¦
 	::ShowWindow( hwndList, SW_HIDE );
 	::ShowWindow( hwndTree, SW_HIDE );
@@ -251,7 +263,7 @@
 		// Jul 10, 2003  little YOSHI   �ˆ—�‚ª’·‚­‚È‚Á‚½‚Ì‚Å“Æ—§
 		m_nViewType = 0;
 		/* ƒŠƒXƒgƒrƒ…�[ƒRƒ“ƒgƒ��[ƒ‹‚Ì�‰Šú‰»�FVisual Basic ƒAƒEƒgƒ‰ƒCƒ“ */
-		SetListVB();
+		SetListVB( pcLayoutMgr );
 		::SetWindowText( m_hWnd, "Visual Basic ƒAƒEƒgƒ‰ƒCƒ“" );
 	}else{
 		m_nViewType = 0;
@@ -296,16 +308,16 @@
 		for( i = 0; i < m_pcFuncInfoArr->GetNum(); ++i ){
 			pcFuncInfo = m_pcFuncInfoArr->GetAt( i );
 			if( !bSelected ){
-				if( i == 0 && m_nCurLine < pcFuncInfo->m_nFuncLineLAYOUT ){
+				if( i == 0 && m_nCurLineCRLF < pcFuncInfo->m_nFuncLineCRLF ){
 					bSelected = TRUE;
 					nSelectedLine = i;
 				}else
-				if( i > 0 && nFuncLineOld <= m_nCurLine && m_nCurLine < pcFuncInfo->m_nFuncLineLAYOUT ){
+				if( i > 0 && nFuncLineOld <= m_nCurLineCRLF && m_nCurLineCRLF < pcFuncInfo->m_nFuncLineCRLF ){
 					bSelected = TRUE;
 					nSelectedLine = i - 1;
 				}
 			}
-			nFuncLineOld = pcFuncInfo->m_nFuncLineLAYOUT;
+			nFuncLineOld = pcFuncInfo->m_nFuncLineCRLF;
 		}
 		if( 0 < m_pcFuncInfoArr->GetNum() && !bSelected ){
 			bSelected = TRUE;
@@ -320,7 +332,11 @@
 			if(m_bLineNumIsCRLF ){
 				wsprintf( szText, "%d", pcFuncInfo->m_nFuncLineCRLF );
 			}else{
-				wsprintf( szText, "%d", pcFuncInfo->m_nFuncLineLAYOUT );
+				//	2006.10.29 genta •¨—��s”Ô�†‚©‚ç‚»‚Ì“s“x•ÏŠ·
+				//	Œ»�Ý‚Ì•¨—��s‚É‘Î‰ž‚·‚é˜_—��s‚ðŽæ“¾
+				int layx, layy;
+				pcLayoutMgr->CaretPos_Phys2Log( 0, pcFuncInfo->m_nFuncLineCRLF - 1, &layx, &layy );
+				wsprintf( szText, "%d", layy + 1 );
 			}
 			item.mask = LVIF_TEXT | LVIF_PARAM;
 			item.pszText = szText;
@@ -654,18 +670,18 @@
 		}
 		/* Œ»�ÝƒJ�[ƒ\ƒ‹ˆÊ’u‚Ìƒ�ƒ\ƒbƒh‚©‚Ç‚¤‚©’²‚×‚é */
 		if( !bSelected ){
-			if( i == 0 && m_nCurLine < pcFuncInfo->m_nFuncLineLAYOUT ){
+			if( i == 0 && m_nCurLineCRLF < pcFuncInfo->m_nFuncLineCRLF ){
 				bSelected = TRUE;
 				nSelectedLine = i;
 				htiSelected = htiItem;
 			}else
-			if( i > 0 && nFuncLineOld <= m_nCurLine && m_nCurLine < pcFuncInfo->m_nFuncLineLAYOUT ){
+			if( i > 0 && nFuncLineOld <= m_nCurLineCRLF && m_nCurLineCRLF < pcFuncInfo->m_nFuncLineCRLF ){
 				bSelected = TRUE;
 				nSelectedLine = i - 1;
 				htiSelected = htiItemOld;
 			}
 		}
-		nFuncLineOld = pcFuncInfo->m_nFuncLineLAYOUT;
+		nFuncLineOld = pcFuncInfo->m_nFuncLineCRLF;
 
 		if( NULL != pClassName ){
 			delete [] pClassName;
@@ -952,18 +968,18 @@
 
 		/* Œ»�ÝƒJ�[ƒ\ƒ‹ˆÊ’u‚Ìƒ�ƒ\ƒbƒh‚©‚Ç‚¤‚©’²‚×‚é */
 		if( !bSelected ){
-			if( i == 0 && m_nCurLine < pcFuncInfo->m_nFuncLineLAYOUT ){
+			if( i == 0 && m_nCurLineCRLF < pcFuncInfo->m_nFuncLineCRLF ){
 				bSelected = TRUE;
 				nSelectedLine = i;
 				htiSelected = htiItem;
 			}else
-			if( i > 0 && nFuncLineOld <= m_nCurLine && m_nCurLine < pcFuncInfo->m_nFuncLineLAYOUT ){
+			if( i > 0 && nFuncLineOld <= m_nCurLineCRLF && m_nCurLineCRLF < pcFuncInfo->m_nFuncLineCRLF ){
 				bSelected = TRUE;
 				nSelectedLine = i - 1;
 				htiSelected = htiItemOld;
 			}
 		}
-		nFuncLineOld = pcFuncInfo->m_nFuncLineLAYOUT;
+		nFuncLineOld = pcFuncInfo->m_nFuncLineCRLF;
 		htiItemOld = htiItem;
 		//	Jan. 04, 2001 genta
 		//	delete‚Í‚»‚Ì“s“x�s‚¤‚Ì‚Å‚±‚±‚Å‚Í•s—v
@@ -995,7 +1011,7 @@
 
   @date Jul 10, 2003  little YOSHI
 */
-void CDlgFuncList::SetListVB (void)
+void CDlgFuncList::SetListVB ( CLayoutMgr* pcLayoutMgr )
 {
 	int				i;
 	char			szText[2048], szType[128], szOption[256];
@@ -1016,16 +1032,16 @@
 	for( i = 0; i < m_pcFuncInfoArr->GetNum(); ++i ){
 		pcFuncInfo = m_pcFuncInfoArr->GetAt( i );
 		if( !bSelected ){
-			if( i == 0 && m_nCurLine < pcFuncInfo->m_nFuncLineLAYOUT ){
+			if( i == 0 && m_nCurLineCRLF < pcFuncInfo->m_nFuncLineCRLF ){
 				bSelected = TRUE;
 				nSelectedLine = i;
 			}else
-			if( i > 0 && nFuncLineOld <= m_nCurLine && m_nCurLine < pcFuncInfo->m_nFuncLineLAYOUT ){
+			if( i > 0 && nFuncLineOld <= m_nCurLineCRLF && m_nCurLineCRLF < pcFuncInfo->m_nFuncLineCRLF ){
 				bSelected = TRUE;
 				nSelectedLine = i - 1;
 			}
 		}
-		nFuncLineOld = pcFuncInfo->m_nFuncLineLAYOUT;
+		nFuncLineOld = pcFuncInfo->m_nFuncLineCRLF;
 	}
 	if( 0 < m_pcFuncInfoArr->GetNum() && !bSelected ){
 		bSelected = TRUE;
@@ -1040,7 +1056,11 @@
 		if(m_bLineNumIsCRLF ){
 			wsprintf( szText, "%d", pcFuncInfo->m_nFuncLineCRLF );
 		}else{
-			wsprintf( szText, "%d", pcFuncInfo->m_nFuncLineLAYOUT );
+			//	2006.10.29 genta •¨—��s”Ô�†‚©‚ç‚»‚Ì“s“x•ÏŠ·
+			//	Œ»�Ý‚Ì•¨—��s‚É‘Î‰ž‚·‚é˜_—��s‚ðŽæ“¾
+			int layx, layy;
+			pcLayoutMgr->CaretPos_Phys2Log( 0, pcFuncInfo->m_nFuncLineCRLF - 1, &layx, &layy );
+			wsprintf( szText, "%d", layy + 1 );
 		}
 		item.mask = LVIF_TEXT | LVIF_PARAM;
 		item.pszText = szText;
@@ -1274,7 +1294,7 @@
 
 		/*	pcFuncInfo‚É“o˜^‚³‚ê‚Ä‚¢‚é�s�”‚ðŠm”F‚µ‚Ä�A‘I‘ð‚·‚éƒAƒCƒeƒ€‚ð�l‚¦‚é
 		*/
-		if ( pcFuncInfo->m_nFuncLineLAYOUT <= m_nCurLine ){
+		if ( pcFuncInfo->m_nFuncLineCRLF <= m_nCurLineCRLF ){
 			hItemSelected = hItem;
 		}
 
@@ -1378,22 +1398,22 @@
 		m_cmemClipText.AppendSz( (const char *)"\r\n" );	/* ƒNƒŠƒbƒvƒ{�[ƒhƒRƒs�[—pƒeƒLƒXƒg */
 
 		/* Œ»�ÝƒJ�[ƒ\ƒ‹ˆÊ’u‚Ìƒ�ƒ\ƒbƒh‚©‚Ç‚¤‚©’²‚×‚é */
-		if( nBgn == 0 && m_nCurLine < pcFuncInfo->m_nFuncLineLAYOUT ){
+		if( nBgn == 0 && m_nCurLineCRLF < pcFuncInfo->m_nFuncLineCRLF ){
 			/* Œ»�ÝƒJ�[ƒ\ƒ‹ˆÊ’u‚Ìƒ�ƒ\ƒbƒh‚ð‘I‘ð�ó‘Ô‚É‚·‚é */
 //			TreeView_SelectItem( hwndTree, htiItem );
 			*phtiItemSelected = htiItem;
 		}else{
 			if( nBgn + 1 < m_pcFuncInfoArr->GetNum() ){
 				pcFuncInfoNext = m_pcFuncInfoArr->GetAt( nBgn + 1 );
-				if( m_nCurLine >= pcFuncInfo->m_nFuncLineLAYOUT &&
-					m_nCurLine < pcFuncInfoNext->m_nFuncLineLAYOUT
+				if( m_nCurLineCRLF >= pcFuncInfo->m_nFuncLineCRLF &&
+					m_nCurLineCRLF < pcFuncInfoNext->m_nFuncLineCRLF
 				){
 					/* Œ»�ÝƒJ�[ƒ\ƒ‹ˆÊ’u‚Ìƒ�ƒ\ƒbƒh‚ð‘I‘ð�ó‘Ô‚É‚·‚é */
 //					TreeView_SelectItem( hwndTree, htiItem );
 					*phtiItemSelected = htiItem;
 				}
 			}else{
-				if( m_nCurLine >= pcFuncInfo->m_nFuncLineLAYOUT ){
+				if( m_nCurLineCRLF >= pcFuncInfo->m_nFuncLineCRLF ){
 					/* Œ»�ÝƒJ�[ƒ\ƒ‹ˆÊ’u‚Ìƒ�ƒ\ƒbƒh‚ð‘I‘ð�ó‘Ô‚É‚·‚é */
 //					TreeView_SelectItem( hwndTree, htiItem );
 					*phtiItemSelected = htiItem;
Index: sakura_core/CDlgFuncList.h
===================================================================
--- sakura_core/CDlgFuncList.h	(revision 1011)
+++ sakura_core/CDlgFuncList.h	(working copy)
@@ -25,6 +25,7 @@
 #include <windows.h>
 #include "CDialog.h"
 class CFuncInfoArr; // 2002/2/10 aroka
+class CLayoutMgr;	//	2006.10.29 genta
 
 
 //!	ƒAƒEƒgƒ‰ƒCƒ“‰ð�Íƒ_ƒCƒAƒ�ƒOƒ{ƒbƒNƒX
@@ -47,7 +48,8 @@
 	void Redraw( int nOutLineType, CFuncInfoArr*, int nCurLine );
 
 	CFuncInfoArr*	m_pcFuncInfoArr;	/* ŠÖ�”�î•ñ”z—ñ */
-	int				m_nCurLine;			/* Œ»�Ý�s */
+	int				m_nCurLine;			/*!< Œ»�Ý�s (ƒŒƒCƒAƒEƒg�s)*/
+	int				m_nCurLineCRLF;		/*!< Œ»�Ý�s(•¨—��s: 1~) 2006.10.29 genta */
 	int				m_nSortCol;			/* ƒ\�[ƒg‚·‚é—ñ”Ô�† */
 	int				m_nListType;		/* ˆê——‚ÌŽí—Þ */
 	CMemory			m_cmemClipText;		/* ƒNƒŠƒbƒvƒ{�[ƒhƒRƒs�[—pƒeƒLƒXƒg */
@@ -69,7 +71,7 @@
 	void SetTreeCpp( HWND );	/* ƒcƒŠ�[ƒRƒ“ƒgƒ��[ƒ‹‚Ì�‰Šú‰»�FC++ƒ�ƒ\ƒbƒhƒcƒŠ�[ */
 	void SetTreeJava( HWND, BOOL );	/* ƒcƒŠ�[ƒRƒ“ƒgƒ��[ƒ‹‚Ì�‰Šú‰»�FJavaƒ�ƒ\ƒbƒhƒcƒŠ�[ */
 	void SetTree();					/* ƒcƒŠ�[ƒRƒ“ƒgƒ��[ƒ‹‚Ì�‰Šú‰»�F”Ä—p•i */
-	void SetListVB( void );			/* ƒŠƒXƒgƒrƒ…�[ƒRƒ“ƒgƒ��[ƒ‹‚Ì�‰Šú‰»�FVisualBasic */		// Jul 10, 2003  little YOSHI
+	void SetListVB( CLayoutMgr* pcLayoutMgr );			/* ƒŠƒXƒgƒrƒ…�[ƒRƒ“ƒgƒ��[ƒ‹‚Ì�‰Šú‰»�FVisualBasic */		// Jul 10, 2003  little YOSHI
 
 	// 2002/11/1 frozen 
 	void SortTree(HWND hWndTree,HTREEITEM htiParent);//!< ƒcƒŠ�[ƒrƒ…�[‚Ì�€–Ú‚ðƒ\�[ƒg‚·‚é�iƒ\�[ƒgŠî�€‚Ím_nSortType‚ðŽg—p�j
Index: sakura_core/CDlgJump.cpp
===================================================================
--- sakura_core/CDlgJump.cpp	(revision 1011)
+++ sakura_core/CDlgJump.cpp	(working copy)
@@ -202,7 +202,9 @@
 void CDlgJump::SetData( void )
 {
 	CEditDoc*		pCEditDoc = (CEditDoc*)m_lParam;
-	CFuncInfoArr	cFuncInfoArr;
+	CFuncInfoArr	cFuncInfoArr( pCEditDoc );
+	// 2006.10.30 genta �s”Ô�†•ÏŠ·—p
+	CLayoutMgr*		pcLayoutMgr = &(pCEditDoc->m_cLayoutMgr);
 	int				i;
 	HWND			hwndCtrl;
 	char			szText[1024];
@@ -232,58 +234,56 @@
 	nWorkLine = -1;
 	nIndex = 0;
 	nPLSQLBlockNum = 0;
+	//	2006.10.30 genta �s�”‚Ì�”‚¦•û‚ÍƒAƒEƒgƒ‰ƒCƒ“‰ð�Í‚Ì�Ý’è’l‚ðŽg‚¤
+	bool bLineNumCRLF = pCEditDoc->GetDocumentAttribute().m_bLineNumIsCRLF ? true : false;
 	for( i = 0; i < cFuncInfoArr.GetNum(); ++i ){
-		if( 31 == cFuncInfoArr.GetAt( i )->m_nInfo ||
-			41 == cFuncInfoArr.GetAt( i )->m_nInfo ){
+		//	2006.10.30 genta FuncInfo‚ÌŽQ�Æ‚ðˆêŽž•Ï�”‚Å
+		CFuncInfo *pFuncInfo = cFuncInfoArr.GetAt( i );
+		if( 31 == pFuncInfo->m_nInfo ||
+			41 == pFuncInfo->m_nInfo ){
 //			MYTRACE( "cFuncInfoArr.GetAt( i )->m_cmemFuncName=%s(%d)\n",
 //				(char*)(cFuncInfoArr.GetAt( i )->m_cmemFuncName.GetPtr() ),
 //				cFuncInfoArr.GetAt( i )->m_nFuncLineCRLF
 //			);
 		}
-		if( 31 == cFuncInfoArr.GetAt( i )->m_nInfo ){
-//@@@ 2002.01.08 YAZAKI �Ý’è‚ð•Û‘¶‚·‚é‚½‚ß‚ÉShareData‚ÉˆÚ“®
-			if( m_pShareData->m_bLineNumIsCRLF ){	/* �s”Ô�†‚Ì•\Ž¦ FALSE=�Ü‚è•Ô‚µ’PˆÊ�^TRUE=‰ü�s’PˆÊ */
-				wsprintf( szText, "%d �s  %s  ƒpƒbƒP�[ƒWŽd—l•”",
-					cFuncInfoArr.GetAt( i )->m_nFuncLineCRLF,
-					cFuncInfoArr.GetAt( i )->m_cmemFuncName.GetPtr()
-				);
-			}else{
-				wsprintf( szText, "%d �s  %s  ƒpƒbƒP�[ƒWŽd—l•”",
-					cFuncInfoArr.GetAt( i )->m_nFuncLineLAYOUT,
-					cFuncInfoArr.GetAt( i )->m_cmemFuncName.GetPtr()
-				);
+		if( 31 == pFuncInfo->m_nInfo ){
+			//	2006.10.30 genta �s”Ô�†ŒvŽZ‚Æ�d•¡ƒR�[ƒh‚Ü‚Æ‚ß
+			//	�s”Ô�†•\Ž¦•û–@‚ÍƒAƒEƒgƒ‰ƒCƒ“‰ð�Í‚Ì�Ý’è’l‚ðŽg‚¤
+			int linenum;
+			if( bLineNumCRLF ){	/* �s”Ô�†‚Ì•\Ž¦ FALSE=�Ü‚è•Ô‚µ’PˆÊ�^TRUE=‰ü�s’PˆÊ */
+				linenum = pFuncInfo->m_nFuncLineCRLF;
 			}
+			else {
+				//	2006.10.29 genta •¨—��s”Ô�†‚©‚ç‚»‚Ì“s“x•ÏŠ·
+				//	Œ»�Ý‚Ì•¨—��s‚É‘Î‰ž‚·‚é˜_—��s‚ðŽæ“¾
+				int layx, layy;
+				pcLayoutMgr->CaretPos_Phys2Log( 0, pFuncInfo->m_nFuncLineCRLF - 1, &layx, &layy );
+				linenum =  layy + 1;
+			}
+			wsprintf( szText, "%d �s  %s  ƒpƒbƒP�[ƒWŽd—l•”", linenum,
+					pFuncInfo->m_cmemFuncName.GetPtr() );
 			nIndex = ::SendMessage( hwndCtrl, CB_ADDSTRING, 0, (LPARAM) (LPCTSTR)szText );
-//@@@ 2002.01.08 YAZAKI �Ý’è‚ð•Û‘¶‚·‚é‚½‚ß‚ÉShareData‚ÉˆÚ“®
-			if( m_pShareData->m_bLineNumIsCRLF ){	/* �s”Ô�†‚Ì•\Ž¦ FALSE=�Ü‚è•Ô‚µ’PˆÊ�^TRUE=‰ü�s’PˆÊ */
-				::SendMessage( hwndCtrl, CB_SETITEMDATA, (WPARAM)nIndex, (LPARAM) (DWORD)cFuncInfoArr.GetAt( i )->m_nFuncLineCRLF );
-			}else{
-				::SendMessage( hwndCtrl, CB_SETITEMDATA, (WPARAM)nIndex, (LPARAM) (DWORD)cFuncInfoArr.GetAt( i )->m_nFuncLineLAYOUT );
-			}
-			nPLSQLBlockNum++;
+			::SendMessage( hwndCtrl, CB_SETITEMDATA, (WPARAM)nIndex, (LPARAM) (DWORD)linenum );
+			++nPLSQLBlockNum;
 		}
-		if( 41 == cFuncInfoArr.GetAt( i )->m_nInfo ){
-//@@@ 2002.01.08 YAZAKI �Ý’è‚ð•Û‘¶‚·‚é‚½‚ß‚ÉShareData‚ÉˆÚ“®
-			if( m_pShareData->m_bLineNumIsCRLF ){	/* �s”Ô�†‚Ì•\Ž¦ FALSE=�Ü‚è•Ô‚µ’PˆÊ�^TRUE=‰ü�s’PˆÊ */
-				wsprintf( szText, "%d �s  %s  ƒpƒbƒP�[ƒW–{‘Ì•”",
-					cFuncInfoArr.GetAt( i )->m_nFuncLineCRLF,
-					cFuncInfoArr.GetAt( i )->m_cmemFuncName.GetPtr()
-				);
-			}else{
-				wsprintf( szText, "%d �s  %s  ƒpƒbƒP�[ƒW–{‘Ì•”",
-					cFuncInfoArr.GetAt( i )->m_nFuncLineLAYOUT,
-					cFuncInfoArr.GetAt( i )->m_cmemFuncName.GetPtr()
-				);
+		if( 41 == pFuncInfo->m_nInfo ){
+			//	2006.10.30 genta �s”Ô�†ŒvŽZ‚Æ�d•¡ƒR�[ƒh‚Ü‚Æ‚ß
+			//	�s”Ô�†•\Ž¦•û–@‚ÍƒAƒEƒgƒ‰ƒCƒ“‰ð�Í‚Ì•¨‚ðŽg‚¤
+			int linenum;
+			if( bLineNumCRLF ){	/* �s”Ô�†‚Ì•\Ž¦ FALSE=�Ü‚è•Ô‚µ’PˆÊ�^TRUE=‰ü�s’PˆÊ */
+				linenum = pFuncInfo->m_nFuncLineCRLF;
 			}
+			else {
+				//	2006.10.29 genta •¨—��s”Ô�†‚©‚ç‚»‚Ì“s“x•ÏŠ·
+				//	Œ»�Ý‚Ì•¨—��s‚É‘Î‰ž‚·‚é˜_—��s‚ðŽæ“¾
+				int layx, layy;
+				pcLayoutMgr->CaretPos_Phys2Log( 0, pFuncInfo->m_nFuncLineCRLF - 1, &layx, &layy );
+				linenum =  layy + 1;
+			}
+			wsprintf( szText, "%d �s  %s  ƒpƒbƒP�[ƒW–{‘Ì•”", linenum,
+					cFuncInfoArr.GetAt( i )->m_cmemFuncName.GetPtr() );
 			nIndexCurSel = nIndex = ::SendMessage( hwndCtrl, CB_ADDSTRING, 0, (LPARAM) (LPCTSTR)szText );
-//@@@ 2002.01.08 YAZAKI �Ý’è‚ð•Û‘¶‚·‚é‚½‚ß‚ÉShareData‚ÉˆÚ“®
-			if( m_pShareData->m_bLineNumIsCRLF ){	/* �s”Ô�†‚Ì•\Ž¦ FALSE=�Ü‚è•Ô‚µ’PˆÊ�^TRUE=‰ü�s’PˆÊ */
-				nWorkLine = cFuncInfoArr.GetAt( i )->m_nFuncLineCRLF;
-				::SendMessage( hwndCtrl, CB_SETITEMDATA, (WPARAM)nIndex, (LPARAM) (DWORD)cFuncInfoArr.GetAt( i )->m_nFuncLineCRLF );
-			}else{
-				nWorkLine = cFuncInfoArr.GetAt( i )->m_nFuncLineLAYOUT;
-				::SendMessage( hwndCtrl, CB_SETITEMDATA, (WPARAM)nIndex, (LPARAM) (DWORD)cFuncInfoArr.GetAt( i )->m_nFuncLineLAYOUT );
-			}
+			::SendMessage( hwndCtrl, CB_SETITEMDATA, (WPARAM)nIndex, (LPARAM) (DWORD)linenum );
 			++nPLSQLBlockNum;
 		}
 	}
Index: sakura_core/CDocLineMgr.cpp
===================================================================
--- sakura_core/CDocLineMgr.cpp	(revision 1011)
+++ sakura_core/CDocLineMgr.cpp	(working copy)
@@ -2505,5 +2505,33 @@
 
 }
 
+//--------------------------------------------------------
+//	Iterator for CDocLine
+//--------------------------------------------------------
+/*!
+	increment position ++ite
+*/
+CDocLineMgr::iterator CDocLineMgr::iterator::operator++()
+{
+	if( m_current == NULL ){
+		return *this;	//	end + 1 = end
+	}
 
+	m_current = m_current->m_pNext;
+	return *this;
+}
+
+/*!
+	increment position ite++
+*/
+CDocLineMgr::iterator CDocLineMgr::iterator::operator++(int)
+{
+	if( m_current == NULL ){
+		return *this;	//	end + 1 = end
+	}
+	iterator t( *this );
+	m_current = m_current->m_pNext;
+	return t;
+}
+
 /*[EOF]*/
Index: sakura_core/CDocLineMgr.h
===================================================================
--- sakura_core/CDocLineMgr.h	(revision 1011)
+++ sakura_core/CDocLineMgr.h	(working copy)
@@ -12,6 +12,7 @@
 	Copyright (C) 2001, hor, genta
 	Copyright (C) 2002, aroka, MIK, hor
 	Copyright (C) 2003, Moca, ryoji
+	Copyright (C) 2006, genta
 
 	This source code is designed for sakura editor.
 	Please contact the copyright holder to use this code for other purpose.
@@ -23,6 +24,7 @@
 #define _CDOCLINEMGR_H_
 
 #include <windows.h>
+#include <iterator>	// 2006.10.28 genta
 #include "global.h" // 2002/2/10 aroka
 #include "CEol.h" // 2002/2/10 aroka
 class CDocLine; // 2002/2/10 aroka
@@ -188,7 +190,7 @@
 	*/
 	CDocLine*	m_pDocLineTop;
 	CDocLine*	m_pDocLineBot;
-	CDocLine*	m_pDocLineCurrent;	/* �‡ƒAƒNƒZƒXŽž‚ÌŒ»�ÝˆÊ’u */
+	mutable CDocLine*	m_pDocLineCurrent;	/* �‡ƒAƒNƒZƒXŽž‚ÌŒ»�ÝˆÊ’u */
 	int			m_nLines;		/* ‘S�s�” */
 	int			m_nPrevReferLine;
 	CDocLine*	m_pCodePrevRefer;
@@ -200,8 +202,47 @@
 	*/
 protected:
 
+	//	Oct. 28, 2006 genta : iterator’Ç‰Á
+public:
+	/*!
+		CDocLineMgr‚Ì•ÛŽ�‚·‚éƒf�[ƒ^‚ðCDocLineMgr::m_pDocLineCurrent‚É
+		‰e‹¿‚ð—^‚¦‚é‚±‚Æ‚È‚­Œø—¦“I‚ÉƒXƒLƒƒƒ“‚·‚é�D
 
+		Žå‚Æ‚µ‚ÄƒAƒEƒgƒ‰ƒCƒ“‰ð�Í(‘S‚Ä‚Ìƒf�[ƒ^‚ð“Ç‚Þ)‚Å‚Ì—˜—p‚ð‘z’è�D
+		‚»‚Ì‚½‚ßunidirectional‚Æ‚µ‚Ä‚ ‚é�D(–ß‚é‚±‚Æ‚Í�o—ˆ‚È‚¢)
 
+		@note ƒf�[ƒ^‚ª•Ò�W‚³‚ê‚é‚Æ’l‚Í–³Œø‚Æ‚È‚é�D
+		–³Œø‚È’l‚É‘Î‚·‚é‘€�ìŒ‹‰Ê‚Í•Û�Ø‚³‚ê‚È‚¢�D
+		(•s�³‚ÈƒAƒhƒŒƒX‚ÉƒAƒNƒZƒX‚·‚é‰Â”\�«‚ª‚ ‚é)
+		
+		@date 2006.10.28 genta �V‹K�ì�¬
+		@author genta
+	*/
+	class iterator : public std::iterator<std::forward_iterator_tag, CDocLine>{
+	public:
+		//	operator
+		iterator operator++();
+		iterator operator++(int);
+		bool operator==(const iterator& rhs)
+			{ return m_current == rhs.m_current && m_pcDocLineMgr == rhs.m_pcDocLineMgr; }
+		bool operator!=(const iterator& rhs) { return ! ( *this == rhs ); }
+		
+		//	constructor
+		iterator ( CDocLineMgr* m, CDocLine* p ) :
+			m_pcDocLineMgr( m ), m_current( p ){}
+		iterator( const iterator& c )
+			: m_pcDocLineMgr( c.m_pcDocLineMgr ), m_current( c.m_current ){}
+
+	protected:
+		CDocLineMgr* m_pcDocLineMgr;
+		CDocLine*	 m_current;
+		
+	};
+
+	friend iterator;
+	iterator begin() { return iterator( this, GetDocLineTop() ); }
+	iterator end(){ return iterator( this, 0 ); }
+	iterator beginat(int l){ return iterator( this, GetLineInfo( l ) ); }
 };
 
 
Index: sakura_core/CEditDoc_FuncList1.cpp
===================================================================
--- sakura_core/CEditDoc_FuncList1.cpp	(revision 1011)
+++ sakura_core/CEditDoc_FuncList1.cpp	(working copy)
@@ -20,9 +20,9 @@
 #include <string.h>
 #include "global.h"
 
-#include "CEditDoc.h"
+//#include "CEditDoc.h"	// 2006.10.30 genta delete
 #include "CFuncInfoArr.h"
-#include "CDocLine.h"
+//#include "CDocLine.h"	// 2006.10.30 genta delete
 #include "charcode.h"
 
 //	Mar. 15, 2000 genta
@@ -246,6 +246,8 @@
 	return length;	//	Šî–{“I‚ÉƒvƒŠƒvƒ�ƒZƒbƒTŽw—ß‚Í–³Ž‹
 }
 
+namespace OutlineAnalyzer {
+
 /*!
 	@brief C/C++ŠÖ�”ƒŠƒXƒg�ì�¬
 
@@ -274,11 +276,10 @@
 	@param pcFuncInfoArr [out] ŠÖ�”ˆê——‚ð•Ô‚·‚½‚ß‚ÌƒNƒ‰ƒX�B
 	‚±‚±‚ÉŠÖ�”‚ÌƒŠƒXƒg‚ð“o˜^‚·‚é�B
 */
-void CEditDoc::MakeFuncList_C( CFuncInfoArr* pcFuncInfoArr ,bool bVisibleMemberFunc )
+void MakeFuncList_C( CFuncInfoArr* pcFuncInfoArr ,bool bVisibleMemberFunc )
 {
 	const char*	pLine;
 	int			nLineLen;
-	int			nLineCount;
 	int			i;
 
 	// 2002/10/27 frozen�@‚±‚±‚©‚ç
@@ -365,10 +366,12 @@
 	
 //	FuncNum = 0;
 //	bCppInitSkip = false;
-//	for( nLineCount = 0; nLineCount <  m_cLayoutMgr.GetLineCount(); ++nLineCount ){
-	for( nLineCount = 0; nLineCount <  m_cDocLineMgr.GetLineCount(); ++nLineCount ){
-//		pLine = m_cLayoutMgr.GetLineStr( nLineCount, &nLineLen );
-		pLine = m_cDocLineMgr.GetLineStr( nLineCount, &nLineLen );
+	//	2006.10.30 genta iterator—˜—p
+	CDocLineMgr::iterator endmark = pcFuncInfoArr->end_data();
+	for( CFuncInfoArr::CDocIterator it = pcFuncInfoArr->begin_data();
+			it != endmark; ++it ){
+		pLine = it.c_str();
+		nLineLen = it.length();
 
 		//	From Here Aug. 10, 2004 genta
 		//	ƒvƒŠƒvƒ�ƒZƒX�ˆ—�
@@ -599,7 +602,7 @@
 						if( nItemFuncId != 0 )
 						{
 							nMode2 = M2_NAMESPACE_SAVE;
-							nItemLine = nLineCount + 1;
+							nItemLine = it.count();
 							strcpy(szItemName,"–³–¼");
 						}
 					}
@@ -719,21 +722,8 @@
 									nNestPoint_class = nNestLevel_global;
 							}
 						}
-						/*
-						  ƒJ�[ƒ\ƒ‹ˆÊ’u•ÏŠ·
-						  •¨—�ˆÊ’u(�s“ª‚©‚ç‚ÌƒoƒCƒg�”�A�Ü‚è•Ô‚µ–³‚µ�sˆÊ’u)
-						  �¨
-						  ƒŒƒCƒAƒEƒgˆÊ’u(�s“ª‚©‚ç‚Ì•\Ž¦Œ…ˆÊ’u�A�Ü‚è•Ô‚µ‚ ‚è�sˆÊ’u)
-						*/
-						int		nPosX;
-						int		nPosY;
-						m_cLayoutMgr.CaretPos_Phys2Log(
-							0,
-							nItemLine - 1,
-							&nPosX,
-							&nPosY
-						);
-						pcFuncInfoArr->AppendData( nItemLine, nPosY + 1 , szNamespace, nItemFuncId);
+						//	2006.10.30 genta iterator—˜—p
+						pcFuncInfoArr->AppendData( nItemLine, szNamespace, nItemFuncId);
 						//	Jan. 30, 2005 genta M2_KR_FUNC ’Ç‰Á
 						if( nMode2 != M2_FUNC_NAME_END && nMode2 != M2_KR_FUNC )
 						{
@@ -784,7 +774,7 @@
 					//  2002/10/27 frozen ‚±‚±‚©‚ç
 //					if( nNestLevel == 0 && !bCppInitSkip ){
 //						strcpy( szFuncName, szWordPrev );
-//						nFuncLine = nLineCount + 1;
+//						nFuncLine = it.count();
 //						nNestLevel2 = 1;
 //					}
 //					nMode = 0;
@@ -794,7 +784,7 @@
 						if(nNestLevel_fparam==0)
 						{
 							strcpy( szItemName, szWordPrev);
-							nItemLine = nLineCount + 1;
+							nItemLine = it.count(); // 2006.10.30 genta iterator—˜—p
 						}
 						++ nNestLevel_fparam;
 					}
@@ -834,22 +824,7 @@
 //						if( 0 != strcmp( "sizeof", szFuncName ) ){
 //							nFuncId = 1;
 //							++nFuncNum;
-//							/*
-//							  ƒJ�[ƒ\ƒ‹ˆÊ’u•ÏŠ·
-//							  •¨—�ˆÊ’u(�s“ª‚©‚ç‚ÌƒoƒCƒg�”�A�Ü‚è•Ô‚µ–³‚µ�sˆÊ’u)
-//							  �¨
-//							  ƒŒƒCƒAƒEƒgˆÊ’u(�s“ª‚©‚ç‚Ì•\Ž¦Œ…ˆÊ’u�A�Ü‚è•Ô‚µ‚ ‚è�sˆÊ’u)
-//							*/
-//							int		nPosX;
-//							int		nPosY;
-//							m_cLayoutMgr.CaretPos_Phys2Log(
-//								0,
-//								nFuncLine - 1,
-//								&nPosX,
-//								&nPosY
-//							);
-//							pcFuncInfoArr->AppendData( nFuncLine, nPosY + 1, szFuncName, nFuncId);
-////						pcFuncInfoArr->AppendData( nFuncLine, szFuncName, nFuncId );
+//							pcFuncInfoArr->AppendData( nFuncLine, szFuncName, nFuncId );
 //						}
 //					}
 //					nNestLevel2 = 0;
@@ -878,21 +853,8 @@
 						strcpy( &szNamespace[nNamespaceLen[ nNestLevel_global]] , szItemName);
 
 						nItemFuncId = 1;
-						/*
-						  ƒJ�[ƒ\ƒ‹ˆÊ’u•ÏŠ·
-						  •¨—�ˆÊ’u(�s“ª‚©‚ç‚ÌƒoƒCƒg�”�A�Ü‚è•Ô‚µ–³‚µ�sˆÊ’u)
-						  �¨
-						  ƒŒƒCƒAƒEƒgˆÊ’u(�s“ª‚©‚ç‚Ì•\Ž¦Œ…ˆÊ’u�A�Ü‚è•Ô‚µ‚ ‚è�sˆÊ’u)
-						*/
-						int		nPosX;
-						int		nPosY;
-						m_cLayoutMgr.CaretPos_Phys2Log(
-							0,
-							nItemLine - 1,
-							&nPosX,
-							&nPosY
-						);
-						pcFuncInfoArr->AppendData( nItemLine, nPosY + 1, szNamespace, nItemFuncId);
+						//	2006.10.30 genta iterator—˜—p
+						pcFuncInfoArr->AppendData( nItemLine, szNamespace, nItemFuncId);
 					}
 					nMode2 = M2_NORMAL;
 					//  2002/10/27 frozen ‚±‚±‚Ü‚Å
@@ -1040,3 +1002,5 @@
 	}
 	return;
 }
+
+}	// namespace OutlineAnalyzer
Index: sakura_core/CEditView_Command.cpp
===================================================================
--- sakura_core/CEditView_Command.cpp	(revision 1011)
+++ sakura_core/CEditView_Command.cpp	(working copy)
@@ -4697,9 +4697,10 @@
 	return;
 }
 
+namespace OutlineAnalyzer {
+	void MakeFuncList_C( CFuncInfoArr*, bool = true );
+};
 
-
-
 /*!	ƒAƒEƒgƒ‰ƒCƒ“‰ð�Í
 	
 	2002/3/13 YAZAKI nOutlineType‚ÆnListType‚ð“��‡�B
@@ -4711,7 +4712,8 @@
 //		return TRUE;
 //	}
 
-	static CFuncInfoArr	cFuncInfoArr;
+	//	Oct. 28, 2006 genta
+	static CFuncInfoArr	cFuncInfoArr( m_pcEditDoc );
 //	int		nLine;
 //	int		nListType;
 
@@ -4758,7 +4760,8 @@
 	switch( nOutlineType ){
 //	case OUTLINE_C:			m_pcEditDoc->MakeFuncList_C( &cFuncInfoArr );break;
 	case OUTLINE_CPP:
-		m_pcEditDoc->MakeFuncList_C( &cFuncInfoArr );
+		//m_pcEditDoc->MakeFuncList_C( &cFuncInfoArr );
+		OutlineAnalyzer::MakeFuncList_C( &cFuncInfoArr );
 		/* CŒ¾Œê•W�€•ÛŒìˆÏˆõ‰ïŠ©��“Á•Ê�ˆ—�ŽÀ‘•‰Ó�Š(‰R) */
 		if( CheckEXT( m_pcEditDoc->GetFilePath(), "c" ) ){
 			nOutlineType = OUTLINE_C;	/* ‚±‚ê‚ÅCŠÖ�”ˆê——ƒŠƒXƒgƒrƒ…�[‚É‚È‚é */
Index: sakura_core/CFuncInfo.cpp
===================================================================
--- sakura_core/CFuncInfo.cpp	(revision 1011)
+++ sakura_core/CFuncInfo.cpp	(working copy)
@@ -17,14 +17,15 @@
 /*! CFuncInfoƒNƒ‰ƒX�\’z */
 CFuncInfo::CFuncInfo(
 	int		nFuncLineCRLF,	/*!< ŠÖ�”‚Ì‚ ‚é�s(CRLF’PˆÊ) */
-	int		nFuncLineLAYOUT,/*!< ŠÖ�”‚Ì‚ ‚é�s(�Ü‚è•Ô‚µ’PˆÊ) */
+//	int		nFuncLineLAYOUT,/*!< ŠÖ�”‚Ì‚ ‚é�s(�Ü‚è•Ô‚µ’PˆÊ) */
 //	int		nFuncLine,		/*!< ŠÖ�”‚Ì‚ ‚é�s */
 	const char*	pszFuncName,	/*!< ŠÖ�”–¼ */
 	int		nInfo			/*!< •t‰Á�î•ñ */
 ) : m_nDepth(0)				/*!< �[‚³ */
 {
 	m_nFuncLineCRLF = nFuncLineCRLF;		/* ŠÖ�”‚Ì‚ ‚é�s(CRLF’PˆÊ) */
-	m_nFuncLineLAYOUT = nFuncLineLAYOUT;	/* ŠÖ�”‚Ì‚ ‚é�s(�Ü‚è•Ô‚µ’PˆÊ) */
+	//	2006.10.30 genta m_nFuncLineLAYOUT”pŽ~
+//	m_nFuncLineLAYOUT = nFuncLineLAYOUT;	/* ŠÖ�”‚Ì‚ ‚é�s(�Ü‚è•Ô‚µ’PˆÊ) */
 //	m_nFuncLine = nFuncLine;;
 //	m_cmemFuncName = pszFuncName;
 //	m_cmemFuncName.SetData( pszFuncName, lstrlen( pszFuncName ) );
Index: sakura_core/CFuncInfo.h
===================================================================
--- sakura_core/CFuncInfo.h	(revision 1011)
+++ sakura_core/CFuncInfo.h	(working copy)
@@ -29,7 +29,8 @@
 //@date 2002.04.01 YAZAKI �[‚³“±“ü
 class CFuncInfo {
 	public:
-		CFuncInfo( int, int, const char*, int );	/* CFuncInfoƒNƒ‰ƒX�\’z */
+		//	2006.10.30 genta ƒŒƒCƒAƒEƒg�s‚ð�í�œ
+		CFuncInfo( int, const char*, int );	/* CFuncInfoƒNƒ‰ƒX�\’z */
 		~CFuncInfo();	/* CFuncInfoƒNƒ‰ƒX�Á–Å */
 
 		//! ƒNƒŠƒbƒvƒ{�[ƒh‚É’Ç‰Á‚·‚é—v‘f‚©�H
@@ -40,7 +41,7 @@
 
 //	private:
 		int			m_nFuncLineCRLF;	/*!< ŠÖ�”‚Ì‚ ‚é�s(CRLF’PˆÊ) */
-		int			m_nFuncLineLAYOUT;	/*!< ŠÖ�”‚Ì‚ ‚é�s(�Ü‚è•Ô‚µ’PˆÊ) */
+		// 2006.10.30 genta m_nFuncLineLAYOUT ”pŽ~
 		CMemory		m_cmemFuncName;	/*!< ŠÖ�”–¼ */
 		int			m_nInfo;		/*!< •t‰Á�î•ñ */
 		int			m_nDepth;		/*!< �[‚³ */
Index: sakura_core/CFuncInfoArr.cpp
===================================================================
--- sakura_core/CFuncInfoArr.cpp	(revision 1011)
+++ sakura_core/CFuncInfoArr.cpp	(working copy)
@@ -16,20 +16,20 @@
 #include <stdlib.h>
 #include <malloc.h>
 #include "CFuncInfoArr.h"
+#include "CEditDoc.h"	//	2006.10.28 genta
+#include "CDocLine.h"	//	2006.10.28 genta
 #include "debug.h"// 2002/2/10 aroka
 
 
-/* CFuncInfoArrƒNƒ‰ƒX�\’z */
-CFuncInfoArr::CFuncInfoArr()
+/*! CFuncInfoArrƒNƒ‰ƒX�\’z
+
+	@date 2006.10.18 genta ˆø�”’Ç‰Á CEditDoc
+*/
+CFuncInfoArr::CFuncInfoArr(CEditDoc* doc)
+	: m_pcEditDoc( doc ), m_nFuncInfoArrNum( 0 ), m_ppcFuncInfoArr( NULL )
 {
-	m_nFuncInfoArrNum = 0;	/* ”z—ñ—v‘f�” */
-	m_ppcFuncInfoArr = NULL;	/* ”z—ñ */
-	return;
 }
 
-
-
-
 /* CFuncInfoArrƒNƒ‰ƒX�Á–Å */
 CFuncInfoArr::~CFuncInfoArr()
 {
@@ -92,13 +92,37 @@
 	int		nDepth			/* �[‚³ */
 )
 {
-	CFuncInfo* pcFuncInfo = new CFuncInfo( nFuncLineCRLF, nFuncLineLAYOUT, pszFuncName, nInfo );
+	CFuncInfo* pcFuncInfo = new CFuncInfo( nFuncLineCRLF, pszFuncName, nInfo );
 	pcFuncInfo->m_nDepth = nDepth;
 	AppendData( pcFuncInfo );
 	return;
 }
 
+void CFuncInfoArr::AppendData(
+	int		nFuncLineCRLF,	/* ŠÖ�”‚Ì‚ ‚é�s(CRLF’PˆÊ) */
+	const char*	pszFuncName,	/* ŠÖ�”–¼ */
+	int		nInfo,			/* •t‰Á�î•ñ */
+	int		nDepth			/* �[‚³ */
+)
+{
+	CFuncInfo* pcFuncInfo = new CFuncInfo( nFuncLineCRLF, pszFuncName, nInfo );
+	pcFuncInfo->m_nDepth = nDepth;
+	AppendData( pcFuncInfo );
+	return;
+}
 
+void CFuncInfoArr::AppendData( 
+	CFuncInfoArr::CDocIterator& itr_line,
+	const char*	pszFuncName,	/* ŠÖ�”–¼ */
+	int		nInfo,			/* •t‰Á�î•ñ */
+	int		nDepth			/* �[‚³ */
+)
+{
+	CFuncInfo* pcFuncInfo = new CFuncInfo( itr_line.count(), pszFuncName, nInfo );
+	pcFuncInfo->m_nDepth = nDepth;
+	AppendData( pcFuncInfo );
+}
+
 void CFuncInfoArr::DUMP( void )
 {
 #ifdef _DEBUG
@@ -107,7 +131,8 @@
 	for( i = 0; i < m_nFuncInfoArrNum; i++ ){
 		MYTRACE( "[%d]------------------\n", i );
 		MYTRACE( "m_nFuncLineCRLF	=%d\n", m_ppcFuncInfoArr[i]->m_nFuncLineCRLF );
-		MYTRACE( "m_nFuncLineLAYOUT	=%d\n", m_ppcFuncInfoArr[i]->m_nFuncLineLAYOUT );
+		//	2006.10.28 genta m_nFuncLineLAYOUT‚ÍŽg‚í‚È‚¢•ûŒü‚Å
+		//MYTRACE( "m_nFuncLineLAYOUT	=%d\n", m_ppcFuncInfoArr[i]->m_nFuncLineLAYOUT );
 		MYTRACE( "m_cmemFuncName	=[%s]\n", m_ppcFuncInfoArr[i]->m_cmemFuncName.GetPtr() );
 		MYTRACE( "m_nInfo			=%d\n", m_ppcFuncInfoArr[i]->m_nInfo );
 	}
@@ -115,5 +140,29 @@
 #endif
 }
 
+//----------------------------------------------------------
+//	Document Iterator class methods
+//----------------------------------------------------------
 
+/*!
+	Get an iterator that points the head of document data
+*/
+CFuncInfoArr::CDocIterator CFuncInfoArr::begin_data()
+{
+	return CFuncInfoArr::CDocIterator( m_pcEditDoc->m_cDocLineMgr.begin(), 1 );
+}
+
+CDocLineMgr::iterator CFuncInfoArr::end_data()
+{
+	return m_pcEditDoc->m_cDocLineMgr.end();
+}
+
+const char* CFuncInfoArr::CDocIterator::c_str()
+{
+	return m_current->m_pLine->GetPtr();
+}
+int CFuncInfoArr::CDocIterator::length()
+{
+	return m_current->m_pLine->GetLength();
+}
 /*[EOF]*/
Index: sakura_core/CFuncInfoArr.h
===================================================================
--- sakura_core/CFuncInfoArr.h	(revision 1011)
+++ sakura_core/CFuncInfoArr.h	(working copy)
@@ -18,11 +18,14 @@
 #define _CFUNCINFOARR_H_
 
 #include "CFuncInfo.h"
+#include "CDocLineMgr.h"
 
+class CEditDoc;
+
 //! ƒAƒEƒgƒ‰ƒCƒ“‰ð�Í ƒf�[ƒ^”z—ñ
 class CFuncInfoArr {
 	public:
-		CFuncInfoArr();	/* CFuncInfoArrƒNƒ‰ƒX�\’z */
+		CFuncInfoArr(CEditDoc*);	/* CFuncInfoArrƒNƒ‰ƒX�\’z */
 		~CFuncInfoArr();	/* CFuncInfoArrƒNƒ‰ƒX�Á–Å */
 		CFuncInfo* GetAt( int );	/* 0<=‚ÌŽw’è”Ô�†‚Ìƒf�[ƒ^‚ð•Ô‚· */
 		void AppendData( CFuncInfo* );	/* ”z—ñ‚Ì�ÅŒã‚Éƒf�[ƒ^‚ð’Ç‰Á‚·‚é */
@@ -37,6 +40,48 @@
 	private:
 		int			m_nFuncInfoArrNum;	/*!< ”z—ñ—v‘f�” */
 		CFuncInfo**	m_ppcFuncInfoArr;	/*!< ”z—ñ */
+		
+		CEditDoc*	m_pcEditDoc;	//!< Oct. 28, 2006 genta
+	
+	public:
+		/*!
+			ƒAƒEƒgƒ‰ƒCƒ“‰ð�Í‚É“Á‰»‚µ‚½ƒf�[ƒ^“Ç‚Ý�o‚µiterator
+			
+			operator++‚Å�s”Ô�†‚ÌƒJƒEƒ“ƒg‚à�s‚¤�D
+			
+			@date 2006.10.28 genta �V‹K�ì�¬
+			@author genta
+		*/
+		class CDocIterator : public CDocLineMgr::iterator {
+		public:
+			typedef CDocLineMgr::iterator super;
+
+			/*!
+				ŽŸ‚Ì�s‚Ö‚ÌˆÚ“®‚Æ�s”Ô�†‚ÌƒJƒEƒ“ƒgƒAƒbƒv
+				
+				@note iterator‚ª�ÅŒã‚Ì—v‘f‚Ì––”ö end_data() ‚ðŽw‚µ‚Ä‚¢‚é‚Æ‚«‚É
+				++‚ð�s‚Á‚Ä‚Í‚¢‚¯‚È‚¢�D�s‚¤‚Æ�s”Ô�†‚¾‚¯‚ªƒJƒEƒ“ƒgƒAƒbƒv‚³‚ê‚Ä‚µ‚Ü‚¤�D
+			*/
+			CDocIterator operator++() { super::operator++(); ++m_linenum; return *this; } ;
+			CDocIterator operator++(int) { CDocIterator t(*this); this->operator++(); return t; }
+
+			//	constructor
+			CDocIterator( const CDocLineMgr::iterator& it, int num )
+				: CDocLineMgr::iterator( it ), m_linenum( num ){}
+
+			int count() const { return m_linenum; }
+			void reset_flag();
+			const char* c_str();
+			int length();
+		private:
+			int m_linenum;	//!< Œ»�Ý‚Ì�s”Ô�†(1�`)
+		};
+		
+		CDocIterator begin_data();
+		CDocLineMgr::iterator end_data();
+		void AppendData( CDocIterator&, const char*, int, int nDepth = 0 );
+		//	layout�s‚ðŠO‚µ‚½ƒo�[ƒWƒ‡ƒ“
+		void AppendData( int, const char*, int, int nDepth = 0 );
 };
 
 
