📄 cast_log2real_expr.cc
字号:
/* HYSDEL Copyright (C) 1999-2002 Fabio D. Torrisi This file is part of HYSDEL. HYSDEL is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. HYSDEL is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this library; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA CONTACT INFORMATION =================== Fabio D. Torrisi ETH Zentrum Physikstrasse. 3 ETL, CH-8032 Zurich Switzerland mailto:torrisi@aut.ee.ethz.ch (preferred)*/#include "Cast_log2real_expr.h"#include "Bool_number.h"#include "Real_number.h"#include "Number_expr.h"#include "Affine_func.h"#include "Variable_expr.h"#include "Parameter_expr.h"#include "Logic_item.h"#include "Min_max_eps.h"#include "Symbol_table.h"#include "Globals.h"Cast_log2real_expr::Cast_log2real_expr(Expr * e) : Unary_expr(e) {}Affine_func * Cast_log2real_expr::compute_affine() const { Affine_func * aff; if (child->is_const()) { aff = new Affine_func(child->clone(), globals); } else { // -> a variable aff = new Affine_func(((Variable_expr *) child)->get_value(), globals); } return aff;}bool Cast_log2real_expr::is_affine() const { return true;}void Cast_log2real_expr::semantic_checks() { child->semantic_checks(); assert(child->is_logic()); //fine}bool Cast_log2real_expr::is_number() const { return child->is_number();}Number * Cast_log2real_expr::compute_number() const { Bool_number * b; Real_number * res; b = (Bool_number *) child->compute_number(); if (b->get_value()) res = new Real_number(1.0); else res = new Real_number(0.0); delete b; return res;}bool Cast_log2real_expr::is_real() const { return child->is_logic();}bool Cast_log2real_expr::is_logic() const { return false;}string Cast_log2real_expr::to_matlab() const { return Unary_expr::to_matlab();}list < Item * > Cast_log2real_expr::unroll() { Logic_item * log; list < Item * > res; //cout << "CASTstart"; cout.flush(); res = Unary_expr::unroll(); if (!child->is_const() && !child->is_variable_expr()) { // -> unroll as Logic const Var_symbol * symb; Variable_expr * newchild; symb = (const Var_symbol *) globals->symbol_table->create_additional(AUX_KIND, BOOL_TYPE); log = new Logic_item(symb, child->clone(), globals); res.push_back(log); newchild = new Variable_expr(symb, globals); delete child; child = newchild; } //cout << "CASTend"; cout.flush(); return res;}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -