Index: sakura_core/CDlgFuncList.cpp
===================================================================
--- sakura_core/CDlgFuncList.cpp	(revision 1089)
+++ sakura_core/CDlgFuncList.cpp	(working copy)
@@ -901,7 +901,8 @@
 			//	Global‹óŠÔ‚Ì�ê�‡ (C++‚Ì‚Ý)
 
 			// 2002/10/27 frozen ‚±‚±‚©‚ç
-			if( 3 <= pcFuncInfo->m_nInfo  && pcFuncInfo->m_nInfo <= 7 )
+			// 2007.05.26 genta "__interface" ‚ðƒNƒ‰ƒX‚É—Þ‚·‚éˆµ‚¢‚É‚·‚é
+			if( 3 <= pcFuncInfo->m_nInfo  && pcFuncInfo->m_nInfo <= 8 )
 				htiClass = TVI_ROOT;
 			else
 			{
@@ -922,7 +923,7 @@
 				htiClass = htiGlobal;
 			}
 		}
-		pFuncName = new char[ strlen(pWork) + 1 + 7 ];	// +6 ‚Í’Ç‰Á‚·‚é•¶Žš—ñ‚Ì�Å‘å’·
+		pFuncName = new char[ strlen(pWork) + 1 + 18 ];	// +16 ‚Í’Ç‰Á‚·‚é•¶Žš—ñ‚Ì�Å‘å’·
 		strcpy( pFuncName, pWork );
 
 		// 2002/10/27 frozen ’Ç‰Á•¶Žš—ñ‚ÌŽí—Þ‚ð‘�‚â‚µ‚½
@@ -934,6 +935,8 @@
 		case 5: strcat( pFuncName, " —ñ‹“‘Ì" );break;
 		case 6: strcat( pFuncName, " ‹¤—p‘Ì" );break;
 //		case 7: strcat( pFuncName, " –¼‘O‹óŠÔ" );break;
+		
+		case 8: strcat( pFuncName, " ƒCƒ“ƒ^�[ƒtƒF�[ƒX" );break; // 2007.05.26 genta : "__interface"
 		};
 //		}
 		/* ŠY“–ƒNƒ‰ƒX–¼‚ÌƒAƒCƒeƒ€‚ÌŽq‚Æ‚µ‚Ä�Aƒ�ƒ\ƒbƒh‚ÌƒAƒCƒeƒ€‚ð“o˜^ */
Index: sakura_core/CEditDoc_FuncList1.cpp
===================================================================
--- sakura_core/CEditDoc_FuncList1.cpp	(revision 1089)
+++ sakura_core/CEditDoc_FuncList1.cpp	(working copy)
@@ -302,8 +302,11 @@
 	enum MODE2
 	{
 		M2_NORMAL			= 0x00,	//!< ’Ê�í
+		M2_ATTRIBUTE		= 0x02,	//!< C++/CLI attribute : 2007.05.26 genta
+
 		M2_NAMESPACE_SAVE	= 0x11,	//!< ƒl�[ƒ€ƒXƒy�[ƒX–¼’²�¸’†
-			// �u’Ê�í�v�ó‘Ô‚Å’PŒê "class" "struct" "union" "enum" "namespace"‚ð“Ç‚Ý�ž‚Þ‚Æ�A‚±‚Ì�ó‘Ô‚É‚È‚è�A';' '{' ',' '>' '='‚ð“Ç‚Ý�ž‚Þ‚Æ�u’Ê�í�v‚É‚È‚é�B
+			// �u’Ê�í�v�ó‘Ô‚Å’PŒê "class" "struct" "union" "enum" "namespace", "__interface" ‚ð“Ç‚Ý�ž‚Þ‚Æ�A‚±‚Ì�ó‘Ô‚É‚È‚è�A';' '{' ',' '>' '='‚ð“Ç‚Ý�ž‚Þ‚Æ�u’Ê�í�v‚É‚È‚é�B
+			//	2007.05.26 genta ƒL�[ƒ��[ƒh‚É__interface’Ç‰Á
 			//
 			// ':' ‚ð“Ç‚Ý�ž‚Þ‚Æ�uƒl�[ƒ€ƒXƒy�[ƒX–¼’²�¸Š®—¹�v‚ÖˆÚ�s‚·‚é‚Æ“¯Žž‚É
 			// szWord‚ðszTokenName‚É•Û‘¶‚µ�A‚ ‚Æ‚Å ':' –”‚Í '{' ‚Ì’¼‘O‚Ì’PŒê‚ª’²‚×‚ç‚ê‚é‚æ‚¤‚É‚µ‚Ä‚¢‚é�B
@@ -596,6 +599,8 @@
 							nItemFuncId = 5;
 						else if( strcmp(szWord,"union")==0 )
 							nItemFuncId = 6;
+						else if( strcmp(szWord,"__interface")==0 )
+							nItemFuncId = 8;
 						if( nItemFuncId != 0 )
 						{
 							nMode2 = M2_NAMESPACE_SAVE;
@@ -788,7 +793,10 @@
 //						nNestLevel2 = 1;
 //					}
 //					nMode = 0;
-					if( nNestLevel_func == 0 && (nMode2 == M2_NORMAL || nMode2 == M2_NAMESPACE_SAVE || nMode2 == M2_NAMESPACE_END) )
+					//	2007.05.26 genta C++/CLI nMode2 == M2_NAMESPACE_END‚Ì�ê�‡‚ð‘Î�ÛŠO‚É
+					//	NAMESPACE_END(class ƒNƒ‰ƒX–¼ :‚ÌŒã‚ë)‚É‚¨‚¢‚Ä‚Í()‚ðŠÖ�”‚Æ‚Ý‚È‚³‚È‚¢�D
+					//	TEMPLATE<sizeof(int)> ‚Ì‚æ‚¤‚ÈƒP�[ƒX‚Åsizeof‚ðŠÖ�”‚ÆŒë”F‚·‚é�D
+					if( nNestLevel_func == 0 && (nMode2 == M2_NORMAL || nMode2 == M2_NAMESPACE_SAVE ) )
 					{
 						if( strcmp(szWordPrev, "__declspec") == 0 ) {continue;}
 						if(nNestLevel_fparam==0)
@@ -818,7 +826,8 @@
 					if( nNestLevel_fparam > 0)
 					{
 						--nNestLevel_fparam;
-						if( nNestLevel_fparam == 0)
+						//	2007.05.26 genta C++/CLI Attribute“à•”‚Å‚ÍnMode2‚Ì•Ï�X‚Í�s‚í‚È‚¢
+						if( nNestLevel_fparam == 0 && nMode2 != M2_ATTRIBUTE )
 						{
 							nMode2 = M2_FUNC_NAME_END;
 							nItemFuncId = 2;
@@ -827,6 +836,22 @@
 					//  2002/10/27 frozen ‚±‚±‚Ü‚Å
 					continue;
 				}else
+				// From Here 2007.05.26 genta C++/CLI Attribute‚ÌŽæ‚èˆµ‚¢
+				if( '[' == pLine[i] ){
+					if( nNestLevel_func == 0 && nNestLevel_fparam == 0 && nMode2 == M2_NORMAL ) {
+						nMode2 = M2_ATTRIBUTE;
+						continue;
+					}
+				} else
+				if( ']' == pLine[i] ){
+					//	Attribute“à•”‚Å‚à[]‚ð”z—ñ‚Æ‚µ‚ÄŽg‚¤‚©‚à‚µ‚ê‚È‚¢‚Ì‚Å�C
+					//	Š‡ŒÊ‚ÌƒŒƒxƒ‹‚ÍŒ³‚É–ß‚Á‚Ä‚¢‚é•K—v—L‚è
+					if( nNestLevel_fparam == 0 && nMode2 == M2_ATTRIBUTE ) {
+						nMode2 = M2_NORMAL;
+						continue;
+					}
+				} else
+				// To Here 2007.05.26 genta C++/CLI Attribute‚ÌŽæ‚èˆµ‚¢
 				if( ';' == pLine[i] ){
 					//  2002/10/27 frozen ‚±‚±‚©‚ç
 //					if( 2 == nNestLevel2 ){
@@ -898,7 +923,8 @@
 					//  2002/10/27 frozen ‚±‚±‚Ü‚Å
 					nMode = 0;
 					continue;
-				}else if( nNestLevel_fparam == 0 ){
+				}else if( nNestLevel_fparam == 0 && nMode2 != M2_ATTRIBUTE ){
+					// 2007.05.26 genta C++/CLI Attribute“à•”‚Å‚ÍŠÖ�”–¼�ˆ—�‚Íˆê�Ø�s‚í‚È‚¢
 					if( C_IsWordChar( pLine[i] ) ){
 						//  2002/10/27 frozen ‚±‚±‚©‚ç�í�œ
 //						if( 2 == nNestLevel2 ){
