Changeset 5532

Show
Ignore:
Timestamp:
05/26/08 00:11:05 (6 months ago)
Author:
morris
Message:

Add some accessors for messages that WiredNetworking? needs

Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • libwired/trunk/libwired/p7/wi-p7-spec.c

    r5406 r5532  
    142142        wi_string_t                                                             *name; 
    143143        wi_uinteger_t                                                   id; 
     144        wi_array_t                                                              *parameters; 
    144145        wi_hash_t                                                               *parameters_name; 
    145146        wi_hash_t                                                               *parameters_id; 
     
    307308        wi_set_t                                                                *compatible_protocols; 
    308309         
     310        wi_array_t                                                              *messages; 
    309311        wi_hash_t                                                               *messages_name, *messages_id; 
    310312        wi_hash_t                                                               *fields_name, *fields_id; 
     
    647649        wi_release(p7_spec->compatible_protocols); 
    648650         
     651        wi_release(p7_spec->messages); 
    649652        wi_release(p7_spec->messages_name); 
    650653        wi_release(p7_spec->messages_id); 
     
    14321435 
    14331436 
     1437wi_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 
    14341455wi_uinteger_t wi_p7_spec_message_id(wi_p7_spec_t *p7_spec, wi_string_t *message_name) { 
    14351456        _wi_p7_spec_message_t   *message; 
     
    14601481         
    14611482        return message->name; 
     1483} 
     1484 
     1485 
     1486 
     1487wi_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 
     1514wi_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; 
    14621532} 
    14631533 
  • libwired/trunk/libwired/p7/wi-p7-spec.h

    r5381 r5532  
    6262WI_EXPORT wi_p7_originator_t                    wi_p7_spec_originator(wi_p7_spec_t *); 
    6363WI_EXPORT wi_string_t *                                 wi_p7_spec_xml(wi_p7_spec_t *); 
     64WI_EXPORT wi_array_t *                                  wi_p7_spec_messages(wi_p7_spec_t *); 
    6465WI_EXPORT wi_uinteger_t                                 wi_p7_spec_message_id(wi_p7_spec_t *, wi_string_t *); 
    6566WI_EXPORT wi_string_t *                                 wi_p7_spec_message_name(wi_p7_spec_t *, wi_uinteger_t); 
     67WI_EXPORT wi_array_t *                                  wi_p7_spec_message_parameters(wi_p7_spec_t *, wi_string_t *); 
     68WI_EXPORT wi_boolean_t                                  wi_p7_spec_message_requires_parameter(wi_spec_t *, wi_string_t *, wi_string_t *); 
    6669WI_EXPORT wi_uinteger_t                                 wi_p7_spec_field_id(wi_p7_spec_t *, wi_string_t *); 
    6770WI_EXPORT wi_string_t *                                 wi_p7_spec_field_name(wi_p7_spec_t *, wi_uinteger_t);