Changeset 9718

Show
Ignore:
Timestamp:
10/04/08 15:51:44
Author:
trondeau
Message:

changes to make constructor arguments in python examples work fine. This hacks around the **kwargs issue that allows Python to specify constructor arguments.

Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • gnuradio/branches/features/cppdb/gr-usrp/src/usrp1.i

    r9656 r9718  
    5454 
    5555%pythoncode %{ 
     56  import re 
    5657  def selected_subdev(u, spec): 
    5758      return u.selected_subdev(spec) 
     
    6061  def determine_tx_mux_value(u, spec): 
    6162      return u.determine_tx_mux_value(spec) 
     63 
     64  # This fakes out the source_c(*args) that swig generates and adds **kwargs to it. 
     65  # I wish I knew a cleaner way to convert the list, but I dont. 
     66  # This problem might be fixable by using the "-keyword" option passed to swig during compile time. 
     67  # However, this function is not well documented and can cause errors with overloaded function 
     68  # (like in shared_ptr.i). While this is kludgey, it solves the keyword argument problem. 
     69 
     70  def process_args(argslist): 
     71    # process the doc string to get the argument names and default values 
     72    p = re.compile("\w+=\S*") 
     73    m = p.findall(argslist) 
     74    argslist = list() 
     75    argsvals = list() 
     76    for val in m: 
     77      key = val.split("=")[0] 
     78      value = val.split("=")[1].strip(",)") 
     79      try: 
     80        v = int(value) 
     81      except ValueError: # convert the hex value 
     82        try: 
     83          v = int(value,16) 
     84        except ValueError, e: 
     85          v = value.strip("\"") 
     86      argslist.append(key) 
     87      argsvals.append(v) 
     88 
     89    return (argslist, argsvals) 
     90 
     91  def source_c(*args, **kwargs): 
     92    constructor_args = _usrp.source_c.__doc__ 
     93    constructor_args = constructor_args.split("->")[0] 
     94    argslist, argsvals = process_args(constructor_args) 
     95    i = 0 
     96    for a in argslist: 
     97        if(kwargs.has_key(a)): 
     98            argsvals[i] = kwargs[a] 
     99        i += 1 
     100    return _usrp.source_c(*argsvals) 
     101  
     102  def source_s(*args, **kwargs): 
     103    constructor_args = _usrp.source_s.__doc__ 
     104    constructor_args = constructor_args.split("->")[0] 
     105    argslist, argsvals = process_args(constructor_args) 
     106    i = 0 
     107    for a in argslist: 
     108        if(kwargs.has_key(a)): 
     109            argsvals[i] = kwargs[a] 
     110        i += 1 
     111    return _usrp.source_s(*argsvals) 
     112 
     113  def sink_c(*args, **kwargs): 
     114    constructor_args = _usrp.sink_c.__doc__ 
     115    constructor_args = constructor_args.split("->")[0] 
     116    argslist, argsvals = process_args(constructor_args) 
     117    i = 0 
     118    for a in argslist: 
     119        if(kwargs.has_key(a)): 
     120            argsvals[i] = kwargs[a] 
     121        i += 1 
     122    return _usrp.sink_c(*argsvals) 
     123 
     124  def sink_s(*args, **kwargs): 
     125    constructor_args = _usrp.sink_s.__doc__ 
     126    constructor_args = constructor_args.split("->")[0] 
     127    argslist, argsvals = process_args(constructor_args) 
     128    i = 0 
     129    for a in argslist: 
     130        if(kwargs.has_key(a)): 
     131            argsvals[i] = kwargs[a] 
     132        i += 1 
     133    return _usrp.sink_s(*argsvals) 
    62134%} 
  • gnuradio/branches/features/cppdb/gr-usrp/src/usrp1_sink.i

    r9717 r9718  
    133133 
    134134usrp1_sink_s_sptr 
    135 usrp1_make_sink_s (int which_board=0, 
     135usrp1_make_sink_s (int which=0, 
    136136                   unsigned int interp_rate=128, 
    137137                   int nchan=1, 
  • gnuradio/branches/features/cppdb/gr-usrp/src/usrp1_sink_base.cc

    r9717 r9718  
    3434usrp1_sink_base::usrp1_sink_base (const std::string &name, 
    3535                                  gr_io_signature_sptr input_signature, 
    36                                   int which_board
     36                                  int which
    3737                                  unsigned int interp_rate, 
    3838                                  int nchan, 
     
    4545  : usrp1_base(name, input_signature, gr_make_io_signature (0, 0, 0)), 
    4646    d_nunderruns (0),  
    47     d_usrp(usrp_standard_tx::make (which_board, interp_rate, 
     47    d_usrp(usrp_standard_tx::make (which, interp_rate, 
    4848                                   nchan, mux, fusb_block_size, 
    4949                                   fusb_nblocks, fpga_filename, 
  • gnuradio/branches/features/cppdb/gr-usrp/src/usrp1_sink_base.h

    r9717 r9718  
    3939  usrp1_sink_base (const std::string &name, 
    4040                   gr_io_signature_sptr input_signature, 
    41                    int which_board
     41                   int which
    4242                   unsigned int interp_rate, 
    4343                   int nchan,