📄 rowlist.c
字号:
/* * rowlist.c * Copyright (C) 1998-2004 A.J. van Os; Released under GPL * * Description: * Build, read and destroy a list of Word table-row information */#include <stdlib.h>#include <string.h>#include "antiword.h"/* * Private structure to hide the way the information * is stored from the rest of the program */typedef struct row_desc_tag { row_block_type tInfo; struct row_desc_tag *pNext;} row_desc_type;/* Variables needed to write the Row Information List */static row_desc_type *pAnchor = NULL;static row_desc_type *pRowLast = NULL;/* Variable needed to read the Row Information List */static row_desc_type *pRowCurrent = NULL;/* * vDestroyRowInfoList - destroy the Row Information List */voidvDestroyRowInfoList(void){ row_desc_type *pCurr, *pNext; DBG_MSG("vDestroyRowInfoList"); /* Free the Row Information List */ pCurr = pAnchor; while (pCurr != NULL) { pNext = pCurr->pNext; pCurr = xfree(pCurr); pCurr = pNext; } pAnchor = NULL; /* Reset all control variables */ pRowLast = NULL; pRowCurrent = NULL;} /* end of vDestroyRowInfoList *//* * vAdd2RowInfoList - Add an element to the Row Information List */voidvAdd2RowInfoList(const row_block_type *pRowBlock){ row_desc_type *pListMember; short *psTmp; int iIndex; fail(pRowBlock == NULL); if (pRowBlock->ulFileOffsetStart == FC_INVALID || pRowBlock->ulFileOffsetEnd == FC_INVALID || pRowBlock->ulFileOffsetStart == pRowBlock->ulFileOffsetEnd) { DBG_HEX_C(pRowBlock->ulFileOffsetStart != FC_INVALID, pRowBlock->ulFileOffsetStart); DBG_HEX_C(pRowBlock->ulFileOffsetEnd != FC_INVALID, pRowBlock->ulFileOffsetEnd); return; } NO_DBG_HEX(pRowBlock->ulFileOffsetStart); NO_DBG_HEX(pRowBlock->ulFileOffsetEnd); NO_DBG_DEC(pRowBlock->ucNumberOfColumns); /* Create the new list member */ pListMember = xmalloc(sizeof(row_desc_type)); /* Fill the new list member */ pListMember->tInfo = *pRowBlock; pListMember->pNext = NULL; /* Correct the values where needed */ for (iIndex = 0, psTmp = pListMember->tInfo.asColumnWidth; iIndex < (int)pListMember->tInfo.ucNumberOfColumns; iIndex++, psTmp++) { if (*psTmp < 0) { *psTmp = 0; DBG_MSG("The column width was negative"); } } /* Add the new member to the list */ if (pAnchor == NULL) { pAnchor = pListMember; pRowCurrent = pListMember; } else { fail(pRowLast == NULL); pRowLast->pNext = pListMember; } pRowLast = pListMember;} /* end of vAdd2RowInfoList *//* * Get the next item in the Row Information List */const row_block_type *pGetNextRowInfoListItem(void){ const row_block_type *pItem; if (pRowCurrent == NULL) { return NULL; } pItem = &pRowCurrent->tInfo; pRowCurrent = pRowCurrent->pNext; return pItem;} /* end of pGetNextRowInfoListItem */
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -