static status insertVector(Vector v, Int where, Any obj) { int size = valInt(v->size); int offset = valInt(v->offset); int i; Any *s, *p; if ( valInt(where) <= offset+1 ) { assign(v, offset, toInt(offset+1)); return elementVector(v, where, obj); } if ( valInt(where) > size+offset ) return elementVector(v, where, obj); elementVector(v, toInt(size+offset+1), NIL); i = indexVector(v, where); s = &v->elements[i]; p = &v->elements[valInt(v->size)-1]; /* point to last element */ for( ; p>s; p-- ) { p[0] = p[-1]; } v->elements[i] = NIL; assignVector(v, i, obj); succeed; }
status fillVector(Vector v, Any obj, Int from, Int to) { int f, t; f = (isDefault(from) ? valInt(getLowIndexVector(v)) : valInt(from)); t = (isDefault(to) ? valInt(getHighIndexVector(v)) : valInt(to)); if ( t < f ) fail; if ( v->size == ZERO ) { int size = t-f+1; int n; assign(v, offset, toInt(f - 1)); assign(v, size, toInt(size)); assign(v, allocated, v->size); if ( v->elements ) unalloc(0, v->elements); v->elements = alloc(sizeof(Any) * size); for(n=0; n<size; n++) { v->elements[n] = NIL; if ( notNil(obj) ) assignVector(v, n, obj); } } else { elementVector(v, toInt(f), obj); elementVector(v, toInt(t), obj); while( ++f < t ) elementVector(v, toInt(f), obj); } succeed; }
static status deleteCellTable(Table tab, TableCell cell, BoolObj keep) { if ( cell->layout_manager == (LayoutManager)tab ) { int tx = valInt(cell->column) + valInt(cell->col_span); int ty = valInt(cell->row) + valInt(cell->row_span); int x, y; removeCellImageTable(tab, cell, keep); for(y=valInt(cell->row); y<ty; y++) { TableRow row = getRowTable(tab, toInt(y), OFF); if ( row ) { for(x=valInt(cell->column); x<tx; x++) elementVector((Vector)row, toInt(x), NIL); } } assign(cell, layout_manager, NIL); changedTable(tab); requestComputeLayoutManager((LayoutManager)tab, DEFAULT); } succeed; }
static void ws_open_colourmap(ColourMap cm) { if ( !getExistingPaletteColourMap(cm) && notNil(cm->colours) ) { int size = valInt(cm->colours->size); LOGPALETTE *lp = pceMalloc(offset(LOGPALETTE, palPalEntry[size])); PALETTEENTRY *pe = &lp->palPalEntry[0]; HPALETTE hpal; int n, nc = 0; DisplayObj d = CurrentDisplay(NIL); for(n=0; n<size; n++) { Colour c = cm->colours->elements[n]; if ( isName(c) && (c = checkType(c, TypeColour, NIL)) ) elementVector(cm->colours, toInt(n+1), c); if ( instanceOfObject(c, ClassColour) ) { if ( c->kind == NAME_named ) ws_create_colour(c, d); pe->peRed = valInt(c->red) >> 8; pe->peGreen = valInt(c->green) >> 8; pe->peBlue = valInt(c->blue) >> 8; pe->peFlags = 0; pe++; nc++; } else Cprintf("%s is not a colour\n", pp(c)); }
void ChromeClientImpl::didAssociateFormControls(const Vector<RefPtr<Element> >& elements) { if (!m_webView->autofillClient()) return; WebVector<WebNode> elementVector(static_cast<size_t>(elements.size())); size_t elementsCount = elements.size(); for (size_t i = 0; i < elementsCount; ++i) elementVector[i] = elements[i]; m_webView->autofillClient()->didAssociateFormControls(elementVector); }
status appendVector(Vector v, int argc, Any obj[]) { if ( argc ) { int start = valInt(v->size) + valInt(v->offset) + 1; fillVector(v, NIL, toInt(start), toInt(start + argc - 1)); for( ; argc-- > 0; start++, obj++ ) elementVector(v, toInt(start), *obj); } succeed; }
TableColumn getColumnTable(Table tab, Any x, BoolObj create) { if ( isInteger(x) ) { TableColumn col = getElementVector(tab->columns, x); if ( isNil(col) ) col = FAIL; if ( !col && create == ON ) { elementVector(tab->columns, x, (col=newObject(ClassTableColumn, EAV))); assign(col, table, tab); assign(col, index, x); } return col; } answer(findNamedSlice(tab->columns, x)); }
TableRow getRowTable(Table tab, Any y, BoolObj create) { if ( isInteger(y) ) { TableRow row = getElementVector(tab->rows, y); if ( isNil(row) ) row = FAIL; if ( !row && create == ON ) { elementVector(tab->rows, y, (row=newObject(ClassTableRow, EAV))); assign(row, table, tab); assign(row, index, y); } return row; } answer(findNamedSlice(tab->rows, y)); }