⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 fxulist.c

📁 主要进行大规模的电路综合
💻 C
字号:
/**CFile****************************************************************  FileName    [fxuList.c]  PackageName [MVSIS 2.0: Multi-valued logic synthesis system.]  Synopsis    [Operations on lists.]  Author      [MVSIS Group]    Affiliation [UC Berkeley]  Date        [Ver. 1.0. Started - February 1, 2003.]  Revision    [$Id: fxuList.c,v 1.6 2003/05/27 23:15:51 alanmi Exp $]***********************************************************************/#include "fxuInt.h"///////////////////////////////////////////////////////////////////////////                        DECLARATIONS                              //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////                     FUNCTION DEFITIONS                           ///////////////////////////////////////////////////////////////////////////// matrix -> var/**Function*************************************************************  Synopsis    []  Description []                 SideEffects []  SeeAlso     []***********************************************************************/void Fxu_ListMatrixAddVariable( Fxu_Matrix * p, Fxu_Var * pLink ) {	Fxu_ListVar * pList = &p->lVars;	if ( pList->pHead == NULL )	{		pList->pHead = pLink;		pList->pTail = pLink;		pLink->pPrev = NULL;		pLink->pNext = NULL;	}	else	{		pLink->pNext = NULL;		pList->pTail->pNext = pLink;		pLink->pPrev = pList->pTail;		pList->pTail = pLink;	}	pList->nItems++;}/**Function*************************************************************  Synopsis    []  Description []                 SideEffects []  SeeAlso     []***********************************************************************/void Fxu_ListMatrixDelVariable( Fxu_Matrix * p, Fxu_Var * pLink ){	Fxu_ListVar * pList = &p->lVars;	if ( pList->pHead == pLink )		 pList->pHead = pLink->pNext;	if ( pList->pTail == pLink )		 pList->pTail = pLink->pPrev;	if ( pLink->pPrev )		 pLink->pPrev->pNext = pLink->pNext;	if ( pLink->pNext )		 pLink->pNext->pPrev = pLink->pPrev;	pList->nItems--;}// matrix -> cube/**Function*************************************************************  Synopsis    []  Description []                 SideEffects []  SeeAlso     []***********************************************************************/void Fxu_ListMatrixAddCube( Fxu_Matrix * p, Fxu_Cube * pLink ){	Fxu_ListCube * pList = &p->lCubes;	if ( pList->pHead == NULL )	{		pList->pHead = pLink;		pList->pTail = pLink;		pLink->pPrev = NULL;		pLink->pNext = NULL;	}	else	{		pLink->pNext = NULL;		pList->pTail->pNext = pLink;		pLink->pPrev = pList->pTail;		pList->pTail = pLink;	}	pList->nItems++;}/**Function*************************************************************  Synopsis    []  Description []                 SideEffects []  SeeAlso     []***********************************************************************/void Fxu_ListMatrixDelCube( Fxu_Matrix * p, Fxu_Cube * pLink ){	Fxu_ListCube * pList = &p->lCubes;	if ( pList->pHead == pLink )		 pList->pHead = pLink->pNext;	if ( pList->pTail == pLink )		 pList->pTail = pLink->pPrev;	if ( pLink->pPrev )		 pLink->pPrev->pNext = pLink->pNext;	if ( pLink->pNext )		 pLink->pNext->pPrev = pLink->pPrev;	pList->nItems--;}// matrix -> single/**Function*************************************************************  Synopsis    []  Description []                 SideEffects []  SeeAlso     []***********************************************************************/void Fxu_ListMatrixAddSingle( Fxu_Matrix * p, Fxu_Single * pLink ){	Fxu_ListSingle * pList = &p->lSingles;	if ( pList->pHead == NULL )	{		pList->pHead = pLink;		pList->pTail = pLink;		pLink->pPrev = NULL;		pLink->pNext = NULL;	}	else	{		pLink->pNext = NULL;		pList->pTail->pNext = pLink;		pLink->pPrev = pList->pTail;		pList->pTail = pLink;	}	pList->nItems++;}/**Function*************************************************************  Synopsis    []  Description []                 SideEffects []  SeeAlso     []***********************************************************************/void Fxu_ListMatrixDelSingle( Fxu_Matrix * p, Fxu_Single * pLink ){	Fxu_ListSingle * pList = &p->lSingles;	if ( pList->pHead == pLink )		 pList->pHead = pLink->pNext;	if ( pList->pTail == pLink )		 pList->pTail = pLink->pPrev;	if ( pLink->pPrev )		 pLink->pPrev->pNext = pLink->pNext;	if ( pLink->pNext )		 pLink->pNext->pPrev = pLink->pPrev;	pList->nItems--;}// table -> divisor/**Function*************************************************************  Synopsis    []  Description []                 SideEffects []  SeeAlso     []***********************************************************************/void Fxu_ListTableAddDivisor( Fxu_Matrix * p, Fxu_Double * pLink ) {	Fxu_ListDouble * pList = &(p->pTable[pLink->Key]);	if ( pList->pHead == NULL )	{		pList->pHead = pLink;		pList->pTail = pLink;		pLink->pPrev = NULL;		pLink->pNext = NULL;	}	else	{		pLink->pNext = NULL;		pList->pTail->pNext = pLink;		pLink->pPrev = pList->pTail;		pList->pTail = pLink;	}	pList->nItems++;    p->nDivs++;}/**Function*************************************************************  Synopsis    []  Description []                 SideEffects []  SeeAlso     []***********************************************************************/void Fxu_ListTableDelDivisor( Fxu_Matrix * p, Fxu_Double * pLink ) {	Fxu_ListDouble * pList = &(p->pTable[pLink->Key]);	if ( pList->pHead == pLink )		 pList->pHead = pLink->pNext;	if ( pList->pTail == pLink )		 pList->pTail = pLink->pPrev;	if ( pLink->pPrev )		 pLink->pPrev->pNext = pLink->pNext;	if ( pLink->pNext )		 pLink->pNext->pPrev = pLink->pPrev;	pList->nItems--;    p->nDivs--;}// cube -> literal /**Function*************************************************************  Synopsis    []  Description []                 SideEffects []  SeeAlso     []***********************************************************************/void Fxu_ListCubeAddLiteral( Fxu_Cube * pCube, Fxu_Lit * pLink ){	Fxu_ListLit * pList = &(pCube->lLits);	if ( pList->pHead == NULL )	{		pList->pHead = pLink;		pList->pTail = pLink;		pLink->pHPrev = NULL;		pLink->pHNext = NULL;	}	else	{		pLink->pHNext = NULL;		pList->pTail->pHNext = pLink;		pLink->pHPrev = pList->pTail;		pList->pTail = pLink;	}	pList->nItems++;}/**Function*************************************************************  Synopsis    []  Description []                 SideEffects []  SeeAlso     []***********************************************************************/void Fxu_ListCubeDelLiteral( Fxu_Cube * pCube, Fxu_Lit * pLink ){	Fxu_ListLit * pList = &(pCube->lLits);	if ( pList->pHead == pLink )		 pList->pHead = pLink->pHNext;	if ( pList->pTail == pLink )		 pList->pTail = pLink->pHPrev;	if ( pLink->pHPrev )		 pLink->pHPrev->pHNext = pLink->pHNext;	if ( pLink->pHNext )		 pLink->pHNext->pHPrev = pLink->pHPrev;	pList->nItems--;}// var -> literal/**Function*************************************************************  Synopsis    []  Description []                 SideEffects []  SeeAlso     []***********************************************************************/void Fxu_ListVarAddLiteral( Fxu_Var * pVar, Fxu_Lit * pLink ){	Fxu_ListLit * pList = &(pVar->lLits);	if ( pList->pHead == NULL )	{		pList->pHead = pLink;		pList->pTail = pLink;		pLink->pVPrev = NULL;		pLink->pVNext = NULL;	}	else	{		pLink->pVNext = NULL;		pList->pTail->pVNext = pLink;		pLink->pVPrev = pList->pTail;		pList->pTail = pLink;	}	pList->nItems++;}/**Function*************************************************************  Synopsis    []  Description []                 SideEffects []  SeeAlso     []***********************************************************************/void Fxu_ListVarDelLiteral( Fxu_Var * pVar, Fxu_Lit * pLink ){	Fxu_ListLit * pList = &(pVar->lLits);	if ( pList->pHead == pLink )		 pList->pHead = pLink->pVNext;	if ( pList->pTail == pLink )		 pList->pTail = pLink->pVPrev;	if ( pLink->pVPrev )		 pLink->pVPrev->pVNext = pLink->pVNext;	if ( pLink->pVNext )		 pLink->pVNext->pVPrev = pLink->pVPrev;	pList->nItems--;}// divisor -> pair/**Function*************************************************************  Synopsis    []  Description []                 SideEffects []  SeeAlso     []***********************************************************************/void Fxu_ListDoubleAddPairLast( Fxu_Double * pDiv, Fxu_Pair * pLink ){	Fxu_ListPair * pList = &pDiv->lPairs;	if ( pList->pHead == NULL )	{		pList->pHead = pLink;		pList->pTail = pLink;		pLink->pDPrev = NULL;		pLink->pDNext = NULL;	}	else	{		pLink->pDNext = NULL;		pList->pTail->pDNext = pLink;		pLink->pDPrev = pList->pTail;		pList->pTail = pLink;	}	pList->nItems++;}/**Function*************************************************************  Synopsis    []  Description []                 SideEffects []  SeeAlso     []***********************************************************************/void Fxu_ListDoubleAddPairFirst( Fxu_Double * pDiv, Fxu_Pair * pLink ){	Fxu_ListPair * pList = &pDiv->lPairs;	if ( pList->pHead == NULL )	{		pList->pHead = pLink;		pList->pTail = pLink;		pLink->pDPrev = NULL;		pLink->pDNext = NULL;	}	else	{		pLink->pDPrev = NULL;		pList->pHead->pDPrev = pLink;		pLink->pDNext = pList->pHead;		pList->pHead = pLink;	}	pList->nItems++;}/**Function*************************************************************  Synopsis    [Adds the entry in the middle of the list after the spot.]  Description [Assumes that spot points to the link, after which the given  link should be added. Spot cannot be NULL or the tail of the list.  Therefore, the head and the tail of the list are not changed.]                 SideEffects []  SeeAlso     []***********************************************************************/void Fxu_ListDoubleAddPairMiddle( Fxu_Double * pDiv, Fxu_Pair * pSpot, Fxu_Pair * pLink ){	Fxu_ListPair * pList = &pDiv->lPairs;	assert( pSpot );	assert( pSpot != pList->pTail );	pLink->pDPrev = pSpot;	pLink->pDNext = pSpot->pDNext;	pLink->pDPrev->pDNext = pLink;	pLink->pDNext->pDPrev = pLink;	pList->nItems++;}/**Function*************************************************************  Synopsis    []  Description []                 SideEffects []  SeeAlso     []***********************************************************************/void Fxu_ListDoubleDelPair( Fxu_Double * pDiv, Fxu_Pair * pLink ){	Fxu_ListPair * pList = &pDiv->lPairs;	if ( pList->pHead == pLink )		 pList->pHead = pLink->pDNext;	if ( pList->pTail == pLink )		 pList->pTail = pLink->pDPrev;	if ( pLink->pDPrev )		 pLink->pDPrev->pDNext = pLink->pDNext;	if ( pLink->pDNext )		 pLink->pDNext->pDPrev = pLink->pDPrev;	pList->nItems--;}/**Function*************************************************************  Synopsis    []  Description []                 SideEffects []  SeeAlso     []***********************************************************************/void Fxu_ListDoubleAddPairPlace( Fxu_Double * pDiv, Fxu_Pair * pPair, Fxu_Pair * pPairSpot ){	printf( "Fxu_ListDoubleAddPairPlace() is called!\n" );}///////////////////////////////////////////////////////////////////////////                       END OF FILE                                ///////////////////////////////////////////////////////////////////////////

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -