Ignore:
Timestamp:
May 22, 2019, 10:03:37 PM (5 years ago)
Author:
coas-nagasima
Message:

ビルドが通るよう更新

File:
1 edited

Legend:

Unmodified
Added
Removed
  • azure_iot_hub/trunk/asp3_dcre/tecsgen/tecslib/core/value.rb

    • Property svn:mime-type changed from text/x-ruby to text/x-ruby;charset=UTF-8
    r388 r389  
    66#   Copyright (C) 2008-2014 by TOPPERS Project
    77#--
    8 #   ä¸Šè¨˜è‘—作権è€
    9 ã¯ï¼Œä»¥ä¸‹ã®(1)~(4)の条件を満たす場合に限り,本ソフトウェ
    10 #   ã‚¢ï¼ˆæœ¬ã‚½ãƒ•ãƒˆã‚¦ã‚§ã‚¢ã‚’改変したものを含む.以下同じ)を使用・複製・改
    11 #   å¤‰ãƒ»å†é
    12 å¸ƒï¼ˆä»¥ä¸‹ï¼Œåˆ©ç”¨ã¨å‘¼ã¶ï¼‰ã™ã‚‹ã“とを無償で許諾する.
    13 #   (1) 本ソフトウェアをソースコードの形で利用する場合には,上記の著作
    14 #       æ¨©è¡¨ç¤ºï¼Œã“の利用条件および下記の無保証規定が,そのままの形でソー
    15 #       ã‚¹ã‚³ãƒ¼ãƒ‰ä¸­ã«å«ã¾ã‚Œã¦ã„ること.
    16 #   (2) 本ソフトウェアを,ライブラリ形式など,他のソフトウェア開発に使
    17 #       ç”¨ã§ãã‚‹å½¢ã§å†é
    18 å¸ƒã™ã‚‹å ´åˆã«ã¯ï¼Œå†é
    19 å¸ƒã«ä¼´ã†ãƒ‰ã‚­ãƒ¥ãƒ¡ãƒ³ãƒˆï¼ˆåˆ©ç”¨
    20 #       è€
    21 ãƒžãƒ‹ãƒ¥ã‚¢ãƒ«ãªã©ï¼‰ã«ï¼Œä¸Šè¨˜ã®è‘—作権表示,この利用条件および下記
    22 #       ã®ç„¡ä¿è¨¼è¦å®šã‚’掲載すること.
    23 #   (3) 本ソフトウェアを,機器に組み込むなど,他のソフトウェア開発に使
    24 #       ç”¨ã§ããªã„形で再é
    25 å¸ƒã™ã‚‹å ´åˆã«ã¯ï¼Œæ¬¡ã®ã„ずれかの条件を満たすこ
    26 #       ã¨ï¼Ž
    27 #     (a) 再é
    28 å¸ƒã«ä¼´ã†ãƒ‰ã‚­ãƒ¥ãƒ¡ãƒ³ãƒˆï¼ˆåˆ©ç”¨è€
    29 ãƒžãƒ‹ãƒ¥ã‚¢ãƒ«ãªã©ï¼‰ã«ï¼Œä¸Šè¨˜ã®è‘—
    30 #         ä½œæ¨©è¡¨ç¤ºï¼Œã“の利用条件および下記の無保証規定を掲載すること.
    31 #     (b) 再é
    32 å¸ƒã®å½¢æ
    33 ‹ã‚’,別に定める方法によって,TOPPERSプロジェクトに
    34 #         å ±å‘Šã™ã‚‹ã“と.
    35 #   (4) 本ソフトウェアの利用により直接的または間接的に生じるいかなる損
    36 #       å®³ã‹ã‚‰ã‚‚,上記著作権è€
    37 ãŠã‚ˆã³TOPPERSプロジェクトをå
    38 è²¬ã™ã‚‹ã“と.
    39 #       ã¾ãŸï¼Œæœ¬ã‚½ãƒ•ãƒˆã‚¦ã‚§ã‚¢ã®ãƒ¦ãƒ¼ã‚¶ã¾ãŸã¯ã‚¨ãƒ³ãƒ‰ãƒ¦ãƒ¼ã‚¶ã‹ã‚‰ã®ã„かなる理
    40 #       ç”±ã«åŸºã¥ãè«‹æ±‚からも,上記著作権è€
    41 ãŠã‚ˆã³TOPPERSプロジェクトを
    42 #       å
    43 è²¬ã™ã‚‹ã“と.
     8#   上記著作権者は,以下の(1)~(4)の条件を満たす場合に限り,本ソフトウェ
     9#   ア(本ソフトウェアを改変したものを含む.以下同じ)を使用・複製・改
     10#   変・再配布(以下,利用と呼ぶ)することを無償で許諾する.
     11#   (1) 本ソフトウェアをソースコードの形で利用する場合には,上記の著作
     12#       権表示,この利用条件および下記の無保証規定が,そのままの形でソー
     13#       スコード中に含まれていること.
     14#   (2) 本ソフトウェアを,ライブラリ形式など,他のソフトウェア開発に使
     15#       用できる形で再配布する場合には,再配布に伴うドキュメント(利用
     16#       者マニュアルなど)に,上記の著作権表示,この利用条件および下記
     17#       の無保証規定を掲載すること.
     18#   (3) 本ソフトウェアを,機器に組み込むなど,他のソフトウェア開発に使
     19#       用できない形で再配布する場合には,次のいずれかの条件を満たすこ
     20#       と.
     21#     (a) 再配布に伴うドキュメント(利用者マニュアルなど)に,上記の著
     22#         作権表示,この利用条件および下記の無保証規定を掲載すること.
     23#     (b) 再配布の形態を,別に定める方法によって,TOPPERSプロジェクトに
     24#         報告すること.
     25#   (4) 本ソフトウェアの利用により直接的または間接的に生じるいかなる損
     26#       害からも,上記著作権者およびTOPPERSプロジェクトを免責すること.
     27#       また,本ソフトウェアのユーザまたはエンドユーザからのいかなる理
     28#       由に基づく請求からも,上記著作権者およびTOPPERSプロジェクトを
     29#       免責すること.
    4430
    45 #   æœ¬ã‚½ãƒ•ãƒˆã‚¦ã‚§ã‚¢ã¯ï¼Œç„¡ä¿è¨¼ã§æä¾›ã•ã‚Œã¦ã„るものである.上記著作権è€
    46 ãŠ
    47 #   ã‚ˆã³TOPPERSプロジェクトは,本ソフトウェアに関して,特定の使用目的
    48 #   ã«å¯¾ã™ã‚‹é©åˆæ€§ã‚‚含めて,いかなる保証も行わない.また,本ソフトウェ
    49 #   ã‚¢ã®åˆ©ç”¨ã«ã‚ˆã‚Šç›´æŽ¥çš„または間接的に生じたいかなる損害に関しても,そ
    50 #   ã®è²¬ä»»ã‚’負わない.
     31#   本ソフトウェアは,無保証で提供されているものである.上記著作権者お
     32#   よびTOPPERSプロジェクトは,本ソフトウェアに関して,特定の使用目的
     33#   に対する適合性も含めて,いかなる保証も行わない.また,本ソフトウェ
     34#   アの利用により直接的または間接的に生じたいかなる損害に関しても,そ
     35#   の責任を負わない.
    5136
    5237#   $Id$
    5338#++
    5439
    55 #= BaseVal 整数、浮動小数などの値を扱うクラスの基底クラス
     40#= BaseVal 整数、浮動小数などの値を扱うクラスの基底クラス
    5641#
    57 # TECS の CDL で扱う値は、以下に分類される
    58 # ・整数
    59 # ・浮動小数
    60 # ・文字列
    61 # ・ブール値
    62 # 集成型(構造体、é
    63 åˆ—)と C_EXP はここでは扱わない
     42# TECS の CDL で扱う値は、以下に分類される
     43# ・整数
     44# ・浮動小数
     45# ・文字列
     46# ・ブール値
     47# 集成型(構造体、配列)と C_EXP はここでは扱わない
    6448#
    65 # このクラスで定義済みの演算子は、エラーとなる
    66 # 型により演算可能な場合、演算子をオーバーライドする
     49# このクラスで定義済みの演算子は、エラーとなる
     50# 型により演算可能な場合、演算子をオーバーライドする
    6751#
    6852class BaseVal < Node
     
    160144end
    161145
    162 #= Pointer 値 (IntegerVal の Pointer 版)
     146#= Pointer 値 (IntegerVal の Pointer 版)
    163147#
    164 # ポインタ値は、CDL で直接生成されることはない
    165 # 整数値のキャスト演算により生成される
     148# ポインタ値は、CDL で直接生成されることはない
     149# 整数値のキャスト演算により生成される
    166150class PointerVal < BaseVal
    167 #@int_val:: IntegerVal: IntegerVal でなくてはならない
    168 #@ptr_type:: PtrType: ポインタの指すå
    169 ˆã®åž‹
     151#@int_val:: IntegerVal: IntegerVal でなくてはならない
     152#@ptr_type:: PtrType: ポインタの指す先の型
    170153
    171154  def initialize( int_val, ptr_type )
     
    175158  end
    176159
    177   #=== ポインタの指すå
    178 ˆã®åž‹ã‚’å¾—ã‚‹
    179   # PointerVal 専用のメソッド
     160  #=== ポインタの指す先の型を得る
     161  # PointerVal 専用のメソッド
    180162  def get_type
    181163    @ptr_type
     
    183165
    184166  def cast type
    185     t = type.get_original_type   # typedef のå
    186 ƒã‚’å¾—ã‚‹
     167    t = type.get_original_type   # typedef の元を得る
    187168    if t.kind_of? IntType then
    188169      val = t.check_and_clip( @int_val, :IntType )
     
    213194end
    214195
    215 #= IntegerVal: 整数値を扱うクラス
     196#= IntegerVal: 整数値を扱うクラス
    216197class IntegerVal < BaseVal
    217198#@val:: Integer: value
     
    250231  def / val
    251232    if val.kind_of? FloatVal then
    252       v2 = val.to_f   # to_f を2回評価しない
     233      v2 = val.to_f   # to_f を2回評価しない
    253234      if v2 == 0.0 then
    254235        cdl_error( "V1009 / : divieded by zero"  )
     
    257238      return FloatVal.new( @val.to_f / v2 )
    258239    else
    259       v2 = val.to_i   # to_i を2回評価しない
     240      v2 = val.to_i   # to_i を2回評価しない
    260241      if v2 == 0 then
    261242        cdl_error( "V1010 / : divieded by zero"  )
     
    267248  def % val
    268249    if val.kind_of? FloatVal then
    269       v2 = val.to_f   # to_f を2回評価しない
     250      v2 = val.to_f   # to_f を2回評価しない
    270251      if v2 == 0.0 then
    271252        cdl_error( "V1011 % : divieded by zero"  )
     
    274255      return FloatVal.new( @val.to_f % v2 )
    275256    else
    276       v2 = val.to_i   # to_i を2回評価しない
     257      v2 = val.to_i   # to_i を2回評価しない
    277258      if v2 == 0 then
    278259        cdl_error( "V1012 % : divieded by zero"  )
     
    360341  end
    361342  def cast( type )
    362     t = type.get_original_type   # typedef のå
    363 ƒã‚’å¾—ã‚‹
     343    t = type.get_original_type   # typedef の元を得る
    364344    if t.kind_of? IntType then
    365345      val = t.check_and_clip( @val, :IntType )
     
    395375end
    396376
    397 #= BoolVal: bool 値を扱うクラス
     377#= BoolVal: bool 値を扱うクラス
    398378class BoolVal < BaseVal
    399379#@val:: bool: true, false
     
    437417  end
    438418  def cast( type )
    439     t = type.get_original_type   # typedef のå
    440 ƒã‚’å¾—ã‚‹
     419    t = type.get_original_type   # typedef の元を得る
    441420    if @val then
    442421      val = 1
     
    478457end
    479458
    480 #= FloatVal: 実数値を扱うクラス
     459#= FloatVal: 実数値を扱うクラス
    481460class FloatVal < BaseVal
    482461#@val:: Float
     
    496475  end
    497476  def / val
    498     v2 = val.to_f   # to_f を2回評価しない
     477    v2 = val.to_f   # to_f を2回評価しない
    499478    if v2 == 0.0 then
    500479      cdl_error( "V1017 / : divieded by zero"  )
     
    504483  end
    505484  def % val
    506     v2 = val.to_f   # to_f を2回評価しない
     485    v2 = val.to_f   # to_f を2回評価しない
    507486    if v2 == 0.0 then
    508487      cdl_error( "V1018 % : divieded by zero"  )
     
    536515  end
    537516  def cast( type )
    538     t = type.get_original_type   # typedef のå
    539 ƒã‚’å¾—ã‚‹
     517    t = type.get_original_type   # typedef の元を得る
    540518    if t.kind_of? IntType then
    541519      val = t.check_and_clip( @val, :FloatType )
     
    565543end
    566544
    567 #= 文字列リテラルを扱うクラス
     545#= 文字列リテラルを扱うクラス
    568546class StringVal < BaseVal
    569547#@str:: Token:
     
    573551    super()
    574552    @str = str
    575     @specifier = spec   # mikan L"str" wide 文字列未対応
     553    @specifier = spec   # mikan L"str" wide 文字列未対応
    576554  end
    577555
    578556  #===
    579557  #
    580   # string の cast はできない mikan ポインタ型への cast はできるべき
     558  # string の cast はできない mikan ポインタ型への cast はできるべき
    581559  def cast type
    582     t = type.get_original_type   # typedef のå
    583 ƒã‚’å¾—ã‚‹
     560    t = type.get_original_type   # typedef の元を得る
    584561    if t.kind_of? IntType then
    585562      cdl_error( "V1022 string cannot cast to integer"  )
     
    598575
    599576  def val
    600     @str.to_s   # Token で扱われていた名残 (val を取り出す)
     577    @str.to_s   # Token で扱われていた名残 (val を取り出す)
    601578  end
    602579end
Note: See TracChangeset for help on using the changeset viewer.