Changeset 5397
- Timestamp:
- 08/06/09 23:57:18 (4 years ago)
- Location:
- trunk/eda/fped
- Files:
-
- 5 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/eda/fped/delete.c
r5396 r5397 27 27 dt_obj, 28 28 dt_frame, 29 dt_table, 30 dt_row, 31 dt_column, 32 dt_loop, 29 33 } type; 30 34 union { … … 41 45 struct obj *prev; 42 46 } obj; 47 struct { 48 struct table *ref; 49 struct table *prev; 50 } table; 51 struct { 52 struct row *ref; 53 struct row *prev; 54 } row; 55 struct { 56 struct var *var; 57 struct value *values; 58 struct table *table; 59 int n; 60 } col; 61 struct { 62 struct loop *ref; 63 struct loop *prev; 64 } loop; 43 65 } u; 44 66 int group; … … 226 248 } 227 249 250 251 252 /* ----- rows -------------------------------------------------------------- */ 253 254 255 void delete_row(struct row *row) 256 { 257 struct deletion *del; 258 struct row *walk, *prev; 259 260 groups++; 261 prev = NULL; 262 for (walk = row->table->rows; walk != row; walk = walk->next) 263 prev = walk; 264 if (prev) 265 prev->next = row->next; 266 else 267 row->table->rows = row->next; 268 del = new_deletion(dt_row); 269 del->u.row.ref = row; 270 del->u.row.prev = prev; 271 } 272 273 274 static void undelete_row(struct row *row, struct row *prev) 275 { 276 if (prev) { 277 assert(row->next == prev->next); 278 prev->next = row; 279 } else { 280 assert(row->next == row->table->rows); 281 row->table->rows = row; 282 } 283 } 284 285 286 /* ----- columns ----------------------------------------------------------- */ 287 288 289 void delete_column(struct table *table, int n) 290 { 291 groups++; 292 } 293 294 228 295 /* ----- tables ------------------------------------------------------------ */ 229 296 230 297 231 void delete_row(struct row *row)232 {233 }234 235 236 void delete_column(struct table *table, int n)237 {238 }239 240 241 298 void delete_table(struct table *table) 242 299 { 300 struct frame *frame = table->vars->frame; 301 struct deletion *del; 302 struct table *walk, *prev; 303 304 groups++; 305 prev = NULL; 306 for (walk = frame->tables; walk != table; walk = walk->next) 307 prev = walk; 308 if (prev) 309 prev->next = table->next; 310 else 311 frame->tables = table->next; 312 del = new_deletion(dt_table); 313 del->u.table.ref = table; 314 del->u.table.prev = prev; 315 } 316 317 318 static void undelete_table(struct table *table, struct table *prev) 319 { 320 struct frame *frame = table->vars->frame; 321 322 if (prev) { 323 assert(table->next == prev->next); 324 prev->next = table; 325 } else { 326 assert(table->next == frame->tables); 327 frame->tables = table; 328 } 243 329 } 244 330 … … 249 335 void delete_loop(struct loop *loop) 250 336 { 337 struct frame *frame = loop->var.frame; 338 struct deletion *del; 339 struct loop *walk, *prev; 340 341 groups++; 342 prev = NULL; 343 for (walk = frame->loops; walk != loop; walk = walk->next) 344 prev = walk; 345 if (prev) 346 prev->next = loop->next; 347 else 348 frame->loops = loop->next; 349 del = new_deletion(dt_loop); 350 del->u.loop.ref = loop; 351 del->u.loop.prev = prev; 352 } 353 354 355 static void undelete_loop(struct loop *loop, struct loop *prev) 356 { 357 struct frame *frame = loop->var.frame; 358 359 if (prev) { 360 assert(loop->next == prev->next); 361 prev->next = loop; 362 } else { 363 assert(loop->next == frame->loops); 364 frame->loops = loop; 365 } 251 366 } 252 367 … … 348 463 undelete_frame(del->u.frame.ref, del->u.frame.prev); 349 464 break; 465 case dt_loop: 466 undelete_loop(del->u.loop.ref, del->u.loop.prev); 467 break; 468 case dt_table: 469 undelete_table(del->u.table.ref, del->u.table.prev); 470 break; 471 case dt_row: 472 undelete_row(del->u.row.ref, del->u.row.prev); 473 break; 350 474 default: 351 475 abort(); -
trunk/eda/fped/expr.c
r5389 r5397 100 100 101 101 /* ----- primary expressions ----------------------------------------------- */ 102 103 104 struct num op_string(const struct expr *self, const struct frame *frame) 105 { 106 fail("cannot evaluate string"); 107 return undef; 108 } 102 109 103 110 -
trunk/eda/fped/expr.h
r5389 r5397 44 44 struct num num; 45 45 const char *var; 46 char *str; 46 47 struct { 47 48 struct expr *a; … … 108 109 struct num op_num(const struct expr *self, const struct frame *frame); 109 110 struct num op_var(const struct expr *self, const struct frame *frame); 111 struct num op_string(const struct expr *self, const struct frame *frame); 110 112 111 113 struct num op_minus(const struct expr *self, const struct frame *frame); -
trunk/eda/fped/fpd.y
r5396 r5397 531 531 $$->u.var = $1; 532 532 } 533 | STRING 534 { 535 $$ = new_op(op_string); 536 $$->u.str = $1; 537 } 533 538 | '(' expr ')' 534 539 { -
trunk/eda/fped/gui.c
r5396 r5397 713 713 { 714 714 GtkWidget *tab, *field; 715 GtkWidget *evbox ;715 GtkWidget *evbox, *align; 716 716 struct var *var; 717 717 struct row *row; … … 730 730 731 731 evbox = gtk_event_box_new(); 732 gtk_box_pack_start(GTK_BOX(vbox), evbox, FALSE, FALSE, 0); 732 align = gtk_alignment_new(0, 0, 0, 0); 733 gtk_container_add(GTK_CONTAINER(align), evbox); 734 gtk_box_pack_start(GTK_BOX(vbox), align, FALSE, FALSE, 0); 733 735 734 736 tab = gtk_table_new(n_rows+1, n_vars, FALSE);
Note: See TracChangeset
for help on using the changeset viewer.
