NS_IMETHODIMP nsARIAGridAccessible::IsColumnSelected(PRInt32 aColumn, PRBool *aIsSelected) { NS_ENSURE_ARG_POINTER(aIsSelected); *aIsSelected = PR_FALSE; if (IsDefunct()) return NS_ERROR_FAILURE; NS_ENSURE_ARG(IsValidColumn(aColumn)); nsCOMPtr<nsIAccessible> row = GetNextRow(); if (!row) return NS_OK; do { if (!nsAccUtils::IsARIASelected(row)) { nsCOMPtr<nsIAccessible> cell = GetCellInRowAt(row, aColumn); if (!cell) // Do not fail due to wrong markup return NS_OK; if (!nsAccUtils::IsARIASelected(cell)) return NS_OK; } } while ((row = GetNextRow(row))); *aIsSelected = PR_TRUE; return NS_OK; }
already_AddRefed<nsIAccessible> nsARIAGridAccessible::GetRowAt(PRInt32 aRow) { PRInt32 rowIdx = aRow; nsCOMPtr<nsIAccessible> row(GetNextRow()); while (rowIdx != 0 && (row = GetNextRow(row))) rowIdx--; return row.forget(); }
/* * pglogIterateForeignScan * Read next record from the data file and store it into the * ScanTupleSlot as a virtual tuple */ static TupleTableSlot * pglogIterateForeignScan(ForeignScanState *node) { PgLogExecutionState *festate = (PgLogExecutionState *) node->fdw_state; TupleTableSlot *slot = node->ss.ss_ScanTupleSlot; bool found; ErrorContextCallback errcallback; /* Set up callback to identify error line number. */ errcallback.callback = CopyFromErrorCallback; errcallback.arg = (void *) festate->cstate; errcallback.previous = error_context_stack; error_context_stack = &errcallback; /* * The protocol for loading a virtual tuple into a slot is first * ExecClearTuple, then fill the values/isnull arrays, then * ExecStoreVirtualTuple. If we don't find another row in the file, we * just skip the last step, leaving the slot empty as required. * * We can pass ExprContext = NULL because we read all columns from the * file, so no need to evaluate default expressions. * * We can also pass tupleOid = NULL because we don't allow oids for * foreign tables. */ ExecClearTuple(slot); found = GetNextRow(node->ss.ss_currentRelation, festate, slot); if (found) ExecStoreVirtualTuple(slot); else if (! isLastLogFile(festate)) { /* We could have reached the end of a log file * We might have to start reading from the next */ elog(DEBUG1,"Reached end of file %s",festate->filenames[festate->i]); festate->i++; BeginNextCopy(node->ss.ss_currentRelation, festate); found = GetNextRow(node->ss.ss_currentRelation, festate, slot); if (found) ExecStoreVirtualTuple(slot); } /* Remove error callback. */ error_context_stack = errcallback.previous; return slot; }
NS_IMETHODIMP nsARIAGridAccessible::GetSelectedCells(nsIArray **aCells) { NS_ENSURE_ARG_POINTER(aCells); *aCells = nsnull; if (IsDefunct()) return NS_ERROR_FAILURE; nsresult rv = NS_OK; nsCOMPtr<nsIMutableArray> selCells = do_CreateInstance(NS_ARRAY_CONTRACTID, &rv); NS_ENSURE_SUCCESS(rv, rv); nsCOMPtr<nsIAccessible> row; while (row = GetNextRow(row)) { if (nsAccUtils::IsARIASelected(row)) { nsCOMPtr<nsIAccessible> cell; while (cell = GetNextCellInRow(row, cell)) selCells->AppendElement(cell, PR_FALSE); continue; } nsCOMPtr<nsIAccessible> cell; while (cell = GetNextCellInRow(row, cell)) { if (nsAccUtils::IsARIASelected(cell)) selCells->AppendElement(cell, PR_FALSE); } } NS_ADDREF(*aCells = selCells); return NS_OK; }
NS_IMETHODIMP nsARIAGridAccessible::GetSelectedRowCount(PRUint32* aCount) { NS_ENSURE_ARG_POINTER(aCount); *aCount = 0; if (IsDefunct()) return NS_ERROR_FAILURE; nsCOMPtr<nsIAccessible> row; while ((row = GetNextRow(row))) { if (nsAccUtils::IsARIASelected(row)) { (*aCount)++; continue; } nsCOMPtr<nsIAccessible> cell = GetNextCellInRow(row); if (!cell) continue; PRBool isRowSelected = PR_TRUE; do { if (!nsAccUtils::IsARIASelected(cell)) { isRowSelected = PR_FALSE; break; } } while ((cell = GetNextCellInRow(row, cell))); if (isRowSelected) (*aCount)++; } return NS_OK; }
NS_IMETHODIMP nsARIAGridAccessible::GetSelectedCellCount(PRUint32* aCount) { NS_ENSURE_ARG_POINTER(aCount); *aCount = 0; if (IsDefunct()) return NS_ERROR_FAILURE; PRInt32 colCount = 0; GetColumnCount(&colCount); nsCOMPtr<nsIAccessible> row; while ((row = GetNextRow(row))) { if (nsAccUtils::IsARIASelected(row)) { (*aCount) += colCount; continue; } nsCOMPtr<nsIAccessible> cell; while ((cell = GetNextCellInRow(row, cell))) { if (nsAccUtils::IsARIASelected(cell)) (*aCount)++; } } return NS_OK; }
NS_IMETHODIMP nsARIAGridAccessible::GetSelectedRowIndices(PRUint32 *arowCount, PRInt32 **aRows) { NS_ENSURE_ARG_POINTER(arowCount); *arowCount = 0; NS_ENSURE_ARG_POINTER(aRows); *aRows = nsnull; if (IsDefunct()) return NS_ERROR_FAILURE; PRInt32 rowCount = 0; GetRowCount(&rowCount); if (!rowCount) return NS_OK; nsTArray<PRInt32> selRows(rowCount); nsCOMPtr<nsIAccessible> row; for (PRInt32 rowIdx = 0; row = GetNextRow(row); rowIdx++) { if (nsAccUtils::IsARIASelected(row)) { selRows.AppendElement(rowIdx); continue; } nsCOMPtr<nsIAccessible> cell = GetNextCellInRow(row); if (!cell) continue; PRBool isRowSelected = PR_TRUE; do { if (!nsAccUtils::IsARIASelected(cell)) { isRowSelected = PR_FALSE; break; } } while ((cell = GetNextCellInRow(row, cell))); if (isRowSelected) selRows.AppendElement(rowIdx); } PRUint32 selrowCount = selRows.Length(); if (!selrowCount) return NS_OK; *aRows = static_cast<PRInt32*>( nsMemory::Clone(selRows.Elements(), selrowCount * sizeof(PRInt32))); NS_ENSURE_TRUE(*aRows, NS_ERROR_OUT_OF_MEMORY); *arowCount = selrowCount; return NS_OK; }
NS_IMETHODIMP nsARIAGridAccessible::GetRowCount(PRInt32 *arowCount) { NS_ENSURE_ARG_POINTER(arowCount); *arowCount = 0; if (IsDefunct()) return NS_ERROR_FAILURE; nsCOMPtr<nsIAccessible> row; while ((row = GetNextRow(row))) (*arowCount)++; return NS_OK; }
NS_IMETHODIMP nsARIAGridAccessible::GetColumnCount(PRInt32 *acolumnCount) { NS_ENSURE_ARG_POINTER(acolumnCount); *acolumnCount = 0; if (IsDefunct()) return NS_ERROR_FAILURE; nsCOMPtr<nsIAccessible> row = GetNextRow(); nsCOMPtr<nsIAccessible> cell; while ((cell = GetNextCellInRow(row, cell))) (*acolumnCount)++; return NS_OK; }
NS_IMETHODIMP nsARIAGridAccessible::SelectRow(PRInt32 aRow) { NS_ENSURE_ARG(IsValidRow(aRow)); if (IsDefunct()) return NS_ERROR_FAILURE; nsCOMPtr<nsIAccessible> row; for (PRInt32 rowIdx = 0; row = GetNextRow(row); rowIdx++) { nsresult rv = SetARIASelected(row, rowIdx == aRow); NS_ENSURE_SUCCESS(rv, rv); } return NS_OK; }
NS_IMETHODIMP nsARIAGridAccessible::GetSelectedCellIndices(PRUint32 *aCellsCount, PRInt32 **aCells) { NS_ENSURE_ARG_POINTER(aCellsCount); *aCellsCount = 0; NS_ENSURE_ARG_POINTER(aCells); *aCells = nsnull; if (IsDefunct()) return NS_ERROR_FAILURE; PRInt32 rowCount = 0; GetRowCount(&rowCount); PRInt32 colCount = 0; GetColumnCount(&colCount); nsTArray<PRInt32> selCells(rowCount * colCount); nsCOMPtr<nsIAccessible> row; for (PRInt32 rowIdx = 0; row = GetNextRow(row); rowIdx++) { if (nsAccUtils::IsARIASelected(row)) { for (PRInt32 colIdx = 0; colIdx < colCount; colIdx++) selCells.AppendElement(rowIdx * colCount + colIdx); continue; } nsCOMPtr<nsIAccessible> cell; for (PRInt32 colIdx = 0; cell = GetNextCellInRow(row, cell); colIdx++) { if (nsAccUtils::IsARIASelected(cell)) selCells.AppendElement(rowIdx * colCount + colIdx); } } PRUint32 selCellsCount = selCells.Length(); if (!selCellsCount) return NS_OK; *aCells = static_cast<PRInt32*>( nsMemory::Clone(selCells.Elements(), selCellsCount * sizeof(PRInt32))); NS_ENSURE_TRUE(*aCells, NS_ERROR_OUT_OF_MEMORY); *aCellsCount = selCellsCount; return NS_OK; }
NS_IMETHODIMP nsARIAGridAccessible::UnselectColumn(PRInt32 aColumn) { NS_ENSURE_ARG(IsValidColumn(aColumn)); if (IsDefunct()) return NS_ERROR_FAILURE; nsCOMPtr<nsIAccessible> row; while ((row = GetNextRow(row))) { nsCOMPtr<nsIAccessible> cell = GetCellInRowAt(row, aColumn); if (cell) { nsresult rv = SetARIASelected(cell, PR_FALSE); NS_ENSURE_SUCCESS(rv, rv); } } return NS_OK; }
void OGRMDBTable::DumpTable() { ResetReading(); int iRow = 0; int nCols = apoColumnNames.size(); while(GetNextRow()) { printf("Row = %d\n", iRow ++); for(int i=0;i<nCols;i++) { printf("%s = ", apoColumnNames[i].c_str()); if (apoColumnTypes[i] == MDB_Float || apoColumnTypes[i] == MDB_Double) { printf("%.15f\n", GetColumnAsDouble(i)); } else if (apoColumnTypes[i] == MDB_Boolean || apoColumnTypes[i] == MDB_Byte || apoColumnTypes[i] == MDB_Short || apoColumnTypes[i] == MDB_Int) { printf("%d\n", GetColumnAsInt(i)); } else if (apoColumnTypes[i] == MDB_Binary || apoColumnTypes[i] == MDB_OLE) { int nBytes; GByte* pData = GetColumnAsBinary(i, &nBytes); printf("(%d bytes)\n", nBytes); CPLFree(pData); } else { char* val = GetColumnAsString(i); printf("'%s'\n", val); CPLFree(val); } } } }
nsresult nsARIAGridAccessible::GetSelectedColumnsArray(PRUint32 *acolumnCount, PRInt32 **aColumns) { NS_ENSURE_ARG_POINTER(acolumnCount); *acolumnCount = 0; if (aColumns) *aColumns = nsnull; if (IsDefunct()) return NS_ERROR_FAILURE; nsCOMPtr<nsIAccessible> row = GetNextRow(); if (!row) return NS_OK; PRInt32 colCount = 0; GetColumnCount(&colCount); if (!colCount) return NS_OK; PRInt32 selColCount = colCount; nsTArray<PRBool> isColSelArray(selColCount); isColSelArray.AppendElements(selColCount); for (PRInt32 i = 0; i < selColCount; i++) isColSelArray[i] = PR_TRUE; do { if (nsAccUtils::IsARIASelected(row)) continue; PRInt32 colIdx = 0; nsCOMPtr<nsIAccessible> cell; for (colIdx = 0; cell = GetNextCellInRow(row, cell); colIdx++) { if (isColSelArray.SafeElementAt(colIdx, PR_FALSE) && !nsAccUtils::IsARIASelected(cell)) { isColSelArray[colIdx] = PR_FALSE; selColCount--; } } } while ((row = GetNextRow(row))); if (!selColCount) return NS_OK; if (!aColumns) { *acolumnCount = selColCount; return NS_OK; } *aColumns = static_cast<PRInt32*>( nsMemory::Alloc(selColCount * sizeof(PRInt32))); NS_ENSURE_TRUE(*aColumns, NS_ERROR_OUT_OF_MEMORY); *acolumnCount = selColCount; for (PRInt32 colIdx = 0, idx = 0; colIdx < colCount; colIdx++) { if (isColSelArray[colIdx]) (*aColumns)[idx++] = colIdx; } return NS_OK; }