Orb/Doxygen/src/util.h
changeset 0 42188c7ea2d9
child 4 468f4c8d3d5b
--- /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 <qlist.h>
+#include <qtextstream.h>
+#include <ctype.h>
+#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<ArgumentList> *copyArgumentLists(const QList<ArgumentList> *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<ListItemInfo> *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<SectionInfo> *anchors,
+                           const char *fileName,int startLine,
+                           const QList<ListItemInfo> *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
+