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

📄 prepinclude.cpp

📁 wxGTK 是 wxWidgets 的 linux GTK+ (>2.2.3)版本。wxWidgets 是一个跨平台的 GUI 框架
💻 CPP
字号:
/******************************************************************************                       wxWindows HTML Applet Package**               Copyright (C) 1991-2001 SciTech Software, Inc.*                            All rights reserved.**  ========================================================================**    The contents of this file are subject to the wxWindows License*    Version 3.0 (the "License"); you may not use this file except in*    compliance with the License. You may obtain a copy of the License at*    http://www.wxwindows.org/licence3.txt**    Software distributed under the License is distributed on an*    "AS IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or*    implied. See the License for the specific language governing*    rights and limitations under the License.**  ========================================================================** Language:		ANSI C++* Environment:	Any** Description:  This file is the implementation of the Preprocessor object* for parsing the <!--#include*****************************************************************************/// Include private headers#include "wx/applet/prepinclude.h"#include "wx/applet/echovar.h"// wxWindows#include "wx/filesys.h"#include "wx/msgdlg.h"/*----------------------------- Implementation ----------------------------*/#define RECURSE_LIMIT 50/****************************************************************************PARAMETERS:text        - text to process for echo variablesRETURNS:The string containing the processed filenameREMARKS:This routine searches through the text of the filename for variables containedin % percent signs****************************************************************************/wxString ParseFilename(    wxString &text){    int f = 0;    int e;    while ((f = text.find('%', f)) != wxString::npos) {        f++;        e = text.find('%', f);#ifdef CHECKED	        if (e == wxString::npos) {            wxMessageBox(wxString("wxHTML #include error: % signs should bracket variable names in file attribute. To use a percent sign in a filename write double percents (%%)."), "Error" ,wxICON_ERROR);            return text;            }#endif			        if (e == f)            text.replace(f-1, 2, "%");        else {            wxString varname = text.Mid(f, (e-f));            text.replace(f-1, (e-f)+2, wxEchoVariable::GetValue(varname));            }        }    return text;}/****************************************************************************PARAMETERS:text        - HTML to process for include directivesRETURNS:The string containing the processed HTMLREMARKS:This is the only implemented method of the Preprocessor class. It is a constantfunction that parses a string. Basically we load the string search for includestatements then replace them with the correct file. Wash rinse and repeat untilall recursive cases are handled.****************************************************************************/wxString wxIncludePrep::Process(    const wxString& text) const{    int i;	char ft[] = "<!--#include virtual=";    int openedcount = 0;    // make a copy so we can replace text as we go without affecting the original	wxString output = text;	while ((i = (output.Lower()).Find(ft)) != -1) {		// This loop makes more recursion unnecessary since each iteration adds		// the new include files to output.		int n, c;		wxString fname;        n = (output.Mid(i+21)).Find("-->");				if (n == -1) {#ifdef CHECKED			            wxMessageBox("wxHTML #include error: Could not read filename. Premature end of file.","Error",wxICON_ERROR);#endif			            break;            }		fname = output.Mid(i+21, n);				// Clip off any quotation marks if they exist. (don't die if there arn't any)		c = fname.Find("\"");        if (c != -1) fname = fname.Mid(c+1);		c = fname.Find("\"");		if (c != -1) fname = fname.Mid(0, c);				// remove the #include tag        output.Remove(i, n+21+3);        wxFSFile * file;        file = m_FS->OpenFile(ParseFilename(fname));	        if (!file) {#ifdef CHECKED					wxMessageBox(wxString("wxHTML #include error: File not Found ") + fname + wxString("."),"Error",wxICON_ERROR);#endif            delete file;            continue;			}												wxString tmp;    	        do {			char tmp2[257];			(file->GetStream())->Read(tmp2, 256);			c = (file->GetStream())->LastRead();            tmp2[c] = 0;			tmp += wxString(tmp2);			} while (c == 256);		output = (output.Mid(0,i) + tmp + output.Mid(i));#ifdef CHECKED	        if (openedcount > RECURSE_LIMIT) {            wxMessageBox(wxString("wxHTML #include error: More than RECURSE_LIMIT files have been #included you may have a file that is directly or indirectly including itself, causing an endless loop"), "Error" ,wxICON_ERROR);            break;            }#endif			        openedcount++;        delete file;        }		return output;}/****************************************************************************PARAMETERS:dir     - Default directory to get included HTML files fromREMARKS:This function sets the directory to get included HTML files from. The defaultvalue is the current directory. Directorys may be given as a relative path.****************************************************************************/void wxIncludePrep::ChangeDirectory(    wxFileSystem *fs){     m_FS = fs;}

⌨️ 快捷键说明

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