/** @addtogroup std */
/*@{*/

/**
 * \~russian @name  
 * \~english @name Standard game functions
 */
//@{

/** \~russian       .
 *
 * @param  index       .    3
 *                    (   0-3  ).
 * @param  iniOption      ini- .
 *
 * @see  @ref Slots
 * @see  ProtoItem::Slot
 */
void AllowSlot(uint8 index, string& iniOption);

/** \~russian   ,     .
 * @remarks      .
 * @remarks     Critter::SetSendParam.
 */
void SetRegistrationParameter(uint index, bool enabled);

//@}

/**
 * \~russian @name  
 * \~english @name Math functions
 */
//@{

/** \~russian    .
 *
 * @param  x  ,   .
 * @return  @a x.
 *
 ** \~english Returns the cosine of the specified angle.
 *
 * @param  x  Floating point value representing an angle expressed in radians.
 * @return Cosine of @a x.
 *
 */
float cos(float x);

/** \~russian    .
 *
 * @param  x  ,   .
 * @return  @a x.
 *
 ** \~english Returns the sine of the specified angle.
 *
 * @param  x  Floating point value representing an angle expressed in radians.
 * @return Sine of @a x.
 *
 */
float sin(float x);

/** \~russian    .
 *
 * @param  x  ,   .
 * @return  @a x.
 *
 ** \~english Returns the tangent of the specified angle.
 *
 * @param  x  Floating point value representing an angle expressed in radians.
 * @return Tangent of @a x.
 *
 */
float tan(float x);

/** \~russian  ,     .
 *
 * @param  x     <code>[-1,+1]</code>,  .
 * @return ,   ,   <code>[0,pi]</code> .
 *
 ** \~english Returns the principal value of the arc cosine of the specified angle.
 *
 * @param  x  Floating point value in the interval <code>[-1,+1]</code>.
 * @return Principal arc cosine of @a x, in the interval <code>[0,pi]</code> radians.
 *
 */
float acos(float x);

/** \~russian  ,     .
 *
 * @param  x     <code>[-1,+1]</code>,  .
 * @return ,   ,   <code>[-pi/2,+pi/2]</code> .
 *
 ** \~english Returns the principal value of the arc sine of the specified angle.
 *
 * @param  x  Floating point value in the interval <code>[-1,+1]</code>.
 * @return Principal arc sine of @a x, in the interval <code>[-pi/2,+pi/2]</code> radians.
 *
 */
float asin(float x);

/** \~russian  ,     .
 *
 * @param  x    .
 * @return ,   ,   <code>[-pi/2,+pi/2]</code> .
 *
 ** \~english Returns the principal value of the arc tangent of the specified angle.
 *
 * @param  x  Floating point value.
 * @return Principal arc tangent of @a x, in the interval [-pi/2,+pi/2] radians.
 *
 */
float atan(float x);

/** \~russian  ,       .
 *
 * @param  y   y .
 * @param  x    .
 * @return ,   ,   <code>[-pi,+pi]</code> ,
 *             <code>y/x</code>,  <code>(x, y)</code> 
 *              .
 *
 ** \~english Returns the principal value of the arc tangent of <code>y/x</code>, expressed in radians.
 *
 * @param  y  Floating point value representing an y-coordinate.
 * @param  x  Floating point value representing an x-coordinate.
 * @return Principal arc tangent of <code>y/x</code>, in the interval <code>[-pi,+pi]</code> radians.
 *
 */
float atan2(float y, float x);

/** \~russian     .
 *
 * @param  x  ,   .
 * @return   @a x.
 *
 ** \~english Returns the hyperbolic cosine of @a x.
 *
 * @param  x  Floating point value.
 * @return Hyperbolic cosine of @a x.
 *
 */
float cosh(float x);

/** \~russian     .
 *
 * @param  x  ,   .
 * @return   @a x.
 *
 ** \~english Returns the hyperbolic sine of @a x.
 *
 * @param  x  Floating point value.
 * @return Hyperbolic sine of @a x.
 *
 */
float sinh(float x);

/** \~russian     .
 *
 * @param  x  ,   .
 * @return   @a x.
 *
 ** \~english Returns the hyperbolic tangent of @a x.
 *
 * @param  x  Floating point value.
 * @return Hyperbolic tangent of @a x.
 *
 */
float tanh(float x);

/** \~russian     .
 *
 * @param  x  ,     .
 * @return   @a x.
 *
 ** \~english Returns the natural logarithm of @a x.
 *
 * @param  x  Floating point value.
 * @return Natural logarithm of @a x.
 *
 */
float log(float x);

/** \~russian     .
 *
 * @param  x  ,     .
 * @return   @a x.
 *
 ** \~english Returns the common (base-10) logarithm of @a x.
 *
 * @param  x  Floating point value.
 * @return Common logarithm of @a x, for values of @a x greater than zero.
 *
 */
float log10(float x);

/** \~russian   ,    .
 *
 * @param  base      ,   .
 * @param  exponent  ,  .
 * @return  @a base,    @a exponent.
 *
 ** \~english Returns @a base raised to the power @a exponent:  base<sup>exponent</sup>.
 *
 * @param  base      Floating point value.
 * @param  exponent  Floating point value.
 * @return The result of raising @a base to the power @a exponent.
 *
 */
float pow(float base, float exponent);

/** \~russian      .
 *
 * @param  x   (<code>x>=0</code>).
 * @return    @a x.
 *
 ** \~english Returns the square root of @a x.
 *
 * @param  x Floating point value (<code>x>=0</code>).
 * @return Square root of @a x.
 *
 */
float sqrt(float x);

/** \~russian    ,      .
 *
 * @param  x  .
 * @return   ,    @a x.
 *
 ** \~english Returns the smallest integral value that is not less than @a x.
 *
 * @param  x  Floating point value.
 * @return The smallest integral value not less than @a x.
 *
 */
float ceil(float x);

/** \~russian     .
 *
 * @param  x  .
 * @return   @a x.
 *
 ** \~english Returns the absolute value of @a x.
 *
 * @param  x  Floating point value.
 * @return The absolute value of @a x.
 *
 */
float abs(float x);

/** \~russian    ,      .
 *
 * @param  x  .
 * @return   ,    @a x.
 *
 ** \~english Returns the largest integral value that is not greater than @a x.
 *
 * @param  x  Floating point value.
 * @return The largest integral value not greater than @a x.
 *
 */
float floor(float x);

/** \~russian     .
 *
 * @param  x  .
 * @return    @a x,    .
 *
 ** \~english Returns the fractional part of @a x.
 *
 * @param  x  Floating point value.
 * @return The fractional part of x, with the same sign.
 *
 */
float fraction(float x);

//@}

/**
 * \~russian @name     
 * \~english @name String functions
 */
//@{

/** \~russian    .
 *
 * @param  str      .
 * @param  start          ( ).
 * @param  length     .
 *
 * @return    .
 *
 ** \~english Returns a substring of the specified string.
 *
 * @param  str     Input string.
 * @param  start   Position of a character in the input string to be used as starting character for the substring.
 * @param  length  Length of the substring.
 *
 * @return String containing the substring of the input string.
 *
 */
string@ substring(const string &in str, int start, int length);

/** \~russian          .
 *
 * @param  str   .
 * @param  sub  ,      .
 *
 * @return ,         ,
 *            ,   -1,    .
 *
 ** \~english Searches the input string for the specified substring and returns the position of the first occurrence in the string.
 *
 * @param  str  Input string.
 * @param  sub  String to be searched for in the input string.
 *              The entire content of @a sub must be matched in some part of the string to be considered a match.
 *
 * @return The position of the first occurrence in the string of the searched substring.
 *         If the substring doesn't exist in the input string, -1 is returned.
 *
 */
int findFirst(const string &in str, const string &in sub);

/** \~russian          .
 *
 * @param  str       .
 * @param  sub      ,      .
 * @param  startAt     ,    .
 *
 * @return ,         ,
 *            ,   -1,    .
 *
 ** \~english Searches the input string for the specified substring and returns the position of the first occurrence in the string.
 *
 * @param  str      Input string.
 * @param  sub      String to be searched for in the input string.
 *                  The entire content of @a sub must be matched in some part of the string to be considered a match.
 * @param  startAt  The search starting position in the input string.
 *
 * @return The position of the first occurrence in the string of the searched substring.
 *         If the substring doesn't exist in the input string, -1 is returned.
 */
int findFirst(const string &in str, const string &in sub, int startAt);

/** \~russian          .
 *
 * @param  str   .
 * @param  sub  ,      .
 *
 * @return ,         ,
 *            ,   -1,    .
 *
 ** \~english Searches the input string for the specified substring and returns the position of the last occurrence in the string.
 *
 * @param  str  Input string.
 * @param  sub  String to be searched for in the input string.
 *              The entire content of @a sub must be matched in some part of the string to be considered a match.
 *
 * @return The position of the last occurrence in the string of the searched substring.
 *         If the substring doesn't exist in the input string, -1 is returned.
 *
 */
int findLast(const string &in str, const string &in sub);

/** \~russian          .
 *
 * @param  str       .
 * @param  sub      ,      .
 * @param  startAt     ,    .
 *
 * @return ,         ,
 *            ,   -1,    .
 *
 ** \~english Searches the input string for the specified substring and returns the position of the last occurrence in the string.
 *
 * @param  str      Input string.
 * @param  sub      String to be searched for in the input string.
 *                  The entire content of @a sub must be matched in some part of the string to be considered a match.
 * @param  startAt  The search starting position in the input string.
 *
 * @return The position of the last occurrence in the string of the searched substring.
 *         If the substring doesn't exist in the input string, -1 is returned.
 */
int findLast(const string &in str, const string &in sub, int startAt);

/** \~russian        ,
 *               .
 *
 * @param  str   .
 * @param  set  ,   .
 *
 * @return       , 
 *            @a set.     ,   -1.
 *
 ** \~english Searches the input string for @b any of the characters that are part of @a set and returns the position of the first occurrence.
 *
 * @param  str  Input string.
 * @param  set  String containing the characters to search for.
 *              The first character in the input string that compares equal
 *              to any of the characters in @a str is considered a match.
 *
 * @return The position of the first occurrence in the string of any of the characters searched for.
 *         If such character isn't found, -1 is returned.
 *
 */
int findFirstOf(const string &in str, const string &in set);

/** \~russian        ,
 *               .
 *
 * @param  str       .
 * @param  set      ,   .
 * @param  startAt     ,    .
 *
 * @return       , 
 *            @a set.     ,   -1.
 *
 ** \~english Searches the input string for @b any of the characters that are part of @a set and returns the position of the first occurrence.
 *
 * @param  str      Input string.
 * @param  set      String containing the characters to search for.
 *                  The first character in the input string that compares equal
 *                  to any of the characters in @a str is considered a match.
 * @param  startAt  The search starting position in the input string.
 *
 * @return The position of the first occurrence in the string of any of the characters searched for.
 *         If such character isn't found, -1 is returned.
 *
 */
int findFirstOf(const string &in str, const string &in set, int startAt);

/** \~russian        ,
 *            @b     .
 *
 * @param  str       .
 * @param  set      ,   .
 *
 * @return       ,  
 *           @a set.     ,   -1.
 *
 ** \~english Searches for the first character in the input string which is not part of @a set and returns its position.
 *
 * @param  str      Input string.
 * @param  set      String containing the characters to match against in the input string.
 *
 * @return The position of the first character in the input string that is not part
 *         of characters it is being matched against. If such character isn't found, -1 is returned.
 *
 */
int findFirstNotOf(const string &in str, const string &in set);

/** \~russian        ,
 *            @b     .
 *
 * @param  str       .
 * @param  set      ,   .
 * @param  startAt     ,    .
 *
 * @return       ,  
 *           @a set.     ,   -1.
 *
 ** \~english Searches for the first character in the input string which is not part of @a set and returns its position.
 *
 * @param  str      Input string.
 * @param  set      String containing the characters to match against in the input string.
 * @param  startAt  The search starting position in the input string.
 *
 * @return The position of the first character in the input string that is not part
 *         of characters it is being matched against. If such character isn't found, -1 is returned.
 *
 */
int findFirstNotOf(const string &in str, const string &in set, int startAt);

/** \~russian        ,
 *               .
 *
 * @param  str   .
 * @param  set  ,   .
 *
 * @return       , 
 *            @a set.     ,   -1.
 *
 ** \~english Searches the input string for @b any of the characters that are part of @a set and returns the position of the last occurrence.
 *
 * @param  str  Input string.
 * @param  set  String containing the characters to search for.
 *              The last character in the input string that compares equal
 *              to any of the characters in @a str is considered a match.
 *
 * @return The position of the last occurrence in the string of any of the characters searched for.
 *         If such character isn't found, -1 is returned.
 *
 */
int findLastOf(const string &in str, const string &in set);

/** \~russian        ,
 *               .
 *
 * @param  str   .
 * @param  set  ,   .
 * @param  startAt     ,    .
 *
 * @return       , 
 *            @a set.     ,   -1.
 *
 ** \~english Searches the input string for @b any of the characters that are part of @a set and returns the position of the last occurrence.
 *
 * @param  str  Input string.
 * @param  set  String containing the characters to search for.
 *              The last character in the input string that compares equal
 *              to any of the characters in @a str is considered a match.
 * @param  startAt  The search starting position in the input string.
 *
 * @return The position of the last occurrence in the string of any of the characters searched for.
 *         If such character isn't found, -1 is returned.
 *
 */
int findLastOf(const string &in str, const string &in set, int startAt);

/** \~russian        ,
 *            @b     .
 *
 * @param  str       .
 * @param  set      ,   .
 *
 * @return       ,  
 *           @a set.     ,   -1.
 *
 ** \~english Searches for the last character in the input string which is not part of @a set and returns its position.
 *
 * @param  str      Input string.
 * @param  set      String containing the characters to match against in the input string.
 *
 * @return The position of the last character in the input string that is not part
 *         of characters it is being matched against. If such character isn't found, -1 is returned.
 *
 */
int findLastNotOf(const string &in str, const string &in set);

/** \~russian        ,
 *            @b     .
 *
 * @param  str       .
 * @param  set      ,   .
 * @param  startAt     ,    .
 *
 * @return       ,  
 *           @a set.     ,   -1.
 *
 ** \~english Searches for the last character in the input string which is not part of @a set and returns its position.
 *
 * @param  str      Input string.
 * @param  set      String containing the characters to match against in the input string.
 * @param  startAt  The search starting position in the input string.
 *
 * @return The position of the last character in the input string that is not part
 *         of characters it is being matched against. If such character isn't found, -1 is returned.
 *
 */
int findLastNotOf(const string &in str, const string &in set, int startAt);

/** \~russian     ,   .
 *
 * @param  str         .
 * @param  delimiter  ,     .
 *
 * @return ,      ,
 *           @a delimiter.
 *
 ** \~english Splits the string into an array of substrings.
 *
 * @param  str        String to split.
 * @param  delimiter  String that delimit the substrings in the splitted string.
 *
 * @return An array whose elements contain the substrings of the string @a str
 *         that are delimited by the @a delimiter.
 *
 */
string@[]@ split(const string &in str, const string &in delimiter);

/** \~russian     ,   .
 *
 * @param  str         .
 * @param  delimiter  ,     .
 *
 * @return ,      ,
 *           @a delimiter.       ,     //_   .
 *
 */
string@[]@ splitEx(const string &in str, const string &in delimiter);

/** \~russian        ,      .
 *
 * @param  str          .
 * @param  delimiter  ,     
 *                       .
 *
 * @return ,    @a str,   @a delimiter.
 *
 ** \~english Joins an array of strings into a larger string separated by a delimiter.
 *
 * @param  str        An array of strings.
 * @param  delimiter  A string.
 *
 * @return A string consisting of the elements of @a str interspersed
 *         with the @a delimiter string.
 *
 */
string@ join(const string@[] &in str, const string &in delimiter);

/** \~russian     .
 *
 * @param  str   .
 * @return  @a str   .
 *
 ** \~english Converts the specified string to lowercase.
 *
 * @param  str  Input string.
 * @return String @a str in lowercase.
 */
string@ strlwr(const string &in str);

/** \~russian     .
 *
 * @param  str   .
 * @return  @a str   .
 *
 ** \~english Converts the specified string to uppercase.
 *
 * @param  str  Input string.
 * @return String @a str in uppercase.
 */
string@ strupr(const string &in str);

/** \~russian   .   -      
 * 
 * @param  str  C     ( "/"        "\").    .
 * @return  
 * 
 ** \~english 
 * 
 * @param  str  Strings of which is calculated hash ("/" character in the original string will be automatically replaced by "\"). Function is case-insensitive.
 * @return String hash
 * 
 ** \~
 * @see Item::PicMap
 * @see ItemCl::PicMap
 * @see Item::PicInv
 * @see ItemCl::PicInv
 */
uint GetStrHash(string@ str);

//@}

/**
 * \~russian @name 
 */
//@{

/** \~russian    (Fallout, Tactics, Arcanum, etc)   CritterType
 * 
 * @param  crType    .
 * @return  .   Anim types _animation.fos.
 *
 */
int GetCritterAnimType(uint crType);

/** \~russian   Alias  CritterTypes.fos */
uint GetCritterAlias(uint crType)

/** \~russian   TypeName  CritterTypes.fos */
string@ GetCritterTypeName(uint crType)

/** \~russian   SoundName  CritterTypes.fos */
string@ GetCritterSoundName(uint crType)

//@}

/*!@}*/
