⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 cast_log2real_expr.cc

📁 由matlab开发的hybrid系统的描述语言
💻 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 + -