For API consistency and uniformity between container classes, the
following methods have been renamed:

csArray<>::Length() => csArray<>::GetSize()

csArray<>::SetLength() => csArray<>::SetSize()

csHash<>::DeleteAll() => csHash<>::Empty()

csHash<>::In() => csHash<>::Contains()

csHash<>::PutFirst() => csHash<>::PutUnique()

csList<>::FetchPrev() => csList<>::FetchPrevious()

csList<>::HasPrev() => csList<>::HasPrevious()

csSet<>::DeleteAll() => csSet<>::Empty()

csSet<>::In() => csSet<>::Contains()

csString::Clear() => csString::Empty()

csString::FindReplace() => csString::ReplaceAll()

csString::FindStr() => csString::Find()

csString::Reclaim() => csString::ShrinkBestFit()

iString::FindReplace() => iString::ReplaceAll()

iString::FindStr() => iString::Find()

iStringArray::DeleteAll() => iStringArray::Empty()

iStringSet::Clear() => iStringSet::Empty()

In most cases, the old names listed above are still recognized for backward
compatibility, but they are deprecated, so you probably ought to convert to the
new API at some point. The API of most of the container classes also
has been expanded, so you may want to study the API reference manual to
learn about newly available functionality.

Likewise, the following global functions have been renamed:

csFindReplace() => csReplaceAll()

For consistency with like-named methods in other SCF interfaces, the
following ‘iImage’ methods have been renamed:

GetKeycolor() => GetKeyColor()

HasKeycolor() => HasKeyColor()

Various methods in ‘csIntersect3’ have been renamed in order to improve
consistency and clarity. In addition, some arguments have been reversed order
so that, for example, a method named SegmentTriangle() will receive
first the segment argument followed by the triangle argument.

AxisPlane() => SegmentAxisPlane()

IntersectPolygon() => PlanePolygon() (plane version)

IntersectPolygon() => SegmentPolygon() (segment version)

IntersectSegment() => SegmentFrustum()

IntersectTriangle() => SegmentTriangle()

Plane() => SegmentPlane()

Planes() => SegmentPlanes() (segment version)

Planes() => ThreePlanes() (three planes version)

XFrustum() => SegmentXFrustum()

XPlane() => SegmentXPlane()

YFrustum() => SegmentYFrustum()

YPlane() => SegmentYPlane()

Z0Plane() => SegmentZ0Plane()

ZPlane() => SegmentZPlane()

In addition to that the function csMath3::FindIntersection() has been
removed and is replaced with a new csIntersect3::TriangleTriangle()
routine which is faster and more correct.

The same improvements have been made to csIntersect2:

IntersectPolygon() => PlanePolygon() (plane version)

Lines() => LineLine() (plane version)

Plane() => SegmentPlane()

PlaneNoTest() => SegmentPlaneNoTest()

Planes() => PlanePlane()

Segments() => SegmentSegment() (plane version)

The following configuration control macros (most of which are emitted to
‘csconfig.h’ by the Crystal Space ‘configure’ script) have been
renamed in order to improve internal naming consistency, and to conform more
closely to naming scheme used by Autoconf.

CS_HAS_CAL3D => CS_HAVE_CAL3D

CS_HAS_CMATH_H => CS_HAVE_CMATH_H

CS_HAS_GLHANDLEARB_T => CS_HAVE_GLHANDLEARB_T

CS_HAS_INT64_C => CS_HAVE_INT64_C

CS_HAS_INTMAX_T => CS_HAVE_INTMAX_T

CS_HAS_INTPTR_T => CS_HAVE_INTPTR_T

CS_HAS_INTTYPES_H => CS_HAVE_INTTYPES_H

CS_HAS_MACHINE_SOUNDCARD_H => CS_HAVE_MACHINE_SOUNDCARD_H

CS_HAS_MEMORY_MAPPED_IO => CS_HAVE_MEMORY_MAPPED_IO

CS_HAS_POSIX_MMAP => CS_HAVE_POSIX_MMAP

CS_HAS_REGEX => CS_HAVE_REGEX

CS_HAS_SOUNDCARD_H => CS_HAVE_SOUNDCARD_H

CS_HAS_STDINT_H => CS_HAVE_STDINT_H

CS_HAS_SYS_PARAM_H => CS_HAVE_SYS_PARAM_H

CS_HAS_SYS_SOUNDCARD_H => CS_HAVE_SYS_SOUNDCARD_H

CS_HAS_WCHAR_H => CS_HAVE_WCHAR_H

CS_RTLD_NOW_AVAILABLE => CS_HAVE_RTLD_NOW

Likewise, the same normalization has been applied to the
‘CS_USE_FAKE_feature’ macros published by the ‘configure’ script, and
the boolean sense of these control macros has been reversed to account for the
name change.

CS_USE_FAKE_EXPLICIT_KEYWORD =>
CS_HAVE_CXX_KEYWORD_EXPLICIT

CS_USE_FAKE_MATH_H_FLOAT_FUNCS =>
CS_HAVE_MATH_H_FLOAT_FUNCS

CS_USE_FAKE_SOCKLEN_TYPE => CS_HAVE_SOCKLEN_T

CS_USE_FAKE_TYPENAME_KEYWORD =>
CS_HAVE_CXX_KEYWORD_TYPENAME

CS_USE_FAKE_WCHAR_TYPE => CS_HAVE_WCHAR_T

CS_USE_FAKE_WCSLEN => CS_HAVE_WCSLEN

For consistency with like-named macros (such as ‘CS_PROCESSOR_NAME’ and
‘CS_PROCESSOR_arch’), the following control macros have been renamed:

CS_PROCSIZE => CS_PROCESSOR_SIZE

The csOrdering<> template has been renamed to the more general
csComparator<> to reflect the fact that this template can perform both
ordering and equality comparisons.

Pollution Reduction

In order to avoid polluting the top-level system include directory, the Crystal
Space header tree is now installed (via ‘make install’ or
‘jam install’) in a subdirectory named ‘crystalspace’, rather than
being installed directly in the top-level system directory. For example,
assuming the default installation location, the Crystal Space headers are now
installed in ‘/usr/local/include/crystalspace’. Previously, they would
have been deposited directly into ‘/usr/local/include’. The
‘cs-config’ utility script properly returns the new header location in
response to the ‘--includedir’, ‘--cflags’, and ‘--cxxflags’
options, so this relocation should be mostly transparent to external projects.

The following global header files have been renamed in order to avoid possible
conflict with headers installed by other packages.

platform.h => csplatform.h

qint.h => csqint.h

qsqrt.h => csqsqrt.h

volatile.h => csconfig.h

The following symbols have been renamed in order to avoid pollution of the
global namespace.

BadBraces => csrxBadBraces

BadPattern => csrxBadPattern

BadRepetition => csrxBadRepetition

big_endian_float() => csBigEndianFloat()

big_endian_long() => csBigEndianLong()

big_endian_longlong() => csBigEndianLongLong()

big_endian_short() => csBigEndianShort()

COMP_BC => CS_COMPILER_BCC

COMP_GCC => CS_COMPILER_GCC

COMP_VC => CS_COMPILER_MSVC

convert_endian() => csConvertEndian()

DO_MMX => CS_HAVE_MMX

DO_NASM => CS_HAVE_NASM

double2longlong() => csDoubleToLongLong()

ErrBraces => csrxErrBraces

ErrBrackets => csrxErrBrackets

ErrCharType => csrxErrCharType

ErrCollate => csrxErrCollate

ErrEscape => csrxErrEscape

ErrParentheses => csrxErrParentheses

ErrRange => csrxErrRange

ErrSpace => csrxErrSpace

ErrSubReg => csrxErrSubReg

ErrUnknown => csrxErrUnknown

float2long() => csFloatToLong()

float2short() => csFloatToShort()

get_le_float16() => csGetLittleEndianFloat16()

get_le_float32() => csGetLittleEndianFloat32()

get_le_long() => csGetLittleEndianLong()

get_le_short() => csGetLittleEndianShort()

IgnoreCase => csrxIgnoreCase

little_endian_float() => csLittleEndianFloat()

little_endian_long() => csLittleEndianLong()

little_endian_longlong() => csLittleEndianLongLong()

little_endian_short() => csLittleEndianShort()

long2float() => csLongToFloat()

longlong2double() => csLongLongToDouble()

MemEntry => csMemTrackerEntry

MemoryMapFile() => csMemoryMapFile()

MemoryMapWindow() => csMemoryMapWindow()

MemTrackerInfo => csMemTrackerInfo

MemTrackerModule => csMemTrackerModule

MemTrackerRegistry => csMemTrackerRegistry

MKDIR() => CS_MKDIR()

mmioInfo => csMemMapInfo

__NEED_GENERIC_ISDIR => CS_USE_CUSTOM_ISDIR

__NEED_OPENDIR_PROTOTYPE => CS_WIN32_USE_CUSTOM_OPENDIR

NewLine => csrxNewLine

NoError => csrxNoError

NoMatch => csrxNoMatch

NotBOL => csrxNotBOL

NotEOL => csrxNotEOL

OS_DOS => CS_PLATFORM_DOS

OS_MACOSX => CS_PLATFORM_MACOSX

OS_UNIX => CS_PLATFORM_UNIX

OS_WIN32 => CS_PLATFORM_WIN32

PATH_DELIMITER => CS_PATH_DELIMITER

PATH_SEPARATOR => CS_PATH_SEPARATOR

PROC_arch => CS_PROCESSOR_arch (where ‘arch’ is
‘X86’, ‘M68K’, etc.)

ProcEventHandler() => csProcTexEventHandler

QInt() => csQint()

QInt16() => csQfixed16()

QInt24() => csQfixed24()

QInt8() => csQfixed8()

qisqrt() => csQisqrt()

QRound() => csQround()

qsqrt() => csQsqrt()

RegisterMemoryTrackerModule() => mtiRegisterModule()

set_le_float16() => csSetLittleEndianFloat16()

set_le_float32() => csSetLittleEndianFloat32()

set_le_long() => csSetLittleEndianLong()

set_le_short() => csSetLittleEndianShort()

short2float() => csShortToFloat()

TEMP_DIR => CS_TEMP_DIR

TEMP_FILE => CS_TEMP_FILE

UnMemoryMapFile() => csUnMemoryMapFile()

WIN32_VOLATILE => CS_WIN32_CSCONFIG

‘iConfig’ Renamed

The ‘iConfig’ interface has been renamed to the more fitting
‘iPluginConfig’, and the containing header from ‘iutil/config.h’ to
iutil/pluginconfig.h. Other changes have not been made.

csRenderMeshHolderSingle Renamed

‘csRenderMeshHolderSingle’ has been renamed to ‘csRenderMeshHolder’
as a consequence of the removal of ‘csRenderMeshHolderMultiple’.