⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 refere~1.h

📁 一百个病毒的源代码 包括熊猫烧香等 极其具有研究价值
💻 H
字号:
// Copyright 1999 Jose M. Vidal// Jose M. Vidal, vidal@multiagent.com, http://jmvidal.ece.sc.edu//// This program is free software.  You can redistribute it and/or modify// it under the terms of the GNU General Public License//// -*- mode:C++; tab-width:4; c-basic-offset:2; indent-tabs-mode:nil -*- //// $Id: reference.H,v 1.44 2000/12/15 23:45:57 jmvidal Exp $#ifndef REFERENCE_H #define REFERENCE_H#ifdef HAVE_CONFIG_H#include <config.h>#endif#include <iostream>#include <fstream>#include <iomanip>#include <cstdlib>#include <cctype>#include <string>#include <strstream>#include <vector>#include <algorithm>#include <ctime>#include <sys/stat.h>#include "element.H"#include "iwebstream.H"#include "funstring.H"using namespace std;const string urlsDBHeader = "#bk2site urls.db generated file";const string addDate = "ADD_DATE";const string lastModified = "LAST_MODIFIED";const string lastVisit = "LAST_VISIT";const string href = "HREF";const string ALIASID = "ALIASID";const string ALIASOF = "ALIASOF";const string ALIAS = "ALIAS";const string PRIVATE = "PRIVATE";const string PUBLISH = "PUBLISH";const string INCLUDE = "INCLUDE";const string DIRNAME = "DIRNAME";const string placeholder = "<!--bk2site";const string placeholderEnd = "-->";const int NUMVARS = 22;const string varNames[NUMVARS] = {"NEWGIF", "DESTDIR",  "TOPFOLDER","BOOKMARKFILE","INDEXFILENAME","OTHERFILENAME", "TIMECUTOFF","TOP", "INDEX", "SEARCH", "SEARCHTOROOTPATH", "URLLOGFILE", "HITSTIMECUTOFF", "SUBDIRSEP", "BACKDIRSEP", "SEARCHURLTEMPLATE",    "NEWSTOPFOLDER", "TITLE", "OUTPUTBOOKMARKFILE", "COMMENTS", "FOLDERCREATION",   "TOPHITSINCLUDENEWS"};const int NEWGIF = 0;const int DESTDIR = 1;const int TOPFOLDER = 2;const int BOOKMARKFILE = 3;const int INDEXFILENAME = 4;const int OTHERFILENAME = 5;const int TIMECUTOFF = 6;const int TOP = 7;const int INDEX = 8;const int SEARCH = 9;const int SEARCHTOROOTPATH = 10;const int URLLOGFILE = 11;const int HITSTIMECUTOFF = 12;const int SUBDIRSEP = 13;const int BACKDIRSEP = 14;const int SEARCHURLTEMPLATE = 15;const int NEWSTOPFOLDER = 16;const int TITLE = 17;const int OUTPUTBOOKMARKFILE = 18;const int COMMENTS = 19;const int FOLDERCREATION = 20;const int TOPHITSINCLUDENEWS = 21;const int NUMFORMATVARS = 36;const string FORMATVARS[NUMFORMATVARS] = { //they are all prepended by %    "%IFCOMHAS(", //%IFCOMHAS(string)(html) MUST appear before comment on this list.    "%URL", //the URL    "%NOACCENTURL", //the URL    "%TITLE", //the title    "%NOACCENTTITLE", //the title    "%NHCOMMENT", //the comment without HTML in it.    "%NOACCENTCOMMENT", //the comment without HTML in it.    "%COMMENT", //the comment    "%FILLCOMMENT", //the comment, autofilled    "%FSCOMMENT", //the first sentence in the comment    "%LONGCOMMENT", //the comment in one long line    "%SHORTCOMMENT(",    "%JSCOMMENT", //comment suitable for use as a javascript string    "%JSFSCOMMENT", //first sentence for js    "%DAYCRE", //the day created    "%DAYVIS", //the day last visited    "%DAYMOD", //the day last Modified    "%MONTHCRE1", //the month created, in number    "%MONTHCRE2", //the month created, in English    "%MONTHVIS1", //the month created, in number    "%MONTHVIS2", //the month created, in English    "%MONTHMOD1", //the month created, in number    "%MONTHMOD2", //the month created, in English    "%YEARCRE",    "%YEARFCRE",    "%YEARVIS",    "%YEARFVIS",    "%YEARMOD",    "%YEARFMOD",    "%LEAFS", //the total number of leafs under it (for folders only)    "%NEW", //the new.gif, if the time is right.    "%TIMEFCRE", //the time created in full "Wed Jun 30 21:49:03 1993"    "%TIMEFMOD", //the time modified in full "Wed Jun 30 21:49:03 1993"    "%TIMEFVIS", //the time visited in full "Wed Jun 30 21:49:03 1993"    "%CONDDASH", //prints a dash "-" if the comment is not null    "%HITS" //the number of hits it has received.};class referenceTree;class element;class fileView;class channelContainer;class reference {  public:   string url;  string title;  string dirname;  string comment;  string commentCommands; //sort commands that used to be in the comment.  time_t creationTime;  time_t modifiedTime;  time_t visitTime;  string aliasID; //contains the reference's IDNUM (as given by Navigator)  string aliasOf; //contains the IDNUM of the bookmark it refers to. We ignore these.  string aliasDir;  referenceTree * children;  bool priv;  bool aliasof;  //the navigation bar (HTML) under which we reside  //this is used when doing << and then >>, for search.  //The urls are prepended with SEARCHTOROOTPATH and then the path from there.  string navBar;  bool folder;  int hits;    reference() : url(""), title(""), dirname(""), comment (""), commentCommands(""), creationTime(0),     modifiedTime(0), visitTime(0), aliasDir(""), aliasID(""), aliasOf(""),     children(0), priv(false), aliasof(false), navBar(""), folder(false),    hits(0){  };  reference(const reference &r);  reference(const string & str) : url(""), title(""), dirname(""), comment(""), commentCommands(""), creationTime(0),                                  modifiedTime(0), visitTime(0), aliasDir(""), aliasID(""), aliasOf(""), children(0),                                   priv(false),aliasof(false),navBar(""), folder(false), hits(0){     setValues(str);};  reference& operator=(const reference & r);  void setValues (const string & str);     int operator<(const reference & r) const;  ~reference();  int search(const string & s);  void sendAsHTML(ostream & out); //for search  string sendAsHTML(const string & templ, const string varValues []) const;  bool isFolder() const;  bool isPrivate() const;  bool isAliasof() const;  string::size_type fullstop(const string &s, const string &p) const;  //  friend ostream &operator<<(ostream&, const reference &);  friend iwebstream &operator>>(iwebstream&, reference &);  void writeAsFlatFile(ostream& output) const;  void writeAsBookHelper(ostream& output, string & prepend) const;  void writeAsXBELHelper(ostream& output, string & prepend) const;  bool readXml(iwebstream & is);};#include "channel.H"class referenceCmpCreation {public:  int operator()(const reference&r1, const reference&r2) const    { return r1.creationTime > r2.creationTime;}};class referenceCmpCreationI { //the inversepublic:  int operator()(const reference&r1, const reference&r2) const    { return r1.creationTime < r2.creationTime;}};class referenceCmpTitle {public:  int operator()(const reference&r1, const reference&r2) const    { return r1.title < r2.title;}};class referenceCmpTitleI {public:  int operator()(const reference&r1, const reference&r2) const    { return r1.title > r2.title;}};class referenceCmpModified { //latest modified is first (i.e. "less")public:  int operator()(const reference&r1, const reference&r2) const    { return r1.modifiedTime > r2.modifiedTime;}};class referenceCmpModifiedI { public:  int operator()(const reference&r1, const reference&r2) const    { return r1.modifiedTime < r2.modifiedTime;}};class referenceCmpVisit { public:  int operator()(const reference&r1, const reference&r2) const  { return r1.visitTime > r2.visitTime;}};class referenceCmpVisitI { public:  int operator()(const reference&r1, const reference&r2) const    { return r1.visitTime < r2.visitTime;}};class referenceCmpHits {public:  int operator()(const reference&r1, const reference&r2) const    { return r1.hits > r2.hits;}};class referenceCmpHitsI {public:  int operator()(const reference&r1, const reference&r2) const    { return r1.hits < r2.hits;}};static int numMerges = 0; //we add this number to all the aliases that we merge into the rt.class referenceTree {      vector<reference> contents;  int numLeafs; //below me.  string getToken(iwebstream & is);public:  string comment; //The comment for a folder appears here AND in the reference.  referenceTree() : numLeafs(0), comment(""){};  referenceTree(const referenceTree &rt): numLeafs(rt.numLeafs) {    contents = rt.contents;    comment = rt.comment;};  referenceTree& operator=(const referenceTree &rt){    contents = rt.contents;     numLeafs = rt.numLeafs;    comment = rt.comment;     return *this;};    ~referenceTree() {};  void addReference(const reference & r){    contents.push_back(r);};  int getNumLeafs(){return numLeafs;};  string getPath(const string & title, const string & dir, const string & subdirsep) const;  void increaseHits(string & url, int x);  referenceTree * getFirstGrandchild(){    vector<reference>::iterator iter = contents.begin();    return (*iter).children;  }  time_t setFolderCreationToMaxDescendant();  time_t setFolderCreationToMaxChildren();  void fixAliases(referenceTree * rootRT, const string & dir, const string varValues [],		  const string & path);  referenceTree * getSubtree(const string & topName);  void createSite(const string varValues[], channelContainer & channels);  void createSiteH(const string varValues[], vector<reference> & allReferences, channelContainer & channels,				fileView & baseView, fileView & otherView,				vector<reference> & newsItems, int depth = 0, 				string navigateBar = "", string searchNavBar = "",				string parentTitle = "", string folderTitle ="",		   		string filePath = "");  void createPage(const string indexFileName, const string ofileName, const string varValues [],		  channelContainer & channels);  void makeVector(vector<reference> & vr, const string & avoidFolder = "");  friend iwebstream &operator>>(iwebstream&, referenceTree &);  //  friend ostream &operator<<(ostream&, const referenceTree &);  void doSort(); //checks the comment and does appropiate sort.  void writeAsFlatFile(ostream& out) const;  void writeAsBookmarkFile(ostream & out, string title) const;  void writeAsBookHelper(ostream& out, string & prepend) const;  void writeAsXBELHelper(ostream& out, string & prepend) const;  void writeAsXBELFile(ostream & out, string title) const;  int fixNumChildren();  void addTree(const referenceTree & rt);  void merge(const referenceTree & rt);};#endif// -*-// Local Variables:// mode: C++// tab-width: 4// c-basic-offset:2// indent-tabs-mode: nil // End:

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -