- Timestamp:
- May 22, 2019, 10:03:37 PM (5 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
azure_iot_hub/trunk/asp3_dcre/tecsgen/tecslib/plugin/lib/GenHRP2Marshaler.rb
-
Property svn:mime-type
changed from
text/x-ruby
totext/x-ruby;charset=UTF-8
r388 r389 6 6 # Copyright (C) 2008-2014 by TOPPERS Project 7 7 #-- 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 # 免責すること. 44 30 # 45 # æ¬ã½ããã¦ã§ã¢ã¯ï¼ç¡ä¿è¨¼ã§æä¾ããã¦ãããã®ã§ããï¼ä¸è¨èä½æ¨©è 46 ã 47 # ãã³TOPPERSããã¸ã§ã¯ãã¯ï¼æ¬ã½ããã¦ã§ã¢ã«é¢ãã¦ï¼ç¹å®ã®ä½¿ç¨ç®ç 48 # ã«å¯¾ããé©åæ§ãå«ãã¦ï¼ãããªãä¿è¨¼ãè¡ããªãï¼ã¾ãï¼æ¬ã½ããã¦ã§ 49 # ã¢ã®å©ç¨ã«ããç´æ¥çã¾ãã¯éæ¥çã«çãããããªãæ害ã«é¢ãã¦ãï¼ã 50 # ã®è²¬ä»»ãè² ããªãï¼ 31 # 本ソフトウェアは,無保証で提供されているものである.上記著作権者お 32 # よびTOPPERSプロジェクトは,本ソフトウェアに関して,特定の使用目的 33 # に対する適合性も含めて,いかなる保証も行わない.また,本ソフトウェ 34 # アの利用により直接的または間接的に生じたいかなる損害に関しても,そ 35 # の責任を負わない. 51 36 # 52 37 # $Id$ 53 38 #++ 54 39 55 # ãã©ã°ã¤ã³ãªãã·ã§ã³ç¨å¤æ°40 #プラグインオプション用変数 56 41 #@task_priority:: Integer 57 42 #@channelCelltype:: String … … 60 45 module GenTransparentMarshaler 61 46 62 # ãã©ã°ã¤ã³å¼æ°åã¨Proc47 # プラグイン引数名と Proc 63 48 RPCPluginArgProc = { 64 49 "taskPriority" => Proc.new { |obj,rhs| obj.set_taskPriority rhs }, … … 69 54 } 70 55 71 #=== ãã©ã°ã¤ã³å¼æ° taskPriority ã®ãã§ãã¯56 #=== プラグイン引数 taskPriority のチェック 72 57 def set_taskPriority( rhs ) 73 58 @task_priority = rhs 74 59 end 75 60 76 #=== ãã©ã°ã¤ã³å¼æ° channelCelltype ã®ãã§ãã¯61 #=== プラグイン引数 channelCelltype のチェック 77 62 def set_channelCelltype( rhs ) 78 63 @channelCelltype = rhs.to_sym … … 86 71 end 87 72 88 #=== ãã©ã°ã¤ã³å¼æ° TDRCelltype ã®ãã§ãã¯73 #=== プラグイン引数 TDRCelltype のチェック 89 74 def set_TDRCelltype( rhs ) 90 75 @TDRCelltype = rhs.to_sym … … 98 83 end 99 84 100 #=== ãã©ã°ã¤ã³å¼æ° channelCellName ã®ãã§ãã¯85 #=== プラグイン引数 channelCellName のチェック 101 86 def set_channelCellName( rhs ) 102 87 @channelCellName = rhs … … 108 93 end 109 94 110 #=== ãã©ã°ã¤ã³å¼æ° PPAllocatorSize ã®ãã§ãã¯95 #=== プラグイン引数 PPAllocatorSize のチェック 111 96 def set_PPAllocatorSize( rhs ) 112 97 @PPAllocatorSize = rhs 113 98 end 114 99 115 #=== marshaler ã®ã»ã«ã¿ã¤ãåãè¨å®ãã100 #=== marshaler のセルタイプ名を設定する 116 101 def initialize_transparent_marshaler cell_name 117 102 @task_priority = 8 … … 135 120 136 121 f = CFile.open( @marshaler_celltype_file_name, "w" ) 137 # åãå 138 容ãäºåº¦æ¸ãå¯è½æ§ãã (AppFile ã¯ä¸å¯) 122 # 同じ内容を二度書く可能性あり (AppFile は不可) 139 123 140 124 # modified by ishikawa … … 164 148 end 165 149 166 #=== åãå£é¢æ°ã®æ¬ä½ã³ã¼ããçæï¼é é¨ã¨æ«å°¾ã¯å¥éåºåï¼167 #ct_name:: Symbol (through ãã©ã°ã¤ã³ã§çæããã) ã»ã«ã¿ã¤ãå ï¼Symbol ã¨ãã¦éããã¦ããï¼ãããï¼150 #=== 受け口関数の本体コードを生成(頭部と末尾は別途出力) 151 #ct_name:: Symbol (through プラグインで生成された) セルタイプ名 .Symbol として送られてくる(らしい) 168 152 def gen_ep_func_body( file, b_singleton, ct_name, global_ct_name, sig_name, ep_name, func_name, func_global_name, func_type, params ) 169 153 170 # unmarshaler ã¯ã©ã¹ã?154 # unmarshaler クラスか? 171 155 if ct_name == @unmarshaler_celltype_name.to_sym then 172 156 gen_ep_func_body_unmarshal( file, b_singleton, ct_name, global_ct_name, sig_name, ep_name, func_name, func_global_name, func_type, params ) … … 176 160 end 177 161 178 #=== marshal ã³ã¼ãã®çæ162 #=== marshal コードの生成 179 163 def gen_ep_func_body_marshal( file, b_singleton, ct_name, global_ct_name, sig_name, ep_name, func_name, func_global_name, func_type, params ) 180 164 … … 182 166 b_ret_er = false 183 167 184 # é¢æ°ã®æ»ãå¤ã®å 185 ã®åãå¾ã(typedef ããã¦ããå ´å) 168 # 関数の戻り値の元の型を得る(typedef されている場合) 186 169 type = func_type.get_type.get_original_type 187 170 188 # æ»ãå¤è¨æ¶ç¨ã®å¤æ°ãåºåï¼void åã®é¢æ°ã§ã¯åºåããªãï¼171 # 戻り値記憶用の変数を出力(void 型の関数では出力しない) 189 172 if ! type.kind_of?( VoidType ) then 190 173 if func_type.get_type.kind_of?( DefinedType ) && ( func_type.get_type.get_type_str == "ER" || func_type.get_type.get_type_str == "ER_INT" ) then … … 201 184 file.print( " FLGPTN flgptn;\n" ) 202 185 203 # å¼ã³å 204 ã® signature ãåãåºã 186 # 呼び先の signature を取り出す 205 187 signature = @signature 206 188 207 # é¢æ° ID ï¼æ´æ°å¤ï¼189 # 関数 ID (整数値) 208 190 func_id = signature.get_id_from_func_name( func_name ) 209 191 file.print( " int16_t func_id_ = #{func_id}; /* id of #{func_name}: #{func_id} */\n" ) … … 211 193 file.print( " uint8_t msg[256];\n" ) 212 194 213 # ã·ã³ã°ã«ãã³ã§ãªããï¼195 # シングルトンでないか? 214 196 if ! b_singleton then 215 197 216 # singleton ã§ãªããã° p_cellcb åå¾ã³ã¼ããåºå198 # singleton でなければ p_cellcb 取得コードを出力 217 199 file.print <<EOT 218 200 #{ct_name}_CB *p_cellcb; … … 222 204 EOT 223 205 224 # ã¨ã©ã¼ãè¿ããï¼206 # エラーを返すか? 225 207 if b_ret_er then 226 208 file.print <<EOT … … 232 214 file.print <<EOT 233 215 }else{ 234 /* ã¨ã©ã¼å¦çã³ã¼ããããã«è¨è¿°*/235 } 236 EOT 237 end 238 end 239 240 # channel lock ã³ã¼ã216 /* エラー処理コードをここに記述 */ 217 } 218 EOT 219 end 220 end 221 222 # channel lock コード 241 223 file.print <<EOT 242 224 ///* Channel Lock */ … … 247 229 248 230 =begin 249 # SOP ãéä¿¡250 file.print " /* SOP ã®éåº*/\n"231 # SOP を送信 232 file.print " /* SOPの送出 */\n" 251 233 file.print " if( ( ercd_ = cTDR_sendSOP( true ) ) != E_OK )\n" 252 234 file.print " goto error_reset;\n" 253 235 =end 254 236 255 # func_id ãéä¿¡256 file.print " /* é¢æ° id ã®éåº*/\n"237 # func_id を送信 238 file.print " /* 関数 id の送出 */\n" 257 239 =begin 258 240 file.print " if( ( ercd_ = cTDR_putInt16( func_id_ ) ) != E_OK )\n" … … 264 246 # p "#{ct_name}, #{sig_name}, #{func_name}, #{func_global_name}" 265 247 266 b_get = false # marshal ãªãput248 b_get = false # marshal なら put 267 249 b_marshal = true # marshal 268 250 269 # in æ¹åã®å 270 ¥åºåãåºå 251 # in 方向の入出力を出力 271 252 @index = 2 272 file.print " /* å 273 ¥åå¼æ°éåº */\n" 253 file.print " /* 入力引数送出 */\n" 274 254 print_params( params, file, 1, b_marshal, b_get, true, func_type.is_oneway? ) 275 255 print_params( params, file, 1, b_marshal, b_get, false, func_type.is_oneway? ) … … 281 261 =end 282 262 283 file.print " /* EOP ã®éåºï¼ãã±ããã®æãã ãï¼*/\n"263 file.print " /* EOPの送出(パケットの掃きだし) */\n" 284 264 if ! func_type.is_oneway? then 285 265 b_continue = "true" … … 316 296 317 297 if( b_void == false )then 318 # å¼ã³å 319 ã«æ»ãå¤ããªã¿ã¼ã³ 298 # 呼び元に戻り値をリターン 320 299 file.print( " cMessageBuffer_receive(&retval_);\n" ) 321 300 file.print( " return retval_;\n" ) … … 333 312 EOT 334 313 335 # channel lock ã³ã¼ã314 # channel lock コード 336 315 file.print <<EOT 337 316 ///* Channel Lock */ … … 342 321 343 322 if( b_ret_er != false )then 344 # å¼ã³å 345 ã«æ»ãå¤ããªã¿ã¼ã³ 323 # 呼び元に戻り値をリターン 346 324 file.print( " return ercd_;\n" ) 347 325 else … … 351 329 end 352 330 353 #=== unmarshal ã³ã¼ãã®çæ331 #=== unmarshal コードの生成 354 332 def gen_ep_func_body_unmarshal( file, b_singleton, ct_name, global_ct_name, sig_name, ep_name, func_name, func_global_name, func_type, params ) 355 333 … … 357 335 b_ret_er = false 358 336 359 # func_id ãå¾ãã³ã¼ããçæ337 # func_id を得るコードを生成 360 338 file.print <<EOT 361 339 … … 378 356 file.print <<EOT 379 357 }else{ 380 /* ã¨ã©ã¼å¦çã³ã¼ããããã«è¨è¿°*/358 /* エラー処理コードをここに記述 */ 381 359 } 382 360 EOT … … 388 366 389 367 #if 0 390 /* SOP ã®ãã§ãã¯*/368 /* SOPのチェック */ 391 369 if( (ercd_=cTDR_receiveSOP( false )) != E_OK ) 392 370 goto error_reset; 393 /* func_id ã®åå¾*/371 /* func_id の取得 */ 394 372 if( (ercd_=cTDR_getInt16( &func_id_ )) != E_OK ) 395 373 goto error_reset; … … 406 384 EOT 407 385 408 # å¼ã³å 409 ã® signature ãåãåºã 386 # 呼び先の signature を取り出す 410 387 # port = @celltype.find( @next_cell_port_name ) 411 388 # signature = port.get_signature 412 389 signature = @signature 413 390 414 # through ã® signature ã«å«ã¾ãã ãã¹ã¦ã®é¢æ°ã«ã¤ãã¦391 # through の signature に含まれる すべての関数について 415 392 signature.get_function_head_array.each { |f| 416 393 f_name = f.get_name … … 418 395 id = signature.get_id_from_func_name( f_name ) 419 396 420 # é¢æ°ã¯è¿ãå¤ãæã¤ã?397 # 関数は返り値を持つか? 421 398 if f_type.get_type.kind_of?( VoidType ) then 422 399 b_void = true … … 425 402 end 426 403 427 # ãã±ããã®çµããããã§ãã¯ï¼æªåãåãã®ãã¼ã¿ãæ®ã£ã¦ããªãããã§ãã¯ï¼404 # パケットの終わりをチェック(未受け取りのデータが残っていないかチェック) 428 405 file.print " case #{id}: /*** #{f_name} ***/ \n" 429 406 file.print " if( tTransparentUnmarshaler_#{@signature.get_name}_#{f_name}() != E_OK )\n" … … 434 411 435 412 if @PPAllocatorSize then 436 ppallocator_dealloc_str = " /* PPAllocator ã®ãã¹ã¦ã解æ¾*/\n cPPAllocator_dealloc_all();"413 ppallocator_dealloc_str = " /* PPAllocator のすべてを解放 */\n cPPAllocator_dealloc_all();" 437 414 else 438 415 ppallocator_dealloc_str = "" … … 442 419 file.print <<EOT 443 420 default: 444 #if 0 // deleted by ishikawa: tSysLogãæªå®è£ 445 421 #if 0 // deleted by ishikawa: tSysLogが未実装 446 422 syslog(LOG_INFO, "unmarshaler task: ERROR: unknown func_id: %d", func_id_ ); 447 423 #endif /* 0 */ … … 464 440 465 441 # IN b_marshal, b_get 466 # b_marshal = true && b_get == false : ãã¼ã·ã£ã©ã§å 467 ¥åå¼æ°éåº 468 # b_marshal = true && b_get == true : ãã¼ã·ã£ã©ã§åºåå¼æ°åå 469 # b_marshal = false && b_get == true : ã¢ã³ãã¼ã·ã£ã©ã§å 470 ¥åå¼æ°åå 471 # b_marshal = false && b_get == get : ã¢ã³ãã¼ã·ã£ã©ã§åºåå¼æ°éåº 442 # b_marshal = true && b_get == false : マーシャラで入力引数送出 443 # b_marshal = true && b_get == true : マーシャラで出力引数受取 444 # b_marshal = false && b_get == true : アンマーシャラで入力引数受取 445 # b_marshal = false && b_get == get : アンマーシャラで出力引数送出 472 446 def print_params( params, file, nest, b_marshal, b_get, b_referenced, b_oneway = false ) 473 447 params.each{ |param| … … 480 454 type = param.get_type 481 455 if b_oneway && dir == :IN && type.get_original_type.kind_of?( PtrType ) || type.get_original_type.kind_of?( ArrayType ) then 482 # oneway, in, PtrType ã®å ´åã³ãã¼456 # oneway, in, PtrType の場合コピー 483 457 alloc_cp = "cPPAllocator_alloc" 484 458 alloc_cp_extra = nil … … 502 476 end 503 477 504 #=== ã³ãã¼ããªãå¼æ°æ¸¡ãã³ã¼ãã®åºå478 #=== コピーしない引数渡しコードの出力 505 479 def print_param_nc( name, type, file, nest, b_marshal, outer, outer2, b_get ) 506 480 indent = " " * ( nest + 1 ) … … 522 496 when :SIGNED 523 497 if bit_size == -1 || bit_size == -11 then 524 # signed char ã®å ´åãsigned ãæå®ãã498 # signed char の場合、signed を指定する 525 499 signC = "S" 526 500 sign = "s" … … 641 615 642 616 643 #=== PREAMBLE é¨ã®ã³ã¼ãçæ644 # ã¢ã³ãã¼ã·ã£ã©ã»ã«ã¿ã¤ãã®å ´åãã¢ã³ãã¼ã·ã£ã©é¢æ°ã®ãããã¿ã¤ã宣è¨ãçæ617 #=== PREAMBLE 部のコード生成 618 # アンマーシャラセルタイプの場合、アンマーシャラ関数のプロトタイプ宣言を生成 645 619 def gen_preamble file, b_singleton, ct_name, global_name 646 620 if ct_name != @unmarshaler_celltype_name.to_sym then … … 648 622 end 649 623 650 file.print "/* ã¢ã³ãã¼ã·ã£ã©é¢æ°ã®ãããã¿ã¤ã宣è¨*/\n"651 # signature ã«å«ã¾ãã ãã¹ã¦ã®é¢æ°ã«ã¤ãã¦624 file.print "/* アンマーシャラ関数のプロトタイプ宣言 */\n" 625 # signature に含まれる すべての関数について 652 626 @signature.get_function_head_array.each { |f| 653 627 f_name = f.get_name … … 661 635 end 662 636 663 #=== POSTAMBLE é¨ã®ã³ã¼ãçæ664 # ã¢ã³ãã¼ã·ã£ã©ã»ã«ã¿ã¤ãã®å ´åãã¢ã³ãã¼ã·ã£ã©é¢æ°ã®çæ637 #=== POSTAMBLE 部のコード生成 638 # アンマーシャラセルタイプの場合、アンマーシャラ関数の生成 665 639 def gen_postamble file, b_singleton, ct_name, global_name 666 640 if ct_name != @unmarshaler_celltype_name.to_sym then … … 668 642 end 669 643 670 file.print "\n/*** ã¢ã³ãã¼ã·ã£ã©é¢æ°***/\n\n"644 file.print "\n/*** アンマーシャラ関数 ***/\n\n" 671 645 @signature.get_function_head_array.each { |f| 672 646 f_name = f.get_name … … 674 648 id = @signature.get_id_from_func_name( f_name ) 675 649 676 # é¢æ°ã¯è¿ãå¤ãæã¤ã?650 # 関数は返り値を持つか? 677 651 if f_type.get_type.kind_of?( VoidType ) then 678 652 b_void = true … … 692 666 file.print " ER ercd_;\n" 693 667 694 # å¼æ°ãååãå¤æ°ã®å®ç¾©668 # 引数を受取る変数の定義 695 669 param_list = f.get_declarator.get_type.get_paramlist.get_items 696 670 # FuncHead-> Decl-> FuncType->ParamList … … 707 681 end 708 682 709 type_str = type.get_type_str.gsub( /\bconst\b */, "" ) # "const" ãå¤ã683 type_str = type.get_type_str.gsub( /\bconst\b */, "" ) # "const" を外す 710 684 711 685 file.printf( " %-12s %s%s%s%s;\n", type_str, aster, name, aster2, type.get_type_str_post ) 712 686 } 713 687 714 # æ»ãå¤ãåãåãå¤æ°ã®å®ç¾©688 # 戻り値を受け取る変数の定義 715 689 if ! b_void then 716 690 if f.is_oneway? then 717 retval_ptr = "" # oneway ã®å ´åãåãåããæ¨ã¦ããã691 retval_ptr = "" # oneway の場合、受け取るが捨てられる 718 692 else 719 693 # =begin ishikawa modified … … 725 699 end 726 700 727 # in æ¹åã®å 728 ¥åºåãå 729 ¥å 730 file.print "\n /* å 731 ¥åå¼æ°åå */\n" 732 b_get = true # unmarshal ã§ã¯ get 701 # in 方向の入出力を入力 702 file.print "\n /* 入力引数受取 */\n" 703 b_get = true # unmarshal では get 733 704 b_marshal = false 734 705 @index = 2 … … 741 712 end 742 713 =end 743 # ãã±ããã®åä¿¡å®äº744 # mikan æ¬å½ã¯ã対象é¢æ°ãå¼åºãå¾ã«å®æ½ãããï¼å¼åºããã±ããã®ä½¿ç¨çµããã宣è¨ããç®çã¨ãã¦745 file.print " /* ãã±ããçµããããã§ãã¯*/\n"714 # パケットの受信完了 715 # mikan 本当は、対象関数を呼出す後に実施したい.呼出しパケットの使用終わりを宣言する目的として 716 file.print " /* パケット終わりをチェック */\n" 746 717 if ! f.is_oneway? then 747 718 b_continue = "true" … … 753 724 file.print " goto error_reset;\n\n" 754 725 =end 755 # 対象é¢æ°ãå¼åºã756 file.print " /* 対象é¢æ°ã®å¼åºã*/\n"726 # 対象関数を呼出す 727 file.print " /* 対象関数の呼出し */\n" 757 728 if b_void then 758 729 file.print( " cServerCall_#{f_name}(" ) … … 769 740 file.print( " );\n" ) 770 741 771 # æ»ãå¤ãåºåå¼æ°ã®ååã³ã¼ãã®çæ742 # 戻り値、出力引数の受取コードの生成 772 743 773 744 if ! b_void && ! f.is_oneway? then … … 776 747 777 748 end 778 # oneway ã®å ´ååºåãæ»ãå¤ãç¡ããååãå¾ 779 ããªãï¼éåæãªå¼åºãï¼ 749 # oneway の場合出力、戻り値が無く、受取を待たない(非同期な呼出し) 780 750 if ! f.is_oneway? then 781 751 file.print <<EOT 782 /* é¢æ°å¦çã®çµäºãéç¥*/752 /* 関数処理の終了を通知 */ 783 753 if( ( ercd_ = cEventflag_set( 0x01 ) ) != E_OK ){ 784 754 goto error_reset; -
Property svn:mime-type
changed from
Note:
See TracChangeset
for help on using the changeset viewer.