mirror of
https://github.com/fish-shell/fish-shell.git
synced 2024-11-23 02:12:08 +08:00
Excised some more halloc and array_list_t
This commit is contained in:
parent
b2e5809180
commit
3dc56de0ae
18
builtin.cpp
18
builtin.cpp
|
@ -1456,8 +1456,7 @@ static int builtin_function( parser_t &parser, wchar_t **argv )
|
|||
int argc = builtin_count_args( argv );
|
||||
int res=STATUS_BUILTIN_OK;
|
||||
wchar_t *desc=0;
|
||||
array_list_t *events;
|
||||
int i;
|
||||
std::vector<event_t *> events;
|
||||
array_list_t *named_arguments=0;
|
||||
wchar_t *name = 0;
|
||||
int shadows = 1;
|
||||
|
@ -1465,7 +1464,6 @@ static int builtin_function( parser_t &parser, wchar_t **argv )
|
|||
woptind=0;
|
||||
|
||||
parser.push_block( FUNCTION_DEF );
|
||||
events=al_halloc( parser.current_block );
|
||||
|
||||
static const struct woption
|
||||
long_options[] =
|
||||
|
@ -1562,7 +1560,7 @@ static int builtin_function( parser_t &parser, wchar_t **argv )
|
|||
e->type = EVENT_SIGNAL;
|
||||
e->param1.signal = sig;
|
||||
e->function_name=0;
|
||||
al_push( events, e );
|
||||
events.push_back(e);
|
||||
break;
|
||||
}
|
||||
|
||||
|
@ -1585,7 +1583,7 @@ static int builtin_function( parser_t &parser, wchar_t **argv )
|
|||
e->type = EVENT_VARIABLE;
|
||||
e->param1.variable = halloc_wcsdup( parser.current_block, woptarg );
|
||||
e->function_name=0;
|
||||
al_push( events, e );
|
||||
events.push_back(e);
|
||||
break;
|
||||
}
|
||||
|
||||
|
@ -1599,7 +1597,7 @@ static int builtin_function( parser_t &parser, wchar_t **argv )
|
|||
e->type = EVENT_GENERIC;
|
||||
e->param1.param = halloc_wcsdup( parser.current_block, woptarg );
|
||||
e->function_name=0;
|
||||
al_push( events, e );
|
||||
events.push_back(e);
|
||||
break;
|
||||
}
|
||||
|
||||
|
@ -1675,7 +1673,7 @@ static int builtin_function( parser_t &parser, wchar_t **argv )
|
|||
else
|
||||
{
|
||||
e->function_name=0;
|
||||
al_push( events, e );
|
||||
events.push_back(e);
|
||||
}
|
||||
break;
|
||||
}
|
||||
|
@ -1800,15 +1798,15 @@ static int builtin_function( parser_t &parser, wchar_t **argv )
|
|||
{
|
||||
function_data_t *d = new function_data_t();
|
||||
|
||||
d->name=halloc_wcsdup( parser.current_block, name);
|
||||
d->name=halloc_wcsdup( parser.current_block, name);
|
||||
d->description=desc?halloc_wcsdup( parser.current_block, desc):0;
|
||||
d->events = events;
|
||||
d->named_arguments = named_arguments;
|
||||
d->shadows = shadows;
|
||||
|
||||
for( i=0; i<al_get_count( events ); i++ )
|
||||
for( size_t i=0; i<events.size(); i++ )
|
||||
{
|
||||
event_t *e = (event_t *)al_get( events, i );
|
||||
event_t *e = events.at(i);
|
||||
e->function_name = d->name;
|
||||
}
|
||||
|
||||
|
|
6
event.h
6
event.h
|
@ -13,6 +13,7 @@
|
|||
#define FISH_EVENT_H
|
||||
|
||||
#include "common.h"
|
||||
#include "event.h"
|
||||
|
||||
/**
|
||||
The signal number that is used to match any signal
|
||||
|
@ -45,7 +46,7 @@ enum
|
|||
- When used as a parameter to event_add, it represents a class of events, and function_name is the name of the function which will be called whenever an event matching the specified class occurs. This is also how events are stored internally.
|
||||
- When used as a parameter to event_get, event_remove and event_fire, it represents a class of events, and if the function_name field is non-zero, only events which call the specified function will be returned.
|
||||
*/
|
||||
typedef struct
|
||||
struct event_t
|
||||
{
|
||||
/**
|
||||
Type of event
|
||||
|
@ -93,8 +94,7 @@ typedef struct
|
|||
is ignored.
|
||||
*/
|
||||
wcstring_list_t *arguments;
|
||||
}
|
||||
event_t;
|
||||
};
|
||||
|
||||
/**
|
||||
Add an event handler
|
||||
|
|
|
@ -160,8 +160,6 @@ void function_init()
|
|||
|
||||
void function_add( function_data_t *data, const parser_t &parser )
|
||||
{
|
||||
int i;
|
||||
|
||||
CHECK( data->name, );
|
||||
CHECK( data->definition, );
|
||||
scoped_lock lock(functions_lock);
|
||||
|
@ -177,7 +175,7 @@ void function_add( function_data_t *data, const parser_t &parser )
|
|||
|
||||
if( data->named_arguments )
|
||||
{
|
||||
for( i=0; i<al_get_count( data->named_arguments ); i++ )
|
||||
for( size_t i=0; i<al_get_count( data->named_arguments ); i++ )
|
||||
{
|
||||
info->named_arguments.push_back((wchar_t *)al_get( data->named_arguments, i ));
|
||||
}
|
||||
|
@ -191,9 +189,9 @@ void function_add( function_data_t *data, const parser_t &parser )
|
|||
info->shadows = data->shadows;
|
||||
|
||||
|
||||
for( i=0; i<al_get_count( data->events ); i++ )
|
||||
for( size_t i=0; i< data->events.size(); i++ )
|
||||
{
|
||||
event_add_handler( (event_t *)al_get( data->events, i ) );
|
||||
event_add_handler( data->events.at(i) );
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -14,6 +14,7 @@
|
|||
|
||||
#include "util.h"
|
||||
#include "common.h"
|
||||
#include "event.h"
|
||||
|
||||
#include <tr1/memory>
|
||||
using std::tr1::shared_ptr;
|
||||
|
@ -28,7 +29,7 @@ class env_vars;
|
|||
structure is used for that purpose. Parhaps these two should be
|
||||
merged.
|
||||
*/
|
||||
typedef struct function_data
|
||||
struct function_data_t
|
||||
{
|
||||
/**
|
||||
Name of function
|
||||
|
@ -45,7 +46,7 @@ typedef struct function_data
|
|||
/**
|
||||
List of all event handlers for this function
|
||||
*/
|
||||
array_list_t *events;
|
||||
std::vector<event_t *> events;
|
||||
/**
|
||||
List of all named arguments for this function
|
||||
*/
|
||||
|
@ -55,7 +56,7 @@ typedef struct function_data
|
|||
of the underlying function.
|
||||
*/
|
||||
int shadows;
|
||||
} function_data_t;
|
||||
};
|
||||
|
||||
class function_info_t {
|
||||
public:
|
||||
|
|
Loading…
Reference in New Issue
Block a user