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

📄 leaf.cc

📁 这个程序是关于OpenC++的反射植入机制的编译器
💻 CC
字号:
//@beginlicenses@//@license{chiba_tokyo}{}@////  Permission to use, copy, distribute and modify this software and its  //  documentation for any purpose is hereby granted without fee, provided that//  the above copyright notice appears in all copies and that both that copyright//  notice and this permission notice appear in supporting documentation.// //  1997-2001 Shigeru Chiba, Tokyo Institute of Technology. make(s) no representations about the suitability of this//  software for any purpose. It is provided "as is" without express or implied//  warranty.//  //  Copyright (C)  1997-2001 Shigeru Chiba, Tokyo Institute of Technology.////@endlicenses@#include <cstring>#include <iostream>#include <opencxx/parser/token-names.h>#include <opencxx/parser/Token.h>#include <opencxx/parser/Leaf.h>using namespace std;namespace Opencxx{// class LeafLeaf::Leaf(char* ptr, int len){    data.leaf.position = ptr;    data.leaf.length = len;}Leaf::Leaf(Token& tk){    data.leaf.position = tk.ptr;    data.leaf.length = tk.len;}bool Leaf::IsLeaf() const{    return true;}void Leaf::Print(ostream& s, int, int){    char* p = data.leaf.position;    int n = data.leaf.length;    // Recall that [, ], and @ are special characters.    if(n < 1)	return;    else if(n == 1 && *p == '@'){	s << "\\@";	return;    }    char c = *p++;    if(c == '[' || c == ']')	s << '\\' << c;		// [ and ] at the beginning are escaped.    else	s << c;    while(--n > 0)	s << *p++;}int Leaf::Write(ostream& out, int indent){    int n = 0;    char* ptr = data.leaf.position;    int len = data.leaf.length;    while(len-- > 0){	char c = *ptr++;	if(c == '\n'){	    PrintIndent(out, indent);	    ++n;	}	else	    out << c;    }    return n;}void Leaf::PrintOn(std::ostream& out) const{    // :TODO: reimplement with 'std::copy'    char* ptr = data.leaf.position;    int len = data.leaf.length;    while(len-- > 0)    {	out << *ptr++;    }}}

⌨️ 快捷键说明

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