? doxygen_cppcli.patch
? doxygen_external_href.patch
? doxygen_protection_internal.patch
? doxygen_prunedirs.patch
? addon/doxmlparser/lib
? addon/doxmlparser/objects
? addon/doxyapp/Makefile
? addon/doxyapp/doxyapp.pro
? packages/rpm/doxygen.spec
Index: VERSION
===================================================================
RCS file: /cvsroot/doxygen/VERSION,v
retrieving revision 1.215
diff -u -5 -r1.215 VERSION
--- VERSION	9 Nov 2005 21:17:03 -0000	1.215
+++ VERSION	23 Oct 2006 20:38:53 -0000
@@ -1 +1 @@
-1.4.5-20051109
+1.5.0
Index: src/classdef.cpp
===================================================================
RCS file: /cvsroot/doxygen/src/classdef.cpp,v
retrieving revision 1.153
diff -u -5 -r1.153 classdef.cpp
--- src/classdef.cpp	4 Oct 2006 20:28:40 -0000	1.153
+++ src/classdef.cpp	23 Oct 2006 20:38:54 -0000
@@ -423,10 +423,13 @@
                   addMemberToList(MemberList::pubStaticAttribs,md);
                   break;
                 case Private:   
                   addMemberToList(MemberList::priStaticAttribs,md);
                   break;
+                case Internal:   
+                  addMemberToList(MemberList::intStaticAttribs,md);
+                  break;
               }
             }
             else // function
             {
               switch (prot)
@@ -441,10 +444,13 @@
                   addMemberToList(MemberList::pubStaticMethods,md);
                   break;
                 case Private:   
                   addMemberToList(MemberList::priStaticMethods,md);
                   break;
+                case Internal:   
+                  addMemberToList(MemberList::intStaticMethods,md);
+                  break;
               }
             }
           }
           else // not static
           {
@@ -462,10 +468,13 @@
                   addMemberToList(MemberList::pubAttribs,md);
                   break;
                 case Private:   
                   addMemberToList(MemberList::priAttribs,md);
                   break;
+                case Internal:   
+                  addMemberToList(MemberList::intAttribs,md);
+                  break;
               }
             }
             else if (md->isTypedef() || md->isEnumerate() || md->isEnumValue())
             {
               switch (prot)
@@ -480,10 +489,13 @@
                   addMemberToList(MemberList::pubTypes,md);
                   break;
                 case Private:   
                   addMemberToList(MemberList::priTypes,md);
                   break;
+                case Internal:
+                  addMemberToList(MemberList::intTypes,md);
+                  break;
               }
             }
             else // member function
             {
               switch (prot)
@@ -498,10 +510,13 @@
                   addMemberToList(MemberList::pubMethods,md);
                   break;
                 case Private:   
                   addMemberToList(MemberList::priMethods,md);
                   break;
+                case Internal: 
+                  addMemberToList(MemberList::intMethods,md);
+                  break;
               }
             }
           }
           break; 
       }
@@ -535,19 +550,20 @@
             case Package: 
             case Public:    
               addMemberToList(MemberList::functionMembers,md);
               break;
             case Private:   
+            case Internal:
               if (extractPrivate)
               {
                 addMemberToList(MemberList::functionMembers,md);
               }
               break;
           }
           break;
         default: // any of the other members
-          if (prot!=Private || extractPrivate)
+          if ((prot!=Private && prot!=Internal) || extractPrivate)
           {
             switch (md->memberType())
             {
               case MemberDef::Typedef:
                 addMemberToList(MemberList::typedefMembers,md);
@@ -1409,19 +1425,24 @@
 
   if (Config_getBool("EXTRACT_PRIVATE"))
   {
     // private types
     writeMemberDeclarations(ol,MemberList::priTypes,theTranslator->trPrivateTypes()); 
+    writeMemberDeclarations(ol,MemberList::intTypes,theTranslator->trInternalTypes()); 
 
     // private members
     writeMemberDeclarations(ol,MemberList::priSlots,theTranslator->trPrivateSlots()); 
     writeMemberDeclarations(ol,MemberList::priMethods,theTranslator->trPrivateMembers()); 
     writeMemberDeclarations(ol,MemberList::priStaticMethods,theTranslator->trStaticPrivateMembers()); 
+    writeMemberDeclarations(ol,MemberList::intMethods,theTranslator->trInternalMembers()); 
+    writeMemberDeclarations(ol,MemberList::intStaticMethods,theTranslator->trStaticInternalMembers()); 
 
     // private attribs
     writeMemberDeclarations(ol,MemberList::priAttribs,theTranslator->trPrivateAttribs()); 
     writeMemberDeclarations(ol,MemberList::priStaticAttribs,theTranslator->trStaticPrivateAttribs()); 
+    writeMemberDeclarations(ol,MemberList::intAttribs,theTranslator->trInternalAttribs()); 
+    writeMemberDeclarations(ol,MemberList::intStaticAttribs,theTranslator->trStaticInternalAttribs()); 
   }
 
   // friends
   writeMemberDeclarations(ol,MemberList::friends,theTranslator->trFriends());
 
Index: src/defgen.cpp
===================================================================
RCS file: /cvsroot/doxygen/src/defgen.cpp,v
retrieving revision 1.16
diff -u -5 -r1.16 defgen.cpp
--- src/defgen.cpp	10 Sep 2006 20:46:22 -0000	1.16
+++ src/defgen.cpp	23 Oct 2006 20:38:54 -0000
@@ -119,10 +119,11 @@
   {
     case Public:    t << "public;"    << endl; break;
     case Protected: t << "protected;" << endl; break;
     case Private:   t << "private;"   << endl; break;
     case Package:   t << "package;"   << endl; break;
+    case Internal:   t << "internal;"   << endl; break;
   }
 
   if (md->memberType()!=MemberDef::Define &&
       md->memberType()!=MemberDef::Enumeration
      )
@@ -369,10 +370,11 @@
       switch (bcd->prot)
       {
         case Public:    t << "public;"    << endl; break;
         case Package: // package scope is not possible
         case Protected: t << "protected;" << endl; break;
+        case Internal: // not possible
         case Private:   t << "private;"   << endl; break;
       }
       t << "    ref-virt = ";
       switch(bcd->virt)
       {
@@ -397,10 +399,11 @@
       switch (bcd->prot)
       {
         case Public:    t << "public;"    << endl; break;
         case Package: // packet scope is not possible!
         case Protected: t << "protected;" << endl; break;
+        case Internal: // not possible!
         case Private:   t << "private;"   << endl; break;
       }
       t << "    ref-virt = ";
       switch(bcd->virt)
       {
Index: src/diagram.cpp
===================================================================
RCS file: /cvsroot/doxygen/src/diagram.cpp,v
retrieving revision 1.50
diff -u -5 -r1.50 diagram.cpp
--- src/diagram.cpp	10 Sep 2006 20:46:22 -0000	1.50
+++ src/diagram.cpp	23 Oct 2006 20:38:55 -0000
@@ -62,10 +62,11 @@
   switch(p)
   {
     case Public:    return 0xffffffff;
     case Package: // package is not possible!
     case Protected: return 0xcccccccc;
+    case Internal: // not possible!
     case Private:   return 0xaaaaaaaa;
   }
   return 0;
 }
 
@@ -74,10 +75,11 @@
   switch(p)
   {
     case Public:    return 6;
     case Package: // package is not possible!
     case Protected: return 5;
+    case Internal: // not possible!
     case Private:   return 4;
   }
   return 0;
 }
 
@@ -86,10 +88,11 @@
   switch(p)
   {
     case Public:    return "solid";
     case Package: // package is not possible!
     case Protected: return "dashed";
+    case Internal: // not possible!
     case Private:   return "dotted";
   }
   return 0;
 }
 
Index: src/entry.h
===================================================================
RCS file: /cvsroot/doxygen/src/entry.h,v
retrieving revision 1.70
diff -u -5 -r1.70 entry.h
--- src/entry.h	10 Sep 2006 20:46:22 -0000	1.70
+++ src/entry.h	23 Oct 2006 20:38:55 -0000
@@ -27,11 +27,11 @@
 class QFile;
 class EntryNav;
 class FileDef;
 class FileStorage;
 
-enum Protection { Public, Protected, Private, Package } ;
+enum Protection { Public, Protected, Private, Package, Internal } ;
 enum Specifier { Normal, Virtual, Pure } ;
 enum MethodTypes { Method, Signal, Slot, DCOP, Property, Event };
 
 struct ListItemInfo
 {
Index: src/memberdef.cpp
===================================================================
RCS file: /cvsroot/doxygen/src/memberdef.cpp,v
retrieving revision 1.166
diff -u -5 -r1.166 memberdef.cpp
--- src/memberdef.cpp	17 Oct 2006 18:03:21 -0000	1.166
+++ src/memberdef.cpp	23 Oct 2006 20:38:57 -0000
@@ -1869,11 +1869,11 @@
       if      (isStatic())              sl.append("static");
       if      (isGettable())            sl.append("get");
       if      (isSettable())            sl.append("set");
       if      (isReadable())            sl.append("read");
       if      (isWritable())            sl.append("write");
-      if      (isFinal())               sl.append("final");
+      if      (isFinal())               sl.append("final/sealed");
       if      (isAbstract())            sl.append("abstract");
       if      (protection()==Protected) sl.append("protected");
       else if (protection()==Private)   sl.append("private");
       else if (protection()==Package)   sl.append("package");
       if      (lvirt==Virtual)          sl.append("virtual");
Index: src/memberlist.h
===================================================================
RCS file: /cvsroot/doxygen/src/memberlist.h,v
retrieving revision 1.40
diff -u -5 -r1.40 memberlist.h
--- src/memberlist.h	10 Sep 2006 20:46:22 -0000	1.40
+++ src/memberlist.h	23 Oct 2006 20:38:57 -0000
@@ -95,11 +95,17 @@
       docVarMembers           = 51 + documentationLists,
       docEnumValMembers       = 52 + documentationLists,
 
       redefinedBy             = 53,
       enumFields              = 54,
-      memberGroup             = 55
+      memberGroup             = 55,
+
+      intMethods              = 56 + privateLists,
+      intStaticMethods        = 57 + privateLists,
+      intAttribs              = 58 + privateLists,
+      intStaticAttribs        = 59 + privateLists,
+      intTypes                = 60 + privateLists
     };
 
     MemberList();
     MemberList(ListType lt);
    ~MemberList();
Index: src/perlmodgen.cpp
===================================================================
RCS file: /cvsroot/doxygen/src/perlmodgen.cpp,v
retrieving revision 1.30
diff -u -5 -r1.30 perlmodgen.cpp
--- src/perlmodgen.cpp	10 Sep 2006 20:46:22 -0000	1.30
+++ src/perlmodgen.cpp	23 Oct 2006 20:38:58 -0000
@@ -1322,10 +1322,11 @@
   {
   case Public:    return "public";
   case Protected: return "protected";
   case Private:   return "private";
   case Package:   return "package";
+  case Internal:  return "internal";
   }
   return 0;
 }
 
 static const char *getVirtualnessName(Specifier virt)
Index: src/scanner.l
===================================================================
RCS file: /cvsroot/doxygen/src/scanner.l,v
retrieving revision 1.207
diff -u -5 -r1.207 scanner.l
--- src/scanner.l	10 Sep 2006 20:46:22 -0000	1.207
+++ src/scanner.l	23 Oct 2006 20:39:00 -0000
@@ -565,10 +565,11 @@
 
 %x	Define
 %x	DefineEnd
 %x	CompoundName
 %x	ClassVar
+%x	CppCliTypeModifierFollowup
 %x	CSConstraint
 %x	ClassCategory
 %x	ClassTemplSpec
 %x	Bases
 %x	BasesProt
@@ -827,10 +828,19 @@
 					  current->name.resize(0); 
 					  current->args.resize(0);
 					  current->argList->clear();
 					  lineCount() ;
 					}
+<FindMembers>{B}*"internal"{BN}*":"{BN}* { 
+  					  current->protection = protection = Internal ;
+					  current->mtype = mtype = Method;
+					  current->type.resize(0); 
+					  current->name.resize(0); 
+					  current->args.resize(0);
+					  current->argList->clear();
+					  lineCount() ;
+					}
 <FindMembers>{B}*"protected"{BN}*":"{BN}* { 
   					  current->protection = protection = Protected ;
 					  current->mtype = mtype = Method;
 					  current->type.resize(0); 
 					  current->name.resize(0); 
@@ -845,10 +855,22 @@
 					  current->name.resize(0); 
 					  current->args.resize(0);
 					  current->argList->clear();
 					  lineCount() ;
 					}
+<FindMembers>{B}*"event"{BN}*	{ 
+					  uint tl=current->type.length();
+					  if (tl > 0) REJECT;
+					  current->mtype = mtype = Event;
+					  lineCount() ;
+					}
+<FindMembers>{B}*"property"{BN}*	{ 
+					  uint tl=current->type.length();
+					  if (tl > 0) REJECT;
+					  current->mtype = mtype = Property;
+					  lineCount() ;
+					}
 <FindMembers>{B}*"@private"{BN}+	{
   					  current->protection = protection = Private ;
 					  current->mtype = mtype = Method;
 					  current->type.resize(0); 
 					  current->name.resize(0); 
@@ -1010,20 +1032,20 @@
 					  BEGIN( FindMembers ) ;
   					}
 <PackageName>";"			{
   					  BEGIN(FindMembers);
   					}
-<FindMembers>{B}*"static"{BN}+     	{ current->type += " static ";
+<FindMembers>{B}*"static"{BN}+     	{ //current->type += " static ";
   					  current->stat = TRUE;
 					  lineCount();
 					}
 <FindMembers>{B}*"extern"{BN}+		{
   					  current->stat = FALSE;
 					  current->explicitExternal = TRUE;
 					  lineCount();
   					}
-<FindMembers>{B}*"virtual"{BN}+    	{ current->type += " virtual ";
+<FindMembers>{B}*"virtual"{BN}+    	{ //current->type += " virtual ";
 					  current->virt = Virtual;
 					  lineCount();
 					}
 <FindMembers>{B}*"abstract"{BN}+    	{ 
                                           if (!insidePHP) 
@@ -1101,10 +1123,21 @@
 					  {
 					    addType( current ) ;
 					    current->name = QCString(yytext).stripWhiteSpace();
 					  }
 					}
+<FindMembers>{B}*"interface"{BN}+("class"|"struct"){BN}+ { 
+					  isTypedef=FALSE;
+  					  current->section = Entry::INTERFACE_SEC;
+					  addType( current ) ;
+					  current->type += " interface class" ;
+					  current->fileName  = yyFileName;
+					  current->startLine = yyLineNr;
+					  current->bodyLine  = yyLineNr;
+					  lineCount() ;
+					  BEGIN( CompoundName ) ;
+					}
 <FindMembers>{B}*((("disp")?"interface")|"valuetype"){BN}+ 	{ // M$/Corba IDL interface
 					  lineCount();
                                           if (insideIDL || insideJava || insideCS || insideD || insidePHP)
 					  {
   					    isTypedef=FALSE;
@@ -1184,10 +1217,21 @@
 					  current->bodyLine  = yyLineNr;
 					  lineCount() ;
 					  if (yytext[yyleng-1]=='{') unput('{');
 					  BEGIN( CompoundName ) ;
 					}
+<FindMembers>{B}*"ref"{BN}+("class"|"struct"){BN}+ { 
+					  isTypedef=FALSE;
+  					  current->section = Entry::CLASS_SEC;
+					  addType( current ) ;
+					  current->type += " ref class" ;
+					  current->fileName  = yyFileName;
+					  current->startLine = yyLineNr;
+					  current->bodyLine  = yyLineNr;
+					  lineCount() ;
+					  BEGIN( CompoundName ) ;
+					}
 <FindMembers>{B}*"coclass"{BN}+		{
   					  if (insideIDL)
 					  {
 					    isTypedef=FALSE;
 					    current->section = Entry::CLASS_SEC;
@@ -1218,10 +1262,21 @@
 					  current->bodyLine  = yyLineNr;
 					  lineCount() ;
 					  if (yytext[yyleng-1]=='{') unput('{');
 					  BEGIN( CompoundName ) ;
 					}
+<FindMembers>{B}*"value"{BN}+("class"|"struct"){BN}+ { 
+					  isTypedef=FALSE;
+  					  current->section = Entry::STRUCT_SEC;
+					  addType( current ) ;
+					  current->type += " value class" ;
+					  current->fileName  = yyFileName;
+					  current->startLine = yyLineNr;
+					  current->bodyLine  = yyLineNr;
+					  lineCount() ;
+					  BEGIN( CompoundName ) ;
+					}
 <FindMembers>{B}*{TYPEDEFPREFIX}"union{" |
 <FindMembers>{B}*{TYPEDEFPREFIX}"union"{BN}+ { 
 					  isTypedef=((QCString)yytext).find("typedef")!=-1;
   					  current->section = Entry::UNION_SEC ;
 					  addType( current ) ;
@@ -1244,10 +1299,21 @@
 					  current->bodyLine  = yyLineNr;
 					  lineCount() ;
 					  if (yytext[yyleng-1]=='{') unput('{');
 					  BEGIN( CompoundName ) ;
 					}
+<FindMembers>{B}*"enum"{BN}+("class"|"struct"){BN}+ { 
+					  isTypedef=FALSE;
+  					  current->section = Entry::ENUM_SEC;
+					  addType( current ) ;
+					  current->type += " enum class" ;
+					  current->fileName  = yyFileName;
+					  current->startLine = yyLineNr;
+					  current->bodyLine  = yyLineNr;
+					  lineCount() ;
+					  BEGIN( CompoundName ) ;
+					}
 <Operator>"("{BN}*")"({BN}*"<"[^>]*">"){BN}*/"("  {  // A::operator()<int>(int arg)
   					  lineCount();
 					  current->name += "()";
 					  BEGIN( FindMembers );
 					}
@@ -1760,11 +1826,11 @@
   					  pCopyRoundString = &current->args;
 					  roundCount = 0;
   					  BEGIN( CopyRound );
 					}
 
-<FindMembers>[*&]+			{ current->name += yytext ; 
+<FindMembers>[*&^%]+			{ current->name += yytext ; 
   					  addType( current );
 					}
 <FindMembers,MemberSpec,Function,NextSemi,BitFields,ReadInitializer,OldStyleArgs>";"{BN}*("/**"|"//!"|"/*!"|"///")"<" {
   					  lineCount();
 					  if (current->bodyLine==-1)
@@ -2333,11 +2399,11 @@
 					  }
 					  BEGIN( FindMembers ) ;
 					}
 
 <FindMembers>"["			{ 
-  					  if (!insideCS && 
+  					  if (// !insideCS && 
 					      current->name.isEmpty() || 
 					      current->name=="typedef"
 					     ) // IDL function property
  					  {
           				    squareCount=1;
@@ -3270,10 +3336,29 @@
                                           else
                                           {
                                             unput(*yytext); BEGIN( Function );
                                           }
                                         }
+<FuncQual>{BN}*"new"{BN}*       	{ // new virtual slot for member function
+  					  lineCount() ; 
+  					  current->args += " newslot "; 
+					}
+<FuncQual>{BN}*"abstract"{BN}*       	{ // pure virtual member function
+  					  lineCount() ; 
+					  current->virt = Pure;
+  					  current->args += " override "; 
+					}
+<FuncQual>{BN}*"override"{BN}*       	{ // overridden virtual member function
+  					  lineCount() ; 
+					  current->virt = Virtual;
+  					  current->args += " override "; 
+					}
+<FuncQual>{BN}*"sealed"{BN}*       	{ // sealed member function
+  					  lineCount() ; 
+					  current->memSpec |= Entry::Final;
+  					  current->args += " sealed "; 
+					}
 <FuncQual>{BN}*"const"{BN}*       	{ // const member function
   					  lineCount() ; 
   					  current->args += " const "; 
 					  current->argList->constSpecifier=TRUE;
 					}
@@ -3837,10 +3922,14 @@
 					  else
 					  { 
   					    // Multiple class forward declaration
 					  }
   					}
+<ClassVar>("sealed"|"abstract")/{BN}*(":"|"{") {
+					  //fprintf(stderr,"***** C++/CLI modifier %s on g_curClassName=%s\n",yytext,g_curClassName.data());
+  					  BEGIN( CppCliTypeModifierFollowup ); 
+					}
 <ClassVar>{ID}				{
   					  if (insideIDL && strcmp(yytext,"switch")==0)
 					  {
 					    // Corba IDL style union
 					    roundCount=0;
@@ -3908,11 +3997,11 @@
 					  // category has no variables so push back an empty body
 					  unput('}');
 					  unput('{');
 					  BEGIN( ClassVar );
 					}
-<ClassVar>":"				{ 
+<ClassVar,CppCliTypeModifierFollowup>":"				{ 
   					  current->type.resize(0);
 					  if (current->section == Entry::INTERFACE_SEC || 
 					      current->section == Entry::STRUCT_SEC || 
 					      insidePHP || insideCS || insideD || insideObjC
 					     )
@@ -3962,11 +4051,11 @@
 					    current->startLine = yyLineNr ;
 					    curlyCount=0;
 					    BEGIN( ReadBodyIntf );
 					  }
   					}
-<CompoundName,ClassVar>{B}*"{"{B}*	{ 
+<CompoundName,ClassVar,CppCliTypeModifierFollowup>{B}*"{"{B}*	{ 
                                           current->fileName = yyFileName ;
 					  current->startLine = yyLineNr ;
 					  current->name = removeRedundantWhiteSpace(current->name);
 					  if (current->name.isEmpty() && !isTypedef) // anonymous compound
 					  {
@@ -4010,10 +4099,11 @@
   					  baseName+=yytext;
 					  current->args += ' ';
 					  current->args += yytext;
 					}
 <Bases>{BN}*{ID}("."{ID})*		{ // Java style class
+					  //if (insideCS && baseName == "global::") baseName = "::";
     					  QCString name = substitute(yytext,".","::");
 					  baseName += name;
 					  current->args += ' ';
 					  current->args += name;
     					}
@@ -4290,20 +4380,22 @@
 					}
 <FindMembers>"extern"{BN}*"\"C"("++")?"\""{BN}*("{")?  {
 					  lineCount();
 					}
 <FindMembers>"{"			{
-                                          if (insideCS && !current->name.isEmpty() && !current->type.isEmpty())
+                                          if (/*insideCS &&*/ !current->name.isEmpty() && !current->type.isEmpty())
 					  {
-					    if (containsWord(current->type,"event")) // event
+					    if (mtype == Event || mtype == Property);
+					    else if (containsWord(current->type,"event")) // event
 					    {
   					      current->mtype = mtype = Event;
 					    }
-					    else // property
+					    else if (insideCS) // property
 					    {				
   					      current->mtype = mtype = Property;
 					    }
+					    else REJECT;
 					    current->bodyLine = yyLineNr;
 					    curlyCount=0;
 					    BEGIN(CSAccessorDecl);
 					  }
 					  else
Index: src/translator.h
===================================================================
RCS file: /cvsroot/doxygen/src/translator.h,v
retrieving revision 1.66
diff -u -5 -r1.66 translator.h
--- src/translator.h	11 Jun 2006 07:58:28 -0000	1.66
+++ src/translator.h	23 Oct 2006 20:39:01 -0000
@@ -445,8 +445,13 @@
 //////////////////////////////////////////////////////////////////////////
     
     virtual QCString trCallerGraph() = 0;
     virtual QCString trEnumerationValueDocumentation() = 0;
 
+    virtual QCString trInternalMembers() { return "Internal Member Functions"; }
+    virtual QCString trStaticInternalMembers() { return "Static Internal Member Functions"; }
+    virtual QCString trInternalTypes() { return "Internal Nested Types"; }
+    virtual QCString trInternalAttribs() { return "Internal Attributes"; }
+    virtual QCString trStaticInternalAttribs() { return "Static Internal Attributes"; }
 };
 
 #endif
Index: src/xmlgen.cpp
===================================================================
RCS file: /cvsroot/doxygen/src/xmlgen.cpp,v
retrieving revision 1.91
diff -u -5 -r1.91 xmlgen.cpp
--- src/xmlgen.cpp	10 Sep 2006 20:46:22 -0000	1.91
+++ src/xmlgen.cpp	23 Oct 2006 20:39:02 -0000
@@ -612,10 +612,11 @@
   {
     case Public:    t << "public";     break;
     case Protected: t << "protected";  break;
     case Private:   t << "private";    break;
     case Package:   t << "package";    break;
+    case Internal:  t << "internal";   break;
   }
   t << "\"";
 
   t << " static=\"";
   if (md->isStatic()) t << "yes"; else t << "no";
@@ -838,10 +839,11 @@
         {
           case Public:    t << "public";    break;
           case Protected: t << "protected"; break;
           case Private:   t << "private";   break;
           case Package:   t << "package";   break;
+          case Internal:  t << "internal";  break;
         }
         t << "\">" << endl;
         t << "          <name>";
         writeXMLString(t,emd->name());
         t << "</name>" << endl;
@@ -977,10 +979,11 @@
         {
           case Public:    t << "public";    break;
           case Protected: t << "protected"; break;
           case Private:   t << "private";   break;
           case Package:   t << "package";   break;
+          case Internal:  t << "internal";  break;
         }
         t << "\" virt=\"";
         switch(virt)
         {
           case Normal:  t << "non-virtual";  break;
@@ -1016,10 +1019,11 @@
         {
            case Public:    t << "public";     break;
            case Protected: t << "protected";  break;
            case Private:   t << "private";    break;
            case Package:   t << "package";    break;
+           case Internal:  t << "internal";   break;
         }
         t << "\">" << convertToXML(cd->name()) << "</innerclass>" << endl;
       }
     }
   }
@@ -1149,10 +1153,11 @@
   {
     case Public:    t << "public";    break;
     case Protected: t << "protected"; break;
     case Private:   t << "private";   break;
     case Package:   t << "package";   break;
+    case Internal:  t << "internal";  break;
   }
   t << "\">" << endl;
   t << "    <compoundname>"; 
   writeXMLString(t,cd->name()); 
   t << "</compoundname>" << endl;
@@ -1172,10 +1177,11 @@
       {
         case Public:    t << "public";    break;
         case Protected: t << "protected"; break;
         case Private:   t << "private";   break;
         case Package: ASSERT(0); break;
+        case Internal: ASSERT(0); break;
       }
       t << "\" virt=\"";
       switch(bcd->virt)
       {
         case Normal:  t << "non-virtual";  break;
@@ -1210,10 +1216,11 @@
       {
         case Public:    t << "public";    break;
         case Protected: t << "protected"; break;
         case Private:   t << "private";   break;
         case Package: ASSERT(0); break;
+        case Internal: ASSERT(0); break;
       }
       t << "\" virt=\"";
       switch(bcd->virt)
       {
         case Normal:  t << "non-virtual";  break;
