diff -r 000000000000 -r 42188c7ea2d9 Orb/Doxygen/src/util.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/Orb/Doxygen/src/util.h Thu Jan 21 17:29:01 2010 +0000 @@ -0,0 +1,376 @@ +/****************************************************************************** + * + * + * + * Copyright (C) 1997-2008 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. + * + */ + +#ifndef UTIL_H +#define UTIL_H + +/*! \file util.h + * \brief A bunch of utility functions. + */ + +#include "qtbc.h" +#include +#include +#include +#include "sortdict.h" + +//-------------------------------------------------------------------- + +class ClassDef; +class FileDef; +class MemberList; +class NamespaceDef; +class FileNameDict; +class ArgumentList; +class OutputList; +class OutputDocInterface; +class MemberDef; +class ExampleSDict; +class ClassSDict; +class BaseClassList; +class GroupDef; +class NamespaceSDict; +class ClassList; +class MemberGroupSDict; +struct TagInfo; +class MemberNameInfoSDict; +struct ListItemInfo; +class PageDef; +struct SectionInfo; +class QDir; +class Definition; +class BufStr; + +//-------------------------------------------------------------------- + +class TextGeneratorIntf +{ + public: + virtual ~TextGeneratorIntf() {} + virtual void writeString(const char *,bool) const = 0; + virtual void writeBreak() const = 0; + virtual void writeLink(const char *extRef,const char *file, + const char *anchor,const char *text + ) const = 0; +}; + +class TextGeneratorOLImpl : public TextGeneratorIntf +{ + public: + virtual ~TextGeneratorOLImpl() {} + TextGeneratorOLImpl(OutputDocInterface &od); + void writeString(const char *s,bool keepSpaces) const; + void writeBreak() const; + void writeLink(const char *extRef,const char *file, + const char *anchor,const char *text + ) const; + private: + OutputDocInterface &m_od; +}; + +//-------------------------------------------------------------------- + +enum SrcLangExt +{ + SrcLangExt_IDL = 0x0008, + SrcLangExt_Java = 0x0010, + SrcLangExt_CSharp = 0x0020, + SrcLangExt_D = 0x0040, + SrcLangExt_PHP = 0x0080, + SrcLangExt_ObjC = 0x0100, + SrcLangExt_Cpp = 0x0200, + SrcLangExt_JS = 0x0400, + SrcLangExt_Python = 0x0800, + SrcLangExt_F90 = 0x1000, + SrcLangExt_VHDL = 0x2000, + SrcLangExt_XML = 0x4000 +}; + +//-------------------------------------------------------------------- + +void linkifyText(const TextGeneratorIntf &ol, + Definition *scope, + FileDef *fileScope, + const char *name, + const char *text, + bool autoBreak=FALSE, + bool external=TRUE, + bool keepSpaces=FALSE + ); + +void setAnchors(ClassDef *cd,char id,MemberList *ml,int groupId=-1); + +QCString fileToString(const char *name,bool filter=FALSE); + +QCString dateToString(bool); + +bool getDefs(const QCString &scopeName, + const QCString &memberName, + const char *, + MemberDef *&md, + ClassDef *&cd, + FileDef *&fd, + NamespaceDef *&nd, + GroupDef *&gd, + bool forceEmptyScope=FALSE, + FileDef *currentFile=0, + bool checkCV=FALSE + ); + +QCString getFileFilter(const char* name); + +bool resolveRef(/* in */ const char *scName, + /* in */ const char *name, + /* in */ bool inSeeBlock, + /* out */ Definition **resContext, + /* out */ MemberDef **resMember, + /* in */ bool lookForSpecializations = TRUE, + /* in */ FileDef *currentFile = 0 + ); + +bool resolveLink(/* in */ const char *scName, + /* in */ const char *lr, + /* in */ bool inSeeBlock, + /* out */ Definition **resContext, + /* out */ QCString &resAnchor + ); + +bool generateRef(OutputDocInterface &od,const char *, + const char *,bool inSeeBlock,const char * =0); + +bool generateLink(OutputDocInterface &od,const char *, + const char *,bool inSeeBlock,const char *); + +void generateFileRef(OutputDocInterface &od,const char *, + const char *linkTxt=0); + +void writePageRef(OutputDocInterface &od,const char *cn,const char *mn); + +QCString getCanonicalTemplateSpec(Definition *d,FileDef *fs,const QCString& spec); + +bool matchArguments2(Definition *srcScope,FileDef *srcFileScope,ArgumentList *srcAl, + Definition *dstScope,FileDef *dstFileScope,ArgumentList *dstAl, + bool checkCV + ); + +void mergeArguments(ArgumentList *,ArgumentList *,bool forceNameOverwrite=FALSE); + +QCString substituteClassNames(const QCString &s); + +QCString substitute(const char *s,const char *src,const char *dst); + +QCString resolveDefines(const char *n); + +ClassDef *getClass(const char *key); + +ClassDef *getResolvedClass(Definition *scope, + FileDef *fileScope, + const char *key, + MemberDef **pTypeDef=0, + QCString *pTemplSpec=0, + bool mayBeUnlinkable=FALSE, + bool mayBeHidden=FALSE, + QCString *pResolvedType=0); + +NamespaceDef *getResolvedNamespace(const char *key); + +FileDef *findFileDef(const FileNameDict *fnDict,const char *n, + bool &ambig); + +QCString showFileDefMatches(const FileNameDict *fnDict,const char *n); + +int guessSection(const char *name); + +inline bool isId(int c) +{ + // PaulRo: This was return c=='_' || isalnum(c) || c>=128 || c<0; + // but with negative numbers isalnum was called and this gave an + // assertion error from istype.c + return c=='_' || c>=128 || c<0 || isalnum(c); +} + +QCString removeRedundantWhiteSpace(const QCString &s); + +QCString argListToString(ArgumentList *al,bool useCanonicalType=FALSE); + +QCString tempArgListToString(ArgumentList *al); + +QCString generateMarker(int id); + +void writeExample(OutputList &ol,ExampleSDict *el); + +QCString stripAnonymousNamespaceScope(const QCString &s); + +QCString stripFromPath(const QCString &path); + +QCString stripFromIncludePath(const QCString &path); + +bool rightScopeMatch(const QCString &scope, const QCString &name); + +bool leftScopeMatch(const QCString &scope, const QCString &name); + +QCString substituteKeywords(const QCString &s,const char *title,const QCString &relPath=""); + +int getPrefixIndex(const QCString &name); + +QCString removeAnonymousScopes(const QCString &s); + +QCString replaceAnonymousScopes(const QCString &s,const char *replacement=0); + +void initClassHierarchy(ClassSDict *cl); + +bool hasVisibleRoot(BaseClassList *bcl); + +int minClassDistance(const ClassDef *cd,const ClassDef *bcd,int level=0); + +QCString convertNameToFile(const char *name,bool allowDots=FALSE); + +void extractNamespaceName(const QCString &scopeName, + QCString &className,QCString &namespaceName, + bool allowEmptyClass=FALSE); + +QCString insertTemplateSpecifierInScope(const QCString &scope,const QCString &templ); + +QCString stripScope(const char *name); + +QCString convertToHtml(const char *s,bool keepEntities=TRUE); + +QCString convertToXML(const char *s); + +QCString getOverloadDocs(); + +void addMembersToMemberGroup(/* in */ MemberList *ml, + /* in,out */ MemberGroupSDict **ppMemberGroupSDict, + /* in */ Definition *context); + +int extractClassNameFromType(const QCString &type,int &pos, + QCString &name,QCString &templSpec); + +QCString substituteTemplateArgumentsInString( + const QCString &name, + ArgumentList *formalArgs, + ArgumentList *actualArgs); + +ArgumentList *copyArgumentList(const ArgumentList *src); + +QList *copyArgumentLists(const QList *srcLists); + +QCString stripTemplateSpecifiersFromScope(const QCString &fullName, + bool parentOnly=TRUE, + QCString *lastScopeStripped=0); + +QCString resolveTypeDef(Definition *d,const QCString &name, + Definition **typedefContext=0); + +QCString mergeScopes(const QCString &leftScope,const QCString &rightScope); + +int getScopeFragment(const QCString &s,int p,int *l); + +int filterCRLF(char *buf,int len); + +void addRefItem(const QList *sli,const char *prefix, + const char *key, + const char *name,const char *title,const char *args); + +PageDef *addRelatedPage(const char *name,const QCString &ptitle, + const QCString &doc,QList *anchors, + const char *fileName,int startLine, + const QList *sli, + GroupDef *gd=0, + TagInfo *tagInfo=0 + ); + +QCString escapeCharsInString(const char *name,bool allowDots); + +void addGroupListToTitle(OutputList &ol,Definition *d); + +void filterLatexString(QTextStream &t,const char *str, + bool insideTabbing=FALSE,bool insidePre=FALSE, + bool insideItem=FALSE); + +QCString rtfFormatBmkStr(const char *name); + +QCString linkToText(const char *link,bool isFileName); + +QCString stripExtension(const char *fName); + +void replaceNamespaceAliases(QCString &scope,int i); + +int isAccessibleFrom(Definition *scope,FileDef *fileScope,Definition *item); + +int isAccessibleFromWithExpScope(Definition *scope,FileDef *fileScope,Definition *item, + const QCString &explicitScopePart); + +int computeQualifiedIndex(const QCString &name); + +void addDirPrefix(QCString &fileName); + +QCString relativePathToRoot(const char *name); + +void createSubDirs(QDir &d); + +QCString stripPath(const char *s); + +bool containsWord(const QCString &s,const QCString &word); + +bool findAndRemoveWord(QCString &s,const QCString &word); + +QCString stripLeadingAndTrailingEmptyLines(const QCString &s); + +//void stringToSearchIndex(const QCString &docUrlBase,const QCString &title, +// const QCString &str, bool priority=FALSE, +// const QCString &anchor=""); + +bool updateLanguageMapping(const QCString &extension,const QCString &parser); +SrcLangExt getLanguageFromFileName(const QCString fileName); +void initDefaultExtensionMapping(); + +bool checkIfTypedef(Definition *scope,FileDef *fileScope,const char *n); + +ClassDef *newResolveTypedef(FileDef *fileScope,MemberDef *md, + MemberDef **pMemType=0,QCString *pTemplSpec=0, + QCString *pResolvedType=0, + ArgumentList *actTemplParams=0); + +QCString parseCommentAsText(const Definition *scope,const MemberDef *member,const QString &doc,const QCString &fileName,int lineNr); + +QCString transcodeCharacterStringToUTF8(const QCString &input); + +QCString recodeString(const QCString &str,const char *fromEncoding,const char *toEncoding); + +QCString extractAliasArgs(const QCString &args,int pos); + +int countAliasArguments(const QCString argList); + +QCString replaceAliasArguments(const QCString &aliasValue,const QCString &argList); + +QCString resolveAliasCmd(const QCString aliasCmd); +QCString expandAlias(const QCString &aliasName,const QCString &aliasValue); + +void writeTypeConstraints(OutputList &ol,Definition *d,ArgumentList *al); + +QCString convertCharEntitiesToUTF8(const QCString &s); + +bool usingTreeIndex(); +void stackTrace(); + +bool readInputFile(const char *fileName,BufStr &inBuf); +QCString filterTitle(const QCString &title); + + +#endif +