% Copyright 2006 by Till Tantau
%
% This file may be distributed and/or modified
%
% 1. under the LaTeX Project Public License and/or
% 2. under the GNU Public License.
%
% See the file doc/generic/pgf/licenses/LICENSE for more details.
% Comment: This file has been modified to utilize libraries in the pgfplots package.
% Edited by Nick Papior Andersen



% Loading further libraries

% Include a library file.
%
% #1 = List of names of library file.
%  
% Description:
%
% This command includes a list of pgfplots library files. For each file X in the
% list, the file tikzlibrarypgfplots.X.code.tex is included, provided this has
% not been done earlier. 
%
% For the convenience of Context users, both round and square brackets
% are possible for the argument.
%
% Example:
%
% \usepgfplotslibrary{units}
% \usepgfplotslibrary[units,dateplot]

\def\usepgfplotslibrary{\pgfutil@ifnextchar[{\use@pgfplotslibrary}{\use@@pgfplotslibrary}}%}
\def\use@pgfplotslibrary[#1]{\use@@pgfplotslibrary{#1}}
\def\use@@pgfplotslibrary#1{%
  \edef\pgf@list{#1}%
  \pgfutil@for\pgf@temp:=\pgf@list\do{%
	\expandafter\pgfkeys@spdef\expandafter\pgf@temp\expandafter{\pgf@temp}%
	\ifx\pgf@temp\pgfutil@empty
	\else
		\pgfplotsiflibraryloaded{\pgf@temp}{}{%
		  \expandafter\global\expandafter\let\csname pgfp@library@\pgf@temp @loaded\endcsname=\pgfutil@empty%
		  \expandafter\edef\csname pgfplots@library@#1@atcode\endcsname{\the\catcode`\@}
		  \expandafter\edef\csname pgfplots@library@#1@barcode\endcsname{\the\catcode`\|}
		  \catcode`\@=11
		  \catcode`\|=12
		  \pgfplots@iffileexists{tikzlibrarypgfplots.\pgf@temp.code.tex}{%
		  \input tikzlibrarypgfplots.\pgf@temp.code.tex}{%
		  \input pgflibrarypgfplots.\pgf@temp.code.tex}%
		  \catcode`\@=\csname pgfplots@library@#1@atcode\endcsname
		  \catcode`\|=\csname pgfplots@library@#1@barcode\endcsname
			\expandafter\ifx\csname pgfp@library@#1@loadoptions\endcsname\relax
			\else
				\expandafter\let\expandafter\pgfplots@glob@TMPa\csname pgfp@library@\pgf@temp @loadoptions\endcsname
				\expandafter\pgfplotsset\expandafter{\pgfplots@glob@TMPa}%
			\fi
		}%
	\fi
  }%
}

\pgfkeys{
	% #1: library name
	% #2: compatibility presets which are controlled by the
	% compatibility system but which belong to the library.
	%
	% FIXME : now as I wrote it, it might have been better to reverse
	% the dependency... !?
	/pgfplots/compat/library hook/.code 2 args={%
		\pgfplotsiflibraryloaded{#1}{%
			\pgfkeysalso{#2}%
		}{%
			\expandafter\ifx\csname pgfp@library@#1@loadoptions\endcsname\relax
				\expandafter\def\csname pgfp@library@#1@loadoptions\endcsname{#2}%
			\else
				\t@pgfplots@toka=\expandafter\expandafter\expandafter{\csname pgfp@library@#1@loadoptions\endcsname}%
				\t@pgfplots@tokb={#2}%
				\expandafter\edef\csname pgfp@library@#1@loadoptions\endcsname{\the\t@pgfplots@toka,\the\t@pgfplots@tokb}%
			\fi
		}%
	},
}

\def\pgfplotsiflibraryloaded#1#2#3{%
	\expandafter\ifx\csname pgfp@library@#1@loaded\endcsname\relax%
		#3\relax
	\else
		#2\relax
	\fi%
}%

% Default loaded libraries:
% Currently none
