programfromstdin.cc

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

CC
97
字号
//@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//  EXPRECSLY 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 <iostream>#include <opencxx/parser/ProgramFromStdin.h>namespace Opencxx{ProgramFromStdin::ProgramFromStdin(): Program("stdin"){    const int Size = 1024 * 1024; // :FIXME:     buf = new char[Size];    buf_size = Size;    index = size = 0;}ProgramFromStdin::~ProgramFromStdin(){    delete [] buf;    buf = 0;}char ProgramFromStdin::Get(){    if(size >= buf_size){	std::cerr << "ProgramFromStdin: sorry, out of memory\n";	exit(1);    }    if(index >= size){	int c = std::cin.get();	if(c == EOF)	    c = '\0';	buf[size++] = c;    }    if(buf[index] == '\0')	return buf[index];    else	return buf[index++];}}

⌨️ 快捷键说明

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