亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? screen.cpp

?? 自己寫的C++primer的源碼,推薦下載
?? CPP
字號:
#include <iostream>
using std::cerr;
using std::cout;
using std::endl;

#include "screen.h"

// --------------------------
// Screen static data members
// --------------------------

Screen::Action Screen::Menu[] = {
        &Screen::home,
        &Screen::forward,
        &Screen::back,
        &Screen::up,
        &Screen::down,
        &Screen::end
};

Screen *Screen::freeStore = 0;
const int Screen::screenChunk = 24;

// -----------------------
// Screen member functions
// -----------------------

Screen::Screen( const Screen &sobj )
{
        // if this Screen object and sobj are the same object,
        // no copy necessary
        if ( this != &sobj )
        {
                _height = sobj._height;
                _width = sobj._width;
                _cursor = 0;

                // creates a new string;
                // its content is the same as sobj._screen
                _screen = sobj._screen;
        }
}

Screen& Screen::move( int r, int c )
{ // move _cursor to absolute position
        if ( checkRange( r, c ) ) // valid screen position?
        {
                int row = (r-1) * _width; // row location
                _cursor = row + c - 1;
        }

	return *this;
}

Screen& Screen::move( CursorMovements cm )
{
        ( this->*Menu[ cm ] )();
        return *this;
}

Screen& Screen::clear( char bkground )
{ // reset the cursor and clear the screen

        _cursor = 0;
        _screen.assign(       // assign the string
                _screen.size(),    // with size() characters
                bkground           // of value bkground
        );

        // return the object for which the function was invoked
        return *this;
}

char Screen::get( int r, int c )
{
        move( r, c ); // position _cursor
        return get(); // the other get() member function
}

Screen& Screen::set( char ch ) 
{
        if ( ch == '\0' )
                cerr << "Screen: warning: "
                     << "null character (ignored).\n";
        else _screen[_cursor] = ch;

        return *this;
}

Screen& Screen::set( const string &s )
{ // write string beginning at current _cursor position

        int space = remainingSpace();
        int len = s.size();
        if ( space < len ) {
                cerr << "Screen: warning: truncation: "
                     << "space: " << space
                     << "string length: " << len << endl;
                len = space;
        }

        _screen.replace( _cursor, len, s );
        _cursor += len - 1;

        return *this;
}

Screen& Screen::forward()
{ // advance _cursor one screen element

        ++_cursor;

        // check for end of screen; wrap around
        if ( _cursor == _screen.size() )
                home();

        return *this;
}

Screen& Screen::back()
{ // move _cursor backward one screen element

        // check for top of screen; wrap around
        if ( _cursor == 0 )
                end();
        else
                --_cursor;

        return *this;
}

const char BELL = '\007';

Screen& Screen::up()
{ // move _cursor up one row of screen
  // do not wrap around; rather, ring bell

        if ( row() == 1 ) // at top?
                cout << BELL << endl;
        else
                _cursor -= _width;

        return *this;
}

Screen& Screen::down()
{
        if ( row() == _height ) // at bottom?
                cout << BELL << endl;
        else
                _cursor += _width;

        return *this;
}

Screen& Screen::repeat( Screen::Action op, int times )
{
        for ( int i = 0; i < times; ++i )
                (this->*op)();
        return *this;
}

Screen& Screen::reSize( int h, int w, char bkground )
{ // resize a screen to height h and width w

        // remember the content of the screen
        string local(_screen);

        // replaces the string to which _screen refers
        _screen.assign(     // assign the string
                h * w,           // with h * w characters
                bkground         // of value bkground
        );

        typedef string::size_type idx_type;
        idx_type local_pos = 0;

        // copy content of old screen into the new one
        for ( idx_type ix = 0; ix < _height; ++ix )
        { // for each row

                idx_type offset = w * ix; // row position
                for ( idx_type iy = 0; iy < _width; ++iy )
                        // for each column, assign the old value
                        _screen[ offset + iy ] = local[ local_pos++ ];
        }

        _height = h;
        _width = w;
        // _cursor remains unchanged

        return *this;
}

Screen& Screen::display()
{
        typedef string::size_type idx_type;

        for ( idx_type ix = 0; ix < _height; ++ix )
        { // for each row

                idx_type offset = _width * ix; // row position

                for ( idx_type iy = 0; iy < _width; ++iy )
                        // for each column, write element
                        cout << _screen[ offset + iy ];

                cout << endl;
        }
        return *this;
}

bool Screen::checkRange( int row, int col )
{ // validate coordinates
        if ( row < 1 || row > _height ||
             col < 1 || col > _width ) {
                cerr << "Screen coordinates ( "
                     << row << ", " << col
                     << " ) out of bounds.\n";
                return false;
        }
        return true;
}

void *Screen::operator new( size_t size )
{
        Screen *p;

        if ( !freeStore ) {
                // linked list empty: grab a chunk
                // this call is to the global new
                size_t chunk = screenChunk * size;
                freeStore = p =
                        reinterpret_cast< Screen* >( new char[ chunk ] );

                // now thread the memory allocated
                for ( ;
                      p != &freeStore[ screenChunk - 1 ];
                      ++p )
                        p->next = p+1;
                p->next = 0;
        }

        p = freeStore;
        freeStore = freeStore->next;
        return p;
}

void Screen::operator delete( void *p, size_t )
{
        // insert the "deleted" object back
        // into the free list

        ( static_cast< Screen* >( p ) )->next = freeStore;
        freeStore = static_cast< Screen* >( p );
}

// --------------------------
// ScreenPtr member functions
// --------------------------

Screen& ScreenPtr::operator++()
{
        if ( size == 0 ) {
                cerr << "cannot increment pointer to single object\n";
                return *ptr;
        }
        if ( offset >= size - 1 ) {
                cerr << "already at the end of the array\n";
                return *ptr;
        }

        ++offset;
        return *++ptr;
}

Screen& ScreenPtr::operator--()
{
        if ( size == 0 ) {
                cerr << "cannot decrement pointer to single object\n";
                return *ptr;
        }
        if ( offset <= 0 ) {
                cerr << "already at the beginning of the array\n";
                return *ptr;
        }

        --offset;
        return *--ptr;
}

Screen& ScreenPtr::operator++(int)
{
        if ( size == 0 ) {
                cerr << "cannot increment pointer to single object\n";
                return *ptr;
        }
        if ( offset == size ) {
                cerr << "already one past the end of the array\n";
                return *ptr;
        }

        ++offset;
        return *ptr++;
}

Screen& ScreenPtr::operator--(int)
{
        if ( size == 0 ) {
                cerr << "cannot decrement pointer to single object\n";
                return *ptr;
        }
        if ( offset == -1 ) {
                cerr << "already one before the beginning of the array\n";
                return *ptr;
        }

        --offset;
        return *ptr--;
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产白丝网站精品污在线入口| 欧美日韩在线电影| 欧美色男人天堂| 久久精品免视看| 日韩 欧美一区二区三区| 99精品国产91久久久久久 | 免费高清在线视频一区·| av网站免费线看精品| www国产精品av| 日产欧产美韩系列久久99| 91成人看片片| 欧美xxx久久| 日韩电影免费在线| 欧美日韩不卡视频| 亚洲免费电影在线| 99久久精品国产一区| 国产亚洲精品资源在线26u| 日本美女一区二区三区| 欧美日韩一区二区三区免费看| 国产欧美日韩精品在线| 国产精品亚洲人在线观看| 欧美电影免费提供在线观看| 一区av在线播放| 一本大道久久a久久综合| 综合激情成人伊人| 99视频精品免费视频| 亚洲欧洲成人自拍| 91麻豆国产福利精品| 亚洲日本免费电影| 日本道精品一区二区三区| 亚洲色图欧美在线| 日本韩国一区二区| 一区二区三区精品视频| 91浏览器入口在线观看| 玉米视频成人免费看| 欧美吻胸吃奶大尺度电影| 一区二区三区欧美在线观看| 在线精品视频免费观看| 亚洲一区二区欧美| 欧美老肥妇做.爰bbww视频| 日韩高清在线不卡| 欧美电影免费观看高清完整版 | 欧美大片在线观看一区二区| 日韩不卡一二三区| 91精品在线免费| 麻豆一区二区在线| 久久精品亚洲麻豆av一区二区| 国产成人免费9x9x人网站视频| 欧美国产日韩a欧美在线观看| 成人午夜免费视频| 一区二区三区四区不卡视频| 欧美三级日本三级少妇99| 盗摄精品av一区二区三区| 欧美国产日韩一二三区| 色综合天天天天做夜夜夜夜做| 亚洲图片欧美综合| 26uuu色噜噜精品一区| 国产91清纯白嫩初高中在线观看| 亚洲视频免费观看| 欧美三级电影精品| 韩国av一区二区三区| 亚洲品质自拍视频| 欧美一区二区啪啪| 懂色av一区二区三区蜜臀| 亚洲激情自拍偷拍| 欧美不卡在线视频| 91小视频在线| 日韩和的一区二区| 国产欧美一区二区精品忘忧草| 91蜜桃婷婷狠狠久久综合9色| 午夜亚洲福利老司机| 久久综合色综合88| 在线观看亚洲成人| 国产精品亚洲综合一区在线观看| 亚洲视频每日更新| 欧美精品一区二区三区久久久| a在线播放不卡| 精品一区二区三区免费| 亚洲精品水蜜桃| 精品国产乱码久久久久久影片| 色综合色狠狠综合色| 国产原创一区二区三区| 亚洲图片欧美色图| 国产精品乱人伦| 欧美电影免费观看高清完整版在线 | 天天射综合影视| 国产精品久久一卡二卡| 日韩欧美中文字幕精品| 色屁屁一区二区| 成人黄色片在线观看| 精品制服美女久久| 亚洲国产精品一区二区尤物区| 国产欧美一区二区精品忘忧草| 欧美精品久久久久久久多人混战| av午夜一区麻豆| 成人中文字幕合集| 国产精品亚洲专一区二区三区| 人禽交欧美网站| 亚洲大片在线观看| 一区二区三区在线视频免费观看| 国产精品午夜春色av| 久久久蜜桃精品| 精品久久久久久久久久久院品网| 欧美三级日韩三级国产三级| 欧美亚日韩国产aⅴ精品中极品| jlzzjlzz亚洲女人18| 豆国产96在线|亚洲| 国产69精品久久久久777| 国产精品伊人色| 国产精品主播直播| 国产一区二区三区免费看| 国产在线看一区| 9191成人精品久久| 欧美精品在欧美一区二区少妇| 在线视频你懂得一区| 欧美日韩中文字幕一区| 欧美性大战xxxxx久久久| 欧美日韩国产影片| 91精品国产乱码久久蜜臀| 欧美一个色资源| 欧美xxxx在线观看| 国产亚洲综合在线| 国产精品网站在线播放| 中文字幕在线观看不卡| 亚洲欧美另类久久久精品2019| 亚洲精品日韩综合观看成人91| 亚洲欧美另类图片小说| 亚洲国产美女搞黄色| 肉肉av福利一精品导航| 经典三级视频一区| 不卡av在线免费观看| 色999日韩国产欧美一区二区| 色8久久精品久久久久久蜜| 色噜噜久久综合| 91精品麻豆日日躁夜夜躁| 欧美xxxx老人做受| 日韩一区在线看| 亚洲成人7777| 黄页视频在线91| caoporm超碰国产精品| 欧美色中文字幕| 久久综合av免费| 亚洲精品欧美激情| 日韩av一区二区在线影视| 成人亚洲精品久久久久软件| 色999日韩国产欧美一区二区| 欧美一区三区二区| 欧美激情一区不卡| 丝袜美腿亚洲综合| 成人av动漫网站| 69av一区二区三区| 国产精品久久久久久久久动漫 | 成人性生交大片| 欧美日韩免费一区二区三区视频| 欧美成人一区二区三区在线观看 | 久久亚区不卡日本| 亚洲黄色小说网站| 国产麻豆成人精品| 欧美色网一区二区| 中文字幕高清一区| 美女脱光内衣内裤视频久久网站 | 精品理论电影在线观看| 亚洲人成伊人成综合网小说| 麻豆成人在线观看| 欧美亚男人的天堂| 中文字幕日韩一区| 国产精品一区专区| 欧美一级日韩一级| 一区二区在线观看av| 国产一区二区三区四区五区入口 | 国产精品久久久久影视| 日本成人在线网站| 91官网在线免费观看| 日本一区二区三区在线观看| 日韩—二三区免费观看av| 色狠狠一区二区三区香蕉| 日本不卡视频一二三区| 99久久精品国产网站| 日本一区二区免费在线观看视频| 青青草97国产精品免费观看 | 激情综合网av| 欧美一级片在线观看| 亚洲成人手机在线| 日本韩国精品一区二区在线观看| 国产嫩草影院久久久久| 激情亚洲综合在线| 欧美一区二区国产| 免费观看在线色综合| 91精品国产高清一区二区三区蜜臀| 亚洲一区在线播放| 欧美午夜影院一区| 亚洲成人资源网| 精品视频在线免费观看| 亚洲美女免费视频| 一本色道久久综合狠狠躁的推荐 | 激情欧美一区二区| 精品国产伦一区二区三区观看体验 | 精品一区在线看| 欧美成人a在线| 国产精品正在播放|