2
0
mirror of https://github.com/esiur/esiur-dart.git synced 2025-05-06 04:02:57 +00:00
esiur-dart/lib/src/Resource/Template/EventTemplate.dart
2022-03-12 16:21:29 +03:00

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) {}
}