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

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

?? cpluscore.cpp

?? vxworks的完整的源代碼
?? CPP
字號(hào):
/* cplusCore.cpp - core C++ run-time support *//* Copyright 1995 Wind River Systems, Inc. */#include "copyright_wrs.h"/*modification history--------------------02d,06nov01,sn   removed obsolete vec_new/vec_delete02c,30mar01,sn   fixed to build with diab02b,03mar98,sn   renamed new_handler to __new_handler to conform with the                 GNU new.cc implementation.02a,16jan98,sn   remove new/delete (henceforth provided in                  target/src/cplus/libgcc)01d,19jun95,srh  rename op new/delete intf for g++.01c,19jun95,srh  cleanup picky warnings from g++01b,17jun95,srh  fixed declaration of VOIDFUNCPTR_ARGS01a,19may95,srh  cobbled together from WindC++*//*DESCRIPTIONTODO: Update descriptionThis library provides run-time support and shell utilities that supportthe development of VxWorks applications in C++.  The run-time support canbe broken into three categories:.IP - 4Support for C++ new and delete operators..IP -Support for arrays of C++ objects..IP -Support for initialization and cleanup of static objects..LPShell utilities are provided for:.IP - 4Resolving overloaded C++ function names..IP -Hiding C++ name mangling, with support for terse or completename demangling..IP -Manual or automatic invocation of static constructors and destructors..LPThe usage of cplusLib is more fully described in the.I "WindC++ Gateway User's Guide."*//* Includes */#include "vxWorks.h"#include "sys/types.h"#include "cplusLib.h"#include "hashLib.h"#include "semLib.h"#include "taskLib.h"#include "new"/* Defines *//* Typedefs */typedef void (* VOIDFUNCPTR_ARGS) (void *, int, ...);/* Globals */char __cplusCore_o;#if defined(__GNUG__)extern new_handler __new_handler;#elsestatic void (*__new_handler)() = 0;#endifSEM_ID cplusNewHdlMutex;/* Locals */#if ! defined (__GNUG__)LOCAL ArrayStore_T	 * pArrayStore = 0;#endif/* Forward declarations *//****************************************************************** cplusNewHandlerExists - true if application-specific new-handler exists** NOMANUAL** RETURNS: TRUE if new-handler exists, otherwise FALSE.*/BOOL cplusNewHandlerExists ()    {    semTake (cplusNewHdlMutex, WAIT_FOREVER);    BOOL rval = (__new_handler != 0) ? TRUE : FALSE;    semGive (cplusNewHdlMutex);    return rval;    }/****************************************************************** cplusCallNewHandler - call the allocation exception handler (C++)** This function provides a procedural-interface to the new-handler.  It* can be used by user-defined new operators to call the current* new-handler. This function is specific to VxWorks and may not be* available in other C++ environments.** RETURNS: N/A*/void cplusCallNewHandler ()    {    semTake (cplusNewHdlMutex, WAIT_FOREVER);    if (__new_handler != 0)	{	(*__new_handler) ();	}    semGive (cplusNewHdlMutex);    }/********************************************************************************* cplusTerminate - default final resting place of a unhandled C++ exception** An unhandled exception eventually results in a call to 'terminate',* which is set by the VxWorks startup code to call this function.* Ths default behaviour can be changed using set_terminate. This function* should never be called directly by user code. * * NOMANUAL** RETURNS: No return*/void cplusTerminate (){	cplusLogMsg ("Unhandled C++ exception resulted in call to terminate\n",       0, 0, 0, 0, 0, 0);  taskSuspend (0);}/********************************************************************************* cplusArraysInit - intialize run-time support for arrays*** This routine simply checks to see if the arrayStore is already initialized,* and if it isn't, constructs a new one.** RETURNS: N/A** NOMANUAL*/#if defined (__GNUG__)void cplusArraysInit ()    {    }#elsevoid cplusArraysInit ()    {    if (pArrayStore == 0)	{	pArrayStore = new ArrayStore_T ();	}    }/********************************************************************************* arrHashFunc - array hashing function** This function takes the address of the first element of the array,* throws away the rightmost 4 bits and returns this value, scaled to fit* the number of elements in the hash table.** RETURNS:* Hash value h: 0 <= h < nElems** NOMANUAL*/static int arrHashFunc    (    int		nElems,    HASH_NODE	*pHashNode,    int    )    {    int hash = int ((((ArrayDesc_T *)(pHashNode)) -> pObject)) >> 4;    hash &= nElems-1;    return hash;    }/********************************************************************************* arrHashCmp - array hashing comparator** This routine compares two array descriptors for identity.** RETURNS:* TRUE if descriptors indicate the same array, otherwise FALSE** NOMANUAL*/static BOOL arrHashCmp    (    HASH_NODE	* pMatchNode,    HASH_NODE	* pHashNode,    int    )    {    return (((ArrayDesc_T *)(pMatchNode))->pObject	    ==	    ((ArrayDesc_T *)(pHashNode))->pObject);    }/******************************************************************************** ArrayStore_T :: ArrayStore_T - initialize the ArrayStore** This constructor creates a hash table in which to store the array* descriptors, and a mutex semaphore to guard access to the hash* table.** RETURNS: N/A** NOMANUAL*/ArrayStore_T :: ArrayStore_T ()    {    hashId = hashTblCreate (8,			// log2(size of hash table)			    (FUNCPTR) arrHashCmp,			    (FUNCPTR) arrHashFunc,			    0);    mutexSem = semMCreate (SEM_Q_PRIORITY			   | SEM_DELETE_SAFE			   | SEM_INVERSION_SAFE);    }/******************************************************************************** ArrayStore_T :: ~ArrayStore_T - decommission the ArrayStore** This destructor should not ever be called. It detects the error condition* which arises if the arrayStore is deleted.** RETURNS: N/A** NOMANUAL*/ArrayStore_T :: ~ArrayStore_T ()    {    cplusLogMsg ("run-time support for C++ arrays deleted\n",		 0, 0, 0, 0, 0, 0);    taskSuspend (0);    }/****************************************************************** ArrayStore_T :: insert** This function creates a new array descriptor and adds it to* the arrayStore. Problems are dealt with as for any failure of* a new operator. Memory for the array descriptor is allocated* by this function.** RETURNS: N/A** NOMANUAL*/void ArrayStore_T :: insert    (    void	* pObject,    int		  nElems    )    {    ArrayDesc_T	* pNode = new ArrayDesc_T (pObject, nElems);    semTake (mutexSem, WAIT_FOREVER);    // Cast the ArrayDesc_T pointer before storing in the hash table    if (hashTblPut (hashId, (HASH_NODE *)(pNode)) == ERROR)	{	cplusCallNewHandler ();	}    semGive (mutexSem);    }/******************************************************************* ArrayStore_T :: fetch** This function looks up a descriptor for the array specified by* <pObject>. When found, the descriptor is removed from the hash table* and deleted, then the number of elements is returned. Memory for the* array descriptor is reclaimed by this function.** RETURNS: the number of elements in the specified array, if found,*          otherwise -1.** NOMANUAL*/int ArrayStore_T :: fetch    (    void	* pObject    )    {    int		rval;    HASH_NODE * pNode;    ArrayDesc_T	node (pObject, 0);    semTake (mutexSem, WAIT_FOREVER);    if ((pNode = hashTblFind (hashId, (HASH_NODE *) (&node), 0)) == 0)	{	rval = -1;	}    else	{	// Cast the fetched pointer back to ArrayDesc_T	ArrayDesc_T * ad = (ArrayDesc_T *)(pNode);	rval = ad->nElems;	hashTblRemove (hashId, (HASH_NODE *) pNode);	delete ad;	}    semGive (mutexSem);    return rval;    }#endif // defined (__GNUG__)

?? 快捷鍵說(shuō)明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲女性喷水在线观看一区| 一区二区三区高清在线| 一本色道久久加勒比精品| 亚洲第一搞黄网站| 欧美国产欧美亚州国产日韩mv天天看完整 | 成人激情免费电影网址| 视频一区视频二区中文| 亚洲女人小视频在线观看| 欧美成人精精品一区二区频| 色综合久久久久综合体| 国产毛片精品一区| 日本亚洲视频在线| 亚洲最新视频在线观看| 国产精品你懂的在线| 日韩久久久久久| 欧美视频你懂的| 色综合久久综合网97色综合| 国产麻豆日韩欧美久久| 日韩精品视频网站| 一区二区欧美国产| 中文字幕一区免费在线观看| 久久久亚洲精品一区二区三区| 91精品国产综合久久精品图片| 色天使色偷偷av一区二区| 丰满亚洲少妇av| 国产美女视频91| 久久精品av麻豆的观看方式| 日韩高清在线一区| 午夜精品久久久久久久久| 亚洲精品视频在线看| 国产精品福利在线播放| 久久久久久夜精品精品免费| 欧美成人猛片aaaaaaa| 欧美一区午夜视频在线观看| 欧美天堂亚洲电影院在线播放| 日本福利一区二区| 91丨国产丨九色丨pron| 成人av电影免费在线播放| 成人性色生活片| 国产毛片精品视频| 国产成a人亚洲| 国产福利一区二区三区视频| 久久99精品一区二区三区三区| 蜜桃一区二区三区在线| 日产国产欧美视频一区精品| 亚洲a一区二区| 日韩国产欧美三级| 蜜臀av一区二区在线观看| 麻豆精品一区二区av白丝在线| 免费成人在线观看视频| 久久99久久99精品免视看婷婷| 激情久久久久久久久久久久久久久久| 精品一区二区三区日韩| 欧美性大战xxxxx久久久| 色视频一区二区| 午夜精品久久久久久久| 日韩欧美一级在线播放| 亚洲欧美日韩国产另类专区| 欧美videossexotv100| 精品999在线播放| 国产欧美视频在线观看| 亚洲欧洲性图库| 亚洲午夜在线视频| 麻豆极品一区二区三区| 国产在线视视频有精品| 成人网页在线观看| 在线观看一区二区视频| 欧美欧美午夜aⅴ在线观看| 日韩视频在线你懂得| 精品国产91乱码一区二区三区| 国产视频一区二区在线观看| 中文字幕一区二区三区视频 | 一区二区在线观看免费视频播放| 一区2区3区在线看| 蜜臀av亚洲一区中文字幕| 韩国女主播一区二区三区| 99久久婷婷国产综合精品电影| 欧美无砖砖区免费| 精品乱码亚洲一区二区不卡| 综合分类小说区另类春色亚洲小说欧美| 一区二区三区国产精华| 精品制服美女久久| 99视频一区二区| 日韩午夜电影在线观看| 亚洲天天做日日做天天谢日日欢| 亚洲一区二区五区| 精品在线播放免费| 99亚偷拍自图区亚洲| 91精品国产综合久久精品app| 国产精品毛片久久久久久久| 午夜天堂影视香蕉久久| 粉嫩嫩av羞羞动漫久久久| 欧美日韩美少妇 | 日韩精品免费视频人成| 国产精品99久久久久久久女警| 欧美在线不卡一区| 久久欧美中文字幕| 亚洲3atv精品一区二区三区| 国产suv精品一区二区883| 欧美日韩亚洲国产综合| 日本一区二区成人在线| 看片的网站亚洲| 欧美午夜电影网| 中文字幕一区二| 国产久卡久卡久卡久卡视频精品| 欧美欧美午夜aⅴ在线观看| 中文字幕人成不卡一区| 激情综合亚洲精品| 欧美日韩视频在线一区二区| 国产精品毛片大码女人| 黄色小说综合网站| 7777精品伊人久久久大香线蕉的 | a在线欧美一区| ww亚洲ww在线观看国产| 日韩福利视频导航| 色婷婷av一区| 亚洲欧洲av在线| 国产aⅴ精品一区二区三区色成熟| 欧美日韩极品在线观看一区| 亚洲免费观看高清| 99视频在线精品| 亚洲欧美在线视频| 高清不卡一区二区在线| 欧美成人a在线| 蜜臀av在线播放一区二区三区| 欧美丝袜自拍制服另类| 亚洲综合激情另类小说区| 91亚洲精品一区二区乱码| 欧美激情艳妇裸体舞| 国产福利一区二区三区视频在线 | 精品少妇一区二区三区视频免付费 | 26uuu国产日韩综合| 蜜桃av一区二区| 欧美大片顶级少妇| 日韩高清不卡在线| 欧美伦理影视网| 日韩一区精品字幕| 欧美区在线观看| 日韩电影在线看| 欧美tk—视频vk| 国产精品一区免费视频| 久久综合五月天婷婷伊人| 精品在线一区二区| 国产喂奶挤奶一区二区三区| 国产美女精品人人做人人爽| 国产欧美精品一区| 99久久综合狠狠综合久久| 亚洲视频你懂的| 欧美日韩一级二级三级| 日韩激情在线观看| ww久久中文字幕| 成人免费看视频| 中文字幕亚洲欧美在线不卡| 99r国产精品| 亚洲一区二区偷拍精品| 欧美美女喷水视频| 麻豆极品一区二区三区| 国产日韩欧美一区二区三区乱码| 国产福利一区在线观看| 亚洲天天做日日做天天谢日日欢| 日本韩国一区二区三区视频| 亚洲成人1区2区| 欧美日韩成人在线一区| 韩国理伦片一区二区三区在线播放| xnxx国产精品| 色婷婷av一区二区三区软件| 午夜精品久久久久久久99樱桃| 精品电影一区二区三区| 成人在线视频首页| 亚洲国产中文字幕| 久久中文字幕电影| 99精品国产视频| 日本成人在线不卡视频| 国产日韩欧美不卡在线| 色婷婷一区二区三区四区| 日韩精彩视频在线观看| 久久久电影一区二区三区| 91丨porny丨户外露出| 日本中文在线一区| 国产精品三级视频| 欧美精品久久99| 国产高清不卡一区二区| 亚洲成va人在线观看| 久久久国产综合精品女国产盗摄| 欧美中文字幕久久| 国产精品资源网| 午夜欧美电影在线观看| 中文字幕免费不卡| 欧美一区二区在线看| 成人黄色小视频| 久久精品久久综合| 亚洲女子a中天字幕| www精品美女久久久tv| 欧美午夜理伦三级在线观看| 国产成人亚洲综合a∨猫咪| 亚洲综合另类小说| 欧美国产亚洲另类动漫| 日韩午夜电影av| 日本乱人伦一区| 国产激情一区二区三区四区|