Commit 210582f8 authored by Dimitri van Heesch's avatar Dimitri van Heesch

Release-1.2.15-20020421

parent 481a46c5
DOXYGEN Version 1.2.15-20020407
DOXYGEN Version 1.2.15-20020421
Please read the installation section of the manual for instructions.
--------
Dimitri van Heesch (07 April 2002)
Dimitri van Heesch (21 April 2002)
DOXYGEN Version 1.2.15_20020407
DOXYGEN Version 1.2.15_20020421
Please read INSTALL for compilation instructions.
......@@ -17,4 +17,4 @@ to subscribe to the lists or to visit the archives.
Enjoy,
Dimitri van Heesch (dimitri@stack.nl) (07 April 2002)
Dimitri van Heesch (dimitri@stack.nl) (21 April 2002)
1.2.15-20020407
1.2.15-20020421
......@@ -9,6 +9,15 @@ class ICompound;
class ISection;
class INode;
class IString
{
public:
virtual const char *latin1() const = 0;
virtual unsigned short unicodeCharAt(int index) const = 0;
virtual bool isEmpty() const = 0;
virtual int length() const = 0;
};
class ILinkedText
{
public:
......@@ -19,17 +28,17 @@ class ILinkedText
class ILT_Text : public ILinkedText
{
public:
virtual QString text() const = 0;
virtual const IString *text() const = 0;
};
class ILT_Ref : public ILinkedText
{
public:
enum TargetKind { Member, Compound };
virtual QString id() const = 0;
virtual const IString *id() const = 0;
virtual TargetKind targetKind() const = 0;
virtual QString external() const = 0;
virtual QString text() const = 0;
virtual const IString *external() const = 0;
virtual const IString *text() const = 0;
};
class ILinkedTextIterator
......@@ -47,10 +56,10 @@ class IParam
{
public:
virtual ILinkedTextIterator *type() const = 0;
virtual QString declarationName() const = 0;
virtual QString definitionName() const = 0;
virtual QString attrib() const = 0;
virtual QString arraySpecifier() const = 0;
virtual const IString * declarationName() const = 0;
virtual const IString * definitionName() const = 0;
virtual const IString * attrib() const = 0;
virtual const IString * arraySpecifier() const = 0;
virtual ILinkedTextIterator *defaultValue() const = 0;
};
......@@ -69,7 +78,7 @@ class IMemberReference
{
public:
virtual IMember *member() const = 0;
virtual QString memberName() const = 0;
virtual const IString * memberName() const = 0;
};
class IMemberReferenceIterator
......@@ -86,8 +95,8 @@ class IMemberReferenceIterator
class IEnumValue
{
public:
virtual QString name() const = 0;
virtual QString initializer() const = 0;
virtual const IString * name() const = 0;
virtual const IString * initializer() const = 0;
};
class IEnumValueIterator
......@@ -136,7 +145,7 @@ class IDoc
Row, // 27 -> IDocRow
Entry, // 28 -> IDocEntry
Section, // 29 -> IDocSection
Root // 30 -> IDocRoot
Root, // 30 -> IDocRoot
};
virtual Kind kind() const = 0;
};
......@@ -153,7 +162,8 @@ class IDocMarkup : public IDoc
Subscript = 0x08,
Superscript = 0x10,
SmallFont = 0x20,
Center = 0x40
Center = 0x40,
Preformatted = 0x80
};
};
......@@ -167,7 +177,7 @@ class IDocPara : public IDoc
class IDocText : public IDocMarkup
{
public:
virtual QString text() const = 0;
virtual const IString * text() const = 0;
virtual int markup() const = 0;
};
......@@ -207,7 +217,7 @@ class IDocParameterList : public IDoc
class IDocParameter : public IDoc
{
public:
virtual QString name() const = 0;
virtual const IString * name() const = 0;
virtual IDocPara *description() const = 0;
};
......@@ -229,7 +239,7 @@ class IDocSimpleSect : public IDoc
Examples
};
virtual Types type() const = 0;
virtual QString typeString() const = 0;
virtual const IString * typeString() const = 0;
virtual IDocTitle *title() const = 0;
virtual IDocPara *description() const = 0;
};
......@@ -238,10 +248,10 @@ class IDocRef : public IDoc
{
public:
enum TargetKind { Member, Compound };
virtual QString refId() const = 0;
virtual const IString * refId() const = 0;
virtual TargetKind targetKind() const = 0;
virtual QString external() const = 0;
virtual QString text() const = 0;
virtual const IString * external() const = 0;
virtual const IString * text() const = 0;
};
class IDocVariableList : public IDoc
......@@ -253,7 +263,7 @@ class IDocVariableList : public IDoc
class IDocVariableListEntry : public IDoc
{
public:
virtual QString term() const = 0;
virtual const IString * term() const = 0;
virtual IDocPara *description() const = 0;
};
......@@ -268,21 +278,21 @@ class IDocLineBreak : public IDoc
class IDocULink : public IDoc
{
public:
virtual QString url() const = 0;
virtual QString text() const = 0;
virtual const IString * url() const = 0;
virtual const IString * text() const = 0;
};
class IDocEMail : public IDoc
{
public:
virtual QString address() const = 0;
virtual const IString * address() const = 0;
};
class IDocLink : public IDoc
{
public:
virtual QString refId() const = 0;
virtual QString text() const = 0;
virtual const IString * refId() const = 0;
virtual const IString * text() const = 0;
};
class IDocProgramListing : public IDoc
......@@ -295,7 +305,7 @@ class IDocCodeLine : public IDoc
{
public:
virtual int lineNumber() const = 0;
virtual QString refId() const = 0;
virtual const IString * refId() const = 0;
virtual IDocIterator *codeElements() const = 0;
};
......@@ -315,29 +325,29 @@ class IDocHighlight : public IDoc
class IDocFormula : public IDoc
{
public:
virtual QString id() const = 0;
virtual QString text() const = 0;
virtual const IString * id() const = 0;
virtual const IString * text() const = 0;
};
class IDocImage : public IDoc
{
public:
virtual QString name() const = 0;
virtual QString caption() const = 0;
virtual const IString * name() const = 0;
virtual const IString * caption() const = 0;
};
class IDocDotFile : public IDoc
{
public:
virtual QString name() const = 0;
virtual QString caption() const = 0;
virtual const IString * name() const = 0;
virtual const IString * caption() const = 0;
};
class IDocIndexEntry : public IDoc
{
public:
virtual QString primary() const = 0;
virtual QString secondary() const = 0;
virtual const IString * primary() const = 0;
virtual const IString * secondary() const = 0;
};
class IDocTable : public IDoc
......@@ -345,7 +355,7 @@ class IDocTable : public IDoc
public:
virtual IDocIterator *rows() const = 0;
virtual int numColumns() const = 0;
virtual QString caption() const = 0;
virtual const IString * caption() const = 0;
};
class IDocRow : public IDoc
......@@ -363,7 +373,7 @@ class IDocEntry : public IDoc
class IDocSection : public IDoc
{
public:
virtual QString id() const = 0;
virtual const IString * id() const = 0;
virtual int level() const = 0;
virtual IDocIterator *title() const = 0;
};
......@@ -388,7 +398,7 @@ class IDocIterator
class IEdgeLabel
{
public:
virtual QString label() const = 0;
virtual const IString * label() const = 0;
};
class IEdgeLabelIterator
......@@ -410,7 +420,7 @@ class IChildNode
};
virtual INode * node() const = 0;
virtual NodeRelation relation() const = 0;
virtual QString relationString() const = 0;
virtual const IString * relationString() const = 0;
virtual IEdgeLabelIterator *edgeLabels() const = 0;
};
......@@ -428,9 +438,9 @@ class IChildNodeIterator
class INode
{
public:
virtual QString id() const = 0;
virtual QString label() const = 0;
virtual QString linkId() const = 0;
virtual const IString * id() const = 0;
virtual const IString * label() const = 0;
virtual const IString * linkId() const = 0;
virtual IChildNodeIterator *children() const = 0;
};
......@@ -461,13 +471,13 @@ class IMember
virtual ICompound *compound() const = 0;
virtual ISection *section() const = 0;
virtual MemberKind kind() const = 0;
virtual QString kindString() const = 0;
virtual QString id() const = 0;
virtual QString protection() const = 0;
virtual QString virtualness() const = 0;
virtual const IString * kindString() const = 0;
virtual const IString * id() const = 0;
virtual const IString * protection() const = 0;
virtual const IString * virtualness() const = 0;
virtual ILinkedTextIterator *type() const = 0;
virtual QString typeString() const = 0;
virtual QString name() const = 0;
virtual const IString * typeString() const = 0;
virtual const IString * name() const = 0;
virtual bool isConst() const = 0;
virtual bool isVolatile() const = 0;
virtual IParamIterator *params() const = 0;
......@@ -477,7 +487,7 @@ class IMember
virtual IMemberReferenceIterator *referencedBy() const = 0;
virtual int bodyStart() const = 0;
virtual int bodyEnd() const = 0;
virtual QString definitionFile() const = 0;
virtual const IString * definitionFile() const = 0;
virtual int definitionLine() const = 0;
virtual IMemberReference *reimplements() const = 0;
virtual IMemberReferenceIterator *reimplementedBy() const = 0;
......@@ -512,7 +522,7 @@ class ISection
Friend, Related, Defines, Prototypes, Typedefs,
Enums, Functions, Variables
};
virtual QString kindString() const = 0;
virtual const IString * kindString() const = 0;
virtual SectionKind kind() const = 0;
virtual IMemberIterator *members() const = 0;
virtual bool isStatic() const = 0;
......@@ -541,12 +551,12 @@ class ICompound
Namespace, File, Group, Page
};
/*! Returns the name of this compound */
virtual QString name() const = 0;
virtual const IString * name() const = 0;
/*! Returns the id of this compound. The id is a
* unique string representing a specific compound object.
*/
virtual QString id() const = 0;
virtual const IString * id() const = 0;
/*! Returns the kind of compound. See #CompoundKind for possible
* values.
......@@ -556,7 +566,7 @@ class ICompound
/*! Returns a string representation of the compound kind.
* @see kind()
*/
virtual QString kindString() const = 0;
virtual const IString * kindString() const = 0;
/*! Returns an iterator for the different member sections in this
* compound.
......@@ -576,14 +586,14 @@ class ICompound
/*! Returns an interface to a member given its id.
* @param id The member id.
*/
virtual IMember *memberById(const QString &id) const = 0;
virtual IMember *memberById(const char * id) const = 0;
/*! Returns a list of all members within the compound having a certain
* name. Member overloading is the reason why there can be more than
* one member.
* @param name The name of the member.
*/
virtual IMemberIterator *memberByName(const QString &name) const = 0;
virtual IMemberIterator *memberByName(const char * name) const = 0;
/*! Decreases the reference counter for this compound. If it reaches
* zero, the memory for the compound will be released.
......@@ -668,11 +678,13 @@ class INamespace : public ICompound
class IFile : public ICompound
{
public:
virtual IGraph *includeDependencyGraph() const = 0;
virtual IGraph *includedByDependencyGraph() const = 0;
// file:
// includes()
// includedBy()
// IDotGraph *includeDependencyGraph()
// IDotGraph *includedByDependencyGraph()
// IDocProgramListing *source()
// ICompound *innerNamespaces()
// ICompoundIterator *innerClasses()
......@@ -704,26 +716,26 @@ class IDoxygen
* compound id this function is much more efficient than iterating
* over the compound list. Returns 0 if the id is not valid.
*/
virtual ICompound *compoundById(const QString &id) const = 0;
virtual ICompound *compoundById(const char * id) const = 0;
/*! Returns a compound given its name (including the scope).
* Returns 0 if the name is not found in the project.
*/
virtual ICompound *compoundByName(const QString &name) const = 0;
virtual ICompound *compoundByName(const char * name) const = 0;
/*! Returns an interface to a compound containing a member given it the
* member's id. Given the ICompound interface one can use the same id
* to obtain the IMember interface.
* @param id The member id.
*/
virtual ICompound *memberById(const QString &id) const = 0;
virtual ICompound *memberById(const char * id) const = 0;
/*! Returns a list of all compounds containing at least one members
* with a certain name. Each compound can be asked to return the
* list of members with that name.
* @param name The name of the member.
*/
virtual ICompoundIterator *memberByName(const QString &name) const = 0;
virtual ICompoundIterator *memberByName(const char * name) const = 0;
/*! Releases the memory for the object hierarchy obtained by
* createdObjecModelFromXML(). First release all iterators before calling
......
......@@ -144,7 +144,8 @@ void compoundhandler_exit()
CompoundHandler::CompoundHandler(const QString &xmlDir)
: m_brief(0), m_detailed(0), m_programListing(0),
m_xmlDir(xmlDir), m_refCount(1), m_memberDict(257), m_memberNameDict(257),
m_mainHandler(0), m_inheritanceGraph(0), m_collaborationGraph(0)
m_mainHandler(0), m_inheritanceGraph(0), m_collaborationGraph(0),
m_includeDependencyGraph(0), m_includedByDependencyGraph(0)
{
m_superClasses.setAutoDelete(TRUE);
m_subClasses.setAutoDelete(TRUE);
......@@ -182,9 +183,14 @@ CompoundHandler::CompoundHandler(const QString &xmlDir)
addStartHandler("collaborationgraph",this,&CompoundHandler::startCollaborationGraph);
addStartHandler("incdepgraph",this,&CompoundHandler::startIncludeDependencyGraph);
addStartHandler("invincdepgraph",this,&CompoundHandler::startIncludedByDependencyGraph);
addStartHandler("innerclass",this,&CompoundHandler::startInnerClass);
addEndHandler("innerclass");
}
CompoundHandler::~CompoundHandler()
......@@ -195,6 +201,8 @@ CompoundHandler::~CompoundHandler()
delete m_programListing;
delete m_inheritanceGraph;
delete m_collaborationGraph;
delete m_includeDependencyGraph;
delete m_includedByDependencyGraph;
}
void CompoundHandler::startSection(const QXmlAttributes& attrib)
......@@ -303,7 +311,7 @@ void CompoundHandler::addSubClass(const QXmlAttributes& attrib)
m_subClasses.append(sc);
}
bool CompoundHandler::parseXML(const QString &compId)
bool CompoundHandler::parseXML(const char *compId)
{
QFile xmlFile(m_xmlDir+"/"+compId+".xml");
if (!xmlFile.exists()) return FALSE;
......@@ -329,12 +337,12 @@ void CompoundHandler::initialize(MainHandler *mh)
void CompoundHandler::insertMember(MemberHandler *mh)
{
m_memberDict.insert(mh->id(),mh);
QList<MemberHandler> *mhl = m_memberNameDict.find(mh->id());
m_memberDict.insert(mh->id()->latin1(),mh);
QList<MemberHandler> *mhl = m_memberNameDict.find(mh->id()->latin1());
if (mhl==0)
{
mhl = new QList<MemberHandler>;
m_memberNameDict.insert(mh->name(),mhl);
m_memberNameDict.insert(mh->name()->latin1(),mhl);
}
mhl->append(mh);
}
......@@ -372,7 +380,7 @@ ISectionIterator *CompoundHandler::sections() const
return new SectionIterator(m_sections);
}
IMemberIterator *CompoundHandler::memberByName(const QString &name) const
IMemberIterator *CompoundHandler::memberByName(const char *name) const
{
QList<MemberHandler> *ml = m_memberNameDict[name];
if (ml==0) return 0;
......@@ -391,6 +399,18 @@ void CompoundHandler::startCollaborationGraph(const QXmlAttributes &attrib)
m_collaborationGraph->startGraph(attrib);
}
void CompoundHandler::startIncludeDependencyGraph(const QXmlAttributes &attrib)
{
m_includeDependencyGraph = new GraphHandler(this,"incdepgraph");
m_includeDependencyGraph->startGraph(attrib);
}
void CompoundHandler::startIncludedByDependencyGraph(const QXmlAttributes &attrib)
{
m_includedByDependencyGraph = new GraphHandler(this,"invincdepgraph");
m_includedByDependencyGraph->startGraph(attrib);
}
IDocRoot *CompoundHandler::briefDescription() const
{
return m_brief;
......@@ -401,7 +421,7 @@ IDocRoot *CompoundHandler::detailedDescription() const
return m_detailed;
}
IMember *CompoundHandler::memberById(const QString &id) const
IMember *CompoundHandler::memberById(const char *id) const
{
return m_memberDict[id];
}
......@@ -416,6 +436,16 @@ IGraph *CompoundHandler::collaborationGraph() const
return m_collaborationGraph;
}
IGraph *CompoundHandler::includeDependencyGraph() const
{
return m_includeDependencyGraph;
}
IGraph *CompoundHandler::includedByDependencyGraph() const
{
return m_includedByDependencyGraph;
}
IRelatedCompoundIterator *CompoundHandler::baseClasses() const
{
return new RelatedCompoundIterator(m_superClasses);
......
......@@ -20,6 +20,7 @@
#include <qxml.h>
#include <doxmlintf.h>
#include "stringimpl.h"
#include "basehandler.h"
#include "baseiterator.h"
......@@ -74,6 +75,7 @@ class CompoundHandler : public IClass,
public BaseHandler<CompoundHandler>
{
friend class RelatedCompound;
public:
virtual void startSection(const QXmlAttributes& attrib);
virtual void startCompound(const QXmlAttributes& attrib);
......@@ -87,26 +89,28 @@ class CompoundHandler : public IClass,
virtual void startProgramListing(const QXmlAttributes& attrib);
virtual void startInheritanceGraph(const QXmlAttributes& attrib);
virtual void startCollaborationGraph(const QXmlAttributes& attrib);
virtual void startIncludeDependencyGraph(const QXmlAttributes& attrib);
virtual void startIncludedByDependencyGraph(const QXmlAttributes& attrib);
virtual void startInnerClass(const QXmlAttributes& attrib);
virtual void addref() { m_refCount++; }
CompoundHandler(const QString &dirName);
virtual ~CompoundHandler();
bool parseXML(const QString &compId);
bool parseXML(const char *compId);
void initialize(MainHandler *mh);
void insertMember(MemberHandler *mh);
ICompound *toICompound() const;
// ICompound implementation
QString name() const { return m_name; }
QString id() const { return m_id; }
const IString *name() const { return &m_name; }
const IString *id() const { return &m_id; }
CompoundKind kind() const { return m_kind; }
QString kindString() const { return m_kindString; }
const IString *kindString() const { return &m_kindString; }
ISectionIterator *sections() const;
IDocRoot *briefDescription() const;
IDocRoot *detailedDescription() const;
IMember *memberById(const QString &id) const;
IMemberIterator *memberByName(const QString &name) const;
IMember *memberById(const char *id) const;
IMemberIterator *memberByName(const char *name) const;
void release();
// IClass implementation
......@@ -116,6 +120,10 @@ class CompoundHandler : public IClass,
IRelatedCompoundIterator *derivedClasses() const;
ICompoundIterator *nestedClasses() const;
// IFile implementation
IGraph *includeDependencyGraph() const;
IGraph *includedByDependencyGraph() const;
private:
QList<RelatedCompound> m_superClasses;
QList<RelatedCompound> m_subClasses;
......@@ -123,10 +131,10 @@ class CompoundHandler : public IClass,
DocHandler *m_brief;
DocHandler *m_detailed;
ProgramListingHandler *m_programListing;
QString m_id;
QString m_kindString;
StringImpl m_id;
StringImpl m_kindString;
CompoundKind m_kind;
QString m_name;
StringImpl m_name;
QString m_defFile;
int m_defLine;
QString m_xmlDir;
......@@ -136,6 +144,8 @@ class CompoundHandler : public IClass,
MainHandler *m_mainHandler;
GraphHandler *m_inheritanceGraph;
GraphHandler *m_collaborationGraph;
GraphHandler *m_includeDependencyGraph;
GraphHandler *m_includedByDependencyGraph;
QList<QString> m_innerClasses;
};
......
......@@ -117,6 +117,9 @@ MarkupHandler::MarkupHandler(QList<DocImpl> &children,QString &curString)
addStartHandler("superscript",this,&MarkupHandler::startSuperscript);
addEndHandler("superscript",this,&MarkupHandler::endSuperscript);
addStartHandler("preformatted",this,&MarkupHandler::startPreformatted);
addEndHandler("preformatted",this,&MarkupHandler::endPreformatted);
}
MarkupHandler::~MarkupHandler()
......@@ -231,6 +234,20 @@ void MarkupHandler::endSuperscript()
m_curMarkup &= ~IDocMarkup::Superscript;
}
void MarkupHandler::startPreformatted(const QXmlAttributes & /*attrib*/)
{
addTextNode();
m_children.append(new MarkupModifierNode(IDocMarkup::Preformatted,TRUE));
m_curMarkup |= IDocMarkup::Preformatted;
}
void MarkupHandler::endPreformatted()
{
addTextNode();
m_children.append(new MarkupModifierNode(IDocMarkup::Preformatted,FALSE));
m_curMarkup &= ~IDocMarkup::Preformatted;
}
//----------------------------------------------------------------------
// ListItemHandler
//----------------------------------------------------------------------
......
......@@ -21,6 +21,7 @@
#include <qxml.h>
#include <doxmlintf.h>
#include "stringimpl.h"
#include "basehandler.h"
#include "baseiterator.h"
......@@ -80,11 +81,11 @@ class TextNode : public DocTextImpl
// IDocText
virtual Kind kind() const { return DocImpl::Text; }
virtual QString text() const { return m_text; }
virtual const IString *text() const { return &m_text; }
virtual int markup() const { return m_markup; }
private:
QString m_text;
StringImpl m_text;
int m_markup;
};
......@@ -137,6 +138,8 @@ class MarkupHandler : public BaseFallBackHandler<MarkupHandler>
virtual void endSubscript();
virtual void startSuperscript(const QXmlAttributes &attrib);
virtual void endSuperscript();
virtual void startPreformatted(const QXmlAttributes &attrib);
virtual void endPreformatted();
private:
......@@ -322,12 +325,12 @@ class ParameterHandler : public DocParameterImpl,
// IDocParameter
virtual Kind kind() const { return DocImpl::Parameter; }
virtual QString name() const { return m_name; }
virtual const IString *name() const { return &m_name; }
virtual IDocPara *description() const { return m_description; }
private:
IBaseHandler *m_parent;
QString m_name;
StringImpl m_name;
ParagraphHandler *m_description;
};
......@@ -404,13 +407,13 @@ class LinkHandler : public DocLinkImpl, public BaseHandler<LinkHandler>
// IDocLink
virtual Kind kind() const { return DocImpl::Link; }
virtual QString refId() const { return m_ref; }
virtual QString text() const { return m_text; }
virtual const IString *refId() const { return &m_ref; }
virtual const IString *text() const { return &m_text; }
private:
IBaseHandler *m_parent;
QString m_ref;
QString m_text;
StringImpl m_ref;
StringImpl m_text;
};
......@@ -430,11 +433,11 @@ class EMailHandler : public DocEMailImpl, public BaseHandler<EMailHandler>
// IDocEMail
virtual Kind kind() const { return DocImpl::EMail; }
virtual QString address() const { return m_address; }
virtual const IString *address() const { return &m_address; }
private:
IBaseHandler *m_parent;
QString m_address;
StringImpl m_address;
};
......@@ -454,13 +457,13 @@ class ULinkHandler : public DocULinkImpl, public BaseHandler<ULinkHandler>
// IDocULink
virtual Kind kind() const { return DocImpl::ULink; }
virtual QString url() const { return m_url; }
virtual QString text() const { return m_text; }
virtual const IString * url() const { return &m_url; }
virtual const IString * text() const { return &m_text; }
private:
IBaseHandler *m_parent;
QString m_url;
QString m_text;
StringImpl m_url;
StringImpl m_text;
};
//-----------------------------------------------------------------------------
......@@ -499,16 +502,16 @@ class RefHandler : public DocRefImpl, public BaseHandler<RefHandler>
// IDocRef
virtual Kind kind() const { return DocImpl::Ref; }
virtual QString refId() const { return m_refId; }
virtual const IString *refId() const { return &m_refId; }
virtual TargetKind targetKind() const { return m_targetKind; }
virtual QString external() const { return m_extId; }
virtual QString text() const { return m_linkText; }
virtual const IString *external() const { return &m_extId; }
virtual const IString *text() const { return &m_linkText; }
private:
IBaseHandler *m_parent;
QString m_refId;
QString m_extId;
QString m_linkText;
StringImpl m_refId;
StringImpl m_extId;
StringImpl m_linkText;
TargetKind m_targetKind;
};
......@@ -569,7 +572,7 @@ class SimpleSectHandler : public DocSimpleSectImpl,
// IDocSimpleSect
virtual Kind kind() const { return DocImpl::SimpleSect; }
virtual Types type() const { return m_type; }
virtual QString typeString() const { return m_typeString; }
virtual const IString *typeString() const { return &m_typeString; }
virtual IDocTitle *title() const { return m_title; }
virtual IDocPara *description() const { return m_paragraph; }
......@@ -577,7 +580,7 @@ class SimpleSectHandler : public DocSimpleSectImpl,
IBaseHandler *m_parent;
ParagraphHandler *m_paragraph;
Types m_type;
QString m_typeString;
StringImpl m_typeString;
TitleHandler *m_title;
};
......@@ -603,12 +606,12 @@ class VariableListEntryHandler : public DocVariableListEntryImpl,
// IDocVariableListEntry
virtual Kind kind() const { return DocImpl::VariableListEntry; }
virtual QString term() const { return m_term; }
virtual const IString *term() const { return &m_term; }
virtual IDocPara *description() const { return m_description; }
private:
IBaseHandler *m_parent;
QString m_term;
StringImpl m_term;
ParagraphHandler *m_description;
};
......@@ -710,7 +713,7 @@ class CodeLineHandler : public DocCodeLineImpl, public BaseHandler<CodeLineHandl
// IDocCodeLine
virtual Kind kind() const { return DocImpl::CodeLine; }
virtual int lineNumber() const { return m_lineNumber; }
virtual QString refId() const { return m_refId; }
virtual const IString *refId() const { return &m_refId; }
virtual IDocIterator *codeElements() const;
private:
......@@ -718,7 +721,7 @@ class CodeLineHandler : public DocCodeLineImpl, public BaseHandler<CodeLineHandl
IBaseHandler *m_parent;
int m_lineNumber;
QString m_refId;
StringImpl m_refId;
QList<DocImpl> m_children;
};
......@@ -782,13 +785,13 @@ class FormulaHandler : public DocFormulaImpl, public BaseHandler<FormulaHandler>
// IDocFormula
virtual Kind kind() const { return DocImpl::Formula; }
virtual QString id() const { return m_id; }
virtual QString text() const { return m_text; }
virtual const IString *id() const { return &m_id; }
virtual const IString *text() const { return &m_text; }
private:
IBaseHandler *m_parent;
QString m_id;
QString m_text;
StringImpl m_id;
StringImpl m_text;
};
//-----------------------------------------------------------------------------
......@@ -807,13 +810,13 @@ class ImageHandler : public DocImageImpl, public BaseHandler<ImageHandler>
// IDocImage
virtual Kind kind() const { return DocImpl::Image; }
virtual QString name() const { return m_name; }
virtual QString caption() const { return m_caption; }
virtual const IString *name() const { return &m_name; }
virtual const IString *caption() const { return &m_caption; }
private:
IBaseHandler *m_parent;
QString m_name;
QString m_caption;
StringImpl m_name;
StringImpl m_caption;
};
//-----------------------------------------------------------------------------
......@@ -832,13 +835,13 @@ class DotFileHandler : public DocDotFileImpl, public BaseHandler<DotFileHandler>
// IDocDotFile
virtual Kind kind() const { return DocImpl::DotFile; }
virtual QString name() const { return m_name; }
virtual QString caption() const { return m_caption; }
virtual const IString *name() const { return &m_name; }
virtual const IString *caption() const { return &m_caption; }
private:
IBaseHandler *m_parent;
QString m_name;
QString m_caption;
StringImpl m_name;
StringImpl m_caption;
};
//-----------------------------------------------------------------------------
......@@ -861,13 +864,13 @@ class IndexEntryHandler : public DocIndexEntryImpl, public BaseHandler<IndexEntr
// IDocIndexEntry
virtual Kind kind() const { return DocImpl::IndexEntry; }
virtual QString primary() const { return m_primary; }
virtual QString secondary() const { return m_secondary; }
virtual const IString *primary() const { return &m_primary; }
virtual const IString *secondary() const { return &m_secondary; }
private:
IBaseHandler *m_parent;
QString m_primary;
QString m_secondary;
StringImpl m_primary;
StringImpl m_secondary;
};
//-----------------------------------------------------------------------------
......@@ -956,13 +959,13 @@ class TableHandler : public DocTableImpl, public BaseHandler<TableHandler>
virtual Kind kind() const { return DocImpl::Table; }
virtual IDocIterator *rows() const;
virtual int numColumns() const { return m_numColumns; }
virtual QString caption() const { return m_caption; }
virtual const IString *caption() const { return &m_caption; }
private:
IBaseHandler *m_parent;
QList<RowHandler> m_children;
int m_numColumns;
QString m_caption;
StringImpl m_caption;
};
class TableIterator : public BaseIteratorVia<IDocIterator,IDoc,RowHandler,DocImpl>
......@@ -995,7 +998,7 @@ class DocSectionHandler : public DocSectionImpl, public BaseHandler<DocSectionHa
// IDocSection
virtual Kind kind() const { return DocImpl::Section; }
virtual QString id() const { return m_id; }
virtual const IString *id() const { return &m_id; }
virtual int level() const { return m_level; }
virtual IDocIterator *title() const;
......@@ -1003,7 +1006,7 @@ class DocSectionHandler : public DocSectionImpl, public BaseHandler<DocSectionHa
IBaseHandler *m_parent;
QList<DocImpl> m_children;
MarkupHandler *m_markupHandler;
QString m_id;
StringImpl m_id;
int m_level;
};
......
......@@ -9,6 +9,15 @@ class ICompound;
class ISection;
class INode;
class IString
{
public:
virtual const char *latin1() const = 0;
virtual unsigned short unicodeCharAt(int index) const = 0;
virtual bool isEmpty() const = 0;
virtual int length() const = 0;
};
class ILinkedText
{
public:
......@@ -19,17 +28,17 @@ class ILinkedText
class ILT_Text : public ILinkedText
{
public:
virtual QString text() const = 0;
virtual const IString *text() const = 0;
};
class ILT_Ref : public ILinkedText
{
public:
enum TargetKind { Member, Compound };
virtual QString id() const = 0;
virtual const IString *id() const = 0;
virtual TargetKind targetKind() const = 0;
virtual QString external() const = 0;
virtual QString text() const = 0;
virtual const IString *external() const = 0;
virtual const IString *text() const = 0;
};
class ILinkedTextIterator
......@@ -47,10 +56,10 @@ class IParam
{
public:
virtual ILinkedTextIterator *type() const = 0;
virtual QString declarationName() const = 0;
virtual QString definitionName() const = 0;
virtual QString attrib() const = 0;
virtual QString arraySpecifier() const = 0;
virtual const IString * declarationName() const = 0;
virtual const IString * definitionName() const = 0;
virtual const IString * attrib() const = 0;
virtual const IString * arraySpecifier() const = 0;
virtual ILinkedTextIterator *defaultValue() const = 0;
};
......@@ -69,7 +78,7 @@ class IMemberReference
{
public:
virtual IMember *member() const = 0;
virtual QString memberName() const = 0;
virtual const IString * memberName() const = 0;
};
class IMemberReferenceIterator
......@@ -86,8 +95,8 @@ class IMemberReferenceIterator
class IEnumValue
{
public:
virtual QString name() const = 0;
virtual QString initializer() const = 0;
virtual const IString * name() const = 0;
virtual const IString * initializer() const = 0;
};
class IEnumValueIterator
......@@ -136,7 +145,7 @@ class IDoc
Row, // 27 -> IDocRow
Entry, // 28 -> IDocEntry
Section, // 29 -> IDocSection
Root // 30 -> IDocRoot
Root, // 30 -> IDocRoot
};
virtual Kind kind() const = 0;
};
......@@ -153,7 +162,8 @@ class IDocMarkup : public IDoc
Subscript = 0x08,
Superscript = 0x10,
SmallFont = 0x20,
Center = 0x40
Center = 0x40,
Preformatted = 0x80
};
};
......@@ -167,7 +177,7 @@ class IDocPara : public IDoc
class IDocText : public IDocMarkup
{
public:
virtual QString text() const = 0;
virtual const IString * text() const = 0;
virtual int markup() const = 0;
};
......@@ -207,7 +217,7 @@ class IDocParameterList : public IDoc
class IDocParameter : public IDoc
{
public:
virtual QString name() const = 0;
virtual const IString * name() const = 0;
virtual IDocPara *description() const = 0;
};
......@@ -229,7 +239,7 @@ class IDocSimpleSect : public IDoc
Examples
};
virtual Types type() const = 0;
virtual QString typeString() const = 0;
virtual const IString * typeString() const = 0;
virtual IDocTitle *title() const = 0;
virtual IDocPara *description() const = 0;
};
......@@ -238,10 +248,10 @@ class IDocRef : public IDoc
{
public:
enum TargetKind { Member, Compound };
virtual QString refId() const = 0;
virtual const IString * refId() const = 0;
virtual TargetKind targetKind() const = 0;
virtual QString external() const = 0;
virtual QString text() const = 0;
virtual const IString * external() const = 0;
virtual const IString * text() const = 0;
};
class IDocVariableList : public IDoc
......@@ -253,7 +263,7 @@ class IDocVariableList : public IDoc
class IDocVariableListEntry : public IDoc
{
public:
virtual QString term() const = 0;
virtual const IString * term() const = 0;
virtual IDocPara *description() const = 0;
};
......@@ -268,21 +278,21 @@ class IDocLineBreak : public IDoc
class IDocULink : public IDoc
{
public:
virtual QString url() const = 0;
virtual QString text() const = 0;
virtual const IString * url() const = 0;
virtual const IString * text() const = 0;
};
class IDocEMail : public IDoc
{
public:
virtual QString address() const = 0;
virtual const IString * address() const = 0;
};
class IDocLink : public IDoc
{
public:
virtual QString refId() const = 0;
virtual QString text() const = 0;
virtual const IString * refId() const = 0;
virtual const IString * text() const = 0;
};
class IDocProgramListing : public IDoc
......@@ -295,7 +305,7 @@ class IDocCodeLine : public IDoc
{
public:
virtual int lineNumber() const = 0;
virtual QString refId() const = 0;
virtual const IString * refId() const = 0;
virtual IDocIterator *codeElements() const = 0;
};
......@@ -315,29 +325,29 @@ class IDocHighlight : public IDoc
class IDocFormula : public IDoc
{
public:
virtual QString id() const = 0;
virtual QString text() const = 0;
virtual const IString * id() const = 0;
virtual const IString * text() const = 0;
};
class IDocImage : public IDoc
{
public:
virtual QString name() const = 0;
virtual QString caption() const = 0;
virtual const IString * name() const = 0;
virtual const IString * caption() const = 0;
};
class IDocDotFile : public IDoc
{
public:
virtual QString name() const = 0;
virtual QString caption() const = 0;
virtual const IString * name() const = 0;
virtual const IString * caption() const = 0;
};
class IDocIndexEntry : public IDoc
{
public:
virtual QString primary() const = 0;
virtual QString secondary() const = 0;
virtual const IString * primary() const = 0;
virtual const IString * secondary() const = 0;
};
class IDocTable : public IDoc
......@@ -345,7 +355,7 @@ class IDocTable : public IDoc
public:
virtual IDocIterator *rows() const = 0;
virtual int numColumns() const = 0;
virtual QString caption() const = 0;
virtual const IString * caption() const = 0;
};
class IDocRow : public IDoc
......@@ -363,7 +373,7 @@ class IDocEntry : public IDoc
class IDocSection : public IDoc
{
public:
virtual QString id() const = 0;
virtual const IString * id() const = 0;
virtual int level() const = 0;
virtual IDocIterator *title() const = 0;
};
......@@ -388,7 +398,7 @@ class IDocIterator
class IEdgeLabel
{
public:
virtual QString label() const = 0;
virtual const IString * label() const = 0;
};
class IEdgeLabelIterator
......@@ -410,7 +420,7 @@ class IChildNode
};
virtual INode * node() const = 0;
virtual NodeRelation relation() const = 0;
virtual QString relationString() const = 0;
virtual const IString * relationString() const = 0;
virtual IEdgeLabelIterator *edgeLabels() const = 0;
};
......@@ -428,9 +438,9 @@ class IChildNodeIterator
class INode
{
public:
virtual QString id() const = 0;
virtual QString label() const = 0;
virtual QString linkId() const = 0;
virtual const IString * id() const = 0;
virtual const IString * label() const = 0;
virtual const IString * linkId() const = 0;
virtual IChildNodeIterator *children() const = 0;
};
......@@ -461,13 +471,13 @@ class IMember
virtual ICompound *compound() const = 0;
virtual ISection *section() const = 0;
virtual MemberKind kind() const = 0;
virtual QString kindString() const = 0;
virtual QString id() const = 0;
virtual QString protection() const = 0;
virtual QString virtualness() const = 0;
virtual const IString * kindString() const = 0;
virtual const IString * id() const = 0;
virtual const IString * protection() const = 0;
virtual const IString * virtualness() const = 0;
virtual ILinkedTextIterator *type() const = 0;
virtual QString typeString() const = 0;
virtual QString name() const = 0;
virtual const IString * typeString() const = 0;
virtual const IString * name() const = 0;
virtual bool isConst() const = 0;
virtual bool isVolatile() const = 0;
virtual IParamIterator *params() const = 0;
......@@ -477,7 +487,7 @@ class IMember
virtual IMemberReferenceIterator *referencedBy() const = 0;
virtual int bodyStart() const = 0;
virtual int bodyEnd() const = 0;
virtual QString definitionFile() const = 0;
virtual const IString * definitionFile() const = 0;
virtual int definitionLine() const = 0;
virtual IMemberReference *reimplements() const = 0;
virtual IMemberReferenceIterator *reimplementedBy() const = 0;
......@@ -512,7 +522,7 @@ class ISection
Friend, Related, Defines, Prototypes, Typedefs,
Enums, Functions, Variables
};
virtual QString kindString() const = 0;
virtual const IString * kindString() const = 0;
virtual SectionKind kind() const = 0;
virtual IMemberIterator *members() const = 0;
virtual bool isStatic() const = 0;
......@@ -541,12 +551,12 @@ class ICompound
Namespace, File, Group, Page
};
/*! Returns the name of this compound */
virtual QString name() const = 0;
virtual const IString * name() const = 0;
/*! Returns the id of this compound. The id is a
* unique string representing a specific compound object.
*/
virtual QString id() const = 0;
virtual const IString * id() const = 0;
/*! Returns the kind of compound. See #CompoundKind for possible
* values.
......@@ -556,7 +566,7 @@ class ICompound
/*! Returns a string representation of the compound kind.
* @see kind()
*/
virtual QString kindString() const = 0;
virtual const IString * kindString() const = 0;
/*! Returns an iterator for the different member sections in this
* compound.
......@@ -576,14 +586,14 @@ class ICompound
/*! Returns an interface to a member given its id.
* @param id The member id.
*/
virtual IMember *memberById(const QString &id) const = 0;
virtual IMember *memberById(const char * id) const = 0;
/*! Returns a list of all members within the compound having a certain
* name. Member overloading is the reason why there can be more than
* one member.
* @param name The name of the member.
*/
virtual IMemberIterator *memberByName(const QString &name) const = 0;
virtual IMemberIterator *memberByName(const char * name) const = 0;
/*! Decreases the reference counter for this compound. If it reaches
* zero, the memory for the compound will be released.
......@@ -668,11 +678,13 @@ class INamespace : public ICompound
class IFile : public ICompound
{
public:
virtual IGraph *includeDependencyGraph() const = 0;
virtual IGraph *includedByDependencyGraph() const = 0;
// file:
// includes()
// includedBy()
// IDotGraph *includeDependencyGraph()
// IDotGraph *includedByDependencyGraph()
// IDocProgramListing *source()
// ICompound *innerNamespaces()
// ICompoundIterator *innerClasses()
......@@ -704,26 +716,26 @@ class IDoxygen
* compound id this function is much more efficient than iterating
* over the compound list. Returns 0 if the id is not valid.
*/
virtual ICompound *compoundById(const QString &id) const = 0;
virtual ICompound *compoundById(const char * id) const = 0;
/*! Returns a compound given its name (including the scope).
* Returns 0 if the name is not found in the project.
*/
virtual ICompound *compoundByName(const QString &name) const = 0;
virtual ICompound *compoundByName(const char * name) const = 0;
/*! Returns an interface to a compound containing a member given it the
* member's id. Given the ICompound interface one can use the same id
* to obtain the IMember interface.
* @param id The member id.
*/
virtual ICompound *memberById(const QString &id) const = 0;
virtual ICompound *memberById(const char * id) const = 0;
/*! Returns a list of all compounds containing at least one members
* with a certain name. Each compound can be asked to return the
* list of members with that name.
* @param name The name of the member.
*/
virtual ICompoundIterator *memberByName(const QString &name) const = 0;
virtual ICompoundIterator *memberByName(const char * name) const = 0;
/*! Releases the memory for the object hierarchy obtained by
* createdObjecModelFromXML(). First release all iterators before calling
......
......@@ -4,7 +4,7 @@ HEADERS = basehandler.h mainhandler.h \
compoundhandler.h sectionhandler.h \
memberhandler.h paramhandler.h \
dochandler.h linkedtexthandler.h \
debug.h graphhandler.h
debug.h graphhandler.h stringimpl.h
SOURCES = mainhandler.cpp \
compoundhandler.cpp sectionhandler.cpp \
memberhandler.cpp paramhandler.cpp \
......
......@@ -16,6 +16,7 @@
#ifndef _GRAPHHANDLER_H
#define _GRAPHHANDLER_H
#include "stringimpl.h"
#include "doxmlintf.h"
#include "basehandler.h"
#include "baseiterator.h"
......@@ -63,16 +64,16 @@ class NodeHandler : public INode, public BaseHandler<NodeHandler>
void startChildNode(const QXmlAttributes &attrib);
// INode
virtual QString id() const { return m_id; }
virtual QString label() const { return m_label; }
virtual QString linkId() const { return m_link; }
virtual const IString *id() const { return &m_id; }
virtual const IString *label() const { return &m_label; }
virtual const IString *linkId() const { return &m_link; }
virtual IChildNodeIterator *children() const;
private:
IBaseHandler *m_parent;
QString m_id;
QString m_label;
QString m_link;
StringImpl m_id;
StringImpl m_label;
StringImpl m_link;
QList<ChildNodeHandler> m_children;
GraphHandler *m_graph;
};
......@@ -100,14 +101,14 @@ class ChildNodeHandler : public IChildNode, public BaseHandler<ChildNodeHandler>
// IChildNode
virtual INode *node() const;
virtual NodeRelation relation() const { return m_relation; }
virtual QString relationString() const { return m_relationString; }
virtual const IString * relationString() const { return &m_relationString; }
virtual IEdgeLabelIterator *edgeLabels() const;
private:
IBaseHandler *m_parent;
QString m_id;
NodeRelation m_relation;
QString m_relationString;
StringImpl m_relationString;
QList<EdgeLabelHandler> m_edgeLabels;
GraphHandler *m_graph;
};
......@@ -132,11 +133,11 @@ class EdgeLabelHandler : public IEdgeLabel, public BaseHandler<EdgeLabelHandler>
void endEdgeLabel();
// IEdgeLabel
virtual QString label() const { return m_label; }
virtual const IString *label() const { return &m_label; }
private:
IBaseHandler *m_parent;
QString m_label;
StringImpl m_label;
};
class EdgeLabelIterator : public BaseIterator<IEdgeLabelIterator,IEdgeLabel,EdgeLabelHandler>
......
......@@ -15,6 +15,7 @@
#include "linkedtexthandler.h"
#include "debug.h"
#include <doxmlintf.h>
#include "stringimpl.h"
class LT_Text : public LinkedTextImpl, public ILT_Text
{
......@@ -23,10 +24,10 @@ class LT_Text : public LinkedTextImpl, public ILT_Text
virtual ~LT_Text() {}
// ILT_Text
virtual QString text() const { return m_text; }
virtual const IString *text() const { return &m_text; }
virtual Kind kind() const { return LinkedTextImpl::Kind_Text; }
private:
QString m_text;
StringImpl m_text;
};
class LT_Ref : public LinkedTextImpl, public ILT_Ref
......@@ -40,16 +41,16 @@ class LT_Ref : public LinkedTextImpl, public ILT_Ref
void setTargetKind(TargetKind k) { m_targetKind=k; }
// ILT_Ref
virtual QString text() const { return m_text; }
virtual QString id() const { return m_refId; }
virtual const IString *text() const { return &m_text; }
virtual const IString * id() const { return &m_refId; }
virtual TargetKind targetKind() const { return m_targetKind; }
virtual QString external() const { return m_extId; }
virtual const IString *external() const { return &m_extId; }
virtual Kind kind() const { return LinkedTextImpl::Kind_Ref; }
private:
QString m_refId;
QString m_extId;
QString m_text;
StringImpl m_refId;
StringImpl m_extId;
StringImpl m_text;
TargetKind m_targetKind;
};
......@@ -106,7 +107,7 @@ void LinkedTextHandler::endRef()
{
m_ref->setText(m_curString);
m_children.append(m_ref);
debug(2,"LinkedTextHandler: add ref `%s'\n",m_ref->text().data());
debug(2,"LinkedTextHandler: add ref `%s'\n",m_ref->text()->latin1());
m_ref=0;
}
......@@ -120,10 +121,10 @@ QString LinkedTextHandler::toString(const QList<LinkedTextImpl> &list)
switch(lt->kind())
{
case ILinkedText::Kind_Text:
result+=dynamic_cast<ILT_Text*>(lt)->text();
result+=dynamic_cast<ILT_Text*>(lt)->text()->latin1();
break;
case ILinkedText::Kind_Ref:
result+=dynamic_cast<ILT_Ref *>(lt)->text();
result+=dynamic_cast<ILT_Ref *>(lt)->text()->latin1();
break;
}
}
......
......@@ -194,16 +194,17 @@ ICompoundIterator *MainHandler::compounds() const
return new CompoundEntryIterator(this,m_compounds);
}
ICompound *MainHandler::compoundById(const QString &id) const
ICompound *MainHandler::compoundById(const char *id) const
{
if (id.isEmpty()) return 0;
CompoundHandler *ch = m_compoundsLoaded[id];
QString ids = id;
if (ids.isEmpty()) return 0;
CompoundHandler *ch = m_compoundsLoaded[ids];
if (ch) // compound already in memory
{
ch->addref(); // returning alias -> increase reference counter
return ch->toICompound();
}
CompoundEntry *ce = m_compoundDict.find(id);
CompoundEntry *ce = m_compoundDict.find(ids);
if (ce==0) return 0; // id not found
// create and load a new compound
ch = new CompoundHandler(m_xmlDirName);
......@@ -224,28 +225,31 @@ ICompound *MainHandler::compoundById(const QString &id) const
void MainHandler::unloadCompound(CompoundHandler *ch)
{
m_compoundsLoaded.remove(ch->id());
m_compoundsLoaded.remove(ch->id()->latin1());
}
ICompound *MainHandler::compoundByName(const QString &name) const
ICompound *MainHandler::compoundByName(const char *name) const
{
if (name.isEmpty()) return 0;
QString nameStr = name;
if (nameStr.isEmpty()) return 0;
CompoundEntry *ce = m_compoundNameDict[name];
if (ce==0) return 0; // name not found
return compoundById(ce->id);
}
ICompound *MainHandler::memberById(const QString &id) const
ICompound *MainHandler::memberById(const char *id) const
{
if (id.isEmpty()) return 0;
QString ids = id;
if (ids.isEmpty()) return 0;
MemberEntry *me = m_memberDict[id];
if (me==0) return 0; // id not found
return compoundById(me->id);
}
ICompoundIterator *MainHandler::memberByName(const QString &name) const
ICompoundIterator *MainHandler::memberByName(const char *name) const
{
if (name.isEmpty()) return 0;
QString nameStr = name;
if (nameStr.isEmpty()) return 0;
QList<CompoundEntry> *cel = m_memberNameDict[name];
if (cel==0) return 0; // name not found
return new CompoundEntryIterator(this,*cel);
......@@ -267,7 +271,7 @@ void MainHandler::release()
CompoundHandler *ch;
for (chi.toFirst();(ch=chi.current());++chi)
{
debug(1,"Compound %s not released\n",ch->name().data());
debug(1,"Compound %s not released\n",ch->name()->latin1());
}
graphhandler_exit();
dochandler_exit();
......
......@@ -55,10 +55,10 @@ class MainHandler : public IDoxygen, public BaseHandler<MainHandler>
// IDoxygen
ICompoundIterator *compounds() const;
ICompound *compoundById(const QString &id) const;
virtual ICompound *compoundByName(const QString &name) const;
virtual ICompound *memberById(const QString &id) const;
virtual ICompoundIterator *memberByName(const QString &name) const;
ICompound *compoundById(const char *id) const;
virtual ICompound *compoundByName(const char *name) const;
virtual ICompound *memberById(const char *id) const;
virtual ICompoundIterator *memberByName(const char *name) const;
virtual void release();
void setDebugLevel(int level);
......
......@@ -35,11 +35,11 @@ struct MemberReference : public IMemberReference
{
virtual ~MemberReference() {}
virtual IMember *member() const;
virtual QString memberName() const { return m_name; }
virtual const IString *memberName() const { return &m_name; }
void initialize(MainHandler *m);
QString m_memId;
QString m_name;
StringImpl m_name;
MainHandler *m_mainHandler;
};
......@@ -61,8 +61,8 @@ class EnumValueHandler : public IEnumValue, public BaseHandler<EnumValueHandler>
virtual void endEnumValue();
// IEnumValue
virtual QString name() const { return m_name; }
virtual QString initializer() const { return m_initializer; }
virtual const IString *name() const { return &m_name; }
virtual const IString *initializer() const { return &m_initializer; }
void setName(const QString &name) { m_name=name; }
void setInitializer(const QString &init) { m_initializer=init; }
......@@ -71,8 +71,8 @@ class EnumValueHandler : public IEnumValue, public BaseHandler<EnumValueHandler>
EnumValueHandler(IBaseHandler *parent);
private:
QString m_name;
QString m_initializer;
StringImpl m_name;
StringImpl m_initializer;
IBaseHandler *m_parent;
};
......@@ -115,24 +115,27 @@ class MemberHandler : public IMember, public BaseHandler<MemberHandler>
virtual ISection *section() const;
virtual MemberKind kind() const
{ return m_kind; }
virtual QString kindString() const
{ return m_kindString; }
virtual QString id() const
{ return m_id; }
virtual QString protection() const
{ return m_protection; }
virtual QString virtualness() const
{ return m_virtualness; }
virtual QString name() const
{ return m_name; }
virtual const IString *kindString() const
{ return &m_kindString; }
virtual const IString *id() const
{ return &m_id; }
virtual const IString *protection() const
{ return &m_protection; }
virtual const IString *virtualness() const
{ return &m_virtualness; }
virtual const IString *name() const
{ return &m_name; }
virtual bool isConst() const
{ return m_isConst; }
virtual bool isVolatile() const
{ return m_isVolatile; }
virtual ILinkedTextIterator *type() const
{ return new LinkedTextIterator(m_type); }
virtual QString typeString() const
{ return LinkedTextHandler::toString(m_type); }
virtual const IString *typeString() const
{ MemberHandler *that = (MemberHandler *)this;
that->m_typeString = LinkedTextHandler::toString(m_type);
return &m_typeString;
}
virtual IParamIterator *params() const
{ return new ParamIterator(m_params); }
virtual IMemberReferenceIterator *references() const
......@@ -147,8 +150,8 @@ class MemberHandler : public IMember, public BaseHandler<MemberHandler>
{ return m_bodyStart; }
virtual int bodyEnd() const
{ return m_bodyEnd; }
virtual QString definitionFile() const
{ return m_defFile; }
virtual const IString *definitionFile() const
{ return &m_defFile; }
virtual int definitionLine() const
{ return m_defLine; }
virtual IMemberReference *reimplements() const
......@@ -171,14 +174,15 @@ class MemberHandler : public IMember, public BaseHandler<MemberHandler>
CompoundHandler *m_compound;
SectionHandler *m_section;
MemberKind m_kind;
QString m_kindString;
QString m_id;
QString m_protection;
QString m_virtualness;
StringImpl m_kindString;
StringImpl m_id;
StringImpl m_protection;
StringImpl m_virtualness;
StringImpl m_typeString;
QList<LinkedTextImpl> m_type;
QList<LinkedTextImpl> m_initializer;
QList<LinkedTextImpl> m_exception;
QString m_name;
StringImpl m_name;
DocHandler *m_brief;
DocHandler *m_detailed;
QList<ParamHandler> m_params;
......@@ -186,7 +190,7 @@ class MemberHandler : public IMember, public BaseHandler<MemberHandler>
QList<MemberReference> m_referencedBy;
MemberReference *m_reimplements;
QList<MemberReference> m_reimplementedBy;
QString m_defFile;
StringImpl m_defFile;
int m_defLine;
int m_bodyStart;
int m_bodyEnd;
......
......@@ -21,6 +21,7 @@
#include <qxml.h>
#include <doxmlintf.h>
#include "stringimpl.h"
#include "basehandler.h"
#include "baseiterator.h"
#include "linkedtexthandler.h"
......@@ -43,20 +44,20 @@ class ParamHandler : public IParam, public BaseHandler<ParamHandler>
// IParam
virtual ILinkedTextIterator *type() const
{ return new LinkedTextIterator(m_type); }
virtual QString declarationName() const { return m_declName; }
virtual QString definitionName() const { return m_defName; }
virtual QString attrib() const { return m_attrib; }
virtual QString arraySpecifier() const { return m_array; }
virtual const IString * declarationName() const { return &m_declName; }
virtual const IString * definitionName() const { return &m_defName; }
virtual const IString * attrib() const { return &m_attrib; }
virtual const IString * arraySpecifier() const { return &m_array; }
virtual ILinkedTextIterator *defaultValue() const
{ return new LinkedTextIterator(m_defVal); }
private:
IBaseHandler *m_parent;
QList<LinkedTextImpl> m_type;
QString m_declName;
QString m_defName;
QString m_attrib;
QString m_array;
StringImpl m_declName;
StringImpl m_defName;
StringImpl m_attrib;
StringImpl m_array;
QList<LinkedTextImpl> m_defVal;
LinkedTextHandler *m_linkedTextHandler;
};
......
......@@ -46,8 +46,8 @@ class SectionHandler : public ISection, public BaseHandler<SectionHandler>
virtual ~SectionHandler();
// ISection
virtual QString kindString() const
{ return m_kindString; }
virtual const IString *kindString() const
{ return &m_kindString; }
virtual SectionKind kind() const
{ return m_kind; }
virtual IMemberIterator *members() const
......@@ -78,7 +78,7 @@ class SectionHandler : public ISection, public BaseHandler<SectionHandler>
private:
IBaseHandler *m_parent;
SectionKind m_kind;
QString m_kindString;
StringImpl m_kindString;
QList<MemberHandler> m_members;
};
......
#ifndef STRINGIMPL_H
#define STRINGIMPL_H
#include <qstring.h>
#include "doxmlintf.h"
class StringImpl : public QString, public IString
{
public:
StringImpl() {}
StringImpl(const QString &str) : QString(str) {}
virtual ~StringImpl() {}
// IString
const char *latin1() const
{ return QString::latin1(); }
unsigned short unicodeCharAt(int index) const
{ return QString::unicode()[index].unicode(); }
bool isEmpty() const
{ return QString::isEmpty(); }
int length() const
{ return QString::length(); }
};
#endif
......@@ -14,8 +14,12 @@
*/
#include <stdio.h>
#include <stdlib.h>
#include <doxmlintf.h>
/*! Dumps the contents of a hyperlinked text fragment as plain text to the
* output.
*/
QString linkedTextToString(ILinkedTextIterator *ti)
{
QString result;
......@@ -24,106 +28,116 @@ QString linkedTextToString(ILinkedTextIterator *ti)
{
switch (lt->kind())
{
case ILinkedText::Kind_Text:
result+=dynamic_cast<ILT_Text*>(lt)->text(); break;
case ILinkedText::Kind_Ref:
result+=dynamic_cast<ILT_Ref *>(lt)->text(); break;
case ILinkedText::Kind_Text: // plain text
result+=dynamic_cast<ILT_Text*>(lt)->text()->latin1(); break;
case ILinkedText::Kind_Ref: // a link
result+=dynamic_cast<ILT_Ref *>(lt)->text()->latin1(); break;
}
}
return result;
}
void DumpDoc(IDoc *doc)
/*! Macro for printing an indented message. */
#define InPrint(x) printf("%s",indent.latin1()), printf x;
/*! Dumps the contents of a documentation block to stdout.
* @note This function will call itself recursively.
* @param doc The root of the documentation tree.
* @param level The indent level.
*/
void DumpDoc(IDoc *doc,int level)
{
printf(" doc node kind=`%d'\n",doc->kind());
QString indent;
indent.fill(' ',level);
//printf(" doc node kind=`%d'\n",doc->kind());
switch (doc->kind())
{
case IDoc::Para:
{
printf(" --- par --- \n");
InPrint(("<para>\n"));
IDocPara *par = dynamic_cast<IDocPara*>(doc);
ASSERT(par!=0);
IDocIterator *di = par->contents();
IDoc *pdoc;
for (di->toFirst();(pdoc=di->current());di->toNext())
{
DumpDoc(pdoc);
DumpDoc(pdoc,level+1);
}
di->release();
printf(" --- end par --- \n");
InPrint(("</para>\n"));
}
break;
case IDoc::Text:
{
IDocText *txt = dynamic_cast<IDocText*>(doc);
ASSERT(txt!=0);
printf(" --- text `%s' markup=%d --- \n",txt->text().data(),txt->markup());
InPrint(("<text value=`%s' markup=%d/>\n",txt->text()->latin1(),txt->markup()));
}
break;
case IDoc::MarkupModifier:
{
IDocMarkupModifier *md = dynamic_cast<IDocMarkupModifier*>(doc);
ASSERT(md!=0);
printf(" --- markup modifier enabled=%d markup=%d\n",md->enabled(),md->markup());
InPrint(("<markup modifier enabled=%d markup=%d/>\n",md->enabled(),md->markup()));
}
break;
case IDoc::ItemizedList:
{
printf(" --- itemized list --- \n");
InPrint(("<itemized list>\n"));
IDocItemizedList *list = dynamic_cast<IDocItemizedList*>(doc);
ASSERT(list!=0);
IDocIterator *di = list->elements();
IDoc *pdoc;
for (di->toFirst();(pdoc=di->current());di->toNext())
{
DumpDoc(pdoc);
DumpDoc(pdoc,level+1);
}
di->release();
printf(" --- end itemized list --- \n");
InPrint(("</itemized list>\n"));
}
break;
case IDoc::OrderedList:
{
printf(" --- ordered list --- \n");
InPrint(("<ordered list>\n"));
IDocOrderedList *list = dynamic_cast<IDocOrderedList*>(doc);
ASSERT(list!=0);
IDocIterator *di = list->elements();
IDoc *pdoc;
for (di->toFirst();(pdoc=di->current());di->toNext())
{
DumpDoc(pdoc);
DumpDoc(pdoc,level+1);
}
di->release();
printf(" --- end ordered list --- \n");
InPrint(("</ordered list>\n"));
}
break;
case IDoc::ListItem:
{
printf(" --- list item --- \n");
InPrint(("<list item>\n"));
IDocListItem *li = dynamic_cast<IDocListItem*>(doc);
ASSERT(li!=0);
IDocIterator *di = li->contents();
IDoc *pdoc;
for (di->toFirst();(pdoc=di->current());di->toNext())
{
DumpDoc(pdoc);
DumpDoc(pdoc,level+1);
}
di->release();
printf(" --- end list item --- \n");
InPrint(("</list item>\n"));
}
break;
case IDoc::ParameterList:
{
IDocParameterList *list = dynamic_cast<IDocParameterList*>(doc);
printf(" --- parameter list type=%d --- \n",list->listType());
InPrint(("<parameter list type=%d>\n",list->listType()));
IDocIterator *di = list->params();
IDoc *pdoc;
for (di->toFirst();(pdoc=di->current());di->toNext())
{
DumpDoc(pdoc);
DumpDoc(pdoc,level+1);
}
di->release();
printf(" --- parameter list item --- \n");
InPrint(("</parameter list>\n"));
ASSERT(list!=0);
}
break;
......@@ -131,187 +145,248 @@ void DumpDoc(IDoc *doc)
{
IDocParameter *par = dynamic_cast<IDocParameter*>(doc);
ASSERT(par!=0);
printf(" --- parameter name=%s --- \n",par->name().data());
DumpDoc(par->description());
printf(" --- end parameter --- \n");
InPrint(("<parameter name=%s>\n",par->name()->latin1()));
DumpDoc(par->description(),level+1);
InPrint(("<parameter/>\n"));
}
break;
case IDoc::SimpleSect:
{
IDocSimpleSect *ss = dynamic_cast<IDocSimpleSect*>(doc);
ASSERT(ss!=0);
printf(" --- simplesect type=%s --- \n",ss->typeString().data());
DumpDoc(ss->title());
DumpDoc(ss->description());
printf(" --- end simplesect --- \n");
InPrint(("<simplesect type=%s>\n",ss->typeString()->latin1()));
DumpDoc(ss->title(),level+1);
DumpDoc(ss->description(),level+1);
InPrint(("<simplesect/>\n"));
}
break;
case IDoc::Title:
{
printf(" --- title --- \n");
InPrint(("<title>\n"));
IDocTitle *t = dynamic_cast<IDocTitle*>(doc);
ASSERT(t!=0);
IDocIterator *di = t->title();
IDoc *pdoc;
for (di->toFirst();(pdoc=di->current());di->toNext())
{
DumpDoc(pdoc);
DumpDoc(pdoc,level+1);
}
printf(" --- end title --- \n");
InPrint(("<title/>\n"));
}
break;
case IDoc::Ref:
{
IDocRef *ref = dynamic_cast<IDocRef*>(doc);
ASSERT(ref!=0);
printf(" ref=%p\n",ref);
printf(" --- ref id=%s text=%s --- \n",
ref->refId().data(),ref->text().data());
printf(" --- end ref --- \n");
InPrint(("<ref id=%s text=%s/>\n",
ref->refId()->latin1(),ref->text()->latin1()));
}
break;
case IDoc::VariableList:
{
printf(" --- start variablelist --- \n");
InPrint(("<variablelist>\n"));
IDocVariableList *vl = dynamic_cast<IDocVariableList*>(doc);
ASSERT(vl!=0);
IDocIterator *di = vl->entries();
IDoc *pdoc;
for (di->toFirst();(pdoc=di->current());di->toNext())
{
DumpDoc(pdoc);
DumpDoc(pdoc,level+1);
}
di->release();
printf(" --- end variablelist --- \n");
InPrint(("<variablelist/>\n"));
}
break;
case IDoc::VariableListEntry:
{
IDocVariableListEntry *vle = dynamic_cast<IDocVariableListEntry*>(doc);
ASSERT(vle!=0);
printf(" --- start variablelistentry term=%s --- \n",vle->term().data());
DumpDoc(vle->description());
printf(" --- end variablelistentry --- \n");
InPrint(("<variablelistentry term=%s>\n",vle->term()->latin1()));
DumpDoc(vle->description(),level+1);
InPrint(("<variablelistentry/>\n"));
}
break;
case IDoc::HRuler:
{
IDocHRuler *hr = dynamic_cast<IDocHRuler*>(doc);
ASSERT(hr!=0);
InPrint(("<hruler/>\n"));
}
break;
case IDoc::LineBreak:
{
IDocLineBreak *lb = dynamic_cast<IDocLineBreak*>(doc);
ASSERT(lb!=0);
InPrint(("<linebreak/>\n"));
}
break;
case IDoc::ULink:
{
IDocULink *ul = dynamic_cast<IDocULink*>(doc);
ASSERT(ul!=0);
InPrint(("<ulink url=`%s' text=`%s'/>\n",ul->url()->latin1(),ul->text()->latin1()));
}
break;
case IDoc::EMail:
{
IDocEMail *em = dynamic_cast<IDocEMail*>(doc);
ASSERT(em!=0);
InPrint(("<email address=`%s'/>\n",em->address()->latin1()));
}
break;
case IDoc::Link:
{
IDocLink *lk = dynamic_cast<IDocLink*>(doc);
ASSERT(lk!=0);
InPrint(("<link refid=`%s' text=`%s'/>\n",lk->refId()->latin1(),lk->text()->latin1()));
}
break;
case IDoc::ProgramListing:
{
IDocProgramListing *pl = dynamic_cast<IDocProgramListing*>(doc);
ASSERT(pl!=0);
InPrint(("<programlisting>\n"));
IDocIterator *cli = pl->codeLines();
IDoc *cl;
for (cli->toFirst();(cl=cli->current());cli->toNext())
{
DumpDoc(cl,level+1);
}
cli->release();
InPrint(("<programlisting/>\n"));
}
break;
case IDoc::CodeLine:
{
IDocCodeLine *cl = dynamic_cast<IDocCodeLine*>(doc);
ASSERT(cl!=0);
InPrint(("<codeline lineNumber=%d refId=`%s'>\n",cl->lineNumber(),cl->refId()->latin1()));
IDocIterator *cei = cl->codeElements();
IDoc *ce;
for (cei->toFirst();(ce=cei->current());cei->toNext())
{
DumpDoc(ce,level+1);
}
cei->release();
InPrint(("<codeline/>\n"));
}
break;
case IDoc::Highlight:
{
IDocHighlight *hl = dynamic_cast<IDocHighlight*>(doc);
ASSERT(hl!=0);
InPrint(("<highlight kind=%d>\n",hl->kind()));
IDocIterator *cei = hl->codeElements();
IDoc *ce;
for (cei->toFirst();(ce=cei->current());cei->toNext())
{
DumpDoc(ce,level+1);
}
cei->release();
InPrint(("</highlight>\n"));
}
break;
case IDoc::Formula:
{
IDocFormula *fm = dynamic_cast<IDocFormula*>(doc);
ASSERT(fm!=0);
InPrint(("<formula id=`%s' text=`%s'/>\n",fm->id()->latin1(),fm->text()->latin1()));
}
break;
case IDoc::Image:
{
IDocImage *img = dynamic_cast<IDocImage*>(doc);
ASSERT(img!=0);
InPrint(("<image name=`%s' caption=`%s'/>\n",img->name()->latin1(),img->caption()->latin1()));
}
break;
case IDoc::DotFile:
{
IDocDotFile *df = dynamic_cast<IDocDotFile*>(doc);
ASSERT(df!=0);
InPrint(("<dotfile name=`%s' caption=`%s'/>\n",df->name()->latin1(),df->caption()->latin1()));
}
break;
case IDoc::IndexEntry:
{
IDocIndexEntry *ie = dynamic_cast<IDocIndexEntry*>(doc);
ASSERT(ie!=0);
InPrint(("<indexentry primary=`%s' secondary=`%s'/>\n",ie->primary()->latin1(),ie->secondary()->latin1()));
}
break;
case IDoc::Table:
{
IDocTable *tbl = dynamic_cast<IDocTable*>(doc);
ASSERT(tbl!=0);
InPrint(("<table numcols=%d caption=`%s'>\n",tbl->numColumns(),tbl->caption()->latin1()));
IDocIterator *ri = tbl->rows();
IDoc *row;
for (ri->toFirst();(row=ri->current());ri->toNext())
{
DumpDoc(row,level+1);
}
ri->release();
InPrint(("</table>\n"));
}
break;
case IDoc::Row:
{
IDocRow *row = dynamic_cast<IDocRow*>(doc);
ASSERT(row!=0);
InPrint(("<row>\n"));
IDocIterator *ei = row->entries();
IDoc *e;
for (ei->toFirst();(e=ei->current());ei->toNext())
{
DumpDoc(e,level+1);
}
ei->release();
InPrint(("</row>\n"));
}
break;
case IDoc::Entry:
{
IDocEntry *ent = dynamic_cast<IDocEntry*>(doc);
ASSERT(ent!=0);
InPrint(("<entry>\n"));
IDocIterator *di = ent->contents();
IDoc *pdoc;
for (di->toFirst();(pdoc=di->current());di->toNext())
{
DumpDoc(pdoc,level+1);
}
di->release();
InPrint(("</entry>\n"));
}
break;
case IDoc::Section:
{
IDocSection *sec = dynamic_cast<IDocSection*>(doc);
ASSERT(sec!=0);
printf(" --- section id=`%s' level=%d --- \n",
sec->id().data(),sec->level());
InPrint(("<section id=`%s' level=%d>\n",
sec->id()->latin1(),sec->level()));
IDocIterator *di = sec->title();
IDoc *pdoc;
for (di->toFirst();(pdoc=di->current());di->toNext())
{
DumpDoc(pdoc);
DumpDoc(pdoc,level+1);
}
printf(" --- end section --- \n");
InPrint(("<section/>\n"));
}
break;
case IDoc::Root:
{
printf(" --- root --- \n");
InPrint(("<root>\n"));
IDocRoot *root = dynamic_cast<IDocRoot*>(doc);
ASSERT(root!=0);
IDocIterator *di = root->contents();
IDoc *pdoc;
for (di->toFirst();(pdoc=di->current());di->toNext())
{
DumpDoc(pdoc);
DumpDoc(pdoc,level+1);
}
di->release();
printf(" --- end root --- \n");
InPrint(("<root/>\n"));
}
break;
......@@ -329,24 +404,24 @@ void DumpGraph(IGraph *graph)
for (ni->toFirst();(node=ni->current());ni->toNext())
{
printf(" --- node id=%s label=%s linkId=%s\n",
node->id().data(),
node->label().data(),
node->linkId().data()
node->id()->latin1(),
node->label()->latin1(),
node->linkId()->latin1()
);
IChildNodeIterator *cni = node->children();
IChildNode *cn;
for (cni->toFirst();(cn=cni->current());cni->toNext())
{
printf(" + child id=%s label=%s relation=%s\n",
cn->node()->id().data(),
cn->node()->label().data(),
cn->relationString().data()
cn->node()->id()->latin1(),
cn->node()->label()->latin1(),
cn->relationString()->latin1()
);
IEdgeLabelIterator *eli = cn->edgeLabels();
IEdgeLabel *el;
for (eli->toFirst();(el=eli->current());eli->toNext())
{
printf(" edgeLabel=%s\n",el->label().data());
printf(" edgeLabel=%s\n",el->label()->latin1());
}
eli->release();
}
......@@ -381,19 +456,19 @@ int main(int argc,char **argv)
for (cli->toFirst();(comp=cli->current());cli->toNext())
{
printf("Compound name=%s id=%s kind=%s\n",
comp->name().data(),comp->id().data(),comp->kindString().data());
comp->name()->latin1(),comp->id()->latin1(),comp->kindString()->latin1());
ISectionIterator *sli = comp->sections();
ISection *sec;
for (sli->toFirst();(sec=sli->current());sli->toNext())
{
printf(" Section kind=%s\n",sec->kindString().data());
printf(" Section kind=%s\n",sec->kindString()->latin1());
IMemberIterator *mli = sec->members();
IMember *mem;
for (mli->toFirst();(mem=mli->current());mli->toNext())
{
ILinkedTextIterator *lti = mem->type();
printf(" Member type=%s name=%s\n",
linkedTextToString(lti).data(),mem->name().data());
linkedTextToString(lti).latin1(),mem->name()->latin1());
lti->release();
IParamIterator *pli = mem->params();
......@@ -407,7 +482,7 @@ int main(int argc,char **argv)
QString defVal = linkedTextToString(lti);
lti->release();
printf(" Param type=%s name=%s defvalue=%s\n",
parType.data(), par->definitionName().data(),defVal.data());
parType.latin1(), par->definitionName()->latin1(),defVal.latin1());
}
pli->release();
IMemberReferenceIterator *mri = mem->references();
......@@ -416,7 +491,7 @@ int main(int argc,char **argv)
{
IMember *memr = mr->member();
printf(" References %s at line %d\n",
mr->memberName().data(),memr->bodyStart());
mr->memberName()->latin1(),memr->bodyStart());
}
mri->release();
......@@ -425,7 +500,7 @@ int main(int argc,char **argv)
{
IMember *memr = mr->member();
printf(" ReferencedBy %s at line %d\n",
mr->memberName().data(),memr->bodyStart());
mr->memberName()->latin1(),memr->bodyStart());
}
mri->release();
......@@ -434,7 +509,7 @@ int main(int argc,char **argv)
for (evi->toFirst();(ev=evi->current());evi->toNext())
{
printf(" Enum value `%s' init=`%s'\n",
ev->name().data(),ev->initializer().data());
ev->name()->latin1(),ev->initializer()->latin1());
}
evi->release();
......@@ -442,14 +517,14 @@ int main(int argc,char **argv)
if (doc)
{
printf("===== brief description ==== \n");
DumpDoc(doc);
DumpDoc(doc,0);
}
doc = mem->detailedDescription();
if (doc)
{
printf("===== detailed description ==== \n");
DumpDoc(doc);
DumpDoc(doc,0);
}
}
mli->release();
......@@ -460,14 +535,14 @@ int main(int argc,char **argv)
if (doc)
{
printf("===== brief description ==== \n");
DumpDoc(doc);
DumpDoc(doc,0);
}
doc = comp->detailedDescription();
if (doc)
{
printf("===== detailed description ==== \n");
DumpDoc(doc);
DumpDoc(doc,0);
}
if (comp->kind()==ICompound::Class)
......@@ -487,7 +562,7 @@ int main(int argc,char **argv)
for (bcli->toFirst();(bClass=bcli->current());bcli->toNext())
{
ICompound *bc = bClass->compound();
printf(" + class %s\n",bc->name().data());
printf(" + class %s\n",bc->name()->latin1());
bc->release();
}
bcli->release();
......@@ -498,11 +573,22 @@ int main(int argc,char **argv)
for (dcli->toFirst();(dClass=dcli->current());dcli->toNext())
{
ICompound *dc = dClass->compound();
printf(" + class %s\n",dc->name().data());
printf(" + class %s\n",dc->name()->latin1());
dc->release();
}
dcli->release();
}
else if (comp->kind()==ICompound::File)
{
IFile *file = dynamic_cast<IFile*>(comp);
ASSERT(file!=0);
printf("==== include dependency graph ==== \n");
DumpGraph(file->includeDependencyGraph());
printf("==== included by dependency graph ==== \n");
DumpGraph(file->includedByDependencyGraph());
}
comp->release();
}
......
Summary: A documentation system for C/C++.
Name: doxygen
Version: 1.2.15_20020407
Version: 1.2.15_20020421
Release: 1
Epoch: 1
Source0: ftp://ftp.stack.nl/pub/users/dimitri/%{name}-%{version}.src.tar.gz
......
......@@ -923,7 +923,7 @@ void ClassDef::writeDocumentation(OutputList &ol)
ol.pushGeneratorState();
ol.disable(OutputGenerator::Man);
ol.startDotGraph();
parseText(ol,theTranslator->trClassDiagram(name()));
parseText(ol,theTranslator->trClassDiagram(displayName()));
ol.endDotGraph(inheritanceGraph);
if (Config_getBool("GENERATE_LEGEND"))
{
......
......@@ -1103,7 +1103,8 @@ void Config::check()
exit(1);
}
else if (cgiURL.left(7)!="http://" &&
cgiURL.left(8)!="https://"
cgiURL.left(8)!="https://" &&
cgiURL.left(4)!="cgi:"
)
{
config_err("Error: tag CGI_URL: URL to cgi directory is invalid (must "
......@@ -2224,6 +2225,13 @@ void Config::create()
"recommended to install and use dot, since it yield more powerful graphs. \n",
TRUE
);
cb = addBool(
"HIDE_UNDOC_RELATIONS",
"If set to YES, the inheritance and collaboration graphs will hide \n"
"inheritance and usage relations if the target is undocumented \n"
"or is not a class. \n",
TRUE
);
cb = addBool(
"HAVE_DOT",
"If you set the HAVE_DOT tag to YES then doxygen will assume the dot tool is \n"
......@@ -2257,14 +2265,6 @@ void Config::create()
TRUE
);
cb->addDependency("HAVE_DOT");
cb = addBool(
"HIDE_UNDOC_RELATIONS",
"If set to YES, the inheritance and collaboration graphs will hide \n"
"inheritance and usage relations if the target is undocumented \n"
"or is not a class. \n",
TRUE
);
cb->addDependency("HAVE_DOT");
cb = addBool(
"INCLUDE_GRAPH",
"If the ENABLE_PREPROCESSING, SEARCH_INCLUDES, INCLUDE_GRAPH, and HAVE_DOT \n"
......
......@@ -123,7 +123,9 @@ void Definition::setBriefDescription(const char *b,const char *briefFile,int bri
switch(m_brief.at(bl-1))
{
case '.': case '!': case '?': break;
default: m_brief+='.'; break;
default:
if (isupper(m_brief.at(0))) m_brief+='.';
break;
}
}
m_briefFile = briefFile;
......
......@@ -1161,12 +1161,12 @@ OPMASK ({B}*{OPNORM}({OPARG}?))|({OPCAST}{OPARG})
BEGIN( DocScan );
}
<DocScan>{CMD}"verbatim"/[^a-z_A-Z0-9] {
outDoc->startCodeFragment();
outDoc->startVerbatimFragment();
insideVerbatim=TRUE;
BEGIN(DocVerbatim);
}
<DocVerbatim>{CMD}"endverbatim"/[^a-z_A-Z0-9] {
outDoc->endCodeFragment();
outDoc->endVerbatimFragment();
insideVerbatim=FALSE;
BEGIN(DocScan);
}
......@@ -1225,7 +1225,7 @@ OPMASK ({B}*{OPNORM}({OPARG}?))|({OPCAST}{OPARG})
BEGIN( DocLinkText );
}
<DocJavaLink>([a-z_A-Z0-9]+".")+ { /* Skip scope prefix (TODO: fix) */ }
<DocJavaLink>([a-z_A-Z0-9]*"#")?[a-z_A-Z0-9]+("("[a-z_A-Z0-9.,:~&*()\[\]]*")")?({B}*("const"|"volatile"))? { // TODO: support operators as well!
<DocJavaLink>([a-z_A-Z0-9]*"#")?[a-z_A-Z0-9]+("("[a-z_A-Z0-9.,:~&*()\ \[\]]*")")?({B}*("const"|"volatile"))? { // TODO: support operators as well!
linkRef = yytext;
linkText = "";
BEGIN( DocJavaLinkText );
......@@ -1272,6 +1272,10 @@ OPMASK ({B}*{OPNORM}({OPARG}?))|({OPCAST}{OPARG})
BEGIN(DocScan);
}
<DocScan>{CMD}("arg"|"li")/{BN} {
if (insideItemList)
{
forceEndItemList();
}
if (insideArgumentList)
{
outDoc->writeListItem();
......
......@@ -468,7 +468,7 @@ void DotNode::write(QTextStream &t,
}
}
void DotNode::writeXML(QTextStream &t)
void DotNode::writeXML(QTextStream &t,bool isClassGraph)
{
t << " <node id=\"" << m_number << "\">" << endl;
t << " <label>" << convertToXML(m_label) << "</label>" << endl;
......@@ -498,6 +498,8 @@ void DotNode::writeXML(QTextStream &t)
{
edgeInfo=eli.current();
t << " <childnode id=\"" << childNode->m_number << "\" relation=\"";
if (isClassGraph)
{
switch(edgeInfo->m_color)
{
case EdgeInfo::Blue: t << "public-inheritance"; break;
......@@ -507,6 +509,11 @@ void DotNode::writeXML(QTextStream &t)
case EdgeInfo::Orange: t << "template-instance"; break;
case EdgeInfo::Grey: ASSERT(0); break;
}
}
else // include graph
{
t << "include";
}
t << "\">" << endl;
if (!edgeInfo->m_label.isEmpty())
{
......@@ -1430,7 +1437,7 @@ void DotClassGraph::writeXML(QTextStream &t)
DotNode *node;
for (;(node=dni.current());++dni)
{
node->writeXML(t);
node->writeXML(t,TRUE);
}
}
......@@ -1661,7 +1668,7 @@ void DotInclDepGraph::writeXML(QTextStream &t)
DotNode *node;
for (;(node=dni.current());++dni)
{
node->writeXML(t);
node->writeXML(t,FALSE);
}
}
......
......@@ -76,7 +76,7 @@ class DotNode
int maxDistance=1000,bool backArrows=TRUE);
int m_subgraphId;
void clearWriteFlag();
void writeXML(QTextStream &t);
void writeXML(QTextStream &t,bool isClassGraph);
void writeDEF(QTextStream &t);
QCString label() const { return m_label; }
int number() const { return m_number; }
......
/******************************************************************************
*
* $Id$
*
*
*
* Copyright (C) 1997-2002 by Dimitri van Heesch.
......@@ -541,19 +541,8 @@ ArgumentList *getTemplateArgumentsFromName(
return ali.current();
}
//----------------------------------------------------------------------
// build a list of all classes mentioned in the documentation
// and all classes that have a documentation block before their definition.
static void buildClassList(Entry *root)
static void addClassToContext(Entry *root)
{
if (
((root->section & Entry::COMPOUNDDOC_MASK) ||
((root->section & Entry::COMPOUND_MASK))
) &&
!root->name.isEmpty()
)
{
QCString fullName=removeRedundantWhiteSpace(root->name);
if (fullName.isEmpty())
{
......@@ -561,7 +550,7 @@ static void buildClassList(Entry *root)
warn(root->fileName,root->startLine,
"Warning: invalid class name found!"
);
goto error;
return;
}
Debug::print(Debug::Classes,0," Found class with raw name %s\n",fullName.data());
......@@ -765,8 +754,19 @@ static void buildClassList(Entry *root)
cd->setOuterScope(d);
}
}
}
//----------------------------------------------------------------------
// build a list of all classes mentioned in the documentation
// and all classes that have a documentation block before their definition.
static void buildClassList(Entry *root)
{
if (
(root->section & Entry::COMPOUND_MASK) && !root->name.isEmpty()
)
{
addClassToContext(root);
}
error:
EntryListIterator eli(*root->sublist);
Entry *e;
for (;(e=eli.current());++eli)
......@@ -775,18 +775,41 @@ error:
}
}
static void buildClassDocList(Entry *root)
{
if (
(root->section & Entry::COMPOUNDDOC_MASK) && !root->name.isEmpty()
)
{
addClassToContext(root);
}
EntryListIterator eli(*root->sublist);
Entry *e;
for (;(e=eli.current());++eli)
{
buildClassDocList(e);
}
}
//----------------------------------------------------------------------
// build a list of all namespaces mentioned in the documentation
// and all namespaces that have a documentation block before their definition.
static void buildNamespaceList(Entry *root)
{
if (
(root->section==Entry::NAMESPACE_SEC) ||
(root->section==Entry::NAMESPACEDOC_SEC) &&
(root->section==Entry::NAMESPACE_SEC ||
root->section==Entry::NAMESPACEDOC_SEC ||
root->section==Entry::PACKAGEDOC_SEC
) &&
!root->name.isEmpty()
)
{
QCString fullName=stripAnonymousNamespaceScope(root->name.copy());
QCString fullName = root->name;
if (root->section==Entry::PACKAGEDOC_SEC)
{
fullName=substitute(fullName,".","::");
}
fullName = stripAnonymousNamespaceScope(fullName);
if (!fullName.isEmpty())
{
//printf("Found namespace %s in %s at line %d\n",root->name.data(),
......@@ -5564,50 +5587,50 @@ static void findMainPage(Entry *root)
//----------------------------------------------------------------------------
/*! Search for all Java package statements
*/
static void buildPackageList(Entry *root)
{
if (root->section == Entry::PACKAGE_SEC || root->section == Entry::PACKAGEDOC_SEC && !root->name.isEmpty())
{
PackageDef *pd=0;
if ((pd=Doxygen::packageDict.find(root->name))==0)
{
QCString tagName;
if (root->tagInfo)
{
tagName=root->tagInfo->tagName;
}
pd = new PackageDef(root->fileName,root->startLine,root->name,tagName);
Doxygen::packageDict.inSort(root->name,pd);
pd->setDocumentation(root->doc,root->docFile,root->docLine);
pd->setBriefDescription(root->brief,root->briefFile,root->briefLine);
}
else
{
if (!pd->documentation() && !root->doc.isEmpty())
{
pd->setDocumentation(root->doc,root->docFile,root->docLine);
}
if (!pd->briefDescription() && !root->brief.isEmpty())
{
pd->setBriefDescription(root->brief,root->briefFile,root->briefLine);
}
}
bool ambig;
FileDef *fd=findFileDef(Doxygen::inputNameDict,root->fileName,ambig);
if (fd)
{
fd->setPackageDef(pd);
}
}
EntryListIterator eli(*root->sublist);
Entry *e;
for (;(e=eli.current());++eli)
{
buildPackageList(e);
}
}
///*! Search for all Java package statements
// */
//static void buildPackageList(Entry *root)
//{
// if (root->section == Entry::PACKAGE_SEC || root->section == Entry::PACKAGEDOC_SEC && !root->name.isEmpty())
// {
// PackageDef *pd=0;
// if ((pd=Doxygen::packageDict.find(root->name))==0)
// {
// QCString tagName;
// if (root->tagInfo)
// {
// tagName=root->tagInfo->tagName;
// }
// pd = new PackageDef(root->fileName,root->startLine,root->name,tagName);
// Doxygen::packageDict.inSort(root->name,pd);
// pd->setDocumentation(root->doc,root->docFile,root->docLine);
// pd->setBriefDescription(root->brief,root->briefFile,root->briefLine);
// }
// else
// {
// if (!pd->documentation() && !root->doc.isEmpty())
// {
// pd->setDocumentation(root->doc,root->docFile,root->docLine);
// }
// if (!pd->briefDescription() && !root->brief.isEmpty())
// {
// pd->setBriefDescription(root->brief,root->briefFile,root->briefLine);
// }
// }
// bool ambig;
// FileDef *fd=findFileDef(Doxygen::inputNameDict,root->fileName,ambig);
// if (fd)
// {
// fd->setPackageDef(pd);
// }
// }
// EntryListIterator eli(*root->sublist);
// Entry *e;
// for (;(e=eli.current());++eli)
// {
// buildPackageList(e);
// }
//}
//----------------------------------------------------------------------------
......@@ -5814,20 +5837,20 @@ static void generateGroupDocs()
//----------------------------------------------------------------------------
static void generatePackageDocs()
{
writePackageIndex(*outputList);
if (Doxygen::packageDict.count()>0)
{
PackageSDict::Iterator pdi(Doxygen::packageDict);
PackageDef *pd;
for (pdi.toFirst();(pd=pdi.current());++pdi)
{
pd->writeDocumentation(*outputList);
}
}
}
//static void generatePackageDocs()
//{
// writePackageIndex(*outputList);
//
// if (Doxygen::packageDict.count()>0)
// {
// PackageSDict::Iterator pdi(Doxygen::packageDict);
// PackageDef *pd;
// for (pdi.toFirst();(pd=pdi.current());++pdi)
// {
// pd->writeDocumentation(*outputList);
// }
// }
//}
//----------------------------------------------------------------------------
// generate module pages
......@@ -7220,6 +7243,7 @@ void parseInput()
msg("Building class list...\n");
buildClassList(root);
buildClassDocList(root);
findUsingDeclarations(root);
msg("Building example list...\n");
......@@ -7268,8 +7292,8 @@ void parseInput()
msg("Building page list...\n");
buildPageList(root);
msg("Building package list...\n");
buildPackageList(root);
//msg("Building package list...\n");
//buildPackageList(root);
msg("Search for main page...\n");
findMainPage(root);
......@@ -7426,8 +7450,8 @@ void generateOutput()
msg("Generating group index...\n");
writeGroupIndex(*outputList);
msg("Generating package index...\n");
generatePackageDocs();
//msg("Generating package index...\n");
//generatePackageDocs();
msg("Generating example index...\n");
writeExampleIndex(*outputList);
......
......@@ -124,6 +124,8 @@ class HtmlGenerator : public OutputGenerator
void endCodeFragment() { t << "</pre></div>"; }
void startPreFragment() { t << "<pre>"; }
void endPreFragment() { t << "</pre>"; }
void startVerbatimFragment() { t << "<div class=\"fragment\"><pre>"; }
void endVerbatimFragment() { t << "</pre></div>"; }
void writeLineNumber(const char *,const char *,const char *,int);
void startCodeLine() { col=0; }
void endCodeLine() { codify("\n"); }
......
......@@ -1230,48 +1230,48 @@ void writeAnnotatedClassList(OutputList &ol)
//----------------------------------------------------------------------------
// OBSOLETE
void writePackageList(OutputList &ol)
{
bool &generateHtml = Config_getBool("GENERATE_HTML") ;
bool hasHtmlHelp = generateHtml && Config_getBool("GENERATE_HTMLHELP");
bool hasFtvHelp = generateHtml && Config_getBool("GENERATE_TREEVIEW");
ol.startIndexList();
PackageSDict::Iterator pdi(Doxygen::packageDict);
PackageDef *pd;
for (;(pd=pdi.current());++pdi)
{
if (!pd->isReference())
{
//ol.writeStartAnnoItem("package",pd->getOutputFileBase(),0,pd->name());
ol.startIndexKey();
ol.writeObjectLink(0,pd->getOutputFileBase(),0,pd->name());
ol.endIndexKey();
bool hasBrief = !pd->briefDescription().isEmpty();
ol.startIndexValue(hasBrief);
if (hasBrief)
{
//ol.docify(" (");
parseDoc(ol,
pd->getDefFileName(),pd->getDefLine(),
pd->name(),0,
abbreviate(pd->briefDescription(),pd->name()));
//ol.docify(")");
}
ol.endIndexValue(pd->getOutputFileBase(),hasBrief);
//ol.writeEndAnnoItem(pd->getOutputFileBase());
if (hasHtmlHelp)
{
HtmlHelp::getInstance()->addContentsItem(FALSE,pd->name(),pd->getOutputFileBase());
}
if (hasFtvHelp)
{
FTVHelp::getInstance()->addContentsItem(FALSE,pd->getReference(),pd->getOutputFileBase(),0,pd->name());
}
}
}
ol.endIndexList();
}
//void writePackageList(OutputList &ol)
//{
// bool &generateHtml = Config_getBool("GENERATE_HTML") ;
// bool hasHtmlHelp = generateHtml && Config_getBool("GENERATE_HTMLHELP");
// bool hasFtvHelp = generateHtml && Config_getBool("GENERATE_TREEVIEW");
// ol.startIndexList();
// PackageSDict::Iterator pdi(Doxygen::packageDict);
// PackageDef *pd;
// for (;(pd=pdi.current());++pdi)
// {
// if (!pd->isReference())
// {
// //ol.writeStartAnnoItem("package",pd->getOutputFileBase(),0,pd->name());
// ol.startIndexKey();
// ol.writeObjectLink(0,pd->getOutputFileBase(),0,pd->name());
// ol.endIndexKey();
// bool hasBrief = !pd->briefDescription().isEmpty();
// ol.startIndexValue(hasBrief);
// if (hasBrief)
// {
// //ol.docify(" (");
// parseDoc(ol,
// pd->getDefFileName(),pd->getDefLine(),
// pd->name(),0,
// abbreviate(pd->briefDescription(),pd->name()));
// //ol.docify(")");
// }
// ol.endIndexValue(pd->getOutputFileBase(),hasBrief);
//
// //ol.writeEndAnnoItem(pd->getOutputFileBase());
// if (hasHtmlHelp)
// {
// HtmlHelp::getInstance()->addContentsItem(FALSE,pd->name(),pd->getOutputFileBase());
// }
// if (hasFtvHelp)
// {
// FTVHelp::getInstance()->addContentsItem(FALSE,pd->getReference(),pd->getOutputFileBase(),0,pd->name());
// }
// }
// }
// ol.endIndexList();
//}
//----------------------------------------------------------------------------
......@@ -1496,54 +1496,54 @@ void writeAnnotatedIndex(OutputList &ol)
//----------------------------------------------------------------------------
void writePackageIndex(OutputList &ol)
{
bool &generateHtml = Config_getBool("GENERATE_HTML") ;
bool hasHtmlHelp = generateHtml && Config_getBool("GENERATE_HTMLHELP");
bool hasFtvHelp = generateHtml && Config_getBool("GENERATE_TREEVIEW");
if (documentedPackages==0) return;
ol.pushGeneratorState();
ol.disable(OutputGenerator::Man);
startFile(ol,"packages",0,"Package Index");
startTitle(ol,0);
QCString title = theTranslator->trPackageList();
QCString htmlHelpTitle = title;
QCString ftvHelpTitle = title;
if (!Config_getString("PROJECT_NAME").isEmpty()) title.prepend(Config_getString("PROJECT_NAME")+" ");
parseText(ol,title);
endTitle(ol,0,0);
ol.startTextBlock();
HtmlHelp *htmlHelp = 0;
FTVHelp *ftvHelp = 0;
if (hasHtmlHelp)
{
htmlHelp = HtmlHelp::getInstance();
htmlHelp->addContentsItem(TRUE,htmlHelpTitle,"packages");
htmlHelp->incContentsDepth();
}
if (hasFtvHelp)
{
ftvHelp = FTVHelp::getInstance();
ftvHelp->addContentsItem(TRUE,0,"packages",0,ftvHelpTitle);
ftvHelp->incContentsDepth();
}
parseText(ol,theTranslator->trPackageListDescription());
ol.endTextBlock();
writePackageList(ol);
if (hasHtmlHelp)
{
htmlHelp->decContentsDepth();
}
if (hasFtvHelp)
{
ftvHelp->decContentsDepth();
}
endFile(ol);
ol.popGeneratorState();
}
//void writePackageIndex(OutputList &ol)
//{
// bool &generateHtml = Config_getBool("GENERATE_HTML") ;
// bool hasHtmlHelp = generateHtml && Config_getBool("GENERATE_HTMLHELP");
// bool hasFtvHelp = generateHtml && Config_getBool("GENERATE_TREEVIEW");
//
// if (documentedPackages==0) return;
//
// ol.pushGeneratorState();
// ol.disable(OutputGenerator::Man);
// startFile(ol,"packages",0,"Package Index");
// startTitle(ol,0);
// QCString title = theTranslator->trPackageList();
// QCString htmlHelpTitle = title;
// QCString ftvHelpTitle = title;
// if (!Config_getString("PROJECT_NAME").isEmpty()) title.prepend(Config_getString("PROJECT_NAME")+" ");
// parseText(ol,title);
// endTitle(ol,0,0);
// ol.startTextBlock();
// HtmlHelp *htmlHelp = 0;
// FTVHelp *ftvHelp = 0;
// if (hasHtmlHelp)
// {
// htmlHelp = HtmlHelp::getInstance();
// htmlHelp->addContentsItem(TRUE,htmlHelpTitle,"packages");
// htmlHelp->incContentsDepth();
// }
// if (hasFtvHelp)
// {
// ftvHelp = FTVHelp::getInstance();
// ftvHelp->addContentsItem(TRUE,0,"packages",0,ftvHelpTitle);
// ftvHelp->incContentsDepth();
// }
// parseText(ol,theTranslator->trPackageListDescription());
// ol.endTextBlock();
// writePackageList(ol);
// if (hasHtmlHelp)
// {
// htmlHelp->decContentsDepth();
// }
// if (hasFtvHelp)
// {
// ftvHelp->decContentsDepth();
// }
//
// endFile(ol);
// ol.popGeneratorState();
//}
//----------------------------------------------------------------------------
......
......@@ -122,6 +122,8 @@ class LatexGenerator : public OutputGenerator
void endPreFragment() { t << "\\end{alltt}\\normalsize " << endl;
insidePre=FALSE;
}
void startVerbatimFragment() { t << endl << endl << "\\footnotesize\\begin{verbatim}"; }
void endVerbatimFragment() { t << "\\end{verbatim}\\normalsize " << endl; }
void writeLineNumber(const char *,const char *,const char *,int l) { t << l << " "; }
void startCodeLine() { col=0; }
void endCodeLine() { codify("\n"); }
......
......@@ -114,6 +114,8 @@ class ManGenerator : public OutputGenerator
void endCodeFragment();
void startPreFragment() { startCodeFragment(); }
void endPreFragment() { endCodeFragment(); }
void startVerbatimFragment() { startCodeFragment(); }
void endVerbatimFragment() { endCodeFragment(); }
void writeLineNumber(const char *,const char *,const char *,int l) { t << l << " "; }
void startCodeLine() {}
void endCodeLine() { codify("\n"); col=0; }
......
......@@ -163,11 +163,19 @@ class BaseOutputDocInterface
/*! Starts a fragment of preformatted text. This means that
* spacing, tabs and newlines should be kept in the output
*/
virtual void startPreFragment() = 0;
/*! Ens a preformatted text fragment. */
/*! Ends a preformatted text fragment. */
virtual void endPreFragment() = 0;
/*! Starts a fragment of verbatim test. This is preformatted text,
* without any special internal structure.
*/
virtual void startVerbatimFragment() = 0;
/*! Ends a verbatim text fragment. */
virtual void endVerbatimFragment() = 0;
/*! Writes a horizontal ruler to the output */
virtual void writeRuler() = 0;
......
......@@ -210,6 +210,10 @@ class OutputList : public OutputDocInterface
{ forall(&OutputGenerator::startPreFragment); }
void endPreFragment()
{ forall(&OutputGenerator::endPreFragment); }
void startVerbatimFragment()
{ forall(&OutputGenerator::startVerbatimFragment); }
void endVerbatimFragment()
{ forall(&OutputGenerator::endVerbatimFragment); }
void startCodeLine()
{ forall(&OutputGenerator::startCodeLine); }
void endCodeLine()
......
......@@ -1518,7 +1518,7 @@ CHARLIT (("'"\\[0-7]{1,3}"'")|("'"\\."'")|("'"[^'\\\n]{1,4}"'"))
g_defVarArgs = FALSE;
if ( g_defName!=g_lastGuardName )
{ // define may appear in the output
QCString tmp=(QCString)"#define "+g_defName+g_defArgsStr;
QCString tmp=(QCString)"#define "+g_defName;
outputArray(tmp.data(),tmp.length());
g_quoteArg=FALSE;
BEGIN(DefineText);
......@@ -1527,10 +1527,10 @@ CHARLIT (("'"\\[0-7]{1,3}"'")|("'"\\."'")|("'"[^'\\\n]{1,4}"'"))
{
//printf("Found a guard %s\n",yytext);
Define *def=0;
//if (g_includeStack.isEmpty())
//{
// addDefine();
//}
if (g_includeStack.isEmpty())
{
addDefine();
}
if ((def=g_fileDefineDict->find(g_defName))==0)
{
g_fileDefineDict->insert(g_defName,newDefine());
......@@ -1551,6 +1551,8 @@ CHARLIT (("'"\\[0-7]{1,3}"'")|("'"\\."'")|("'"[^'\\\n]{1,4}"'"))
//printf("Error: define %s is defined more than once!\n",g_defName.data());
}
}
QCString tmp=(QCString)"#define "+g_defName;
outputArray(tmp.data(),tmp.length());
//outputChar('\n');
g_lastGuardName.resize(0);
BEGIN(Start);
......
......@@ -2076,6 +2076,14 @@ void RTFGenerator::writeSectionRefItem(const char *,const char *lab,
// writeSectionRef(name,lab,title);
//}
char* RTFGenerator::getMultiByte(int c)
{
static char s[10];
sprintf(s,"\\'%X",c);
return s;
}
void RTFGenerator::docify(const char *str)
{
if (str)
......@@ -2085,8 +2093,23 @@ void RTFGenerator::docify(const char *str)
unsigned char pc='\0';
while (*p)
{
static bool MultiByte = FALSE;
c=*p++;
switch(c)
if ( MultiByte )
{
t << getMultiByte( c );
MultiByte = FALSE;
continue;
}
if ( c >= 0x80 )
{
MultiByte = TRUE;
t << getMultiByte( c );
continue;
}
switch (c)
{
case '{': t << "\\{"; break;
case '}': t << "\\}"; break;
......@@ -2111,12 +2134,29 @@ void RTFGenerator::codify(const char *str)
//static char spaces[]=" ";
if (str)
{
const char *p=str;
char c;
const unsigned char *p=(const unsigned char *)str;
unsigned char c;
int spacesToNextTabStop;
while (*p)
{
static bool MultiByte = FALSE;
c=*p++;
if( MultiByte )
{
t << getMultiByte( c );
MultiByte = FALSE;
continue;
}
if( c >= 0x80 )
{
MultiByte = TRUE;
t << getMultiByte( c );
continue;
}
switch(c)
{
case '\t': spacesToNextTabStop = Config_getInt("TAB_SIZE") - (col%Config_getInt("TAB_SIZE"));
......@@ -2129,7 +2169,7 @@ void RTFGenerator::codify(const char *str)
case '{': t << "\\{"; col++; break;
case '}': t << "\\}"; col++; break;
case '\\': t << "\\\\"; col++; break;
default: t << c; col++; break;
default: t << (char)c; col++; break;
}
}
}
......
......@@ -114,6 +114,8 @@ class RTFGenerator : public OutputGenerator
void endCodeFragment();
void startPreFragment() { startCodeFragment(); }
void endPreFragment() { endCodeFragment(); }
void startVerbatimFragment() { startVerbatimFragment(); }
void endVerbatimFragment() { endVerbatimFragment(); }
void writeLineNumber(const char *,const char *,const char *,int l) { t << l << " "; }
void startCodeLine() { col=0; }
void endCodeLine() { lineBreak(); }
......@@ -275,6 +277,7 @@ class RTFGenerator : public OutputGenerator
void RtfwriteRuler_thick() { t << "{\\pard\\widctlpar\\brdrb\\brdrs\\brdrw75\\brsp20 \\adjustright \\par}" << endl; };
void RtfwriteRuler_thin() { t << "{\\pard\\widctlpar\\brdrb\\brdrs\\brdrw5\\brsp20 \\adjustright \\par}" << endl; };
void WriteRTFReference(const char *label);
char *getMultiByte(int c);
};
#endif
......@@ -868,6 +868,7 @@ CHARLIT (("'"\\[0-7]{1,3}"'")|("'"\\."'")|("'"[^'\\\n]{1,4}"'"))
lineCount();
BEGIN( CompoundName );
}
<FindMembers>{B}*(("typedef"{BN}+)?)("volatile"{BN}+)?"class{" |
<FindMembers>{B}*(("typedef"{BN}+)?)("volatile"{BN}+)?"class"{BN}+ {
isTypedef=((QCString)yytext).find("typedef")!=-1;
current->section = Entry::CLASS_SEC;
......@@ -886,6 +887,7 @@ CHARLIT (("'"\\[0-7]{1,3}"'")|("'"\\."'")|("'"[^'\\\n]{1,4}"'"))
// current->mtArgList = 0;
//}
lineCount() ;
if (yytext[yyleng-1]=='{') unput('{');
BEGIN( CompoundName ) ;
}
<FindMembers>{B}*(("typedef"{BN}+)?)("volatile"{BN}+)?"struct{" |
......@@ -907,6 +909,7 @@ CHARLIT (("'"\\[0-7]{1,3}"'")|("'"\\."'")|("'"[^'\\\n]{1,4}"'"))
// current->mtArgList = 0;
//}
lineCount() ;
if (yytext[yyleng-1]=='{') unput('{');
BEGIN( CompoundName ) ;
}
<FindMembers>{B}*(("typedef"{BN}+)?)("volatile"{BN}+)?"union{" |
......@@ -919,6 +922,7 @@ CHARLIT (("'"\\[0-7]{1,3}"'")|("'"\\."'")|("'"[^'\\\n]{1,4}"'"))
current->startLine = yyLineNr;
current->bodyLine = yyLineNr;
lineCount() ;
if (yytext[yyleng-1]=='{') unput('{');
BEGIN( CompoundName ) ;
}
<FindMembers>{B}*(("typedef"{BN}+)?)"enum{" |
......@@ -931,6 +935,7 @@ CHARLIT (("'"\\[0-7]{1,3}"'")|("'"\\."'")|("'"[^'\\\n]{1,4}"'"))
current->startLine = yyLineNr;
current->bodyLine = yyLineNr;
lineCount() ;
if (yytext[yyleng-1]=='{') unput('{');
BEGIN( CompoundName ) ;
}
<Operator>"("{BN}*")"{BN}*/"(" {
......@@ -3622,6 +3627,7 @@ CHARLIT (("'"\\[0-7]{1,3}"'")|("'"\\."'")|("'"[^'\\\n]{1,4}"'"))
insideFormula=FALSE;
BEGIN(lastFormulaContext);
}
<ReadFormulaLong>\n { formulaText+=*yytext; }
<ReadFormulaLong,ReadFormulaShort>. { formulaText+=*yytext; }
<ExampleDoc,PageDoc,ClassDocBrief,ClassDoc,ReadFormulaShort,ReadFormulaLong>{B}*"*/" {
checkDocs();
......
/******************************************************************************
*
*
*
* Copyright (C) 1997-2000 by Dimitri van Heesch.
*
* Permission to use, copy, modify, and distribute this software and its
* documentation under the terms of the GNU General Public License is hereby
* granted. No representations are made about the suitability of this software
* for any purpose. It is provided "as is" without express or implied warranty.
* See the GNU General Public License for more details.
*
* Documents produced by Doxygen are derivative works derived from the
* input used in their production; they are not affected by this license.
*
*/
*
*
*
* Copyright (C) 1997-2000 by Dimitri van Heesch.
*
* Permission to use, copy, modify, and distribute this software and its
* documentation under the terms of the GNU General Public License is hereby
* granted. No representations are made about the suitability of this
software
* for any purpose. It is provided "as is" without express or implied
warranty.
* See the GNU General Public License for more details.
*
* Documents produced by Doxygen are derivative works derived from the
* input used in their production; they are not affected by this license.
*
*/
/*
* translator_jp.h
*
* 1.2.5)
* First Translation
* by Kenji Nagamatsu
* 1.2.12)
* Update and Shift-Jis(_WIN32)
* by Ryunosuke Sato (30-Dec-2001)
*/
* translator_jp.h
*
* 1.2.5)
* First Translation
* by Kenji Nagamatsu
* 1.2.12)
* Update and Shift-Jis(_WIN32)
* by Ryunosuke Sato (30-Dec-2001)
*/
#ifndef TRANSLATOR_JP_H
#define TRANSLATOR_JP_H
class TranslatorJapanese : public Translator
{
private:
private:
/*! The decode() can change euc into sjis */
inline QCString decode(const QCString & sInput)
{
......@@ -58,7 +60,8 @@ class TranslatorJapanese : public Translator
#endif
}
/*! used in the compound documentation before a list of related functions. */
/*! used in the compound documentation before a list of related
functions. */
virtual QCString trRelatedFunctions()
{ return decode("関連する関数"); }
......@@ -66,21 +69,22 @@ class TranslatorJapanese : public Translator
virtual QCString trRelatedSubscript()
{ return decode("(これらはメンバ関数でないことに注意)"); }
/*! header that is put before the detailed description of files, classes and namespaces. */
/*! header that is put before the detailed description of files, classes
and namespaces. */
virtual QCString trDetailedDescription()
{ return decode("解説"); }
/*! header that is put before the list of typedefs. */
virtual QCString trMemberTypedefDocumentation()
{ return decode("メンバ型定義の解説"); }
{ return decode("Typedefメンバの解説"); }
/*! header that is put before the list of enumerations. */
virtual QCString trMemberEnumerationDocumentation()
{ return decode("メンバ列挙型の解説"); }
{ return decode("Enumメンバの解説"); }
/*! header that is put before the list of member functions. */
virtual QCString trMemberFunctionDocumentation()
{ return decode("メンバ関数の解説"); }
{ return decode("関数メンバの解説"); }
/*! header that is put before the list of member attributes. */
virtual QCString trMemberDataDocumentation()
......@@ -97,19 +101,20 @@ class TranslatorJapanese : public Translator
/*! this is the text of a link put after brief descriptions. */
virtual QCString trMore()
{ return decode("より詳しく..."); }
{ return decode("[詳細]"); }
/*! put in the class documentation */
virtual QCString trListOfAllMembers()
{ return decode("すべてのメンバ一覧"); }
{ return decode("メンバ一覧"); }
/*! used as the title of the "list of all members" page of a class */
virtual QCString trMemberList()
{ return decode("メンバ一覧"); }
/*! this is the first part of a sentence that is followed by a class name */
/*! this is the first part of a sentence that is followed by a class
name */
virtual QCString trThisIsTheListOfAllMembers()
{ return decode("これはメンバの一覧です。"); }
{ return decode("これはメンバの一覧です。"); }
/*! this is the remainder of the sentence after the class name */
virtual QCString trIncludingInheritedMembers()
......@@ -127,11 +132,11 @@ class TranslatorJapanese : public Translator
/*! put after an enum name in the list of all members */
virtual QCString trEnumName()
{ return decode("列挙型"); }
{ return decode("Enum"); }
/*! put after an enum value in the list of all members */
virtual QCString trEnumValue()
{ return decode("列挙値"); }
{ return decode("Enum値"); }
/*! put after an undocumented member in the list of all members */
virtual QCString trDefinedIn()
......@@ -149,7 +154,8 @@ class TranslatorJapanese : public Translator
virtual QCString trClassHierarchy()
{ return decode("クラス階層"); }
/*! This is put above each page as a link to the list of annotated classes */
/*! This is put above each page as a link to the list of annotated
classes */
virtual QCString trCompoundList()
{
if (Config_getBool("OPTIMIZE_OUTPUT_FOR_C"))
......@@ -162,15 +168,18 @@ class TranslatorJapanese : public Translator
}
}
/*! This is put above each page as a link to the list of documented files */
/*! This is put above each page as a link to the list of documented
files */
virtual QCString trFileList()
{ return decode("ファイル一覧"); }
/*! This is put above each page as a link to the list of all verbatim headers */
/*! This is put above each page as a link to the list of all verbatim
headers */
virtual QCString trHeaderFiles()
{ return decode("ヘッダファイル"); }
/*! This is put above each page as a link to all members of compounds. */
/*! This is put above each page as a link to all members of compounds.
*/
virtual QCString trCompoundMembers()
{
if (Config_getBool("OPTIMIZE_OUTPUT_FOR_C"))
......@@ -258,17 +267,19 @@ class TranslatorJapanese : public Translator
QCString result=decode("これは");
if (Config_getBool("OPTIMIZE_OUTPUT_FOR_C"))
{
result+=decode("関数、変数、マクロ、列挙型、型定義の");
result+=decode("関数、変数、マクロ、Typedef定義、Enum定義の");
}
else
{
result+=decode("ファイルメンバの");
}
result+=decode("一覧です。それぞれが属しているファイルの解説へリンクしています。");
result+=decode("一覧です。それぞれが属しているファイルの解説へリンクしています。");
return result;
}
/*! This is an introduction to the page with the list of all header files. */
/*! This is an introduction to the page with the list of all header
files. */
virtual QCString trHeaderFilesDescription()
{ return decode("APIを構成するヘッダファイルです。"); }
......@@ -276,11 +287,13 @@ class TranslatorJapanese : public Translator
virtual QCString trExamplesDescription()
{ return decode("すべての例の一覧です。"); }
/*! This is an introduction to the page with the list of related pages */
/*! This is an introduction to the page with the list of related pages
*/
virtual QCString trRelatedPagesDescription()
{ return decode("関連ページの一覧です。"); }
/*! This is an introduction to the page with the list of class/file groups */
/*! This is an introduction to the page with the list of class/file
groups */
virtual QCString trModulesDescription()
{ return decode("すべてのモジュールの一覧です。"); }
......@@ -361,7 +374,7 @@ class TranslatorJapanese : public Translator
* the documentation of all examples.
*/
virtual QCString trExampleDocumentation()
{ return decode("例の解説"); }
{ return decode("例の解説"); }
/*! This is used in LaTeX as the title of the chapter containing
* the documentation of all related pages.
......@@ -389,13 +402,13 @@ class TranslatorJapanese : public Translator
* list of typedefs
*/
virtual QCString trTypedefs()
{ return decode("定義"); }
{ return decode("Typedef定義"); }
/*! This is used in the documentation of a file as a header before the
* list of enumerations
*/
virtual QCString trEnumerations()
{ return decode("列挙型"); }
{ return decode("Enum定義"); }
/*! This is used in the documentation of a file as a header before the
* list of (global) functions
......@@ -413,44 +426,50 @@ class TranslatorJapanese : public Translator
* list of (global) variables
*/
virtual QCString trEnumerationValues()
{ return decode("列挙型値"); }
{ return decode("Enum値"); }
/*! This is used in the documentation of a file before the list of
* documentation blocks for defines
*/
virtual QCString trDefineDocumentation()
{ return decode("マクロ定義の解説"); }
/*! This is used in the documentation of a file/namespace before the list
/*! This is used in the documentation of a file/namespace before the
list
* of documentation blocks for function prototypes
*/
virtual QCString trFunctionPrototypeDocumentation()
{ return decode("関数プロトタイプの解説"); }
/*! This is used in the documentation of a file/namespace before the list
/*! This is used in the documentation of a file/namespace before the
list
* of documentation blocks for typedefs
*/
virtual QCString trTypedefDocumentation()
{ return decode("定義の解説"); }
{ return decode("Typedef定義の解説"); }
/*! This is used in the documentation of a file/namespace before the list
/*! This is used in the documentation of a file/namespace before the
list
* of documentation blocks for enumeration types
*/
virtual QCString trEnumerationTypeDocumentation()
{ return decode("列挙型の解説"); }
{ return decode("Enum定義の解説"); }
/*! This is used in the documentation of a file/namespace before the list
/*! This is used in the documentation of a file/namespace before the
list
* of documentation blocks for enumeration values
*/
virtual QCString trEnumerationValueDocumentation()
{ return decode("列挙型値の解説"); }
{ return decode("Enum値の解説"); }
/*! This is used in the documentation of a file/namespace before the list
/*! This is used in the documentation of a file/namespace before the
list
* of documentation blocks for functions
*/
virtual QCString trFunctionDocumentation()
{ return decode("関数の解説"); }
/*! This is used in the documentation of a file/namespace before the list
/*! This is used in the documentation of a file/namespace before the
list
* of documentation blocks for variables
*/
virtual QCString trVariableDocumentation()
......@@ -480,7 +499,8 @@ class TranslatorJapanese : public Translator
result+=(QCString)date+decode("に生成されました。");
return result;
}
/*! This is part of the sentence used in the standard footer of each page.
/*! This is part of the sentence used in the standard footer of each
page.
*/
virtual QCString trWrittenBy()
{
......@@ -490,7 +510,7 @@ class TranslatorJapanese : public Translator
/*! this text is put before a class diagram */
virtual QCString trClassDiagram(const char *clName)
{
return (QCString)clName+decode("に対する継承グラフ");
return (QCString)clName+decode("継承グラフ");
}
/*! this text is generated when the \\internal command is used. */
......@@ -499,7 +519,8 @@ class TranslatorJapanese : public Translator
/*! this text is generated when the \\reimp command is used. */
virtual QCString trReimplementedForInternalReasons()
{ return decode("内部的な理由により再実装されましたが、APIには影響しません。");
{ return
decode("内部的な理由により再実装されましたが、APIには影響しません。");
}
/*! this text is generated when the \\warning command is used. */
......@@ -546,7 +567,8 @@ class TranslatorJapanese : public Translator
// new since 0.49-990307
//////////////////////////////////////////////////////////////////////////
/*! used as the title of page containing all the index of all namespaces. */
/*! used as the title of page containing all the index of all
namespaces. */
virtual QCString trNamespaceList()
{ return decode("名前空間一覧"); }
......@@ -562,7 +584,7 @@ class TranslatorJapanese : public Translator
* friends of a class
*/
virtual QCString trFriends()
{ return decode("フレンド"); }
{ return decode("Friend関数"); }
//////////////////////////////////////////////////////////////////////////
// new since 0.49-990405
......@@ -572,7 +594,7 @@ class TranslatorJapanese : public Translator
* related classes
*/
virtual QCString trRelatedFunctionDocumentation()
{ return decode("フレンドと関連する関数の解説"); }
{ return decode("関連する関数の解説"); }
//////////////////////////////////////////////////////////////////////////
// new since 0.49-990425
......@@ -590,7 +612,8 @@ class TranslatorJapanese : public Translator
case ClassDef::Struct: result+=decode("構造体 "); break;
case ClassDef::Union: result+=decode("共用体 "); break;
case ClassDef::Interface: result+=decode("インタフェース"); break;
case ClassDef::Exception: result+=decode("例外"); break; //TODO:fixme
case ClassDef::Exception: result+=decode("例外"); break;
//TODO:fixme
}
if (isTemplate) result+=decode(" テンプレート");
result+=(QCString)clName+decode(" の解説");
......@@ -607,31 +630,32 @@ class TranslatorJapanese : public Translator
/*! used as the title of the HTML page of a namespace */
virtual QCString trNamespaceReference(const char *namespaceName)
{
QCString result=decode("名前空間 ")+(QCString)namespaceName+decode(" の解説");
QCString result=decode("名前空間 ")+(QCString)namespaceName+decode("
の解説");
return result;
}
/* these are for the member sections of a class, struct or union */
virtual QCString trPublicMembers()
{ return decode("公開メンバ"); }
{ return decode("Public メソッド"); }
virtual QCString trPublicSlots()
{ return decode("公開スロット"); }
{ return decode("Public スロット"); }
virtual QCString trSignals()
{ return decode("シグナル"); }
virtual QCString trStaticPublicMembers()
{ return decode("静的公開メンバ"); }
{ return decode("Static Public メソッド"); }
virtual QCString trProtectedMembers()
{ return decode("保護メンバ"); }
{ return decode("Protected メソッド"); }
virtual QCString trProtectedSlots()
{ return decode("保護スロット"); }
{ return decode("Protected スロット"); }
virtual QCString trStaticProtectedMembers()
{ return decode("静的保護メンバ"); }
{ return decode("Static Protected メソッド"); }
virtual QCString trPrivateMembers()
{ return decode("非公開メンバ"); }
{ return decode("Private メソッド"); }
virtual QCString trPrivateSlots()
{ return decode("非公開スロット"); }
{ return decode("Private スロット"); }
virtual QCString trStaticPrivateMembers()
{ return decode("静的非公開メンバ"); }
{ return decode("Static Private メソッド"); }
/*! this function is used to produce a comma-separated list of items.
* use generateMarker(i) to indicate where item i should be put.
......@@ -690,7 +714,8 @@ class TranslatorJapanese : public Translator
return trWriteList(numEntries)+decode("で再定義されています。");
}
/*! This is put above each page as a link to all members of namespaces. */
/*! This is put above each page as a link to all members of namespaces.
*/
virtual QCString trNamespaceMembers()
{ return decode("名前空間メンバ"); }
......@@ -746,7 +771,8 @@ class TranslatorJapanese : public Translator
case ClassDef::Struct: result+=decode("構造体"); break;
case ClassDef::Union: result+=decode("共用体"); break;
case ClassDef::Interface: result+=decode("インタフェース"); break;
case ClassDef::Exception: result+=decode("例外"); break; //TODO:fixme
case ClassDef::Exception: result+=decode("例外"); break;
//TODO:fixme
}
result+=decode("の解説は次のファイルから生成されました:");
return result;
......@@ -756,7 +782,7 @@ class TranslatorJapanese : public Translator
* list.
*/
virtual QCString trAlphabeticalList()
{ return decode("アルファベット順一覧"); }
{ return decode("一覧 [アルファベット順]"); }
//////////////////////////////////////////////////////////////////////////
// new since 0.49-990901
......@@ -822,12 +848,14 @@ class TranslatorJapanese : public Translator
{
return decode("コンストラクタとデストラクタの解説");
}
/*! Used in the file documentation to point to the corresponding sources. */
/*! Used in the file documentation to point to the corresponding
sources. */
virtual QCString trGotoSourceCode()
{
return decode("ソースコードを見る。");
}
/*! Used in the file sources to point to the corresponding documentation. */
/*! Used in the file sources to point to the corresponding
documentation. */
virtual QCString trGotoDocumentation()
{
return decode("解説を見る。");
......@@ -855,7 +883,7 @@ class TranslatorJapanese : public Translator
/*! Text used the source code in the file index */
virtual QCString trCode()
{
return decode("コード");
return decode("ソースコード");
}
virtual QCString trGraphicalHierarchy()
{
......@@ -884,7 +912,7 @@ class TranslatorJapanese : public Translator
}
virtual QCString trPublicTypes()
{
return decode("公開型");
return decode("Public 型");
}
virtual QCString trPublicAttribs()
{
......@@ -894,36 +922,36 @@ class TranslatorJapanese : public Translator
}
else
{
return decode("公開属性");
return decode("Public 属性");
}
}
virtual QCString trStaticPublicAttribs()
{
return decode("静的公開属性");
return decode("Static Public 属性");
}
virtual QCString trProtectedTypes()
{
return decode("保護型");
return decode("Protected 型");
}
virtual QCString trProtectedAttribs()
{
return decode("保護属性");
return decode("Protected 属性");
}
virtual QCString trStaticProtectedAttribs()
{
return decode("静的保護属性");
return decode("Static Protected 属性");
}
virtual QCString trPrivateTypes()
{
return decode("非公開型");
return decode("Private 型");
}
virtual QCString trPrivateAttribs()
{
return decode("非公開属性");
return decode("Private 属性");
}
virtual QCString trStaticPrivateAttribs()
{
return decode("静的非公開属性");
return decode("Static Private 属性");
}
//////////////////////////////////////////////////////////////////////////
......@@ -933,12 +961,12 @@ class TranslatorJapanese : public Translator
/*! Used as a marker that is put before a todo item */
virtual QCString trTodo()
{
return decode("TODO");
return decode("Todo");
}
/*! Used as the header of the todo list */
virtual QCString trTodoList()
{
return decode("TODO一覧");
return decode("Todo一覧");
}
//////////////////////////////////////////////////////////////////////////
......@@ -959,7 +987,7 @@ class TranslatorJapanese : public Translator
}
virtual QCString trInclByDepGraph()
{
return decode("このグラフは、どのファイルから直接、間接的に"
return decode("このグラフは、どのファイルから直接/間接的に"
"インクルードされているかを示しています。");
}
virtual QCString trSince()
......@@ -980,7 +1008,8 @@ class TranslatorJapanese : public Translator
virtual QCString trLegendDocs()
{
return
decode("このページでは、doxygen で生成されたグラフをどのようにみたらよいかを"
decode("このページでは、doxygen
で生成されたグラフをどのようにみたらよいかを"
"説明します。<p>\n"
"次の例を考えてみます。\n"
"\\code\n"
......@@ -1008,16 +1037,20 @@ class TranslatorJapanese : public Translator
" Used *m_usedClass;\n"
"};\n"
"\\endcode\n"
"設定ファイル中で、タグ \\c MAX_DOT_GRAPH_HEIGHT が 200 にセットされた"
"設定ファイル中で、タグ \\c MAX_DOT_GRAPH_HEIGHT が 200
にセットされた"
"場合、次のようなグラフとなります。"
"<p><center><img src=\"graph_legend."+Config_getEnum("DOT_IMAGE_FORMAT")+"\"></center>\n"
"<p><center><img
src=\"graph_legend."+Config_getEnum("DOT_IMAGE_FORMAT")+"\"></center>\n"
"<p>\n"
"上のグラフ内のボックスには次のような意味があります。\n"
"<ul>\n"
"<li>黒く塗りつぶされたボックスは、このグラフに対応する構造体やクラスを"
"<li>黒く塗りつぶされたボックスは、このグラフに対応する構造体やクラスを"
"表します。\n"
"<li>黒枠のボックスはドキュメントがある構造体やクラスを表します。\n"
"<li>灰色の枠のボックスはドキュメントがない構造体やクラスを表します。\n"
"<li>灰色の枠のボックスはドキュメントがない構造体やクラスを表します。\n"
"<li>赤枠のボックスはドキュメントがある構造体やクラスを表しますが、"
"指定されたサイズに収まらないために継承・包含関係をすべて図示する"
"ことができなかったことを示します。"
......@@ -1060,7 +1093,7 @@ class TranslatorJapanese : public Translator
/*! Used as a section header for KDE-2 IDL methods */
virtual QCString trDCOPMethods()
{
return decode("DCOPメソッド");
return decode("DCOP メソッド");
}
//////////////////////////////////////////////////////////////////////////
......@@ -1086,7 +1119,7 @@ class TranslatorJapanese : public Translator
/*! Used for Java interfaces in the summary section of Java packages */
virtual QCString trInterfaces()
{
return decode("インタフェース");
return decode("インタフェース");
}
/*! Used for Java classes in the summary section of Java packages */
virtual QCString trClasses()
......@@ -1153,7 +1186,8 @@ class TranslatorJapanese : public Translator
/*! Used as ansicpg for RTF file
*
* The following table shows the correlation of Charset name, Charset Value and
* The following table shows the correlation of Charset name, Charset
Value and
* <pre>
* Codepage number:
* Charset Name Charset Value(hex) Codepage number
......@@ -1334,8 +1368,9 @@ class TranslatorJapanese : public Translator
*/
virtual QCString trImplementedInList(int numEntries)
{
return trWriteList(numEntries)+decode("実装されています")+".";
return trWriteList(numEntries)+decode("実装されています")+".";
}
};
#endif
......@@ -21,7 +21,7 @@
#define TRANSLATOR_SI_H
class TranslatorSlovene : public TranslatorAdapter_1_2_13
class TranslatorSlovene : public Translator
{
public:
QCString idLanguage()
......@@ -991,6 +991,26 @@ class TranslatorSlovene : public TranslatorAdapter_1_2_13
{
return "Reference";
}
//////////////////////////////////////////////////////////////////////////
// new since 1.2.13
//////////////////////////////////////////////////////////////////////////
/*! used in member documentation blocks to produce a list of
* members that are implemented by this one.
*/
virtual QCString trImplementedFromList(int numEntries)
{
return "Implementira "+trWriteList(numEntries)+".";
}
/*! used in member documentation blocks to produce a list of
* all members that implement this abstract member.
*/
virtual QCString trImplementedInList(int numEntries)
{
return "Implementirano v "+trWriteList(numEntries)+".";
}
};
#endif
......
......@@ -343,12 +343,23 @@ class XMLGenerator : public OutputDocInterface
{
XML_DB(("(startPreFragment)\n"));
startParMode();
m_t << "<programlisting>";
m_t << "<preformatted>";
}
void endPreFragment()
{
XML_DB(("(endPreFragment)\n"));
m_t << "</programlisting>";
m_t << "</preformatted>";
}
void startVerbatimFragment()
{
XML_DB(("(startVerbatimFragment)\n"));
startParMode();
m_t << "<preformatted>";
}
void endVerbatimFragment()
{
XML_DB(("(endVerbatimFragment)\n"));
m_t << "</preformatted>";
}
void writeRuler()
{
......@@ -616,20 +627,21 @@ class XMLGenerator : public OutputDocInterface
startParMode();
m_t << "<table cols=\"" << cols << "\">\n";
}
void endTable(bool)
void endTable(bool hasCaption)
{
XML_DB(("endTable\n"));
m_t << "</row>\n</table>";
if (!hasCaption) m_t << "</row>\n";
m_t << "</table>";
}
void startCaption()
{
XML_DB(("startCaption"));
m_t << "<caption>";
m_t << "</row><caption>";
}
void endCaption()
{
XML_DB(("encCaption"));
m_t << "</caption";
m_t << "</caption>";
}
void nextTableRow()
{
......@@ -639,7 +651,7 @@ class XMLGenerator : public OutputDocInterface
// we need manually add a para here because cells are
// parsed before the table is generated, and thus
// are already parsed as if they are inside a paragraph.
m_t << "<para>";
//m_t << "<para>";
}
void endTableRow()
{
......
......@@ -8,7 +8,7 @@ TEMPLATE = app
CONFIG = qt warn_on release
TMAKE_CC = cxx
TMAKE_CFLAGS = -x cxx -w -D_POSIX_SOURCE -D_OSF_SOURCE -D_AES_SOURCE
TMAKE_CFLAGS = -x cc -w -D_POSIX_SOURCE -D_OSF_SOURCE -D_AES_SOURCE
TMAKE_CFLAGS_WARN_ON =
TMAKE_CFLAGS_WARN_OFF =
TMAKE_CFLAGS_RELEASE = -O2
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment