2010-06-14 2 views
6

나는 동일한 응용 프로그램 문서 정의를 강력한 클래스로 바꾸는 IDL 파서?

    • 모두 C++과 파이썬에서 액세스 할 수있는 클래스로 DOM- 또는 JSON 같은 문서 정의를 회전 번역기 IDL의 같은 (또는 무엇이든)를 찾고 있어요 (기본적으로 JSON 유형 기능 세트)
    • 편집 UI의보기를 새로 고치기 위해 변경 사항 추적 허용
    • 제공하는 문서 속성을 int, float, strings, binary blob 및 compound로 노출합니다. 실행 취소/다시 실행 작업을 가능하게하는 변경 내역
    • 는 스레드 안전 읽기/쓰기를 차단 비 제공만을 요청시로드 부품,
    • 디스크에 큰 데이터 청크를 유지 할 수 있도록 (바이너리 형식의 일종의 될 수 있습니다)와 JSON에서 직렬화 할 수 있습니다 실시간 스레드와 교환 데이터에 액세스
    • 는 다른 프로세스에서 여러 편집자 (또는 다른 컴퓨터에) 문서

    지금까지에 가장 가까운 블렌더 2.5 DNA/RNA 시스템 인 일을보고 수정할 수 있습니다 하지만 별도의 라이브러리로 제공되지 않으며 잘못 문서화되었습니다.

    나는 그러한 라이브러리가 아직 존재하지 않는다는 것을 확인하기 위해 무엇보다도 디자인과 글을 쓸 때 시간 낭비가 없다는 것을 알고있다. 그것은 편집 UI 구성 요소를 쓰는 위대한 기초를 제공하기로되어 있습니다.

  • +1

    추가 정보는이 질문을 한 지 몇 달 후입니다. 위의 질문에 대한 내 자신의 솔루션을 개발했습니다."Datenwerk은 모델/뷰/컨트롤러 패턴을 필요로하는 어플리케이션을 위해 데이터/모델 API를 제공하기 위해 GNU/Linux 및 Windows 용 MIT 라이센스 C 라이브러리입니다. 음악, 3D 내에서 사용하기에 가장 적합합니다 , 벡터 그래픽, 장면, 비디오 및 게임 편집기 등이 있으며 파이썬 용 바인딩이 포함되어 있습니다. " 프로젝트는 bitbucket.org/paniq/datenwerk에 있습니다. – paniq

    답변

    0

    SWIG이 모든 요구 사항을 충족시키지는 않지만 인터페이스가 C++ < -> python을 훨씬 쉽게 만듭니다.

    +0

    저는 거의 모든 C++ 코드를 성공적으로 래핑하는 유일한 래퍼이기 때문에 boost.python을 사용하여 인터페이스합니다. SWIG는 편하게하기 위해 너무 많이 조정해야합니다. – paniq

    +0

    지난번에 SWIG를 사용했고 루비와 함께 사용했습니다. boost.python을 알지 못했습니다. Neat – neoneye

    1

    ICE은 내가 생각할 수있는 가장 가까운 제품입니다. ICE로 디스크에 직렬화를 할 수 있는지는 모르겠지만 왜 그런지는 알 수 없습니다. 비용은 $$$입니다. 개인적으로 그들과 면허를 협상하지는 않았지만, ICE는이 영역에서 내가 아는 가장 큰 선수입니다.

    다음은 분산 객체 인 python에 대해 Pyro입니다. 오브젝티브 C (이럴 짜증 아이폰/아이 패드 개발자를위한 N/A)에

    분산 객체

    일부 C++ 분산 객체 라이브러리가있다 그러나 그들은 (CORBA가 마음에 온다) 대부분 죽은 사용할 수 없게입니다.

    이 유형의 기술에 대한 수요가 많을 것이라고 나는 말할 수 있습니다. off-the-shelf 솔루션은 매우 비싸기 때문에 필자는 직렬화 및 원격 객체에 대해 조사했습니다.

    사내에서 개발하는 데 도움이되는 오픈 소스 프레임 워크는 비동기 스레드 안전 읽기/쓰기 및 직렬화를위한 부스트 :: 직렬화를 위해 boost :: asio의 가닥을 권장합니다. JSON 기술에서 몹시 잘 읽지는 않았지만 this은 흥미로운 읽기처럼 보입니다.

    많은 프로젝트에서 혜택을 볼 수있는이 네트워킹/직렬화 접착제에 대해 이미 무료로 제공되는 것이 있으면 좋겠습니다.

    +0

    아직 ICE를 자세히 살펴 보지 못했지만 GPL 인 것 같습니다. Pyro는 좋은 생각이지만, 단 하나의 문제 만 해결합니다. 다른 제안을 주셔서 감사합니다. 이미 jsoncpp을 사용하고 있는데, boost.asio를 살펴볼 것입니다. – paniq

    +0

    ICE를 보았을 때, 그것은 또한 네트워킹 문제를 해결하는 것일뿐입니다.이 문제는 저의 목록에 우선 순위가 가장 낮습니다. – paniq

    +0

    약간의 발굴로 ICE는 축출기를 사용하여 객체를 데이터베이스에 "고정"할 수 있습니다. http://www.zeroc.com/doc/Ice-3.4.1/manual/Freeze.40.3.html#142337 – manifest