더북(TheBook)

EPrimitiveType으로 멤버 변수의 원시 자료형을 표기한다. 위의 구현에선 int, float, string, 이렇게 세 가지 원시 자료형만 지원하지만 원한다면 다른 자료형도 쉽게 추가할 수 있다.

MemberVariable 클래스는 복합 자료형에 들어 있는 하나의 멤버 변수를 나타낸다. 여기에 멤버 변수의 이름(디버깅용), 그 원시 자료형, 그리고 자신이 포함된 복합 자료형 위의 메모리 오프셋 정보를 저장해 둔다. 오프셋을 저장해 두는 게 아주 중요한데, 직렬화 코드가 이 오프셋 값을 주어진 객체의 기준 주소에 더해 멤버 변수가 위치한 메모리상 주소를 알아낼 수 있기 때문이다. 바로 이것이 멤버 변수의 값을 읽고 쓸 수 있는 비결이다.

이렇게 만든 모든 멤버 변수를 코드 마지막의 DataType 클래스에 모아둔다. 데이터 주도 직렬화가 필요한 클래스마다 이에 대응되는 DataType 인스턴스를 만들어야 한다. 리플렉션 기본 시스템이 준비되면 다음 코드로 예제 클래스의 리플렉션 데이터를 초기화한다.

신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.