C++ Boost

Boost Statechart 庫

Future & History 未來與歷史

Contents 目錄

To-do list 待辦事項列表
Change history 變更歷史

To-do list 待辦事項列表

The library is mostly complete. However, there is some work left (red = added as a result of the formal review):
本庫已基本完成。不過,還有一些工作要做(紅色 = 作為正式審查的結果被添加)

  1. Implement a choice-point-like class, as discussed in this thread
    實現類似於選擇點的類,正如在 這 個帖子中 所討論
  2. Optimize state-entry and state-exit for speed and code-size
  3. Implement simple_state::triggering_event(), which returns a pointer to the event that triggered the action currently being executed. This is useful for the rare cases when an entry or exit action needs to access the event that triggered the execution of the action. triggering_event() returns a const event_base * due to the fact that entry and exit actions can be triggered by events of any type or no event at all (state_machine<>::initiate() & state_machine::terminate()). The caller thus needs to make a type check or cast the return value. The use of triggering_event() therefore often indicates a problem in the state machine design and should be avoided whenever possible
    實現 simple_state::triggering_event(), 返回一個指針,指向觸發當前正在執行的動作的事件。這在某些較罕見的情形中是有用的,如當一個進入或退出動作需要訪問觸發該動作的事件時。triggering_event() 返回一個 const event_base *,由於進入和退出動作可以由任意類型的事件觸發, 或者根本沒有事件(state_machine<>::initiate() & state_machine::terminate())。因此調用者需要進 行類型的檢查,或者對返回值進行轉型。所以 triggering_event() 的使用通常表示狀態機的設計存在問題,應該盡可能避免
  4. Reimplement fifo_scheduler<>::processor_handle so that fifo_scheduler<>::create_processor<>() and fifo_scheduler<>::destroy_processor() no longer make (indirect) calls to global operator new() and operator delete()
    重新實現 fifo_scheduler<>::processor_handle, 以使得 fifo_scheduler<>::create_processor<>()fifo_scheduler<>::destroy_processor() 不再(間拉)調用全局的 operator new()operator delete()
  5. Ensure that everything is compileable with C++ RTTI support turned off (this requires currently lacking support in Boost.Config and probably a patch for shared_ptr)
    確保所有東西兼容於 C++ RTTI 被關閉的情況(當前這一要求缺乏 Boost.Config 的支持,並可能需要 shared_ptr 的一個補丁)
  6. Issue an error if BOOST_STATECHART_USE_NATIVE_RTTI is defined when C++ RTTI is turned off
    當 C++ RTTI 被關閉時,如果定義了 BOOST_STATECHART_USE_NATIVE_RTTI 則產生一個錯誤
  7. The current requirement to pass an mpl::list<> to specify inner initial states and reactions is too strict. Check the requirements on the sequences and document them accordingly (David Abrahams)
    當前要求傳遞一個 mpl::list<> 來指定內層初始狀態和反應,這有點過於嚴格。檢查對該序列的相關要求,並把它們形成文檔(David Abrahams)
  8. Make compilation performance measurements with mpl::vector and mpl::deque instead of mpl::list to find out which is fastest. Document a recommendation for the fastest container and change all examples accordingly (David Abrahams)
    以 mpl::vector 和 mpl::deque 替代 mpl::list 並進行編譯性能的測量,確定哪一個更快。把最快的容器作為推薦寫進文檔,並據此修改所有的例子(David Abrahams)
  9. Investigate how a state machine could be serialized. A first glance at the serialization library revealed that there currently (1.33) is no support for types that overload operator new (suitable code is already present in the serialization library but it is currently commented out due to incompatibilities with certain compilers). Such support would be essential for Boost.Statechart serialization
    研究如何對狀態機進行序列化。對 serialization 庫的初步研究表明,當前版本(1.33)不支持重載了 operator new 的類型(適當的代碼在 serialization 庫已經可用,但由於與某些編譯器的不兼容,所以這些代碼被註釋掉了)。這個特性的支持對於 Boost.Statechart 的序列化是最基本的
  10. Implement a switch-like reaction (Simon Gittins, Darryl Green)
    實現一個類似於 switch 的反應(Simon Gittins, Darryl Green)
  11. Link incomplete code-snippets in the tutorial to complete example code where available
  12. Where appropriate, link the reference documentation to examples
  13. Add a description of the implementation and better explain performance trade-offs (Jonathan Turkanis)
    為本實現增加說明,更好地解釋性 能上的妥協(Jonathan Turkanis)
  14. Add links to descriptions of alternate implementations and discuss performance trade-offs (Jonathan Turkanis)
    為 其它實現的說明增加鏈接,討論它們的性能妥協(Jonathan Turkanis)
  15. Add a list of applications that use Boost.Statechart (Paul A. Bristow)
    增加一個使用 Boost.Statechart 的應用程序的列表(Paul A. Bristow)
  16. Refactor the state_machine class template to reduce code size in applications with many different state machines
    重構 state_machine 類模板,以減少帶有多個不同狀態機的應用程序的代碼大小
  17. Add a diagram that helps to understand what an unstable state machine is
  18. Comment MPL-heavy code
  19. Add examples of often made mistakes
  20. Implement priority_scheduler<>
    實 現 priority_scheduler<>
  21. Eliminate code-duplication in fifo_scheduler with PP code submitted by Pavel Vozenilek
    消除 fifo_scheduler 和 Pavel Vozenilek 提交的 PP 代碼之間的重複代碼
  22. Add number and label to all diagrams in docs
  23. Add #pragma once to all headers (speeds up compilation with MS-compatible compilers)
    為所有頭文件增加 #pragma once (可以提高在MS兼容的編譯器中的編譯速度)
  24. Investigate whether and how fifo_worker<> should accept a policy parameter defining how to lock and wait
    研究 fifo_worker<> 是否應該以及如何接受一個策略參數來定義如何進行鎖定和等待

Change history 變更歷史

(red = points raised during formal review)
(紅色 = 在正式審查過程中發現的點)




17 December, 2005

14 August, 2005

19 June, 2005

12 May, 2005

03 May, 2005

21 February, 2005

20 February, 2005

09 February, 2005

07 February, 2005

25 November, 2004

19 October, 2004

22 May, 2004

12 May, 2004

22 April, 2004

10 April, 2004

26 March, 2004

25 March, 2004

21 March, 2004

16 March, 2004

13 March, 2004

03 March, 2004

09 February, 2004

11 January, 2004

12 December, 2003

12 October, 2003

16 August, 2003

08 June, 2003

Valid HTML 4.01 Transitional

Revised 05 January, 2008

Copyright c 2003-2008 Andreas Huber Donni

Distributed under the Boost Software License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)