Annotation of nono/vm/uimessage.h, revision 1.1.1.4

1.1       root        1: //
                      2: // nono
                      3: // Copyright (C) 2021 nono project
                      4: // Licensed under nono-license.txt
                      5: //
                      6: 
                      7: //
1.1.1.2   root        8: // UI スレッドへのメッセージ機構
1.1       root        9: //
                     10: 
                     11: #pragma once
                     12: 
                     13: #include "fixedqueue.h"
                     14: #include <functional>
                     15: 
                     16: class UIMessage
                     17: {
                     18:  public:
                     19:        // メッセージ ID
                     20:        enum ID {
                     21:                NONE = 0,
                     22: 
1.1.1.2   root       23:                // アプリケーションを終了する
                     24:                APPEXIT,
1.1       root       25: 
                     26:                // MPU がホールト状態になった
                     27:                HALT,
                     28: 
                     29:                // SCSI (各 ID) のメディア状態が変わった (Load/Unload)
                     30:                SCSI_MEDIA_CHANGE,
                     31: 
                     32:                // SCSI メディアの挿入に失敗した
                     33:                SCSI_MEDIA_FAILED,
                     34: 
1.1.1.3   root       35:                // FDD (各 ID) のメディア状態が変わった (Load/Unload)
                     36:                FDD_MEDIA_CHANGE,
                     37: 
                     38:                // FDD メディアの挿入に失敗した
                     39:                FDD_MEDIA_FAILED,
                     40: 
1.1       root       41:                // キー入力状態が変わった
                     42:                KEYBOARD,
                     43: 
                     44:                // LCD 状態が変わった
                     45:                LCD,
                     46: 
1.1.1.2   root       47:                // 画面を更新した
                     48:                RENDER,
                     49: 
                     50:                // パレットが変更になった
                     51:                PALETTE,
                     52: 
1.1.1.3   root       53:                // LED 状態が変わった
                     54:                LED,
                     55: 
1.1.1.4 ! root       56:                // 新しいホストドライバの起動に失敗した。
        !            57:                HOSTNET_FAILED,
        !            58:                HOSTCOM_FAILED,
        !            59: 
1.1       root       60:                ID_MAX,
                     61:        };
                     62: 
                     63:        using Queue = FixedQueue<UIMessage, 16>;
                     64: 
                     65:  public:
                     66:        UIMessage();
1.1.1.2   root       67:        UIMessage(ID id_, int arg_);
1.1       root       68: 
                     69:        ID GetID() const { return id; }
                     70:        int GetArg() const { return arg; }
                     71: 
                     72:        // メッセージ処理関数をアタッチ
                     73:        static void Attach(const std::function<void(Queue&)>& process_);
                     74: 
                     75:        // 新しい UIMessage を生成して投函
                     76:        static void Post(ID id);
                     77:        // 新しい UIMessage を生成して投函(argあり)
                     78:        static void Post(ID id, int arg);
                     79: 
                     80:  protected:
                     81:        // 自身を投函
                     82:        void Post();
                     83: 
                     84:  private:
1.1.1.2   root       85:        ID id {};
                     86:        int arg {};
1.1       root       87: 
                     88:        static Queue queue;
                     89: 
                     90:        // メッセージ処理コールバック
                     91:        static std::function<void(Queue&)> process;
                     92: };

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.