summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/classdef.cpp7
-rw-r--r--src/classdef.h9
-rw-r--r--src/code.l56
-rw-r--r--src/commentcnv.l2
-rw-r--r--src/compound.xsd2
-rw-r--r--src/compound_xsd.h2
-rw-r--r--src/docparser.cpp19
-rw-r--r--src/docparser.h6
-rw-r--r--src/dot.cpp51
-rw-r--r--src/doxygen.cpp18
-rw-r--r--src/entry.h8
-rw-r--r--src/filedef.cpp3
-rw-r--r--src/groupdef.cpp5
-rw-r--r--src/htmldocvisitor.cpp9
-rw-r--r--src/htmlgen.cpp40
-rw-r--r--src/htmlgen.h6
-rw-r--r--src/index.xsd2
-rw-r--r--src/index_xsd.h2
-rw-r--r--src/latexgen.h6
-rw-r--r--src/mangen.h6
-rw-r--r--src/memberdef.cpp78
-rw-r--r--src/memberdef.h1
-rw-r--r--src/membergroup.h2
-rw-r--r--src/namespacedef.cpp3
-rw-r--r--src/outputgen.h6
-rw-r--r--src/outputlist.cpp1
-rw-r--r--src/outputlist.h13
-rw-r--r--src/rtfgen.h6
-rw-r--r--src/scanner.l131
-rw-r--r--src/translator_br.h4
-rw-r--r--src/translator_ca.h4
-rw-r--r--src/translator_cn.h4
-rw-r--r--src/translator_cz.h4
-rw-r--r--src/translator_de.h4
-rw-r--r--src/translator_dk.h4
-rw-r--r--src/translator_en.h4
-rw-r--r--src/translator_es.h4
-rw-r--r--src/translator_fi.h2
-rw-r--r--src/translator_fr.h4
-rw-r--r--src/translator_gr.h4
-rw-r--r--src/translator_hr.h4
-rw-r--r--src/translator_hu.h4
-rw-r--r--src/translator_it.h4
-rw-r--r--src/translator_jp.h4
-rw-r--r--src/translator_kr.h4
-rw-r--r--src/translator_nl.h4
-rw-r--r--src/translator_no.h4
-rw-r--r--src/translator_pl.h4
-rw-r--r--src/translator_pt.h4
-rw-r--r--src/translator_ro.h4
-rw-r--r--src/translator_ru.h8
-rw-r--r--src/translator_se.h4
-rw-r--r--src/translator_si.h4
-rw-r--r--src/translator_sk.h4
-rw-r--r--src/translator_sr.h4
-rw-r--r--src/translator_tw.h4
-rw-r--r--src/translator_ua.h22
57 files changed, 491 insertions, 141 deletions
diff --git a/src/classdef.cpp b/src/classdef.cpp
index 9ca6ae8..ff014c9 100644
--- a/src/classdef.cpp
+++ b/src/classdef.cpp
@@ -91,6 +91,7 @@ ClassDef::ClassDef(
m_artificial = FALSE;
m_isAbstract = FALSE;
m_isStatic = FALSE;
+ m_isObjC = FALSE;
m_membersMerged = FALSE;
QCString ns;
extractNamespaceName(m_name,m_className,ns);
@@ -997,6 +998,10 @@ void ClassDef::writeDocumentation(OutputList &ol)
{
ol.docify("import ");
}
+ else if (isObjectiveC())
+ {
+ ol.docify("#import ");
+ }
else
{
ol.docify("#include ");
@@ -2381,6 +2386,8 @@ QCString ClassDef::compoundTypeString() const
case Struct: return "struct";
case Union: return "union";
case Interface: return "interface";
+ case Protocol: return "protocol";
+ case Category: return "category";
case Exception: return "exception";
}
return "unknown";
diff --git a/src/classdef.h b/src/classdef.h
index ae42993..fb7dd88 100644
--- a/src/classdef.h
+++ b/src/classdef.h
@@ -63,6 +63,8 @@ class ClassDef : public Definition
Struct=Entry::STRUCT_SEC,
Union=Entry::UNION_SEC,
Interface=Entry::INTERFACE_SEC,
+ Protocol=Entry::PROTOCOL_SEC,
+ Category=Entry::CATEGORY_SEC,
Exception=Entry::EXCEPTION_SEC
};
DefType definitionType() { return TypeClass; }
@@ -197,6 +199,9 @@ class ClassDef : public Definition
*/
bool isAbstract() const { return m_isAbstract; }
+ /*! Returns TRUE if this class is implemented in Objective-C */
+ bool isObjectiveC() const { return m_isObjC; }
+
/*! returns the name of the class including outer classes, but not
* including namespaces.
*/
@@ -288,6 +293,7 @@ class ClassDef : public Definition
void addMembersToTemplateInstance(ClassDef *cd,const char *templSpec);
void setClassIsArtificial() { m_artificial = TRUE; }
void setIsStatic(bool b) { m_isStatic=b; }
+ void setIsObjectiveC(bool b) { m_isObjC=b; }
void addListReferences();
/*! Creates a new compound definition.
@@ -425,6 +431,9 @@ class ClassDef : public Definition
/*! Is the class part of an unnamed namespace? */
bool m_isStatic;
+ /*! Is the class part implemented in Objective C? */
+ bool m_isObjC;
+
/*! TRUE if classes members are merged with those of the base classes. */
bool m_membersMerged;
diff --git a/src/code.l b/src/code.l
index 2f3b501..316b05f 100644
--- a/src/code.l
+++ b/src/code.l
@@ -1079,9 +1079,10 @@ SCOPENAME "$"?(({ID}?{BN}*"::"{BN}*)*)((~{BN}*)?{ID})
TEMPLIST "<"[^\"\}\{\(\)\/\n\>]*">"
SCOPETNAME ((({ID}{TEMPLIST}?){BN}*"::"{BN}*)*)((~{BN}*)?{ID})
SCOPEPREFIX ({ID}{TEMPLIST}?{BN}*"::"{BN}*)+
-KEYWORD ("asm"|"auto"|"class"|"const"|"const_cast"|"delete"|"dynamic_cast"|"enum"|"explicit"|"extern"|"false"|"friend"|"inline"|"mutable"|"namespace"|"new"|"operator"|"private"|"protected"|"public"|"register"|"reinterpret_cast"|"sizeof"|"static"|"static_cast"|"struct"|"template"|"this"|"true"|"typedef"|"typeid"|"typename"|"union"|"using"|"virtual"|"volatile"|"abstract"|"final"|"import"|"synchronized"|"transient")
+KEYWORD_OBJC ("@public"|"@private"|"@protected"|"@class"|"@implementation"|"@interface"|"@end"|"@selector"|"@protocol")
+KEYWORD ("asm"|"auto"|"class"|"const"|"const_cast"|"delete"|"dynamic_cast"|"enum"|"explicit"|"extern"|"false"|"friend"|"inline"|"mutable"|"namespace"|"new"|"operator"|"private"|"protected"|"public"|"register"|"reinterpret_cast"|"sizeof"|"static"|"static_cast"|"struct"|"template"|"this"|"true"|"typedef"|"typeid"|"typename"|"union"|"using"|"virtual"|"volatile"|"abstract"|"final"|"import"|"synchronized"|"transient"|KEYWORD_OBJC)
FLOWKW ("break"|"case"|"catch"|"continue"|"default"|"do"|"else"|"for"|"goto"|"if"|"return"|"switch"|"throw"|"throws"|"try"|"while")
-TYPEKW ("bool"|"char"|"double"|"float"|"int"|"long"|"short"|"signed"|"unsigned"|"void"|"wchar_t"|"boolean")
+TYPEKW ("bool"|"char"|"double"|"float"|"int"|"long"|"short"|"signed"|"unsigned"|"void"|"wchar_t"|"boolean"|"id"|"SEL")
%option noyywrap
@@ -1109,12 +1110,12 @@ TYPEKW ("bool"|"char"|"double"|"float"|"int"|"long"|"short"|"signed"|"unsigned"
%%
<*>\x0d
-<Body>^([ \t]*"#"[ \t]*"include"[ \t]*)("<"|"\"") {
+<Body>^([ \t]*"#"[ \t]*("include"|"import")[ \t]*)("<"|"\"") {
startFontClass("preprocessor");
g_code->codify(yytext);
BEGIN( ReadInclude );
}
-<Body>("class"|"struct"|"union"|"namespace")[ \t\n]+ {
+<Body>("class"|"struct"|"union"|"namespace"|"@interface"|"@implementation"|"@interface")[ \t\n]+ {
startFontClass("keyword");
codifyLines(yytext);
endFontClass();
@@ -1234,11 +1235,30 @@ TYPEKW ("bool"|"char"|"double"|"float"|"int"|"long"|"short"|"signed"|"unsigned"
g_currentMemberDef=0;
if (g_currentDefinition)
g_currentDefinition=g_currentDefinition->getOuterScope();
- else
- g_currentDefinition=0;
}
BEGIN(Body);
}
+<Body>"@end" {
+ g_theVarContext.popScope();
+
+ int *scope = g_scopeStack.pop();
+ if (scope==SCOPEBLOCK || scope==CLASSBLOCK)
+ {
+ popScope();
+ }
+
+ startFontClass("keyword");
+ g_code->codify(yytext);
+ endFontClass();
+
+ g_inClass=FALSE;
+
+ g_insideBody=FALSE;
+ g_currentMemberDef=0;
+ if (g_currentDefinition)
+ g_currentDefinition=g_currentDefinition->getOuterScope();
+ BEGIN(Body);
+ }
<ClassName,ClassVar>";" {
g_code->codify(yytext);
g_searchingForBody=FALSE;
@@ -1330,7 +1350,7 @@ TYPEKW ("bool"|"char"|"double"|"float"|"int"|"long"|"short"|"signed"|"unsigned"
g_curClassBases.clear();
BEGIN( Body );
}
-<Bases>"virtual"|"public"|"protected"|"private" {
+<Bases>"virtual"|"public"|"protected"|"private"|"@public"|"@private"|"@protected" {
startFontClass("keyword");
g_code->codify(yytext);
endFontClass();
@@ -1354,6 +1374,22 @@ TYPEKW ("bool"|"char"|"double"|"float"|"int"|"long"|"short"|"signed"|"unsigned"
if (--g_sharpCount<=0)
BEGIN ( Bases );
}
+<Bases>"(" {
+ g_code->codify(yytext);
+ g_sharpCount=1;
+ BEGIN ( SkipSharp );
+ }
+<SkipSharp>"(" {
+ g_code->codify(yytext);
+ ++g_sharpCount;
+ }
+<SkipSharp>")" {
+ g_code->codify(yytext);
+ if (--g_sharpCount<=0)
+ BEGIN ( Bases );
+ }
+
+
<Bases>"," {
g_code->codify(yytext);
}
@@ -1618,9 +1654,14 @@ TYPEKW ("bool"|"char"|"double"|"float"|"int"|"long"|"short"|"signed"|"unsigned"
g_type.resize(0);
g_name.resize(0);
}
+ else if (*yytext=='[')
+ {
+ g_theCallContext.pushScope();
+ }
g_args.resize(0);
}
<Body>"]" {
+ g_theCallContext.popScope();
g_code->codify(yytext);
// TODO: nested arrays like: a[b[0]->func()]->func()
g_name = g_saveName.copy();
@@ -1673,6 +1714,7 @@ TYPEKW ("bool"|"char"|"double"|"float"|"int"|"long"|"short"|"signed"|"unsigned"
}
}
<MemberCall2,FuncCall>")" {
+ g_theVarContext.addVariable(g_parmType,g_parmName);
g_theCallContext.popScope();
g_code->codify(yytext);
if (--g_bracketCount<=0)
diff --git a/src/commentcnv.l b/src/commentcnv.l
index cfb3846..668e2e9 100644
--- a/src/commentcnv.l
+++ b/src/commentcnv.l
@@ -238,7 +238,7 @@ void replaceComment(int offset);
g_readLineCtx=YY_START;
BEGIN(ReadLine);
}
-<SComment>^[ \t]*"//!"/.*\n {
+<SComment>^[ \t]*"//!"/.*\n {
replaceComment(0);
g_readLineCtx=YY_START;
BEGIN(ReadLine);
diff --git a/src/compound.xsd b/src/compound.xsd
index 51f7ff6..aa45adf 100644
--- a/src/compound.xsd
+++ b/src/compound.xsd
@@ -606,6 +606,8 @@
<xsd:enumeration value="struct" />
<xsd:enumeration value="union" />
<xsd:enumeration value="interface" />
+ <xsd:enumeration value="protocol" />
+ <xsd:enumeration value="category" />
<xsd:enumeration value="exception" />
<xsd:enumeration value="file" />
<xsd:enumeration value="namespace" />
diff --git a/src/compound_xsd.h b/src/compound_xsd.h
index 90753b7..d43646e 100644
--- a/src/compound_xsd.h
+++ b/src/compound_xsd.h
@@ -606,6 +606,8 @@
" <xsd:enumeration value=\"struct\" />\n"
" <xsd:enumeration value=\"union\" />\n"
" <xsd:enumeration value=\"interface\" />\n"
+" <xsd:enumeration value=\"protocol\" />\n"
+" <xsd:enumeration value=\"category\" />\n"
" <xsd:enumeration value=\"exception\" />\n"
" <xsd:enumeration value=\"file\" />\n"
" <xsd:enumeration value=\"namespace\" />\n"
diff --git a/src/docparser.cpp b/src/docparser.cpp
index 80bea8d..760e1b5 100644
--- a/src/docparser.cpp
+++ b/src/docparser.cpp
@@ -3316,7 +3316,8 @@ void DocPara::handleImage(const QString &cmdName)
return;
}
doctokenizerYYsetStatePara();
- DocImage *img = new DocImage(this,findAndCopyImage(g_token->name,t),t);
+ HtmlAttribList attrList;
+ DocImage *img = new DocImage(this,attrList,findAndCopyImage(g_token->name,t),t);
m_children.append(img);
img->parse();
}
@@ -3982,7 +3983,8 @@ int DocPara::handleHtmlStartTag(const QString &tagName,const HtmlAttribList &tag
{
HtmlAttribListIterator li(tagHtmlAttribs);
HtmlAttrib *opt;
- for (li.toFirst();(opt=li.current());++li)
+ int index=0;
+ for (li.toFirst();(opt=li.current());++li,++index)
{
if (opt->name=="name") // <a name=label> tag
{
@@ -4002,7 +4004,8 @@ int DocPara::handleHtmlStartTag(const QString &tagName,const HtmlAttribList &tag
// copy attributes
HtmlAttribList attrList = tagHtmlAttribs;
// and remove the href attribute
- attrList.remove(opt);
+ bool result = attrList.remove(index);
+ ASSERT(result);
DocHRef *href = new DocHRef(this,attrList,opt->value);
m_children.append(href);
g_insideHtmlLink=TRUE;
@@ -4039,12 +4042,18 @@ int DocPara::handleHtmlStartTag(const QString &tagName,const HtmlAttribList &tag
HtmlAttribListIterator li(tagHtmlAttribs);
HtmlAttrib *opt;
bool found=FALSE;
- for (li.toFirst();(opt=li.current());++li)
+ int index=0;
+ for (li.toFirst();(opt=li.current());++li,++index)
{
//printf("option name=%s value=%s\n",opt->name.data(),opt->value.data());
if (opt->name=="src" && !opt->value.isEmpty())
{
- DocImage *img = new DocImage(this,opt->value,DocImage::Html);
+ // copy attributes
+ HtmlAttribList attrList = tagHtmlAttribs;
+ // and remove the href attribute
+ bool result = attrList.remove(index);
+ ASSERT(result);
+ DocImage *img = new DocImage(this,attrList,opt->value,DocImage::Html);
m_children.append(img);
found = TRUE;
}
diff --git a/src/docparser.h b/src/docparser.h
index 8742ed5..05d6c93 100644
--- a/src/docparser.h
+++ b/src/docparser.h
@@ -561,8 +561,8 @@ class DocImage : public CompAccept<DocImage>, public DocNode
{
public:
enum Type { Html, Latex, Rtf };
- DocImage(DocNode *parent,const QString &name,Type t) :
- m_parent(parent), m_name(name), m_type(t) {}
+ DocImage(DocNode *parent,const HtmlAttribList &attribs,const QString &name,Type t) :
+ m_parent(parent), m_attribs(attribs), m_name(name), m_type(t) {}
Kind kind() const { return Kind_Image; }
Type type() const { return m_type; }
QString name() const { return m_name; }
@@ -570,11 +570,13 @@ class DocImage : public CompAccept<DocImage>, public DocNode
bool hasCaption() const { return !m_children.isEmpty(); }
QString width() const { return m_width; }
QString height() const { return m_height; }
+ const HtmlAttribList &attribs() const { return m_attribs; }
void accept(DocVisitor *v) { CompAccept<DocImage>::accept(this,v); }
void parse();
private:
DocNode *m_parent;
+ HtmlAttribList m_attribs;
QString m_name;
Type m_type;
QString m_width;
diff --git a/src/dot.cpp b/src/dot.cpp
index 87f843b..d7de2db 100644
--- a/src/dot.cpp
+++ b/src/dot.cpp
@@ -604,7 +604,7 @@ void DotNode::write(QTextStream &t,
bool backArrows
)
{
- //printf("DotNode::write(%d) name=%s\n",distance,m_label.data());
+ //printf("DotNode::write(%d) name=%s this=%p written=%d\n",distance,m_label.data(),this,m_written);
if (m_written) return; // node already written to the output
if (m_distance>distance) return;
QList<DotNode> *nl = toChildren ? m_children : m_parents;
@@ -631,6 +631,7 @@ void DotNode::write(QTextStream &t,
{
if (cn->m_distance<=distance)
{
+ //printf("write arrow %s%s%s\n",label().data(),backArrows?"<-":"->",cn->label().data());
writeArrow(t,gt,format,cn,dnli2.current(),topDown,backArrows);
}
cn->write(t,gt,format,topDown,toChildren,distance,backArrows);
@@ -644,19 +645,21 @@ void DotNode::write(QTextStream &t,
{
if (pn->m_distance<=distance)
{
+ //printf("write arrow %s%s%s\n",label().data(),backArrows?"<-":"->",pn->label().data());
writeArrow(t,
- gt,
- format,
- pn,
- pn->m_edgeInfo->at(pn->m_children->findRef(this)),
- FALSE,
- backArrows
- );
+ gt,
+ format,
+ pn,
+ pn->m_edgeInfo->at(pn->m_children->findRef(this)),
+ FALSE,
+ backArrows
+ );
}
pn->write(t,gt,format,TRUE,FALSE,distance,backArrows);
}
}
}
+ //printf("end DotNode::write(%d) name=%s\n",distance,m_label.data());
}
void DotNode::writeXML(QTextStream &t,bool isClassGraph)
@@ -935,12 +938,18 @@ void DotGfxHierarchyTable::writeGraph(QTextStream &out,const char *path)
if (node->m_subgraphId==n->m_subgraphId)
{
node->clearWriteFlag();
+ }
+ }
+ for (dnli2.toFirst();(node=dnli2.current());++dnli2)
+ {
+ if (node->m_subgraphId==n->m_subgraphId)
+ {
node->write(md5stream,DotNode::Hierarchy,BITMAP,FALSE,TRUE,1000,TRUE);
}
}
uchar md5_sig[16];
QCString sigStr(33);
- MD5Buffer(buf.ascii(),buf.length(),md5_sig);
+ MD5Buffer((const unsigned char *)buf.ascii(),buf.length(),md5_sig);
MD5SigToString(md5_sig,sigStr.data(),33);
if (checkAndUpdateMd5Signature(baseName,sigStr) ||
!QFileInfo(mapName).exists())
@@ -957,6 +966,12 @@ void DotGfxHierarchyTable::writeGraph(QTextStream &out,const char *path)
if (node->m_subgraphId==n->m_subgraphId)
{
node->clearWriteFlag();
+ }
+ }
+ for (dnli2.toFirst();(node=dnli2.current());++dnli2)
+ {
+ if (node->m_subgraphId==n->m_subgraphId)
+ {
node->write(t,DotNode::Hierarchy,BITMAP,FALSE,TRUE,1000,TRUE);
}
}
@@ -1006,11 +1021,11 @@ void DotGfxHierarchyTable::addHierarchy(DotNode *n,ClassDef *cd,bool hideSuper)
for ( ; (bcd=bcli.current()) ; ++bcli )
{
ClassDef *bClass=bcd->classDef;
- //printf("Trying super class=`%s'\n",bClass->name().data());
+ //printf(" Trying super class=`%s' usedNodes=%d\n",bClass->name().data(),m_usedNodes->count());
if (bClass->isVisibleInHierarchy() && hasVisibleRoot(bClass->baseClasses()))
{
DotNode *bn;
- //printf("Node `%s' Found visible class=`%s'\n",n->m_label.data(),
+ //printf(" Node `%s' Found visible class=`%s'\n",n->m_label.data(),
// bClass->name().data());
if ((bn=m_usedNodes->find(bClass->name()))) // node already present
{
@@ -1018,7 +1033,7 @@ void DotGfxHierarchyTable::addHierarchy(DotNode *n,ClassDef *cd,bool hideSuper)
{
n->addChild(bn,bcd->prot);
bn->addParent(n);
- //printf("Adding node %s to existing base node %s (c=%d,p=%d)\n",
+ //printf(" Adding node %s to existing base node %s (c=%d,p=%d)\n",
// n->m_label.data(),
// bn->m_label.data(),
// bn->m_children ? bn->m_children->count() : 0,
@@ -1027,7 +1042,7 @@ void DotGfxHierarchyTable::addHierarchy(DotNode *n,ClassDef *cd,bool hideSuper)
}
//else
//{
- // printf("Class already has an arrow!\n");
+ // printf(" Class already has an arrow!\n");
//}
}
else
@@ -1039,14 +1054,15 @@ void DotGfxHierarchyTable::addHierarchy(DotNode *n,ClassDef *cd,bool hideSuper)
bClass->displayName(),
tmp_url.data()
);
- //printf("Adding node %s to new base node %s (c=%d,p=%d)\n",
+ n->addChild(bn,bcd->prot);
+ bn->addParent(n);
+ //printf(" Adding node %s to new base node %s (c=%d,p=%d)\n",
// n->m_label.data(),
// bn->m_label.data(),
// bn->m_children ? bn->m_children->count() : 0,
// bn->m_parents ? bn->m_parents->count() : 0
// );
- n->addChild(bn,bcd->prot);
- bn->addParent(n);
+ //printf(" inserting %s (%p)\n",bClass->name().data(),bn);
m_usedNodes->insert(bClass->name(),bn); // add node to the used list
}
if (!bClass->visited && !hideSuper && bClass->subClasses()->count()>0)
@@ -1057,6 +1073,7 @@ void DotGfxHierarchyTable::addHierarchy(DotNode *n,ClassDef *cd,bool hideSuper)
}
}
}
+ //printf("end addHierarchy\n");
}
void DotGfxHierarchyTable::addClassList(ClassSDict *cl)
@@ -1481,7 +1498,7 @@ QCString computeMd5Signature(DotNode *root,
}
uchar md5_sig[16];
QCString sigStr(33);
- MD5Buffer(buf.ascii(),buf.length(),md5_sig);
+ MD5Buffer((const unsigned char *)buf.ascii(),buf.length(),md5_sig);
MD5SigToString(md5_sig,sigStr.data(),33);
//printf("md5: %s | file: %s\n",sigStr,baseName.data());
return sigStr;
diff --git a/src/doxygen.cpp b/src/doxygen.cpp
index 640ce0f..869cb8c 100644
--- a/src/doxygen.cpp
+++ b/src/doxygen.cpp
@@ -715,16 +715,24 @@ static void addClassToContext(Entry *root)
{
case Entry::UNION_SEC:
case Entry::UNIONDOC_SEC:
- sec=ClassDef::Union; break;
+ sec=ClassDef::Union;
+ break;
case Entry::STRUCT_SEC:
case Entry::STRUCTDOC_SEC:
- sec=ClassDef::Struct; break;
+ sec=ClassDef::Struct;
+ break;
case Entry::INTERFACE_SEC:
case Entry::INTERFACEDOC_SEC:
- sec=ClassDef::Interface; break;
+ sec=ClassDef::Interface;
+ break;
+ case Entry::PROTOCOL_SEC:
+ case Entry::PROTOCOLDOC_SEC:
+ sec=ClassDef::Protocol;
+ break;
case Entry::EXCEPTION_SEC:
case Entry::EXCEPTIONDOC_SEC:
- sec=ClassDef::Exception; break;
+ sec=ClassDef::Exception;
+ break;
}
Debug::print(Debug::Classes,0," New class `%s' (sec=0x%08x)! #tArgLists=%d\n",
fullName.data(),root->section,root->tArgLists ? (int)root->tArgLists->count() : -1);
@@ -746,9 +754,9 @@ static void addClassToContext(Entry *root)
tagName,refFileName);
cd->setDocumentation(root->doc,root->docFile,root->docLine); // copy docs to definition
cd->setBriefDescription(root->brief,root->briefFile,root->briefLine);
+ cd->setIsObjectiveC(root->objc);
//printf("new ClassDef %s tempArgList=%p specScope=%s\n",fullName.data(),root->tArgList,root->scopeSpec.data());
-
ArgumentList *tArgList =
getTemplateArgumentsFromName(fullName,root->tArgLists);
//printf("class %s template args=%s\n",fullName.data(),
diff --git a/src/entry.h b/src/entry.h
index cf46027..82d1a36 100644
--- a/src/entry.h
+++ b/src/entry.h
@@ -184,8 +184,11 @@ class Entry
EXCEPTION_SEC = 0x00000008,
NAMESPACE_SEC = 0x00000010,
INTERFACE_SEC = 0x00000020,
+ PROTOCOL_SEC = 0x00000040,
+ CATEGORY_SEC = 0x00000080,
COMPOUND_MASK = CLASS_SEC | STRUCT_SEC | UNION_SEC |
- INTERFACE_SEC | EXCEPTION_SEC,
+ INTERFACE_SEC | EXCEPTION_SEC |
+ PROTOCOL_SEC | CATEGORY_SEC,
SCOPE_MASK = COMPOUND_MASK | NAMESPACE_SEC,
CLASSDOC_SEC = 0x00000100,
@@ -194,8 +197,9 @@ class Entry
EXCEPTIONDOC_SEC = 0x00000800,
NAMESPACEDOC_SEC = 0x00001000,
INTERFACEDOC_SEC = 0x00002000,
+ PROTOCOLDOC_SEC = 0x00004000,
COMPOUNDDOC_MASK = CLASSDOC_SEC | STRUCTDOC_SEC | UNIONDOC_SEC |
- INTERFACEDOC_SEC | EXCEPTIONDOC_SEC,
+ INTERFACEDOC_SEC | EXCEPTIONDOC_SEC | PROTOCOLDOC_SEC,
SOURCE_SEC = 0x00010000,
HEADER_SEC = 0x00020000,
diff --git a/src/filedef.cpp b/src/filedef.cpp
index c8e3839..0642245 100644
--- a/src/filedef.cpp
+++ b/src/filedef.cpp
@@ -150,12 +150,9 @@ void FileDef::writeDetailedDocumentation(OutputList &ol)
{
ol.writeRuler();
ol.pushGeneratorState();
- //bool latexOn = ol.isEnabled(OutputGenerator::Latex);
- //if (latexOn) ol.disable(OutputGenerator::Latex);
ol.disable(OutputGenerator::Latex);
ol.disable(OutputGenerator::RTF);
ol.writeAnchor(0,"_details");
- //if (latexOn) ol.enable(OutputGenerator::Latex);
ol.popGeneratorState();
ol.startGroupHeader();
ol.parseText(theTranslator->trDetailedDescription());
diff --git a/src/groupdef.cpp b/src/groupdef.cpp
index fd82f35..e9507ad 100644
--- a/src/groupdef.cpp
+++ b/src/groupdef.cpp
@@ -479,10 +479,13 @@ void GroupDef::writeDocumentation(OutputList &ol)
ol.pushGeneratorState();
ol.disable(OutputGenerator::Latex);
ol.disable(OutputGenerator::RTF);
+ ol.disable(OutputGenerator::Man);
ol.startTextLink(0,"_details");
ol.parseText(theTranslator->trMore());
ol.endTextLink();
- //ol.enable(OutputGenerator::Latex);
+ ol.enableAll();
+ ol.disableAllBut(OutputGenerator::Man);
+ ol.newParagraph();
ol.popGeneratorState();
}
diff --git a/src/htmldocvisitor.cpp b/src/htmldocvisitor.cpp
index 03ca662..bea84fa 100644
--- a/src/htmldocvisitor.cpp
+++ b/src/htmldocvisitor.cpp
@@ -293,10 +293,9 @@ void HtmlDocVisitor::visit(DocFormula *f)
{
if (m_hide) return;
bool bDisplay = f->text().at(0)=='\\';
- if (bDisplay) m_t << "<p class=formulaDsp>" << endl;
- m_t << "<img class=formula"
- << (bDisplay ? "Dsp" : "Inl");
- m_t << " alt=\"";
+ if (bDisplay) m_t << "<p class=\"formulaDsp\">" << endl;
+ m_t << "<img class=\"formula" << (bDisplay ? "Dsp" : "Inl");
+ m_t << "\" alt=\"";
filterQuotedCdataAttr(f->text());
m_t << "\"";
/// @todo cache image dimensions on formula generation and give height/width
@@ -696,7 +695,7 @@ void HtmlDocVisitor::visitPre(DocImage *img)
}
m_t << "<div align=\"center\">" << endl;
m_t << "<img src=\"" << img->name() << "\" alt=\""
- << baseName << "\">" << endl;
+ << baseName << "\"" << htmlAttribsToString(img->attribs()) << ">" << endl;
if (img->hasCaption())
{
m_t << "<p><strong>";
diff --git a/src/htmlgen.cpp b/src/htmlgen.cpp
index 26ace6e..a5113b6 100644
--- a/src/htmlgen.cpp
+++ b/src/htmlgen.cpp
@@ -57,15 +57,22 @@ static const char *defaultStyleSheet =
" margin: 2px;\n"
" padding: 2px;\n"
"}\n"
-"A.qindex { text-decoration: none; font-weight: bold; color: #1A419D}\n"
-"A.qindex:visited { text-decoration: none; font-weight: bold; color: #1A419D}\n"
+"A.qindex {\n"
+" text-decoration: none;\n"
+" font-weight: bold;\n"
+" color: #1A419D;\n"
+" padding: 2px;\n"
+"}\n"
+"A.qindex:visited {\n"
+" text-decoration: none;\n"
+" font-weight: bold;\n"
+" color: #1A419D\n"
+" padding: 2px;\n"
+"}\n"
"A.qindex:hover {\n"
" text-decoration: none;\n"
" background-color: #ddddff;\n"
-" padding-top: 2px;\n"
-" padding-right: 2px;\n"
-" padding-bottom: 2px;\n"
-" padding-left: 2px;\n"
+" padding: 2px;\n"
"}\n"
"A.qindexHL {\n"
" text-decoration: none;\n"
@@ -987,11 +994,13 @@ void HtmlGenerator::endMemberDocPrefixItem()
t << " </tr>" << endl;
}
-void HtmlGenerator::startMemberDocName()
+void HtmlGenerator::startMemberDocName(bool align)
{
DBG_HTML(t << "<!-- startMemberDocName -->" << endl;)
t << " <tr>" << endl;
- t << " <td class=\"md\" nowrap valign=\"top\"> ";
+ t << " <td class=\"md\" nowrap valign=\"top\"";
+ if (align) t << " align=\"right\"";
+ t << "> ";
}
void HtmlGenerator::endMemberDocName()
@@ -1000,13 +1009,18 @@ void HtmlGenerator::endMemberDocName()
t << "</td>" << endl;
}
-void HtmlGenerator::startParameterList()
+void HtmlGenerator::startParameterList(bool openBracket)
{
DBG_HTML(t << "<!-- startParameterList -->" << endl;)
- t << " <td class=\"md\" valign=\"top\">(&nbsp;</td>" << endl;
+ t << " <td class=\"md\" valign=\"top\">";
+ if (openBracket)
+ {
+ t << "(&nbsp;";
+ }
+ t << "</td>" << endl;
}
-void HtmlGenerator::startParameterType(bool first)
+void HtmlGenerator::startParameterType(bool first,const char *key)
{
if (first)
{
@@ -1017,7 +1031,9 @@ void HtmlGenerator::startParameterType(bool first)
{
DBG_HTML(t << "<!-- startParameterType -->" << endl;)
t << " <tr>" << endl;
- t << " <td></td>" << endl;
+ t << " <td class=\"md\" nowrap align=\"right\">";
+ if (key) t << key;
+ t << "</td>" << endl;
t << " <td></td>" << endl;
t << " <td class=\"md\" nowrap>";
}
diff --git a/src/htmlgen.h b/src/htmlgen.h
index a788f0a..4c303d6 100644
--- a/src/htmlgen.h
+++ b/src/htmlgen.h
@@ -195,13 +195,13 @@ class HtmlGenerator : public OutputGenerator
void startMemberDocPrefixItem();
void endMemberDocPrefixItem();
- void startMemberDocName();
+ void startMemberDocName(bool);
void endMemberDocName();
- void startParameterType(bool first);
+ void startParameterType(bool first,const char *key);
void endParameterType();
void startParameterName(bool);
void endParameterName(bool last,bool emptyList);
- void startParameterList();
+ void startParameterList(bool);
void endParameterList();
void startFontClass(const char *s) { t << "<span class=\"" << s << "\">"; }
diff --git a/src/index.xsd b/src/index.xsd
index 20918c0..1e214fa 100644
--- a/src/index.xsd
+++ b/src/index.xsd
@@ -32,6 +32,8 @@
<xsd:enumeration value="struct"/>
<xsd:enumeration value="union"/>
<xsd:enumeration value="interface"/>
+ <xsd:enumeration value="protocol"/>
+ <xsd:enumeration value="category"/>
<xsd:enumeration value="exception"/>
<xsd:enumeration value="file"/>
<xsd:enumeration value="namespace"/>
diff --git a/src/index_xsd.h b/src/index_xsd.h
index 0049282..f947a8a 100644
--- a/src/index_xsd.h
+++ b/src/index_xsd.h
@@ -32,6 +32,8 @@
" <xsd:enumeration value=\"struct\"/>\n"
" <xsd:enumeration value=\"union\"/>\n"
" <xsd:enumeration value=\"interface\"/>\n"
+" <xsd:enumeration value=\"protocol\"/>\n"
+" <xsd:enumeration value=\"category\"/>\n"
" <xsd:enumeration value=\"exception\"/>\n"
" <xsd:enumeration value=\"file\"/>\n"
" <xsd:enumeration value=\"namespace\"/>\n"
diff --git a/src/latexgen.h b/src/latexgen.h
index 652ccd4..2ec1563 100644
--- a/src/latexgen.h
+++ b/src/latexgen.h
@@ -270,13 +270,13 @@ class LatexGenerator : public OutputGenerator
void startMemberDocPrefixItem() {}
void endMemberDocPrefixItem() {}
- void startMemberDocName() {}
+ void startMemberDocName(bool) {}
void endMemberDocName() {}
- void startParameterType(bool) {}
+ void startParameterType(bool,const char *) {}
void endParameterType() {}
void startParameterName(bool) {}
void endParameterName(bool,bool) {}
- void startParameterList() {}
+ void startParameterList(bool) {}
void endParameterList() {}
void startFontClass(const char *) {}
diff --git a/src/mangen.h b/src/mangen.h
index 1c8086e..a830a32 100644
--- a/src/mangen.h
+++ b/src/mangen.h
@@ -237,13 +237,13 @@ class ManGenerator : public OutputGenerator
void startMemberDocPrefixItem() {}
void endMemberDocPrefixItem() {}
- void startMemberDocName() {}
+ void startMemberDocName(bool) {}
void endMemberDocName() {}
- void startParameterType(bool) {}
+ void startParameterType(bool,const char *) {}
void endParameterType() {}
void startParameterName(bool) {}
void endParameterName(bool,bool) {}
- void startParameterList() {}
+ void startParameterList(bool) {}
void endParameterList() {}
void startFontClass(const char *) {}
diff --git a/src/memberdef.cpp b/src/memberdef.cpp
index cde2c5a..8a3b927 100644
--- a/src/memberdef.cpp
+++ b/src/memberdef.cpp
@@ -89,10 +89,10 @@ static void writeDefArgumentList(OutputList &ol,ClassDef *cd,
ol.pushGeneratorState();
ol.disableAllBut(OutputGenerator::Html);
ol.endMemberDocName();
- ol.startParameterList();
+ ol.startParameterList(!md->isObjCMethod());
ol.enableAll();
ol.disable(OutputGenerator::Html);
- ol.docify("("); // start argument list
+ if (!md->isObjCMethod()) ol.docify("("); // start argument list
ol.endMemberDocName();
ol.popGeneratorState();
//printf("===> name=%s isDefine=%d\n",md->name().data(),md->isDefine());
@@ -125,10 +125,10 @@ static void writeDefArgumentList(OutputList &ol,ClassDef *cd,
bool first=TRUE;
while (a)
{
- if (md->isDefine() || first) ol.startParameterType(first);
+ if (md->isDefine() || first) ol.startParameterType(first,md->isObjCMethod()?"dummy":0);
QRegExp re(")(");
int vp;
- if (!a->attrib.isEmpty()) // argument has an IDL attribute
+ if (!a->attrib.isEmpty() && !md->isObjCMethod()) // argument has an IDL attribute
{
ol.docify(a->attrib+" ");
}
@@ -136,12 +136,14 @@ static void writeDefArgumentList(OutputList &ol,ClassDef *cd,
{
//printf("a->type=`%s' a->name=`%s'\n",a->type.data(),a->name.data());
QCString n=a->type.left(vp);
+ if (md->isObjCMethod()) { n.prepend("("); n.append(")"); }
if (!cName.isEmpty()) n=addTemplateNames(n,cd->name(),cName);
linkifyText(TextGeneratorOLImpl(ol),cd,md->getBodyDef(),md->name(),n);
}
else // non-function pointer type
{
QCString n=a->type;
+ if (md->isObjCMethod()) { n.prepend("("); n.append(")"); }
if (!cName.isEmpty()) n=addTemplateNames(n,cd->name(),cName);
linkifyText(TextGeneratorOLImpl(ol),cd,md->getBodyDef(),md->name(),n);
}
@@ -181,11 +183,18 @@ static void writeDefArgumentList(OutputList &ol,ClassDef *cd,
a=defArgList->next();
if (a)
{
- ol.docify(", "); // there are more arguments
+ if (!md->isObjCMethod()) ol.docify(", "); // there are more arguments
if (!md->isDefine())
{
+ QCString key;
+ if (md->isObjCMethod() && a->attrib.length()>2)
+ {
+ //printf("Found parameter keyword %s\n",a->attrib.data());
+ // strip [ and ]
+ key=a->attrib.mid(1,a->attrib.length()-2)+":";
+ }
ol.endParameterName(FALSE,FALSE);
- ol.startParameterType(FALSE);
+ ol.startParameterType(FALSE,key);
}
}
first=FALSE;
@@ -193,13 +202,13 @@ static void writeDefArgumentList(OutputList &ol,ClassDef *cd,
ol.pushGeneratorState();
ol.disable(OutputGenerator::Html);
//if (!first) ol.writeString("&nbsp;");
- ol.docify(")"); // end argument list
+ if (!md->isObjCMethod()) ol.docify(")"); // end argument list
ol.enableAll();
ol.disableAllBut(OutputGenerator::Html);
if (!md->isDefine())
{
if (first) ol.startParameterName(defArgList->count()<2);
- ol.endParameterName(TRUE,defArgList->count()<2);
+ ol.endParameterName(!md->isObjCMethod(),defArgList->count()<2);
}
else
{
@@ -929,6 +938,11 @@ void MemberDef::writeDeclaration(OutputList &ol,
}
else
{
+ if (isObjCMethod())
+ {
+ ltype.prepend("(");
+ ltype.append(")");
+ }
linkifyText(TextGeneratorOLImpl(ol),d,getBodyDef(),name(),ltype,TRUE);
}
bool htmlOn = ol.isEnabled(OutputGenerator::Html);
@@ -996,7 +1010,7 @@ void MemberDef::writeDeclaration(OutputList &ol,
}
}
- if (argsString())
+ if (argsString() && !isObjCMethod())
{
if (!isDefine()) ol.writeString(" ");
//ol.docify(argsString());
@@ -1237,7 +1251,7 @@ void MemberDef::writeDocumentation(MemberList *ml,OutputList &ol,
if (si==-1) si=0;
while ((pi=r.match(ldef,i+l,&l))!=-1) ei=i=pi+l;
// first si characters of ldef contain compound type name
- ol.startMemberDocName();
+ ol.startMemberDocName(isObjCMethod());
ol.docify(ldef.left(si));
ol.docify(" { ... } ");
// last ei characters of ldef contain pointer/reference specifiers
@@ -1304,7 +1318,28 @@ void MemberDef::writeDocumentation(MemberList *ml,OutputList &ol,
}
}
}
- ol.startMemberDocName();
+ ol.startMemberDocName(isObjCMethod());
+ if (isObjCMethod())
+ {
+ int dp = ldef.find(':');
+ if (dp!=-1)
+ {
+ ldef=ldef.left(dp+1);
+ }
+ int l=ldef.length();
+ //printf("start >%s<\n",ldef.data());
+ int i=l-1;
+ while (i>=0 && (isId(ldef.at(i)) || ldef.at(i)==':')) i--;
+ while (i>=0 && isspace(ldef.at(i))) i--;
+ if (i>0)
+ {
+ // insert braches around the type
+ QCString tmp("("+ldef.left(i+1)+")"+ldef.mid(i+1));
+ ldef=tmp;
+ }
+ //printf("end >%s< i=%d\n",ldef.data(),i);
+ if (isStatic()) ldef.prepend("+ "); else ldef.prepend("- ");
+ }
linkifyText(TextGeneratorOLImpl(ol),container,getBodyDef(),name(),ldef);
writeDefArgumentList(ol,cd,scopeName,this);
if (hasOneLineInitializer()) // add initializer
@@ -1329,12 +1364,14 @@ void MemberDef::writeDocumentation(MemberList *ml,OutputList &ol,
Specifier lvirt=virtualness();
- if (protection()!=Public || lvirt!=Normal ||
- isFriend() || isRelated() || isExplicit() ||
- isMutable() || (isInline() && Config_getBool("INLINE_INFO")) ||
- isSignal() || isSlot() ||
- isStatic() || (classDef && classDef!=container) ||
- isSettable() || isGettable()
+ if (!isObjCMethod() &&
+ (protection()!=Public || lvirt!=Normal ||
+ isFriend() || isRelated() || isExplicit() ||
+ isMutable() || (isInline() && Config_getBool("INLINE_INFO")) ||
+ isSignal() || isSlot() ||
+ isStatic() || (classDef && classDef!=container) ||
+ isSettable() || isGettable()
+ )
)
{
// write the member specifier list
@@ -2137,3 +2174,10 @@ void MemberDef::setInbodyDocumentation(const char *docs,
m_inbodyFile = docFile;
}
+bool MemberDef::isObjCMethod() const
+{
+ if (classDef && classDef->isObjectiveC() && isFunction()) return TRUE;
+ return FALSE;
+}
+
+
diff --git a/src/memberdef.h b/src/memberdef.h
index e29621f..b3dc90f 100644
--- a/src/memberdef.h
+++ b/src/memberdef.h
@@ -126,6 +126,7 @@ class MemberDef : public Definition
bool isGettable() const { return (memSpec&Entry::Gettable)!=0; }
bool isSettable() const { return (memSpec&Entry::Settable)!=0; }
bool isExternal() const { return explExt; }
+ bool isObjCMethod() const;
bool isConstructor() const;
bool isDestructor() const;
bool hasOneLineInitializer() const;
diff --git a/src/membergroup.h b/src/membergroup.h
index 63e6bdb..454117b 100644
--- a/src/membergroup.h
+++ b/src/membergroup.h
@@ -22,7 +22,7 @@
#include <qlist.h>
#include "sortdict.h"
-#define NOGROUP -1
+#define DOX_NOGROUP -1
class MemberDef;
class ClassDef;
diff --git a/src/namespacedef.cpp b/src/namespacedef.cpp
index 8e66402..6d00bbc 100644
--- a/src/namespacedef.cpp
+++ b/src/namespacedef.cpp
@@ -308,6 +308,9 @@ void NamespaceDef::writeDocumentation(OutputList &ol)
ol.startTextLink(0,"_details");
ol.parseText(theTranslator->trMore());
ol.endTextLink();
+ ol.enableAll();
+ ol.disableAllBut(OutputGenerator::Man);
+ ol.newParagraph();
ol.popGeneratorState();
}
ol.disable(OutputGenerator::Man);
diff --git a/src/outputgen.h b/src/outputgen.h
index ae9cc04..cb85446 100644
--- a/src/outputgen.h
+++ b/src/outputgen.h
@@ -346,13 +346,13 @@ class OutputGenerator : public BaseOutputDocInterface
virtual void lastIndexPage() = 0;
virtual void startMemberDocPrefixItem() = 0;
virtual void endMemberDocPrefixItem() = 0;
- virtual void startMemberDocName() = 0;
+ virtual void startMemberDocName(bool) = 0;
virtual void endMemberDocName() = 0;
- virtual void startParameterType(bool) = 0;
+ virtual void startParameterType(bool,const char *) = 0;
virtual void endParameterType() = 0;
virtual void startParameterName(bool) = 0;
virtual void endParameterName(bool,bool) = 0;
- virtual void startParameterList() = 0;
+ virtual void startParameterList(bool) = 0;
virtual void endParameterList() = 0;
protected:
diff --git a/src/outputlist.cpp b/src/outputlist.cpp
index 1629a52..fbacc76 100644
--- a/src/outputlist.cpp
+++ b/src/outputlist.cpp
@@ -273,6 +273,7 @@ FORALL4(const char *a1,const char *a2,const char *a3,bool a4,a1,a2,a3,a4)
#endif
FORALL2(int a1,bool a2,a1,a2)
FORALL2(bool a1,HighlightedItem a2,a1,a2)
+FORALL2(bool a1,const char *a2,a1,a2)
FORALL2(ParamListTypes a1,const char *a2,a1,a2)
FORALL1(IndexSections a1,a1)
FORALL2(const char *a1,const char *a2,a1,a2)
diff --git a/src/outputlist.h b/src/outputlist.h
index d6c68c9..86600df 100644
--- a/src/outputlist.h
+++ b/src/outputlist.h
@@ -329,20 +329,20 @@ class OutputList : public OutputDocInterface
{ forall(&OutputGenerator::startMemberDocPrefixItem); }
void endMemberDocPrefixItem()
{ forall(&OutputGenerator::endMemberDocPrefixItem); }
- void startMemberDocName()
- { forall(&OutputGenerator::startMemberDocName); }
+ void startMemberDocName(bool align)
+ { forall(&OutputGenerator::startMemberDocName,align); }
void endMemberDocName()
{ forall(&OutputGenerator::endMemberDocName); }
- void startParameterType(bool first)
- { forall(&OutputGenerator::startParameterType,first); }
+ void startParameterType(bool first,const char *key)
+ { forall(&OutputGenerator::startParameterType,first,key); }
void endParameterType()
{ forall(&OutputGenerator::endParameterType); }
void startParameterName(bool one)
{ forall(&OutputGenerator::startParameterName,one); }
void endParameterName(bool last,bool one)
{ forall(&OutputGenerator::endParameterName,last,one); }
- void startParameterList()
- { forall(&OutputGenerator::startParameterList); }
+ void startParameterList(bool openBracket)
+ { forall(&OutputGenerator::startParameterList,openBracket); }
void endParameterList()
{ forall(&OutputGenerator::endParameterList); }
void startFontClass(const char *c)
@@ -392,6 +392,7 @@ class OutputList : public OutputDocInterface
#endif
FORALLPROTO2(int,bool);
FORALLPROTO2(bool,HighlightedItem);
+ FORALLPROTO2(bool,const char *);
FORALLPROTO2(ParamListTypes,const char *);
FORALLPROTO2(const char *,const char *);
FORALLPROTO2(const char *,bool);
diff --git a/src/rtfgen.h b/src/rtfgen.h
index 5785e58..65cd94e 100644
--- a/src/rtfgen.h
+++ b/src/rtfgen.h
@@ -240,13 +240,13 @@ class RTFGenerator : public OutputGenerator
void startMemberDocPrefixItem() {}
void endMemberDocPrefixItem() {}
- void startMemberDocName() {}
+ void startMemberDocName(bool) {}
void endMemberDocName() {}
- void startParameterType(bool) {}
+ void startParameterType(bool,const char *) {}
void endParameterType() {}
void startParameterName(bool) {}
void endParameterName(bool,bool) {}
- void startParameterList() {}
+ void startParameterList(bool) {}
void endParameterList() {}
void startFontClass(const char *) {}
diff --git a/src/scanner.l b/src/scanner.l
index beb2ac6..873b377 100644
--- a/src/scanner.l
+++ b/src/scanner.l
@@ -106,7 +106,7 @@ static bool removeSlashes;
static Specifier virt;
static Specifier baseVirt;
static QCString msType,msName,msArgs;
-static int memberGroupId = NOGROUP;
+static int memberGroupId = DOX_NOGROUP;
static QCString memberGroupHeader;
static QCString memberGroupDocs;
static bool isTypedef;
@@ -180,7 +180,7 @@ static void initParser()
sharpCount = 0;
roundCount = 0;
curlyCount = 0;
- memberGroupId = NOGROUP;
+ memberGroupId = DOX_NOGROUP;
memberGroupRelates.resize(0);
memberGroupInside.resize(0);
mtype = Method;
@@ -809,10 +809,10 @@ PHPKW ("require"|"require_once"|"include"|"include_once"|"echo")[^a-zA-Z0-9_;]
%%
<*>\x06[^\x06]*\x06 { // new file
- if (memberGroupId!=NOGROUP)
+ if (memberGroupId!=DOX_NOGROUP)
{
warn(yyFileName,yyLineNr,"Warning: Missing //@}");
- memberGroupId=NOGROUP;
+ memberGroupId=DOX_NOGROUP;
}
yyLineNr= 0 ; // there is always an extra newline at the start of the file
int i;
@@ -1063,6 +1063,9 @@ PHPKW ("require"|"require_once"|"include"|"include_once"|"echo")[^a-zA-Z0-9_;]
<ObjCParams>{ID} { // name of parameter
current->argList->getLast()->name=yytext;
}
+<ObjCParams>"..." { // name of parameter
+ current->argList->getLast()->name=yytext;
+ }
<ObjCParams>":" {
current->name += ':';
}
@@ -1236,6 +1239,19 @@ PHPKW ("require"|"require_once"|"include"|"include_once"|"echo")[^a-zA-Z0-9_;]
current->bodyLine = yyLineNr;
BEGIN( CompoundName );
}
+<FindMembers>{B}*"@protocol"{BN}+ { // Objective-C protocol definition
+ lineCount();
+ isTypedef=FALSE;
+ current->section = Entry::PROTOCOL_SEC;
+ current->objc = insideObjC = TRUE;
+ current->protection = protection = Public ;
+ addType( current ) ;
+ current->type += " protocol" ;
+ current->fileName = yyFileName;
+ current->startLine = yyLineNr;
+ current->bodyLine = yyLineNr;
+ BEGIN( CompoundName );
+ }
<FindMembers>{B}*"exception"{BN}+ { // Corba IDL exception
isTypedef=FALSE;
current->section = Entry::EXCEPTION_SEC;
@@ -1247,6 +1263,7 @@ PHPKW ("require"|"require_once"|"include"|"include_once"|"echo")[^a-zA-Z0-9_;]
lineCount();
BEGIN( CompoundName );
}
+<FindMembers>"@class" | // for Objective C class declarations
<FindMembers>{B}*(("typedef"{BN}+)?)("volatile"{BN}+)?"class{" |
<FindMembers>{B}*(("typedef"{BN}+)?)("volatile"{BN}+)?"class"{BN}+ {
isTypedef=((QCString)yytext).find("typedef")!=-1;
@@ -1290,15 +1307,6 @@ PHPKW ("require"|"require_once"|"include"|"include_once"|"echo")[^a-zA-Z0-9_;]
current->fileName = yyFileName;
current->startLine = yyLineNr;
current->bodyLine = yyLineNr;
- //if (current->mtArgList) // transfer template arguments
- //{
- // if (current->tArgList)
- // {
- // delete current->tArgList;
- // }
- // current->tArgList = current->mtArgList;
- // current->mtArgList = 0;
- //}
lineCount() ;
if (yytext[yyleng-1]=='{') unput('{');
BEGIN( CompoundName ) ;
@@ -1868,7 +1876,7 @@ PHPKW ("require"|"require_once"|"include"|"include_once"|"echo")[^a-zA-Z0-9_;]
if (current_root->section & Entry::SCOPE_MASK)
{
current->inside = current_root->name+"::";
- if (current->mGrpId!=NOGROUP)
+ if (current->mGrpId!=DOX_NOGROUP)
{
memberGroupInside = current->inside.copy();
}
@@ -1892,7 +1900,7 @@ PHPKW ("require"|"require_once"|"include"|"include_once"|"echo")[^a-zA-Z0-9_;]
}
}
<FindMembers,FindFields,ReadInitializer>"//"([!/]?){B}*{CMD}"}".*|"/*"([!*]?){B}*{CMD}"}".*"*/" {
- if (memberGroupId==NOGROUP && autoGroupStack.isEmpty())
+ if (memberGroupId==DOX_NOGROUP && autoGroupStack.isEmpty())
{
warn(yyFileName,yyLineNr,
"Warning: end of group without matching begin.");
@@ -2282,8 +2290,10 @@ PHPKW ("require"|"require_once"|"include"|"include_once"|"echo")[^a-zA-Z0-9_;]
current->args = current->args.simplifyWhiteSpace();
current->type = current->type.simplifyWhiteSpace();
current->name = current->name.stripWhiteSpace();
- //printf("adding `%s' `%s' `%s' brief=%s\n",current->type.data(),current->name.data(),current->args.data(),current->brief.data());
- if (insideObjC) // method definition follows
+ //printf("adding `%s' `%s' `%s' brief=%s insideObjC=%d %x\n",current->type.data(),current->name.data(),current->args.data(),current->brief.data(),insideObjC,current->section);
+ if (insideObjC &&
+ (current->section==Entry::INTERFACE_SEC || current->section==Entry::CATEGORY_SEC)
+ ) // method definition follows
{
BEGIN( ReadBodyIntf ) ;
}
@@ -3299,7 +3309,15 @@ PHPKW ("require"|"require_once"|"include"|"include_once"|"echo")[^a-zA-Z0-9_;]
if (--sharpCount<=0)
{
current->name = removeRedundantWhiteSpace(current->name);
- BEGIN( lastClassTemplSpecContext );
+ if (current->section == Entry::PROTOCOL_SEC)
+ { // Objective-C protocol
+ unput('{'); // fake start of body
+ BEGIN( ClassVar );
+ }
+ else
+ {
+ BEGIN( lastClassTemplSpecContext );
+ }
}
}
<ClassTemplSpec>"<" {
@@ -3312,6 +3330,10 @@ PHPKW ("require"|"require_once"|"include"|"include_once"|"echo")[^a-zA-Z0-9_;]
<CompoundName>{SCOPENAME} {
current->name = yytext ;
lineCount();
+ if (current->section == Entry::PROTOCOL_SEC)
+ {
+ unput('{'); // fake start of body
+ }
BEGIN( ClassVar );
}
<CompoundName>{CSSCOPENAME} { // C# style scope
@@ -3335,6 +3357,7 @@ PHPKW ("require"|"require_once"|"include"|"include_once"|"echo")[^a-zA-Z0-9_;]
BEGIN( FindMembers );
}
}
+<ClassVar>"," // Multiple class forward declaration
<ClassVar>{ID} {
if (insideIDL && strcmp(yytext,"switch")==0)
{
@@ -3381,6 +3404,7 @@ PHPKW ("require"|"require_once"|"include"|"include_once"|"echo")[^a-zA-Z0-9_;]
if (insideObjC && *yytext=='(') // class category
{
current->name+='(';
+ current->section=Entry::CATEGORY_SEC;
BEGIN( ClassCategory );
}
else
@@ -3404,7 +3428,7 @@ PHPKW ("require"|"require_once"|"include"|"include_once"|"echo")[^a-zA-Z0-9_;]
current->type.resize(0);
if (current->section == Entry::INTERFACE_SEC ||
current->section == Entry::STRUCT_SEC ||
- insidePHP || insideCS || insideD
+ insidePHP || insideCS || insideD || insideObjC
)
baseProt=Public;
else
@@ -3430,7 +3454,11 @@ PHPKW ("require"|"require_once"|"include"|"include_once"|"echo")[^a-zA-Z0-9_;]
current->name.sprintf("@%d",anonCount++);
}
curlyCount=0;
- if (current->section==Entry::NAMESPACE_SEC)
+ if (current->section==Entry::PROTOCOL_SEC)
+ {
+ BEGIN( ReadBodyIntf );
+ }
+ else if (current->section==Entry::NAMESPACE_SEC)
{
BEGIN( ReadNSBody );
}
@@ -3467,6 +3495,24 @@ PHPKW ("require"|"require_once"|"include"|"include_once"|"echo")[^a-zA-Z0-9_;]
current->args += ' ';
current->args += name;
}
+<Bases>^{B}*/[\-+] {
+ if (!insideObjC)
+ {
+ REJECT;
+ }
+ else
+ {
+ unput('{'); // insert start of fake body
+ }
+ }
+<ClassVar,Bases>"@end" { // empty ObjC interface
+ unput('d'); // insert fake body: {}@end
+ unput('n');
+ unput('e');
+ unput('@');
+ unput('}');
+ unput('{');
+ }
<ClassVar>"<" { current->name += *yytext;
sharpCount=1;
lastSkipSharpContext = YY_START;
@@ -3509,7 +3555,9 @@ PHPKW ("require"|"require_once"|"include"|"include_once"|"echo")[^a-zA-Z0-9_;]
current->extends->append(
new BaseInfo(baseName,baseProt,baseVirt)
);
- if (current->section == Entry::INTERFACE_SEC || insideJava || insidePHP || insideCS || insideD)
+ if (current->section==Entry::INTERFACE_SEC ||
+ insideJava || insidePHP || insideCS ||
+ insideD || insideObjC)
baseProt=Public;
else
baseProt=Private;
@@ -3525,7 +3573,14 @@ PHPKW ("require"|"require_once"|"include"|"include_once"|"echo")[^a-zA-Z0-9_;]
new BaseInfo(baseName,baseProt,baseVirt)
);
curlyCount=0;
- BEGIN( ReadBody ) ;
+ if (insideObjC)
+ {
+ BEGIN( ReadBodyIntf );
+ }
+ else
+ {
+ BEGIN( ReadBody ) ;
+ }
}
<SkipUnionSwitch>{B}*"(" {
roundCount++;
@@ -3563,7 +3618,7 @@ PHPKW ("require"|"require_once"|"include"|"include_once"|"echo")[^a-zA-Z0-9_;]
if (current_root->section & Entry::SCOPE_MASK)
{
current->inside = current_root->name+"::";
- if (current->mGrpId!=NOGROUP)
+ if (current->mGrpId!=DOX_NOGROUP)
{
memberGroupInside = current->inside.copy();
}
@@ -3577,7 +3632,7 @@ PHPKW ("require"|"require_once"|"include"|"include_once"|"echo")[^a-zA-Z0-9_;]
if (current_root->section & Entry::SCOPE_MASK)
{
current->inside = current_root->name+"::";
- if (current->mGrpId!=NOGROUP)
+ if (current->mGrpId!=DOX_NOGROUP)
{
memberGroupInside = current->inside.copy();
}
@@ -3633,7 +3688,7 @@ PHPKW ("require"|"require_once"|"include"|"include_once"|"echo")[^a-zA-Z0-9_;]
if (current_root->section & Entry::SCOPE_MASK)
{
current->inside = current_root->name+"::";
- if (current->mGrpId!=NOGROUP)
+ if (current->mGrpId!=DOX_NOGROUP)
{
memberGroupInside = current->inside.copy();
}
@@ -3652,7 +3707,7 @@ PHPKW ("require"|"require_once"|"include"|"include_once"|"echo")[^a-zA-Z0-9_;]
if (current_root->section & Entry::SCOPE_MASK)
{
current->inside = current_root->name+"::";
- if (current->mGrpId!=NOGROUP)
+ if (current->mGrpId!=DOX_NOGROUP)
{
memberGroupInside = current->inside.copy();
}
@@ -4059,7 +4114,7 @@ PHPKW ("require"|"require_once"|"include"|"include_once"|"echo")[^a-zA-Z0-9_;]
}
<ClassDocRelates>({ID}"::")*{ID} {
current->relates = yytext;
- if (current->mGrpId!=NOGROUP)
+ if (current->mGrpId!=DOX_NOGROUP)
{
memberGroupRelates = yytext;
}
@@ -4072,7 +4127,7 @@ PHPKW ("require"|"require_once"|"include"|"include_once"|"echo")[^a-zA-Z0-9_;]
<ClassDocRelatesAlso>({ID}"::")*{ID} {
current->relatesDup = TRUE;
current->relates = yytext;
- if (current->mGrpId!=NOGROUP)
+ if (current->mGrpId!=DOX_NOGROUP)
{
memberGroupRelates = yytext;
}
@@ -4536,13 +4591,13 @@ PHPKW ("require"|"require_once"|"include"|"include_once"|"echo")[^a-zA-Z0-9_;]
BEGIN( GroupName );
}
<ClassDoc,Doc,JavaDoc>{CMD}"{" {
- if (memberGroupId==NOGROUP && current->section==Entry::GROUPDOC_SEC)
+ if (memberGroupId==DOX_NOGROUP && current->section==Entry::GROUPDOC_SEC)
{
startGroupInDoc();
}
}
<ClassDoc,Doc,JavaDoc>{CMD}"}" {
- if (memberGroupId==NOGROUP && autoGroupStack.isEmpty())
+ if (memberGroupId==DOX_NOGROUP && autoGroupStack.isEmpty())
{
warn(yyFileName,yyLineNr,
"Warning: end of group without matching begin.");
@@ -5352,7 +5407,7 @@ static void startGroup()
}
else
{
- //if (memberGroupId!=NOGROUP)
+ //if (memberGroupId!=DOX_NOGROUP)
//{
// //warn(yyFileName,yyLineNr,"Warning: ignoring nested member group. "
// // "Previous command was found at line %d.",lastMemberGroupLine);
@@ -5389,7 +5444,7 @@ static void startGroupInDoc()
}
else if (current->section == Entry::MEMBERGRP_SEC) /* scope for a member group: @name */
{
- //if (memberGroupId!=NOGROUP)
+ //if (memberGroupId!=DOX_NOGROUP)
//{
// printf("startGroupInDoc ends group %d\n",memberGroupId);
// endGroup();
@@ -5414,7 +5469,7 @@ static void startGroupInDoc()
static void endGroup()
{
- if (memberGroupId!=NOGROUP) // end of member group
+ if (memberGroupId!=DOX_NOGROUP) // end of member group
{
//Doxygen::memberDocDict.insert(memberGroupId,
// new QCString(memberGroupDocs)
@@ -5425,12 +5480,12 @@ static void endGroup()
info->doc = memberGroupDocs;
info->docFile = yyFileName;
}
- memberGroupId=NOGROUP;
+ memberGroupId=DOX_NOGROUP;
memberGroupRelates.resize(0);
memberGroupInside.resize(0);
if (YY_START!=ReadInitializer)
{
- current->mGrpId=NOGROUP;
+ current->mGrpId=DOX_NOGROUP;
current->relates.resize(0);
}
memberGroupDocs.resize(0);
@@ -5450,7 +5505,7 @@ static void endGroup()
static void forceEndGroup()
{
- while (memberGroupId!=NOGROUP || !autoGroupStack.isEmpty())
+ while (memberGroupId!=DOX_NOGROUP || !autoGroupStack.isEmpty())
{
//printf("forceEndGroup ends group %d\n",memberGroupId);
endGroup();
@@ -5543,7 +5598,7 @@ static void parseCompounds(Entry *rt)
current->protection = protection = Public ;
}
}
- else // named struct, union
+ else // named struct, union, protocol, category
{
current->protection = protection = Public ;
}
@@ -5551,7 +5606,7 @@ static void parseCompounds(Entry *rt)
virt = Normal;
//printf("name=%s current->stat=%d gstat=%d\n",ce->name.data(),current->stat,gstat);
- memberGroupId = NOGROUP;
+ memberGroupId = DOX_NOGROUP;
memberGroupRelates.resize(0);
memberGroupInside.resize(0);
diff --git a/src/translator_br.h b/src/translator_br.h
index 3a39c69..4e3279e 100644
--- a/src/translator_br.h
+++ b/src/translator_br.h
@@ -634,6 +634,8 @@ class TranslatorBrazilian: public Translator
case ClassDef::Struct: result+=" Estrutura "; break;
case ClassDef::Union: result+=" União "; break;
case ClassDef::Interface: result+=" Interface "; break;
+ case ClassDef::Protocol: result+=" Protocol "; break; // translate me!
+ case ClassDef::Category: result+=" Category "; break; // translate me!
case ClassDef::Exception: result+=" Exceção "; break;
}
result+=(QCString)clName;
@@ -790,6 +792,8 @@ class TranslatorBrazilian: public Translator
case ClassDef::Struct: result+="estrutura "; break;
case ClassDef::Union: result+="união "; break;
case ClassDef::Interface: result+="interface "; break;
+ case ClassDef::Protocol: result+="protocol "; break; // translate me!
+ case ClassDef::Category: result+="category "; break; // translate me!
case ClassDef::Exception: result+="exceção "; break;
}
result+=" foi gerada a partir ";
diff --git a/src/translator_ca.h b/src/translator_ca.h
index 639519d..dff8361 100644
--- a/src/translator_ca.h
+++ b/src/translator_ca.h
@@ -644,6 +644,8 @@ class TranslatorCatalan : public TranslatorAdapter_1_2_17
case ClassDef::Struct: result+=" Estructura "; break;
case ClassDef::Union: result+=" Unió "; break;
case ClassDef::Interface: result+=" Interfície "; break;
+ case ClassDef::Protocol: result+=" Protocol "; break; // translate me!
+ case ClassDef::Category: result+=" Category "; break; // translate me!
case ClassDef::Exception: result+=" Excepció "; break;
}
if (isTemplate) result+="Template ";
@@ -801,6 +803,8 @@ class TranslatorCatalan : public TranslatorAdapter_1_2_17
case ClassDef::Struct: result+="estructura"; break;
case ClassDef::Union: result+="unió"; break;
case ClassDef::Interface: result+="interfície"; break;
+ case ClassDef::Protocol: result+="protocol"; break; // translate me!
+ case ClassDef::Category: result+="category"; break; // translate me!
case ClassDef::Exception: result+="excepció"; break;
}
result+=" es va generar a partir del";
diff --git a/src/translator_cn.h b/src/translator_cn.h
index 1083ea7..f044067 100644
--- a/src/translator_cn.h
+++ b/src/translator_cn.h
@@ -495,6 +495,8 @@ class TranslatorChinese : public TranslatorAdapter_1_2_13
case ClassDef::Struct: result+="½á¹¹"; break;
case ClassDef::Union: result+="ÁªºÏ"; break;
case ClassDef::Interface: result+="½Ó¿Ú"; break;
+ case ClassDef::Protocol: result+="protocol"; break; // translate me!
+ case ClassDef::Category: result+="category"; break; // translate me!
case ClassDef::Exception: result+="Òì³£"; break;
}
result+="²Î¿¼";
@@ -659,6 +661,8 @@ class TranslatorChinese : public TranslatorAdapter_1_2_13
case ClassDef::Struct: result+="½á¹¹"; break;
case ClassDef::Union: result+="ÁªºÏ"; break;
case ClassDef::Interface: result+="½Ó¿Ú"; break;
+ case ClassDef::Protocol: result+="protocol"; break; // translate me!
+ case ClassDef::Category: result+="category"; break; // translate me!
case ClassDef::Exception: result+="Òì³£"; break;
}
result+="µÄÎĵµÓÉÒÔÏÂÎļþÉú³É£º";
diff --git a/src/translator_cz.h b/src/translator_cz.h
index feb92f6..9ccc00e 100644
--- a/src/translator_cz.h
+++ b/src/translator_cz.h
@@ -763,6 +763,8 @@ class TranslatorCzech : public Translator
case ClassDef::Struct: result+="struktury "; break;
case ClassDef::Union: result+="unie "; break;
case ClassDef::Interface: result+="rozhraní "; break;
+ case ClassDef::Protocol: result+="protocol "; break; // translate me!
+ case ClassDef::Category: result+="category "; break; // translate me!
case ClassDef::Exception: result+="výjimky "; break;
}
result+=clName;
@@ -933,6 +935,8 @@ class TranslatorCzech : public Translator
case ClassDef::Struct: result+="tuto strukturu (struct)"; break;
case ClassDef::Union: result+="tuto unii (union)"; break;
case ClassDef::Interface: result+="toto rozhraní"; break;
+ case ClassDef::Protocol: result+="protocol "; break; // translate me!
+ case ClassDef::Category: result+="category "; break; // translate me!
case ClassDef::Exception: result+="tuto výjimku"; break;
}
result+=" byla generována z ";
diff --git a/src/translator_de.h b/src/translator_de.h
index 2f13544..0089d27 100644
--- a/src/translator_de.h
+++ b/src/translator_de.h
@@ -670,6 +670,8 @@ class TranslatorGerman : public Translator
case ClassDef::Struct: result+="Struktur"; break;
case ClassDef::Union: result+="Varianten"; break;
case ClassDef::Interface: result+="Schnittstellen"; break;
+ case ClassDef::Protocol: result+="Protocol"; break; // translate me!
+ case ClassDef::Category: result+="Category"; break; // translate me!
case ClassDef::Exception: result+="Ausnahmen"; break;
}
result+="referenz";
@@ -836,6 +838,8 @@ class TranslatorGerman : public Translator
case ClassDef::Struct: result+=" Struktur"; break;
case ClassDef::Union: result+=" Variante"; break;
case ClassDef::Interface: result+=" Schnittstelle"; break;
+ case ClassDef::Protocol: result+=" Protocol"; break; // translate me!
+ case ClassDef::Category: result+=" Category"; break; // translate me!
case ClassDef::Exception: result+=" Ausnahme"; break;
}
result+=" wurde erzeugt aufgrund der Datei";
diff --git a/src/translator_dk.h b/src/translator_dk.h
index 4eae217..5eeee4d 100644
--- a/src/translator_dk.h
+++ b/src/translator_dk.h
@@ -641,6 +641,8 @@ class TranslatorDanish : public Translator
case ClassDef::Struct: result+=" Datastruktur-"; break;
case ClassDef::Union: result+=" Union-"; break;
case ClassDef::Interface: result+=" Grænseflade-"; break;
+ case ClassDef::Protocol: result+=" Protocol-"; break; // translate me!
+ case ClassDef::Category: result+=" Category-"; break; // translate me!
case ClassDef::Exception: result+=" Exception-"; break;
}
if (isTemplate) result+="template-";
@@ -796,6 +798,8 @@ class TranslatorDanish : public Translator
case ClassDef::Struct: result+="datastruktur"; break;
case ClassDef::Union: result+="union"; break;
case ClassDef::Interface: result+="grænseflade"; break;
+ case ClassDef::Protocol: result+="protocol"; break; // translate me!
+ case ClassDef::Category: result+="category"; break; // translate me!
case ClassDef::Exception: result+="exception"; break;
}
result+=" blev genereret ud fra fil";
diff --git a/src/translator_en.h b/src/translator_en.h
index 61e8aa4..bf7bbe3 100644
--- a/src/translator_en.h
+++ b/src/translator_en.h
@@ -645,6 +645,8 @@ class TranslatorEnglish : public Translator
case ClassDef::Struct: result+=" Struct"; break;
case ClassDef::Union: result+=" Union"; break;
case ClassDef::Interface: result+=" Interface"; break;
+ case ClassDef::Protocol: result+=" Protocol"; break;
+ case ClassDef::Category: result+=" Category"; break;
case ClassDef::Exception: result+=" Exception"; break;
}
if (isTemplate) result+=" Template";
@@ -802,6 +804,8 @@ class TranslatorEnglish : public Translator
case ClassDef::Struct: result+="struct"; break;
case ClassDef::Union: result+="union"; break;
case ClassDef::Interface: result+="interface"; break;
+ case ClassDef::Protocol: result+="protocol"; break;
+ case ClassDef::Category: result+="category"; break;
case ClassDef::Exception: result+="exception"; break;
}
result+=" was generated from the following file";
diff --git a/src/translator_es.h b/src/translator_es.h
index 6298ca2..9aae1fa 100644
--- a/src/translator_es.h
+++ b/src/translator_es.h
@@ -537,6 +537,8 @@ class TranslatorSpanish : public TranslatorAdapter_1_3_3
case ClassDef::Struct: result+="la Estructura "; break;
case ClassDef::Union: result+="la Unión "; break;
case ClassDef::Interface: result+="la Interfaz "; break;
+ case ClassDef::Protocol: result+="Protocol "; break; // translate me!
+ case ClassDef::Category: result+="Category "; break; // translate me!
case ClassDef::Exception: result+="la Excepción "; break;
}
result+=(QCString)clName;
@@ -694,6 +696,8 @@ class TranslatorSpanish : public TranslatorAdapter_1_3_3
case ClassDef::Struct: result+="estructura"; break;
case ClassDef::Union: result+="unión"; break;
case ClassDef::Interface: result+="interfaz"; break;
+ case ClassDef::Protocol: result+="protocol"; break; // translate me!
+ case ClassDef::Category: result+="category"; break; // translate me!
case ClassDef::Exception: result+="excepción"; break;
}
result+=" fué generada a partir ";
diff --git a/src/translator_fi.h b/src/translator_fi.h
index 0aba2c7..19d4b62 100644
--- a/src/translator_fi.h
+++ b/src/translator_fi.h
@@ -486,6 +486,8 @@ class TranslatorFinnish : public TranslatorEnglish
case ClassDef::Struct: result+=" Struct"; break; // "Struct"
case ClassDef::Union: result+=" Union"; break; // "Union"
case ClassDef::Interface: result+=" Interface"; break; // "Interface"
+ case ClassDef::Protocol: result+=" Protocol"; break; // translate me!
+ case ClassDef::Category: result+=" Category"; break; // translate me!
case ClassDef::Exception: result+=" Exception"; break; // "Interface"
}
result+=" Referenssi"; // " Reference"
diff --git a/src/translator_fr.h b/src/translator_fr.h
index 08f4a70..9a05607 100644
--- a/src/translator_fr.h
+++ b/src/translator_fr.h
@@ -536,6 +536,8 @@ class TranslatorFrench : public Translator
case ClassDef::Struct: result+="la structure "; break;
case ClassDef::Union: result+="l'union "; break;
case ClassDef::Interface: result+="l'interface "; break;
+ case ClassDef::Protocol: result+="le protocol "; break;
+ case ClassDef::Category: result+="la catégorie "; break;
case ClassDef::Exception: result+="l'exception "; break;
}
@@ -694,6 +696,8 @@ class TranslatorFrench : public Translator
case ClassDef::Struct: result+="structure"; break;
case ClassDef::Union: result+="union"; break;
case ClassDef::Interface: result+="interface"; break;
+ case ClassDef::Protocol: result+="protocol"; break;
+ case ClassDef::Category: result+="category"; break;
case ClassDef::Exception: result+="exception"; break;
}
result+=" a été générée à partir ";
diff --git a/src/translator_gr.h b/src/translator_gr.h
index 8953339..3e39781 100644
--- a/src/translator_gr.h
+++ b/src/translator_gr.h
@@ -619,6 +619,8 @@ class TranslatorGreek : public TranslatorAdapter_1_2_11
case ClassDef::Struct: result+=" ÄïìÞò"; break;
case ClassDef::Union: result+=" ¸íùóçò"; break;
case ClassDef::Interface: result+=" Äéáðñïóùðßáò"; break;
+ case ClassDef::Protocol: result+=" Protocol"; break; // translate me!
+ case ClassDef::Category: result+=" Category"; break; // translate me!
case ClassDef::Exception: result+=" Åîáßñåóçò"; break;
}
if (isTemplate) result+=" Template";
@@ -776,6 +778,8 @@ class TranslatorGreek : public TranslatorAdapter_1_2_11
case ClassDef::Struct: result+="áõôÞ ç äïìÞ"; break;
case ClassDef::Union: result+="áõôÞ ç Ýíùóç"; break;
case ClassDef::Interface: result+="áõôÞ ç äéáðñïóùðßá"; break;
+ case ClassDef::Protocol: result+="Protocol"; break; // translate me!
+ case ClassDef::Category: result+="Category"; break; // translate me!
case ClassDef::Exception: result+="áõôÞ ç åîáßñåóç"; break;
}
result+=" äçìéïõñãÞèçêå áðï ô";
diff --git a/src/translator_hr.h b/src/translator_hr.h
index f326252..89b324c 100644
--- a/src/translator_hr.h
+++ b/src/translator_hr.h
@@ -370,6 +370,8 @@ class TranslatorCroatian : public Translator
case ClassDef::Struct: result+=" strukture "; break;
case ClassDef::Union: result+=" unije "; break;
case ClassDef::Interface: result+=" suèelja (interface) "; break;
+ case ClassDef::Protocol: result+=" protocol "; break; // translate me!
+ case ClassDef::Category: result+=" category "; break; // translate me!
case ClassDef::Exception: result+=" iznimke (exception) "; break;
}
result += clName;
@@ -518,6 +520,8 @@ class TranslatorCroatian : public Translator
case ClassDef::Struct: result+="strukture"; break;
case ClassDef::Union: result+="unije"; break;
case ClassDef::Interface: result+="suèelja (interface)"; break;
+ case ClassDef::Protocol: result+="protocol"; break; // translate me!
+ case ClassDef::Category: result+="category"; break; // translate me!
case ClassDef::Exception: result+="iznimke (exception)"; break;
}
result+=" je generirana iz " + trFile(FALSE, single) + ": ";
diff --git a/src/translator_hu.h b/src/translator_hu.h
index 2a843bb..ee6a438 100644
--- a/src/translator_hu.h
+++ b/src/translator_hu.h
@@ -608,6 +608,8 @@ class TranslatorHungarian : public Translator
case ClassDef::Struct: result+=" struktúra"; break;
case ClassDef::Union: result+=" unió"; break;
case ClassDef::Interface: result+=" interfész"; break;
+ case ClassDef::Protocol: result+=" protocol"; break; // translate me!
+ case ClassDef::Category: result+=" category"; break; // translate me!
case ClassDef::Exception: result+=" kivétel"; break;
}
if (isTemplate) result+="sablon-";
@@ -765,6 +767,8 @@ class TranslatorHungarian : public Translator
case ClassDef::Struct: result+="a struktúráról"; break;
case ClassDef::Union: result+="az unióról"; break;
case ClassDef::Interface: result+="az interfészrõl"; break;
+ case ClassDef::Protocol: result+="protocol"; break; // translate me!
+ case ClassDef::Category: result+="category"; break; // translate me!
case ClassDef::Exception: result+="a kivételrõl"; break;
}
result+=" a következõ fájl";
diff --git a/src/translator_it.h b/src/translator_it.h
index 77162f8..4d39e94 100644
--- a/src/translator_it.h
+++ b/src/translator_it.h
@@ -644,6 +644,8 @@ class TranslatorItalian : public Translator
case ClassDef::Struct: result+="la struct "; break;
case ClassDef::Union: result+="la union "; break;
case ClassDef::Interface: result+="l'interfaccia "; break;
+ case ClassDef::Protocol: result+="protocol "; break; // translate me!
+ case ClassDef::Category: result+="category "; break; // translate me!
case ClassDef::Exception: result+="exception "; break;
}
result+=(QCString)clName;
@@ -803,6 +805,8 @@ class TranslatorItalian : public Translator
case ClassDef::Struct: result+="struct"; break;
case ClassDef::Union: result+="union"; break;
case ClassDef::Interface: result+="interfaccia"; break;
+ case ClassDef::Protocol: result+="protocol"; break; // translate me!
+ case ClassDef::Category: result+="category"; break; // translate me!
case ClassDef::Exception: result+="exception"; break;
}
result+=" è stata generata a partire ";
diff --git a/src/translator_jp.h b/src/translator_jp.h
index 573a63e..2ed60ff 100644
--- a/src/translator_jp.h
+++ b/src/translator_jp.h
@@ -601,6 +601,8 @@ class TranslatorJapanese : public TranslatorAdapter_1_3_3
case ClassDef::Struct: result+=decode("¹½Â¤ÂÎ "); break;
case ClassDef::Union: result+=decode("¶¦ÍÑÂÎ "); break;
case ClassDef::Interface: result+=decode("¥¤¥ó¥¿¥Õ¥§¡¼¥¹"); break;
+ case ClassDef::Protocol: result+=decode("Protocol"); break; // translate me!
+ case ClassDef::Category: result+=decode("Category"); break; // translate me!
case ClassDef::Exception: result+=decode("Îã³°"); break; //TODO:fixme
}
if (isTemplate) result+=decode(" ¥Æ¥ó¥×¥ì¡¼¥È");
@@ -757,6 +759,8 @@ class TranslatorJapanese : public TranslatorAdapter_1_3_3
case ClassDef::Struct: result+=decode("¹½Â¤ÂÎ"); break;
case ClassDef::Union: result+=decode("¶¦ÍÑÂÎ"); break;
case ClassDef::Interface: result+=decode("¥¤¥ó¥¿¥Õ¥§¡¼¥¹"); break;
+ case ClassDef::Protocol: result+=decode("Protocol"); break; // translate me!
+ case ClassDef::Category: result+=decode("Category"); break; // translate me!
case ClassDef::Exception: result+=decode("Îã³°"); break; //TODO:fixme
}
result+=decode("¤ÎÀâÌÀ¤Ï¼¡¤Î¥Õ¥¡¥¤¥ë¤«¤éÀ¸À®¤µ¤ì¤Þ¤·¤¿:");
diff --git a/src/translator_kr.h b/src/translator_kr.h
index b1cdeb7..f087589 100644
--- a/src/translator_kr.h
+++ b/src/translator_kr.h
@@ -581,6 +581,8 @@ class TranslatorKorean : public Translator
case ClassDef::Struct: result+=" ±¸Á¶Ã¼"; break;
case ClassDef::Union: result+=" °ø¿ëü"; break;
case ClassDef::Interface: result+=" ÀÎÅÍÆäÀ̽º"; break;
+ case ClassDef::Protocol: result+=" protocol"; break; // translate me!
+ case ClassDef::Category: result+=" category"; break; // translate me!
case ClassDef::Exception: result+=" ¿¹¿Ü"; break;
}
result+=" ÂüÁ¶";
@@ -738,6 +740,8 @@ class TranslatorKorean : public Translator
case ClassDef::Struct: result+="±¸Á¶Ã¼"; break;
case ClassDef::Union: result+="°ø¿ëü"; break;
case ClassDef::Interface: result+="ÀÎÅÍÆäÀ̽º"; break;
+ case ClassDef::Protocol: result+="protocol"; break; // translate me!
+ case ClassDef::Category: result+="category"; break; // translate me!
case ClassDef::Exception: result+="¿¹¿Ü"; break;
}
result+="À» À§ÇÑ ¹®¼­È­´Â ´ÙÀ½ÀÇ ÆÄÀÏ";
diff --git a/src/translator_nl.h b/src/translator_nl.h
index c367c30..3e80326 100644
--- a/src/translator_nl.h
+++ b/src/translator_nl.h
@@ -280,6 +280,8 @@ class TranslatorDutch : public Translator
case ClassDef::Struct: result+=" Struct"; break;
case ClassDef::Union: result+=" Union"; break;
case ClassDef::Interface: result+=" Interface"; break;
+ case ClassDef::Protocol: result+=" Protocol"; break;
+ case ClassDef::Category: result+=" Category"; break;
case ClassDef::Exception: result+=" Exception"; break;
}
result+=" Referentie";
@@ -426,6 +428,8 @@ class TranslatorDutch : public Translator
case ClassDef::Struct: result+="struct"; break;
case ClassDef::Union: result+="union"; break;
case ClassDef::Interface: result+="interface"; break;
+ case ClassDef::Protocol: result+="protocol"; break;
+ case ClassDef::Category: result+="category"; break;
case ClassDef::Exception: result+="exception"; break;
}
result+=" is gegenereerd op grond van de volgende file";
diff --git a/src/translator_no.h b/src/translator_no.h
index 60a7d83..3fd21ee 100644
--- a/src/translator_no.h
+++ b/src/translator_no.h
@@ -346,6 +346,8 @@ class TranslatorNorwegian : public TranslatorAdapter_1_2_2
case ClassDef::Struct: result+=" struktur"; break;
case ClassDef::Union: result+=" union"; break;
case ClassDef::Interface: result+=" grensesnitt"; break;
+ case ClassDef::Protocol: result+=" protocol"; break; // translate me!
+ case ClassDef::Category: result+=" category"; break; // translate me!
case ClassDef::Exception: result+=" unntak"; break;
}
result+="referanse";
@@ -484,6 +486,8 @@ class TranslatorNorwegian : public TranslatorAdapter_1_2_2
case ClassDef::Struct: result+="denne strukt "; break;
case ClassDef::Union: result+="denne union "; break;
case ClassDef::Interface: result+="dette grensesnittet "; break;
+ case ClassDef::Protocol: result+="protocol"; break; // translate me!
+ case ClassDef::Category: result+="category"; break; // translate me!
case ClassDef::Exception: result+="unntak "; break;
}
result+="var generert fra følgende fil";
diff --git a/src/translator_pl.h b/src/translator_pl.h
index ec54ec1..278f747 100644
--- a/src/translator_pl.h
+++ b/src/translator_pl.h
@@ -658,6 +658,8 @@ class TranslatorPolish : public TranslatorAdapter_1_3
case ClassDef::Struct: result+=" struktury "; break;
case ClassDef::Union: result+=" unii "; break;
case ClassDef::Interface: result+=" interfejsu "; break;
+ case ClassDef::Protocol: result+=decode(" protocol "); break; // translate me!
+ case ClassDef::Category: result+=decode(" category "); break; // translate me!
case ClassDef::Exception: result+=decode(" wyj±tku "); break;
}
result+=(QCString)clName;
@@ -815,6 +817,8 @@ class TranslatorPolish : public TranslatorAdapter_1_3
case ClassDef::Struct: result+="j struktury"; break;
case ClassDef::Union: result+="j unii"; break;
case ClassDef::Interface: result+="go interfejsu"; break;
+ case ClassDef::Protocol: result+=decode("protocol"); break; // translate me!
+ case ClassDef::Category: result+=decode("category"); break; // translate me!
case ClassDef::Exception: result+="go wyj±tku"; break;
}
result+=" zosta³a wygenerowana z plik";
diff --git a/src/translator_pt.h b/src/translator_pt.h
index 1016cdc..1a92daf 100644
--- a/src/translator_pt.h
+++ b/src/translator_pt.h
@@ -630,6 +630,8 @@ class TranslatorPortuguese : public TranslatorAdapter_1_3_3
case ClassDef::Struct: result+="à estrutura "; break;
case ClassDef::Union: result+="à união "; break;
case ClassDef::Interface: result+="ao interface "; break;
+ case ClassDef::Protocol: result+="protocol "; break; // translate me!
+ case ClassDef::Category: result+="category "; break; // translate me!
case ClassDef::Exception: result+="à excepção "; break;
}
if (isTemplate) result+="Template ";
@@ -790,6 +792,8 @@ class TranslatorPortuguese : public TranslatorAdapter_1_3_3
case ClassDef::Struct: result+="esta estrutura"; break;
case ClassDef::Union: result+="esta união"; break;
case ClassDef::Interface: result+="este interface"; break;
+ case ClassDef::Protocol: result+="protocol"; break; // translate me!
+ case ClassDef::Category: result+="category"; break; // translate me!
case ClassDef::Exception: result+="esta excepção"; break;
}
result+=" foi gerada a partir ";
diff --git a/src/translator_ro.h b/src/translator_ro.h
index b06fad5..d9e7124 100644
--- a/src/translator_ro.h
+++ b/src/translator_ro.h
@@ -659,6 +659,8 @@ class TranslatorRomanian: public TranslatorAdapter_1_2_16
case ClassDef::Struct: result+="structura"; break;
case ClassDef::Union: result+="uniunea"; break;
case ClassDef::Interface: result+="interfaþa"; break;
+ case ClassDef::Protocol: result+="protocol"; break; // translate me!
+ case ClassDef::Category: result+="category"; break; // translate me!
case ClassDef::Exception: result+="excepþia"; break;
}
if (isTemplate) result+=" (Template) ";
@@ -819,6 +821,8 @@ class TranslatorRomanian: public TranslatorAdapter_1_2_16
case ClassDef::Struct: result+="structurã"; break;
case ClassDef::Union: result+="uniune"; break;
case ClassDef::Interface: result+="interfaþã"; break;
+ case ClassDef::Protocol: result+="protocol"; break; // translate me!
+ case ClassDef::Category: result+="category"; break; // translate me!
case ClassDef::Exception: result+="excepþie"; break;
}
result+=" a fost generatã din fiºier";
diff --git a/src/translator_ru.h b/src/translator_ru.h
index 89a3272..db45e08 100644
--- a/src/translator_ru.h
+++ b/src/translator_ru.h
@@ -660,6 +660,8 @@ class TranslatorRussian : public Translator
case ClassDef::Struct: result+="ÓÔÒÕËÔÕÒÙ"; break;
case ClassDef::Union: result+="ÏÂßÅÄÉÎÅÎÉÑ"; break;
case ClassDef::Interface: result+="ÉÎÔÅÒÆÅÊÓÁ"; break;
+ case ClassDef::Protocol: result+="protocol"; break; // translate me!
+ case ClassDef::Category: result+="category"; break; // translate me!
case ClassDef::Exception: result+="ÉÓËÌÀÞÅÎÉÑ"; break;
}
}
@@ -671,6 +673,8 @@ class TranslatorRussian : public Translator
case ClassDef::Struct: result+="óÔÒÕËÔÕÒÁ"; break;
case ClassDef::Union: result+="ïÂßÅÄÉÎÅÎÉÅ"; break;
case ClassDef::Interface: result+="éÎÔÅÒÆÅÊÓ"; break;
+ case ClassDef::Protocol: result+="protocol"; break; // translate me!
+ case ClassDef::Category: result+="category"; break; // translate me!
case ClassDef::Exception: result+="éÓËÌÀÞÅÎÉÅ"; break;
}
}
@@ -834,6 +838,10 @@ class TranslatorRussian : public Translator
case ClassDef::Interface: result+="ÉÎÔÅÒÆÅÊÓ";
if (single) result+='Á'; else result+="Ï×";
break;
+ case ClassDef::Protocol: result+="Protocol"; // translate me!
+ break;
+ case ClassDef::Category: result+="Category"; // translate me!
+ break;
case ClassDef::Exception: result+="ÉÓËÌÀÞÅÎÉ";
if (single) result+='Ñ'; else result+='Ê';
break;
diff --git a/src/translator_se.h b/src/translator_se.h
index 2c347ed..2b07dd9 100644
--- a/src/translator_se.h
+++ b/src/translator_se.h
@@ -524,6 +524,8 @@ class TranslatorSwedish : public TranslatorAdapter_1_3_3
case ClassDef::Struct: result+=" strukt"; break;
case ClassDef::Union: result+=" union"; break;
case ClassDef::Interface: result+=" gränssnitt"; break;
+ case ClassDef::Protocol: result+=" protocol"; break; // translate me!
+ case ClassDef::Category: result+=" category"; break; // translate me!
case ClassDef::Exception: result+=" undantag"; break;
}
if (isTemplate) result+="template";
@@ -663,6 +665,8 @@ class TranslatorSwedish : public TranslatorAdapter_1_3_3
case ClassDef::Struct: result+="denna strukt "; break;
case ClassDef::Union: result+="denna union "; break;
case ClassDef::Interface: result+="detta gränssnitt "; break;
+ case ClassDef::Protocol: result+="protocol"; break; // translate me!
+ case ClassDef::Category: result+="category"; break; // translate me!
case ClassDef::Exception: result+="detta undantag "; break;
}
result+="var genererad från följande fil";
diff --git a/src/translator_si.h b/src/translator_si.h
index 71924d3..bd70b28 100644
--- a/src/translator_si.h
+++ b/src/translator_si.h
@@ -274,6 +274,8 @@ class TranslatorSlovene : public TranslatorAdapter_1_2_16
case ClassDef::Struct: result+=" Struktura "; break;
case ClassDef::Union: result+=" Mno¾ica "; break;
case ClassDef::Interface: result+=" IDL vmesnik "; break;
+ case ClassDef::Protocol: result+=" protocol "; break; // translate me!
+ case ClassDef::Category: result+=" category "; break; // translate me!
case ClassDef::Exception: result+=" IDL prekinitev "; break;
}
result += (QCString)clName;
@@ -420,6 +422,8 @@ class TranslatorSlovene : public TranslatorAdapter_1_2_16
case ClassDef::Struct: result+="strukture"; break;
case ClassDef::Union: result+="unije"; break;
case ClassDef::Interface: result+="vmesnika (interface)"; break;
+ case ClassDef::Protocol: result+="protocol"; break; // translate me!
+ case ClassDef::Category: result+="category"; break; // translate me!
case ClassDef::Exception: result+="prekinitve (exception)"; break;
}
result+=" je zgrajen na podlagi naslednj";
diff --git a/src/translator_sk.h b/src/translator_sk.h
index b061e1a..f9a52fd 100644
--- a/src/translator_sk.h
+++ b/src/translator_sk.h
@@ -629,6 +629,8 @@ class TranslatorSlovak : public TranslatorAdapter_1_2_18
case ClassDef::Struct: result+="štruktúry "; break;
case ClassDef::Union: result+="unionu "; break;
case ClassDef::Interface: result+="rozhrania "; break;
+ case ClassDef::Protocol: result+="protocol "; break; // translate me!
+ case ClassDef::Category: result+="category "; break; // translate me!
case ClassDef::Exception: result+="výnimky "; break;
}
result+=clName;
@@ -799,6 +801,8 @@ class TranslatorSlovak : public TranslatorAdapter_1_2_18
case ClassDef::Struct: result+="túto štruktúru (struct)"; break;
case ClassDef::Union: result+="tento union"; break;
case ClassDef::Interface: result+="toto rozhranie"; break;
+ case ClassDef::Protocol: result+="protocol"; break; // translate me!
+ case ClassDef::Category: result+="category"; break; // translate me!
case ClassDef::Exception: result+="túto výnimku"; break;
}
result+=" bola generovaná z ";
diff --git a/src/translator_sr.h b/src/translator_sr.h
index 2b1d4bc..37f7dcf 100644
--- a/src/translator_sr.h
+++ b/src/translator_sr.h
@@ -645,6 +645,8 @@ private:
case ClassDef::Struct: result+="strukture "; break;
case ClassDef::Union: result+="unije "; break;
case ClassDef::Interface: result+="interfejsa "; break;
+ case ClassDef::Protocol: result+="protocol "; break; // translate me!
+ case ClassDef::Category: result+="category "; break; // translate me!
case ClassDef::Exception: result+="izuzetka "; break;
}
if (isTemplate) result += "¹ablona ";
@@ -803,6 +805,8 @@ private:
case ClassDef::Struct: result+="ove strukture"; break;
case ClassDef::Union: result+="ove unije"; break;
case ClassDef::Interface: result+="ovog interfejsa"; break;
+ case ClassDef::Protocol: result+="protocol"; break; // translate me!
+ case ClassDef::Category: result+="category"; break; // translate me!
case ClassDef::Exception: result+="ovog izuzetka"; break;
}
result+=" je napravljena iz ";
diff --git a/src/translator_tw.h b/src/translator_tw.h
index f37a878..95c9568 100644
--- a/src/translator_tw.h
+++ b/src/translator_tw.h
@@ -646,6 +646,8 @@ class TranslatorChinesetraditional : public Translator
case ClassDef::Struct: result+=" µ²ºc"; break;
case ClassDef::Union: result+=" Áp¦X"; break;
case ClassDef::Interface: result+=" ¤¶­±"; break;
+ case ClassDef::Protocol: result+=" protocol"; break; // translate me!
+ case ClassDef::Category: result+=" category"; break; // translate me!
case ClassDef::Exception: result+=" ¨Ò¥~"; break;
}
if (isTemplate) result+=" ¼Ëª©";
@@ -803,6 +805,8 @@ class TranslatorChinesetraditional : public Translator
case ClassDef::Struct: result+="µ²ºc(structure)"; break;
case ClassDef::Union: result+="Áp¦X(union)"; break;
case ClassDef::Interface: result+="¤¶­±(interface)"; break;
+ case ClassDef::Protocol: result+="protocol"; break; // translate me!
+ case ClassDef::Category: result+="category"; break; // translate me!
case ClassDef::Exception: result+="¨Ò¥~(exception)"; break;
}
result+=" ¤å¥ó¬O¥Ñ¤U¦CÀɮפ¤²£¥Í";
diff --git a/src/translator_ua.h b/src/translator_ua.h
index 8789220..2a4f97f 100644
--- a/src/translator_ua.h
+++ b/src/translator_ua.h
@@ -42,19 +42,23 @@ class TranslatorUkrainian : public TranslatorAdapter_1_2_11
/* Used to get the command(s) for the language support. */
virtual QCString latexLanguageSupportCommand()
+ {
#ifdef _WIN32
- { return "\\usepackage[cp1251]{inputenc}\n\\usepackage[ukrainian]{babel}\n"; }
+ return "\\usepackage[cp1251]{inputenc}\n\\usepackage[ukrainian]{babel}\n";
#else
- { return "\\usepackage[koi8-u]{inputenc}\n\\usepackage[ukrainian]{babel}\n"; }
+ return "\\usepackage[koi8-u]{inputenc}\n\\usepackage[ukrainian]{babel}\n";
#endif
+ }
/*! return the language charset. This will be used for the HTML output */
virtual QCString idLanguageCharset()
+ {
#ifdef _WIN32
- { return "Windows-1251"; }
+ return "Windows-1251";
#else
- { return "koi8-u"; }
+ return "koi8-u";
#endif
+ }
// --- Language translation methods -------------------
@@ -618,6 +622,8 @@ class TranslatorUkrainian : public TranslatorAdapter_1_2_11
case ClassDef::Struct: result+="ÓÔÒÕËÔÕÒÉ"; break;
case ClassDef::Union: result+="ÏÂ'¤ÄÎÁÎÎÑ"; break;
case ClassDef::Interface: result+="¦ÎÔÅÒÆÅÊÓÕ"; break;
+ case ClassDef::Protocol: result+="protocol"; break; // translate me!
+ case ClassDef::Category: result+="category"; break; // translate me!
case ClassDef::Exception: result+="÷ÉÎÑÔÏË"; break;
}
}
@@ -629,6 +635,8 @@ class TranslatorUkrainian : public TranslatorAdapter_1_2_11
case ClassDef::Struct: result+="óÔÒÕËÔÕÒÁ"; break;
case ClassDef::Union: result+="ïÂ'¤ÄÎÁÎÎÑ"; break;
case ClassDef::Interface: result+="¶ÎÔÅÒÆÅÊÓ"; break;
+ case ClassDef::Protocol: result+="protocol"; break; // translate me!
+ case ClassDef::Category: result+="category"; break; // translate me!
case ClassDef::Exception: result+="÷ÉÎÑÔÏË"; break;
}
}
@@ -791,6 +799,12 @@ class TranslatorUkrainian : public TranslatorAdapter_1_2_11
case ClassDef::Interface:
if (single) result+="ÃØÏÇÏ ¦ÎÔÅÒÆÅÊÓÕ"; else result+="ÃÉÈ ¦ÎÔÅÒÆÅÊÓ¦×";
break;
+ case ClassDef::Protocol:
+ if (single) result+="protocol"; else result+="protocols"; // translate me!
+ break;
+ case ClassDef::Category:
+ if (single) result+="category"; else result+="categories"; // translate me!
+ break;
case ClassDef::Exception:
if (single) result+="ÃØÏÇÏ ×ÉÎÑÔËÕ"; else result+="ÃÉÈ ×ÉÎÑÔ˦×";
break;