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

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

?? type.h

?? vdhl and matlab, i think it good for you
?? H
字號:
#ifndef TYPE_H#define TYPE_H/*===============================<o>=====================================Copyright 1996, 1997, 2004 Ian Kaplan, Bear Products International,www.bearcave.com.All Rights ReservedYou may use this software in software components for which you donot collect money (e.g., non-commercial software).  All commercialuse is reserved.===============================<o>=====================================*/#include "stdtypes.h"#include "fifo_list.h"#include "typedefs.h"#include "str.h"#include "pools.h"enum { bad_type,       ty_time,     // special 64 bit range for TIME variables (QT hack)       ty_range,    // includes INTEGER, enumerations, CHAR, etc...       ty_real,     // 32-bit floating point value       ty_array,       ty_record,       ty_file };/**   Represent VHDL types.  VHDL types come in two forms: named   and unnamed.  A named type has the form<pre>       type short_range is range 0..15;</pre>   Named types are entered into the symbol table like any other   type.   An unnamed type is created in a variable declartion.  For example,<pre>       variable short_val : array short_range of BIT;</pre>   A named type is simply a symbol that points to an unnamed type.   Unnamed types are stored in an unnamed type pool.  Variables   that share the same named type (e.g., INTEGER or NATURAL) will   point to the same type in the type pool.  It should also be   possible for two variables, declared with the same nunamed type   to share the same type, but this is not done currently.  For   example, the declarations for high_word and low_word could   share the same type.<pre>      variable high_word : array (0 to 31) of BIT;      variable low_word  : array (0 to 31) of BIT;</pre><h4>   Memory Allocation</h4>   New for symbols is only called from the symbol table.  New for   types is only called from the type table.  If new compilers are   not available, this localized code will have to be modified. */class type {private:  /** if its an array, this width is the elem width */    uint width;public:    type(void)    {	width = 0;    }    //    // Overloaded new    //    void *operator new( unsigned int num_bytes )    {	assert( FALSE );	return NULL;    }    void *operator new( unsigned int num_bytes, pool *mem_pool )    {	return mem_pool->GetMem( num_bytes );    }    // Memory is recovered by deleting the memory pool.  So delete    // should do nothing.    void operator delete( void *addr ) {/* do nothing */}    const uint get_width(void)     { 	return width;     } // get_width    void set_width( uint w )       { 	width = w;     } // set_width    //    // Virtual functions common to all classes    //    virtual const uint get_ty_kind(void)    {	return bad_type;    }    //    // Virtual functions for derived classes    //    // -- type_time subclass    //    virtual void set_unit(uint unit )    {	assert( FALSE );    }    virtual uint get_unit(void)    {	assert( FALSE );	return 0;    }    //    // -- type_range subclass    //    virtual void set_lhs( int l )       { 	assert( FALSE );    }    virtual const int get_lhs(void)     { 	assert( FALSE );	return 0;     }    virtual void set_rhs( int r )       { 	assert( FALSE );    }    const int get_rhs(void)     { 	assert( FALSE );	return 0;     }    virtual void set_dir( uint dir )     { 	assert( FALSE );    }    virtual const uint get_dir(void)     { 	assert( FALSE );	return 0;     }    virtual void set_range( int l, int r, uint dir )    {	assert( FALSE );    }    virtual void set_box(void)       { 	assert( FALSE );    }    virtual void unset_box(void)     { 	assert( FALSE );    }    virtual const Boolean is_box(void)     { 	assert( FALSE );	return FALSE;     }    //    // -- type_array subclass    //    virtual const uchar get_num_dims(void)     { 	assert( FALSE );	return 0;     }    virtual void set_num_dims( uint ndim )     { 	assert( FALSE );    }    virtual const uint get_array_size(void)     {	assert( FALSE );	return 0;    }    virtual void set_array_size( uint s )    {	assert( FALSE );    }    virtual const pTypeRange get_array_range(void)     {	assert( FALSE );	return NULL;    }    virtual void set_array_range( pTypeRange r )    {	assert( FALSE );    }    virtual const pType get_array_base_type(void)    {	assert( FALSE );	return NULL;    }    virtual void set_array_base_type( pType tBase )    {	assert( FALSE );    }    //    // -- type_record subclass    //    virtual void dealloc()    {	assert( FALSE );    }    virtual const uint get_rec_size(void)     { 	assert( FALSE );	return 0;    }    virtual void put_rec_size( uint s )     {	assert( FALSE );    }        virtual pSym find_elem( STRING name )     {	assert( FALSE );	return NULL;    }    virtual void add_elem( pSym sym )    {	assert( FALSE );    }    //    // -- type_file subclass    //    virtual const pType get_file_base_type(void)    {	assert( FALSE );	return NULL;    } // get_base_type    virtual void set_file_base_type( pType tBase )    {	assert( FALSE );    } // set_base_type}; // typeenum { time_bad_time,       time_fs,       time_ps,       time_ns,       time_us,       time_ms,       time_sec,       time_min,       time_hr      };       /**   Special type for time.  Time is always 64-bits   and, as a result, is outside of what can be    represented by a standard range. */class type_time : public type {private:    uint time_unit;  // time_fs .. time_hrpublic:    type_time(uint unit = time_bad_time ) : type()    {	time_unit = unit;    }        void set_unit(uint unit )    {	time_unit = unit;    }    uint get_unit(void)    {	return time_unit;    }    const uint get_ty_kind(void)    {	return ty_time;    }}; // type_timeenum { bad_range_dir,       range_to,       range_downto };/**   Range types are limited to a complete range that can fit in   32-bits.  (e.g., 0..(2^32)-1 or -(2^31) .. (02^31)-1.  This cannot   represent ranges like TIME (defined in the standard library).   The TIME range requires 64 bits (e.g., the range of time is 0..2^60).   A special type is provided for this range (we'll see if this    special type was a bad idea or not). */class type_range : public type {private:  /** left hand side of the range */    int lhs;  /** right hand side of range */    int rhs;                    uint direction : 2,     // to/downto	 unconstrained : 1, // array bounds are <>, sometimes called a "box"	 unused : 29;public:    type_range() : type()    {	lhs = 0;	rhs = 0;	direction = bad_range_dir;	unconstrained = FALSE;    }    void set_lhs( int l )       { 	lhs = l;     }    const int get_lhs(void)     { 	return lhs;     }    void set_rhs( int r )       { 	rhs = r;     }    const int get_rhs(void)     { 	return rhs;     }    void set_dir( uint dir )     { 	direction = dir;     }    const uint get_dir(void)     { 	return direction;     }    void set_range( int l, int r, uint dir )    {	set_lhs( l );	set_rhs( r );	set_dir( dir );    }    void set_box(void)       { 	unconstrained = TRUE;     }    void unset_box(void)     { 	unconstrained = FALSE;     }    const Boolean is_box(void)     { 	return unconstrained;     }    const uint get_ty_kind(void)    {	return ty_range;    }};  // type_rangeclass type_real : public type {public:    type_real() : type() {}    const uint get_ty_kind(void)    {	return ty_real;    }}; // type_real/**   VHDL uses the concept of "array of type".  A multi-dimensional   array is an "array of array".  As a result, a multi-dimensional   array is a recursive data structure.  The current "top" represents   the current highest dimension.   A note on array indexes:   If array A has three dimension, it will be index by A(k, j, i).   Incrementing "i" will reference sequential array elements.  So,   assuming that all bounds start at zero, the index expression will    be<pre>      index = i + ((j  + (k * size_dim2)) * size_dim2)</pre>   ?? Should the "delta" from zero also be included here, to aid      in generating code for index expressions. ?? */class type_array : public type {private:    uchar num_dims;        // number of array dimensions, at this point (no more than 255)    uint size;             // total size of array, in 32-bit words, at this point    pTypeRange range;      // range for this dimension    pType base_type;       // pointer to the array base typepublic:    type_array() : type()    {	num_dims = 0;	size = 0;	range = NULL;	base_type = NULL;    } // type_array constructor    const uchar get_num_dims(void)     { 	return num_dims;     }    void set_num_dims( uint ndim )     { 	num_dims = (uchar)ndim;     }    const uint get_array_size(void)     {	return size;    }    void set_array__ize( uint s )    {	size = s;    }    const pTypeRange get_array_range(void)     {	return range;    }    void set_array_range( pTypeRange r )    {	range = r;    }    const pType get_array_base_type(void)    {	return base_type;    }    void set_array_base_type( pType tBase )    {	base_type = tBase;    }    const uint get_ty_kind(void)    {	return ty_array;    }};  // type_array/**   Record elements are ordered the way they appear in the   record.  Note that this means that when the type is   created, the elements must be added in correct order.   The record elements are represented by symbol objects.   Note, however, that these objects are _not_ entered   in the symbol table.  A record element can only be    accessed via its base base, so these names exist   only in the scope of the base name. */class type_record : public type {private:    uint size;        // size in 32-bit words    FIFO_LIST<pSym> elem_list;public:    type_record() : type()    {	size = 0;    } // type_record constructor    // deallocate the element list    void dealloc()    {	// deallocate the list	elem_list.dealloc();    }    const uint get_rec_size(void)     { 	return size;     }    void put_rec_size( uint s )     {	size = s;    }        pSym find_elem( STRING name );    // elements must be added in the correct order.    void add_elem( pSym sym )    {	elem_list.add( sym );    }    const uint get_ty_kind(void)    {	return ty_record;    }}; // type_recordclass type_file : public type {private:    pType base_type;        // other file status information goes here    public:    type_file() : type()    {	base_type = NULL;    }  // type_file    const pType get_file_base_type(void)    {	return base_type;    } // get_base_type    void set_file_base_type( pType tBase )    {	base_type = tBase;    } // set_base_type    const uint get_ty_kind(void)    {	return ty_file;    }};  // type_file#endif

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产精品久久久久久久久图文区 | 久久久久久久久久久99999| 亚洲bt欧美bt精品| 欧美日韩中文字幕精品| 一区二区三区日韩精品视频| 精品婷婷伊人一区三区三| 亚洲va国产天堂va久久en| 91精品一区二区三区久久久久久| 日韩电影在线一区二区三区| 日韩女同互慰一区二区| 国产成人亚洲综合a∨猫咪 | 亚洲桃色在线一区| 欧洲视频一区二区| 日本午夜精品视频在线观看| 久久久久久99精品| 91在线云播放| 午夜激情一区二区| 精品国产乱码久久久久久久久| 风流少妇一区二区| 亚洲自拍偷拍麻豆| 精品国产不卡一区二区三区| 东方欧美亚洲色图在线| 亚洲在线中文字幕| 欧美一级电影网站| 成人性生交大片免费| 一区二区三区国产| 久久日韩精品一区二区五区| 91蜜桃传媒精品久久久一区二区| 亚洲福利一区二区三区| 久久久不卡影院| 精品视频123区在线观看| 精品一区二区三区在线播放视频| 国产精品国产三级国产aⅴ原创 | 99精品视频在线播放观看| 亚洲国产另类精品专区| 久久色在线观看| 欧美人与性动xxxx| 成人av动漫在线| 免费一级片91| 亚洲欧美另类久久久精品| 精品国产一区二区三区四区四| 99精品久久99久久久久| 日韩av不卡一区二区| 1000精品久久久久久久久| 日韩一级完整毛片| 色噜噜偷拍精品综合在线| 久久99国内精品| 丝袜美腿高跟呻吟高潮一区| 国产精品人成在线观看免费| 精品亚洲免费视频| 青青草国产精品97视觉盛宴| 欧美另类高清zo欧美| 最新不卡av在线| 成人97人人超碰人人99| 91精品一区二区三区在线观看| 中文字幕欧美日本乱码一线二线| 国产精品综合二区| 国产日产欧美一区二区三区| 精品视频免费在线| 99免费精品在线观看| 国产欧美日韩综合| 日韩一区二区三区av| www.欧美亚洲| 国产一区二区三区四区在线观看 | 91福利国产成人精品照片| 国产精品456| 久久 天天综合| 亚洲成a人v欧美综合天堂下载| 中文字幕人成不卡一区| 国产午夜亚洲精品午夜鲁丝片| 制服丝袜亚洲精品中文字幕| 欧美性色黄大片| 欧美图区在线视频| 欧美做爰猛烈大尺度电影无法无天| 99精品视频在线播放观看| 成人禁用看黄a在线| 成人黄色国产精品网站大全在线免费观看 | 国产精品乱子久久久久| 久久久无码精品亚洲日韩按摩| 欧美va亚洲va香蕉在线| 日韩欧美激情四射| 精品久久久久一区| 精品久久久久一区| 国产色综合久久| 亚洲国产成人午夜在线一区| 中文字幕乱码日本亚洲一区二区| 亚洲国产精品成人综合色在线婷婷| 久久久久久久综合日本| 国产日韩欧美电影| 中文字幕一区二区三区在线不卡| 国产精品久久久久久福利一牛影视 | 国产成人综合在线播放| 国产麻豆精品95视频| 狠狠色伊人亚洲综合成人| 国产传媒久久文化传媒| 97久久精品人人做人人爽50路| 99久久免费国产| 精品视频一区三区九区| 欧美精品在线观看播放| 日韩免费视频一区| 国产精品久久一级| 亚洲综合色成人| 美女视频网站久久| 国产成人av电影| 欧美亚洲动漫精品| 成人少妇影院yyyy| 国产一区激情在线| 久久免费看少妇高潮| 亚洲手机成人高清视频| 欧美国产精品劲爆| 国产精品成人午夜| 天天亚洲美女在线视频| 亚洲成人av免费| 精品一区二区三区在线观看| 国产成人在线影院| 色94色欧美sute亚洲线路一ni| 欧美美女bb生活片| 亚洲激情网站免费观看| 精品国产91乱码一区二区三区 | 久久久综合网站| 亚洲欧美日韩国产手机在线| 天堂在线一区二区| 成人视屏免费看| 91精品国产乱码| 国产精品欧美一区二区三区| 日韩在线a电影| 99久久综合国产精品| 欧美一卡二卡在线| 亚洲色图欧美在线| 国产老妇另类xxxxx| 欧美午夜电影网| 欧美国产精品v| 久久99精品国产麻豆不卡| 在线欧美日韩国产| 国产精品免费久久久久| 男女性色大片免费观看一区二区| www.日韩av| 久久久久9999亚洲精品| 亚洲成人精品影院| 国产精品主播直播| 欧美亚洲免费在线一区| 亚洲精品在线电影| 性做久久久久久| 一本一道久久a久久精品| 久久久影视传媒| 欧美精品一区二区三区一线天视频| 精品日韩一区二区三区| 中国色在线观看另类| 国产精品久久久久久久久快鸭| 在线成人av影院| 国产在线看一区| 欧美激情在线一区二区三区| 免费观看在线综合| 亚洲最大色网站| 日韩—二三区免费观看av| 亚洲18女电影在线观看| 欧美一区二区三区系列电影| 精品夜夜嗨av一区二区三区| 日韩一区二区在线免费观看| 六月丁香综合在线视频| 8v天堂国产在线一区二区| 国产老妇另类xxxxx| 亚洲欧美日韩国产一区二区三区| 欧美亚洲一区二区在线| 国产一区二区美女诱惑| 夜夜夜精品看看| 亚洲国产精品t66y| 石原莉奈在线亚洲二区| 亚洲视频一二三| 欧美成人激情免费网| 色菇凉天天综合网| 91免费视频网| 在线视频欧美精品| 91无套直看片红桃| 国产一区二区影院| 亚洲妇熟xx妇色黄| 亚洲免费观看高清完整版在线观看 | 国产一区二区三区综合| 欧美成人精品福利| 欧美亚洲国产一区二区三区| 男人的j进女人的j一区| 亚洲欧洲精品一区二区三区不卡| 在线观看三级视频欧美| 蜜桃视频一区二区三区 | 日韩欧美美女一区二区三区| 国产精品888| 国产综合色精品一区二区三区| 亚洲色图欧美激情| 国产精品视频一区二区三区不卡| 精品国产免费久久| 久久精品视频网| 久久久久久久久久久久久夜| 精品播放一区二区| 久久一二三国产| 国产欧美一区二区在线观看| 久久久99精品免费观看| 国产精品毛片无遮挡高清| 中文字幕日韩av资源站| 激情综合五月天| 91福利视频久久久久|