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

? 歡迎來(lái)到蟲(chóng)蟲(chóng)下載站! | ?? 資源下載 ?? 資源專(zhuān)輯 ?? 關(guān)于我們
? 蟲(chóng)蟲(chóng)下載站

?? screen.cpp

?? c++ primer 源代碼
?? CPP
字號(hào):
#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--;
}

?? 快捷鍵說(shuō)明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
99久久综合狠狠综合久久| 色偷偷一区二区三区| 国产精品麻豆久久久| 精品视频在线看| 福利91精品一区二区三区| 日韩国产在线观看| 亚洲欧洲制服丝袜| 国产亚洲欧美日韩在线一区| 欧美日韩精品二区第二页| 不卡av在线网| 国产黑丝在线一区二区三区| 日韩黄色片在线观看| 伊人一区二区三区| 国产拍欧美日韩视频二区| 日韩欧美国产电影| 欧美精品亚洲一区二区在线播放| 成人国产精品免费观看视频| 久久99精品久久久| 五月天久久比比资源色| 亚洲精品国产视频| 国产精品免费视频观看| 国产欧美日韩在线| 国产午夜精品理论片a级大结局| 欧美岛国在线观看| 日韩一级免费观看| 日韩一区二区三区免费看| 欧美人与禽zozo性伦| 欧美亚洲动漫精品| 色狠狠av一区二区三区| 色综合久久天天| 91性感美女视频| 99视频热这里只有精品免费| 成人小视频免费在线观看| 国产91在线|亚洲| 国产成人免费av在线| 国产成人精品一区二| 国产精品一区在线观看乱码| 黄色成人免费在线| 国产一区二区中文字幕| 国产乱码字幕精品高清av| 激情图区综合网| 激情五月婷婷综合| 国产精品一卡二卡| 成人一道本在线| 99久久99久久久精品齐齐| 97精品久久久久中文字幕| 在线欧美日韩国产| 欧美婷婷六月丁香综合色| 欧美精品电影在线播放| 欧美一级欧美三级| wwww国产精品欧美| 国产网站一区二区| 亚洲婷婷在线视频| 一区二区三区中文字幕精品精品| 艳妇臀荡乳欲伦亚洲一区| 亚洲成人自拍一区| 久久超碰97中文字幕| 国产精品一区二区在线播放| 不卡一区在线观看| 在线免费观看视频一区| 制服丝袜亚洲色图| 久久午夜国产精品| 亚洲视频一区在线| 视频一区免费在线观看| 久久99久久久欧美国产| 成人av午夜影院| 欧美性大战xxxxx久久久| 欧美一区二区在线播放| 国产欧美一二三区| 亚洲成人精品在线观看| 久久99热这里只有精品| 99久久夜色精品国产网站| 欧美日韩中字一区| 久久久久久久久99精品| 夜夜嗨av一区二区三区网页| 美国av一区二区| 成人动漫中文字幕| 在线播放亚洲一区| 国产欧美日韩在线| 亚洲成a人片在线不卡一二三区| 狠狠色丁香婷婷综合| 91老司机福利 在线| 日韩欧美在线影院| 亚洲欧美日韩国产成人精品影院| 日本一不卡视频| 国产成人在线视频免费播放| 欧美亚洲一区三区| 久久亚区不卡日本| 亚洲v日本v欧美v久久精品| 国产精品99久久久久| 欧美视频精品在线| 国产精品污www在线观看| 三级久久三级久久| 成人黄色av网站在线| 日韩精品资源二区在线| 一区二区三区在线视频观看| 国产成a人亚洲精| 91精品国产免费久久综合| 亚洲免费观看高清完整版在线观看熊| 久久精品国产亚洲a| 欧美日韩三级一区| 最新热久久免费视频| 久草热8精品视频在线观看| 欧美日韩视频在线观看一区二区三区| 国产网红主播福利一区二区| 日本亚洲一区二区| 欧日韩精品视频| 国产精品麻豆欧美日韩ww| 激情久久五月天| 欧美一区二区三区精品| 亚洲一线二线三线久久久| 成人深夜在线观看| 久久人人97超碰com| 免费精品视频最新在线| 欧美肥妇bbw| 亚洲综合色丁香婷婷六月图片| 风间由美一区二区av101 | 蜜桃av噜噜一区| 91麻豆国产福利在线观看| 中文字幕va一区二区三区| 国产高清不卡一区二区| 日韩欧美123| 欧美aaaaaa午夜精品| 欧美精品自拍偷拍动漫精品| 亚洲图片自拍偷拍| 91色乱码一区二区三区| 国产精品久久久久久久蜜臀| 粉嫩一区二区三区性色av| 久久精品一区蜜桃臀影院| 韩国三级在线一区| 欧美成人a视频| 国产一区二区三区在线观看免费| 欧美一级在线视频| 日本色综合中文字幕| 欧美一区二区三区免费在线看| 日韩 欧美一区二区三区| 欧美精品国产精品| 蜜臀av性久久久久蜜臀aⅴ流畅 | 777午夜精品免费视频| 午夜成人在线视频| 制服丝袜中文字幕一区| 裸体健美xxxx欧美裸体表演| 欧美一区午夜精品| 国产一区二区在线电影| 久久久另类综合| www.性欧美| 亚洲黄色免费电影| 欧洲生活片亚洲生活在线观看| 国产不卡在线视频| 国产无遮挡一区二区三区毛片日本| 懂色av中文一区二区三区| 国产精品久久久久久久浪潮网站 | 精品粉嫩超白一线天av| 国产一区二区三区av电影 | 亚洲国产精品传媒在线观看| 成人免费毛片app| 有坂深雪av一区二区精品| 777色狠狠一区二区三区| 国内成人精品2018免费看| 国产精品视频一二| 欧美在线观看一区| 免费成人在线影院| 中文字幕第一页久久| 欧美日韩国产片| 国产一区三区三区| 亚洲蜜桃精久久久久久久| 69堂国产成人免费视频| 国产成人亚洲精品青草天美| 一区二区不卡在线视频 午夜欧美不卡在| 欧美色大人视频| 国产老肥熟一区二区三区| 亚洲色图欧洲色图婷婷| 欧美一区二区三区成人| av日韩在线网站| 人人狠狠综合久久亚洲| 中文字幕中文在线不卡住| 欧美日韩aaa| 从欧美一区二区三区| 偷窥国产亚洲免费视频| 中文字幕国产一区| 4438x亚洲最大成人网| 高清久久久久久| 青青草91视频| 亚洲黄色片在线观看| 欧美精品一区在线观看| 欧美日韩中文国产| 成人黄色免费短视频| 蜜臀精品久久久久久蜜臀 | 日韩欧美在线一区二区三区| 99精品欧美一区二区三区综合在线| 日韩国产欧美视频| 综合色中文字幕| 久久亚洲一区二区三区明星换脸| 精品视频一区二区不卡| 成人黄色一级视频| 国产真实乱偷精品视频免| 午夜欧美2019年伦理 | 精品一区二区三区免费观看| 一区二区三区在线观看动漫 | 樱花影视一区二区|