+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%% Name: longlong.tex
+%% Purpose: wxLongLong documentation
+%% Author: Vadim Zeitlin
+%% Modified by:
+%% Created: 07.03.00
+%% RCS-ID: $Id$
+%% Copyright: (c) Vadim Zeitlin
+%% License: wxWindows license
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
\section{\class{wxLongLong}}\label{wxlonglong}
This class represents a signed 64 bit long number. It is implemented using the
working with 64 bit integers independently of the architecture.
wxLongLong defines all usual arithmetic operations such as addition,
-substraction, bitwise shifts and logical operations as well as multiplication
+subtraction, bitwise shifts and logical operations as well as multiplication
and division (not yet for the machines without native {\it long long}). It
also has operators for implicit construction from and conversion to the native
{\it long long} type if it exists and {\it long}.
You would usually use this type in exactly the same manner as any other
-(built-in) arithmetic type.
+(built-in) arithmetic type. Note that wxLongLong is a signed type, if you
+want unsigned values use wxULongLong which has exactly the same API as
+wxLongLong except when explicitly mentioned otherwise.
+
+If a native (i.e. supported directly by the compiler) 64 bit integer type was
+found to exist, {\it wxLongLong\_t} macro will be defined to correspond to it.
+Also, in this case only, two additional macros will be defined:
+\helpref{wxLongLongFmtSpec}{wxlonglongfmtspec} for printing 64 bit integers
+using the standard {\tt printf()} function (but see also
+\helpref{ToString()}{wxlonglongtostring} for a more portable solution) and
+\helpref{wxLL}{wxll} for defining 64 bit integer compile-time constants.
+
+\wxheading{Derived from}
+
+No base class
+
+\wxheading{Include files}
+
+<wx/longlong.h>
+
+\latexignore{\rtfignore{\wxheading{Members}}}
+
+
+\membersection{wxLongLong::wxLongLong}\label{wxlonglongwxlonglongdef}
+
+\func{}{wxLongLong}{\void}
+
+Default constructor initializes the object to 0.
+
+
+\membersection{wxLongLong::wxLongLong}\label{wxlonglongwxlonglongll}
+
+\func{}{wxLongLong}{\param{wxLongLong\_t }{ll}}
+
+Constructor from native long long (only for compilers supporting it).
+
+
+\membersection{wxLongLong::wxLongLong}\label{wxlonglongwxlonglong}
+
+\func{}{wxLongLong}{\param{long }{hi}, \param{unsigned long }{lo}}
+
+Constructor from 2 longs: the high and low part are combined into one
+wxLongLong.
+
+
+\membersection{wxLongLong::operator=}\label{wxlonglongoperatorassign}
+
+\func{wxLongLong\& operator}{operator=}{\param{wxLongLong\_t }{ll}}
+
+Assignment operator from native long long (only for compilers supporting it).
+
+
+\membersection{wxLongLong::operator=}\label{wxlonglongoperatorassignull}
+
+\func{wxLongLong\& operator}{operator=}{\param{wxULongLong\_t }{ll}}
+
+Assignment operator from native unsigned long long (only for compilers
+supporting it).
+
+\newsince{2.7.0}
+
+\membersection{wxLongLong::operator=}\label{wxlonglongoperatorassignlong}
+
+\func{wxLongLong\& operator}{operator=}{\param{long }{l}}
+
+Assignment operator from long.
+
+\newsince{2.7.0}
+
+\membersection{wxLongLong::operator=}\label{wxlonglongoperatorassignulong}
+
+\func{wxLongLong\& operator}{operator=}{\param{unsigned long }{l}}
+
+Assignment operator from unsigned long.
+
+\newsince{2.7.0}
+
+\membersection{wxLongLong::operator=}\label{wxlonglongoperatorassignulonglong}
+
+\func{wxLongLong\& operator}{operator=}{\param{const wxULongLong \& }{ll}}
+
+Assignment operator from unsigned long long. The sign bit will be copied too.
+
+\newsince{2.7.0}
+
+\membersection{wxLongLong::Abs}\label{wxlonglongabs}
+
+\constfunc{wxLongLong}{Abs}{\void}
+
+\func{wxLongLong\&}{Abs}{\void}
+
+Returns an absolute value of wxLongLong - either making a copy (const version)
+or modifying it in place (the second one). Not in wxULongLong.
+
+
+\membersection{wxLongLong::Assign}\label{wxlonglongassign}
+
+\func{wxLongLong\&}{Assign}{\param{double }{d}}
+
+This allows to convert a double value to wxLongLong type. Such conversion is
+not always possible in which case the result will be silently truncated in a
+platform-dependent way. Not in wxULongLong.
+
+
+\membersection{wxLongLong::GetHi}\label{wxlonglonggethi}
+
+\constfunc{long}{GetHi}{\void}
+
+Returns the high 32 bits of 64 bit integer.
+
+
+\membersection{wxLongLong::GetLo}\label{wxlonglonggetlo}
+
+\constfunc{unsigned long}{GetLo}{\void}
+
+Returns the low 32 bits of 64 bit integer.
+
+
+\membersection{wxLongLong::GetValue}\label{wxlonglonggetvalue}
+
+\constfunc{wxLongLong\_t}{GetValue}{\void}
+
+Convert to native long long (only for compilers supporting it)
+
+
+\membersection{wxLongLong::ToDouble}\label{wxlonglonggetdouble}
+
+\constfunc{double}{ToDouble}{\void}
+
+Returns the value as \texttt{double}.
+
+
+\membersection{wxLongLong::ToLong}\label{wxlonglongtolong}
+
+\constfunc{long}{ToLong}{\void}
+
+Truncate wxLongLong to long. If the conversion loses data (i.e. the wxLongLong
+value is outside the range of built-in long type), an assert will be triggered
+in debug mode.
+
+
+\membersection{wxLongLong::ToString}\label{wxlonglongtostring}
+
+\constfunc{wxString}{ToString}{\void}
+
+Returns the string representation of a wxLongLong.
+
+
+\membersection{wxLongLong::operator$+$}\label{wxlonglongoperatorplus}
+
+\constfunc{wxLongLong}{operator$+$}{\param{const wxLongLong\& }{ll}}
+
+Adds 2 wxLongLongs together and returns the result.
+
+
+\membersection{wxLongLong::operator$+=$}\label{wxlonglongoperatorplusassign}
+
+\func{wxLongLong\&}{operator+}{\param{const wxLongLong\& }{ll}}
+
+Add another wxLongLong to this one.
+
+
+\membersection{wxLongLong::operator$++$}\label{wxlonglongoperatorinc}
+
+\func{wxLongLong\&}{operator$++$}{\void}
+
+\func{wxLongLong\&}{operator$++$}{\param{int}{}}
+
+Pre/post increment operator.
+
+
+\membersection{wxLongLong::operator$-$}\label{wxlonglongoperatorunaryminus}
+
+\constfunc{wxLongLong}{operator$-$}{\void}
+
+Returns the value of this wxLongLong with opposite sign. Not in wxULongLong.
+
+
+\membersection{wxLongLong::operator$-$}\label{wxlonglongoperatorminus}
+
+\constfunc{wxLongLong}{operator$-$}{\param{const wxLongLong\& }{ll}}
+
+Subtracts 2 wxLongLongs and returns the result.
+
+
+\membersection{wxLongLong::operator$-=$}\label{wxlonglongoperatorminusassign}
+
+\func{wxLongLong\&}{operator-}{\param{const wxLongLong\& }{ll}}
+
+Subtracts another wxLongLong from this one.
+
+
+\membersection{wxLongLong::operator$--$}\label{wxlonglongoperatordec}
+
+\func{wxLongLong\&}{operator$--$}{\void}
+
+\func{wxLongLong\&}{operator$--$}{\param{int}{}}
+
+Pre/post decrement operator.
+
+% TODO document all other arithmetics operations: shifts, multiplication,
+% division, bitwise, comparison