2012-04-10 40 views

Trả lời

3

Điều bạn có thể làm là xác định thẻ tùy chỉnh có tên là Khái niệm, sau đó bạn có thể sử dụng thẻ này như mô tả. Một example của việc này là sử dụng cơ chế bí danh trong Doxygen, một cái gì đó như:

bí danh + = "con = \ xrefitem con \" Khái niệm \ "\ "Các khái niệm \""

+3

Tôi xin lỗi, nhưng không rõ ràng cách xác định bí danh sẽ giúp trong các khái niệm tài liệu. Bạn có thể mở rộng câu trả lời này, có lẽ với một ví dụ? –

2

Bạn có thể sử dụng \tparam để nhận xét/tài liệu trên template parameters.

+1

Tôi có thể sử dụng '\ tparam' để nói rằng lớp khởi tạo tham số mẫu này nên được triển khai theo khái niệm xyz. Nhưng làm thế nào bản thân tài liệu khái niệm? – proto

+0

Không chắc tôi hiểu những gì bạn đang tìm kiếm. Bạn có thể tạo một '\ note' để nói rằng khái niệm xyz là như vậy, nhưng đó có lẽ không phải là nơi tốt nhất để viết tài liệu cho chính khái niệm đó. Nếu bạn có một lớp/cấu trúc thực tế cho khái niệm, bạn có thể viết tài liệu cho nó như bất kỳ lớp nào khác – Attila

+1

Vì không có cách nào để chỉ định một khái niệm bằng cách sử dụng C++ (chưa) không có lớp (hoặc tệp) mô tả khái niệm. Chỉ có các lớp thực hiện nó. Tôi tự hỏi nếu có một cách thành lập để vượt qua điều này và bao gồm tài liệu cho các khái niệm trong sản lượng doxygen của tôi. – proto

1

Tôi hiện đang sử dụng trang hướng dẫn riêng để ghi lại các khái niệm và nhóm với \section\subsection. Sau đó tôi có thể liên kết với họ bằng \ref. Điều này hoạt động miễn là bạn mô tả các khái niệm có các bảng như trong liên kết bạn đã cung cấp, nhưng rất tiếc sẽ không cho phép các liên kết đến các phần đơn lẻ.

Tôi cũng có bí danh để tạo danh sách các khái niệm mô hình kiểu.

+0

+1 vì câu trả lời của bạn đã giúp tôi tham khảo các phần của mình. –

6

Sau khi gặp khó khăn với Doxygen, cuối cùng tôi đã đến giải pháp sau.

  1. Xác định nhóm cho khái niệm của bạn: sử dụng các trang không phù hợp vì trang phải biểu thị các trang con của nó (từ trên xuống dưới); Điều này cho phép:

    • Thêm một khái niệm để một (hoặc nhiều) khái niệm mẹ (s), mà không thay đổi các khái niệm mẹ mình (tinh/tổng quát của khái niệm)
    • Linking một thực thể với một số khái niệm, mà không thay đổi khái niệm riêng của mình (ví dụ. khi thêm một lớp đến thư viện thực hiện một khái niệm cụ thể)

    Ví dụ

    /*[email protected] measurement_functor_concepts Measurement function objects 
    * @ingroup generalconcepts 
    * @{ 
    * @par Description 
    * blablabla 
    * 
    * @par Notations 
    * Let @c F be the type of the function object, @c f an instance. 
    * 
    * @par Valid Expressions 
    * - @c f function object is ... 
    * - <b>f.result()</b> returns ... 
    * @} 
    */ 
    
  2. Xác định lệnh tùy chỉnh concept với một đối số:

    ALIASES += concept{1}="@ingroup \1\[email protected] Implemented concepts:\[email protected] \1" 
    

    Lệnh:

    • bao gồm các thực thể vào nhóm xác định các khái niệm: đơn vị sẽ xuất hiện trong tài liệu của khái niệm (các thực thể có thể xuất hiện trong một số nhóm)
    • thêm đoạn có số Implemented concepts cung cấp liên kết đến khái niệm được triển khai.
  3. Cho biết một lớp học đặc biệt/struct thực hiện các khái niệm:

    //[email protected] Does things... 
    //[email protected]{measurement_functor_concepts} 
    template <class T> 
    struct my_struct: public std::unary_function<T, void> {}; 
    

tôi không tìm thấy một cách để tạo ra một tài liệu thoải mái như ở Boost (bảng tốt đẹp cho sự biểu hiện hợp lệ, vv), nhưng ít nhất tổ chức này của tài liệu phân tách mọi thứ một cách chính xác.

1

Tôi khuyên bạn nên cân nhắc những điều sau:

a) Xem tài liệu cho thư viện Kiểm tra khái niệm tăng cường. Tài liệu này cho bạn thấy cách tạo một lớp có thể được sử dụng trong mã của bạn để xác minh rằng ở loại thực sự đáp ứng các yêu cầu của khái niệm mà bạn muốn xác định. Bạn sử dụng nó như thế này:

template<typename T> 
my_class{ 
    MyConcept(T); // provokes compile error if T does not match concept 
    T m_t; 
}; 

FYI có một 1-1 tương ứng giữa các yếu tố được sử dụng trong việc tạo ra các lớp khái niệm kiểm tra và và các khái niệm đề nghị lite. Vì vậy, khi khái niệm lite thực sự hoạt động, quá trình chuyển đổi phải dễ dàng.

b) Bây giờ hãy sử dụng DOxygen để ghi lại lớp kiểm tra MyConcept!

c) Sử dụng Doxygen/tparam trên tài liệu my_class để chỉ MyConcept

c) Vì vậy, bây giờ bạn đã chính xác những gì bạn đang yêu cầu cho !!! - một trang riêng cho khái niệm của bạn và khả năng tham chiếu nó từ tất cả các lớp đòi hỏi khái niệm đó.

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