program.h

来自「这个程序是关于OpenC++的反射植入机制的编译器」· C头文件 代码 · 共 127 行

H
127
字号
#ifndef guard_opencxx_Program_h#define guard_opencxx_Program_h//@beginlicenses@//@license{chiba_tokyo}{}@//@license{xerox}{}@//@license{contributors}{}@////  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.////  -----------------------------------------------------------------//////  Copyright (c) 1995, 1996 Xerox Corporation.//  All Rights Reserved.////  Use and copying of this software and preparation of derivative works//  based upon this software are permitted. Any copy of this software or//  of any derivative work must include the above copyright notice of   //  Xerox Corporation, this paragraph and the one after it.  Any//  distribution of this software or derivative works must comply with all//  applicable United States export control laws.////  This software is made available AS IS, and XEROX CORPORATION DISCLAIMS//  ALL WARRANTIES, EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION THE  //  IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR    //  PURPOSE, AND NOTWITHSTANDING ANY OTHER PROVISION CONTAINED HEREIN, ANY//  LIABILITY FOR DAMAGES RESULTING FROM THE SOFTWARE OR ITS USE IS//  EXPRESSLY DISCLAIMED, WHETHER ARISING IN CONTRACT, TORT (INCLUDING//  NEGLIGENCE) OR STRICT LIABILITY, EVEN IF XEROX CORPORATION IS ADVISED//  OF THE POSSIBILITY OF SUCH DAMAGES.////  -----------------------------------------------------------------////  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.// //  Other Contributors (see file AUTHORS) 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)  Other Contributors (see file AUTHORS)////@endlicenses@#include <iosfwd>#include <opencxx/parser/GC.h>namespace Opencxx{class Ptree;class Program : public Object {public:    Program(char *name) {	replacement = 0;	defaultname = name;    }    virtual ~Program() {}    void Rewind() { index = 0; }    void Rewind(unsigned i) { index = i; }    unsigned GetSize() { return size; }    void Unget() { --index; }    char Ref(unsigned position) { return buf[position]; }    void Set(char c, unsigned position) { buf[position] = c; }    /* The location of the last character obtained by Get(). */    unsigned GetCurPos() { return index - 1; }    /* The location of the next character obtained by Get(). */    unsigned GetNextPos() { return index; }    /* The result of Read() must be the same for each call. */    const char* Read(unsigned p) { return &buf[p]; }    virtual char Get();    void Subst(Ptree* newtext, Ptree* oldtext);    void Insert(Ptree* pos, Ptree* before_text, Ptree* after_text);    void Replace(char*, char*, Ptree*);    void MinimumSubst(Ptree* newtext, Ptree* oldtext);    unsigned LineNumber(char*, char*&, int&);    void Write(std::ostream&, const char*);    int ReadLineDirective(unsigned, int, unsigned&, int&);private:    bool MinimumSubst2(Ptree* newtext, Ptree* oldtext);protected:    char*	buf;    unsigned	size, index;    char	*defaultname;private:    class Replacement : public LightObject {    public:	Replacement(Replacement*, unsigned, unsigned, Ptree*);	Replacement* next;	unsigned startpos;	unsigned endpos;	Ptree* text;    };    Replacement* replacement;};}#endif /* ! guard_opencxx_Program_h */

⌨️ 快捷键说明

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