Changes in src/Common/PassVisitor.impl.h [a8a2b0a:a16764a6]
- File:
-
- 1 edited
-
src/Common/PassVisitor.impl.h (modified) (1 diff)
Legend:
- Unmodified
- Added
- Removed
-
src/Common/PassVisitor.impl.h
ra8a2b0a ra16764a6 2277 2277 } 2278 2278 2279 //-------------------------------------------------------------------------- 2280 // TupleType 2279 2281 2280 template< typename pass_type > 2282 2281 void PassVisitor< pass_type >::visit( TupleType * node ) { 2283 VISIT_START( node ); 2284 2285 maybeAccept_impl( node->forall, *this ); 2286 maybeAccept_impl( node->types, *this ); 2287 maybeAccept_impl( node->members, *this ); 2288 2289 VISIT_END( node ); 2290 } 2282 VISIT_BODY( node ); 2283 } 2284 2285 template< typename pass_type > 2286 void PassVisitor< pass_type >::visit( TypeofType * node ) { 2287 VISIT_BODY( node ); 2288 } 2289 2290 template< typename pass_type > 2291 void PassVisitor< pass_type >::visit( AttrType * node ) { 2292 VISIT_BODY( node ); 2293 } 2294 2295 template< typename pass_type > 2296 void PassVisitor< pass_type >::visit( VarArgsType * node ) { 2297 VISIT_BODY( node ); 2298 } 2299 2300 template< typename pass_type > 2301 void PassVisitor< pass_type >::visit( ZeroType * node ) { 2302 VISIT_BODY( node ); 2303 } 2304 2305 template< typename pass_type > 2306 void PassVisitor< pass_type >::visit( OneType * node ) { 2307 VISIT_BODY( node ); 2308 } 2309 2310 template< typename pass_type > 2311 void PassVisitor< pass_type >::visit( Designation * node ) { 2312 VISIT_START( node ); 2313 2314 maybeAccept_impl( node->get_designators(), *this ); 2315 2316 VISIT_END( node ); 2317 } 2318 2319 template< typename pass_type > 2320 Designation * PassVisitor< pass_type >::mutate( Designation * node ) { 2321 MUTATE_START( node ); 2322 2323 maybeMutate_impl( node->get_designators(), *this ); 2324 2325 MUTATE_END( Designation, node ); 2326 } 2327 2328 //-------------------------------------------------------------------------- 2329 // SingleInit 2330 template< typename pass_type > 2331 void PassVisitor< pass_type >::visit( SingleInit * node ) { 2332 VISIT_START( node ); 2333 2334 visitExpression( node->get_value() ); 2335 2336 VISIT_END( node ); 2337 } 2338 2339 template< typename pass_type > 2340 Initializer * PassVisitor< pass_type >::mutate( SingleInit * node ) { 2341 MUTATE_START( node ); 2342 2343 node->set_value( mutateExpression( node->get_value() ) ); 2344 2345 MUTATE_END( Initializer, node ); 2346 } 2347 2348 template< typename pass_type > 2349 void PassVisitor< pass_type >::visit( ListInit * node ) { 2350 VISIT_BODY( node ); 2351 } 2352 2353 template< typename pass_type > 2354 void PassVisitor< pass_type >::visit( ConstructorInit * node ) { 2355 VISIT_BODY( node ); 2356 } 2357 2358 template< typename pass_type > 2359 void PassVisitor< pass_type >::visit( Subrange * node ) { 2360 VISIT_BODY( node ); 2361 } 2362 2363 template< typename pass_type > 2364 void PassVisitor< pass_type >::visit( Constant * node ) { 2365 VISIT_BODY( node ); 2366 } 2367 2368 template< typename pass_type > 2369 void PassVisitor< pass_type >::visit( Attribute * node ) { 2370 VISIT_BODY( node ); 2371 } 2372 2373 //--------------------------------------------------------------------------------------------------------------- 2291 2374 2292 2375 template< typename pass_type > 2293 2376 Type * PassVisitor< pass_type >::mutate( TupleType * node ) { 2294 MUTATE_START( node ); 2295 2296 maybeMutate_impl( node->forall, *this ); 2297 maybeMutate_impl( node->types, *this ); 2298 maybeMutate_impl( node->members, *this ); 2299 2300 MUTATE_END( Type, node ); 2301 } 2302 2303 //-------------------------------------------------------------------------- 2304 // TypeofType 2305 template< typename pass_type > 2306 void PassVisitor< pass_type >::visit( TypeofType * node ) { 2307 VISIT_START( node ); 2308 2309 assert( node->expr ); 2310 maybeAccept_impl( node->expr, *this ); 2311 2312 VISIT_END( node ); 2377 MUTATE_BODY( Type, node ); 2313 2378 } 2314 2379 2315 2380 template< typename pass_type > 2316 2381 Type * PassVisitor< pass_type >::mutate( TypeofType * node ) { 2317 MUTATE_START( node ); 2318 2319 assert( node->expr ); 2320 maybeMutate_impl( node->expr, *this ); 2321 2322 MUTATE_END( Type, node ); 2323 } 2324 2325 //-------------------------------------------------------------------------- 2326 // AttrType 2327 template< typename pass_type > 2328 void PassVisitor< pass_type >::visit( AttrType * node ) { 2329 VISIT_START( node ); 2330 2331 if ( node->isType ) { 2332 assert( node->type ); 2333 maybeAccept_impl( node->type, *this ); 2334 } else { 2335 assert( node->expr ); 2336 maybeAccept_impl( node->expr, *this ); 2337 } // if 2338 2339 VISIT_END( node ); 2382 MUTATE_BODY( Type, node ); 2340 2383 } 2341 2384 2342 2385 template< typename pass_type > 2343 2386 Type * PassVisitor< pass_type >::mutate( AttrType * node ) { 2344 MUTATE_START( node ); 2345 2346 if ( node->isType ) { 2347 assert( node->type ); 2348 maybeMutate_impl( node->type, *this ); 2349 } else { 2350 assert( node->expr ); 2351 maybeMutate_impl( node->expr, *this ); 2352 } // if 2353 2354 MUTATE_END( Type, node ); 2355 } 2356 2357 //-------------------------------------------------------------------------- 2358 // VarArgsType 2359 template< typename pass_type > 2360 void PassVisitor< pass_type >::visit( VarArgsType * node ) { 2361 VISIT_START( node ); 2362 2363 maybeAccept_impl( node->forall, *this ); 2364 2365 VISIT_END( node ); 2387 MUTATE_BODY( Type, node ); 2366 2388 } 2367 2389 2368 2390 template< typename pass_type > 2369 2391 Type * PassVisitor< pass_type >::mutate( VarArgsType * node ) { 2370 MUTATE_START( node ); 2371 2372 maybeMutate_impl( node->forall, *this ); 2373 2374 MUTATE_END( Type, node ); 2375 } 2376 2377 //-------------------------------------------------------------------------- 2378 // ZeroType 2379 template< typename pass_type > 2380 void PassVisitor< pass_type >::visit( ZeroType * node ) { 2381 VISIT_START( node ); 2382 2383 maybeAccept_impl( node->forall, *this ); 2384 2385 VISIT_END( node ); 2392 MUTATE_BODY( Type, node ); 2386 2393 } 2387 2394 2388 2395 template< typename pass_type > 2389 2396 Type * PassVisitor< pass_type >::mutate( ZeroType * node ) { 2390 MUTATE_START( node ); 2391 2392 maybeMutate_impl( node->forall, *this ); 2393 2394 MUTATE_END( Type, node ); 2395 } 2396 2397 //-------------------------------------------------------------------------- 2398 // OneType 2399 template< typename pass_type > 2400 void PassVisitor< pass_type >::visit( OneType * node ) { 2401 VISIT_START( node ); 2402 2403 maybeAccept_impl( node->forall, *this ); 2404 2405 VISIT_END( node ); 2397 MUTATE_BODY( Type, node ); 2406 2398 } 2407 2399 2408 2400 template< typename pass_type > 2409 2401 Type * PassVisitor< pass_type >::mutate( OneType * node ) { 2410 MUTATE_START( node ); 2411 2412 maybeMutate_impl( node->forall, *this ); 2413 2414 MUTATE_END( Type, node ); 2415 } 2416 2417 //-------------------------------------------------------------------------- 2418 // Designation 2419 template< typename pass_type > 2420 void PassVisitor< pass_type >::visit( Designation * node ) { 2421 VISIT_START( node ); 2422 2423 maybeAccept_impl( node->designators, *this ); 2424 2425 VISIT_END( node ); 2426 } 2427 2428 template< typename pass_type > 2429 Designation * PassVisitor< pass_type >::mutate( Designation * node ) { 2430 MUTATE_START( node ); 2431 2432 maybeMutate_impl( node->designators, *this ); 2433 2434 MUTATE_END( Designation, node ); 2435 } 2436 2437 //-------------------------------------------------------------------------- 2438 // SingleInit 2439 template< typename pass_type > 2440 void PassVisitor< pass_type >::visit( SingleInit * node ) { 2441 VISIT_START( node ); 2442 2443 visitExpression( node->value ); 2444 2445 VISIT_END( node ); 2446 } 2447 2448 template< typename pass_type > 2449 Initializer * PassVisitor< pass_type >::mutate( SingleInit * node ) { 2450 MUTATE_START( node ); 2451 2452 node->value = mutateExpression( node->value ); 2453 2454 MUTATE_END( Initializer, node ); 2455 } 2456 2457 //-------------------------------------------------------------------------- 2458 // ListInit 2459 template< typename pass_type > 2460 void PassVisitor< pass_type >::visit( ListInit * node ) { 2461 VISIT_START( node ); 2462 2463 maybeAccept_impl( node->designations, *this ); 2464 maybeAccept_impl( node->initializers, *this ); 2465 2466 VISIT_END( node ); 2402 MUTATE_BODY( Type, node ); 2467 2403 } 2468 2404 2469 2405 template< typename pass_type > 2470 2406 Initializer * PassVisitor< pass_type >::mutate( ListInit * node ) { 2471 MUTATE_START( node ); 2472 2473 maybeMutate_impl( node->designations, *this ); 2474 maybeMutate_impl( node->initializers, *this ); 2475 2476 MUTATE_END( Initializer, node ); 2477 } 2478 2479 //-------------------------------------------------------------------------- 2480 // ConstructorInit 2481 template< typename pass_type > 2482 void PassVisitor< pass_type >::visit( ConstructorInit * node ) { 2483 VISIT_START( node ); 2484 2485 maybeAccept_impl( node->ctor, *this ); 2486 maybeAccept_impl( node->dtor, *this ); 2487 maybeAccept_impl( node->init, *this ); 2488 2489 VISIT_END( node ); 2407 MUTATE_BODY( Initializer, node ); 2490 2408 } 2491 2409 2492 2410 template< typename pass_type > 2493 2411 Initializer * PassVisitor< pass_type >::mutate( ConstructorInit * node ) { 2494 MUTATE_START( node ); 2495 2496 maybeMutate_impl( node->ctor, *this ); 2497 maybeMutate_impl( node->dtor, *this ); 2498 maybeMutate_impl( node->init, *this ); 2499 2500 MUTATE_END( Initializer, node ); 2501 } 2502 2503 //-------------------------------------------------------------------------- 2504 // Subrange 2505 template< typename pass_type > 2506 void PassVisitor< pass_type >::visit( Subrange * node ) { 2507 VISIT_START( node ); 2508 2509 VISIT_END( node ); 2412 MUTATE_BODY( Initializer, node ); 2510 2413 } 2511 2414 2512 2415 template< typename pass_type > 2513 2416 Subrange * PassVisitor< pass_type >::mutate( Subrange * node ) { 2514 MUTATE_START( node ); 2515 2516 MUTATE_END( Subrange, node ); 2517 } 2518 2519 //-------------------------------------------------------------------------- 2520 // Attribute 2521 template< typename pass_type > 2522 void PassVisitor< pass_type >::visit( Constant * node ) { 2523 VISIT_START( node ); 2524 2525 VISIT_END( node ); 2417 MUTATE_BODY( Subrange, node ); 2526 2418 } 2527 2419 2528 2420 template< typename pass_type > 2529 2421 Constant * PassVisitor< pass_type >::mutate( Constant * node ) { 2530 MUTATE_START( node ); 2531 2532 MUTATE_END( Constant, node ); 2533 } 2534 2535 //-------------------------------------------------------------------------- 2536 // Attribute 2537 template< typename pass_type > 2538 void PassVisitor< pass_type >::visit( Attribute * node ) { 2539 VISIT_START( node ); 2540 2541 maybeAccept_impl( node->parameters, *this ); 2542 2543 VISIT_END( node ); 2422 MUTATE_BODY( Constant, node ); 2544 2423 } 2545 2424 2546 2425 template< typename pass_type > 2547 2426 Attribute * PassVisitor< pass_type >::mutate( Attribute * node ) { 2548 MUTATE_START( node ); 2549 2550 maybeMutate_impl( node->parameters, *this ); 2551 2552 MUTATE_END( Attribute, node ); 2553 } 2554 2555 //-------------------------------------------------------------------------- 2556 // TypeSubstitution 2427 MUTATE_BODY( Attribute, node ); 2428 } 2429 2557 2430 template< typename pass_type > 2558 2431 TypeSubstitution * PassVisitor< pass_type >::mutate( TypeSubstitution * node ) {
Note:
See TracChangeset
for help on using the changeset viewer.