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

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? dsym.h

?? vdhl and matlab, i think it good for you
?? H
字號:
#ifndef DSYM_H#define DSYM_H/** \file   Classes derived from sym and sym_scoped   The name dsym is a play on calculus.  In calculus dx is a   derivitive in terms of x.  dsym is a derivitive in terms of sym. *//*===============================<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 "sym.h"#include "type.h"#include "const.h"#include "symtable.h"#include "typetable.h"#ifndef NULL#define NULL 0#endif/**   Class to represent named constants and enumerations   See const.h for a definition of the const and pConst   types. */class sym_const : public sym {private:    pConst konst;public:    sym_const(STRING n) : sym( n )    { 	konst = NULL;     }    sym_const()    {	konst = NULL;    }    const uint get_sy_kind(void) { return sy_const; }    void set_const( pConst c )    {	konst = c;    }    const pConst get_const(void)    {	return konst;    }}; // sym_const/**    Derived symbol class for named types.    Base class for typed objects: identifiers, named constants, functions    The type associated with the symbol is allocated separately.  This    type is used to initialize the type field of this class. */class sym_type : public sym {private:    pType ty;public:    sym_type(STRING n ) : sym( n )    {	ty = NULL;    } // sym_type constructor    sym_type()    {	ty = NULL;    }    const uint get_sy_kind(void) { return sy_type; }    const pType get_ty_type(void)     { 	return ty;     } // get_type    void set_ty_type( pType t )     { 	assert( t != NULL );	ty = t;    } // set_type}; // sym_typeenum { sy_bad_alloc,       sy_static_id,       sy_frame_id      };enum { sy_bad_ident_type,       sy_signal,       sy_variable };/**   Class for variable identifiers.  Note that this does not include   constants (they will be sym_const objects).   The properties of identifiers are:<ul><li><p>           allocation</p><p>       Is the identifier allocated staticly or in the frame.  Signals       and variables declared in processes are allocated in static data.       Variables in procedures and functions are frame allocated.</p></li><li><p>       Variable kind</p><p>       Is the identifier a signal or a variable.</p></li></ul>     Note that there is no variable offset associated with the symbol,     since this is generated by the code generation phase.  Symbols in     the p-code generated by the VHDL elaborator are referenced by name.     This is also true for frame allocated variables.     Each variable has a declaration in the p-code generated for a     process.  For frame allocated variables this declaration must     identify the variable as a frame variable.  The code generator     can then build up the frame frame size and offsets within a     frame.  This fully decouples p-code generation from any machine     dependent code generation. */class sym_ident : public sym_scoped {private:    pType ty;    uint id_alloc : 3,    // sy_static_id, sy_frame_id, ...         id_kind  : 3,    // sy_signal, sy_variable	 unused   : 26; public:    sym_ident(STRING n) : sym_scoped( n )    {	ty = NULL;	id_alloc = sy_bad_alloc;	id_kind = sy_bad_ident_type;    }    sym_ident()    {	ty = NULL;	id_alloc = sy_bad_alloc;	id_kind = sy_bad_ident_type;    }    const uint get_sy_kind(void) { return sy_ident; }        void set_alloc( uint alloc )    {	id_alloc = alloc;    } // set_offset    const uint get_alloc(void)    {	return id_alloc;    }    void set_id_kind( uint kind )    {	id_kind = kind;    }    const uint get_id_kind(void)    {	return id_kind;    }    void set_id_type( pType t )     { 	assert( t != NULL );	ty = t;    } // set_type    const pType get_id_type(void)     { 	return ty;     } // get_type}; // sym_ident/**   This class is used for a named item that has scope information (for   example, a procedure or a function).  These objects also exist in a   scope, so the object is derived from sym_scoped.  However, for some   scope objects, like components (an elaborated entity architecture   pair) there is no parent scope. */class sym_scope : public sym_scoped {private:    sym *find_in_scope( sym *pSym, STRING sym_name );private:  /** Don't allow copying of sym_scope objects via copy constructor */    sym_scope( const sym_scope &s )    {	assert( FALSE );    }protected:    symtable symtab;    typetable typtab;public:    //    // constructors    //     sym_scope(STRING n ) : sym_scoped( n )    {    }    sym_scope()    {    }    void dealloc(void)    {	symtab.dealloc();	typtab.~typetable();    }    //upwards lookup starting from 'this' scope    sym *LookupFromScope(STRING s);    sym *LookupFromScope(const char *pChar )    {	STRING local_str;	local_str.SetText( pChar );	return LookupFromScope( local_str );    }    symtable *get_symtab(void)    {	return &symtab;    }    typetable *get_typtab(void)    {	return &typtab;    }  /** Return true when the symbol has associated scope (e.g.,       a symbol table.  */    Boolean has_scope()    {	return TRUE;    }};  // sym_scope/**    This class represents VHDL procedures and functions.  This    class is derived from sym_scope, so this is an object that    contains local scope (e.g., a local symbol table).  If    the type is NULL, its a procedure.    Note that transformation turns functions into procedures.  After    transformation, the function results becomes an argument (by    convention, usually the first argument). */class sym_subprog : public sym_scope {private:  pType ty;  NODE *tree;public:  FIFO_LIST<sym_ident *> arg_list;public:    sym_subprog(STRING n ) : sym_scope( n )    {	tree = NULL;	ty = NULL;    }    sym_subprog()    {	tree = NULL;	ty = NULL;    }    const uint get_sy_kind(void) { return sy_subprog; }    void set_statement( NODE *s )    {	tree = s;    }    const NODE *get_statement(void)    {	return tree;    }    void set_func_type( pType t )    {	ty = t;    }    const pType get_func_type(void)    {	return ty;    }};   // sym_subprog/**   In VHDL (as in Verilog), processes are strange things.  A process   exists in its parent scope (a component or module) and it may have   local variables and functions (e.g., it has a local symbol table).   In this sense it is similar to a subprogram.  However, unlike a   subprogram a process does not have to have a name (although it may   have a name associated with it for readability).  So a process is   not a symbol and can't be looked up in the symbol table.   For simplicities sake the process class is an alias of the   sym_scope class, which provides a symbol table and a parent scope   pointer.   A process is allocated via the local symbol table, but it is   not entered in the symbol table.  This is done so that there   is a uniform method for allocating all symbol derived objects. */class sym_process : public sym_scope {public:    LIST<sym_ident *> active_list;  // process activation listpublic:    sym_process(STRING n ) : sym_scope( n )    {    }    sym_process()    {    }    const uint get_sy_kind(void) { return sy_process; }};/**   A component is a bound entity architecture pair.  As    a result, components only exist after elaboration when   this binding is defined.   After p-code and "import" information is generated for   a component the statement trees and VHDL symbol information   can be discarded.  As a result, a component has its own   associated memory pool, in addition to having its own symbol   table (which it inherits from the sym_scope class).   As with all symbols, the sym_component object is usually   dynamically allocated.  Since the copy constructor is    not allowed for a pool, the class must be explicitly    initialized by calling init(). */class sym_component : public sym_scope {private:    pool mem;  // memory pool for this componentprivate:    // No copy constructor allowed    sym_component( const sym_component &c )    {	assert( FALSE );    }    void proc_list_dealloc(void);private:    LIST<sym *> proc_list;  // list of processes    LIST<NODE *> sigass_list;       // list of signal assignmentspublic:    sym_component( STRING n ) : sym_scope( n )    {	init();    }    sym_component()    {	init();    }    ~sym_component()    {	dealloc();    }    const uint get_sy_kind(void) { return sy_component; }    void init(void)    {      /** get a new memory pool */	mem.new_pool();   	/** Set the memory allocation pools for the symbol and	    type tables. */	symtab.set_pool( &mem );	typtab.set_pool( &mem );	    }    void dealloc(void)    {      /** deallocate symbol and type table from base class */        sym_scope::dealloc();  	proc_list_dealloc();	sigass_list.dealloc();	/** release the memory pool */	mem.delete_pool();      }  /** Allocate memory from the pool that is local to the       component.  */    void *GetMem( uint num_bytes )    {	void *pMem;	pMem = mem.GetMem( num_bytes );	return pMem;    }    LIST<sym *> *get_proc_list(void)    {	return &proc_list;    }    LIST<NODE *> *get_sigass_list(void)    {	return &sigass_list;    }}; // sym_component#endif

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
久久久久久久久久电影| 一区二区三区中文在线观看| 一本到不卡免费一区二区| 免费看黄色91| 亚洲免费观看高清| 久久色在线观看| 欧美久久久久久久久| 成人激情文学综合网| 青草av.久久免费一区| 亚洲色图自拍偷拍美腿丝袜制服诱惑麻豆| 欧美高清一级片在线| 91一区一区三区| 国产综合成人久久大片91| 婷婷夜色潮精品综合在线| 伊人一区二区三区| 国产精品二三区| 中文幕一区二区三区久久蜜桃| 欧美久久一区二区| 色婷婷香蕉在线一区二区| 成人一区二区在线观看| 精品无人码麻豆乱码1区2区 | 欧美日韩午夜在线视频| 成人激情小说网站| 国产精品一区久久久久| 免费成人你懂的| 亚洲成人av一区| 亚洲午夜三级在线| 亚洲精品视频自拍| 亚洲精品大片www| 中文字幕欧美一| 国产偷v国产偷v亚洲高清| 日韩欧美国产午夜精品| 91精品国产福利在线观看| 欧美电影在哪看比较好| 欧美情侣在线播放| 欧美美女黄视频| 在线电影国产精品| 欧美一区二区在线免费观看| 欧美精品视频www在线观看| 欧美色图免费看| 欧美日韩日日摸| 欧美精品自拍偷拍动漫精品| 欧美精品九九99久久| 欧美日韩国产小视频在线观看| 欧美性猛交xxxxxx富婆| 欧美少妇性性性| 欧美久久久久久久久久| 日韩视频在线永久播放| 精品日韩在线一区| 久久久不卡网国产精品一区| 国产日产亚洲精品系列| 国产精品久久久久久亚洲伦| 亚洲欧洲精品一区二区三区不卡| 日韩毛片在线免费观看| 亚洲国产一二三| 美女一区二区在线观看| 国产成人亚洲精品青草天美| 不卡在线观看av| 欧美在线观看视频一区二区 | 欧美一区二区久久久| 日韩久久久精品| 中文字幕欧美区| 一区二区三区色| 视频在线观看一区二区三区| 精品一区二区三区欧美| 成人午夜av影视| 欧美日韩在线播放| 精品少妇一区二区三区在线播放| 国产偷国产偷精品高清尤物 | 视频一区欧美日韩| 精品一区二区国语对白| www.性欧美| 制服丝袜激情欧洲亚洲| 欧美精品一区二区三| 国产精品欧美一级免费| 亚洲精品国产视频| 免费观看一级特黄欧美大片| 成人动漫一区二区三区| 欧美体内she精视频| 久久在线观看免费| 1区2区3区精品视频| 日日摸夜夜添夜夜添国产精品| 国产精品99久久久久久久vr| 色婷婷综合在线| 欧美电视剧在线观看完整版| 国产精品人成在线观看免费| 秋霞午夜av一区二区三区| 福利电影一区二区| 欧美高清视频一二三区| 国产精品久久影院| 美女被吸乳得到大胸91| 色综合久久六月婷婷中文字幕| 日韩精品一区二区三区四区视频| 亚洲欧洲日本在线| 国产一区二区看久久| 精品视频在线免费观看| 中文字幕一区二区三区视频| 蜜臀av性久久久久蜜臀aⅴ流畅 | 美国欧美日韩国产在线播放| 91亚洲精品久久久蜜桃| 2023国产精品| 日韩综合一区二区| 色综合久久天天| 欧美激情一区二区三区| 蜜桃精品在线观看| 欧美日韩美女一区二区| 亚洲欧美日韩综合aⅴ视频| 国产精品影视在线观看| 欧美一区二区三区男人的天堂 | 蜜桃一区二区三区四区| 欧美怡红院视频| 国产精品成人免费| 国产精品一区二区视频| 91精品国产丝袜白色高跟鞋| 亚洲妇女屁股眼交7| 欧洲一区二区av| 亚洲视频一区二区在线| 不卡在线视频中文字幕| 国产日韩欧美电影| 久久99国产精品久久99果冻传媒 | 中文字幕 久热精品 视频在线| 日本不卡123| 欧美日韩成人综合天天影院| 亚洲品质自拍视频网站| 不卡一区二区在线| 国产精品视频一二| 国产91精品精华液一区二区三区| 日韩一区二区三区高清免费看看| 亚洲高清视频在线| 欧美日韩综合在线| 亚洲国产日韩a在线播放| 91久久免费观看| 亚洲精品国久久99热| 色欧美片视频在线观看| 一区二区视频在线| 欧美视频在线一区二区三区| 一卡二卡三卡日韩欧美| 欧美揉bbbbb揉bbbbb| 午夜精品福利一区二区三区蜜桃| 欧美日韩欧美一区二区| 无码av免费一区二区三区试看| 欧美乱妇23p| 蜜桃精品视频在线| 久久久久久免费| 成人午夜碰碰视频| 综合分类小说区另类春色亚洲小说欧美 | 欧美一区二区三区白人| 麻豆一区二区三区| 久久综合九色综合欧美98| 激情六月婷婷综合| 国产亚洲欧美一区在线观看| 成人晚上爱看视频| 一区二区三区自拍| 欧美电影在线免费观看| 国内精品写真在线观看| 欧美激情中文字幕一区二区| 91免费看片在线观看| 亚洲国产综合91精品麻豆| 91精品婷婷国产综合久久竹菊| 国内精品嫩模私拍在线| 国产精品天天摸av网| 日本福利一区二区| 蜜桃视频一区二区| 国产精品视频观看| 在线日韩av片| 国产一区二区成人久久免费影院| 中文字幕制服丝袜成人av| 欧美在线观看禁18| 国产精品综合一区二区| 亚洲精品网站在线观看| 日韩色在线观看| 成人黄色在线视频| 亚洲成av人片在www色猫咪| 久久综合丝袜日本网| 91亚洲精品久久久蜜桃网站| 日本sm残虐另类| 国产精品久久久久久久裸模| 91.xcao| 成人综合在线视频| 亚洲第一福利视频在线| 久久精品一区八戒影视| 欧美午夜精品一区二区三区| 国产一区二区三区最好精华液| 亚洲欧美激情插| 精品国产一区二区三区忘忧草 | 波多野结衣中文一区| 日本成人中文字幕| 自拍av一区二区三区| 日韩免费一区二区| 91在线视频18| 国产一区二区久久| 日韩精品亚洲专区| 亚洲区小说区图片区qvod| 久久综合狠狠综合久久综合88| 在线免费一区三区| 国产成人在线视频网址| 奇米精品一区二区三区四区| 亚洲天堂精品在线观看| 久久综合九色综合97婷婷女人| 欧美亚洲动漫制服丝袜|