포인터 Protocol Buffers이 특정 문제를 제기입니다 : ... 내가 직렬화 복원시 다시 작성해야하는 여러 구조체가 실제로 같은 포인터를 참조 할 수 있고 단일 포인터를하고자한다고 가정
첫 번째에게
: 아이디어, 보일러 플레이트 코드를 방지하기 위해, 컴파일시 감상의 도구를 만드는 것입니다
이 두 매크로는 struct에 대해 사악한 정보를 생성하므로 컴파일 시간과 런타임 사이의 차이를 메워주는 Fusion 알고리즘과 함께 사용할 수 있습니다.
이제 데이터를 직렬화하고 비 직렬화 할 수있는 것이 필요합니다. 직렬화 해제는 대개 조금 더 어렵습니다. 여기에서는 다형성이 없기 때문에 (항상 어려운 일을 만듭니다) 여기에 있습니다.
일반적으로 첫 번째 패스에서는 직렬화 할 개체의 그래프를 식별하고 모든 ID를 할당하며 직렬화 할 때 포인터 대신이 ID를 사용합니다. -> (할당 된 객체에 대한 포인터를 설정할 수 없습니다 포인터의 목록)
는 ID의지도를 작성, 모든 개체를 할당
- 지도가 ID입니다 : 역 직렬화를 들어, 3 열 맵을 사용 매번 할당 된 객체에 대한 포인터
- ID를 deserialize 할 필요가있는 경우지도에서 찾아 볼 때 해당 포인터에 포인터를 올려 놓습니다.
- 포인터를 할당 된 객체에 놓으면 지도에서 '설정되지 않은'포인터를 모두 채우십시오 (동시에 목록을 제거하십시오)
물론 프레임 워크에서 처리하는 것이 좋습니다. s11n을 시도해 볼 수 있습니다. 올바르게 기억한다면 참조주기를 처리합니다.
내가 작성한 코드의 작은 줄에서 생성 된 코드가 많이 있습니다. –
@ acidzombie24 : 그게 전부입니다 :-) 누군가가 이미 당신을 위해서 일했던 것입니다. –