summaryrefslogtreecommitdiff
path: root/codemaker
diff options
context:
space:
mode:
authorts <ts@openoffice.org>2000-12-11 12:57:15 +0000
committerts <ts@openoffice.org>2000-12-11 12:57:15 +0000
commit446179683f739d6a694f1501c583fb057d41bcbe (patch)
treecc87c78b8627babe02eb223fde60cc10fde670ab /codemaker
parentf45fb74c61da320f79cbf99162b2ae0f22829381 (diff)
added nested type handling
Diffstat (limited to 'codemaker')
-rw-r--r--codemaker/source/cppumaker/cpputype.cxx531
-rw-r--r--codemaker/source/cppumaker/cpputype.hxx22
2 files changed, 431 insertions, 122 deletions
diff --git a/codemaker/source/cppumaker/cpputype.cxx b/codemaker/source/cppumaker/cpputype.cxx
index 057ed5663e8f..5c991f10736e 100644
--- a/codemaker/source/cppumaker/cpputype.cxx
+++ b/codemaker/source/cppumaker/cpputype.cxx
@@ -2,9 +2,9 @@
*
* $RCSfile: cpputype.cxx,v $
*
- * $Revision: 1.2 $
+ * $Revision: 1.3 $
*
- * last change: $Author: jsc $ $Date: 2000-11-06 15:44:06 $
+ * last change: $Author: ts $ $Date: 2000-12-11 13:57:15 $
*
* The Contents of this file are made available subject to the terms of
* either of the following licenses
@@ -94,7 +94,21 @@ CppuType::CppuType(TypeReader& typeReader,
, m_reader(typeReader)
, m_typeMgr((TypeManager&)typeMgr)
, m_dependencies(typeDependencies)
+ , m_bIsNestedType(sal_False)
{
+ // check if this type is nested
+ sal_Int32 i = typeName.lastIndexOf('/');
+
+ if (i >= 0)
+ {
+ OString outerTypeName(typeName.copy(0, i));
+ m_bIsNestedType = (m_typeMgr.getTypeClass(outerTypeName) == RT_TYPE_INTERFACE);
+ }
+
+ // check if this type has nested types
+ RegistryKey key = m_typeMgr.getTypeKey(typeName);
+
+ key.getKeyNames(OUString(), m_nestedTypeNames);
}
CppuType::~CppuType()
@@ -102,11 +116,44 @@ CppuType::~CppuType()
}
+sal_Bool CppuType::isNestedTypeByName(const ::rtl::OString& type)
+{
+ sal_Bool ret = sal_False;
+
+ sal_Int32 i = type.lastIndexOf('/');
+
+ if (i >= 0)
+ {
+ OString outerTypeName(type.copy(0, i));
+ ret = (m_typeMgr.getTypeClass(outerTypeName) == RT_TYPE_INTERFACE);
+ }
+
+ return ret;
+}
+
+sal_Bool CppuType::hasNestedType(const ::rtl::OString& type)
+{
+ sal_Bool ret = sal_False;
+
+ if (m_nestedTypeNames.getLength() > 0)
+ {
+ OUString typeName(OStringToOUString(type, RTL_TEXTENCODING_UTF8));
+
+ for (sal_Int32 i = 0; !ret && (i < m_nestedTypeNames.getLength()); i++)
+ ret = typeName.equals(m_nestedTypeNames.getElement(i).copy(5));
+ }
+
+ return ret;
+}
+
sal_Bool CppuType::dump(CppuOptions* pOptions)
throw( CannotDumpException )
{
sal_Bool ret = sal_False;
+ if (isNestedType())
+ return sal_True;
+
if (pOptions->isValid("-L"))
m_cppuTypeLeak = sal_True;
if (pOptions->isValid("-C"))
@@ -366,6 +413,7 @@ void CppuType::dumpDepIncludes(FileStream& o, const OString& typeName, sal_Char*
OString relType;
while (iter != usingSet.end())
{
+ sal_Bool bDumpThisType = sal_True;
index = (*iter).m_type.lastIndexOf(']');
seqNum = (index > 0 ? ((index+1) / 2) : 0);
@@ -373,69 +421,125 @@ void CppuType::dumpDepIncludes(FileStream& o, const OString& typeName, sal_Char*
if (index > 0)
relType = relType.copy(index+1);
- OString defPrefix("HXX");
- if (sPrefix.equals("HDL"))
- defPrefix = "H";
+ if (isNestedTypeByName(relType) && hasNestedType(relType))
+ bDumpThisType = sal_False;
- if (seqNum > 0 && !bSequenceDumped)
+ if (bDumpThisType)
{
- bSequenceDumped = sal_True;
- o << "#ifndef _COM_SUN_STAR_UNO_SEQUENCE_" << defPrefix
- << "_\n#include <com/sun/star/uno/Sequence." << defPrefix.toLowerCase()
- << ">\n#endif\n";
- }
+ OString defPrefix("HXX");
+ if (sPrefix.equals("HDL"))
+ defPrefix = "H";
- if (getBaseType(relType).getLength() == 0 &&
- m_typeName != relType)
- {
- if (m_typeMgr.getTypeClass(relType) == RT_TYPE_INTERFACE
- && sPrefix.equals("HDL"))
+ if (seqNum > 0 && !bSequenceDumped)
{
- if (!bInterfaceDumped)
- {
- bInterfaceDumped = sal_True;
- o << "#ifndef _COM_SUN_STAR_UNO_REFERENCE_H_\n"
- << "#include <com/sun/star/uno/Reference.h>\n"
- << "#endif\n";
- }
+ bSequenceDumped = sal_True;
+ o << "#ifndef _COM_SUN_STAR_UNO_SEQUENCE_" << defPrefix
+ << "_\n#include <com/sun/star/uno/Sequence." << defPrefix.toLowerCase()
+ << ">\n#endif\n";
+ }
- if (!((*iter).m_use & TYPEUSE_SUPER))
+ if (getBaseType(relType).getLength() == 0 &&
+ m_typeName != relType)
+ {
+ if (m_typeMgr.getTypeClass(relType) == RT_TYPE_INTERFACE
+ && sPrefix.equals("HDL"))
{
- o << endl;
- dumpNameSpace(o, sal_True, sal_False, relType);
- o << "\nclass " << scopedName(m_typeName, relType, sal_True) << ";\n";
- dumpNameSpace(o, sal_False, sal_False, relType);
- o << "\n\n";
+ if (!bInterfaceDumped)
+ {
+ bInterfaceDumped = sal_True;
+ o << "#ifndef _COM_SUN_STAR_UNO_REFERENCE_H_\n"
+ << "#include <com/sun/star/uno/Reference.h>\n"
+ << "#endif\n";
+ }
+
+ if (!((*iter).m_use & TYPEUSE_SUPER))
+ {
+ if (isNestedTypeByName(relType))
+ {
+ sal_Int32 iLastS = relType.lastIndexOf('/');
+
+ OString outerNamespace(relType.copy(0,iLastS));
+ OString innerClass(relType.copy(iLastS+1));
+
+ iLastS = outerNamespace.lastIndexOf('/');
+ OString outerClass(outerNamespace.copy(iLastS+1));
+
+ o << endl;
+ dumpNameSpace(o, sal_True, sal_False, outerNamespace);
+ o << "\nclass " << outerClass << "::" << innerClass << ";\n";
+ dumpNameSpace(o, sal_False, sal_False, outerNamespace);
+ o << "\n\n";
+ }
+ else
+ {
+ o << endl;
+ dumpNameSpace(o, sal_True, sal_False, relType);
+ o << "\nclass " << scopedName(m_typeName, relType, sal_True) << ";\n";
+ dumpNameSpace(o, sal_False, sal_False, relType);
+ o << "\n\n";
+ }
+ } else
+ {
+ if (isNestedTypeByName(relType))
+ {
+ sal_Int32 iLastS = relType.lastIndexOf('/');
+
+ OString outerNamespace(relType.copy(0,iLastS));
+
+ dumpInclude(o, outerNamespace, prefix);
+ }
+ else
+ dumpInclude(o, relType, prefix);
+ }
} else
{
- dumpInclude(o, relType, prefix);
+ if (isNestedTypeByName(relType))
+ {
+ sal_Int32 iLastS = relType.lastIndexOf('/');
+
+ OString outerNamespace(relType.copy(0,iLastS));
+
+ dumpInclude(o, outerNamespace, prefix);
+ }
+ else
+ dumpInclude(o, relType, prefix);
}
} else
+ if (relType == "any")
+ {
+ o << "#ifndef _COM_SUN_STAR_UNO_ANY_" << defPrefix
+ << "_\n#include <com/sun/star/uno/Any." << defPrefix.toLowerCase()
+ << ">\n#endif\n";
+ } else
+ if (relType == "type")
{
- dumpInclude(o, relType, prefix);
+ o << "#ifndef _COM_SUN_STAR_UNO_TYPE_" << defPrefix
+ << "_\n#include <com/sun/star/uno/Type." << defPrefix.toLowerCase()
+ << ">\n#endif\n";
+ } else
+ if (relType == "string" && sPrefix.equals("HDL"))
+ {
+ o << "#ifndef _RTL_USTRING_HXX_\n"
+ << "#include <rtl/ustring.hxx>\n"
+ << "#endif\n";
}
- } else
- if (relType == "any")
- {
- o << "#ifndef _COM_SUN_STAR_UNO_ANY_" << defPrefix
- << "_\n#include <com/sun/star/uno/Any." << defPrefix.toLowerCase()
- << ">\n#endif\n";
- } else
- if (relType == "type")
- {
- o << "#ifndef _COM_SUN_STAR_UNO_TYPE_" << defPrefix
- << "_\n#include <com/sun/star/uno/Type." << defPrefix.toLowerCase()
- << ">\n#endif\n";
- } else
- if (relType == "string" && sPrefix.equals("HDL"))
- {
- o << "#ifndef _RTL_USTRING_HXX_\n"
- << "#include <rtl/ustring.hxx>\n"
- << "#endif\n";
}
iter++;
}
+ if (m_typeName.equals(typeName) && (getNestedTypeNames().getLength() > 0))
+ {
+ o << "// includes for nested types\n\n";
+
+ for (sal_Int32 i = 0; i < getNestedTypeNames().getLength(); i++)
+ {
+ OUString s(getNestedTypeNames().getElement(i));
+
+ OString nestedName(s.getStr(), s.getLength(), RTL_TEXTENCODING_DONTKNOW);
+
+ dumpDepIncludes(o, nestedName, prefix);
+ }
+ }
}
void CppuType::dumpNameSpace(FileStream& o, sal_Bool bOpen, sal_Bool bFull, const OString& type)
@@ -1399,6 +1503,52 @@ sal_Bool InterfaceType::dumpHFile(FileStream& o)
dumpDepIncludes(o, m_typeName, "hdl");
o << endl;
dumpNameSpace(o);
+ dumpDeclaration(o);
+ dumpNameSpace(o, sal_False);
+
+ o << "\nnamespace com { namespace sun { namespace star { namespace uno {\n"
+ << "class Type;\n} } } }\n\n";
+
+ if (m_cppuTypeStatic)
+ o << "static";
+ else
+ o << "inline";
+ o << " const ::com::sun::star::uno::Type& SAL_CALL getCppuType( ";
+ dumpType(o, m_typeName, sal_True, sal_False);
+ o << "* );\n\n";
+
+ if (getNestedTypeNames().getLength() > 0)
+ {
+ o << indent() << "// nested types\n\n";
+ for (sal_Int32 i = 0; i < getNestedTypeNames().getLength(); i++)
+ {
+ OUString s(getNestedTypeNames().getElement(i));
+
+ OString nestedName(s.getStr(), s.getLength(), RTL_TEXTENCODING_DONTKNOW);
+
+ nestedName = checkRealBaseType(nestedName.copy(5));
+
+ if (nestedName.lastIndexOf(']') < 0)
+ {
+ if (m_cppuTypeStatic)
+ o << "static";
+ else
+ o << "inline";
+
+ o << " const ::com::sun::star::uno::Type& SAL_CALL getCppuType( ";
+ dumpType(o, nestedName, sal_True, sal_False);
+ o << "* );\n\n";
+ }
+ }
+ }
+
+ o << "#endif // "<< headerDefine << endl;
+ return sal_True;
+}
+
+sal_Bool InterfaceType::dumpDeclaration(FileStream& o)
+ throw( CannotDumpException )
+{
o << "\nclass " << m_name;
OString superType(m_reader.getSuperTypeName());
@@ -1406,6 +1556,65 @@ sal_Bool InterfaceType::dumpHFile(FileStream& o)
o << " : public " << scopedName(m_typeName, superType);
o << "\n{\npublic:\n";
+
+ if (getNestedTypeNames().getLength() > 0)
+ {
+ inc();
+ o << indent() << "// nested types\n\n";
+ for (sal_Int32 i = 0; i < getNestedTypeNames().getLength(); i++)
+ {
+ OUString s(getNestedTypeNames().getElement(i));
+
+ OString nestedName(s.getStr(), s.getLength(), RTL_TEXTENCODING_DONTKNOW);
+
+ nestedName = nestedName.copy(5);
+
+ o << indent() << "// " << nestedName.getStr() << "\n";
+
+ TypeReader reader(m_typeMgr.getTypeReader(nestedName));
+
+ if (reader.isValid())
+ {
+ RTTypeClass typeClass = reader.getTypeClass();
+ switch (typeClass) {
+ case RT_TYPE_INTERFACE:
+ {
+ InterfaceType iType(reader, nestedName, m_typeMgr, m_dependencies);
+ iType.dumpDeclaration(o);
+ }
+ break;
+ case RT_TYPE_STRUCT:
+ {
+ StructureType sType(reader, nestedName, m_typeMgr, m_dependencies);
+ sType.dumpDeclaration(o);
+ }
+ break;
+ case RT_TYPE_ENUM:
+ {
+ EnumType enType(reader, nestedName, m_typeMgr, m_dependencies);
+ enType.dumpDeclaration(o);
+ }
+ break;
+ case RT_TYPE_EXCEPTION:
+ {
+ ExceptionType eType(reader, nestedName, m_typeMgr, m_dependencies);
+ eType.dumpDeclaration(o);
+ }
+ break;
+ case RT_TYPE_TYPEDEF:
+ {
+ TypeDefType tdType(reader, nestedName, m_typeMgr, m_dependencies);
+ tdType.dumpDeclaration(o);
+ }
+ break;
+ default:
+ break;
+ }
+ }
+ }
+ dec();
+ }
+
inc();
dumpAttributes(o);
@@ -1414,20 +1623,6 @@ sal_Bool InterfaceType::dumpHFile(FileStream& o)
dec();
o << "};\n\n";
- dumpNameSpace(o, sal_False);
-
- o << "\nnamespace com { namespace sun { namespace star { namespace uno {\n"
- << "class Type;\n} } } }\n\n";
-
- if (m_cppuTypeStatic)
- o << "static";
- else
- o << "inline";
- o << " const ::com::sun::star::uno::Type& SAL_CALL getCppuType( ";
- dumpType(o, m_typeName, sal_True, sal_False);
- o << "* );\n\n";
-
- o << "#endif // "<< headerDefine << endl;
return sal_True;
}
@@ -1448,6 +1643,62 @@ sal_Bool InterfaceType::dumpHxxFile(FileStream& o)
dumpGetCppuType(o);
+ if (getNestedTypeNames().getLength() > 0)
+ {
+ o << indent() << "// nested types\n\n";
+ for (sal_Int32 i = 0; i < getNestedTypeNames().getLength(); i++)
+ {
+ OUString s(getNestedTypeNames().getElement(i));
+
+ OString nestedName(s.getStr(), s.getLength(), RTL_TEXTENCODING_DONTKNOW);
+
+ nestedName = nestedName.copy(5);
+
+ o << indent() << "// " << nestedName.getStr() << "\n";
+
+ TypeReader reader(m_typeMgr.getTypeReader(nestedName));
+
+ if (reader.isValid())
+ {
+ RTTypeClass typeClass = reader.getTypeClass();
+ switch (typeClass) {
+ case RT_TYPE_INTERFACE:
+ {
+ InterfaceType iType(reader, nestedName, m_typeMgr, m_dependencies);
+ iType.dumpGetCppuType(o);
+ }
+ break;
+ case RT_TYPE_STRUCT:
+ {
+ StructureType sType(reader, nestedName, m_typeMgr, m_dependencies);
+ sType.dumpGetCppuType(o);
+ }
+ break;
+ case RT_TYPE_ENUM:
+ {
+ EnumType enType(reader, nestedName, m_typeMgr, m_dependencies);
+ enType.dumpGetCppuType(o);
+ }
+ break;
+ case RT_TYPE_EXCEPTION:
+ {
+ ExceptionType eType(reader, nestedName, m_typeMgr, m_dependencies);
+ eType.dumpGetCppuType(o);
+ }
+ break;
+ case RT_TYPE_TYPEDEF:
+ {
+ TypeDefType tdType(reader, nestedName, m_typeMgr, m_dependencies);
+ tdType.dumpGetCppuType(o);
+ }
+ break;
+ default:
+ break;
+ }
+ }
+ }
+ }
+
o << "\n#endif // "<< headerDefine << endl;
return sal_True;
}
@@ -2302,6 +2553,18 @@ sal_Bool ModuleType::dumpHFile(FileStream& o)
dumpNameSpace(o, sal_True, sal_True);
o << endl;
+ dumpDeclaration(o);
+ o << endl;
+
+ dumpNameSpace(o, sal_False, sal_True);
+ o << "\n#endif // "<< headerDefine << endl;
+
+ return sal_True;
+}
+
+sal_Bool ModuleType::dumpDeclaration(FileStream& o)
+ throw( CannotDumpException )
+{
sal_uInt32 fieldCount = m_reader.getFieldCount();
RTFieldAccess access = RT_ACCESS_INVALID;
OString fieldName;
@@ -2323,10 +2586,6 @@ sal_Bool ModuleType::dumpHFile(FileStream& o)
}
}
- o << endl;
- dumpNameSpace(o, sal_False, sal_True);
- o << "\n#endif // "<< headerDefine << endl;
-
return sal_True;
}
@@ -2508,6 +2767,29 @@ sal_Bool StructureType::dumpHFile(FileStream& o)
dumpNameSpace(o);
+ dumpDeclaration(o);
+
+ dumpNameSpace(o, sal_False);
+
+ o << "\nnamespace com { namespace sun { namespace star { namespace uno {\n"
+ << "class Type;\n} } } }\n\n";
+
+ if (m_cppuTypeStatic)
+ o << "static";
+ else
+ o << "inline";
+ o << " const ::com::sun::star::uno::Type& SAL_CALL getCppuType( ";
+ dumpType(o, m_typeName, sal_True, sal_False);
+ o << "* );\n\n";
+
+ o << "#endif // "<< headerDefine << endl;
+
+ return sal_True;
+}
+
+sal_Bool StructureType::dumpDeclaration(FileStream& o)
+ throw( CannotDumpException )
+{
o << "\n#ifdef SAL_W32\n"
<< "# pragma pack(push, 8)\n"
<< "#elif defined(SAL_OS2)\n"
@@ -2540,7 +2822,7 @@ sal_Bool StructureType::dumpHFile(FileStream& o)
access = m_reader.getFieldAccess(i);
if (access == RT_ACCESS_CONST || access == RT_ACCESS_INVALID)
- continue;
+ continue;
fieldName = m_reader.getFieldName(i);
fieldType = m_reader.getFieldType(i);
@@ -2580,21 +2862,6 @@ sal_Bool StructureType::dumpHFile(FileStream& o)
<< "# pragma pack()\n"
<< "#endif\n\n";
- dumpNameSpace(o, sal_False);
-
- o << "\nnamespace com { namespace sun { namespace star { namespace uno {\n"
- << "class Type;\n} } } }\n\n";
-
- if (m_cppuTypeStatic)
- o << "static";
- else
- o << "inline";
- o << " const ::com::sun::star::uno::Type& SAL_CALL getCppuType( ";
- dumpType(o, m_typeName, sal_True, sal_False);
- o << "* );\n\n";
-
- o << "#endif // "<< headerDefine << endl;
-
return sal_True;
}
@@ -2851,15 +3118,39 @@ sal_Bool ExceptionType::dumpHFile(FileStream& o)
dumpNameSpace(o);
+ dumpDeclaration(o);
+
+ dumpNameSpace(o, sal_False);
+
+ o << "\nnamespace com { namespace sun { namespace star { namespace uno {\n"
+ << "class Type;\n} } } }\n\n";
+
+ if (m_cppuTypeStatic)
+ o << "static";
+ else
+ o << "inline";
+ o << " const ::com::sun::star::uno::Type& SAL_CALL getCppuType( ";
+ dumpType(o, m_typeName, sal_True, sal_False);
+ o << "* );\n\n";
+
+ o << "#endif // "<< headerDefine << endl;
+
+ return sal_True;
+}
+
+sal_Bool ExceptionType::dumpDeclaration(FileStream& o)
+ throw( CannotDumpException )
+{
o << "\nclass " << m_name;
OString superType(m_reader.getSuperTypeName());
if (superType.getLength() > 0)
- o << " : public " << scopedName(m_typeName, superType);
+ o << " : public " << scopedName(m_typeName, superType);
o << "\n{\npublic:\n";
inc();
o << indent() << "inline " << m_name << "();\n\n";
+// o << indent() << "inline " << m_name << "() { }\n\n";
sal_uInt32 fieldCount = m_reader.getFieldCount();
RTFieldAccess access = RT_ACCESS_INVALID;
@@ -2878,7 +3169,7 @@ sal_Bool ExceptionType::dumpHFile(FileStream& o)
access = m_reader.getFieldAccess(i);
if (access == RT_ACCESS_CONST || access == RT_ACCESS_INVALID)
- continue;
+ continue;
fieldName = m_reader.getFieldName(i);
fieldType = m_reader.getFieldType(i);
@@ -2913,21 +3204,6 @@ sal_Bool ExceptionType::dumpHFile(FileStream& o)
dec();
o << "};\n\n";
- dumpNameSpace(o, sal_False);
-
- o << "\nnamespace com { namespace sun { namespace star { namespace uno {\n"
- << "class Type;\n} } } }\n\n";
-
- if (m_cppuTypeStatic)
- o << "static";
- else
- o << "inline";
- o << " const ::com::sun::star::uno::Type& SAL_CALL getCppuType( ";
- dumpType(o, m_typeName, sal_True, sal_False);
- o << "* );\n\n";
-
- o << "#endif // "<< headerDefine << endl;
-
return sal_True;
}
@@ -3201,6 +3477,29 @@ sal_Bool EnumType::dumpHFile(FileStream& o)
dumpNameSpace(o);
+ dumpDeclaration(o);
+
+ dumpNameSpace(o, sal_False);
+
+ o << "\nnamespace com { namespace sun { namespace star { namespace uno {\n"
+ << "class Type;\n} } } }\n\n";
+
+ if (m_cppuTypeStatic)
+ o << "static";
+ else
+ o << "inline";
+ o << " const ::com::sun::star::uno::Type& SAL_CALL getCppuType( ";
+ dumpType(o, m_typeName, sal_True, sal_False);
+ o << "* );\n\n";
+
+ o << "#endif // "<< headerDefine << endl;
+
+ return sal_True;
+}
+
+sal_Bool EnumType::dumpDeclaration(FileStream& o)
+ throw( CannotDumpException )
+{
o << "\nenum " << m_name << "\n{\n";
inc();
@@ -3224,8 +3523,7 @@ sal_Bool EnumType::dumpHFile(FileStream& o)
else
value++;
- o << indent() << m_name << "_" << fieldName << " = "
- << value << ",\n";
+ o << indent() << m_name << "_" << fieldName << " = " << value << ",\n";
}
o << indent() << m_name << "_MAKE_FIXED_SIZE = SAL_MAX_ENUM\n";
@@ -3233,21 +3531,6 @@ sal_Bool EnumType::dumpHFile(FileStream& o)
dec();
o << "};\n\n";
- dumpNameSpace(o, sal_False);
-
- o << "\nnamespace com { namespace sun { namespace star { namespace uno {\n"
- << "class Type;\n} } } }\n\n";
-
- if (m_cppuTypeStatic)
- o << "static";
- else
- o << "inline";
- o << " const ::com::sun::star::uno::Type& SAL_CALL getCppuType( ";
- dumpType(o, m_typeName, sal_True, sal_False);
- o << "* );\n\n";
-
- o << "#endif // "<< headerDefine << endl;
-
return sal_True;
}
@@ -3445,9 +3728,7 @@ sal_Bool TypeDefType::dumpHFile(FileStream& o)
dumpNameSpace(o);
- o << "\ntypedef ";
- dumpType(o, m_reader.getSuperTypeName());
- o << " " << m_name << ";\n\n";
+ dumpDeclaration(o);
dumpNameSpace(o, sal_False);
@@ -3461,6 +3742,16 @@ sal_Bool TypeDefType::dumpHFile(FileStream& o)
return sal_True;
}
+sal_Bool TypeDefType::dumpDeclaration(FileStream& o)
+ throw( CannotDumpException )
+{
+ o << "\ntypedef ";
+ dumpType(o, m_reader.getSuperTypeName());
+ o << " " << m_name << ";\n\n";
+
+ return sal_True;
+}
+
sal_Bool TypeDefType::dumpHxxFile(FileStream& o)
throw( CannotDumpException )
{
diff --git a/codemaker/source/cppumaker/cpputype.hxx b/codemaker/source/cppumaker/cpputype.hxx
index 7002fd12d181..a3ffff458fc5 100644
--- a/codemaker/source/cppumaker/cpputype.hxx
+++ b/codemaker/source/cppumaker/cpputype.hxx
@@ -2,9 +2,9 @@
*
* $RCSfile: cpputype.hxx,v $
*
- * $Revision: 1.1.1.1 $
+ * $Revision: 1.2 $
*
- * last change: $Author: hr $ $Date: 2000-09-18 15:25:27 $
+ * last change: $Author: ts $ $Date: 2000-12-11 13:57:15 $
*
* The Contents of this file are made available subject to the terms of
* either of the following licenses
@@ -156,6 +156,15 @@ protected:
::rtl::OString checkRealBaseType(const ::rtl::OString& type, sal_Bool bResolveTypeOnly = sal_False);
void dumpCppuGetTypeMemberDecl(FileStream& o, CppuTypeDecl eDeclFlag);
+ sal_Bool isNestedType()
+ { return m_bIsNestedType; };
+
+ RegistryKeyNames& getNestedTypeNames()
+ { return m_nestedTypeNames; };
+
+ sal_Bool isNestedTypeByName(const ::rtl::OString& type);
+ sal_Bool hasNestedType(const ::rtl::OString& type);
+
protected:
sal_uInt32 m_inheritedMemberCount;
@@ -168,6 +177,8 @@ protected:
TypeReader m_reader;
TypeManager& m_typeMgr;
TypeDependency m_dependencies;
+ sal_Bool m_bIsNestedType;
+ RegistryKeyNames m_nestedTypeNames;
};
class InterfaceType : public CppuType
@@ -180,6 +191,7 @@ public:
virtual ~InterfaceType();
+ sal_Bool dumpDeclaration(FileStream& o) throw( CannotDumpException );
sal_Bool dumpHFile(FileStream& o) throw( CannotDumpException );
sal_Bool dumpHxxFile(FileStream& o) throw( CannotDumpException );
@@ -217,6 +229,8 @@ public:
virtual ~ModuleType();
virtual sal_Bool dump(CppuOptions* pOptions) throw( CannotDumpException );
+
+ sal_Bool dumpDeclaration(FileStream& o) throw( CannotDumpException );
sal_Bool dumpHFile(FileStream& o) throw( CannotDumpException );
sal_Bool dumpHxxFile(FileStream& o) throw( CannotDumpException );
sal_Bool hasConstants();
@@ -245,6 +259,7 @@ public:
virtual ~StructureType();
+ sal_Bool dumpDeclaration(FileStream& o) throw( CannotDumpException );
sal_Bool dumpHFile(FileStream& o) throw( CannotDumpException );
sal_Bool dumpHxxFile(FileStream& o) throw( CannotDumpException );
@@ -261,6 +276,7 @@ public:
virtual ~ExceptionType();
+ sal_Bool dumpDeclaration(FileStream& o) throw( CannotDumpException );
sal_Bool dumpHFile(FileStream& o) throw( CannotDumpException );
sal_Bool dumpHxxFile(FileStream& o) throw( CannotDumpException );
@@ -277,6 +293,7 @@ public:
virtual ~EnumType();
+ sal_Bool dumpDeclaration(FileStream& o) throw( CannotDumpException );
sal_Bool dumpHFile(FileStream& o) throw( CannotDumpException );
sal_Bool dumpHxxFile(FileStream& o) throw( CannotDumpException );
@@ -294,6 +311,7 @@ public:
virtual ~TypeDefType();
+ sal_Bool dumpDeclaration(FileStream& o) throw( CannotDumpException );
sal_Bool dumpHFile(FileStream& o) throw( CannotDumpException );
sal_Bool dumpHxxFile(FileStream& o) throw( CannotDumpException );