3
3
package ndef {
4
4
5
5
class MessageBuilder {
6
- +MessageBuilder(uint8_t* buffer, size_t capacity )
6
+ +MessageBuilder(const Span< uint8_t> & buffer)
7
7
+~MessageBuilder()
8
- +bool append_record(const RecordType& type, const RecordPayload* payload, bool is_last_record = false)
9
- +bool append_record(const Record& record)
10
- +const uint8_t* get_data() const;
11
- +size_t get_data_size() const;
8
+ +bool append_record(const RecordType &type, const RecordPayload &payload = RecordPayload(), bool is_last_record = false)
9
+ +bool append_record(const RecordType &type, const PayloadBuilder &builder, bool is_last_record = false)
10
+ +bool append_record(const Record &record, const PayloadBuilder *builder = NULL)
11
+ +void reset();
12
+ +void reset(const Span<uint8_t> &buffer);
13
+ +bool is_message_complete() const
14
+ +Span<const uint8_t> get_message() const
12
15
}
13
16
14
17
class Record {
@@ -23,41 +26,40 @@ class RecordPayload{
23
26
class RecordID{
24
27
}
25
28
29
+ interface MessageBuilder::PayloadBuilder {
30
+ +{abstract} size_t size() const
31
+ +{abstract} void build(const Span<uint8_t> &buffer) const
32
+ # ~PayloadBuilder()
33
+ }
34
+
35
+
26
36
Record *-- RecordType
27
37
Record *-- "0..1" RecordPayload
28
38
Record *-- "0..1" RecordID
29
39
30
40
Record - MessageBuilder: insert >
41
+ MessageBuilder - MessageBuilder::PayloadBuilder: < build payload at insertion
31
42
32
43
}
33
44
34
45
package common {
35
46
36
- class SimpleMessageBuilder {
37
- +SimpleMessageBuilder(uint8_t* buffer, size_t capacity)
38
- +~SimpleMessageBuilder()
39
- +bool append_uri(const URI&)
40
- +bool append_text(const Text&)
41
- +bool append_mime(const Mime&)
42
- }
43
47
44
48
class URI {
45
- +friend bool append_record (ndef::MessageBuilder&, const URI&)
49
+ +bool append_as_record (ndef::MessageBuilder &builder, bool is_last_record) const
46
50
}
47
51
48
52
class Text {
49
- +friend bool append_record (ndef::MessageBuilder&, const Text&)
53
+ +bool append_as_record (ndef::MessageBuilder &builder, bool is_last_record) const
50
54
}
51
55
52
56
class Mime {
53
- +friend bool append_record (ndef::MessageBuilder&, const Mime&)
57
+ +bool append_as_record (ndef::MessageBuilder &builder, bool is_last_record) const
54
58
}
55
59
56
- SimpleMessageBuilder --|> MessageBuilder
57
-
58
- URI -- SimpleMessageBuilder: wrap >
59
- Text -- SimpleMessageBuilder: wrap >
60
- Mime -- SimpleMessageBuilder: wrap >
60
+ URI -- MessageBuilder: uses >
61
+ Text -- MessageBuilder: uses >
62
+ Mime -- MessageBuilder: uses >
61
63
62
64
}
63
65
0 commit comments