ns-alt                 package:base                 R Documentation

_E_x_p_e_r_i_m_e_n_t_a_l _A_l_t_e_r_n_a_t_i_v_e _N_a_m_e _S_p_e_c_i_f_i_c_a_t_i_o_n _S_u_p_p_o_r_t

_D_e_s_c_r_i_p_t_i_o_n:

     Alternative interface for specifying a name space within the code
     of a package.

_U_s_a_g_e:

     .Export(...)
     .Import(...)
     .ImportFrom(name, ...)
     .S3method(generic, class, method)

_A_r_g_u_m_e_n_t_s:

     ...: name or literal character string arguments.

    name: name or literal character string.

 generic: name or literal character string.

   class: name or literal character string.

  method: optional character or function argument.

_D_e_t_a_i_l_s:

     As an experimental alternative to using a 'NAMESPACE' file it is
     possible to add a name space to a package by adding a 'Namespace:
     <package_name>' entry to the 'DESCRIPTION' file and placing
     directives to specify imports and exports directly in package
     code.  These directives should be viewed as declarations, not as
     function calls.   Except to the optional method argument to
     '.S3method' arguments are not evaluated.  These directives should
     only be used at top level of package code except as noted below.

     '.Export' is used to declare exports.  Its arguments should be
     literal names or character strings.  '.Export' should only be used
     at package top level.

     '.Import' is used to declare the import of entire name spaces. Its
     arguments should be literal names or character strings.
     '.ImportFrom' is used to declare the import of selected variables
     from a single name space.  The first argument is a literal name or
     character string identifying the source name space; the remaining
     arguments are literal names or character strings identifying the
     variables to import.  As an experimental feature both '.Import'
     and '.ImportFrom' can be used to import variables into a local
     environment.  The drawback of allowing this is that dependencies
     cannot be determined easily at package load time, and as a result
     this feature may need to be dropped.

     '.S3method' is used to declare a method for S3-style 'UseMethod'
     dispatch.  This is needed since methods in packages that are
     imported but not on the search path might not be visible to the
     standard dispatch mechanism at a call site.  The first argument is
     the name of the generic, the second specifies the class.  The
     third argument is optional and defaults to the usual concatenation
     of generic and class separated by a period.  If supplied, the
     third argument should evaluate to a character string or a
     function.  If the third argument is omitted or a character string
     is supplied, then a function by that name must be defined.  If a
     function is supplied, it is used as the method.  When the method
     is specified as a name, explicitly or implicitly, the function
     lookup is handled lazily; this allows the definition to occur
     after the '.S3method' declaration and also integrates with
     possible data base storage of package code.

_A_u_t_h_o_r(_s):

     Luke Tierney

_E_x_a_m_p_l_e_s:

     ## Not run: 
     ## code for package/name space 'foo'
     x <- 1
     f <- function(y) c(x,y)
     print.foo <- function(x, ...) cat("<a foo>\n")
     .Export(f)
     S3method(print,foo)

     ## code for package/name space 'bar'
     .Import(foo)
     c <- function(...) sum(...)
     g <- function(y) f(c(y, 7))
     h <- function(y) y+9
     .Export(g, h)
     ## End(Not run)

