in lib/src/header_parser/sub_parsers/compounddecl_parser.dart [189:241]
void _setMembers(clang_types.CXCursor cursor, String className) {
_stack.top.hasAttr = clang.clang_Cursor_hasAttrs(cursor) != 0;
_stack.top.allignment = cursor.type().alignment();
final resultCode = clang.clang_visitChildren(
cursor,
Pointer.fromFunction(_compoundMembersVisitor, exceptional_visitor_return),
nullptr,
);
_logger.finest(
'Opaque: ${_stack.top.isInComplete}, HasAttr: ${_stack.top.hasAttr}, AlignValue: ${_stack.top.allignment}, MaxChildAlignValue: ${_stack.top.maxChildAlignment}, PackValue: ${_stack.top.packValue}.');
_stack.top.compound!.pack = _stack.top.packValue;
visitChildrenResultChecker(resultCode);
if (_stack.top.unimplementedMemberType) {
_logger.fine(
'---- Removed $className members, reason: member with unimplementedtype ${cursor.completeStringRepr()}');
_logger.warning(
'Removed All $className Members from ${_stack.top.compound!.name}(${_stack.top.compound!.originalName}), struct member has an unsupported type.');
} else if (_stack.top.flexibleArrayMember) {
_logger.fine(
'---- Removed $className members, reason: incomplete array member ${cursor.completeStringRepr()}');
_logger.warning(
'Removed All $className Members from ${_stack.top.compound!.name}(${_stack.top.compound!.originalName}), Flexible array members not supported.');
} else if (_stack.top.bitFieldMember) {
_logger.fine(
'---- Removed $className members, reason: bitfield members ${cursor.completeStringRepr()}');
_logger.warning(
'Removed All $className Members from ${_stack.top.compound!.name}(${_stack.top.compound!.originalName}), Bit Field members not supported.');
} else if (_stack.top.dartHandleMember && config.useDartHandle) {
_logger.fine(
'---- Removed $className members, reason: Dart_Handle member. ${cursor.completeStringRepr()}');
_logger.warning(
'Removed All $className Members from ${_stack.top.compound!.name}(${_stack.top.compound!.originalName}), Dart_Handle member not supported.');
} else if (_stack.top.incompleteCompoundMember) {
_logger.fine(
'---- Removed $className members, reason: Incomplete Nested Struct member. ${cursor.completeStringRepr()}');
_logger.warning(
'Removed All $className Members from ${_stack.top.compound!.name}(${_stack.top.compound!.originalName}), Incomplete Nested Struct member not supported.');
}
// Clear all members if declaration is incomplete.
if (_stack.top.isInComplete) {
_stack.top.compound!.members.clear();
}
// C allows empty structs/union, but it's undefined behaviour at runtine.
// So we need to mark a declaration incomplete if it has no members.
_stack.top.compound!.isInComplete =
_stack.top.isInComplete || _stack.top.compound!.members.isEmpty;
}