Ruby Marshal 바이너리 파일을 읽는 C++ 프로그램을 개발 중
Ruby의 Marshal(직렬화)된 포맷 바이너리를 읽어서 출력하는 C++ 프로그램을 만들고 있다.
몇몇 루비 토큰(Ruby 자료형을 구분하는 1개의 문자)들은 아직 처리하지 못했다. 대표적으로 USER_DEF 토큰이 그렇다.
토큰 정보는 아래 링크에서 많은 도움을 얻었다.
https://docs.ruby-lang.org/en/2.1.0/marshal_rdoc.html
아래는 C++ 출력 결과이다.
Start reading "marshals/marshal/game_system_instance.rxdata"
object of class Game_System
:@encounter_disabled
false
:@magic_number
66
:@timer
99
:@save_count
77
:@map_interpreter
object of class Interpreter
:@wait_count
0
:@depth
0
:@branch
{
}
:@message_waiting
false
:@child_interpreter
nil
:@event_id
0
:@button_input_variable_id
0
:@main
true
:@move_route_waiting
false
:@map_id
0
:@menu_disabled
false
:@message_frame
88
:@save_disabled
false
:@battle_interpreter
object of class Interpreter
:@wait_count
444
:@depth
0
:@branch
{
"key"
"value"
}
:@message_waiting
true
:@child_interpreter
nil
:@event_id
222
:@button_input_variable_id
333
:@main
false
:@move_route_waiting
false
:@map_id
111
:@message_position
2
:@timer_working
false
Data 폴더 내에 있는 모든 rxdata를 읽을 수 있는지 검증된 후에는, 이 데이터를 C++에서 어떻게 다루고 관리할지 큰 고민이 필요할 것이다.
댓글
댓글 쓰기