MCPcopy Create free account
hub / github.com/Redot-Engine/redot-engine / _parse_methods

Function _parse_methods

editor/doc/doc_tools.cpp:1139–1226  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

1137}
1138
1139static Error _parse_methods(Ref<XMLParser> &parser, Vector<DocData::MethodDoc> &methods) {
1140 String section = parser->get_node_name();
1141 String element = section.substr(0, section.length() - 1);
1142
1143 while (parser->read() == OK) {
1144 if (parser->get_node_type() == XMLParser::NODE_ELEMENT) {
1145 if (parser->get_node_name() == element) {
1146 DocData::MethodDoc method;
1147 ERR_FAIL_COND_V(!parser->has_attribute("name"), ERR_FILE_CORRUPT);
1148 method.name = parser->get_named_attribute_value("name");
1149 if (parser->has_attribute("qualifiers")) {
1150 method.qualifiers = parser->get_named_attribute_value("qualifiers");
1151 }
1152#ifndef DISABLE_DEPRECATED
1153 if (parser->has_attribute("is_deprecated")) {
1154 method.is_deprecated = parser->get_named_attribute_value("is_deprecated").to_lower() == "true";
1155 }
1156 if (parser->has_attribute("is_experimental")) {
1157 method.is_experimental = parser->get_named_attribute_value("is_experimental").to_lower() == "true";
1158 }
1159#endif
1160 if (parser->has_attribute("deprecated")) {
1161 method.is_deprecated = true;
1162 method.deprecated_message = parser->get_named_attribute_value("deprecated");
1163 }
1164 if (parser->has_attribute("experimental")) {
1165 method.is_experimental = true;
1166 method.experimental_message = parser->get_named_attribute_value("experimental");
1167 }
1168 if (parser->has_attribute("keywords")) {
1169 method.keywords = parser->get_named_attribute_value("keywords");
1170 }
1171
1172 while (parser->read() == OK) {
1173 if (parser->get_node_type() == XMLParser::NODE_ELEMENT) {
1174 String name = parser->get_node_name();
1175 if (name == "return") {
1176 ERR_FAIL_COND_V(!parser->has_attribute("type"), ERR_FILE_CORRUPT);
1177 method.return_type = parser->get_named_attribute_value("type");
1178 if (parser->has_attribute("enum")) {
1179 method.return_enum = parser->get_named_attribute_value("enum");
1180 if (parser->has_attribute("is_bitfield")) {
1181 method.return_is_bitfield = parser->get_named_attribute_value("is_bitfield").to_lower() == "true";
1182 }
1183 }
1184 } else if (name == "returns_error") {
1185 ERR_FAIL_COND_V(!parser->has_attribute("number"), ERR_FILE_CORRUPT);
1186 method.errors_returned.push_back(parser->get_named_attribute_value("number").to_int());
1187 } else if (name == "param") {
1188 DocData::ArgumentDoc argument;
1189 ERR_FAIL_COND_V(!parser->has_attribute("name"), ERR_FILE_CORRUPT);
1190 argument.name = parser->get_named_attribute_value("name");
1191 ERR_FAIL_COND_V(!parser->has_attribute("type"), ERR_FILE_CORRUPT);
1192 argument.type = parser->get_named_attribute_value("type");
1193 if (parser->has_attribute("enum")) {
1194 argument.enumeration = parser->get_named_attribute_value("enum");
1195 if (parser->has_attribute("is_bitfield")) {
1196 argument.is_bitfield = parser->get_named_attribute_value("is_bitfield").to_lower() == "true";

Callers 1

_loadMethod · 0.85

Calls 11

substrMethod · 0.80
has_attributeMethod · 0.80
to_lowerMethod · 0.80
to_intMethod · 0.80
get_node_dataMethod · 0.80
get_node_nameMethod · 0.45
lengthMethod · 0.45
readMethod · 0.45
get_node_typeMethod · 0.45
push_backMethod · 0.45

Tested by

no test coverage detected