2010-06-14 26 views
6

Tôi đang tìm kiếm một IDL-like (hoặc bất kỳ) dịch mà biến một định nghĩa tài liệu dom- hoặc JSON như vào các lớp học màTrình phân tích cú pháp giống IDL biến một định nghĩa tài liệu thành các lớp mạnh mẽ?

  • có thể truy cập từ cả C++ và Python, trong cùng một ứng dụng
  • phơi bày các thuộc tính của tài liệu dưới dạng ints, float, strings, blobs nhị phân và các hợp chất: mảng, chuỗi dict (cả hai có thể lồng được) (về cơ bản là tính năng loại JSON)
  • cho phép thay đổi được theo dõi để làm mới giao diện người dùng chỉnh sửa
  • cung cấp lịch sử thay đổi để bật các hoạt động hoàn tác/làm lại
  • có thể được tuần tự hóa và từ JSON (cũng có thể là một dạng định dạng nhị phân)
  • cho phép giữ khối dữ liệu lớn trên đĩa, với các phần chỉ được tải theo yêu cầu
  • cung cấp đọc/ghi an toàn không chặn quyền truy cập vào dữ liệu trao đổi với chủ đề thời gian thực
  • phép nhiều biên tập viên trong các quá trình khác nhau (hoặc thậm chí trên các máy khác nhau) để xem và chỉnh sửa các tài liệu

điều mà đến gần nhất cho đến nay là Blender 2.5 DNA/hệ thống RNA , nhưng nó không có sẵn như là một thư viện riêng biệt, và được ghi lại tài liệu.

Tôi hầu hết đều cố gắng đảm bảo rằng một thư viện như vậy chưa tồn tại, vì vậy tôi biết thời gian của mình không bị lãng phí khi tôi bắt đầu thiết kế và viết một thứ như vậy. Nó được cho là cung cấp một nền tảng tuyệt vời để viết các thành phần chỉnh sửa giao diện người dùng.

+1

Thông tin bổ sung, một vài tháng sau khi đặt câu hỏi này: Tôi đã phát triển giải pháp của riêng mình cho vấn đề nằm phía trên câu hỏi.Dưới đây là tóm tắt dự án: "Datenwerk là thư viện C được cấp phép của MIT cho GNU/Linux và Windows nhằm cung cấp API dữ liệu/mô hình cho các ứng dụng yêu cầu kiểu mô hình/xem/bộ điều khiển. , đồ họa vector, cảnh, biên tập video và trò chơi. Bindings for Python được bao gồm. ". Dự án được đặt tại bitbucket.org/paniq/datenwerk – paniq

Trả lời

0

SWIG không đáp ứng tất cả các yêu cầu của bạn, nhưng thực hiện giao tiếp C++ < -> python dễ dàng hơn rất nhiều.

+0

Tôi đang sử dụng boost.python để giao diện, chủ yếu là vì nó là trình bao bọc duy nhất kết thúc thành công hầu như tất cả mã C++. SWIG cần cách chỉnh sửa quá nhiều để cảm thấy thoải mái. – paniq

+0

Đã lâu rồi tôi sử dụng SWIG và đó là với ruby. Tôi không biết về boost.python. Neat – neoneye

1

ICE là sản phẩm gần nhất tôi có thể nghĩ đến. Tôi không biết nếu bạn có thể làm serialization vào đĩa với ICE, nhưng tôi không thể nghĩ ra một lý do tại sao nó sẽ không. Vấn đề là nó chi phí $$$. Tôi chưa đích thân thương thảo một giấy phép với họ, nhưng ICE là người chơi lớn nhất mà tôi biết trong lĩnh vực này.

Sau đó, bạn có Pyro cho python là Đối tượng được phân phối.

Đối tượng phân tán trong Objective-C (N/A cho iPhone/iPad Dev, mà sucks IMHO)

Có một số C++ phân phối các thư viện đối tượng nhưng chúng chủ yếu là chết và không sử dụng được (CORBA nói đến cái tâm).

Tôi có thể cho bạn biết rằng sẽ có rất nhiều nhu cầu về loại công nghệ này. Tôi đã được delving vào một số serialization và các công cụ đối tượng từ xa kể từ khi các giải pháp off-the-shelf có thể rất tốn kém.

Đối với các khung công tác nguồn mở để giúp bạn phát triển nội bộ, tôi khuyên bạn nên tăng cường :: chuỗi của asio để đọc/ghi an toàn thread async và tăng cường :: serialization cho tuần tự hóa. Tôi không đọc kỹ về công nghệ JSON nhưng this trông giống như một bài đọc thú vị.

Tôi muốn một cái gì đó tự do có sẵn đã tồn tại cho mạng này/serialization keo mà rất nhiều dự án có thể được hưởng lợi từ.

+0

Chưa có một cái nhìn gần gũi về ICE nhưng có vẻ như là GPL, điều đó chỉ tốt cho tôi. Pyro là một ý tưởng hay, nhưng chỉ giải quyết được một vấn đề. Cảm ơn các đề xuất khác. Tôi đang sử dụng jsoncpp rồi, sẽ có một cái nhìn tại boost.asio. – paniq

+0

Tôi đã xem xét ICE và có vẻ như nó cũng chỉ giải quyết vấn đề về mạng, vấn đề này có mức độ ưu tiên thấp nhất trong danh sách của tôi. – paniq

+0

Một thông tin nhỏ cho thấy ICE có thể "Cố định" đối tượng vào cơ sở dữ liệu bằng cách sử dụng Evictors: http://www.zeroc.com/doc/Ice-3.4.1/manual/Freeze.40.3.html#142337 – manifest

Các vấn đề liên quan