| | 1437 | wi_array_t * wi_p7_spec_messages(wi_p7_spec_t *p7_spec) { |
|---|
| | 1438 | wi_enumerator_t *enumerator; |
|---|
| | 1439 | _wi_p7_spec_message_t *message; |
|---|
| | 1440 | |
|---|
| | 1441 | if(!p7_spec->messages) { |
|---|
| | 1442 | p7_spec->messages = wi_array_init_with_capacity(wi_array_alloc(), wi_hash_count(p7_spec->messages_id)); |
|---|
| | 1443 | |
|---|
| | 1444 | enumerator = wi_hash_data_enumerator(p7_spec->messages_id); |
|---|
| | 1445 | |
|---|
| | 1446 | while((message = wi_enumerator_next_data(enumerator))) |
|---|
| | 1447 | wi_array_add_data(p7_spec->messages, message->name); |
|---|
| | 1448 | } |
|---|
| | 1449 | |
|---|
| | 1450 | return p7_spec->messages; |
|---|
| | 1451 | } |
|---|
| | 1452 | |
|---|
| | 1453 | |
|---|
| | 1454 | |
|---|
| | 1483 | } |
|---|
| | 1484 | |
|---|
| | 1485 | |
|---|
| | 1486 | |
|---|
| | 1487 | wi_array_t * wi_p7_spec_message_parameters(wi_p7_spec_t *p7_spec, wi_string_t *message_name) { |
|---|
| | 1488 | wi_enumerator_t *enumerator; |
|---|
| | 1489 | _wi_p7_spec_message_t *message; |
|---|
| | 1490 | _wi_p7_spec_parameter_t *parameter; |
|---|
| | 1491 | |
|---|
| | 1492 | message = wi_hash_data_for_key(p7_spec->messages_name, message_name); |
|---|
| | 1493 | |
|---|
| | 1494 | if(!message && _wi_p7_spec_builtin_spec) |
|---|
| | 1495 | message = wi_hash_data_for_key(_wi_p7_spec_builtin_spec->messages_name, message_name); |
|---|
| | 1496 | |
|---|
| | 1497 | if(!message) |
|---|
| | 1498 | return NULL; |
|---|
| | 1499 | |
|---|
| | 1500 | if(!message->parameters) { |
|---|
| | 1501 | message->parameters = wi_array_init_with_capacity(wi_array_alloc(), wi_hash_count(message->parameters_id)); |
|---|
| | 1502 | |
|---|
| | 1503 | enumerator = wi_hash_data_enumerator(message->parameters_id); |
|---|
| | 1504 | |
|---|
| | 1505 | while((parameter = wi_enumerator_next_data(enumerator))) |
|---|
| | 1506 | wi_array_add_data(message->parameters, parameter->field->name); |
|---|
| | 1507 | } |
|---|
| | 1508 | |
|---|
| | 1509 | return message->parameters; |
|---|
| | 1510 | } |
|---|
| | 1511 | |
|---|
| | 1512 | |
|---|
| | 1513 | |
|---|
| | 1514 | wi_boolean_t wi_p7_spec_message_requires_parameter(wi_p7_spec_t *p7_spec, wi_string_t *message_name, wi_string_t *parameter_name) { |
|---|
| | 1515 | _wi_p7_spec_message_t *message; |
|---|
| | 1516 | _wi_p7_spec_parameter_t *parameter; |
|---|
| | 1517 | |
|---|
| | 1518 | message = wi_hash_data_for_key(p7_spec->messages_name, message_name); |
|---|
| | 1519 | |
|---|
| | 1520 | if(!message && _wi_p7_spec_builtin_spec) |
|---|
| | 1521 | message = wi_hash_data_for_key(_wi_p7_spec_builtin_spec->messages_name, message_name); |
|---|
| | 1522 | |
|---|
| | 1523 | if(!message) |
|---|
| | 1524 | return false; |
|---|
| | 1525 | |
|---|
| | 1526 | parameter = wi_hash_data_for_key(message->parameters_name, parameter_name); |
|---|
| | 1527 | |
|---|
| | 1528 | if(!parameter) |
|---|
| | 1529 | return false; |
|---|
| | 1530 | |
|---|
| | 1531 | return parameter->required; |
|---|