9 #include <QJsonDocument>
10 #include <QJsonObject>
19 * \brief 単語間のリンクを表現するクラスです。
21 * 原単語と訳単語の多対多のリンクを表現します。
26 typedef std::shared_ptr<WordLink> pointer;
27 typedef QList<Text::pointer> storage_type;
30 enum : int { Source, Target, };
34 WordLink(QJsonObject json);
38 void append(int place, Text::pointer word);
39 void remove(int place, Text::pointer word);
41 bool is_valid() const;
42 bool is_empty() const;
43 bool contains(int place, Text::pointer word);
44 int size(int place) const;
46 storage_type* sources();
47 storage_type* targets();
49 QJsonObject to_json() const;
51 QString debug_dump() const;
53 static pointer create();
54 static pointer create(QJsonObject json);
57 storage_type m_sources;
58 storage_type m_targets;
62 * \brief 単語間のリンクを作成・保持するクラスです。
64 * 複数の単語間リンクを保持するコンテナとしての機能を持ちます。
65 * 現在編集中の単語間リンクを明示する機能があります。
67 * ある特定の単語間リンクを編集するには、start()を呼び出し編集を開始し、
68 * append()呼び出しによってリンクへ単語を追加し、
69 * commit()呼び出しによって編集を終了します。
74 typedef QList<WordLink::pointer> storage_type;
75 typedef storage_type::iterator iterator;
76 typedef storage_type::const_iterator const_iterator;
83 void append(int place, Text::pointer word);
84 void remove(int place, Text::pointer word);
85 void toggle(int place, Text::pointer word);
87 WordLink::pointer current();
89 WordLink::pointer find(Text::pointer word);
90 WordLink::pointer find(int place, Text::pointer word);
92 int index_of(WordLink::pointer link) const;
97 QJsonArray to_json_array() const;
98 void set_json_array(QJsonArray json);
100 QString debug_dump() const;
103 WordLink::pointer m_current_link;
104 storage_type m_links;