ir_print_visitor.h revision 78b51b0fdd61b58940f9043ef9046217552f2c70
178b51b0fdd61b58940f9043ef9046217552f2c70Ian Romanick/* 278b51b0fdd61b58940f9043ef9046217552f2c70Ian Romanick * Copyright © 2010 Intel Corporation 378b51b0fdd61b58940f9043ef9046217552f2c70Ian Romanick * 478b51b0fdd61b58940f9043ef9046217552f2c70Ian Romanick * Permission is hereby granted, free of charge, to any person obtaining a 578b51b0fdd61b58940f9043ef9046217552f2c70Ian Romanick * copy of this software and associated documentation files (the "Software"), 678b51b0fdd61b58940f9043ef9046217552f2c70Ian Romanick * to deal in the Software without restriction, including without limitation 778b51b0fdd61b58940f9043ef9046217552f2c70Ian Romanick * the rights to use, copy, modify, merge, publish, distribute, sublicense, 878b51b0fdd61b58940f9043ef9046217552f2c70Ian Romanick * and/or sell copies of the Software, and to permit persons to whom the 978b51b0fdd61b58940f9043ef9046217552f2c70Ian Romanick * Software is furnished to do so, subject to the following conditions: 1078b51b0fdd61b58940f9043ef9046217552f2c70Ian Romanick * 1178b51b0fdd61b58940f9043ef9046217552f2c70Ian Romanick * The above copyright notice and this permission notice (including the next 1278b51b0fdd61b58940f9043ef9046217552f2c70Ian Romanick * paragraph) shall be included in all copies or substantial portions of the 1378b51b0fdd61b58940f9043ef9046217552f2c70Ian Romanick * Software. 1478b51b0fdd61b58940f9043ef9046217552f2c70Ian Romanick * 1578b51b0fdd61b58940f9043ef9046217552f2c70Ian Romanick * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 1678b51b0fdd61b58940f9043ef9046217552f2c70Ian Romanick * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 1778b51b0fdd61b58940f9043ef9046217552f2c70Ian Romanick * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL 1878b51b0fdd61b58940f9043ef9046217552f2c70Ian Romanick * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 1978b51b0fdd61b58940f9043ef9046217552f2c70Ian Romanick * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING 2078b51b0fdd61b58940f9043ef9046217552f2c70Ian Romanick * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER 2178b51b0fdd61b58940f9043ef9046217552f2c70Ian Romanick * DEALINGS IN THE SOFTWARE. 2278b51b0fdd61b58940f9043ef9046217552f2c70Ian Romanick */ 2378b51b0fdd61b58940f9043ef9046217552f2c70Ian Romanick 2478b51b0fdd61b58940f9043ef9046217552f2c70Ian Romanick#pragma once 2578b51b0fdd61b58940f9043ef9046217552f2c70Ian Romanick#ifndef IR_PRINT_VISITOR_H 2678b51b0fdd61b58940f9043ef9046217552f2c70Ian Romanick#define IR_PRINT_VISITOR_H 2778b51b0fdd61b58940f9043ef9046217552f2c70Ian Romanick 2878b51b0fdd61b58940f9043ef9046217552f2c70Ian Romanick#include "ir.h" 2978b51b0fdd61b58940f9043ef9046217552f2c70Ian Romanick#include "ir_visitor.h" 3078b51b0fdd61b58940f9043ef9046217552f2c70Ian Romanick 3178b51b0fdd61b58940f9043ef9046217552f2c70Ian Romanick/** 3278b51b0fdd61b58940f9043ef9046217552f2c70Ian Romanick * Abstract base class of visitors of IR instruction trees 3378b51b0fdd61b58940f9043ef9046217552f2c70Ian Romanick */ 3478b51b0fdd61b58940f9043ef9046217552f2c70Ian Romanickclass ir_print_visitor : public ir_visitor { 3578b51b0fdd61b58940f9043ef9046217552f2c70Ian Romanickpublic: 3678b51b0fdd61b58940f9043ef9046217552f2c70Ian Romanick ir_print_visitor() 3778b51b0fdd61b58940f9043ef9046217552f2c70Ian Romanick { 3878b51b0fdd61b58940f9043ef9046217552f2c70Ian Romanick /* empty */ 3978b51b0fdd61b58940f9043ef9046217552f2c70Ian Romanick } 4078b51b0fdd61b58940f9043ef9046217552f2c70Ian Romanick 4178b51b0fdd61b58940f9043ef9046217552f2c70Ian Romanick virtual ~ir_print_visitor() 4278b51b0fdd61b58940f9043ef9046217552f2c70Ian Romanick { 4378b51b0fdd61b58940f9043ef9046217552f2c70Ian Romanick /* empty */ 4478b51b0fdd61b58940f9043ef9046217552f2c70Ian Romanick } 4578b51b0fdd61b58940f9043ef9046217552f2c70Ian Romanick 4678b51b0fdd61b58940f9043ef9046217552f2c70Ian Romanick /** 4778b51b0fdd61b58940f9043ef9046217552f2c70Ian Romanick * \name Visit methods 4878b51b0fdd61b58940f9043ef9046217552f2c70Ian Romanick * 4978b51b0fdd61b58940f9043ef9046217552f2c70Ian Romanick * As typical for the visitor pattern, there must be one \c visit method for 5078b51b0fdd61b58940f9043ef9046217552f2c70Ian Romanick * each concrete subclass of \c ir_instruction. Virtual base classes within 5178b51b0fdd61b58940f9043ef9046217552f2c70Ian Romanick * the hierarchy should not have \c visit methods. 5278b51b0fdd61b58940f9043ef9046217552f2c70Ian Romanick */ 5378b51b0fdd61b58940f9043ef9046217552f2c70Ian Romanick /*@{*/ 5478b51b0fdd61b58940f9043ef9046217552f2c70Ian Romanick virtual void visit(ir_variable *); 5578b51b0fdd61b58940f9043ef9046217552f2c70Ian Romanick virtual void visit(ir_label *); 5678b51b0fdd61b58940f9043ef9046217552f2c70Ian Romanick virtual void visit(ir_function_signature *); 5778b51b0fdd61b58940f9043ef9046217552f2c70Ian Romanick virtual void visit(ir_function *); 5878b51b0fdd61b58940f9043ef9046217552f2c70Ian Romanick virtual void visit(ir_expression *); 5978b51b0fdd61b58940f9043ef9046217552f2c70Ian Romanick virtual void visit(ir_dereference *); 6078b51b0fdd61b58940f9043ef9046217552f2c70Ian Romanick virtual void visit(ir_assignment *); 6178b51b0fdd61b58940f9043ef9046217552f2c70Ian Romanick virtual void visit(ir_constant *); 6278b51b0fdd61b58940f9043ef9046217552f2c70Ian Romanick /*@}*/ 6378b51b0fdd61b58940f9043ef9046217552f2c70Ian Romanick}; 6478b51b0fdd61b58940f9043ef9046217552f2c70Ian Romanick 6578b51b0fdd61b58940f9043ef9046217552f2c70Ian Romanick#endif /* IR_PRINT_VISITOR_H */ 66