Rev 4197 | Rev 4743 | Go to most recent revision | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed
Rev 4197 | Rev 4332 | ||
---|---|---|---|
Line 79... | Line 79... | ||
79 | int index; |
79 | int index; |
80 | 80 | ||
81 | for( index = 0; index < map->next; ++ index ){ |
81 | for( index = 0; index < map->next; ++ index ){ |
82 | if( map->items[ index ]->c == * identifier ){ |
82 | if( map->items[ index ]->c == * identifier ){ |
83 | ++ identifier; |
83 | ++ identifier; |
84 | if( length ) -- length; |
- | |
85 | if( length || ( * identifier )){ |
84 | if(( length > 1 ) || (( length == 0 ) && ( * identifier ))){ |
86 | return char_map_add( map->items[ index ], identifier, length, value ); |
85 | return char_map_add( map->items[ index ], identifier, length ? length - 1 : 0, value ); |
87 | }else{ |
86 | }else{ |
88 | if( map->items[ index ]->value != CHAR_MAP_NULL ) return EEXISTS; |
87 | if( map->items[ index ]->value != CHAR_MAP_NULL ) return EEXISTS; |
89 | map->items[ index ]->value = value; |
88 | map->items[ index ]->value = value; |
90 | return EOK; |
89 | return EOK; |
91 | } |
90 | } |
Line 112... | Line 111... | ||
112 | map->items[ map->next ] = NULL; |
111 | map->items[ map->next ] = NULL; |
113 | return ENOMEM; |
112 | return ENOMEM; |
114 | } |
113 | } |
115 | map->items[ map->next ]->c = * identifier; |
114 | map->items[ map->next ]->c = * identifier; |
116 | ++ identifier; |
115 | ++ identifier; |
117 | if( length ) -- length; |
- | |
118 | ++ map->next; |
116 | ++ map->next; |
119 | if( length || ( * identifier )){ |
117 | if(( length > 1 ) || (( length == 0 ) && ( * identifier ))){ |
120 | map->items[ map->next - 1 ]->value = CHAR_MAP_NULL; |
118 | map->items[ map->next - 1 ]->value = CHAR_MAP_NULL; |
121 | return char_map_add_item( map->items[ map->next - 1 ], identifier, length, value ); |
119 | return char_map_add_item( map->items[ map->next - 1 ], identifier, length ? length - 1 : 0, value ); |
122 | }else{ |
120 | }else{ |
123 | map->items[ map->next - 1 ]->value = value; |
121 | map->items[ map->next - 1 ]->value = value; |
124 | } |
122 | } |
125 | return EOK; |
123 | return EOK; |
126 | } |
124 | } |
Line 159... | Line 157... | ||
159 | return node ? node->value : CHAR_MAP_NULL; |
157 | return node ? node->value : CHAR_MAP_NULL; |
160 | } |
158 | } |
161 | 159 | ||
162 | char_map_ref char_map_find_node( const char_map_ref map, const char * identifier, size_t length ){ |
160 | char_map_ref char_map_find_node( const char_map_ref map, const char * identifier, size_t length ){ |
163 | if( ! char_map_is_valid( map )) return NULL; |
161 | if( ! char_map_is_valid( map )) return NULL; |
164 | if( length ) -- length; |
- | |
165 | if( length || ( * identifier )){ |
162 | if( length || ( * identifier )){ |
166 | int index; |
163 | int index; |
167 | 164 | ||
168 | for( index = 0; index < map->next; ++ index ){ |
165 | for( index = 0; index < map->next; ++ index ){ |
169 | if( map->items[ index ]->c == * identifier ){ |
166 | if( map->items[ index ]->c == * identifier ){ |
170 | ++ identifier; |
167 | ++ identifier; |
- | 168 | if( length == 1 ) return map->items[ index ]; |
|
171 | return char_map_find_node( map->items[ index ], identifier, length ); |
169 | return char_map_find_node( map->items[ index ], identifier, length ? length - 1 : 0 ); |
172 | } |
170 | } |
173 | } |
171 | } |
174 | return NULL; |
172 | return NULL; |
175 | } |
173 | } |
176 | return map; |
174 | return map; |