%%
%% This is file `l3skip.sty',
%% generated with the docstrip utility.
%%
%% The original source files were:
%%
%% l3skip.dtx  (with options: `package,trace')
%% 
%% 
%% EXPERIMENTAL CODE
%% 
%% Do not distribute this file without also distributing the
%% source files specified above.
%% 
%% Do not distribute a modified version of this file.
%% 
%% 
%% File: l3skip.dtx Copyright (C) 2005-2008 Frank Mittelbach, LaTeX3 project
%%
%% It may be distributed and/or modified under the conditions of the
%% LaTeX Project Public License (LPPL), either version 1.3c of this
%% license or (at your option) any later version.  The latest version
%% of this license is in the file
%%
%%    http://www.latex-project.org/lppl.txt
%%
%% This file is part of the ``expl3 bundle'' (The Work in LPPL)
%% and all files in that bundle must be distributed together.
%%
%% The released version of this bundle is available from CTAN.
%%
%% -----------------------------------------------------------------------
%%
%% The development version of the bundle can be found at
%%
%%    http://www.latex-project.org/svnroot/experimental/trunk/
%%
%% for those people who are interested.
%%
%%%%%%%%%%%
%% NOTE: %%
%%%%%%%%%%%
%%
%%   Snapshots taken from the repository represent work in progress and may
%%   not work or may contain conflicting material!  We therefore ask
%%   people _not_ to put them into distributions, archives, etc. without
%%   prior consultation with the LaTeX Project Team.
%%
%% -----------------------------------------------------------------------
\RequirePackage{l3names}
\GetIdInfo$Id: l3skip.dtx 1867 2010-03-23 13:03:12Z will $
       {L3 Experimental skip registers}
\ProvidesExplPackage
  {\filename}{\filedate}{\fileversion}{\filedescription}
\package_check_loaded_expl:
\cs_new_protected_nopar:Npn \skip_new:N #1 {
  \chk_if_free_cs:N #1
  \newskip #1
}
\cs_new_protected_nopar:Npn \skip_new_local:N #1 {
  \chk_if_free_cs:N #1
  \int_compare:nNnTF
    \tex_currentgrouplevel:D = 0
    \newskip \locskip
  #1
}
\cs_generate_variant:Nn \skip_new:N {c}
\cs_generate_variant:Nn \skip_new_local:N {c}
\cs_new_protected_nopar:Npn \skip_set:Nn #1#2 {
  #1\skip_eval:n{#2}
}
\cs_new_protected_nopar:Npn \skip_gset:Nn {
 \pref_global:D
  \skip_set:Nn
}
\cs_generate_variant:Nn \skip_set:Nn  {cn}
\cs_generate_variant:Nn \skip_gset:Nn  {cn}
\cs_new_protected_nopar:Npn \skip_zero:N #1{
  #1\c_zero_skip \scan_stop:
}
\cs_new_protected_nopar:Npn \skip_gzero:N {
 \pref_global:D
  \skip_zero:N
}
\cs_generate_variant:Nn \skip_zero:N {c}
\cs_generate_variant:Nn \skip_gzero:N {c}
\cs_new_protected_nopar:Npn \skip_add:Nn #1#2 {
  \tex_advance:D#1 by \skip_eval:n{#2}
}
\cs_generate_variant:Nn \skip_add:Nn {cn}
\cs_new_protected_nopar:Npn \skip_sub:Nn #1#2{
  \tex_advance:D#1-\skip_eval:n{#2}
}
\cs_new_protected_nopar:Npn \skip_gadd:Nn {
 \pref_global:D
  \skip_add:Nn
}
\cs_generate_variant:Nn \skip_gadd:Nn {cn}
\cs_new_nopar:Npn \skip_gsub:Nn {
 \pref_global:D
  \skip_sub:Nn
}
\cs_new_eq:NN  \skip_horizontal:N \tex_hskip:D
\cs_generate_variant:Nn \skip_horizontal:N {c}
\cs_new_nopar:Npn \skip_horizontal:n #1 { \skip_horizontal:N \skip_eval:n{#1} }
\cs_new_eq:NN  \skip_vertical:N \tex_vskip:D
\cs_generate_variant:Nn \skip_vertical:N {c}
\cs_new_nopar:Npn \skip_vertical:n #1 { \skip_vertical:N \skip_eval:n{#1} }
\cs_new_eq:NN \skip_use:N \tex_the:D
\cs_generate_variant:Nn \skip_use:N {c}
\cs_new_eq:NN  \skip_show:N \tex_showthe:D
\cs_new_nopar:Npn \skip_show:c #1 { \skip_show:N \cs:w #1 \cs_end: }
\cs_new_protected_nopar:Npn \skip_eval:n #1 { \etex_glueexpr:D #1 \scan_stop: }
%%\chk_if_free_cs:N \l_tmpa_skip
%%\tex_skipdef:D\l_tmpa_skip 255  %currently taken up by \skip@
\skip_new:N \l_tmpa_skip
\skip_new:N \l_tmpb_skip
\skip_new:N \l_tmpc_skip
\skip_new:N \g_tmpa_skip
\skip_new:N \g_tmpb_skip
\cs_set_eq:NN \c_zero_skip \z@
\cs_set_eq:NN \c_max_skip  \maxdimen
\prg_new_conditional:Nnn \skip_if_infinite_glue:n {p,TF,T,F} {
  \bool_if:nTF {
      \intexpr_compare_p:nNn {\etex_gluestretchorder:D #1 } > \c_zero ||
      \intexpr_compare_p:nNn {\etex_glueshrinkorder:D  #1 } > \c_zero
  } {\prg_return_true:} {\prg_return_false:}
}
\cs_new_nopar:Npn \skip_split_finite_else_action:nnNN #1#2#3#4{
  \skip_if_infinite_glue:nTF {#1}
  {
    #3 = \c_zero_skip
    #4 = \c_zero_skip
    #2
  }
  {
    #3 = \etex_gluestretch:D #1 \scan_stop:
    #4 = \etex_glueshrink:D  #1 \scan_stop:
  }
}
\cs_new_protected_nopar:Npn \dim_new:N #1 {
  \chk_if_free_cs:N #1
  \newdimen #1
}
\cs_new_protected_nopar:Npn \dim_new_local:N #1 {
  \chk_if_free_cs:N #1
  \int_compare:nNnTF
    \tex_currentgrouplevel:D = 0
    \newdimen \locdimen
  #1
}
\cs_generate_variant:Nn \dim_new:N {c}
\cs_generate_variant:Nn \dim_new_local:N {c}
\cs_new_protected_nopar:Npn \dim_set:Nn #1#2 { #1~ \dim_eval:n{#2} }
\cs_generate_variant:Nn \dim_set:Nn {cn,Nc}
\cs_new_protected_nopar:Npn \dim_gset:Nn { \pref_global:D \dim_set:Nn  }
\cs_generate_variant:Nn \dim_gset:Nn {cn,Nc,cc}
\cs_new_protected_nopar:Npn \dim_zero:N #1 { #1\c_zero_skip }
\cs_generate_variant:Nn \dim_zero:N {c}
\cs_new_protected_nopar:Npn \dim_gzero:N { \pref_global:D \dim_zero:N  }
\cs_generate_variant:Nn \dim_gzero:N {c}
\cs_new_protected_nopar:Npn \dim_add:Nn #1#2{
    \tex_advance:D#1 by \dim_eval:n{#2}\scan_stop:
}
\cs_generate_variant:Nn \dim_add:Nn {cn,Nc}
\cs_new_protected_nopar:Npn \dim_gadd:Nn { \pref_global:D \dim_add:Nn  }
\cs_generate_variant:Nn \dim_gadd:Nn {cn}
\cs_new_protected_nopar:Npn \dim_sub:Nn #1#2 { \tex_advance:D#1-#2\scan_stop: }
\cs_generate_variant:Nn \dim_sub:Nn {cn,Nc}
\cs_new_protected_nopar:Npn \dim_gsub:Nn { \pref_global:D \dim_sub:Nn  }
\cs_generate_variant:Nn \dim_gsub:Nn {cn}
\cs_new_eq:NN \dim_use:N \tex_the:D
\cs_generate_variant:Nn \dim_use:N {c}
\cs_new_eq:NN  \dim_show:N \tex_showthe:D
\cs_new_nopar:Npn \dim_show:c #1 { \dim_show:N \cs:w #1 \cs_end: }
\dim_new:N \l_tmpa_dim
\dim_new:N \l_tmpb_dim
\dim_new:N \l_tmpc_dim
\dim_new:N \l_tmpd_dim
\dim_new:N \g_tmpa_dim
\dim_new:N \g_tmpb_dim
\cs_new_eq:NN \c_zero_dim \c_zero_skip
\cs_new_eq:NN \c_max_dim  \c_max_skip
\cs_new_protected_nopar:Npn \dim_eval:n #1 { \etex_dimexpr:D #1 \scan_stop: }
\cs_new_eq:NN \if_dim:w \tex_ifdim:D
\prg_new_conditional:Nnn \dim_compare:nNn {p,TF,T,F} {
  \if_dim:w \dim_eval:n {#1} #2 \dim_eval:n {#3}
    \prg_return_true: \else: \prg_return_false: \fi:
}
\cs_new_nopar:Npn \dim_while_do:nNnn #1#2#3#4{
  \dim_compare:nNnT {#1}#2{#3}{#4 \dim_while_do:nNnn {#1}#2{#3}{#4}}
}
\cs_new_nopar:Npn \dim_until_do:nNnn #1#2#3#4{
  \dim_compare:nNnF {#1}#2{#3}{#4 \dim_until_do:nNnn {#1}#2{#3}{#4}}
}
\cs_new_nopar:Npn \dim_do_while:nNnn #1#2#3#4{
  #4 \dim_compare:nNnT {#1}#2{#3}{\dim_do_while:nNnn {#1}#2{#3}{#4}}
}
\cs_new_nopar:Npn \dim_do_until:nNnn #1#2#3#4{
  #4 \dim_compare:nNnF {#1}#2{#3}{\dim_do_until:nNnn {#1}#2{#3}{#4}}
}
\cs_new_protected_nopar:Npn \muskip_new:N #1 {
  \chk_if_free_cs:N #1
  \newmuskip #1
}
\cs_new_protected_nopar:Npn \muskip_new_local:N #1 {
  \chk_if_free_cs:N #1
  \int_compare:nNnTF
    \tex_currentgrouplevel:D = 0
    \newmuskip \locmuskip
  #1
}
\cs_new_protected_nopar:Npn \muskip_set:Nn#1#2{#1\etex_muexpr:D#2\scan_stop:}
\cs_new_protected_nopar:Npn \muskip_gset:Nn{\pref_global:D\muskip_set:Nn}
\cs_new_protected_nopar:Npn \muskip_add:Nn#1#2{\tex_advance:D#1\etex_muexpr:D#2\scan_stop:}
\cs_new_protected_nopar:Npn \muskip_gadd:Nn{\pref_global:D\muskip_add:Nn}
\cs_new_protected_nopar:Npn \muskip_sub:Nn#1#2{\tex_advance:D#1-\etex_muexpr:D#2\scan_stop:}
\cs_new_protected_nopar:Npn \muskip_gsub:Nn{\pref_global:D\muskip_sub:Nn}
\cs_new_eq:NN \muskip_use:N \tex_the:D
%% 
%%
%% End of file `l3skip.sty'.
