Sophie

Sophie

distrib > Mandriva > 2010.0 > i586 > media > contrib-release > by-pkgid > bad97183153701b09df5fae1052b1c30 > files > 1396

crystalspace-doc-1.2.1-5mdv2010.0.i586.rpm

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
<title>Crystal Space 1.2.1: cssysdef.h File Reference (Crystal Space 1.2.1 Public API Reference)</title>
<link href="tabs.css" rel="stylesheet" type="text/css">
<link href="doxygen.css" rel="stylesheet" type="text/css">
</head><body>
<table border="0" cellpadding="0" cellspacing="0" width="100%" class="head">
 <tr height="59">
  <td class="head" width="202" valign="bottom" style="padding-left:0;"><a href="http://www.crystalspace3d.org/"><img src="csblur.png" width="236" height="59" alt="CrystalSpace" border="0"></a></td>
  <td class="head"><h2>Public API Reference</h2></td>
 </tr>
 <tr height="11">
  <td colspan="2" class="headshadow" valign="top" style="padding-left:0;"><img src="csblurb.png" width="236" height="11" alt="" border="0"></td>
 </tr>
</table>
<div class="content">
<!-- Generated by Doxygen 1.5.3 -->
<div class="tabs">
  <ul>
    <li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
    <li><a href="modules.html"><span>Modules</span></a></li>
    <li><a href="namespaces.html"><span>Namespaces</span></a></li>
    <li><a href="classes.html"><span>Classes</span></a></li>
    <li class="current"><a href="files.html"><span>Files</span></a></li>
    <li><a href="pages.html"><span>Related&nbsp;Pages</span></a></li>
  </ul>
</div>
<h1>cssysdef.h File Reference</h1>This file should be #included before any other Crystal Space header files. <a href="#_details">More...</a>
<p>
<code>#include &quot;csdef.h&quot;</code><br>
<code>#include &quot;csutil/csosdefs.h&quot;</code><br>
<code>#include &quot;csextern.h&quot;</code><br>
<code>#include &lt;stdio.h&gt;</code><br>
<code>#include &lt;stdlib.h&gt;</code><br>
<code>#include &lt;new&gt;</code><br>

<p>
<a href="cssysdef_8h-source.html">Go to the source code of this file.</a><table border="0" cellpadding="0" cellspacing="0">
<tr><td></td></tr>
<tr><td colspan="2"><br><h2>Namespaces</h2></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">namespace &nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceCS.html">CS</a></td></tr>

<tr><td class="memItemLeft" nowrap align="right" valign="top">namespace &nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceCS_1_1Debug.html">CS::Debug</a></td></tr>

<tr><td class="memItemLeft" nowrap align="right" valign="top">namespace &nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceCS_1_1Macros.html">CS::Macros</a></td></tr>

<tr><td colspan="2"><br><h2>Classes</h2></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">struct &nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structCS_1_1AllocPlatform.html">CS::AllocPlatform</a></td></tr>

<tr><td colspan="2"><br><h2>Defines</h2></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="9d373a9b65ff25b2db84c07394e1c212"></a><!-- doxytag: member="cssysdef.h::__attribute__" ref="9d373a9b65ff25b2db84c07394e1c212" args="(x)" -->
#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="cssysdef_8h.html#9d373a9b65ff25b2db84c07394e1c212">__attribute__</a>(x)</td></tr>

<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="eadac43e70d3dae7b999d8a7b26690f1"></a><!-- doxytag: member="cssysdef.h::_CS_IMPLICITPTRCAST_NAME" ref="eadac43e70d3dae7b999d8a7b26690f1" args="" -->
#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="cssysdef_8h.html#eadac43e70d3dae7b999d8a7b26690f1">_CS_IMPLICITPTRCAST_NAME</a>&nbsp;&nbsp;&nbsp;__ImplicitPtrCast</td></tr>

<tr><td class="memItemLeft" nowrap align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="cssysdef_8h.html#5d8d64bebccf32da81cda892904bbc28">CS_ALIGNED_MEMBER</a>(Member, Align)&nbsp;&nbsp;&nbsp;Member __attribute((aligned(Align)))</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Macro to align a class member (or local variable) to a specific byte boundary.  <a href="#5d8d64bebccf32da81cda892904bbc28"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="cssysdef_8h.html#8185c7b21a22716685e7608a1f31a27f">CS_ALLOC_STACK_ARRAY</a>(type, var, size)&nbsp;&nbsp;&nbsp;type var [size]</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Dynamic stack memory allocation.  <a href="#8185c7b21a22716685e7608a1f31a27f"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="cssysdef_8h.html#c380bd47888ecfe73e7b7a40b6f827a1">CS_ASSERT</a>(x)&nbsp;&nbsp;&nbsp;(void)0</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Assertion.  <a href="#c380bd47888ecfe73e7b7a40b6f827a1"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="cssysdef_8h.html#98cf1ab82994ac8a7c2a25120f6f15d2">CS_ASSERT_MSG</a>(m, x)&nbsp;&nbsp;&nbsp;(void)0</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Same as <a class="el" href="cssysdef_8h.html#c380bd47888ecfe73e7b7a40b6f827a1" title="Assertion.">CS_ASSERT(expr)</a>, but additionally prints <em>msg</em> to <code>stderr</code>.  <a href="#98cf1ab82994ac8a7c2a25120f6f15d2"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="cssysdef_8h.html#66bba4b4bdb4b6dadd37563abc499d48">CS_CONST_METHOD</a></td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Use the CS_CONST_METHOD macro in front of method declarations to indicate that they are "constant", i.e., they only look at the values of their parameters and have no side effects.  <a href="#66bba4b4bdb4b6dadd37563abc499d48"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="cssysdef_8h.html#e0cf7ba630c8b3da1065ef398fc5e383">CS_DEBUG_BREAK</a></td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Stops program execution and break into debugger, if present - otherwise, probably just throws an exception/signal (ie crashes).  <a href="#e0cf7ba630c8b3da1065ef398fc5e383"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="7572dee0d7caa0e1bbe22827600d6f8a"></a><!-- doxytag: member="cssysdef.h::CS_DECLARE_DEFAULT_STATIC_VARIABLE_REGISTRATION" ref="7572dee0d7caa0e1bbe22827600d6f8a" args="" -->
#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="cssysdef_8h.html#7572dee0d7caa0e1bbe22827600d6f8a">CS_DECLARE_DEFAULT_STATIC_VARIABLE_REGISTRATION</a></td></tr>

<tr><td class="memItemLeft" nowrap align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="cssysdef_8h.html#9e3fbfaf27ee31f36c4f994e232e11a8">CS_DECLARE_STATIC_CLASSVAR</a>(var, getterFunc, Type)</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Declare a static variable inside a class.  <a href="#9e3fbfaf27ee31f36c4f994e232e11a8"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="9480a5c49b1431433663ecec91b68321"></a><!-- doxytag: member="cssysdef.h::CS_DECLARE_STATIC_CLASSVAR_REF" ref="9480a5c49b1431433663ecec91b68321" args="(var, getterFunc, Type)" -->
#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="cssysdef_8h.html#9480a5c49b1431433663ecec91b68321">CS_DECLARE_STATIC_CLASSVAR_REF</a>(var, getterFunc, Type)</td></tr>

<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="d3a08d984fccc3606b005d21d95a9c7e"></a><!-- doxytag: member="cssysdef.h::CS_DECLARE_STATIC_VARIABLE_REGISTRATION" ref="d3a08d984fccc3606b005d21d95a9c7e" args="(func)" -->
#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="cssysdef_8h.html#d3a08d984fccc3606b005d21d95a9c7e">CS_DECLARE_STATIC_VARIABLE_REGISTRATION</a>(func)&nbsp;&nbsp;&nbsp;void func (void (*p)())</td></tr>

<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="34cff917c17e47cb7af9642367e6d4b7"></a><!-- doxytag: member="cssysdef.h::CS_DEFINE_STATIC_VARIABLE_REGISTRATION" ref="34cff917c17e47cb7af9642367e6d4b7" args="(func)" -->
#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="cssysdef_8h.html#34cff917c17e47cb7af9642367e6d4b7">CS_DEFINE_STATIC_VARIABLE_REGISTRATION</a>(func)&nbsp;&nbsp;&nbsp;<a class="el" href="cssysdef_8h.html#4cc3e7fcd84415438b560896e9fbe9b2">csStaticVarCleanupFN</a> csStaticVarCleanup = &amp;func</td></tr>

<tr><td class="memItemLeft" nowrap align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="cssysdef_8h.html#50cd5757a8cd22085081f130aa8e26cc">CS_DEFINE_STATICALLY_LINKED_FLAG</a>&nbsp;&nbsp;&nbsp;bool scfStaticallyLinked = false;</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Define the scfStaticallyLinked variable.  <a href="#50cd5757a8cd22085081f130aa8e26cc"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="cssysdef_8h.html#6aa75111b26a9a9e9cc8213e8e245d97">CS_DEPRECATED_METHOD</a></td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Use the CS_DEPRECATED_METHOD macro in front of method declarations to indicate that they are deprecated.  <a href="#6aa75111b26a9a9e9cc8213e8e245d97"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="cssysdef_8h.html#69b27a22db26f4a2bb7a26a85d2ab06b">CS_DEPRECATED_METHOD_MSG</a>(msg)&nbsp;&nbsp;&nbsp;CS_DEPRECATED_METHOD</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">A variant of <a class="el" href="cssysdef_8h.html#6aa75111b26a9a9e9cc8213e8e245d97" title="Use the CS_DEPRECATED_METHOD macro in front of method declarations to indicate that...">CS_DEPRECATED_METHOD</a> that also emits the message <em>msg</em> on compilers that support it.  <a href="#69b27a22db26f4a2bb7a26a85d2ab06b"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="cssysdef_8h.html#cb08eeedad04ba9cc9c2a5919bab119f">CS_DEPRECATED_TYPE</a></td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Use the CS_DEPRECATED_TYPE macro after type declarations to indicate that they are deprecated.  <a href="#cb08eeedad04ba9cc9c2a5919bab119f"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="cssysdef_8h.html#91e256b131a2cf6b4b9db8830a0c88f4">CS_DEPRECATED_TYPE_MSG</a>(msg)&nbsp;&nbsp;&nbsp;CS_DEPRECATED_TYPE</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">A variant of CS_DEPRECATED_TYPE that also emits the message <em>msg</em> on compilers that support it.  <a href="#91e256b131a2cf6b4b9db8830a0c88f4"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="5bdef1249e6a0df0857a8b6ac1151107"></a><!-- doxytag: member="cssysdef.h::CS_EXPORT_SYM_DLL" ref="5bdef1249e6a0df0857a8b6ac1151107" args="" -->
#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="cssysdef_8h.html#5bdef1249e6a0df0857a8b6ac1151107">CS_EXPORT_SYM_DLL</a>&nbsp;&nbsp;&nbsp;CS_VISIBILITY_DEFAULT</td></tr>

<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="e2ce39bfd93ebeb3498d7269baa9a820"></a><!-- doxytag: member="cssysdef.h::CS_EXPORTED_FUNCTION" ref="e2ce39bfd93ebeb3498d7269baa9a820" args="" -->
#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="cssysdef_8h.html#e2ce39bfd93ebeb3498d7269baa9a820">CS_EXPORTED_FUNCTION</a>&nbsp;&nbsp;&nbsp;extern &quot;C&quot; CS_EXPORT_SYM_DLL</td></tr>

<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="98a357da90de38c5595450fd4e32a9fc"></a><!-- doxytag: member="cssysdef.h::CS_EXPORTED_NAME" ref="98a357da90de38c5595450fd4e32a9fc" args="(Prefix, Suffix)" -->
#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="cssysdef_8h.html#98a357da90de38c5595450fd4e32a9fc">CS_EXPORTED_NAME</a>(Prefix, Suffix)&nbsp;&nbsp;&nbsp;Prefix ## Suffix</td></tr>

<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="28e20ab0f0f6398b95a4c0674b65751e"></a><!-- doxytag: member="cssysdef.h::CS_FORCEINLINE_TEMPLATEMETHOD" ref="28e20ab0f0f6398b95a4c0674b65751e" args="" -->
#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="cssysdef_8h.html#28e20ab0f0f6398b95a4c0674b65751e">CS_FORCEINLINE_TEMPLATEMETHOD</a>&nbsp;&nbsp;&nbsp;CS_FORCEINLINE</td></tr>

<tr><td class="memItemLeft" nowrap align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="cssysdef_8h.html#92bb2a51bb45506ed1214feb410034b8">CS_FUNCTION_NAME</a>&nbsp;&nbsp;&nbsp;__PRETTY_FUNCTION__</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Macro that resolves to a compiler-specific variable or string that contains the name of the current function.  <a href="#92bb2a51bb45506ed1214feb410034b8"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="8e48e51430e3babbaf943b676c17ec31"></a><!-- doxytag: member="cssysdef.h::CS_GNUC_PRINTF" ref="8e48e51430e3babbaf943b676c17ec31" args="(format_idx, arg_idx)" -->
#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="cssysdef_8h.html#8e48e51430e3babbaf943b676c17ec31">CS_GNUC_PRINTF</a>(format_idx, arg_idx)</td></tr>

<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="f9f528fcf2834ab286bab988d5c90e8f"></a><!-- doxytag: member="cssysdef.h::CS_GNUC_SCANF" ref="f9f528fcf2834ab286bab988d5c90e8f" args="(format_idx, arg_idx)" -->
#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="cssysdef_8h.html#f9f528fcf2834ab286bab988d5c90e8f">CS_GNUC_SCANF</a>(format_idx, arg_idx)</td></tr>

<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="1d9accf337fabb00d46c9635b4286857"></a><!-- doxytag: member="cssysdef.h::CS_GNUC_WPRINTF" ref="1d9accf337fabb00d46c9635b4286857" args="(format_idx, arg_idx)" -->
#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="cssysdef_8h.html#1d9accf337fabb00d46c9635b4286857">CS_GNUC_WPRINTF</a>(format_idx, arg_idx)</td></tr>

<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="35f3e34a44c9c900d34e3043fad2dfcc"></a><!-- doxytag: member="cssysdef.h::CS_GNUC_WSCANF" ref="35f3e34a44c9c900d34e3043fad2dfcc" args="(format_idx, arg_idx)" -->
#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="cssysdef_8h.html#35f3e34a44c9c900d34e3043fad2dfcc">CS_GNUC_WSCANF</a>(format_idx, arg_idx)</td></tr>

<tr><td class="memItemLeft" nowrap align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="cssysdef_8h.html#8eb0223a04fafdddc64f1f3bc687cfd3">CS_HEADER_GLOBAL</a>(X, Y)&nbsp;&nbsp;&nbsp;CS_HEADER_GLOBAL_COMPOSE(X,Y)</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">The <a class="el" href="cssysdef_8h.html#8eb0223a04fafdddc64f1f3bc687cfd3" title="The CS_HEADER_GLOBAL() macro composes a pathname from two components and wraps the...">CS_HEADER_GLOBAL()</a> macro composes a pathname from two components and wraps the path in `&lt;' and `&gt;'.  <a href="#8eb0223a04fafdddc64f1f3bc687cfd3"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="0701115fa65b187965af12b4a593b1cc"></a><!-- doxytag: member="cssysdef.h::CS_HEADER_GLOBAL_COMPOSE" ref="0701115fa65b187965af12b4a593b1cc" args="(X, Y)" -->
#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="cssysdef_8h.html#0701115fa65b187965af12b4a593b1cc">CS_HEADER_GLOBAL_COMPOSE</a>(X, Y)&nbsp;&nbsp;&nbsp;&lt;X/Y&gt;</td></tr>

<tr><td class="memItemLeft" nowrap align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="cssysdef_8h.html#3e96743ac7cb2828c7e4714e2f887a27">CS_HEADER_LOCAL</a>(X, Y)&nbsp;&nbsp;&nbsp;CS_HEADER_LOCAL_COMPOSE1(X,Y)</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">The <a class="el" href="cssysdef_8h.html#3e96743ac7cb2828c7e4714e2f887a27" title="The CS_HEADER_LOCAL() macro composes a pathname from two components and wraps the...">CS_HEADER_LOCAL()</a> macro composes a pathname from two components and wraps the path in double-quotes.  <a href="#3e96743ac7cb2828c7e4714e2f887a27"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="5ceaa9e15a50f413a691537b228f2c70"></a><!-- doxytag: member="cssysdef.h::CS_HEADER_LOCAL_COMPOSE1" ref="5ceaa9e15a50f413a691537b228f2c70" args="(X, Y)" -->
#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="cssysdef_8h.html#5ceaa9e15a50f413a691537b228f2c70">CS_HEADER_LOCAL_COMPOSE1</a>(X, Y)&nbsp;&nbsp;&nbsp;CS_HEADER_LOCAL_COMPOSE2(X/Y)</td></tr>

<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="d8ebf205d2307f334207ac808b3727e3"></a><!-- doxytag: member="cssysdef.h::CS_HEADER_LOCAL_COMPOSE2" ref="d8ebf205d2307f334207ac808b3727e3" args="(X)" -->
#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="cssysdef_8h.html#d8ebf205d2307f334207ac808b3727e3">CS_HEADER_LOCAL_COMPOSE2</a>(X)&nbsp;&nbsp;&nbsp;#X</td></tr>

<tr><td class="memItemLeft" nowrap align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="cssysdef_8h.html#891b81da1f8bd98065e99456203234f3">CS_IMPLEMENT_APPLICATION</a></td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">The CS_IMPLEMENT_APPLICATION macro should be placed at the global scope in exactly one compilation unit comprising an application.  <a href="#891b81da1f8bd98065e99456203234f3"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="cssysdef_8h.html#be4c75d5a2dc7b45e54d1ff777811258">CS_IMPLEMENT_FOREIGN_DLL</a></td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">The CS_IMPLEMENT_FOREIGN_DLL macro should be placed at the global scope in exactly one compilation unit comprising a foreign (non-Crystal Space) module.  <a href="#be4c75d5a2dc7b45e54d1ff777811258"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="cssysdef_8h.html#b8b4e5655675ca59b0c4d8419ae243ec">CS_IMPLEMENT_IMPLICIT_PTR_CAST</a>(classname)</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Implements a static member function for a class which can be used to perform implicit pointer casts.  <a href="#b8b4e5655675ca59b0c4d8419ae243ec"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="cssysdef_8h.html#77da1ed4fe633f896570e977f5916608">CS_IMPLEMENT_PLUGIN</a></td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">The CS_IMPLEMENT_PLUGIN macro should be placed at the global scope in exactly one compilation unit comprising a plugin module.  <a href="#77da1ed4fe633f896570e977f5916608"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="cssysdef_8h.html#750513ddfb2783fa081a966543f56e5b">CS_IMPLEMENT_STATIC_CLASSVAR</a>(Class, var, getterFunc, Type, initParam)&nbsp;&nbsp;&nbsp;CS_IMPLEMENT_STATIC_CLASSVAR_EXT(Class,var,getterFunc,Type,initParam,_kill)</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Create the static class variable that has been declared with CS_DECLARE_STATIC_CLASSVAR.  <a href="#750513ddfb2783fa081a966543f56e5b"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="88910dc36f5da24ee450780912a281fb"></a><!-- doxytag: member="cssysdef.h::CS_IMPLEMENT_STATIC_CLASSVAR_ARRAY" ref="88910dc36f5da24ee450780912a281fb" args="(Class, var, getterFunc, Type, initParam)" -->
#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="cssysdef_8h.html#88910dc36f5da24ee450780912a281fb">CS_IMPLEMENT_STATIC_CLASSVAR_ARRAY</a>(Class, var, getterFunc, Type, initParam)</td></tr>

<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="99b60f0917cca3cd96404b318385a0dd"></a><!-- doxytag: member="cssysdef.h::CS_IMPLEMENT_STATIC_CLASSVAR_EXT" ref="99b60f0917cca3cd96404b318385a0dd" args="(Class, var, getterFunc, Type, initParam, kill_how)" -->
#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="cssysdef_8h.html#99b60f0917cca3cd96404b318385a0dd">CS_IMPLEMENT_STATIC_CLASSVAR_EXT</a>(Class, var, getterFunc, Type, initParam, kill_how)</td></tr>

<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="f2cb07427cd86b66e9386c806127c0c7"></a><!-- doxytag: member="cssysdef.h::CS_IMPLEMENT_STATIC_CLASSVAR_REF" ref="f2cb07427cd86b66e9386c806127c0c7" args="(Class, var, getterFunc, Type, initParam)" -->
#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="cssysdef_8h.html#f2cb07427cd86b66e9386c806127c0c7">CS_IMPLEMENT_STATIC_CLASSVAR_REF</a>(Class, var, getterFunc, Type, initParam)</td></tr>

<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="637d8dd9002bc67b0883a00e1886b81f"></a><!-- doxytag: member="cssysdef.h::CS_IMPLEMENT_STATIC_CLASSVAR_REF_ARRAY" ref="637d8dd9002bc67b0883a00e1886b81f" args="(Class, var, getterFunc, Type, initParam)" -->
#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="cssysdef_8h.html#637d8dd9002bc67b0883a00e1886b81f">CS_IMPLEMENT_STATIC_CLASSVAR_REF_ARRAY</a>(Class, var, getterFunc, Type, initParam)</td></tr>

<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="dd02a35ef68e2b3a2421986d414cbc3e"></a><!-- doxytag: member="cssysdef.h::CS_IMPLEMENT_STATIC_CLASSVAR_REF_EXT" ref="dd02a35ef68e2b3a2421986d414cbc3e" args="(Class, var, getterFunc, Type, initParam, kill_how)" -->
#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="cssysdef_8h.html#dd02a35ef68e2b3a2421986d414cbc3e">CS_IMPLEMENT_STATIC_CLASSVAR_REF_EXT</a>(Class, var, getterFunc, Type, initParam, kill_how)</td></tr>

<tr><td class="memItemLeft" nowrap align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="cssysdef_8h.html#61813b56c11d1bd8486ad2ced24348d9">CS_IMPLEMENT_STATIC_VAR</a>(getterFunc, Type, initParam)&nbsp;&nbsp;&nbsp;CS_IMPLEMENT_STATIC_VAR_EXT(getterFunc,Type,initParam,_kill)</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Implement a file-scoped static variable that is created on demand.  <a href="#61813b56c11d1bd8486ad2ced24348d9"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="f4d232eae4597abd256a52d8bd490633"></a><!-- doxytag: member="cssysdef.h::CS_IMPLEMENT_STATIC_VAR_ARRAY" ref="f4d232eae4597abd256a52d8bd490633" args="(getterFunc, Type, initParam)" -->
#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="cssysdef_8h.html#f4d232eae4597abd256a52d8bd490633">CS_IMPLEMENT_STATIC_VAR_ARRAY</a>(getterFunc, Type, initParam)&nbsp;&nbsp;&nbsp;CS_IMPLEMENT_STATIC_VAR_EXT(getterFunc,Type,initParam,_kill_array)</td></tr>

<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="1f80ba00e44e0745c61b81d02a0dc8b5"></a><!-- doxytag: member="cssysdef.h::CS_IMPLEMENT_STATIC_VAR_EXT" ref="1f80ba00e44e0745c61b81d02a0dc8b5" args="(getterFunc, Type, initParam, kill_how)" -->
#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="cssysdef_8h.html#1f80ba00e44e0745c61b81d02a0dc8b5">CS_IMPLEMENT_STATIC_VAR_EXT</a>(getterFunc, Type, initParam, kill_how)</td></tr>

<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="d2cd1fa21174a66f412e5fc6d4200c37"></a><!-- doxytag: member="cssysdef.h::CS_IMPLEMENT_STATIC_VARIABLE_REGISTRATION" ref="d2cd1fa21174a66f412e5fc6d4200c37" args="(Name)" -->
#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="cssysdef_8h.html#d2cd1fa21174a66f412e5fc6d4200c37">CS_IMPLEMENT_STATIC_VARIABLE_REGISTRATION</a>(Name)</td></tr>

<tr><td class="memItemLeft" nowrap align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="cssysdef_8h.html#15431b2aca13c8d4653f4387bf5b1141">CS_IMPLICIT_PTR_CAST</a>(classname, ptr)&nbsp;&nbsp;&nbsp;(classname::_CS_IMPLICITPTRCAST_NAME(ptr))</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Perform a compiler implicit cast of a pointer to another pointer type using a static member function declared with the <code>CS_IMPLEMENT_IMPLICIT_PTR_CAST</code> macro.  <a href="#15431b2aca13c8d4653f4387bf5b1141"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="a50c601f90fadd453343a9a93e39bf4a"></a><!-- doxytag: member="cssysdef.h::CS_IMPORT_SYM_DLL" ref="a50c601f90fadd453343a9a93e39bf4a" args="" -->
#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="cssysdef_8h.html#a50c601f90fadd453343a9a93e39bf4a">CS_IMPORT_SYM_DLL</a>&nbsp;&nbsp;&nbsp;extern</td></tr>

<tr><td class="memItemLeft" nowrap align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="cssysdef_8h.html#579d0bb91d147be822a8f30acdc87033">CS_INITIALIZE_PLATFORM_APPLICATION</a></td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Perform platform-specific application initializations.  <a href="#579d0bb91d147be822a8f30acdc87033"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="cssysdef_8h.html#a46e2d433bae30274321c3869fada066">CS_MAXPATHLEN</a>&nbsp;&nbsp;&nbsp;1024</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Maximum length of a filesystem pathname.  <a href="#a46e2d433bae30274321c3869fada066"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="f0a9fe2459ed9f7eb5a86e07952c4a04"></a><!-- doxytag: member="cssysdef.h::CS_NAMESPACE_PACKAGE_NAME" ref="f0a9fe2459ed9f7eb5a86e07952c4a04" args="" -->
#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="cssysdef_8h.html#f0a9fe2459ed9f7eb5a86e07952c4a04">CS_NAMESPACE_PACKAGE_NAME</a>&nbsp;&nbsp;&nbsp;CS</td></tr>

<tr><td class="memItemLeft" nowrap align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="cssysdef_8h.html#9b945dcc0128078df43f9c6635cf871c">CS_NO_EXCEPTIONS</a></td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">This is defined when the project was compiled without support for exceptions.  <a href="#9b945dcc0128078df43f9c6635cf871c"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="cssysdef_8h.html#b3427ad7a206cd0ebf118b9d40084164">CS_PURE_METHOD</a></td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Use the CS_PURE_METHOD macro in front of method declarations to indicate that they are "pure", i.e., they look at their arguments and at global memory but do not have any side effects.  <a href="#b3427ad7a206cd0ebf118b9d40084164"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="cssysdef_8h.html#459ff917b201b53e2df6ac10b0a554bb">CS_REGISTER_STATIC_FOR_DESTRUCTION</a>(getterFunc)&nbsp;&nbsp;&nbsp;csStaticVarCleanup (getterFunc);</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Register a method that will destruct one static variable.  <a href="#459ff917b201b53e2df6ac10b0a554bb"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="cssysdef_8h.html#9f98b09fc5f5c5e6bcb2cabe2ac18075">CS_STATIC_VARIABLE_CLEANUP</a>&nbsp;&nbsp;&nbsp;csStaticVarCleanup (0);</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Invoke the function that will call all destruction functions.  <a href="#9f98b09fc5f5c5e6bcb2cabe2ac18075"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="cssysdef_8h.html#dceb8db1fe1c12cad8cfc6477b42ea1c">CS_STRING_TO_WIDE</a>(x)&nbsp;&nbsp;&nbsp;CS_STRING_TO_WIDE_(x)</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Convert a string to a wide string.  <a href="#dceb8db1fe1c12cad8cfc6477b42ea1c"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="f4bcf7e8c715e37b5bc751715c351d93"></a><!-- doxytag: member="cssysdef.h::CS_STRING_TO_WIDE_" ref="f4bcf7e8c715e37b5bc751715c351d93" args="(x)" -->
#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="cssysdef_8h.html#f4bcf7e8c715e37b5bc751715c351d93">CS_STRING_TO_WIDE_</a>(x)&nbsp;&nbsp;&nbsp;L ## x</td></tr>

<tr><td class="memItemLeft" nowrap align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="cssysdef_8h.html#00badfa33d7da3a5a6a37cef8edd3def">CS_TEMP_DIR</a>&nbsp;&nbsp;&nbsp;CS::Macros::CS_TEMP_DIR.GetDataSafe()</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Directory for temporary files.  <a href="#00badfa33d7da3a5a6a37cef8edd3def"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="cssysdef_8h.html#8b676be6ae8572966e5c2e0705adad8f">CS_TEMP_FILE</a>&nbsp;&nbsp;&nbsp;CS::Macros::CS_TEMP_FILE.GetDataSafe()</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Name for temporary files.  <a href="#8b676be6ae8572966e5c2e0705adad8f"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="cssysdef_8h.html#d1a95e13bd870b3531da80fc8d2a0e50">CS_VA_COPY</a>(dest, src)&nbsp;&nbsp;&nbsp;dest = src;</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Copies the state of a va_list value.  <a href="#d1a95e13bd870b3531da80fc8d2a0e50"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="2f3eb1a4afbbdfb1c8c9d6a9335f112d"></a><!-- doxytag: member="cssysdef.h::CSDEF_FRIEND" ref="2f3eb1a4afbbdfb1c8c9d6a9335f112d" args="" -->
#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="cssysdef_8h.html#2f3eb1a4afbbdfb1c8c9d6a9335f112d">CSDEF_FRIEND</a></td></tr>

<tr><td colspan="2"><div class="groupHeader">Plugin namespace helpers</div></td></tr>
<tr><td colspan="2"><div class="groupText">To avoid symbol conflicts when employing static linking, it is a good idea to put everything into a private namespace.<p>
The CS_PLUGIN_NAMESPACE_BEGIN and CS_PLUGIN_NAMESPACE_END macros help with that by putting the plugin namespace into a sub-namespace for plugins.<p>
Use like: <div class="fragment"><pre class="fragment"><span class="preprocessor"> #include &lt;...&gt;</span>

 <a class="code" href="cssysdef_8h.html#77da1ed4fe633f896570e977f5916608" title="The CS_IMPLEMENT_PLUGIN macro should be placed at the global scope in exactly one...">CS_IMPLEMENT_PLUGIN</a>

 <a class="code" href="cssysdef_8h.html#b792f98a2a2db53412f0d9269022a1a0">CS_PLUGIN_NAMESPACE_BEGIN</a>(MyPlugin)
 {
   ...
   MyClass::MyClass (...) { ... }
   ...
 }
 <a class="code" href="cssysdef_8h.html#35ca9298918766ab003f1b784b3b6e71">CS_PLUGIN_NAMESPACE_END</a>(MyPlugin)
</pre></div> To refer to members of the namespace (e.g. for template specializations, use CS_PLUGIN_NAMESPACE_NAME. <br><br></div></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="b792f98a2a2db53412f0d9269022a1a0"></a><!-- doxytag: member="cssysdef.h::CS_PLUGIN_NAMESPACE_BEGIN" ref="b792f98a2a2db53412f0d9269022a1a0" args="(name)" -->
#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="cssysdef_8h.html#b792f98a2a2db53412f0d9269022a1a0">CS_PLUGIN_NAMESPACE_BEGIN</a>(name)&nbsp;&nbsp;&nbsp;namespace CS_NAMESPACE_PACKAGE_NAME { namespace Plugin { namespace name</td></tr>

<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="35ca9298918766ab003f1b784b3b6e71"></a><!-- doxytag: member="cssysdef.h::CS_PLUGIN_NAMESPACE_END" ref="35ca9298918766ab003f1b784b3b6e71" args="(name)" -->
#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="cssysdef_8h.html#35ca9298918766ab003f1b784b3b6e71">CS_PLUGIN_NAMESPACE_END</a>(name)&nbsp;&nbsp;&nbsp;} }</td></tr>

<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="7d9ba8bcac3618355f56ed893d6df8b1"></a><!-- doxytag: member="cssysdef.h::CS_PLUGIN_NAMESPACE_NAME" ref="7d9ba8bcac3618355f56ed893d6df8b1" args="(name)" -->
#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="cssysdef_8h.html#7d9ba8bcac3618355f56ed893d6df8b1">CS_PLUGIN_NAMESPACE_NAME</a>(name)&nbsp;&nbsp;&nbsp;CS_NAMESPACE_PACKAGE_NAME::Plugin::name</td></tr>

<tr><td colspan="2"><br><h2>Typedefs</h2></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="4cc3e7fcd84415438b560896e9fbe9b2"></a><!-- doxytag: member="cssysdef.h::csStaticVarCleanupFN" ref="4cc3e7fcd84415438b560896e9fbe9b2" args=")(void(*p)())" -->
typedef void(*&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="cssysdef_8h.html#4cc3e7fcd84415438b560896e9fbe9b2">csStaticVarCleanupFN</a> )(void(*p)())</td></tr>

<tr><td colspan="2"><br><h2>Functions</h2></td></tr>
<tr><td colspan="2"><div class="groupHeader">Default Crystal Space memory allocation</div></td></tr>
<tr><td colspan="2"><div class="groupText">Always the same memory allocation functions as internally used by Crystal Space. <br><br></div></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="d3539be57344876574948a6ccaf8dc13"></a><!-- doxytag: member="cssysdef.h::cs_calloc" ref="d3539be57344876574948a6ccaf8dc13" args="(size_t n, size_t s)" -->
void *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="cssysdef_8h.html#d3539be57344876574948a6ccaf8dc13">cs_calloc</a> (size_t n, size_t s)</td></tr>

<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="7af27c7b7c38c438787a3d2f4e5079c4"></a><!-- doxytag: member="cssysdef.h::cs_free" ref="7af27c7b7c38c438787a3d2f4e5079c4" args="(void *p)" -->
void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="cssysdef_8h.html#7af27c7b7c38c438787a3d2f4e5079c4">cs_free</a> (void *p)</td></tr>

<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="bcc451ff5f6451f8b8bcbe91c762bcf0"></a><!-- doxytag: member="cssysdef.h::cs_malloc" ref="bcc451ff5f6451f8b8bcbe91c762bcf0" args="(size_t n)" -->
void *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="cssysdef_8h.html#bcc451ff5f6451f8b8bcbe91c762bcf0">cs_malloc</a> (size_t n)</td></tr>

<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="b95c8e1d42fe5f3f3014d8c43606b392"></a><!-- doxytag: member="cssysdef.h::cs_realloc" ref="b95c8e1d42fe5f3f3014d8c43606b392" args="(void *p, size_t n)" -->
void *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="cssysdef_8h.html#b95c8e1d42fe5f3f3014d8c43606b392">cs_realloc</a> (void *p, size_t n)</td></tr>

<tr><td colspan="2"><div class="groupHeader">Platform-specific memory allocation</div></td></tr>
<tr><td colspan="2"><div class="groupText">If built with ptmalloc support, these functions can be used to explicitly call the platform's default malloc/free resp.<p>
operator new/operator delete implementations. Useful when interfacing with third party libraries. <br><br></div></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="9af82fae5d5d6faf4fe03145c64b68cf"></a><!-- doxytag: member="cssysdef.h::operator delete" ref="9af82fae5d5d6faf4fe03145c64b68cf" args="(void *p, const CS::AllocPlatform &amp;)" -->
void&nbsp;</td><td class="memItemRight" valign="bottom"><b>operator delete</b> (void *p, const <a class="el" href="structCS_1_1AllocPlatform.html">CS::AllocPlatform</a> &amp;)  throw ()</td></tr>

<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="750728221d2acca4d1988fe662500eb2"></a><!-- doxytag: member="cssysdef.h::operator delete[]" ref="750728221d2acca4d1988fe662500eb2" args="(void *p, const CS::AllocPlatform &amp;)" -->
void&nbsp;</td><td class="memItemRight" valign="bottom"><b>operator delete[]</b> (void *p, const <a class="el" href="structCS_1_1AllocPlatform.html">CS::AllocPlatform</a> &amp;)  throw ()</td></tr>

<tr><td class="memItemLeft" nowrap align="right" valign="top">void *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="cssysdef_8h.html#4cb62af6b416b419d9747d6b11b5c28b">operator new</a> (size_t s, const <a class="el" href="structCS_1_1AllocPlatform.html">CS::AllocPlatform</a> &amp;)  throw ()</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Platform-dependent operator new.  <a href="#4cb62af6b416b419d9747d6b11b5c28b"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">void *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="cssysdef_8h.html#171e5c211e259a96eae76303eb14c6d4">operator new[]</a> (size_t s, const <a class="el" href="structCS_1_1AllocPlatform.html">CS::AllocPlatform</a> &amp;)  throw ()</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Platform-dependent operator new.  <a href="#171e5c211e259a96eae76303eb14c6d4"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="41b9288b9607aafe004ad569b966f56b"></a><!-- doxytag: member="cssysdef.h::platform_calloc" ref="41b9288b9607aafe004ad569b966f56b" args="(size_t n, size_t s)" -->
void *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="cssysdef_8h.html#41b9288b9607aafe004ad569b966f56b">platform_calloc</a> (size_t n, size_t s)</td></tr>

<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="f232999cc62689305807a895d3f79123"></a><!-- doxytag: member="cssysdef.h::platform_free" ref="f232999cc62689305807a895d3f79123" args="(void *p)" -->
void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="cssysdef_8h.html#f232999cc62689305807a895d3f79123">platform_free</a> (void *p)</td></tr>

<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="d1ad984dfefdf6885ce1e3492086d1c6"></a><!-- doxytag: member="cssysdef.h::platform_malloc" ref="d1ad984dfefdf6885ce1e3492086d1c6" args="(size_t n)" -->
void *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="cssysdef_8h.html#d1ad984dfefdf6885ce1e3492086d1c6">platform_malloc</a> (size_t n)</td></tr>

<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="6e295aac1935ee41c69670ab7caf6175"></a><!-- doxytag: member="cssysdef.h::platform_realloc" ref="6e295aac1935ee41c69670ab7caf6175" args="(void *p, size_t n)" -->
void *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="cssysdef_8h.html#6e295aac1935ee41c69670ab7caf6175">platform_realloc</a> (void *p, size_t n)</td></tr>

<tr><td colspan="2"><div class="groupHeader">ptmalloc memory allocation</div></td></tr>
<tr><td colspan="2"><div class="groupText">Directly use the ptmalloc allocation functions.<p>
Usually, this is not needed - use <a class="el" href="cssysdef_8h.html#bcc451ff5f6451f8b8bcbe91c762bcf0">cs_malloc()</a> etc instead. <br><br></div></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="ab20698eac0c79c861f601d013009221"></a><!-- doxytag: member="cssysdef.h::ptcalloc" ref="ab20698eac0c79c861f601d013009221" args="(size_t n, size_t s)" -->
void *&nbsp;</td><td class="memItemRight" valign="bottom"><b>ptcalloc</b> (size_t n, size_t s)</td></tr>

<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="557c37039eeaacd44f05f78404d43902"></a><!-- doxytag: member="cssysdef.h::ptfree" ref="557c37039eeaacd44f05f78404d43902" args="(void *p)" -->
void&nbsp;</td><td class="memItemRight" valign="bottom"><b>ptfree</b> (void *p)</td></tr>

<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="371d525e94f5a658540cf8778344ee82"></a><!-- doxytag: member="cssysdef.h::ptmalloc" ref="371d525e94f5a658540cf8778344ee82" args="(size_t n)" -->
void *&nbsp;</td><td class="memItemRight" valign="bottom"><b>ptmalloc</b> (size_t n)</td></tr>

<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="54e1920d30e1364401de0db16455eba1"></a><!-- doxytag: member="cssysdef.h::ptrealloc" ref="54e1920d30e1364401de0db16455eba1" args="(void *p, size_t n)" -->
void *&nbsp;</td><td class="memItemRight" valign="bottom"><b>ptrealloc</b> (void *p, size_t n)</td></tr>

</table>
<hr><a name="_details"></a><h2>Detailed Description</h2>
This file should be #included before any other Crystal Space header files. 
<p>
It sets up a compilation environment which smooths over differences between platforms, allowing the same code to compile cleanly over a variety of operating systems and build tools. It also provides a number of utility macros useful to projects utilizing Crystal Space and to the Crystal Space code itself. 
<p>Definition in file <a class="el" href="cssysdef_8h-source.html">cssysdef.h</a>.</p>
<hr><h2>Define Documentation</h2>
<a class="anchor" name="5d8d64bebccf32da81cda892904bbc28"></a><!-- doxytag: member="cssysdef.h::CS_ALIGNED_MEMBER" ref="5d8d64bebccf32da81cda892904bbc28" args="(Member, Align)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define CS_ALIGNED_MEMBER          </td>
          <td>(</td>
          <td class="paramtype">Member,         <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">Align&nbsp;</td>
          <td class="paramname">          </td>
          <td>&nbsp;)&nbsp;</td>
          <td width="100%">&nbsp;&nbsp;&nbsp;Member __attribute((aligned(Align)))</td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Macro to align a class member (or local variable) to a specific byte boundary. 
<p>
Example: <div class="fragment"><pre class="fragment"> <span class="keyword">struct </span>MyStruct
 {
   <a class="code" href="cssysdef_8h.html#5d8d64bebccf32da81cda892904bbc28" title="Macro to align a class member (or local variable) to a specific byte boundary.">CS_ALIGNED_MEMBER</a>(<span class="keywordtype">int</span> x[4], 16);
 };
</pre></div> 
<p>Definition at line <a class="el" href="cssysdef_8h-source.html#l01011">1011</a> of file <a class="el" href="cssysdef_8h-source.html">cssysdef.h</a>.</p>

</div>
</div><p>
<a class="anchor" name="8185c7b21a22716685e7608a1f31a27f"></a><!-- doxytag: member="cssysdef.h::CS_ALLOC_STACK_ARRAY" ref="8185c7b21a22716685e7608a1f31a27f" args="(type, var, size)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define CS_ALLOC_STACK_ARRAY          </td>
          <td>(</td>
          <td class="paramtype">type,         <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">var,         <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">size&nbsp;</td>
          <td class="paramname">          </td>
          <td>&nbsp;)&nbsp;</td>
          <td width="100%">&nbsp;&nbsp;&nbsp;type var [size]</td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Dynamic stack memory allocation. 
<p>
<dl compact><dt><b>Parameters:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>type</em>&nbsp;</td><td>Type of the array elements. </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>var</em>&nbsp;</td><td>Name of the array to be allocated. </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>size</em>&nbsp;</td><td>Number of elements to be allocated. </td></tr>
  </table>
</dl>

<p>Definition at line <a class="el" href="cssysdef_8h-source.html#l00194">194</a> of file <a class="el" href="cssysdef_8h-source.html">cssysdef.h</a>.</p>

<p>Referenced by <a class="el" href="radixsort_8h-source.html#l00079">csRadixSorter::ReorderInplace()</a>, and <a class="el" href="odesolver_8h-source.html#l00062">CS::Math::Ode45::Step()</a>.</p>

</div>
</div><p>
<a class="anchor" name="c380bd47888ecfe73e7b7a40b6f827a1"></a><!-- doxytag: member="cssysdef.h::CS_ASSERT" ref="c380bd47888ecfe73e7b7a40b6f827a1" args="(x)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define CS_ASSERT          </td>
          <td>(</td>
          <td class="paramtype">x&nbsp;</td>
          <td class="paramname">          </td>
          <td>&nbsp;)&nbsp;</td>
          <td width="100%">&nbsp;&nbsp;&nbsp;(void)0</td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Assertion. 
<p>
If <em>expr</em> is false, a message containing the failing expression as well as a call stack is printed to <code>stderr</code> and a debug break is performed <dl class="remark" compact><dt><b>Remarks:</b></dt><dd>Breaking execution can be avoided at runtime by setting the environment variable <code>"CS_ASSERT_IGNORE"</code> to a value other than 0. </dd></dl>

<p>Referenced by <a class="el" href="partialorder_8h-source.html#l00224">csPartialOrder&lt; csStringID &gt;::AddOrder()</a>, <a class="el" href="fixedsizeallocator_8h-source.html#l00454">csFixedSizeAllocator&lt; sizeof(T), Allocator &gt;::Alloc()</a>, <a class="el" href="fixedsizeallocator_8h-source.html#l00128">csFixedSizeAllocator&lt; sizeof(T), Allocator &gt;::AllocBlock()</a>, <a class="el" href="fixedsizeallocator_8h-source.html#l00283">csFixedSizeAllocator&lt; sizeof(T), Allocator &gt;::AllocCommon()</a>, <a class="el" href="bitarray_8h-source.html#l00517">csBitArrayTweakable&lt;  &gt;::AreSomeBitsSet()</a>, <a class="el" href="bitarray_8h-source.html#l00486">csBitArrayTweakable&lt;  &gt;::ClearBit()</a>, <a class="el" href="partialorder_8h-source.html#l00346">csPartialOrder&lt; csStringID &gt;::ClearMark()</a>, <a class="el" href="fixedsizeallocator_8h-source.html#l00348">csFixedSizeAllocator&lt; sizeof(T), Allocator &gt;::csFixedSizeAllocator()</a>, <a class="el" href="rbuflock_8h-source.html#l00116">csRenderBufferLock&lt; unsigned char &gt;::csRenderBufferLock()</a>, <a class="el" href="vertexlistwalker_8h-source.html#l00055">csVertexListWalker&lt; Tbase, Tcomplex &gt;::csVertexListWalker()</a>, <a class="el" href="partialorder_8h-source.html#l00460">csPartialOrder&lt; csStringID &gt;::CycleTest()</a>, <a class="el" href="debugimagewriter_8h-source.html#l00061">csDebugImageWriter::DebugImageWrite()</a>, <a class="el" href="partialorder_8h-source.html#l00165">csPartialOrder&lt; csStringID &gt;::Delete()</a>, <a class="el" href="list_8h-source.html#l00424">csList&lt; T &gt;::Delete()</a>, <a class="el" href="bitarray_8h-source.html#l00585">csBitArrayTweakable&lt;  &gt;::Delete()</a>, <a class="el" href="partialorder_8h-source.html#l00251">csPartialOrder&lt; csStringID &gt;::DeleteOrder()</a>, <a class="el" href="cssubscription_8h-source.html#l00094">csEventTree::DeleteRootNode()</a>, <a class="el" href="csstring_8h-source.html#l01081">csStringFast&lt; LEN &gt;::Detach()</a>, <a class="el" href="list_8h-source.html#l00167">csList&lt; T &gt;::Iterator::FetchCurrent()</a>, <a class="el" href="list_8h-source.html#l00176">csList&lt; T &gt;::Iterator::FetchNext()</a>, <a class="el" href="list_8h-source.html#l00185">csList&lt; T &gt;::Iterator::FetchPrevious()</a>, <a class="el" href="bitarray_8h-source.html#l00493">csBitArrayTweakable&lt;  &gt;::FlipBit()</a>, <a class="el" href="fixedsizeallocator_8h-source.html#l00251">csFixedSizeAllocator&lt; sizeof(T), Allocator &gt;::Free()</a>, <a class="el" href="polypool_8h-source.html#l00106">csPoly2DPool::Free()</a>, <a class="el" href="csutil_2array_8h-source.html#l00613">csArray&lt; iEventHandler *, csRefArrayElementHandler&lt; iEventHandler * &gt;, CS::Memory::AllocatorMalloc &gt;::Get()</a>, <a class="el" href="rbuflock_8h-source.html#l00190">csRenderBufferLock&lt; unsigned char &gt;::Get()</a>, <a class="el" href="fixedsizeallocator_8h-source.html#l00169">csFixedSizeAllocator&lt; sizeof(T), Allocator &gt;::GetAllocationMap()</a>, <a class="el" href="csstring_8h-source.html#l00417">csStringBase::GetAt()</a>, <a class="el" href="pluginconfig_8h-source.html#l00134">csVariant::GetBool()</a>, <a class="el" href="obb_8h-source.html#l00168">csOBBFrozen::GetCorner()</a>, <a class="el" href="pluginconfig_8h-source.html#l00140">csVariant::GetFloat()</a>, <a class="el" href="csutil_2eventnames_8h-source.html#l00104">csEventNameRegistry::GetID()</a>, <a class="el" href="csutil_2array_8h-source.html#l00867">csArray&lt; iEventHandler *, csRefArrayElementHandler&lt; iEventHandler * &gt;, CS::Memory::AllocatorMalloc &gt;::GetIndex()</a>, <a class="el" href="pluginconfig_8h-source.html#l00128">csVariant::GetLong()</a>, <a class="el" href="pluginconfig_8h-source.html#l00146">csVariant::GetString()</a>, <a class="el" href="frustum_8h-source.html#l00281">csFrustum::GetVertex()</a>, <a class="el" href="cssubscription_8h-source.html#l00284">csEventTree::SubscriberIterator::HasNext()</a>, <a class="el" href="list_8h-source.html#l00334">csList&lt; T &gt;::InsertAfter()</a>, <a class="el" href="list_8h-source.html#l00349">csList&lt; T &gt;::InsertBefore()</a>, <a class="el" href="bitarray_8h-source.html#l00509">csBitArrayTweakable&lt;  &gt;::IsBitSet()</a>, <a class="el" href="list_8h-source.html#l00256">csList&lt; iEventHandler * &gt;::IsEmpty()</a>, <a class="el" href="partialorder_8h-source.html#l00369">csPartialOrder&lt; csStringID &gt;::IsEnabled()</a>, <a class="el" href="csutil_2eventnames_8h-source.html#l00121">csEventNameRegistry::IsKindOf()</a>, <a class="el" href="partialorder_8h-source.html#l00335">csPartialOrder&lt; csStringID &gt;::IsMarked()</a>, <a class="el" href="partialorder_8h-source.html#l00324">csPartialOrder&lt; csStringID &gt;::Mark()</a>, <a class="el" href="list_8h-source.html#l00364">csList&lt; T &gt;::MoveAfter()</a>, <a class="el" href="list_8h-source.html#l00394">csList&lt; T &gt;::MoveBefore()</a>, <a class="el" href="list_8h-source.html#l00127">csList&lt; T &gt;::Iterator::Next()</a>, <a class="el" href="cssubscription_8h-source.html#l00314">csEventTree::SubscriberIterator::Next()</a>, <a class="el" href="trianglestream_8h-source.html#l00207">CS::TriangleIndicesStream&lt; T &gt;::Next()</a>, <a class="el" href="bitarray_8h-source.html#l00409">csBitArrayTweakable&lt;  &gt;::operator &amp;=()</a>, <a class="el" href="list_8h-source.html#l00114">csList&lt; T &gt;::Iterator::operator *()</a>, <a class="el" href="vertexlistwalker_8h-source.html#l00075">csVertexListWalker&lt; Tbase, Tcomplex &gt;::operator *()</a>, <a class="el" href="vertexlistwalker_8h-source.html#l00070">csVertexListWalker&lt; Tbase, Tcomplex &gt;::operator Tbase const *()</a>, <a class="el" href="csstring_8h-source.html#l00391">csStringBase::operator[]()</a>, <a class="el" href="bitarray_8h-source.html#l00376">csBitArrayTweakable&lt;  &gt;::operator[]()</a>, <a class="el" href="polyidx_8h-source.html#l00095">csPolyIndexed::operator[]()</a>, <a class="el" href="poly2d_8h-source.html#l00096">csPoly2D::operator[]()</a>, <a class="el" href="bitarray_8h-source.html#l00431">csBitArrayTweakable&lt;  &gt;::operator^=()</a>, <a class="el" href="bitarray_8h-source.html#l00420">csBitArrayTweakable&lt;  &gt;::operator|=()</a>, <a class="el" href="csutil_2stringarray_8h-source.html#l00148">csStringArray::Pop()</a>, <a class="el" href="refarr_8h-source.html#l00105">csRefArray&lt; iConfigFile &gt;::Pop()</a>, <a class="el" href="parray_8h-source.html#l00105">csPDelArray&lt; csRenderMeshList::renderMeshListInfo &gt;::Pop()</a>, <a class="el" href="csutil_2array_8h-source.html#l00725">csArray&lt; iEventHandler *, csRefArrayElementHandler&lt; iEventHandler * &gt;, CS::Memory::AllocatorMalloc &gt;::Pop()</a>, <a class="el" href="fifo_8h-source.html#l00056">csFIFO&lt; T, ElementHandler, MemoryAllocator &gt;::PopTop()</a>, <a class="el" href="list_8h-source.html#l00136">csList&lt; T &gt;::Iterator::Previous()</a>, <a class="el" href="renderbuffer_8h-source.html#l00300">csRenderBuffer::Props::Props()</a>, <a class="el" href="csutil_2array_8h-source.html#l00186">csArraySafeCopyElementHandler&lt; T &gt;::ResizeRegion()</a>, <a class="el" href="csutil_2array_8h-source.html#l00767">csArray&lt; iEventHandler *, csRefArrayElementHandler&lt; iEventHandler * &gt;, CS::Memory::AllocatorMalloc &gt;::Section()</a>, <a class="el" href="csstring_8h-source.html#l00410">csStringBase::SetAt()</a>, <a class="el" href="bitarray_8h-source.html#l00479">csBitArrayTweakable&lt;  &gt;::SetBit()</a>, <a class="el" href="csstring_8h-source.html#l00972">csStringFast&lt; LEN &gt;::SetCapacityInternal()</a>, <a class="el" href="rndbuf_8h-source.html#l00370">csRenderBufferHolder::SetRenderBuffer()</a>, <a class="el" href="bitarray_8h-source.html#l00603">csBitArrayTweakable&lt;  &gt;::Slice()</a>, <a class="el" href="csstring_8h-source.html#l00661">csStringBase::StartsWith()</a>, <a class="el" href="cssubscription_8h-source.html#l00258">csEventTree::SubscriberIterator::SubscriberIterator()</a>, <a class="el" href="csutil_2array_8h-source.html#l00735">csArray&lt; iEventHandler *, csRefArrayElementHandler&lt; iEventHandler * &gt;, CS::Memory::AllocatorMalloc &gt;::Top()</a>, <a class="el" href="csutil_2array_8h-source.html#l00910">csArray&lt; iEventHandler *, csRefArrayElementHandler&lt; iEventHandler * &gt;, CS::Memory::AllocatorMalloc &gt;::Truncate()</a>, and <a class="el" href="cssubscription_8h-source.html#l00275">csEventTree::SubscriberIterator::~SubscriberIterator()</a>.</p>

</div>
</div><p>
<a class="anchor" name="98cf1ab82994ac8a7c2a25120f6f15d2"></a><!-- doxytag: member="cssysdef.h::CS_ASSERT_MSG" ref="98cf1ab82994ac8a7c2a25120f6f15d2" args="(m, x)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define CS_ASSERT_MSG          </td>
          <td>(</td>
          <td class="paramtype">m,         <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">x&nbsp;</td>
          <td class="paramname">          </td>
          <td>&nbsp;)&nbsp;</td>
          <td width="100%">&nbsp;&nbsp;&nbsp;(void)0</td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Same as <a class="el" href="cssysdef_8h.html#c380bd47888ecfe73e7b7a40b6f827a1" title="Assertion.">CS_ASSERT(expr)</a>, but additionally prints <em>msg</em> to <code>stderr</code>. 
<p>

<p>Referenced by <a class="el" href="allocator_8h-source.html#l00137">CS::Memory::LocalBufferAllocator&lt; T, N, ExcessAllocator &gt;::Alloc()</a>, <a class="el" href="ref_8h-source.html#l00151">csRef&lt; iGraphics2D &gt;::csRef()</a>, <a class="el" href="scf__implementation_8h-source.html#l00179">scfImplementation&lt; csBaseTextureFactory &gt;::DecRef()</a>, <a class="el" href="allocator_8h-source.html#l00150">CS::Memory::LocalBufferAllocator&lt; T, N, ExcessAllocator &gt;::Free()</a>, <a class="el" href="scf__implementation_8h-source.html#l00193">scfImplementation&lt; csBaseTextureFactory &gt;::IncRef()</a>, <a class="el" href="trianglestream_8h-source.html#l00207">CS::TriangleIndicesStream&lt; T &gt;::Next()</a>, <a class="el" href="pooledscfclass_8h-source.html#l00100">scfImplementationPooled&lt; scfImplementationExt0&lt; csParasiticDataBufferPooled, csParasiticDataBufferBase &gt; &gt;::operator new()</a>, <a class="el" href="ref_8h-source.html#l00216">csRef&lt; iGraphics2D &gt;::operator=()</a>, <a class="el" href="allocator_8h-source.html#l00344">CS::Memory::AllocatorNew&lt; T &gt;::Realloc()</a>, <a class="el" href="allocator_8h-source.html#l00286">CS::Memory::AllocatorNewChar&lt; Reallocatable &gt;::Realloc()</a>, <a class="el" href="allocator_8h-source.html#l00162">CS::Memory::LocalBufferAllocator&lt; T, N, ExcessAllocator &gt;::Realloc()</a>, <a class="el" href="partialorder_8h-source.html#l00403">csPartialOrder&lt; csStringID &gt;::SanityCheck()</a>, <a class="el" href="scf__implementation_8h-source.html#l00154">scfImplementation&lt; csBaseTextureFactory &gt;::scfImplementation()</a>, <a class="el" href="weakref_8h-source.html#l00143">csWeakRef&lt; csEventQueue &gt;::~csWeakRef()</a>, and <a class="el" href="pooledscfclass_8h-source.html#l00083">scfImplementationPooled&lt; Super, Allocator &gt;::Pool::~Pool()</a>.</p>

</div>
</div><p>
<a class="anchor" name="66bba4b4bdb4b6dadd37563abc499d48"></a><!-- doxytag: member="cssysdef.h::CS_CONST_METHOD" ref="66bba4b4bdb4b6dadd37563abc499d48" args="" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define CS_CONST_METHOD          </td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Use the CS_CONST_METHOD macro in front of method declarations to indicate that they are "constant", i.e., they only look at the values of their parameters and have no side effects. 
<p>
This allows the compiler to perform certain optimizations, e.g., eliminating repeated calls with the same arguments. This is a very strong assertion; if any argument is a pointer, you probably want to use <a class="el" href="cssysdef_8h.html#b3427ad7a206cd0ebf118b9d40084164" title="Use the CS_PURE_METHOD macro in front of method declarations to indicate that they...">CS_PURE_METHOD</a> instead.<p>
<dl compact><dt><b><a class="el" href="todo.html#_todo000004">Todo:</a></b></dt><dd>Is there an MSVC equivalent for gcc's __attribute__((const))? </dd></dl>

<p>Definition at line <a class="el" href="cssysdef_8h-source.html#l00905">905</a> of file <a class="el" href="cssysdef_8h-source.html">cssysdef.h</a>.</p>

</div>
</div><p>
<a class="anchor" name="e0cf7ba630c8b3da1065ef398fc5e383"></a><!-- doxytag: member="cssysdef.h::CS_DEBUG_BREAK" ref="e0cf7ba630c8b3da1065ef398fc5e383" args="" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define CS_DEBUG_BREAK          </td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Stops program execution and break into debugger, if present - otherwise, probably just throws an exception/signal (ie crashes). 
<p>

</div>
</div><p>
<a class="anchor" name="9e3fbfaf27ee31f36c4f994e232e11a8"></a><!-- doxytag: member="cssysdef.h::CS_DECLARE_STATIC_CLASSVAR" ref="9e3fbfaf27ee31f36c4f994e232e11a8" args="(var, getterFunc, Type)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define CS_DECLARE_STATIC_CLASSVAR          </td>
          <td>(</td>
          <td class="paramtype">var,         <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">getterFunc,         <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">Type&nbsp;</td>
          <td class="paramname">          </td>
          <td>&nbsp;)&nbsp;</td>
          <td width="100%"></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
<b>Value:</b><div class="fragment"><pre class="fragment"><span class="keyword">static</span> Type *var;                                             \
<span class="keyword">static</span> Type *getterFunc ();                                   \
<span class="keyword">static</span> <span class="keywordtype">void</span> getterFunc ## _kill ();                           \
<span class="keyword">static</span> <span class="keywordtype">void</span> getterFunc ## _kill_array ();
</pre></div>Declare a static variable inside a class. 
<p>
This will also declare a Getter function. Example: <pre>
 CS_DECLARE_STATIC_CLASSVAR (pool, GetVertexPool, csVertexPool)
 </pre> 
<p>Definition at line <a class="el" href="cssysdef_8h-source.html#l00568">568</a> of file <a class="el" href="cssysdef_8h-source.html">cssysdef.h</a>.</p>

</div>
</div><p>
<a class="anchor" name="50cd5757a8cd22085081f130aa8e26cc"></a><!-- doxytag: member="cssysdef.h::CS_DEFINE_STATICALLY_LINKED_FLAG" ref="50cd5757a8cd22085081f130aa8e26cc" args="" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define CS_DEFINE_STATICALLY_LINKED_FLAG&nbsp;&nbsp;&nbsp;bool scfStaticallyLinked = false;          </td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Define the scfStaticallyLinked variable. 
<p>

<p>Definition at line <a class="el" href="cssysdef_8h-source.html#l00401">401</a> of file <a class="el" href="cssysdef_8h-source.html">cssysdef.h</a>.</p>

</div>
</div><p>
<a class="anchor" name="6aa75111b26a9a9e9cc8213e8e245d97"></a><!-- doxytag: member="cssysdef.h::CS_DEPRECATED_METHOD" ref="6aa75111b26a9a9e9cc8213e8e245d97" args="" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define CS_DEPRECATED_METHOD          </td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Use the CS_DEPRECATED_METHOD macro in front of method declarations to indicate that they are deprecated. 
<p>
Example: <div class="fragment"><pre class="fragment"> <span class="keyword">struct </span>iFoo : <a class="code" href="structiBase.html" title="This is the basic interface: all other interfaces should be derived from this one...">iBase</a> {
   <a class="code" href="cssysdef_8h.html#6aa75111b26a9a9e9cc8213e8e245d97" title="Use the CS_DEPRECATED_METHOD macro in front of method declarations to indicate that...">CS_DEPRECATED_METHOD</a> <span class="keyword">virtual</span> <span class="keywordtype">void</span> Plankton() <span class="keyword">const</span> = 0;
 }
</pre></div> Compilers which are capable of flagging deprecation will exhibit a warning when it encounters client code invoking methods so tagged. 
<p>Definition at line <a class="el" href="cssysdef_8h-source.html#l00115">115</a> of file <a class="el" href="cssysdef_8h-source.html">cssysdef.h</a>.</p>

</div>
</div><p>
<a class="anchor" name="69b27a22db26f4a2bb7a26a85d2ab06b"></a><!-- doxytag: member="cssysdef.h::CS_DEPRECATED_METHOD_MSG" ref="69b27a22db26f4a2bb7a26a85d2ab06b" args="(msg)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define CS_DEPRECATED_METHOD_MSG          </td>
          <td>(</td>
          <td class="paramtype">msg&nbsp;</td>
          <td class="paramname">          </td>
          <td>&nbsp;)&nbsp;</td>
          <td width="100%">&nbsp;&nbsp;&nbsp;CS_DEPRECATED_METHOD</td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
A variant of <a class="el" href="cssysdef_8h.html#6aa75111b26a9a9e9cc8213e8e245d97" title="Use the CS_DEPRECATED_METHOD macro in front of method declarations to indicate that...">CS_DEPRECATED_METHOD</a> that also emits the message <em>msg</em> on compilers that support it. 
<p>

<p>Definition at line <a class="el" href="cssysdef_8h-source.html#l00127">127</a> of file <a class="el" href="cssysdef_8h-source.html">cssysdef.h</a>.</p>

</div>
</div><p>
<a class="anchor" name="cb08eeedad04ba9cc9c2a5919bab119f"></a><!-- doxytag: member="cssysdef.h::CS_DEPRECATED_TYPE" ref="cb08eeedad04ba9cc9c2a5919bab119f" args="" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define CS_DEPRECATED_TYPE          </td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Use the CS_DEPRECATED_TYPE macro after type declarations to indicate that they are deprecated. 
<p>
Example: <div class="fragment"><pre class="fragment"> <span class="keyword">typedef</span> <a class="code" href="cssysdef_8h.html#cb08eeedad04ba9cc9c2a5919bab119f" title="Use the CS_DEPRECATED_TYPE macro after type declarations to indicate that they are...">CS_DEPRECATED_TYPE</a> csFoo csBar;
 <span class="keyword">class </span><a class="code" href="cssysdef_8h.html#cb08eeedad04ba9cc9c2a5919bab119f" title="Use the CS_DEPRECATED_TYPE macro after type declarations to indicate that they are...">CS_DEPRECATED_TYPE</a> csBaz { };
</pre></div> Compilers which are capable of flagging deprecation will exhibit a warning when it encounters client code using types so tagged. 
<p>Definition at line <a class="el" href="cssysdef_8h-source.html#l00145">145</a> of file <a class="el" href="cssysdef_8h-source.html">cssysdef.h</a>.</p>

</div>
</div><p>
<a class="anchor" name="91e256b131a2cf6b4b9db8830a0c88f4"></a><!-- doxytag: member="cssysdef.h::CS_DEPRECATED_TYPE_MSG" ref="91e256b131a2cf6b4b9db8830a0c88f4" args="(msg)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define CS_DEPRECATED_TYPE_MSG          </td>
          <td>(</td>
          <td class="paramtype">msg&nbsp;</td>
          <td class="paramname">          </td>
          <td>&nbsp;)&nbsp;</td>
          <td width="100%">&nbsp;&nbsp;&nbsp;CS_DEPRECATED_TYPE</td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
A variant of CS_DEPRECATED_TYPE that also emits the message <em>msg</em> on compilers that support it. 
<p>

<p>Definition at line <a class="el" href="cssysdef_8h-source.html#l00157">157</a> of file <a class="el" href="cssysdef_8h-source.html">cssysdef.h</a>.</p>

</div>
</div><p>
<a class="anchor" name="92bb2a51bb45506ed1214feb410034b8"></a><!-- doxytag: member="cssysdef.h::CS_FUNCTION_NAME" ref="92bb2a51bb45506ed1214feb410034b8" args="" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define CS_FUNCTION_NAME&nbsp;&nbsp;&nbsp;__PRETTY_FUNCTION__          </td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Macro that resolves to a compiler-specific variable or string that contains the name of the current function. 
<p>

<p>Definition at line <a class="el" href="cssysdef_8h-source.html#l00673">673</a> of file <a class="el" href="cssysdef_8h-source.html">cssysdef.h</a>.</p>

</div>
</div><p>
<a class="anchor" name="8eb0223a04fafdddc64f1f3bc687cfd3"></a><!-- doxytag: member="cssysdef.h::CS_HEADER_GLOBAL" ref="8eb0223a04fafdddc64f1f3bc687cfd3" args="(X, Y)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define CS_HEADER_GLOBAL          </td>
          <td>(</td>
          <td class="paramtype">X,         <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">Y&nbsp;</td>
          <td class="paramname">          </td>
          <td>&nbsp;)&nbsp;</td>
          <td width="100%">&nbsp;&nbsp;&nbsp;CS_HEADER_GLOBAL_COMPOSE(X,Y)</td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
The <a class="el" href="cssysdef_8h.html#8eb0223a04fafdddc64f1f3bc687cfd3" title="The CS_HEADER_GLOBAL() macro composes a pathname from two components and wraps the...">CS_HEADER_GLOBAL()</a> macro composes a pathname from two components and wraps the path in `&lt;' and `&gt;'. 
<p>
This macro is useful in cases where one does not have the option of augmenting the preprocessor's header search path, even though the include path for some header file may vary from platform to platform. For instance, on many platforms OpenGL headers are in a `GL' directory, whereas on other platforms they are in an `OpenGL' directory. As an example, in the first case, the platform might define the preprocessor macro GLPATH with the value `GL', and in the second case GLPATH would be given the value `OpenGL'. To actually include an OpenGL header, such as gl.h, the following code would be used: <pre>
 #include CS_HEADER_GLOBAL(GLPATH,gl.h)
 </pre> 
<p>Definition at line <a class="el" href="cssysdef_8h-source.html#l00268">268</a> of file <a class="el" href="cssysdef_8h-source.html">cssysdef.h</a>.</p>

</div>
</div><p>
<a class="anchor" name="3e96743ac7cb2828c7e4714e2f887a27"></a><!-- doxytag: member="cssysdef.h::CS_HEADER_LOCAL" ref="3e96743ac7cb2828c7e4714e2f887a27" args="(X, Y)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define CS_HEADER_LOCAL          </td>
          <td>(</td>
          <td class="paramtype">X,         <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">Y&nbsp;</td>
          <td class="paramname">          </td>
          <td>&nbsp;)&nbsp;</td>
          <td width="100%">&nbsp;&nbsp;&nbsp;CS_HEADER_LOCAL_COMPOSE1(X,Y)</td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
The <a class="el" href="cssysdef_8h.html#3e96743ac7cb2828c7e4714e2f887a27" title="The CS_HEADER_LOCAL() macro composes a pathname from two components and wraps the...">CS_HEADER_LOCAL()</a> macro composes a pathname from two components and wraps the path in double-quotes. 
<p>
This macro is useful in cases where one does not have the option of augmenting the preprocessor's header search path, even though the include path for some header file may vary from platform to platform. For example, assuming that the preprocessor macro UTILPATH is defined with some platform-specific value, to actually include a header, such as <a class="el" href="util_8h.html" title="Miscellaneous utilities.">util.h</a>, the following code would be used: <pre>
 #include CS_HEADER_LOCAL(UTILPATH,<a class="el" href="util_8h.html" title="Miscellaneous utilities.">util.h</a>)
 </pre> 
<p>Definition at line <a class="el" href="cssysdef_8h-source.html#l00283">283</a> of file <a class="el" href="cssysdef_8h-source.html">cssysdef.h</a>.</p>

</div>
</div><p>
<a class="anchor" name="891b81da1f8bd98065e99456203234f3"></a><!-- doxytag: member="cssysdef.h::CS_IMPLEMENT_APPLICATION" ref="891b81da1f8bd98065e99456203234f3" args="" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define CS_IMPLEMENT_APPLICATION          </td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
<b>Value:</b><div class="fragment"><pre class="fragment"><a class="code" href="cssysdef_8h.html#7572dee0d7caa0e1bbe22827600d6f8a">CS_DECLARE_DEFAULT_STATIC_VARIABLE_REGISTRATION</a>                 \
  <a class="code" href="cssysdef_8h.html#50cd5757a8cd22085081f130aa8e26cc" title="Define the scfStaticallyLinked variable.">CS_DEFINE_STATICALLY_LINKED_FLAG</a>                                      \
  <a class="code" href="cssysdef_8h.html#34cff917c17e47cb7af9642367e6d4b7">CS_DEFINE_STATIC_VARIABLE_REGISTRATION</a> (csStaticVarCleanup_csutil);   \
  CS_IMPLEMENT_PLATFORM_APPLICATION
</pre></div>The CS_IMPLEMENT_APPLICATION macro should be placed at the global scope in exactly one compilation unit comprising an application. 
<p>
For maximum portability, each application should employ this macro. Platforms may override the definition of this macro in order to augment the implementation of an application with any special implementation details required by the platform. 
<p>Definition at line <a class="el" href="cssysdef_8h-source.html#l00484">484</a> of file <a class="el" href="cssysdef_8h-source.html">cssysdef.h</a>.</p>

</div>
</div><p>
<a class="anchor" name="be4c75d5a2dc7b45e54d1ff777811258"></a><!-- doxytag: member="cssysdef.h::CS_IMPLEMENT_FOREIGN_DLL" ref="be4c75d5a2dc7b45e54d1ff777811258" args="" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define CS_IMPLEMENT_FOREIGN_DLL          </td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
<b>Value:</b><div class="fragment"><pre class="fragment"><a class="code" href="cssysdef_8h.html#7572dee0d7caa0e1bbe22827600d6f8a">CS_DECLARE_DEFAULT_STATIC_VARIABLE_REGISTRATION</a>                     \
       <a class="code" href="cssysdef_8h.html#50cd5757a8cd22085081f130aa8e26cc" title="Define the scfStaticallyLinked variable.">CS_DEFINE_STATICALLY_LINKED_FLAG</a>                                     \
       <a class="code" href="cssysdef_8h.html#34cff917c17e47cb7af9642367e6d4b7">CS_DEFINE_STATIC_VARIABLE_REGISTRATION</a> (csStaticVarCleanup_csutil);
</pre></div>The CS_IMPLEMENT_FOREIGN_DLL macro should be placed at the global scope in exactly one compilation unit comprising a foreign (non-Crystal Space) module. 
<p>
For maximum portability, each such module should employ this macro. This is useful for situations in which a dynamic load library (DLL) is being built for some other facility. Obvious examples are pure extension modules for Python, Perl, and Java. For Crystal Space plugins, instead use CS_IMPLEMENT_PLUGIN. Platforms may override the definition of this macro in order to augment the implementation of the foreign module with any special implementation details required by the platform. If the foreign module will be interacting with Crystal Space, then it also needs to initialize the global <a class="el" href="structiSCF.html#64db1d2d25a1eca49ddefe6922c41e8e" title="This is the global instance of iSCF.">iSCF::SCF</a> variable manually. This variable should be set to point at the single shared instance of <a class="el" href="structiSCF.html" title="iSCF is the interface that allows using SCF functions from shared classes.">iSCF</a> which is created by the application's invocation of <a class="el" href="group__scf.html#ge2da054d4d141e63e22aac6a78e7211a" title="This function should be called to initialize client SCF library.">scfInitialize()</a>, <a class="el" href="classcsInitializer.html#fb85ed03752868412b665b06a52d7a41" title="This very important function initializes the SCF sub-system.">csInitializer::InitializeSCF()</a>, or <a class="el" href="classcsInitializer.html#61494a85e1807c790070d36f5a055f10" title="Create everything needed to get a CS application operational.">csInitializer::CreateEnvironment()</a>. In real Crystal Space plugins (those using CS_IMPLEMENT_PLUGIN), <a class="el" href="structiSCF.html#64db1d2d25a1eca49ddefe6922c41e8e" title="This is the global instance of iSCF.">iSCF::SCF</a> is initialized automatically; but in foreign DLL's, it is the responsibility of the DLL's author to ensure that <a class="el" href="structiSCF.html#64db1d2d25a1eca49ddefe6922c41e8e" title="This is the global instance of iSCF.">iSCF::SCF</a> gets initialized. 
<p>Definition at line <a class="el" href="cssysdef_8h-source.html#l00431">431</a> of file <a class="el" href="cssysdef_8h-source.html">cssysdef.h</a>.</p>

</div>
</div><p>
<a class="anchor" name="b8b4e5655675ca59b0c4d8419ae243ec"></a><!-- doxytag: member="cssysdef.h::CS_IMPLEMENT_IMPLICIT_PTR_CAST" ref="b8b4e5655675ca59b0c4d8419ae243ec" args="(classname)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define CS_IMPLEMENT_IMPLICIT_PTR_CAST          </td>
          <td>(</td>
          <td class="paramtype">classname&nbsp;</td>
          <td class="paramname">          </td>
          <td>&nbsp;)&nbsp;</td>
          <td width="100%"></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
<b>Value:</b><div class="fragment"><pre class="fragment"><span class="keyword">inline</span> <span class="keyword">static</span> classname* <a class="code" href="cssysdef_8h.html#eadac43e70d3dae7b999d8a7b26690f1">_CS_IMPLICITPTRCAST_NAME</a> (classname* ptr) \
  { \
    <span class="keywordflow">return</span> ptr;\
  }
</pre></div>Implements a static member function for a class which can be used to perform implicit pointer casts. 
<p>
<dl compact><dt><b>Parameters:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>classname</em>&nbsp;</td><td>Name of the class that the macro is being used in. </td></tr>
  </table>
</dl>
<dl class="remark" compact><dt><b>Remarks:</b></dt><dd>This macro is intended to support typecasting within macros, allowing the compiler to provide a more descriptive error message. Use <a class="el" href="cssysdef_8h.html#b8b4e5655675ca59b0c4d8419ae243ec" title="Implements a static member function for a class which can be used to perform implicit...">CS_IMPLEMENT_IMPLICIT_PTR_CAST()</a> in the declaration of the class and <a class="el" href="cssysdef_8h.html#15431b2aca13c8d4653f4387bf5b1141" title="Perform a compiler implicit cast of a pointer to another pointer type using a static...">CS_IMPLICIT_PTR_CAST()</a> in the macro declaration. </dd></dl>
<dl class="user" compact><dt><b>Example:</b></dt><dd><div class="fragment"><pre class="fragment"> <span class="keyword">struct </span><a class="code" href="structiObjectRegistry.html" title="This interface serves as a registry of other objects.">iObjectRegistry</a> : <span class="keyword">public</span> <a class="code" href="structiBase.html" title="This is the basic interface: all other interfaces should be derived from this one...">iBase</a>
 {
   <span class="comment">// Allow implicit casts through static function.</span>
   <a class="code" href="cssysdef_8h.html#b8b4e5655675ca59b0c4d8419ae243ec" title="Implements a static member function for a class which can be used to perform implicit...">CS_IMPLEMENT_IMPLICIT_PTR_CAST</a>(<a class="code" href="structiObjectRegistry.html" title="This interface serves as a registry of other objects.">iObjectRegistry</a>);
   ...
 }

<span class="preprocessor"> #define CS_QUERY_REGISTRY_TAG(Reg, Tag) \</span>
<span class="preprocessor">  csPtr&lt;iBase&gt; (CS_IMPLICIT_PTR_CAST(iObjectRegistry, Reg)-&gt;Get (Tag))</span>
</pre></div> </dd></dl>

<p>Definition at line <a class="el" href="cssysdef_8h-source.html#l01044">1044</a> of file <a class="el" href="cssysdef_8h-source.html">cssysdef.h</a>.</p>

</div>
</div><p>
<a class="anchor" name="77da1ed4fe633f896570e977f5916608"></a><!-- doxytag: member="cssysdef.h::CS_IMPLEMENT_PLUGIN" ref="77da1ed4fe633f896570e977f5916608" args="" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define CS_IMPLEMENT_PLUGIN          </td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
<b>Value:</b><div class="fragment"><pre class="fragment">CS_IMPLEMENT_PLATFORM_PLUGIN                                    \
          <a class="code" href="cssysdef_8h.html#50cd5757a8cd22085081f130aa8e26cc" title="Define the scfStaticallyLinked variable.">CS_DEFINE_STATICALLY_LINKED_FLAG</a>                              \
          <a class="code" href="cssysdef_8h.html#7572dee0d7caa0e1bbe22827600d6f8a">CS_DECLARE_DEFAULT_STATIC_VARIABLE_REGISTRATION</a>               \
          <a class="code" href="cssysdef_8h.html#34cff917c17e47cb7af9642367e6d4b7">CS_DEFINE_STATIC_VARIABLE_REGISTRATION</a> (csStaticVarCleanup_csutil);
</pre></div>The CS_IMPLEMENT_PLUGIN macro should be placed at the global scope in exactly one compilation unit comprising a plugin module. 
<p>
For maximum portability, each plugin module must employ this macro. Platforms may override the definition of this macro in order to augment the implementation of the plugin module with any special implementation details required by the platform. 
<p>Definition at line <a class="el" href="cssysdef_8h-source.html#l00456">456</a> of file <a class="el" href="cssysdef_8h-source.html">cssysdef.h</a>.</p>

</div>
</div><p>
<a class="anchor" name="750513ddfb2783fa081a966543f56e5b"></a><!-- doxytag: member="cssysdef.h::CS_IMPLEMENT_STATIC_CLASSVAR" ref="750513ddfb2783fa081a966543f56e5b" args="(Class, var, getterFunc, Type, initParam)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define CS_IMPLEMENT_STATIC_CLASSVAR          </td>
          <td>(</td>
          <td class="paramtype">Class,         <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">var,         <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">getterFunc,         <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">Type,         <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">initParam&nbsp;</td>
          <td class="paramname">          </td>
          <td>&nbsp;)&nbsp;</td>
          <td width="100%">&nbsp;&nbsp;&nbsp;CS_IMPLEMENT_STATIC_CLASSVAR_EXT(Class,var,getterFunc,Type,initParam,_kill)</td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Create the static class variable that has been declared with CS_DECLARE_STATIC_CLASSVAR. 
<p>
This will also create the Getter function and the destruction function. The destruction function will be registered upon the first invocation of the Getter function. Example: <pre>
 CS_IMPLEMENT_STATIC_CLASSVAR (csPolygon2D, pool, GetVertexPool,
                               csVertexPool,)
 </pre> 
<p>Definition at line <a class="el" href="cssysdef_8h-source.html#l00619">619</a> of file <a class="el" href="cssysdef_8h-source.html">cssysdef.h</a>.</p>

</div>
</div><p>
<a class="anchor" name="61813b56c11d1bd8486ad2ced24348d9"></a><!-- doxytag: member="cssysdef.h::CS_IMPLEMENT_STATIC_VAR" ref="61813b56c11d1bd8486ad2ced24348d9" args="(getterFunc, Type, initParam)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define CS_IMPLEMENT_STATIC_VAR          </td>
          <td>(</td>
          <td class="paramtype">getterFunc,         <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">Type,         <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">initParam&nbsp;</td>
          <td class="paramname">          </td>
          <td>&nbsp;)&nbsp;</td>
          <td width="100%">&nbsp;&nbsp;&nbsp;CS_IMPLEMENT_STATIC_VAR_EXT(getterFunc,Type,initParam,_kill)</td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Implement a file-scoped static variable that is created on demand. 
<p>
Defines a 'getter' function to access the variable and a 'destruction' function. The 'getter' function will register the 'destruction' function on first invocation. Example: <pre>
 CS_IMPLEMENT_STATIC_VAR (GetVertexPool, csVertexPool,)
 </pre> This will give you a file-scoped static 'getter' function GetVertexPool() that returns a pointer to a static variable. 
<p>Definition at line <a class="el" href="cssysdef_8h-source.html#l00551">551</a> of file <a class="el" href="cssysdef_8h-source.html">cssysdef.h</a>.</p>

</div>
</div><p>
<a class="anchor" name="15431b2aca13c8d4653f4387bf5b1141"></a><!-- doxytag: member="cssysdef.h::CS_IMPLICIT_PTR_CAST" ref="15431b2aca13c8d4653f4387bf5b1141" args="(classname, ptr)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define CS_IMPLICIT_PTR_CAST          </td>
          <td>(</td>
          <td class="paramtype">classname,         <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">ptr&nbsp;</td>
          <td class="paramname">          </td>
          <td>&nbsp;)&nbsp;</td>
          <td width="100%">&nbsp;&nbsp;&nbsp;(classname::_CS_IMPLICITPTRCAST_NAME(ptr))</td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Perform a compiler implicit cast of a pointer to another pointer type using a static member function declared with the <code>CS_IMPLEMENT_IMPLICIT_PTR_CAST</code> macro. 
<p>
<dl compact><dt><b>Parameters:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>classname</em>&nbsp;</td><td>Name of the class to convert to </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>ptr</em>&nbsp;</td><td>Pointer to be convereted into </td></tr>
  </table>
</dl>
<dl class="see" compact><dt><b>See also:</b></dt><dd><a class="el" href="cssysdef_8h.html#b8b4e5655675ca59b0c4d8419ae243ec" title="Implements a static member function for a class which can be used to perform implicit...">CS_IMPLEMENT_IMPLICIT_PTR_CAST</a> </dd></dl>

<p>Definition at line <a class="el" href="cssysdef_8h-source.html#l01058">1058</a> of file <a class="el" href="cssysdef_8h-source.html">cssysdef.h</a>.</p>

</div>
</div><p>
<a class="anchor" name="579d0bb91d147be822a8f30acdc87033"></a><!-- doxytag: member="cssysdef.h::CS_INITIALIZE_PLATFORM_APPLICATION" ref="579d0bb91d147be822a8f30acdc87033" args="" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define CS_INITIALIZE_PLATFORM_APPLICATION          </td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Perform platform-specific application initializations. 
<p>
This macro should be invoked very near to the "beginning" of the application. <dl class="remark" compact><dt><b>Remarks:</b></dt><dd>NB: It is invoked in <a class="el" href="classcsInitializer.html#61494a85e1807c790070d36f5a055f10" title="Create everything needed to get a CS application operational.">csInitializer::CreateEnvironment()</a>. </dd></dl>

<p>Definition at line <a class="el" href="cssysdef_8h-source.html#l00331">331</a> of file <a class="el" href="cssysdef_8h-source.html">cssysdef.h</a>.</p>

</div>
</div><p>
<a class="anchor" name="a46e2d433bae30274321c3869fada066"></a><!-- doxytag: member="cssysdef.h::CS_MAXPATHLEN" ref="a46e2d433bae30274321c3869fada066" args="" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define CS_MAXPATHLEN&nbsp;&nbsp;&nbsp;1024          </td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Maximum length of a filesystem pathname. 
<p>
Useful for declaring character buffers for calls to system functions which return a pathname in the buffer. 
<p>Definition at line <a class="el" href="cssysdef_8h-source.html#l00179">179</a> of file <a class="el" href="cssysdef_8h-source.html">cssysdef.h</a>.</p>

</div>
</div><p>
<a class="anchor" name="9b945dcc0128078df43f9c6635cf871c"></a><!-- doxytag: member="cssysdef.h::CS_NO_EXCEPTIONS" ref="9b945dcc0128078df43f9c6635cf871c" args="" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define CS_NO_EXCEPTIONS          </td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
This is defined when the project was compiled without support for exceptions. 
<p>

<p>Definition at line <a class="el" href="cssysdef_8h-source.html#l00171">171</a> of file <a class="el" href="cssysdef_8h-source.html">cssysdef.h</a>.</p>

</div>
</div><p>
<a class="anchor" name="b3427ad7a206cd0ebf118b9d40084164"></a><!-- doxytag: member="cssysdef.h::CS_PURE_METHOD" ref="b3427ad7a206cd0ebf118b9d40084164" args="" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define CS_PURE_METHOD          </td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Use the CS_PURE_METHOD macro in front of method declarations to indicate that they are "pure", i.e., they look at their arguments and at global memory but do not have any side effects. 
<p>
Basically, if the function doesn't change the values of any non-local variables and doesn't perform any output or other tampering with the environment, it is "pure". This allows the compiler to perform certain optimizations, e.g., eliminating repeated calls with the same arguments.<p>
<dl compact><dt><b><a class="el" href="todo.html#_todo000005">Todo:</a></b></dt><dd>Is there an MSVC equivalent for gcc's __attribute__((pure)) ? </dd></dl>

<p>Definition at line <a class="el" href="cssysdef_8h-source.html#l00921">921</a> of file <a class="el" href="cssysdef_8h-source.html">cssysdef.h</a>.</p>

</div>
</div><p>
<a class="anchor" name="459ff917b201b53e2df6ac10b0a554bb"></a><!-- doxytag: member="cssysdef.h::CS_REGISTER_STATIC_FOR_DESTRUCTION" ref="459ff917b201b53e2df6ac10b0a554bb" args="(getterFunc)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define CS_REGISTER_STATIC_FOR_DESTRUCTION          </td>
          <td>(</td>
          <td class="paramtype">getterFunc&nbsp;</td>
          <td class="paramname">          </td>
          <td>&nbsp;)&nbsp;</td>
          <td width="100%">&nbsp;&nbsp;&nbsp;csStaticVarCleanup (getterFunc);</td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Register a method that will destruct one static variable. 
<p>

<p>Definition at line <a class="el" href="cssysdef_8h-source.html#l00495">495</a> of file <a class="el" href="cssysdef_8h-source.html">cssysdef.h</a>.</p>

</div>
</div><p>
<a class="anchor" name="9f98b09fc5f5c5e6bcb2cabe2ac18075"></a><!-- doxytag: member="cssysdef.h::CS_STATIC_VARIABLE_CLEANUP" ref="9f98b09fc5f5c5e6bcb2cabe2ac18075" args="" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define CS_STATIC_VARIABLE_CLEANUP&nbsp;&nbsp;&nbsp;csStaticVarCleanup (0);          </td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Invoke the function that will call all destruction functions. 
<p>

<p>Definition at line <a class="el" href="cssysdef_8h-source.html#l00503">503</a> of file <a class="el" href="cssysdef_8h-source.html">cssysdef.h</a>.</p>

</div>
</div><p>
<a class="anchor" name="dceb8db1fe1c12cad8cfc6477b42ea1c"></a><!-- doxytag: member="cssysdef.h::CS_STRING_TO_WIDE" ref="dceb8db1fe1c12cad8cfc6477b42ea1c" args="(x)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define CS_STRING_TO_WIDE          </td>
          <td>(</td>
          <td class="paramtype">x&nbsp;</td>
          <td class="paramname">          </td>
          <td>&nbsp;)&nbsp;</td>
          <td width="100%">&nbsp;&nbsp;&nbsp;CS_STRING_TO_WIDE_(x)</td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Convert a string to a wide string. 
<p>
Also works in macros. <div class="fragment"><pre class="fragment"> <span class="keywordtype">void</span> bar (<span class="keyword">const</span> <span class="keywordtype">wchar_t</span>* baz);
<span class="preprocessor"> #define FOO(x) bar (CS_STRING_TO_WIDE (#x));</span>
</pre></div> 
<p>Definition at line <a class="el" href="cssysdef_8h-source.html#l01082">1082</a> of file <a class="el" href="cssysdef_8h-source.html">cssysdef.h</a>.</p>

</div>
</div><p>
<a class="anchor" name="00badfa33d7da3a5a6a37cef8edd3def"></a><!-- doxytag: member="cssysdef.h::CS_TEMP_DIR" ref="00badfa33d7da3a5a6a37cef8edd3def" args="" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define CS_TEMP_DIR&nbsp;&nbsp;&nbsp;CS::Macros::CS_TEMP_DIR.GetDataSafe()          </td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Directory for temporary files. 
<p>
<dl compact><dt><b><a class="el" href="deprecated.html#_deprecated000007">Deprecated:</a></b></dt><dd>Use <a class="el" href="namespaceCS_1_1Platform.html#b8891b485fa1248f20654719839363af" title="Get system specific temporary folder.">CS::Platform::GetTempDirectory</a> () from <a class="el" href="syspath_8h.html" title="Paths helpers.">syspath.h</a> </dd></dl>

<p>Definition at line <a class="el" href="cssysdef_8h-source.html#l00223">223</a> of file <a class="el" href="cssysdef_8h-source.html">cssysdef.h</a>.</p>

</div>
</div><p>
<a class="anchor" name="8b676be6ae8572966e5c2e0705adad8f"></a><!-- doxytag: member="cssysdef.h::CS_TEMP_FILE" ref="8b676be6ae8572966e5c2e0705adad8f" args="" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define CS_TEMP_FILE&nbsp;&nbsp;&nbsp;CS::Macros::CS_TEMP_FILE.GetDataSafe()          </td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Name for temporary files. 
<p>
<dl compact><dt><b><a class="el" href="deprecated.html#_deprecated000008">Deprecated:</a></b></dt><dd>Use <a class="el" href="namespaceCS_1_1Platform.html#e2a5a384bcc38a660c0de1092a506283" title="Get file name for temporary file within specified directory.">CS::Platform::GetTempFilename</a> () from <a class="el" href="syspath_8h.html" title="Paths helpers.">syspath.h</a> </dd></dl>

<p>Definition at line <a class="el" href="cssysdef_8h-source.html#l00242">242</a> of file <a class="el" href="cssysdef_8h-source.html">cssysdef.h</a>.</p>

</div>
</div><p>
<a class="anchor" name="d1a95e13bd870b3531da80fc8d2a0e50"></a><!-- doxytag: member="cssysdef.h::CS_VA_COPY" ref="d1a95e13bd870b3531da80fc8d2a0e50" args="(dest, src)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define CS_VA_COPY          </td>
          <td>(</td>
          <td class="paramtype">dest,         <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">src&nbsp;</td>
          <td class="paramname">          </td>
          <td>&nbsp;)&nbsp;</td>
          <td width="100%">&nbsp;&nbsp;&nbsp;dest = src;</td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Copies the state of a va_list value. 
<p>

<p>Definition at line <a class="el" href="cssysdef_8h-source.html#l01070">1070</a> of file <a class="el" href="cssysdef_8h-source.html">cssysdef.h</a>.</p>

</div>
</div><p>
<hr><h2>Function Documentation</h2>
<a class="anchor" name="4cb62af6b416b419d9747d6b11b5c28b"></a><!-- doxytag: member="cssysdef.h::operator new" ref="4cb62af6b416b419d9747d6b11b5c28b" args="(size_t s, const CS::AllocPlatform &amp;)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void* operator new           </td>
          <td>(</td>
          <td class="paramtype">size_t&nbsp;</td>
          <td class="paramname"> <em>s</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const <a class="el" href="structCS_1_1AllocPlatform.html">CS::AllocPlatform</a> &amp;&nbsp;</td>
          <td class="paramname"></td><td>&nbsp;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td><td width="100%">  throw ()</td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Platform-dependent operator new. 
<p>
<dl class="remark" compact><dt><b>Remarks:</b></dt><dd>Won't throw an exception if allocation fails. </dd></dl>

</div>
</div><p>
<a class="anchor" name="171e5c211e259a96eae76303eb14c6d4"></a><!-- doxytag: member="cssysdef.h::operator new[]" ref="171e5c211e259a96eae76303eb14c6d4" args="(size_t s, const CS::AllocPlatform &amp;)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void* operator new[]           </td>
          <td>(</td>
          <td class="paramtype">size_t&nbsp;</td>
          <td class="paramname"> <em>s</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const <a class="el" href="structCS_1_1AllocPlatform.html">CS::AllocPlatform</a> &amp;&nbsp;</td>
          <td class="paramname"></td><td>&nbsp;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td><td width="100%">  throw ()</td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Platform-dependent operator new. 
<p>
<dl class="remark" compact><dt><b>Remarks:</b></dt><dd>Won't throw an exception if allocation fails. </dd></dl>

</div>
</div><p>
<hr size="1"><address><small>Generated for Crystal Space 1.2.1 by 
<a href="http://www.doxygen.org/index.html">doxygen</a> 1.5.3 
</small></address> </div></body> </html>