mirror of
https://github.com/esiur/esiur-dart.git
synced 2025-05-06 04:02:57 +00:00
47 lines
1.2 KiB
Dart
47 lines
1.2 KiB
Dart
import 'MemberTemplate.dart';
|
|
import '../../Data/DC.dart';
|
|
import '../../Data/BinaryList.dart';
|
|
import 'TypeTemplate.dart';
|
|
import 'MemberType.dart';
|
|
import '../../Data/RepresentationType.dart';
|
|
|
|
class EventTemplate extends MemberTemplate {
|
|
final String? expansion;
|
|
final bool listenable;
|
|
final RepresentationType argumentType;
|
|
|
|
DC compose() {
|
|
var name = super.compose();
|
|
|
|
var hdr = inherited ? 0x80 : 0;
|
|
|
|
if (listenable) hdr |= 0x8;
|
|
|
|
if (expansion != null) {
|
|
var exp = DC.stringToBytes(expansion as String);
|
|
hdr |= 0x50;
|
|
return (BinaryList()
|
|
..addUint8(hdr)
|
|
..addUint8(name.length)
|
|
..addDC(name)
|
|
..addDC(argumentType.compose())
|
|
..addInt32(exp.length)
|
|
..addDC(exp))
|
|
.toDC();
|
|
} else {
|
|
hdr |= 0x40;
|
|
return (BinaryList()
|
|
..addUint8(hdr)
|
|
..addUint8(name.length)
|
|
..addDC(name)
|
|
..addDC(argumentType.compose()))
|
|
.toDC();
|
|
}
|
|
}
|
|
|
|
EventTemplate(TypeTemplate template, int index, String name, bool inherited,
|
|
this.argumentType,
|
|
[this.expansion = null, this.listenable = false])
|
|
: super(template, index, name, inherited) {}
|
|
}
|