Deprecate test/automated and test/test-automation (replaced by test/testautomation*.*)
This commit is contained in:
parent
71d173a062
commit
750f6fb9d9
124 changed files with 0 additions and 50293 deletions
|
@ -1,263 +0,0 @@
|
||||||
<?xml version="1.0" encoding="Windows-1252"?>
|
|
||||||
<VisualStudioProject
|
|
||||||
ProjectType="Visual C++"
|
|
||||||
Version="9.00"
|
|
||||||
Name="automated"
|
|
||||||
ProjectGUID="{DDD710DB-EC7B-4CCB-BD75-535D401A2FE0}"
|
|
||||||
RootNamespace="automated"
|
|
||||||
Keyword="Win32Proj"
|
|
||||||
TargetFrameworkVersion="196613"
|
|
||||||
>
|
|
||||||
<Platforms>
|
|
||||||
<Platform
|
|
||||||
Name="Win32"
|
|
||||||
/>
|
|
||||||
</Platforms>
|
|
||||||
<ToolFiles>
|
|
||||||
</ToolFiles>
|
|
||||||
<Configurations>
|
|
||||||
<Configuration
|
|
||||||
Name="Debug|Win32"
|
|
||||||
OutputDirectory="$(SolutionDir)$(ConfigurationName)"
|
|
||||||
IntermediateDirectory="$(ConfigurationName)"
|
|
||||||
ConfigurationType="1"
|
|
||||||
CharacterSet="1"
|
|
||||||
>
|
|
||||||
<Tool
|
|
||||||
Name="VCPreBuildEventTool"
|
|
||||||
/>
|
|
||||||
<Tool
|
|
||||||
Name="VCCustomBuildTool"
|
|
||||||
/>
|
|
||||||
<Tool
|
|
||||||
Name="VCXMLDataGeneratorTool"
|
|
||||||
/>
|
|
||||||
<Tool
|
|
||||||
Name="VCWebServiceProxyGeneratorTool"
|
|
||||||
/>
|
|
||||||
<Tool
|
|
||||||
Name="VCMIDLTool"
|
|
||||||
/>
|
|
||||||
<Tool
|
|
||||||
Name="VCCLCompilerTool"
|
|
||||||
Optimization="0"
|
|
||||||
AdditionalIncludeDirectories="$(SolutionDir)\..\include"
|
|
||||||
PreprocessorDefinitions="WIN32;_DEBUG;_WINDOWS"
|
|
||||||
MinimalRebuild="true"
|
|
||||||
BasicRuntimeChecks="3"
|
|
||||||
RuntimeLibrary="3"
|
|
||||||
UsePrecompiledHeader="0"
|
|
||||||
WarningLevel="3"
|
|
||||||
DebugInformationFormat="4"
|
|
||||||
/>
|
|
||||||
<Tool
|
|
||||||
Name="VCManagedResourceCompilerTool"
|
|
||||||
/>
|
|
||||||
<Tool
|
|
||||||
Name="VCResourceCompilerTool"
|
|
||||||
/>
|
|
||||||
<Tool
|
|
||||||
Name="VCPreLinkEventTool"
|
|
||||||
/>
|
|
||||||
<Tool
|
|
||||||
Name="VCLinkerTool"
|
|
||||||
LinkIncremental="2"
|
|
||||||
GenerateDebugInformation="true"
|
|
||||||
SubSystem="2"
|
|
||||||
TargetMachine="1"
|
|
||||||
/>
|
|
||||||
<Tool
|
|
||||||
Name="VCALinkTool"
|
|
||||||
/>
|
|
||||||
<Tool
|
|
||||||
Name="VCManifestTool"
|
|
||||||
/>
|
|
||||||
<Tool
|
|
||||||
Name="VCXDCMakeTool"
|
|
||||||
/>
|
|
||||||
<Tool
|
|
||||||
Name="VCBscMakeTool"
|
|
||||||
/>
|
|
||||||
<Tool
|
|
||||||
Name="VCFxCopTool"
|
|
||||||
/>
|
|
||||||
<Tool
|
|
||||||
Name="VCAppVerifierTool"
|
|
||||||
/>
|
|
||||||
<Tool
|
|
||||||
Name="VCPostBuildEventTool"
|
|
||||||
/>
|
|
||||||
</Configuration>
|
|
||||||
<Configuration
|
|
||||||
Name="Release|Win32"
|
|
||||||
OutputDirectory="$(SolutionDir)$(ConfigurationName)"
|
|
||||||
IntermediateDirectory="$(ConfigurationName)"
|
|
||||||
ConfigurationType="1"
|
|
||||||
CharacterSet="1"
|
|
||||||
WholeProgramOptimization="1"
|
|
||||||
>
|
|
||||||
<Tool
|
|
||||||
Name="VCPreBuildEventTool"
|
|
||||||
/>
|
|
||||||
<Tool
|
|
||||||
Name="VCCustomBuildTool"
|
|
||||||
/>
|
|
||||||
<Tool
|
|
||||||
Name="VCXMLDataGeneratorTool"
|
|
||||||
/>
|
|
||||||
<Tool
|
|
||||||
Name="VCWebServiceProxyGeneratorTool"
|
|
||||||
/>
|
|
||||||
<Tool
|
|
||||||
Name="VCMIDLTool"
|
|
||||||
/>
|
|
||||||
<Tool
|
|
||||||
Name="VCCLCompilerTool"
|
|
||||||
Optimization="2"
|
|
||||||
EnableIntrinsicFunctions="true"
|
|
||||||
AdditionalIncludeDirectories="$(SolutionDir)\..\include"
|
|
||||||
PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS"
|
|
||||||
RuntimeLibrary="2"
|
|
||||||
EnableFunctionLevelLinking="true"
|
|
||||||
UsePrecompiledHeader="0"
|
|
||||||
WarningLevel="3"
|
|
||||||
DebugInformationFormat="3"
|
|
||||||
/>
|
|
||||||
<Tool
|
|
||||||
Name="VCManagedResourceCompilerTool"
|
|
||||||
/>
|
|
||||||
<Tool
|
|
||||||
Name="VCResourceCompilerTool"
|
|
||||||
/>
|
|
||||||
<Tool
|
|
||||||
Name="VCPreLinkEventTool"
|
|
||||||
/>
|
|
||||||
<Tool
|
|
||||||
Name="VCLinkerTool"
|
|
||||||
LinkIncremental="1"
|
|
||||||
GenerateDebugInformation="true"
|
|
||||||
SubSystem="2"
|
|
||||||
OptimizeReferences="2"
|
|
||||||
EnableCOMDATFolding="2"
|
|
||||||
TargetMachine="1"
|
|
||||||
/>
|
|
||||||
<Tool
|
|
||||||
Name="VCALinkTool"
|
|
||||||
/>
|
|
||||||
<Tool
|
|
||||||
Name="VCManifestTool"
|
|
||||||
/>
|
|
||||||
<Tool
|
|
||||||
Name="VCXDCMakeTool"
|
|
||||||
/>
|
|
||||||
<Tool
|
|
||||||
Name="VCBscMakeTool"
|
|
||||||
/>
|
|
||||||
<Tool
|
|
||||||
Name="VCFxCopTool"
|
|
||||||
/>
|
|
||||||
<Tool
|
|
||||||
Name="VCAppVerifierTool"
|
|
||||||
/>
|
|
||||||
<Tool
|
|
||||||
Name="VCPostBuildEventTool"
|
|
||||||
/>
|
|
||||||
</Configuration>
|
|
||||||
</Configurations>
|
|
||||||
<References>
|
|
||||||
</References>
|
|
||||||
<Files>
|
|
||||||
<Filter
|
|
||||||
Name="Source Files"
|
|
||||||
Filter="cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx"
|
|
||||||
UniqueIdentifier="{4FC737F1-C7A5-4376-A066-2A32D752A2FF}"
|
|
||||||
>
|
|
||||||
<File
|
|
||||||
RelativePath="..\..\..\test\automated\audio\audio.c"
|
|
||||||
>
|
|
||||||
</File>
|
|
||||||
<File
|
|
||||||
RelativePath="..\..\..\test\automated\common\common.c"
|
|
||||||
>
|
|
||||||
</File>
|
|
||||||
<File
|
|
||||||
RelativePath="..\..\..\test\automated\platform\platform.c"
|
|
||||||
>
|
|
||||||
</File>
|
|
||||||
<File
|
|
||||||
RelativePath="..\..\..\test\automated\rect\rect.c"
|
|
||||||
>
|
|
||||||
</File>
|
|
||||||
<File
|
|
||||||
RelativePath="..\..\..\test\automated\render\render.c"
|
|
||||||
>
|
|
||||||
</File>
|
|
||||||
<File
|
|
||||||
RelativePath="..\..\..\test\automated\rwops\rwops.c"
|
|
||||||
>
|
|
||||||
</File>
|
|
||||||
<File
|
|
||||||
RelativePath="..\..\..\test\automated\SDL_at.c"
|
|
||||||
>
|
|
||||||
</File>
|
|
||||||
<File
|
|
||||||
RelativePath="..\..\..\test\automated\surface\surface.c"
|
|
||||||
>
|
|
||||||
</File>
|
|
||||||
<File
|
|
||||||
RelativePath="..\..\..\test\automated\testsdl.c"
|
|
||||||
>
|
|
||||||
</File>
|
|
||||||
<File
|
|
||||||
RelativePath="..\..\..\test\automated\rwops\TestSupportRWops_Generic.c"
|
|
||||||
>
|
|
||||||
</File>
|
|
||||||
</Filter>
|
|
||||||
<Filter
|
|
||||||
Name="Header Files"
|
|
||||||
Filter="h;hpp;hxx;hm;inl;inc;xsd"
|
|
||||||
UniqueIdentifier="{93995380-89BD-4b04-88EB-625FBE52EBFB}"
|
|
||||||
>
|
|
||||||
<File
|
|
||||||
RelativePath="..\..\..\test\automated\audio\audio.h"
|
|
||||||
>
|
|
||||||
</File>
|
|
||||||
<File
|
|
||||||
RelativePath="..\..\..\test\automated\common\common.h"
|
|
||||||
>
|
|
||||||
</File>
|
|
||||||
<File
|
|
||||||
RelativePath="..\..\..\test\automated\common\images.h"
|
|
||||||
>
|
|
||||||
</File>
|
|
||||||
<File
|
|
||||||
RelativePath="..\..\..\test\automated\platform\platform.h"
|
|
||||||
>
|
|
||||||
</File>
|
|
||||||
<File
|
|
||||||
RelativePath="..\..\..\test\automated\render\render.h"
|
|
||||||
>
|
|
||||||
</File>
|
|
||||||
<File
|
|
||||||
RelativePath="..\..\..\test\automated\rwops\rwops.h"
|
|
||||||
>
|
|
||||||
</File>
|
|
||||||
<File
|
|
||||||
RelativePath="..\..\..\test\automated\SDL_at.h"
|
|
||||||
>
|
|
||||||
</File>
|
|
||||||
<File
|
|
||||||
RelativePath="..\..\..\test\automated\surface\surface.h"
|
|
||||||
>
|
|
||||||
</File>
|
|
||||||
</Filter>
|
|
||||||
<Filter
|
|
||||||
Name="Resource Files"
|
|
||||||
Filter="rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav"
|
|
||||||
UniqueIdentifier="{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}"
|
|
||||||
>
|
|
||||||
</Filter>
|
|
||||||
</Files>
|
|
||||||
<Globals>
|
|
||||||
</Globals>
|
|
||||||
</VisualStudioProject>
|
|
|
@ -1,189 +0,0 @@
|
||||||
<?xml version="1.0" encoding="utf-8"?>
|
|
||||||
<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
|
||||||
<ItemGroup Label="ProjectConfigurations">
|
|
||||||
<ProjectConfiguration Include="Debug|Win32">
|
|
||||||
<Configuration>Debug</Configuration>
|
|
||||||
<Platform>Win32</Platform>
|
|
||||||
</ProjectConfiguration>
|
|
||||||
<ProjectConfiguration Include="Debug|x64">
|
|
||||||
<Configuration>Debug</Configuration>
|
|
||||||
<Platform>x64</Platform>
|
|
||||||
</ProjectConfiguration>
|
|
||||||
<ProjectConfiguration Include="Release|Win32">
|
|
||||||
<Configuration>Release</Configuration>
|
|
||||||
<Platform>Win32</Platform>
|
|
||||||
</ProjectConfiguration>
|
|
||||||
<ProjectConfiguration Include="Release|x64">
|
|
||||||
<Configuration>Release</Configuration>
|
|
||||||
<Platform>x64</Platform>
|
|
||||||
</ProjectConfiguration>
|
|
||||||
</ItemGroup>
|
|
||||||
<PropertyGroup Label="Globals">
|
|
||||||
<ProjectName>automated</ProjectName>
|
|
||||||
<ProjectGuid>{DDD710DB-EC7B-4CCB-BD75-535D401A2FE0}</ProjectGuid>
|
|
||||||
<RootNamespace>automated</RootNamespace>
|
|
||||||
<Keyword>Win32Proj</Keyword>
|
|
||||||
</PropertyGroup>
|
|
||||||
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
|
|
||||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
|
|
||||||
<ConfigurationType>Application</ConfigurationType>
|
|
||||||
<CharacterSet>Unicode</CharacterSet>
|
|
||||||
<WholeProgramOptimization>true</WholeProgramOptimization>
|
|
||||||
</PropertyGroup>
|
|
||||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
|
|
||||||
<ConfigurationType>Application</ConfigurationType>
|
|
||||||
<CharacterSet>Unicode</CharacterSet>
|
|
||||||
<WholeProgramOptimization>true</WholeProgramOptimization>
|
|
||||||
</PropertyGroup>
|
|
||||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
|
|
||||||
<ConfigurationType>Application</ConfigurationType>
|
|
||||||
<CharacterSet>Unicode</CharacterSet>
|
|
||||||
</PropertyGroup>
|
|
||||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
|
|
||||||
<ConfigurationType>Application</ConfigurationType>
|
|
||||||
<CharacterSet>MultiByte</CharacterSet>
|
|
||||||
</PropertyGroup>
|
|
||||||
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
|
|
||||||
<ImportGroup Label="ExtensionSettings">
|
|
||||||
</ImportGroup>
|
|
||||||
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
|
|
||||||
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
|
|
||||||
</ImportGroup>
|
|
||||||
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">
|
|
||||||
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
|
|
||||||
</ImportGroup>
|
|
||||||
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
|
|
||||||
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
|
|
||||||
</ImportGroup>
|
|
||||||
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">
|
|
||||||
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
|
|
||||||
</ImportGroup>
|
|
||||||
<PropertyGroup Label="UserMacros" />
|
|
||||||
<PropertyGroup>
|
|
||||||
<_ProjectFileVersion>10.0.30319.1</_ProjectFileVersion>
|
|
||||||
<OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(Platform)\$(Configuration)\</OutDir>
|
|
||||||
<OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(Platform)\$(Configuration)\</OutDir>
|
|
||||||
<IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(Platform)\$(Configuration)\</IntDir>
|
|
||||||
<IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(Platform)\$(Configuration)\</IntDir>
|
|
||||||
<LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</LinkIncremental>
|
|
||||||
<LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</LinkIncremental>
|
|
||||||
<OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(Platform)\$(Configuration)\</OutDir>
|
|
||||||
<OutDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(Platform)\$(Configuration)\</OutDir>
|
|
||||||
<IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(Platform)\$(Configuration)\</IntDir>
|
|
||||||
<IntDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(Platform)\$(Configuration)\</IntDir>
|
|
||||||
<LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</LinkIncremental>
|
|
||||||
<LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|x64'">false</LinkIncremental>
|
|
||||||
</PropertyGroup>
|
|
||||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
|
|
||||||
<ClCompile>
|
|
||||||
<Optimization>Disabled</Optimization>
|
|
||||||
<AdditionalIncludeDirectories>$(SolutionDir)..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
|
||||||
<PreprocessorDefinitions>WIN32;_DEBUG;_WINDOWS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
|
||||||
<MinimalRebuild>true</MinimalRebuild>
|
|
||||||
<BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
|
|
||||||
<RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
|
|
||||||
<PrecompiledHeader>
|
|
||||||
</PrecompiledHeader>
|
|
||||||
<WarningLevel>Level3</WarningLevel>
|
|
||||||
<DebugInformationFormat>EditAndContinue</DebugInformationFormat>
|
|
||||||
</ClCompile>
|
|
||||||
<Link>
|
|
||||||
<GenerateDebugInformation>true</GenerateDebugInformation>
|
|
||||||
<SubSystem>Windows</SubSystem>
|
|
||||||
<TargetMachine>MachineX86</TargetMachine>
|
|
||||||
</Link>
|
|
||||||
</ItemDefinitionGroup>
|
|
||||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
|
|
||||||
<ClCompile>
|
|
||||||
<Optimization>Disabled</Optimization>
|
|
||||||
<AdditionalIncludeDirectories>$(SolutionDir)..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
|
||||||
<PreprocessorDefinitions>WIN32;_DEBUG;_WINDOWS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
|
||||||
<BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
|
|
||||||
<RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
|
|
||||||
<PrecompiledHeader>
|
|
||||||
</PrecompiledHeader>
|
|
||||||
<WarningLevel>Level3</WarningLevel>
|
|
||||||
<DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
|
|
||||||
</ClCompile>
|
|
||||||
<Link>
|
|
||||||
<GenerateDebugInformation>true</GenerateDebugInformation>
|
|
||||||
<SubSystem>Windows</SubSystem>
|
|
||||||
</Link>
|
|
||||||
<PostBuildEvent>
|
|
||||||
<Command>copy "$(SolutionDir)\SDL\$(Platform)\$(Configuration)\SDL2.d.." "$(TargetDir)\SDL2.d.."</Command>
|
|
||||||
</PostBuildEvent>
|
|
||||||
<PostBuildEvent>
|
|
||||||
<Message>Copy SDL</Message>
|
|
||||||
</PostBuildEvent>
|
|
||||||
</ItemDefinitionGroup>
|
|
||||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
|
|
||||||
<ClCompile>
|
|
||||||
<Optimization>MaxSpeed</Optimization>
|
|
||||||
<IntrinsicFunctions>true</IntrinsicFunctions>
|
|
||||||
<AdditionalIncludeDirectories>$(SolutionDir)..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
|
||||||
<PreprocessorDefinitions>WIN32;NDEBUG;_WINDOWS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
|
||||||
<RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
|
|
||||||
<FunctionLevelLinking>true</FunctionLevelLinking>
|
|
||||||
<PrecompiledHeader>
|
|
||||||
</PrecompiledHeader>
|
|
||||||
<WarningLevel>Level3</WarningLevel>
|
|
||||||
<DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
|
|
||||||
</ClCompile>
|
|
||||||
<Link>
|
|
||||||
<GenerateDebugInformation>true</GenerateDebugInformation>
|
|
||||||
<SubSystem>Windows</SubSystem>
|
|
||||||
<OptimizeReferences>true</OptimizeReferences>
|
|
||||||
<EnableCOMDATFolding>true</EnableCOMDATFolding>
|
|
||||||
<TargetMachine>MachineX86</TargetMachine>
|
|
||||||
</Link>
|
|
||||||
</ItemDefinitionGroup>
|
|
||||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
|
|
||||||
<ClCompile>
|
|
||||||
<Optimization>MaxSpeed</Optimization>
|
|
||||||
<IntrinsicFunctions>true</IntrinsicFunctions>
|
|
||||||
<AdditionalIncludeDirectories>$(SolutionDir)..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
|
||||||
<PreprocessorDefinitions>WIN32;NDEBUG;_WINDOWS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
|
||||||
<RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
|
|
||||||
<FunctionLevelLinking>true</FunctionLevelLinking>
|
|
||||||
<PrecompiledHeader>
|
|
||||||
</PrecompiledHeader>
|
|
||||||
<WarningLevel>Level3</WarningLevel>
|
|
||||||
<DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
|
|
||||||
</ClCompile>
|
|
||||||
<Link>
|
|
||||||
<GenerateDebugInformation>true</GenerateDebugInformation>
|
|
||||||
<SubSystem>Windows</SubSystem>
|
|
||||||
<OptimizeReferences>true</OptimizeReferences>
|
|
||||||
<EnableCOMDATFolding>true</EnableCOMDATFolding>
|
|
||||||
</Link>
|
|
||||||
</ItemDefinitionGroup>
|
|
||||||
<ItemGroup>
|
|
||||||
<ClCompile Include="..\..\..\test\automated\audio\audio.c" />
|
|
||||||
<ClCompile Include="..\..\..\test\automated\common\common.c" />
|
|
||||||
<ClCompile Include="..\..\..\test\automated\platform\platform.c" />
|
|
||||||
<ClCompile Include="..\..\..\test\automated\rect\rect.c" />
|
|
||||||
<ClCompile Include="..\..\..\test\automated\render\render.c" />
|
|
||||||
<ClCompile Include="..\..\..\test\automated\rwops\rwops.c" />
|
|
||||||
<ClCompile Include="..\..\..\test\automated\rwops\TestSupportRWops_Generic.c" />
|
|
||||||
<ClCompile Include="..\..\..\test\automated\SDL_at.c" />
|
|
||||||
<ClCompile Include="..\..\..\test\automated\surface\surface.c" />
|
|
||||||
<ClCompile Include="..\..\..\test\automated\testsdl.c" />
|
|
||||||
</ItemGroup>
|
|
||||||
<ItemGroup>
|
|
||||||
<ClInclude Include="..\..\..\test\automated\audio\audio.h" />
|
|
||||||
<ClInclude Include="..\..\..\test\automated\common\common.h" />
|
|
||||||
<ClInclude Include="..\..\..\test\automated\common\images.h" />
|
|
||||||
<ClInclude Include="..\..\..\test\automated\platform\platform.h" />
|
|
||||||
<ClInclude Include="..\..\..\test\automated\render\render.h" />
|
|
||||||
<ClInclude Include="..\..\..\test\automated\rwops\rwops.h" />
|
|
||||||
<ClInclude Include="..\..\..\test\automated\SDL_at.h" />
|
|
||||||
<ClInclude Include="..\..\..\test\automated\surface\surface.h" />
|
|
||||||
</ItemGroup>
|
|
||||||
<ItemGroup>
|
|
||||||
<Library Include="..\..\Sdl\$(Platform)\$(Configuration)\SDL.lib" />
|
|
||||||
<Library Include="..\..\SDLmain\$(Platform)\$(Configuration)\SDLmain.lib" />
|
|
||||||
</ItemGroup>
|
|
||||||
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
|
|
||||||
<ImportGroup Label="ExtensionTargets">
|
|
||||||
</ImportGroup>
|
|
||||||
</Project>
|
|
|
@ -1,193 +0,0 @@
|
||||||
<?xml version="1.0" encoding="utf-8"?>
|
|
||||||
<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
|
||||||
<ItemGroup Label="ProjectConfigurations">
|
|
||||||
<ProjectConfiguration Include="Debug|Win32">
|
|
||||||
<Configuration>Debug</Configuration>
|
|
||||||
<Platform>Win32</Platform>
|
|
||||||
</ProjectConfiguration>
|
|
||||||
<ProjectConfiguration Include="Debug|x64">
|
|
||||||
<Configuration>Debug</Configuration>
|
|
||||||
<Platform>x64</Platform>
|
|
||||||
</ProjectConfiguration>
|
|
||||||
<ProjectConfiguration Include="Release|Win32">
|
|
||||||
<Configuration>Release</Configuration>
|
|
||||||
<Platform>Win32</Platform>
|
|
||||||
</ProjectConfiguration>
|
|
||||||
<ProjectConfiguration Include="Release|x64">
|
|
||||||
<Configuration>Release</Configuration>
|
|
||||||
<Platform>x64</Platform>
|
|
||||||
</ProjectConfiguration>
|
|
||||||
</ItemGroup>
|
|
||||||
<PropertyGroup Label="Globals">
|
|
||||||
<ProjectName>automated</ProjectName>
|
|
||||||
<ProjectGuid>{DDD710DB-EC7B-4CCB-BD75-535D401A2FE0}</ProjectGuid>
|
|
||||||
<RootNamespace>automated</RootNamespace>
|
|
||||||
<Keyword>Win32Proj</Keyword>
|
|
||||||
</PropertyGroup>
|
|
||||||
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
|
|
||||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
|
|
||||||
<ConfigurationType>Application</ConfigurationType>
|
|
||||||
<CharacterSet>Unicode</CharacterSet>
|
|
||||||
<WholeProgramOptimization>true</WholeProgramOptimization>
|
|
||||||
<PlatformToolset>v110</PlatformToolset>
|
|
||||||
</PropertyGroup>
|
|
||||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
|
|
||||||
<ConfigurationType>Application</ConfigurationType>
|
|
||||||
<CharacterSet>Unicode</CharacterSet>
|
|
||||||
<WholeProgramOptimization>true</WholeProgramOptimization>
|
|
||||||
<PlatformToolset>v110</PlatformToolset>
|
|
||||||
</PropertyGroup>
|
|
||||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
|
|
||||||
<ConfigurationType>Application</ConfigurationType>
|
|
||||||
<CharacterSet>Unicode</CharacterSet>
|
|
||||||
<PlatformToolset>v110</PlatformToolset>
|
|
||||||
</PropertyGroup>
|
|
||||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
|
|
||||||
<ConfigurationType>Application</ConfigurationType>
|
|
||||||
<CharacterSet>MultiByte</CharacterSet>
|
|
||||||
<PlatformToolset>v110</PlatformToolset>
|
|
||||||
</PropertyGroup>
|
|
||||||
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
|
|
||||||
<ImportGroup Label="ExtensionSettings">
|
|
||||||
</ImportGroup>
|
|
||||||
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
|
|
||||||
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
|
|
||||||
</ImportGroup>
|
|
||||||
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">
|
|
||||||
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
|
|
||||||
</ImportGroup>
|
|
||||||
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
|
|
||||||
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
|
|
||||||
</ImportGroup>
|
|
||||||
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">
|
|
||||||
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
|
|
||||||
</ImportGroup>
|
|
||||||
<PropertyGroup Label="UserMacros" />
|
|
||||||
<PropertyGroup>
|
|
||||||
<_ProjectFileVersion>10.0.30319.1</_ProjectFileVersion>
|
|
||||||
<OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(Platform)\$(Configuration)\</OutDir>
|
|
||||||
<OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(Platform)\$(Configuration)\</OutDir>
|
|
||||||
<IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(Platform)\$(Configuration)\</IntDir>
|
|
||||||
<IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(Platform)\$(Configuration)\</IntDir>
|
|
||||||
<LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</LinkIncremental>
|
|
||||||
<LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</LinkIncremental>
|
|
||||||
<OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(Platform)\$(Configuration)\</OutDir>
|
|
||||||
<OutDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(Platform)\$(Configuration)\</OutDir>
|
|
||||||
<IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(Platform)\$(Configuration)\</IntDir>
|
|
||||||
<IntDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(Platform)\$(Configuration)\</IntDir>
|
|
||||||
<LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</LinkIncremental>
|
|
||||||
<LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|x64'">false</LinkIncremental>
|
|
||||||
</PropertyGroup>
|
|
||||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
|
|
||||||
<ClCompile>
|
|
||||||
<Optimization>Disabled</Optimization>
|
|
||||||
<AdditionalIncludeDirectories>$(SolutionDir)..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
|
||||||
<PreprocessorDefinitions>WIN32;_DEBUG;_WINDOWS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
|
||||||
<MinimalRebuild>true</MinimalRebuild>
|
|
||||||
<BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
|
|
||||||
<RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
|
|
||||||
<PrecompiledHeader>
|
|
||||||
</PrecompiledHeader>
|
|
||||||
<WarningLevel>Level3</WarningLevel>
|
|
||||||
<DebugInformationFormat>EditAndContinue</DebugInformationFormat>
|
|
||||||
</ClCompile>
|
|
||||||
<Link>
|
|
||||||
<GenerateDebugInformation>true</GenerateDebugInformation>
|
|
||||||
<SubSystem>Windows</SubSystem>
|
|
||||||
<TargetMachine>MachineX86</TargetMachine>
|
|
||||||
</Link>
|
|
||||||
</ItemDefinitionGroup>
|
|
||||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
|
|
||||||
<ClCompile>
|
|
||||||
<Optimization>Disabled</Optimization>
|
|
||||||
<AdditionalIncludeDirectories>$(SolutionDir)..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
|
||||||
<PreprocessorDefinitions>WIN32;_DEBUG;_WINDOWS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
|
||||||
<BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
|
|
||||||
<RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
|
|
||||||
<PrecompiledHeader>
|
|
||||||
</PrecompiledHeader>
|
|
||||||
<WarningLevel>Level3</WarningLevel>
|
|
||||||
<DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
|
|
||||||
</ClCompile>
|
|
||||||
<Link>
|
|
||||||
<GenerateDebugInformation>true</GenerateDebugInformation>
|
|
||||||
<SubSystem>Windows</SubSystem>
|
|
||||||
</Link>
|
|
||||||
<PostBuildEvent>
|
|
||||||
<Command>copy "$(SolutionDir)\SDL\$(Platform)\$(Configuration)\SDL.dll" "$(TargetDir)\SDL.dll"</Command>
|
|
||||||
</PostBuildEvent>
|
|
||||||
<PostBuildEvent>
|
|
||||||
<Message>Copy SDL</Message>
|
|
||||||
</PostBuildEvent>
|
|
||||||
</ItemDefinitionGroup>
|
|
||||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
|
|
||||||
<ClCompile>
|
|
||||||
<Optimization>MaxSpeed</Optimization>
|
|
||||||
<IntrinsicFunctions>true</IntrinsicFunctions>
|
|
||||||
<AdditionalIncludeDirectories>$(SolutionDir)..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
|
||||||
<PreprocessorDefinitions>WIN32;NDEBUG;_WINDOWS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
|
||||||
<RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
|
|
||||||
<FunctionLevelLinking>true</FunctionLevelLinking>
|
|
||||||
<PrecompiledHeader>
|
|
||||||
</PrecompiledHeader>
|
|
||||||
<WarningLevel>Level3</WarningLevel>
|
|
||||||
<DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
|
|
||||||
</ClCompile>
|
|
||||||
<Link>
|
|
||||||
<GenerateDebugInformation>true</GenerateDebugInformation>
|
|
||||||
<SubSystem>Windows</SubSystem>
|
|
||||||
<OptimizeReferences>true</OptimizeReferences>
|
|
||||||
<EnableCOMDATFolding>true</EnableCOMDATFolding>
|
|
||||||
<TargetMachine>MachineX86</TargetMachine>
|
|
||||||
</Link>
|
|
||||||
</ItemDefinitionGroup>
|
|
||||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
|
|
||||||
<ClCompile>
|
|
||||||
<Optimization>MaxSpeed</Optimization>
|
|
||||||
<IntrinsicFunctions>true</IntrinsicFunctions>
|
|
||||||
<AdditionalIncludeDirectories>$(SolutionDir)..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
|
||||||
<PreprocessorDefinitions>WIN32;NDEBUG;_WINDOWS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
|
||||||
<RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
|
|
||||||
<FunctionLevelLinking>true</FunctionLevelLinking>
|
|
||||||
<PrecompiledHeader>
|
|
||||||
</PrecompiledHeader>
|
|
||||||
<WarningLevel>Level3</WarningLevel>
|
|
||||||
<DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
|
|
||||||
</ClCompile>
|
|
||||||
<Link>
|
|
||||||
<GenerateDebugInformation>true</GenerateDebugInformation>
|
|
||||||
<SubSystem>Windows</SubSystem>
|
|
||||||
<OptimizeReferences>true</OptimizeReferences>
|
|
||||||
<EnableCOMDATFolding>true</EnableCOMDATFolding>
|
|
||||||
</Link>
|
|
||||||
</ItemDefinitionGroup>
|
|
||||||
<ItemGroup>
|
|
||||||
<ClCompile Include="..\..\..\test\automated\audio\audio.c" />
|
|
||||||
<ClCompile Include="..\..\..\test\automated\common\common.c" />
|
|
||||||
<ClCompile Include="..\..\..\test\automated\platform\platform.c" />
|
|
||||||
<ClCompile Include="..\..\..\test\automated\rect\rect.c" />
|
|
||||||
<ClCompile Include="..\..\..\test\automated\render\render.c" />
|
|
||||||
<ClCompile Include="..\..\..\test\automated\rwops\rwops.c" />
|
|
||||||
<ClCompile Include="..\..\..\test\automated\rwops\TestSupportRWops_Generic.c" />
|
|
||||||
<ClCompile Include="..\..\..\test\automated\SDL_at.c" />
|
|
||||||
<ClCompile Include="..\..\..\test\automated\surface\surface.c" />
|
|
||||||
<ClCompile Include="..\..\..\test\automated\testsdl.c" />
|
|
||||||
</ItemGroup>
|
|
||||||
<ItemGroup>
|
|
||||||
<ClInclude Include="..\..\..\test\automated\audio\audio.h" />
|
|
||||||
<ClInclude Include="..\..\..\test\automated\common\common.h" />
|
|
||||||
<ClInclude Include="..\..\..\test\automated\common\images.h" />
|
|
||||||
<ClInclude Include="..\..\..\test\automated\platform\platform.h" />
|
|
||||||
<ClInclude Include="..\..\..\test\automated\render\render.h" />
|
|
||||||
<ClInclude Include="..\..\..\test\automated\rwops\rwops.h" />
|
|
||||||
<ClInclude Include="..\..\..\test\automated\SDL_at.h" />
|
|
||||||
<ClInclude Include="..\..\..\test\automated\surface\surface.h" />
|
|
||||||
</ItemGroup>
|
|
||||||
<ItemGroup>
|
|
||||||
<Library Include="..\..\Sdl\$(Platform)\$(Configuration)\SDL.lib" />
|
|
||||||
<Library Include="..\..\SDLmain\$(Platform)\$(Configuration)\SDLmain.lib" />
|
|
||||||
</ItemGroup>
|
|
||||||
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
|
|
||||||
<ImportGroup Label="ExtensionTargets">
|
|
||||||
</ImportGroup>
|
|
||||||
</Project>
|
|
|
@ -280,7 +280,6 @@
|
||||||
006E983B119550FB001DE610 /* img_primitivesblend.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = img_primitivesblend.c; sourceTree = "<group>"; };
|
006E983B119550FB001DE610 /* img_primitivesblend.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = img_primitivesblend.c; sourceTree = "<group>"; };
|
||||||
006E983D119550FB001DE610 /* platform.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = platform.c; sourceTree = "<group>"; };
|
006E983D119550FB001DE610 /* platform.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = platform.c; sourceTree = "<group>"; };
|
||||||
006E983E119550FB001DE610 /* platform.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = platform.h; sourceTree = "<group>"; };
|
006E983E119550FB001DE610 /* platform.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = platform.h; sourceTree = "<group>"; };
|
||||||
006E983F119550FB001DE610 /* README */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; name = README; path = ../../test/automated/README; sourceTree = SOURCE_ROOT; };
|
|
||||||
006E9841119550FB001DE610 /* rect.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = rect.c; sourceTree = "<group>"; };
|
006E9841119550FB001DE610 /* rect.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = rect.c; sourceTree = "<group>"; };
|
||||||
006E9842119550FB001DE610 /* rect.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = rect.h; sourceTree = "<group>"; };
|
006E9842119550FB001DE610 /* rect.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = rect.h; sourceTree = "<group>"; };
|
||||||
006E9844119550FB001DE610 /* render.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = render.c; sourceTree = "<group>"; };
|
006E9844119550FB001DE610 /* render.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = render.c; sourceTree = "<group>"; };
|
||||||
|
@ -288,11 +287,8 @@
|
||||||
006E9847119550FB001DE610 /* read */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = read; sourceTree = "<group>"; };
|
006E9847119550FB001DE610 /* read */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = read; sourceTree = "<group>"; };
|
||||||
006E9848119550FB001DE610 /* rwops.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = rwops.c; sourceTree = "<group>"; };
|
006E9848119550FB001DE610 /* rwops.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = rwops.c; sourceTree = "<group>"; };
|
||||||
006E9849119550FB001DE610 /* rwops.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = rwops.h; sourceTree = "<group>"; };
|
006E9849119550FB001DE610 /* rwops.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = rwops.h; sourceTree = "<group>"; };
|
||||||
006E984C119550FB001DE610 /* SDL_at.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = SDL_at.c; path = ../../test/automated/SDL_at.c; sourceTree = SOURCE_ROOT; };
|
|
||||||
006E984D119550FB001DE610 /* SDL_at.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SDL_at.h; path = ../../test/automated/SDL_at.h; sourceTree = SOURCE_ROOT; };
|
|
||||||
006E984F119550FB001DE610 /* surface.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = surface.c; sourceTree = "<group>"; };
|
006E984F119550FB001DE610 /* surface.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = surface.c; sourceTree = "<group>"; };
|
||||||
006E9850119550FB001DE610 /* surface.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = surface.h; sourceTree = "<group>"; };
|
006E9850119550FB001DE610 /* surface.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = surface.h; sourceTree = "<group>"; };
|
||||||
006E9851119550FB001DE610 /* testsdl.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = testsdl.c; path = ../../test/automated/testsdl.c; sourceTree = SOURCE_ROOT; };
|
|
||||||
006E98631195513D001DE610 /* icon.bmp */ = {isa = PBXFileReference; lastKnownFileType = image.bmp; name = icon.bmp; path = ../../test/icon.bmp; sourceTree = SOURCE_ROOT; };
|
006E98631195513D001DE610 /* icon.bmp */ = {isa = PBXFileReference; lastKnownFileType = image.bmp; name = icon.bmp; path = ../../test/icon.bmp; sourceTree = SOURCE_ROOT; };
|
||||||
006E98641195513D001DE610 /* moose.dat */ = {isa = PBXFileReference; lastKnownFileType = file; name = moose.dat; path = ../../test/moose.dat; sourceTree = SOURCE_ROOT; };
|
006E98641195513D001DE610 /* moose.dat */ = {isa = PBXFileReference; lastKnownFileType = file; name = moose.dat; path = ../../test/moose.dat; sourceTree = SOURCE_ROOT; };
|
||||||
006E98651195513D001DE610 /* picture.xbm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; name = picture.xbm; path = ../../test/picture.xbm; sourceTree = SOURCE_ROOT; };
|
006E98651195513D001DE610 /* picture.xbm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; name = picture.xbm; path = ../../test/picture.xbm; sourceTree = SOURCE_ROOT; };
|
||||||
|
@ -541,24 +537,6 @@
|
||||||
/* End PBXFrameworksBuildPhase section */
|
/* End PBXFrameworksBuildPhase section */
|
||||||
|
|
||||||
/* Begin PBXGroup section */
|
/* Begin PBXGroup section */
|
||||||
006E982E119550D8001DE610 /* AutomatedTests */ = {
|
|
||||||
isa = PBXGroup;
|
|
||||||
children = (
|
|
||||||
006E9830119550FB001DE610 /* audio */,
|
|
||||||
006E9833119550FB001DE610 /* common */,
|
|
||||||
006E983C119550FB001DE610 /* platform */,
|
|
||||||
006E983F119550FB001DE610 /* README */,
|
|
||||||
006E9840119550FB001DE610 /* rect */,
|
|
||||||
006E9843119550FB001DE610 /* render */,
|
|
||||||
006E9846119550FB001DE610 /* rwops */,
|
|
||||||
006E984C119550FB001DE610 /* SDL_at.c */,
|
|
||||||
006E984D119550FB001DE610 /* SDL_at.h */,
|
|
||||||
006E984E119550FB001DE610 /* surface */,
|
|
||||||
006E9851119550FB001DE610 /* testsdl.c */,
|
|
||||||
);
|
|
||||||
name = AutomatedTests;
|
|
||||||
sourceTree = "<group>";
|
|
||||||
};
|
|
||||||
006E982F119550E4001DE610 /* TestResources */ = {
|
006E982F119550E4001DE610 /* TestResources */ = {
|
||||||
isa = PBXGroup;
|
isa = PBXGroup;
|
||||||
children = (
|
children = (
|
||||||
|
@ -572,85 +550,6 @@
|
||||||
name = TestResources;
|
name = TestResources;
|
||||||
sourceTree = "<group>";
|
sourceTree = "<group>";
|
||||||
};
|
};
|
||||||
006E9830119550FB001DE610 /* audio */ = {
|
|
||||||
isa = PBXGroup;
|
|
||||||
children = (
|
|
||||||
006E9831119550FB001DE610 /* audio.c */,
|
|
||||||
006E9832119550FB001DE610 /* audio.h */,
|
|
||||||
);
|
|
||||||
name = audio;
|
|
||||||
path = ../../test/automated/audio;
|
|
||||||
sourceTree = SOURCE_ROOT;
|
|
||||||
};
|
|
||||||
006E9833119550FB001DE610 /* common */ = {
|
|
||||||
isa = PBXGroup;
|
|
||||||
children = (
|
|
||||||
006E9834119550FB001DE610 /* common.c */,
|
|
||||||
006E9835119550FB001DE610 /* common.h */,
|
|
||||||
006E9836119550FB001DE610 /* images.h */,
|
|
||||||
006E9837119550FB001DE610 /* img_blit.c */,
|
|
||||||
006E9838119550FB001DE610 /* img_blitblend.c */,
|
|
||||||
006E9839119550FB001DE610 /* img_face.c */,
|
|
||||||
006E983A119550FB001DE610 /* img_primitives.c */,
|
|
||||||
006E983B119550FB001DE610 /* img_primitivesblend.c */,
|
|
||||||
);
|
|
||||||
name = common;
|
|
||||||
path = ../../test/automated/common;
|
|
||||||
sourceTree = SOURCE_ROOT;
|
|
||||||
};
|
|
||||||
006E983C119550FB001DE610 /* platform */ = {
|
|
||||||
isa = PBXGroup;
|
|
||||||
children = (
|
|
||||||
006E983D119550FB001DE610 /* platform.c */,
|
|
||||||
006E983E119550FB001DE610 /* platform.h */,
|
|
||||||
);
|
|
||||||
name = platform;
|
|
||||||
path = ../../test/automated/platform;
|
|
||||||
sourceTree = SOURCE_ROOT;
|
|
||||||
};
|
|
||||||
006E9840119550FB001DE610 /* rect */ = {
|
|
||||||
isa = PBXGroup;
|
|
||||||
children = (
|
|
||||||
006E9841119550FB001DE610 /* rect.c */,
|
|
||||||
006E9842119550FB001DE610 /* rect.h */,
|
|
||||||
);
|
|
||||||
name = rect;
|
|
||||||
path = ../../test/automated/rect;
|
|
||||||
sourceTree = SOURCE_ROOT;
|
|
||||||
};
|
|
||||||
006E9843119550FB001DE610 /* render */ = {
|
|
||||||
isa = PBXGroup;
|
|
||||||
children = (
|
|
||||||
006E9844119550FB001DE610 /* render.c */,
|
|
||||||
006E9845119550FB001DE610 /* render.h */,
|
|
||||||
);
|
|
||||||
name = render;
|
|
||||||
path = ../../test/automated/render;
|
|
||||||
sourceTree = SOURCE_ROOT;
|
|
||||||
};
|
|
||||||
006E9846119550FB001DE610 /* rwops */ = {
|
|
||||||
isa = PBXGroup;
|
|
||||||
children = (
|
|
||||||
001E39A51196EE6F00A3F5B8 /* TestSupportRWops_Cocoa.m */,
|
|
||||||
001E39A61196EE6F00A3F5B8 /* TestSupportRWops.h */,
|
|
||||||
006E9847119550FB001DE610 /* read */,
|
|
||||||
006E9848119550FB001DE610 /* rwops.c */,
|
|
||||||
006E9849119550FB001DE610 /* rwops.h */,
|
|
||||||
);
|
|
||||||
name = rwops;
|
|
||||||
path = ../../test/automated/rwops;
|
|
||||||
sourceTree = SOURCE_ROOT;
|
|
||||||
};
|
|
||||||
006E984E119550FB001DE610 /* surface */ = {
|
|
||||||
isa = PBXGroup;
|
|
||||||
children = (
|
|
||||||
006E984F119550FB001DE610 /* surface.c */,
|
|
||||||
006E9850119550FB001DE610 /* surface.h */,
|
|
||||||
);
|
|
||||||
name = surface;
|
|
||||||
path = ../../test/automated/surface;
|
|
||||||
sourceTree = SOURCE_ROOT;
|
|
||||||
};
|
|
||||||
006E9885119552DD001DE610 /* cocoa */ = {
|
006E9885119552DD001DE610 /* cocoa */ = {
|
||||||
isa = PBXGroup;
|
isa = PBXGroup;
|
||||||
children = (
|
children = (
|
||||||
|
@ -768,7 +667,6 @@
|
||||||
children = (
|
children = (
|
||||||
FD99B8BC0DD52E5C00FB1D6B /* Public Headers */,
|
FD99B8BC0DD52E5C00FB1D6B /* Public Headers */,
|
||||||
FD99B8BD0DD52E6D00FB1D6B /* Library Source */,
|
FD99B8BD0DD52E6D00FB1D6B /* Library Source */,
|
||||||
006E982E119550D8001DE610 /* AutomatedTests */,
|
|
||||||
006E982F119550E4001DE610 /* TestResources */,
|
006E982F119550E4001DE610 /* TestResources */,
|
||||||
29B97323FDCFA39411CA2CEA /* Frameworks */,
|
29B97323FDCFA39411CA2CEA /* Frameworks */,
|
||||||
19C28FACFE9D520D11CA2CBB /* Products */,
|
19C28FACFE9D520D11CA2CBB /* Products */,
|
||||||
|
|
|
@ -635,7 +635,6 @@
|
||||||
00D8DA061195093100638393 /* img_primitivesblend.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = img_primitivesblend.c; sourceTree = "<group>"; };
|
00D8DA061195093100638393 /* img_primitivesblend.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = img_primitivesblend.c; sourceTree = "<group>"; };
|
||||||
00D8DA081195093100638393 /* platform.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = platform.c; sourceTree = "<group>"; };
|
00D8DA081195093100638393 /* platform.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = platform.c; sourceTree = "<group>"; };
|
||||||
00D8DA091195093100638393 /* platform.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = platform.h; sourceTree = "<group>"; };
|
00D8DA091195093100638393 /* platform.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = platform.h; sourceTree = "<group>"; };
|
||||||
00D8DA0A1195093100638393 /* README */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; name = README; path = ../../test/automated/README; sourceTree = SOURCE_ROOT; };
|
|
||||||
00D8DA0C1195093100638393 /* rect.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = rect.c; sourceTree = "<group>"; };
|
00D8DA0C1195093100638393 /* rect.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = rect.c; sourceTree = "<group>"; };
|
||||||
00D8DA0D1195093100638393 /* rect.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = rect.h; sourceTree = "<group>"; };
|
00D8DA0D1195093100638393 /* rect.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = rect.h; sourceTree = "<group>"; };
|
||||||
00D8DA0F1195093100638393 /* render.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = render.c; sourceTree = "<group>"; };
|
00D8DA0F1195093100638393 /* render.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = render.c; sourceTree = "<group>"; };
|
||||||
|
@ -643,11 +642,8 @@
|
||||||
00D8DA121195093100638393 /* read */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = read; sourceTree = "<group>"; };
|
00D8DA121195093100638393 /* read */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = read; sourceTree = "<group>"; };
|
||||||
00D8DA131195093100638393 /* rwops.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = rwops.c; sourceTree = "<group>"; };
|
00D8DA131195093100638393 /* rwops.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = rwops.c; sourceTree = "<group>"; };
|
||||||
00D8DA141195093100638393 /* rwops.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = rwops.h; sourceTree = "<group>"; };
|
00D8DA141195093100638393 /* rwops.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = rwops.h; sourceTree = "<group>"; };
|
||||||
00D8DA151195093100638393 /* SDL_at.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = SDL_at.c; path = ../../test/automated/SDL_at.c; sourceTree = SOURCE_ROOT; };
|
|
||||||
00D8DA161195093100638393 /* SDL_at.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SDL_at.h; path = ../../test/automated/SDL_at.h; sourceTree = SOURCE_ROOT; };
|
|
||||||
00D8DA181195093100638393 /* surface.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = surface.c; sourceTree = "<group>"; };
|
00D8DA181195093100638393 /* surface.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = surface.c; sourceTree = "<group>"; };
|
||||||
00D8DA191195093100638393 /* surface.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = surface.h; sourceTree = "<group>"; };
|
00D8DA191195093100638393 /* surface.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = surface.h; sourceTree = "<group>"; };
|
||||||
00D8DA1A1195093100638393 /* testsdl.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = testsdl.c; path = ../../test/automated/testsdl.c; sourceTree = SOURCE_ROOT; };
|
|
||||||
00F5D79E0990CA0D0051C449 /* UniversalBinaryNotes.rtf */ = {isa = PBXFileReference; lastKnownFileType = text.rtf; path = UniversalBinaryNotes.rtf; sourceTree = "<group>"; };
|
00F5D79E0990CA0D0051C449 /* UniversalBinaryNotes.rtf */ = {isa = PBXFileReference; lastKnownFileType = text.rtf; path = UniversalBinaryNotes.rtf; sourceTree = "<group>"; };
|
||||||
04043BBA12FEB1BE0076DB1F /* SDL_glfuncs.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SDL_glfuncs.h; sourceTree = "<group>"; };
|
04043BBA12FEB1BE0076DB1F /* SDL_glfuncs.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SDL_glfuncs.h; sourceTree = "<group>"; };
|
||||||
041B2C9E12FA0D680087D585 /* SDL_render.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = SDL_render.c; sourceTree = "<group>"; };
|
041B2C9E12FA0D680087D585 /* SDL_render.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = SDL_render.c; sourceTree = "<group>"; };
|
||||||
|
@ -968,103 +964,6 @@
|
||||||
name = TestResources;
|
name = TestResources;
|
||||||
sourceTree = "<group>";
|
sourceTree = "<group>";
|
||||||
};
|
};
|
||||||
00D8D9FA1195091500638393 /* AutomatedTests */ = {
|
|
||||||
isa = PBXGroup;
|
|
||||||
children = (
|
|
||||||
00D8D9FB1195093100638393 /* audio */,
|
|
||||||
00D8D9FE1195093100638393 /* common */,
|
|
||||||
00D8DA071195093100638393 /* platform */,
|
|
||||||
00D8DA0A1195093100638393 /* README */,
|
|
||||||
00D8DA0B1195093100638393 /* rect */,
|
|
||||||
00D8DA0E1195093100638393 /* render */,
|
|
||||||
00D8DA111195093100638393 /* rwops */,
|
|
||||||
00D8DA151195093100638393 /* SDL_at.c */,
|
|
||||||
00D8DA161195093100638393 /* SDL_at.h */,
|
|
||||||
00D8DA171195093100638393 /* surface */,
|
|
||||||
00D8DA1A1195093100638393 /* testsdl.c */,
|
|
||||||
);
|
|
||||||
name = AutomatedTests;
|
|
||||||
sourceTree = "<group>";
|
|
||||||
};
|
|
||||||
00D8D9FB1195093100638393 /* audio */ = {
|
|
||||||
isa = PBXGroup;
|
|
||||||
children = (
|
|
||||||
00D8D9FC1195093100638393 /* audio.c */,
|
|
||||||
00D8D9FD1195093100638393 /* audio.h */,
|
|
||||||
);
|
|
||||||
name = audio;
|
|
||||||
path = ../../test/automated/audio;
|
|
||||||
sourceTree = SOURCE_ROOT;
|
|
||||||
};
|
|
||||||
00D8D9FE1195093100638393 /* common */ = {
|
|
||||||
isa = PBXGroup;
|
|
||||||
children = (
|
|
||||||
00D8D9FF1195093100638393 /* common.c */,
|
|
||||||
00D8DA001195093100638393 /* common.h */,
|
|
||||||
00D8DA011195093100638393 /* images.h */,
|
|
||||||
00D8DA021195093100638393 /* img_blit.c */,
|
|
||||||
00D8DA031195093100638393 /* img_blitblend.c */,
|
|
||||||
00D8DA041195093100638393 /* img_face.c */,
|
|
||||||
00D8DA051195093100638393 /* img_primitives.c */,
|
|
||||||
00D8DA061195093100638393 /* img_primitivesblend.c */,
|
|
||||||
);
|
|
||||||
name = common;
|
|
||||||
path = ../../test/automated/common;
|
|
||||||
sourceTree = SOURCE_ROOT;
|
|
||||||
};
|
|
||||||
00D8DA071195093100638393 /* platform */ = {
|
|
||||||
isa = PBXGroup;
|
|
||||||
children = (
|
|
||||||
00D8DA081195093100638393 /* platform.c */,
|
|
||||||
00D8DA091195093100638393 /* platform.h */,
|
|
||||||
);
|
|
||||||
name = platform;
|
|
||||||
path = ../../test/automated/platform;
|
|
||||||
sourceTree = SOURCE_ROOT;
|
|
||||||
};
|
|
||||||
00D8DA0B1195093100638393 /* rect */ = {
|
|
||||||
isa = PBXGroup;
|
|
||||||
children = (
|
|
||||||
00D8DA0C1195093100638393 /* rect.c */,
|
|
||||||
00D8DA0D1195093100638393 /* rect.h */,
|
|
||||||
);
|
|
||||||
name = rect;
|
|
||||||
path = ../../test/automated/rect;
|
|
||||||
sourceTree = SOURCE_ROOT;
|
|
||||||
};
|
|
||||||
00D8DA0E1195093100638393 /* render */ = {
|
|
||||||
isa = PBXGroup;
|
|
||||||
children = (
|
|
||||||
00D8DA0F1195093100638393 /* render.c */,
|
|
||||||
00D8DA101195093100638393 /* render.h */,
|
|
||||||
);
|
|
||||||
name = render;
|
|
||||||
path = ../../test/automated/render;
|
|
||||||
sourceTree = SOURCE_ROOT;
|
|
||||||
};
|
|
||||||
00D8DA111195093100638393 /* rwops */ = {
|
|
||||||
isa = PBXGroup;
|
|
||||||
children = (
|
|
||||||
001E39EC1196F75000A3F5B8 /* TestSupportRWops_Cocoa.m */,
|
|
||||||
001E39ED1196F75000A3F5B8 /* TestSupportRWops.h */,
|
|
||||||
00D8DA121195093100638393 /* read */,
|
|
||||||
00D8DA131195093100638393 /* rwops.c */,
|
|
||||||
00D8DA141195093100638393 /* rwops.h */,
|
|
||||||
);
|
|
||||||
name = rwops;
|
|
||||||
path = ../../test/automated/rwops;
|
|
||||||
sourceTree = SOURCE_ROOT;
|
|
||||||
};
|
|
||||||
00D8DA171195093100638393 /* surface */ = {
|
|
||||||
isa = PBXGroup;
|
|
||||||
children = (
|
|
||||||
00D8DA181195093100638393 /* surface.c */,
|
|
||||||
00D8DA191195093100638393 /* surface.h */,
|
|
||||||
);
|
|
||||||
name = surface;
|
|
||||||
path = ../../test/automated/surface;
|
|
||||||
sourceTree = SOURCE_ROOT;
|
|
||||||
};
|
|
||||||
0153844A006D81B07F000001 /* Public Headers */ = {
|
0153844A006D81B07F000001 /* Public Headers */ = {
|
||||||
isa = PBXGroup;
|
isa = PBXGroup;
|
||||||
children = (
|
children = (
|
||||||
|
@ -1565,7 +1464,6 @@
|
||||||
F59C70FC00D5CB5801000001 /* pkg-support */,
|
F59C70FC00D5CB5801000001 /* pkg-support */,
|
||||||
0153844A006D81B07F000001 /* Public Headers */,
|
0153844A006D81B07F000001 /* Public Headers */,
|
||||||
08FB77ACFE841707C02AAC07 /* Library Source */,
|
08FB77ACFE841707C02AAC07 /* Library Source */,
|
||||||
00D8D9FA1195091500638393 /* AutomatedTests */,
|
|
||||||
006E949B11951160001DE610 /* TestResources */,
|
006E949B11951160001DE610 /* TestResources */,
|
||||||
034768DDFF38A45A11DB9C8B /* Products */,
|
034768DDFF38A45A11DB9C8B /* Products */,
|
||||||
BECDF66B0761BA81005FE872 /* Info-Framework.plist */,
|
BECDF66B0761BA81005FE872 /* Info-Framework.plist */,
|
||||||
|
|
20
debian/copyright
vendored
20
debian/copyright
vendored
|
@ -49,22 +49,6 @@ Files: src/video/x11/imKStoUCS.c
|
||||||
Copyright: 1994-2003 The XFree86 Project, Inc.
|
Copyright: 1994-2003 The XFree86 Project, Inc.
|
||||||
License: MIT/X11
|
License: MIT/X11
|
||||||
|
|
||||||
Files: test/test-automation/*
|
|
||||||
Copyright: 2011 Markus Kauppila <markus.kauppila@gmail.com>
|
|
||||||
License: zlib/libpng
|
|
||||||
|
|
||||||
Files: test/automated/*
|
|
||||||
test/test-automation/src/libSDLtest/common/*
|
|
||||||
Copyright: Edgar Simo "bobbens"
|
|
||||||
License: PublicDomain_Edgar_Simo
|
|
||||||
|
|
||||||
Files: test/automated/common/im*
|
|
||||||
Copyright: none
|
|
||||||
License: zlib/libpng
|
|
||||||
Comment:
|
|
||||||
Auto-generated code from images, no specific information about the original
|
|
||||||
image
|
|
||||||
|
|
||||||
Files: test/testhaptic.c
|
Files: test/testhaptic.c
|
||||||
Copyright: 1997-2011 Sam Lantinga <slouken@libsdl.org>
|
Copyright: 1997-2011 Sam Lantinga <slouken@libsdl.org>
|
||||||
2008 Edgar Simo Serra
|
2008 Edgar Simo Serra
|
||||||
|
@ -75,10 +59,6 @@ Copyright: 1997-2011 Sam Lantinga <slouken@libsdl.org>
|
||||||
2011 Edgar Simo Serra
|
2011 Edgar Simo Serra
|
||||||
License: BSD_3_clause
|
License: BSD_3_clause
|
||||||
|
|
||||||
Files: test/test-automation/src/libSDLtest/fuzzer/utl_md5.*
|
|
||||||
Copyright: 1990-1991 RSA Data Security, Inc.
|
|
||||||
License: RSA_Data_Security
|
|
||||||
|
|
||||||
Files: test/shapes/*
|
Files: test/shapes/*
|
||||||
Copyright: none
|
Copyright: none
|
||||||
License: zlib/libpng
|
License: zlib/libpng
|
||||||
|
|
|
@ -1,60 +0,0 @@
|
||||||
|
|
||||||
|
|
||||||
CFLAGS := -W -Wall -Wextra -g `sdl2-config --prefix=/usr/local --cflags` -DSDL_NO_COMPAT
|
|
||||||
LDFLAGS := `sdl2-config --prefix=/usr/local --libs`
|
|
||||||
|
|
||||||
# If it doesn't pick up defaults
|
|
||||||
#CFLAGS := -D_GNU_SOURCE=1 -D_REENTRANT -I/usr/local/include/SDL2
|
|
||||||
#LDFLAGS := -lm -ldl -lesd -lpthread
|
|
||||||
|
|
||||||
SRC := testsdl.c \
|
|
||||||
platform/platform.c \
|
|
||||||
rect/rect.c \
|
|
||||||
surface/surface.c \
|
|
||||||
render/render.c \
|
|
||||||
audio/audio.c
|
|
||||||
COMMON_SRC := SDL_at.c common/common.c
|
|
||||||
COMMON_INCLUDE := SDL_at.h
|
|
||||||
|
|
||||||
RWOPS_SRC := rwops/rwops.c rwops/TestSupportRWops_Generic.c
|
|
||||||
|
|
||||||
TESTS_ALL := testsdl \
|
|
||||||
platform/platform \
|
|
||||||
rwops/rwops \
|
|
||||||
rect/rect \
|
|
||||||
surface/surface \
|
|
||||||
render/render \
|
|
||||||
audio/audio
|
|
||||||
|
|
||||||
|
|
||||||
.PHONY: all clean test
|
|
||||||
|
|
||||||
|
|
||||||
all: $(TESTS_ALL)
|
|
||||||
|
|
||||||
test: all
|
|
||||||
@./testsdl
|
|
||||||
|
|
||||||
testsdl: $(SRC) $(RWOPS_SRC) $(COMMON_SRC)
|
|
||||||
$(CC) $(CFLAGS) -o $@ $(SRC) $(RWOPS_SRC) $(COMMON_SRC) $(LDFLAGS)
|
|
||||||
|
|
||||||
platform/platform: platform/platform.c $(COMMON_INCLUDE) $(COMMON_SRC)
|
|
||||||
$(CC) $(CFLAGS) -o $@ platform/platform.c $(COMMON_SRC) -DTEST_STANDALONE $(LDFLAGS)
|
|
||||||
|
|
||||||
rwops/rwops: $(RWOPS_SRC) $(COMMON_INCLUDE) $(COMMON_SRC)
|
|
||||||
$(CC) $(CFLAGS) -o $@ $(RWOPS_SRC) $(COMMON_SRC) -DTEST_STANDALONE $(LDFLAGS)
|
|
||||||
|
|
||||||
rect/rect: rect/rect.c $(COMMON_INCLUDE) $(COMMON_SRC)
|
|
||||||
$(CC) $(CFLAGS) -o $@ rect/rect.c $(COMMON_SRC) -DTEST_STANDALONE $(LDFLAGS)
|
|
||||||
|
|
||||||
surface/surface: surface/surface.c $(COMMON_INCLUDE) $(COMMON_SRC)
|
|
||||||
$(CC) $(CFLAGS) -o $@ surface/surface.c $(COMMON_SRC) -DTEST_STANDALONE $(LDFLAGS)
|
|
||||||
|
|
||||||
render/render: render/render.c $(COMMON_INCLUDE) $(COMMON_SRC)
|
|
||||||
$(CC) $(CFLAGS) -o $@ render/render.c $(COMMON_SRC) -DTEST_STANDALONE $(LDFLAGS)
|
|
||||||
|
|
||||||
audio/audio: audio/audio.c $(COMMON_INCLUDE) $(COMMON_SRC)
|
|
||||||
$(CC) $(CFLAGS) -o $@ audio/audio.c $(COMMON_SRC) -DTEST_STANDALONE $(LDFLAGS)
|
|
||||||
|
|
||||||
clean:
|
|
||||||
$(RM) $(TESTS_ALL)
|
|
|
@ -1,59 +0,0 @@
|
||||||
|
|
||||||
|
|
||||||
SDL Automated Testing Framework User Documentation
|
|
||||||
by Edgar Simo Serra
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
Abstract
|
|
||||||
|
|
||||||
The SDL Automated Testing Framework, hereby after called SDL_AT, is a meant
|
|
||||||
to test the SDL code for regressions and other possible failures. It can also
|
|
||||||
be used to display what your SDL set up supports.
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
Basics
|
|
||||||
|
|
||||||
The main way to use the framework is to compile it and run it, that can be
|
|
||||||
done with the following command:
|
|
||||||
|
|
||||||
$> make test
|
|
||||||
|
|
||||||
It should then display something like:
|
|
||||||
|
|
||||||
Platform : All tests successful (2)
|
|
||||||
SDL_RWops : All tests successful (5)
|
|
||||||
SDL_Surface : All tests successful (6)
|
|
||||||
Rendering with x11 driver : All tests successful (4)
|
|
||||||
|
|
||||||
Indicating that all tests were successful. If however a test fails output it
|
|
||||||
will report the failure to stderr indicating where and why it happened. This
|
|
||||||
output can then be sent to the developers so they can attempt to fix the
|
|
||||||
problem.
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
Advanced
|
|
||||||
|
|
||||||
By passing the "-h" or "--help" parameter to testsdl you can get an overview
|
|
||||||
of all the possible options you can set to furthur tweak the testing. A sample
|
|
||||||
of the options would be the following:
|
|
||||||
|
|
||||||
Usage: ./testsdl [OPTIONS]
|
|
||||||
Options are:
|
|
||||||
-m, --manual enables tests that require user interaction
|
|
||||||
--noplatform do not run the platform tests
|
|
||||||
--norwops do not run the rwops tests
|
|
||||||
--nosurface do not run the surface tests
|
|
||||||
--norender do not run the render tests
|
|
||||||
-v, --verbose increases verbosity level by 1 for each -v
|
|
||||||
-q, --quiet only displays errors
|
|
||||||
-h, --help display this message and exit
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
Developers
|
|
||||||
|
|
||||||
See SDL_at.h for developer information.
|
|
||||||
|
|
|
@ -1,331 +0,0 @@
|
||||||
/*
|
|
||||||
* Common code for automated test suite.
|
|
||||||
*
|
|
||||||
* Written by Edgar Simo "bobbens"
|
|
||||||
*
|
|
||||||
* Released under Public Domain.
|
|
||||||
*/
|
|
||||||
|
|
||||||
|
|
||||||
#include "SDL_at.h"
|
|
||||||
#include "SDL_stdinc.h"
|
|
||||||
#include "SDL_error.h"
|
|
||||||
|
|
||||||
#include <stdio.h> /* printf/fprintf */
|
|
||||||
#include <stdarg.h> /* va_list */
|
|
||||||
|
|
||||||
|
|
||||||
/*
|
|
||||||
* Internal usage SDL_AT variables.
|
|
||||||
*/
|
|
||||||
static char *at_suite_msg = NULL; /**< Testsuite message. */
|
|
||||||
static char *at_test_msg = NULL; /**< Testcase message. */
|
|
||||||
static int at_success = 0; /**< Number of successful testcases. */
|
|
||||||
static int at_failure = 0; /**< Number of failed testcases. */
|
|
||||||
|
|
||||||
|
|
||||||
/*
|
|
||||||
* Global properties.
|
|
||||||
*/
|
|
||||||
static int at_verbose = 0; /**< Verbosity. */
|
|
||||||
static int at_quiet = 0; /**< Quietness. */
|
|
||||||
|
|
||||||
|
|
||||||
/*
|
|
||||||
* Prototypes.
|
|
||||||
*/
|
|
||||||
static void SDL_ATcleanup (void);
|
|
||||||
static void SDL_ATendWith( int success );
|
|
||||||
static void SDL_ATassertFailed( const char *msg );
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @brief Cleans up the automated testsuite state.
|
|
||||||
*/
|
|
||||||
static void SDL_ATcleanup (void)
|
|
||||||
{
|
|
||||||
if (at_suite_msg != NULL)
|
|
||||||
SDL_free(at_suite_msg);
|
|
||||||
at_suite_msg = NULL;
|
|
||||||
if (at_test_msg != NULL)
|
|
||||||
SDL_free(at_test_msg);
|
|
||||||
at_test_msg = NULL;
|
|
||||||
at_success = 0;
|
|
||||||
at_failure = 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @brief Begin testsuite.
|
|
||||||
*/
|
|
||||||
void SDL_ATinit( const char *suite )
|
|
||||||
{
|
|
||||||
/* Do not open twice. */
|
|
||||||
if (at_suite_msg) {
|
|
||||||
SDL_ATprintErr( "AT suite '%s' not closed before opening suite '%s'\n",
|
|
||||||
at_suite_msg, suite );
|
|
||||||
}
|
|
||||||
/* Must have a name. */
|
|
||||||
if (suite == NULL) {
|
|
||||||
SDL_ATprintErr( "AT testsuite does not have a name.\n");
|
|
||||||
}
|
|
||||||
SDL_ATcleanup();
|
|
||||||
at_suite_msg = SDL_strdup(suite);
|
|
||||||
|
|
||||||
/* Verbose message. */
|
|
||||||
SDL_ATprintVerbose( 2, "--+---> Started Test Suite '%s'\n", at_suite_msg );
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @brief Finish testsuite.
|
|
||||||
*/
|
|
||||||
int SDL_ATfinish (void)
|
|
||||||
{
|
|
||||||
int failed;
|
|
||||||
|
|
||||||
/* Make sure initialized. */
|
|
||||||
if (at_suite_msg == NULL) {
|
|
||||||
SDL_ATprintErr("Ended testcase without initializing.\n");
|
|
||||||
return 1;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Finished without closing testcase. */
|
|
||||||
if (at_test_msg) {
|
|
||||||
SDL_ATprintErr( "AT suite '%s' finished without closing testcase '%s'\n",
|
|
||||||
at_suite_msg, at_test_msg );
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Verbose message. */
|
|
||||||
SDL_ATprintVerbose( 2, "<-+---- Finished Test Suite '%s'\n", at_suite_msg );
|
|
||||||
|
|
||||||
/* Display message if verbose on failed. */
|
|
||||||
failed = at_failure;
|
|
||||||
if (at_failure > 0) {
|
|
||||||
SDL_ATprintErr( "%s : Failed %d out of %d testcases!\n",
|
|
||||||
at_suite_msg, at_failure, at_failure+at_success );
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
SDL_ATprint( "%s : All tests successful (%d)\n",
|
|
||||||
at_suite_msg, at_success );
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Clean up. */
|
|
||||||
SDL_ATcleanup();
|
|
||||||
|
|
||||||
/* Return failed. */
|
|
||||||
return failed;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @brief Sets a property.
|
|
||||||
*/
|
|
||||||
void SDL_ATseti( int property, int value )
|
|
||||||
{
|
|
||||||
switch (property) {
|
|
||||||
case SDL_AT_VERBOSE:
|
|
||||||
at_verbose = value;
|
|
||||||
break;
|
|
||||||
|
|
||||||
case SDL_AT_QUIET:
|
|
||||||
at_quiet = value;
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @brief Gets a property.
|
|
||||||
*/
|
|
||||||
void SDL_ATgeti( int property, int *value )
|
|
||||||
{
|
|
||||||
switch (property) {
|
|
||||||
case SDL_AT_VERBOSE:
|
|
||||||
*value = at_verbose;
|
|
||||||
break;
|
|
||||||
|
|
||||||
case SDL_AT_QUIET:
|
|
||||||
*value = at_quiet;
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @brief Begin testcase.
|
|
||||||
*/
|
|
||||||
void SDL_ATbegin( const char *testcase )
|
|
||||||
{
|
|
||||||
/* Do not open twice. */
|
|
||||||
if (at_test_msg) {
|
|
||||||
SDL_ATprintErr( "AT testcase '%s' not closed before opening testcase '%s'\n",
|
|
||||||
at_test_msg, testcase );
|
|
||||||
}
|
|
||||||
/* Must have a name. */
|
|
||||||
if (testcase == NULL) {
|
|
||||||
SDL_ATprintErr( "AT testcase does not have a name.\n");
|
|
||||||
}
|
|
||||||
at_test_msg = SDL_strdup(testcase);
|
|
||||||
|
|
||||||
/* Verbose message. */
|
|
||||||
SDL_ATprintVerbose( 2, " +---> StartedTest Case '%s'\n", testcase );
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @brief Ends the testcase with a succes or failure.
|
|
||||||
*/
|
|
||||||
static void SDL_ATendWith( int success )
|
|
||||||
{
|
|
||||||
/* Make sure initialized. */
|
|
||||||
if (at_test_msg == NULL) {
|
|
||||||
SDL_ATprintErr("Ended testcase without initializing.\n");
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Mark as success or failure. */
|
|
||||||
if (success)
|
|
||||||
at_success++;
|
|
||||||
else
|
|
||||||
at_failure++;
|
|
||||||
|
|
||||||
/* Verbose message. */
|
|
||||||
SDL_ATprintVerbose( 2, " +---- Finished Test Case '%s'\n", at_test_msg );
|
|
||||||
|
|
||||||
/* Clean up. */
|
|
||||||
if (at_test_msg != NULL)
|
|
||||||
SDL_free(at_test_msg);
|
|
||||||
at_test_msg = NULL;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @brief Display failed assert message.
|
|
||||||
*/
|
|
||||||
static void SDL_ATassertFailed( const char *msg )
|
|
||||||
{
|
|
||||||
/* Print. */
|
|
||||||
SDL_ATprintErr( "Assert Failed!\n" );
|
|
||||||
SDL_ATprintErr( " %s\n", msg );
|
|
||||||
SDL_ATprintErr( " Test Case '%s'\n", at_test_msg );
|
|
||||||
SDL_ATprintErr( " Test Suite '%s'\n", at_suite_msg );
|
|
||||||
SDL_ATprintErr( " Last SDL error '%s'\n", SDL_GetError() );
|
|
||||||
/* End. */
|
|
||||||
SDL_ATendWith(0);
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @brief Testcase test.
|
|
||||||
*/
|
|
||||||
int SDL_ATassert( const char *msg, int condition )
|
|
||||||
{
|
|
||||||
/* Condition failed. */
|
|
||||||
if (!condition) {
|
|
||||||
/* Failed message. */
|
|
||||||
SDL_ATassertFailed(msg);
|
|
||||||
}
|
|
||||||
return !condition;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @brief Testcase test.
|
|
||||||
*/
|
|
||||||
int SDL_ATvassert( int condition, const char *msg, ... )
|
|
||||||
{
|
|
||||||
va_list args;
|
|
||||||
char buf[256];
|
|
||||||
|
|
||||||
/* Condition failed. */
|
|
||||||
if (!condition) {
|
|
||||||
/* Get message. */
|
|
||||||
va_start( args, msg );
|
|
||||||
SDL_vsnprintf( buf, sizeof(buf), msg, args );
|
|
||||||
va_end( args );
|
|
||||||
/* Failed message. */
|
|
||||||
SDL_ATassertFailed( buf );
|
|
||||||
}
|
|
||||||
return !condition;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @brief End testcase.
|
|
||||||
*/
|
|
||||||
void SDL_ATend (void)
|
|
||||||
{
|
|
||||||
SDL_ATendWith(1);
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @brief Displays an error.
|
|
||||||
*/
|
|
||||||
int SDL_ATprintErr( const char *msg, ... )
|
|
||||||
{
|
|
||||||
va_list ap;
|
|
||||||
int ret;
|
|
||||||
|
|
||||||
/* Make sure there is something to print. */
|
|
||||||
if (msg == NULL)
|
|
||||||
return 0;
|
|
||||||
else {
|
|
||||||
va_start(ap, msg);
|
|
||||||
ret = vfprintf( stderr, msg, ap );
|
|
||||||
va_end(ap);
|
|
||||||
}
|
|
||||||
|
|
||||||
return ret;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @brief Displays a message.
|
|
||||||
*/
|
|
||||||
int SDL_ATprint( const char *msg, ... )
|
|
||||||
{
|
|
||||||
va_list ap;
|
|
||||||
int ret;
|
|
||||||
|
|
||||||
/* Only print if not quiet. */
|
|
||||||
if (at_quiet)
|
|
||||||
return 0;
|
|
||||||
|
|
||||||
/* Make sure there is something to print. */
|
|
||||||
if (msg == NULL)
|
|
||||||
return 0;
|
|
||||||
else {
|
|
||||||
va_start(ap, msg);
|
|
||||||
ret = vfprintf( stdout, msg, ap );
|
|
||||||
va_end(ap);
|
|
||||||
}
|
|
||||||
|
|
||||||
return ret;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @brief Displays a verbose message.
|
|
||||||
*/
|
|
||||||
int SDL_ATprintVerbose( int level, const char *msg, ... )
|
|
||||||
{
|
|
||||||
va_list ap;
|
|
||||||
int ret;
|
|
||||||
|
|
||||||
/* Only print if not quiet. */
|
|
||||||
if (at_quiet || (at_verbose < level))
|
|
||||||
return 0;
|
|
||||||
|
|
||||||
/* Make sure there is something to print. */
|
|
||||||
if (msg == NULL)
|
|
||||||
return 0;
|
|
||||||
else {
|
|
||||||
va_start(ap, msg);
|
|
||||||
ret = vfprintf( stdout, msg, ap );
|
|
||||||
va_end(ap);
|
|
||||||
}
|
|
||||||
|
|
||||||
return ret;
|
|
||||||
}
|
|
|
@ -1,158 +0,0 @@
|
||||||
/*
|
|
||||||
* Common code for automated test suite.
|
|
||||||
*
|
|
||||||
* Written by Edgar Simo "bobbens"
|
|
||||||
*
|
|
||||||
* Released under Public Domain.
|
|
||||||
*/
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @file SDL_at.h
|
|
||||||
*
|
|
||||||
* @brief Handles automatic testing functionality.
|
|
||||||
*
|
|
||||||
* The basic approach with SDL_AT is to divide the tests into what are called
|
|
||||||
* test suites and test cases. Each test suite should have multiple test
|
|
||||||
* cases, each test case can have multiple asserts.
|
|
||||||
*
|
|
||||||
* To actually test for conditions within the testcase you check asserts, if
|
|
||||||
* the asserts fail the failures will be logged in the testsuite and
|
|
||||||
* displayed.
|
|
||||||
*
|
|
||||||
* Syntax is similar to OpenGL. An example would be:
|
|
||||||
*
|
|
||||||
* @code
|
|
||||||
* int f; // Number failed
|
|
||||||
* SDL_ATinit( "My testsuite" );
|
|
||||||
*
|
|
||||||
* SDL_ATbegin( "My first testcase" );
|
|
||||||
* if (!SDL_ATassert( (1+1)==2, "Trying '1+1=2'."))
|
|
||||||
* return; // Implicitly calls SDL_ATend if assert fails
|
|
||||||
* SDL_ATend(); // Finish testcase
|
|
||||||
*
|
|
||||||
* SDL_ATbegin( "My second testcase" );
|
|
||||||
* if (!SDL_ATassert( (4/2)==2, "Trying '4/2=2'."))
|
|
||||||
* return; // Implicitly calls SDL_ATend if assert fails
|
|
||||||
* SDL_ATend(); // Finish testcase
|
|
||||||
*
|
|
||||||
* f = SDL_ATfinish();
|
|
||||||
* @endcode
|
|
||||||
*
|
|
||||||
* @author Edgar Simo "bobbens"
|
|
||||||
*/
|
|
||||||
|
|
||||||
|
|
||||||
#ifndef _SDL_AT_H
|
|
||||||
# define _SDL_AT_H
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
enum {
|
|
||||||
SDL_AT_VERBOSE, /**< Sets the verbose level. */
|
|
||||||
SDL_AT_QUIET /**< Sets quietness. */
|
|
||||||
};
|
|
||||||
|
|
||||||
|
|
||||||
/*
|
|
||||||
* Suite level actions.
|
|
||||||
*/
|
|
||||||
/**
|
|
||||||
* @brief Starts the testsuite.
|
|
||||||
*
|
|
||||||
* @param suite Name of the suite to start testing.
|
|
||||||
*/
|
|
||||||
void SDL_ATinit( const char *suite );
|
|
||||||
/**
|
|
||||||
* @brief Finishes the testsuite printing out global results if verbose.
|
|
||||||
*
|
|
||||||
* @return 0 if no errors occurred, otherwise number of failures.
|
|
||||||
*/
|
|
||||||
int SDL_ATfinish (void);
|
|
||||||
/**
|
|
||||||
* @brief Sets a global property value.
|
|
||||||
*
|
|
||||||
* @param property Property to set.
|
|
||||||
* @param value Value to set property to.
|
|
||||||
*/
|
|
||||||
void SDL_ATseti( int property, int value );
|
|
||||||
/**
|
|
||||||
* @brief Gets a global property value.
|
|
||||||
*
|
|
||||||
* @param property Property to get.
|
|
||||||
* @param[out] value Value of the property.
|
|
||||||
*/
|
|
||||||
void SDL_ATgeti( int property, int *value );
|
|
||||||
|
|
||||||
|
|
||||||
/*
|
|
||||||
* Testcase level actions.
|
|
||||||
*/
|
|
||||||
/**
|
|
||||||
* @brief Begins a testcase.
|
|
||||||
*
|
|
||||||
* @param testcase Name of the testcase to begin.
|
|
||||||
*/
|
|
||||||
void SDL_ATbegin( const char *testcase );
|
|
||||||
/**
|
|
||||||
* @brief Checks a condition in the testcase.
|
|
||||||
*
|
|
||||||
* Will automatically call SDL_ATend if the condition isn't met.
|
|
||||||
*
|
|
||||||
* @param condition Condition to make sure is true.
|
|
||||||
* @param msg Message to display for failure.
|
|
||||||
* @return Returns 1 if the condition isn't met.
|
|
||||||
*/
|
|
||||||
int SDL_ATassert( const char *msg, int condition );
|
|
||||||
/**
|
|
||||||
* @brief Checks a condition in the testcase.
|
|
||||||
*
|
|
||||||
* Will automatically call SDL_ATend if the condition isn't met.
|
|
||||||
*
|
|
||||||
* @param condition Condition to make sure is true.
|
|
||||||
* @param msg Message to display for failure with printf style formatting.
|
|
||||||
* @return Returns 1 if the condition isn't met.
|
|
||||||
*/
|
|
||||||
int SDL_ATvassert( int condition, const char *msg, ... );
|
|
||||||
/**
|
|
||||||
* @brief Ends a testcase.
|
|
||||||
*/
|
|
||||||
void SDL_ATend (void);
|
|
||||||
|
|
||||||
|
|
||||||
/*
|
|
||||||
* Misc functions.
|
|
||||||
*/
|
|
||||||
/**
|
|
||||||
* @brief Prints an error.
|
|
||||||
*
|
|
||||||
* @param msg printf formatted string to display.
|
|
||||||
* @return Number of character printed.
|
|
||||||
*/
|
|
||||||
int SDL_ATprintErr( const char *msg, ... );
|
|
||||||
/**
|
|
||||||
* @brief Prints some text.
|
|
||||||
*
|
|
||||||
* @param msg printf formatted string to display.
|
|
||||||
* @return Number of character printed.
|
|
||||||
*/
|
|
||||||
int SDL_ATprint( const char *msg, ... );
|
|
||||||
/**
|
|
||||||
* @brief Prints some verbose text.
|
|
||||||
*
|
|
||||||
* Verbosity levels are as follows:
|
|
||||||
*
|
|
||||||
* - 0 standard stdout, enabled by default
|
|
||||||
* - 1 additional information
|
|
||||||
* - 2 detailed information (spammy)
|
|
||||||
*
|
|
||||||
* @param level Level of verbosity to print at.
|
|
||||||
* @param msg printf formatted string to display.
|
|
||||||
* @return Number of character printed.
|
|
||||||
*/
|
|
||||||
int SDL_ATprintVerbose( int level, const char *msg, ... );
|
|
||||||
|
|
||||||
|
|
||||||
#endif /* _SDL_AT_H */
|
|
||||||
|
|
||||||
|
|
|
@ -1,89 +0,0 @@
|
||||||
/**
|
|
||||||
* Automated SDL_RWops test.
|
|
||||||
*
|
|
||||||
* Written by Edgar Simo "bobbens"
|
|
||||||
*
|
|
||||||
* Released under Public Domain.
|
|
||||||
*/
|
|
||||||
|
|
||||||
|
|
||||||
#include "SDL.h"
|
|
||||||
#include "../SDL_at.h"
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @brief Prints available devices.
|
|
||||||
*/
|
|
||||||
static int audio_printDevices( int iscapture )
|
|
||||||
{
|
|
||||||
int i, n;
|
|
||||||
|
|
||||||
/* Get number of devices. */
|
|
||||||
n = SDL_GetNumAudioDevices(iscapture);
|
|
||||||
SDL_ATprintVerbose( 1, "%d %s Audio Devices\n",
|
|
||||||
n, iscapture ? "Capture" : "Output" );
|
|
||||||
|
|
||||||
/* List devices. */
|
|
||||||
for (i=0; i<n; i++) {
|
|
||||||
SDL_ATprintVerbose( 1, " %d) %s\n", i+1, SDL_GetAudioDeviceName( i, iscapture ) );
|
|
||||||
}
|
|
||||||
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @brief Makes sure parameters work properly.
|
|
||||||
*/
|
|
||||||
static void audio_testOpen (void)
|
|
||||||
{
|
|
||||||
int i, n;
|
|
||||||
int ret;
|
|
||||||
|
|
||||||
/* Begin testcase. */
|
|
||||||
SDL_ATbegin( "Audio Open" );
|
|
||||||
|
|
||||||
/* List drivers. */
|
|
||||||
n = SDL_GetNumAudioDrivers();
|
|
||||||
SDL_ATprintVerbose( 1, "%d Audio Drivers\n", n );
|
|
||||||
for (i=0; i<n; i++) {
|
|
||||||
SDL_ATprintVerbose( 1, " %s\n", SDL_GetAudioDriver(i) );
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Start SDL. */
|
|
||||||
ret = SDL_Init( SDL_INIT_AUDIO );
|
|
||||||
if (SDL_ATvassert( ret==0, "SDL_Init( SDL_INIT_AUDIO ): %s", SDL_GetError()))
|
|
||||||
return;
|
|
||||||
|
|
||||||
/* Print devices. */
|
|
||||||
SDL_ATprintVerbose( 1, "Using Audio Driver '%s'\n", SDL_GetCurrentAudioDriver() );
|
|
||||||
audio_printDevices(0);
|
|
||||||
audio_printDevices(1);
|
|
||||||
|
|
||||||
/* Quit SDL. */
|
|
||||||
SDL_Quit();
|
|
||||||
|
|
||||||
/* End testcase. */
|
|
||||||
SDL_ATend();
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @brief Entry point.
|
|
||||||
*/
|
|
||||||
#ifdef TEST_STANDALONE
|
|
||||||
int main( int argc, const char *argv[] )
|
|
||||||
{
|
|
||||||
(void) argc;
|
|
||||||
(void) argv;
|
|
||||||
#else /* TEST_STANDALONE */
|
|
||||||
int test_audio (void)
|
|
||||||
{
|
|
||||||
#endif /* TEST_STANDALONE */
|
|
||||||
|
|
||||||
SDL_ATinit( "SDL_Audio" );
|
|
||||||
|
|
||||||
audio_testOpen();
|
|
||||||
|
|
||||||
return SDL_ATfinish();
|
|
||||||
}
|
|
|
@ -1,18 +0,0 @@
|
||||||
/**
|
|
||||||
* Part of SDL test suite.
|
|
||||||
*
|
|
||||||
* Written by Edgar Simo "bobbens"
|
|
||||||
*
|
|
||||||
* Released under Public Domain.
|
|
||||||
*/
|
|
||||||
|
|
||||||
|
|
||||||
#ifndef _TEST_AUDIO
|
|
||||||
# define _TEST_AUDIO
|
|
||||||
|
|
||||||
|
|
||||||
int test_audio (void);
|
|
||||||
|
|
||||||
|
|
||||||
#endif /* _TEST_AUDIO */
|
|
||||||
|
|
|
@ -1,110 +0,0 @@
|
||||||
/**
|
|
||||||
* Automated SDL_Surface test.
|
|
||||||
*
|
|
||||||
* Written by Edgar Simo "bobbens"
|
|
||||||
*
|
|
||||||
* Released under Public Domain.
|
|
||||||
*/
|
|
||||||
|
|
||||||
|
|
||||||
#include "SDL.h"
|
|
||||||
#include "../SDL_at.h"
|
|
||||||
|
|
||||||
#include "common.h"
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @brief Compares a surface and a surface image for equality.
|
|
||||||
*/
|
|
||||||
int surface_compare( SDL_Surface *sur, const SurfaceImage_t *img, int allowable_error )
|
|
||||||
{
|
|
||||||
int ret;
|
|
||||||
int i,j;
|
|
||||||
int bpp;
|
|
||||||
Uint8 *p, *pd;
|
|
||||||
|
|
||||||
/* Make sure size is the same. */
|
|
||||||
if ((sur->w != img->width) || (sur->h != img->height))
|
|
||||||
return -1;
|
|
||||||
|
|
||||||
SDL_LockSurface( sur );
|
|
||||||
|
|
||||||
ret = 0;
|
|
||||||
bpp = sur->format->BytesPerPixel;
|
|
||||||
|
|
||||||
/* Compare image - should be same format. */
|
|
||||||
for (j=0; j<sur->h; j++) {
|
|
||||||
for (i=0; i<sur->w; i++) {
|
|
||||||
p = (Uint8 *)sur->pixels + j * sur->pitch + i * bpp;
|
|
||||||
pd = (Uint8 *)img->pixel_data + (j*img->width + i) * img->bytes_per_pixel;
|
|
||||||
switch (bpp) {
|
|
||||||
case 1:
|
|
||||||
case 2:
|
|
||||||
case 3:
|
|
||||||
ret += 1;
|
|
||||||
/*printf("%d BPP not supported yet.\n",bpp);*/
|
|
||||||
break;
|
|
||||||
|
|
||||||
case 4:
|
|
||||||
{
|
|
||||||
int dist = 0;
|
|
||||||
Uint8 R, G, B, A;
|
|
||||||
|
|
||||||
SDL_GetRGBA(*(Uint32*)p, sur->format, &R, &G, &B, &A);
|
|
||||||
|
|
||||||
if (img->bytes_per_pixel == 3) {
|
|
||||||
dist += (R-pd[0])*(R-pd[0]);
|
|
||||||
dist += (G-pd[1])*(G-pd[1]);
|
|
||||||
dist += (B-pd[2])*(B-pd[2]);
|
|
||||||
} else {
|
|
||||||
dist += (R-pd[0])*(R-pd[0]);
|
|
||||||
dist += (G-pd[1])*(G-pd[1]);
|
|
||||||
dist += (B-pd[2])*(B-pd[2]);
|
|
||||||
dist += (A-pd[3])*(A-pd[3]);
|
|
||||||
}
|
|
||||||
/* Allow some difference in blending accuracy */
|
|
||||||
if (dist > allowable_error) {
|
|
||||||
/*printf("pixel %d,%d varies by %d\n", i, j, dist);*/
|
|
||||||
++ret;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
SDL_UnlockSurface( sur );
|
|
||||||
|
|
||||||
if (ret) {
|
|
||||||
SDL_SaveBMP(sur, "fail.bmp");
|
|
||||||
|
|
||||||
SDL_LockSurface( sur );
|
|
||||||
|
|
||||||
bpp = sur->format->BytesPerPixel;
|
|
||||||
|
|
||||||
if (bpp == 4) {
|
|
||||||
for (j=0; j<sur->h; j++) {
|
|
||||||
for (i=0; i<sur->w; i++) {
|
|
||||||
Uint8 R, G, B, A;
|
|
||||||
p = (Uint8 *)sur->pixels + j * sur->pitch + i * bpp;
|
|
||||||
pd = (Uint8 *)img->pixel_data + (j*img->width + i) * img->bytes_per_pixel;
|
|
||||||
|
|
||||||
R = pd[0];
|
|
||||||
G = pd[1];
|
|
||||||
B = pd[2];
|
|
||||||
if (img->bytes_per_pixel == 4) {
|
|
||||||
A = pd[3];
|
|
||||||
} else {
|
|
||||||
A = 0;
|
|
||||||
}
|
|
||||||
*(Uint32*)p = (A << 24) | (R << 16) | (G << 8) | B;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
SDL_UnlockSurface( sur );
|
|
||||||
|
|
||||||
SDL_SaveBMP(sur, "good.bmp");
|
|
||||||
}
|
|
||||||
return ret;
|
|
||||||
}
|
|
|
@ -1,42 +0,0 @@
|
||||||
/**
|
|
||||||
* Automated SDL test common framework.
|
|
||||||
*
|
|
||||||
* Written by Edgar Simo "bobbens"
|
|
||||||
*
|
|
||||||
* Released under Public Domain.
|
|
||||||
*/
|
|
||||||
|
|
||||||
|
|
||||||
#ifndef COMMON_H
|
|
||||||
# define COMMON_H
|
|
||||||
|
|
||||||
|
|
||||||
# define FORMAT SDL_PIXELFORMAT_ARGB8888
|
|
||||||
# define AMASK 0xff000000 /**< Alpha bit mask. */
|
|
||||||
# define RMASK 0x00ff0000 /**< Red bit mask. */
|
|
||||||
# define GMASK 0x0000ff00 /**< Green bit mask. */
|
|
||||||
# define BMASK 0x000000ff /**< Blue bit mask. */
|
|
||||||
|
|
||||||
|
|
||||||
typedef struct SurfaceImage_s {
|
|
||||||
int width;
|
|
||||||
int height;
|
|
||||||
unsigned int bytes_per_pixel; /* 3:RGB, 4:RGBA */
|
|
||||||
const char *pixel_data;
|
|
||||||
} SurfaceImage_t;
|
|
||||||
|
|
||||||
#define ALLOWABLE_ERROR_OPAQUE 0
|
|
||||||
#define ALLOWABLE_ERROR_BLENDED 64
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @brief Compares a surface and a surface image for equality.
|
|
||||||
*
|
|
||||||
* @param sur Surface to compare.
|
|
||||||
* @param img Image to compare against.
|
|
||||||
* @return 0 if they are the same, -1 on error and positive if different.
|
|
||||||
*/
|
|
||||||
int surface_compare( SDL_Surface *sur, const SurfaceImage_t *img, int allowable_error );
|
|
||||||
|
|
||||||
|
|
||||||
#endif /* COMMON_H */
|
|
||||||
|
|
|
@ -1,22 +0,0 @@
|
||||||
|
|
||||||
|
|
||||||
#ifndef IMAGES_H
|
|
||||||
# define IMAGES_H
|
|
||||||
|
|
||||||
|
|
||||||
#include "common.h"
|
|
||||||
|
|
||||||
|
|
||||||
/*
|
|
||||||
* Pull in images for testcases.
|
|
||||||
*/
|
|
||||||
#include "img_primitives.c"
|
|
||||||
#include "img_primitivesblend.c"
|
|
||||||
#include "img_face.c"
|
|
||||||
#include "img_blit.c"
|
|
||||||
#include "img_blitblend.c"
|
|
||||||
|
|
||||||
|
|
||||||
#endif /* IMAGES_H */
|
|
||||||
|
|
||||||
|
|
File diff suppressed because it is too large
Load diff
File diff suppressed because it is too large
Load diff
|
@ -1,196 +0,0 @@
|
||||||
/* GIMP RGBA C-Source image dump (face.c) */
|
|
||||||
|
|
||||||
static const SurfaceImage_t img_face = {
|
|
||||||
32, 32, 4,
|
|
||||||
"\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377"
|
|
||||||
"\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377"
|
|
||||||
"\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377"
|
|
||||||
"\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0"
|
|
||||||
"\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377"
|
|
||||||
"\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377"
|
|
||||||
"\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377"
|
|
||||||
"\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0"
|
|
||||||
"\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377"
|
|
||||||
"\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377"
|
|
||||||
"\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377"
|
|
||||||
"\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0"
|
|
||||||
"\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377"
|
|
||||||
"\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377"
|
|
||||||
"\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377"
|
|
||||||
"\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0"
|
|
||||||
"\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377"
|
|
||||||
"\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377"
|
|
||||||
"\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377"
|
|
||||||
"\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0"
|
|
||||||
"\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377"
|
|
||||||
"\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377"
|
|
||||||
"\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377"
|
|
||||||
"\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0"
|
|
||||||
"\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377"
|
|
||||||
"\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377"
|
|
||||||
"\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377"
|
|
||||||
"\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0"
|
|
||||||
"\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377"
|
|
||||||
"\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377"
|
|
||||||
"\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377"
|
|
||||||
"\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0"
|
|
||||||
"\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377"
|
|
||||||
"\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377"
|
|
||||||
"\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377"
|
|
||||||
"\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0"
|
|
||||||
"\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377"
|
|
||||||
"\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377"
|
|
||||||
"\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377"
|
|
||||||
"\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0"
|
|
||||||
"\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377"
|
|
||||||
"\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377"
|
|
||||||
"\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377"
|
|
||||||
"\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0"
|
|
||||||
"\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\0"
|
|
||||||
"\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0"
|
|
||||||
"\0\377\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377"
|
|
||||||
"\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0"
|
|
||||||
"\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377"
|
|
||||||
"\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377"
|
|
||||||
"\377\0\377\377\377\0\0\0\0\377\0\0\0\377\377\377\0\377\377\377\0\377\377"
|
|
||||||
"\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377"
|
|
||||||
"\0\377\0\0\0\377\0\0\0\377\377\377\377\0\377\377\377\0\377\377\377\0\377"
|
|
||||||
"\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377"
|
|
||||||
"\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377"
|
|
||||||
"\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0"
|
|
||||||
"\0\0\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377"
|
|
||||||
"\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0"
|
|
||||||
"\377\377\377\0\377\377\377\0\377\0\0\0\377\377\377\377\0\377\377\377\0\377"
|
|
||||||
"\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377"
|
|
||||||
"\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377"
|
|
||||||
"\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\0\0\0\377\377"
|
|
||||||
"\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377"
|
|
||||||
"\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0"
|
|
||||||
"\377\377\377\0\377\377\377\0\377\377\377\0\377\0\0\0\377\377\377\377\0\377"
|
|
||||||
"\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377"
|
|
||||||
"\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377"
|
|
||||||
"\0\377\377\377\0\377\377\377\0\377\377\377\0\0\0\0\377\377\377\0\377\377"
|
|
||||||
"\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377"
|
|
||||||
"\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0"
|
|
||||||
"\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\0\0\0\377\377"
|
|
||||||
"\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377"
|
|
||||||
"\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377"
|
|
||||||
"\0\377\377\377\0\377\377\377\0\0\0\0\377\377\377\0\377\377\377\0\377\377"
|
|
||||||
"\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377"
|
|
||||||
"\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0"
|
|
||||||
"\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377"
|
|
||||||
"\0\0\0\377\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377"
|
|
||||||
"\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377"
|
|
||||||
"\0\377\377\377\0\377\377\377\0\0\0\0\377\377\377\0\377\377\377\0\377\377"
|
|
||||||
"\377\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\377\377\0\377\377\377"
|
|
||||||
"\0\377\377\377\0\377\377\377\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377"
|
|
||||||
"\377\377\0\377\377\377\0\377\377\377\0\377\0\0\0\377\377\377\377\0\377\377"
|
|
||||||
"\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377"
|
|
||||||
"\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\0\0\0\377\377"
|
|
||||||
"\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\0\0\0\377\0\0\0\377"
|
|
||||||
"\377\377\377\0\0\0\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377"
|
|
||||||
"\0\377\0\0\0\377\0\0\0\377\377\377\377\0\0\0\0\377\377\377\0\377\377\377"
|
|
||||||
"\0\377\377\377\0\377\377\377\0\377\0\0\0\377\377\377\377\0\377\377\377\0"
|
|
||||||
"\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377"
|
|
||||||
"\377\377\0\377\377\377\0\377\377\377\0\0\0\0\377\377\377\0\377\377\377\0"
|
|
||||||
"\377\377\377\0\377\377\377\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377"
|
|
||||||
"\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\0\0\0\377\0\0\0"
|
|
||||||
"\377\0\0\0\377\0\0\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377"
|
|
||||||
"\0\377\0\0\0\377\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0"
|
|
||||||
"\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377"
|
|
||||||
"\377\377\0\0\0\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0"
|
|
||||||
"\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377"
|
|
||||||
"\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377"
|
|
||||||
"\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377"
|
|
||||||
"\0\377\0\0\0\377\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0"
|
|
||||||
"\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377"
|
|
||||||
"\377\377\0\0\0\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0"
|
|
||||||
"\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377"
|
|
||||||
"\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377"
|
|
||||||
"\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377"
|
|
||||||
"\0\377\0\0\0\377\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0"
|
|
||||||
"\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377"
|
|
||||||
"\377\377\0\0\0\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0"
|
|
||||||
"\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377"
|
|
||||||
"\0\0\0\377\0\0\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0"
|
|
||||||
"\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377"
|
|
||||||
"\0\0\0\377\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377"
|
|
||||||
"\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377"
|
|
||||||
"\0\0\0\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377"
|
|
||||||
"\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\0\0\0"
|
|
||||||
"\377\0\0\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377"
|
|
||||||
"\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\0\0\0"
|
|
||||||
"\377\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377"
|
|
||||||
"\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0"
|
|
||||||
"\0\0\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377"
|
|
||||||
"\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0"
|
|
||||||
"\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377"
|
|
||||||
"\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\0"
|
|
||||||
"\0\0\377\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377"
|
|
||||||
"\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377"
|
|
||||||
"\0\377\377\377\0\0\0\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377"
|
|
||||||
"\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377"
|
|
||||||
"\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0"
|
|
||||||
"\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\0\0\0\377\377"
|
|
||||||
"\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377"
|
|
||||||
"\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377"
|
|
||||||
"\0\377\377\377\0\0\0\0\377\377\377\0\377\377\377\0\377\0\0\0\377\0\0\0\377"
|
|
||||||
"\0\0\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377"
|
|
||||||
"\0\377\377\377\0\377\377\377\0\377\377\377\0\377\0\0\0\377\0\0\0\377\0\0"
|
|
||||||
"\0\377\377\377\0\377\377\377\0\377\0\0\0\377\377\377\377\0\377\377\377\0"
|
|
||||||
"\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377"
|
|
||||||
"\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377"
|
|
||||||
"\377\0\0\0\0\377\377\377\0\377\377\377\0\377\0\0\0\377\0\0\0\377\0\0\0\377"
|
|
||||||
"\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0"
|
|
||||||
"\0\0\377\0\0\0\377\377\377\0\377\377\377\0\377\0\0\0\377\377\377\377\0\377"
|
|
||||||
"\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377"
|
|
||||||
"\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377"
|
|
||||||
"\0\377\377\377\0\377\377\377\0\377\377\377\0\0\0\0\377\377\377\0\377\377"
|
|
||||||
"\377\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0"
|
|
||||||
"\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\377\377\0\377\377\377\0\377\0\0\0"
|
|
||||||
"\377\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377"
|
|
||||||
"\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0"
|
|
||||||
"\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377"
|
|
||||||
"\377\377\0\377\377\377\0\0\0\0\377\377\377\0\377\377\377\0\377\377\377\0"
|
|
||||||
"\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\377\377"
|
|
||||||
"\0\377\377\377\0\377\377\377\0\377\0\0\0\377\377\377\377\0\377\377\377\0"
|
|
||||||
"\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377"
|
|
||||||
"\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377"
|
|
||||||
"\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377"
|
|
||||||
"\0\377\377\377\0\0\0\0\377\0\0\0\377\377\377\0\377\377\377\0\377\377\377"
|
|
||||||
"\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0"
|
|
||||||
"\377\0\0\0\377\0\0\0\377\377\377\377\0\377\377\377\0\377\377\377\0\377\377"
|
|
||||||
"\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377"
|
|
||||||
"\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0"
|
|
||||||
"\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377"
|
|
||||||
"\377\377\0\377\377\377\0\377\377\377\0\0\0\0\377\0\0\0\377\0\0\0\377\0\0"
|
|
||||||
"\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\377\377\377\0\377\377\377"
|
|
||||||
"\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0"
|
|
||||||
"\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377"
|
|
||||||
"\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377"
|
|
||||||
"\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377"
|
|
||||||
"\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0"
|
|
||||||
"\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377"
|
|
||||||
"\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377"
|
|
||||||
"\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377"
|
|
||||||
"\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0"
|
|
||||||
"\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377"
|
|
||||||
"\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377"
|
|
||||||
"\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377"
|
|
||||||
"\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0"
|
|
||||||
"\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377"
|
|
||||||
"\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377"
|
|
||||||
"\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377"
|
|
||||||
"\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0"
|
|
||||||
"\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377"
|
|
||||||
"\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377"
|
|
||||||
"\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377"
|
|
||||||
"\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0"
|
|
||||||
"\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377"
|
|
||||||
"\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377"
|
|
||||||
"\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377"
|
|
||||||
"\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0"
|
|
||||||
"\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377"
|
|
||||||
"\377\377\0\377\377\377\0",
|
|
||||||
};
|
|
||||||
|
|
|
@ -1,463 +0,0 @@
|
||||||
/* GIMP RGB C-Source image dump (primitives.c) */
|
|
||||||
|
|
||||||
static const SurfaceImage_t img_primitives = {
|
|
||||||
80, 60, 3,
|
|
||||||
"\5ii\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
|
|
||||||
"\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
|
|
||||||
"\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
|
|
||||||
"\0\0\0\0\0\0\0\0\0\0\0\0\0\0\15I\310\0\0\0\15I\310\0\0\0\15I\310\0\0\0\15"
|
|
||||||
"I\310\0\0\0\15I\310\0\0\0\15I\310\0\0\0\15I\310\0\0\0\15I\310\0\0\0\15I\310"
|
|
||||||
"\0\0\0\15I\310\0\0\0\15I\310\0\0\0\15I\310\0\0\0\15I\310\0\0\0\15I\310\0"
|
|
||||||
"\0\0\15I\310\0\0\0\15I\310\0\0\0\15I\310\0\0\0\15I\310\0\0\0\15I\310\0\0"
|
|
||||||
"\0\5ii\0\0\0\5ii\0\0\0\3\1\1\0\0\0\5\2\1\0\0\0\7\3\2\0\0\0\11\4\3\0\0\0\13"
|
|
||||||
"\5\3\0\0\0\15\6\4\0\0\0\17\7\5\0\0\0\21\10\5\0\0\0\23\11\6\0\0\0\25\12\7"
|
|
||||||
"\0\0\0\27\13\7\0\0\0\31\14\10\0\0\0\33\15\11\0\0\0\35\16\11\0\0\0\37\17\12"
|
|
||||||
"\0\0\0!\20\13\0\0\0#\21\13\0\0\0%\22\14\0\0\0'\23\15\15I\310)\24\15\15I\310"
|
|
||||||
"+\25\16\15I\310-\26\17\15I\310/\27\17\15I\3101\30\20\15I\3103\31\21\15I\310"
|
|
||||||
"5\32\21\15I\3107\33\22\15I\3109\34\23\15I\310;\35\23\15I\310=\36\24\15I\310"
|
|
||||||
"?\37\25\15I\310A\40\25\15I\310C!\26\15I\310E\"\27\15I\310G#\27\15I\310I$"
|
|
||||||
"\30\15I\310K%\31\15I\310M&\31\5iiO'\32\0\0\0\0\0\0\5ii\0\0\0\10\4\2\0\0\0"
|
|
||||||
"\14\6\4\0\0\0\20\10\5\0\0\0\24\12\6\0\0\0\30\14\10\0\0\0\34\16\11\0\0\0\40"
|
|
||||||
"\20\12\0\0\0$\22\14\0\0\0(\24\15\0\0\0,\26\16\0\0\0""0\30\20\0\0\0""4\32"
|
|
||||||
"\21\0\0\0""8\34\22\0\0\0<\36\24\0\0\0@\40\25\0\0\0D\"\26\0\0\0H$\30\0\0\0"
|
|
||||||
"L&\31\0\0\0P(\32\15I\310T*\34\15I\310X,\35\15I\310\\.\36\15I\310`0\40\15"
|
|
||||||
"I\310d2!\15I\310h4\"\15I\310l6$\15I\310p8%\15I\310t:&\15I\310x<(\15I\310"
|
|
||||||
"|>)\15I\310\200@*\15I\310\204B,\15I\310\210D-\15I\310\214F.\15I\310\220H"
|
|
||||||
"0\15I\310\224J1\15I\310\230L2\5ii\234N4\15I\310\0\0\0\0\0\0\0\0\0\5ii\0\0"
|
|
||||||
"\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
|
|
||||||
"\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
|
|
||||||
"\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\15I"
|
|
||||||
"\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I"
|
|
||||||
"\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I"
|
|
||||||
"\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I"
|
|
||||||
"\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310\5ii"
|
|
||||||
"\15I\310\15I\310\15I\310\0\0\0\0\0\0\0\0\0\0\0\0\5ii\0\0\0\0\0\0\0\0\0\0"
|
|
||||||
"\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
|
|
||||||
"\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
|
|
||||||
"\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\15I\310\15I\310\15I\310\15"
|
|
||||||
"I\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310\15"
|
|
||||||
"I\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310\15"
|
|
||||||
"I\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310\15"
|
|
||||||
"I\310\15I\310\15I\310\15I\310\15I\310\5ii\15I\310\15I\310\15I\310\15I\310"
|
|
||||||
"\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\5ii\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
|
|
||||||
"\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
|
|
||||||
"\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
|
|
||||||
"\0\0\0\0\0\0\0\0\0\0\0\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310\15"
|
|
||||||
"I\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310\15"
|
|
||||||
"I\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310\15"
|
|
||||||
"I\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310\15"
|
|
||||||
"I\310\5ii\15I\310\15I\310\15I\310\15I\310\15I\310\0\0\0\0\0\0\0\0\0\0\0\0"
|
|
||||||
"\0\0\0\0\0\0\5ii\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
|
|
||||||
"\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
|
|
||||||
"\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\15"
|
|
||||||
"I\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310\15"
|
|
||||||
"I\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310\15"
|
|
||||||
"I\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310\15"
|
|
||||||
"I\310\15I\310\15I\310\15I\310\15I\310\15I\310\5ii\15I\310\15I\310\15I\310"
|
|
||||||
"\15I\310\15I\310\15I\310\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\5ii\0"
|
|
||||||
"\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
|
|
||||||
"\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
|
|
||||||
"\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\15I\310\15I\310\15I\310\15"
|
|
||||||
"I\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310\15"
|
|
||||||
"I\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310\15"
|
|
||||||
"I\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310\15"
|
|
||||||
"I\310\15I\310\5ii\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310"
|
|
||||||
"\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\5ii\0\0\0\0\0\0\0\0\0\0"
|
|
||||||
"\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
|
|
||||||
"\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
|
|
||||||
"\0\0\0\0\0\0\0\0\0\0\0\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310\15"
|
|
||||||
"I\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310\15"
|
|
||||||
"I\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310\15"
|
|
||||||
"I\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310\5ii\15I\310\15I\310"
|
|
||||||
"\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310\0\0\0\0\0\0\0\0\0\0\0\0"
|
|
||||||
"\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\5ii\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
|
|
||||||
"\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
|
|
||||||
"\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\15"
|
|
||||||
"I\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310\15"
|
|
||||||
"I\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310\15"
|
|
||||||
"I\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310\15"
|
|
||||||
"I\310\15I\310\15I\310\5ii\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310"
|
|
||||||
"\15I\310\15I\310\15I\310\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
|
|
||||||
"\0\0\0\0\0\0\5ii\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d"
|
|
||||||
"\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310"
|
|
||||||
"\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0"
|
|
||||||
"d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310"
|
|
||||||
"\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0"
|
|
||||||
"d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\5ii\15I\310\15"
|
|
||||||
"I\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310\0\0"
|
|
||||||
"\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\310\0d\5ii\310\0"
|
|
||||||
"d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310"
|
|
||||||
"\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0"
|
|
||||||
"d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310"
|
|
||||||
"\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0"
|
|
||||||
"d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310"
|
|
||||||
"\0d\310\0d\310\0d\5ii\310\0d\15I\310\15I\310\15I\310\15I\310\15I\310\15I"
|
|
||||||
"\310\15I\310\15I\310\15I\310\15I\310\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
|
|
||||||
"\0\0\0\0\0\0\0\0\0\0\0\0\310\0d\310\0d\5ii\310\0d\310\0d\310\0d\310\0d\310"
|
|
||||||
"\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0"
|
|
||||||
"d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310"
|
|
||||||
"\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0"
|
|
||||||
"d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310"
|
|
||||||
"\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\5ii\310\0d\310\0d\15"
|
|
||||||
"I\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310\15"
|
|
||||||
"I\310\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\310\0d"
|
|
||||||
"\310\0d\310\0d\5ii\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0"
|
|
||||||
"d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310"
|
|
||||||
"\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0"
|
|
||||||
"d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310"
|
|
||||||
"\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0"
|
|
||||||
"d\310\0d\310\0d\5ii\310\0d\310\0d\310\0d\15I\310\15I\310\15I\310\15I\310"
|
|
||||||
"\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310\0\0\0\0\0\0\0\0\0\0\0\0"
|
|
||||||
"\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\310\0d\310\0d\310\0d\310\0d\5ii\310"
|
|
||||||
"\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0"
|
|
||||||
"d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310"
|
|
||||||
"\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0"
|
|
||||||
"d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310"
|
|
||||||
"\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\5ii\310\0d\310\0d\310"
|
|
||||||
"\0d\310\0d\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310"
|
|
||||||
"\15I\310\15I\310\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
|
|
||||||
"\0\0\310\0d\310\0d\310\0d\310\0d\310\0d\5ii\310\0d\310\0d\310\0d\310\0d\310"
|
|
||||||
"\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0"
|
|
||||||
"d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310"
|
|
||||||
"\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0"
|
|
||||||
"d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310"
|
|
||||||
"\0d\310\0d\5ii\310\0d\310\0d\310\0d\310\0d\310\0d\15I\310\15I\310\15I\310"
|
|
||||||
"\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310\0\0\0\0\0\0\0\0"
|
|
||||||
"\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\310\0d\310\0d\310\0d\310\0d"
|
|
||||||
"\310\0d\310\0d\5ii\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0"
|
|
||||||
"d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310"
|
|
||||||
"\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0"
|
|
||||||
"d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310"
|
|
||||||
"\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\5ii\310\0d\310\0d\310\0d\310"
|
|
||||||
"\0d\310\0d\310\0d\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310"
|
|
||||||
"\15I\310\15I\310\15I\310\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
|
|
||||||
"\0\0\0\0\0\0\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\5ii\310\0d"
|
|
||||||
"\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310"
|
|
||||||
"\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0"
|
|
||||||
"d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310"
|
|
||||||
"\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0"
|
|
||||||
"d\310\0d\5ii\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\15I\310\15"
|
|
||||||
"I\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310\0\0"
|
|
||||||
"\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\310\0d\310\0d\310"
|
|
||||||
"\0d\310\0d\310\0d\310\0d\310\0d\310\0d\5ii\310\0d\310\0d\310\0d\310\0d\310"
|
|
||||||
"\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0"
|
|
||||||
"d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310"
|
|
||||||
"\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0"
|
|
||||||
"d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\5ii\310\0d\310\0d\310\0d\310"
|
|
||||||
"\0d\310\0d\310\0d\310\0d\310\0d\15I\310\15I\310\15I\310\15I\310\15I\310\15"
|
|
||||||
"I\310\15I\310\15I\310\15I\310\15I\310\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
|
|
||||||
"\0\0\0\0\0\0\0\0\0\0\0\0\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0"
|
|
||||||
"d\310\0d\310\0d\5ii\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310"
|
|
||||||
"\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0"
|
|
||||||
"d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310"
|
|
||||||
"\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0"
|
|
||||||
"d\310\0d\5ii\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310"
|
|
||||||
"\0d\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310"
|
|
||||||
"\15I\310\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\310"
|
|
||||||
"\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\5ii\310"
|
|
||||||
"\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0"
|
|
||||||
"d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310"
|
|
||||||
"\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0"
|
|
||||||
"d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\5ii\310\0d\310\0d\310\0d\310"
|
|
||||||
"\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\15I\310\15I\310\15I\310\15"
|
|
||||||
"I\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310\0\0\0\0\0\0\0\0\0\0"
|
|
||||||
"\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\310\0d\310\0d\310\0d\310\0d\310"
|
|
||||||
"\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\5ii\310\0d\310\0d\310\0d\310"
|
|
||||||
"\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0"
|
|
||||||
"d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310"
|
|
||||||
"\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0"
|
|
||||||
"d\310\0d\5ii\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310"
|
|
||||||
"\0d\310\0d\310\0d\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310"
|
|
||||||
"\15I\310\15I\310\15I\310\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
|
|
||||||
"\0\0\0\0\0\0\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310"
|
|
||||||
"\0d\310\0d\310\0d\310\0d\5ii\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310"
|
|
||||||
"\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0"
|
|
||||||
"d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310"
|
|
||||||
"\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\5ii\310\0d\310\0d\310\0d\310"
|
|
||||||
"\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\15I\310\15I\310"
|
|
||||||
"\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310\0\0\0\0"
|
|
||||||
"\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\310\0d\310\0d\310\0"
|
|
||||||
"d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\5"
|
|
||||||
"ii\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d"
|
|
||||||
"\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310"
|
|
||||||
"\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0"
|
|
||||||
"d\310\0d\5ii\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310"
|
|
||||||
"\0d\310\0d\310\0d\310\0d\310\0d\15I\310\15I\310\15I\310\15I\310\15I\310\15"
|
|
||||||
"I\310\15I\310\15I\310\15I\310\15I\310\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
|
|
||||||
"\0\0\0\0\0\0\0\0\0\0\0\0\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0"
|
|
||||||
"d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\5ii\310\0d\310\0d\310"
|
|
||||||
"\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0"
|
|
||||||
"d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310"
|
|
||||||
"\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\5ii\310\0d\310\0d\310\0d\310"
|
|
||||||
"\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0"
|
|
||||||
"d\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310"
|
|
||||||
"\15I\310\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\310"
|
|
||||||
"\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0"
|
|
||||||
"d\310\0d\310\0d\310\0d\310\0d\5ii\310\0d\310\0d\310\0d\310\0d\310\0d\310"
|
|
||||||
"\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0"
|
|
||||||
"d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310"
|
|
||||||
"\0d\310\0d\5ii\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310"
|
|
||||||
"\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\15I\310\15I\310\15I\310\15"
|
|
||||||
"I\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310\0\0\0\0\0\0\0\0\0\0"
|
|
||||||
"\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\310\0d\310\0d\310\0d\310\0d\310"
|
|
||||||
"\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0"
|
|
||||||
"d\310\0d\5ii\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310"
|
|
||||||
"\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0"
|
|
||||||
"d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\5ii\310\0d\310\0d\310"
|
|
||||||
"\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0"
|
|
||||||
"d\310\0d\310\0d\310\0d\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310\15"
|
|
||||||
"I\310\15I\310\15I\310\15I\310\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
|
|
||||||
"\0\0\0\0\0\0\0\0\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d"
|
|
||||||
"\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\5ii\310\0"
|
|
||||||
"d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310"
|
|
||||||
"\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0"
|
|
||||||
"d\310\0d\310\0d\5ii\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310"
|
|
||||||
"\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\15I\310"
|
|
||||||
"\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310"
|
|
||||||
"\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\310\0d\310\0"
|
|
||||||
"d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310"
|
|
||||||
"\0d\310\0d\310\0d\310\0d\310\0d\310\0d\5ii\310\0d\310\0d\310\0d\310\0d\310"
|
|
||||||
"\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0"
|
|
||||||
"d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\5ii\310\0d\310\0d\310"
|
|
||||||
"\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0"
|
|
||||||
"d\310\0d\310\0d\310\0d\310\0d\310\0d\15I\310\15I\310\15I\310\15I\310\15I"
|
|
||||||
"\310\15I\310\15I\310\15I\310\15I\310\15I\310\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
|
|
||||||
"\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\310\0d\310\0d\310\0d\310\0d\310\0d\310\0"
|
|
||||||
"d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310"
|
|
||||||
"\0d\310\0d\310\0d\5ii\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310"
|
|
||||||
"\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0"
|
|
||||||
"d\310\0d\310\0d\5ii\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310"
|
|
||||||
"\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0"
|
|
||||||
"d\310\0d\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310"
|
|
||||||
"\15I\310\15I\310\0\377\0\0\377\0\0\377\0\0\377\0\0\377\0\0\377\0\0\377\0"
|
|
||||||
"\0\377\0\0\377\0\0\377\0\0\377\0\0\377\0\0\377\0\0\377\0\0\377\0\0\377\0"
|
|
||||||
"\0\377\0\0\377\0\0\377\0\0\377\0\0\377\0\0\377\0\0\377\0\0\377\0\0\377\0"
|
|
||||||
"\0\377\0\0\377\0\0\377\0\0\377\0\5ii\0\377\0\0\377\0\0\377\0\0\377\0\0\377"
|
|
||||||
"\0\0\377\0\0\377\0\0\377\0\0\377\0\0\377\0""77\5\0\377\0\0\377\0\0\377\0"
|
|
||||||
"\0\377\0\0\377\0\0\377\0\0\377\0\0\377\0\0\377\0\5ii\0\377\0\0\377\0\0\377"
|
|
||||||
"\0\0\377\0\0\377\0\0\377\0\0\377\0\0\377\0\0\377\0\0\377\0\0\377\0\0\377"
|
|
||||||
"\0\0\377\0\0\377\0\0\377\0\0\377\0\0\377\0\0\377\0\0\377\0\0\377\0\0\377"
|
|
||||||
"\0\0\377\0\0\377\0\0\377\0\0\377\0\0\377\0\0\377\0\0\377\0\0\377\0\0\0\0"
|
|
||||||
"\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\310\0d\310\0d\310"
|
|
||||||
"\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0"
|
|
||||||
"d\310\0d\310\0d\310\0d\310\0d\310\0d\5ii\310\0d\310\0d\310\0d\310\0d\310"
|
|
||||||
"\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d77\5\310\0d\310\0d\310\0d\310"
|
|
||||||
"\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\5ii\310\0d\310\0d\310\0d\310"
|
|
||||||
"\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0"
|
|
||||||
"d\310\0d\310\0d\310\0d\310\0d\15I\310\15I\310\15I\310\15I\310\15I\310\15"
|
|
||||||
"I\310\15I\310\15I\310\15I\310\15I\310\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
|
|
||||||
"\0\0\0\0\0\0\0\0\0\0\0\0\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0"
|
|
||||||
"d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\5"
|
|
||||||
"ii\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d"
|
|
||||||
"\310\0d\310\0d77\5\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0"
|
|
||||||
"d\310\0d\310\0d\310\0d\5ii\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310"
|
|
||||||
"\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0"
|
|
||||||
"d\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310"
|
|
||||||
"\15I\310\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\310"
|
|
||||||
"\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0"
|
|
||||||
"d\310\0d\310\0d\310\0d\310\0d\310\0d\5ii\310\0d\310\0d\310\0d\310\0d\310"
|
|
||||||
"\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d77\5\310\0d\310"
|
|
||||||
"\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0"
|
|
||||||
"d\5ii\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310"
|
|
||||||
"\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\15I\310\15I\310\15I\310\15"
|
|
||||||
"I\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310\0\0\0\0\0\0\0\0\0\0"
|
|
||||||
"\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\310\0d\310\0d\310\0d\310\0d\310"
|
|
||||||
"\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0"
|
|
||||||
"d\5ii\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310"
|
|
||||||
"\0d\310\0d\310\0d\310\0d\310\0d77\5\310\0d\310\0d\310\0d\310\0d\310\0d\310"
|
|
||||||
"\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\5ii\310\0d\310\0d\310"
|
|
||||||
"\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0"
|
|
||||||
"d\310\0d\310\0d\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310\15"
|
|
||||||
"I\310\15I\310\15I\310\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
|
|
||||||
"\0\0\0\0\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310"
|
|
||||||
"\0d\310\0d\310\0d\310\0d\310\0d\5ii\310\0d\310\0d\310\0d\310\0d\310\0d\310"
|
|
||||||
"\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d77\5\310"
|
|
||||||
"\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0"
|
|
||||||
"d\310\0d\310\0d\310\0d\5ii\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310"
|
|
||||||
"\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\15I\310\15I\310\15I"
|
|
||||||
"\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310\0\0\0\0\0\0"
|
|
||||||
"\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\310\0d\310\0d\310\0d\310"
|
|
||||||
"\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\5ii\310"
|
|
||||||
"\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0"
|
|
||||||
"d\310\0d\310\0d\310\0d\310\0d\310\0d77\5\310\0d\310\0d\310\0d\310\0d\310"
|
|
||||||
"\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0"
|
|
||||||
"d\5ii\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310"
|
|
||||||
"\0d\310\0d\310\0d\310\0d\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310"
|
|
||||||
"\15I\310\15I\310\15I\310\15I\310\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
|
|
||||||
"\0\0\0\0\0\0\0\0\0\0\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310"
|
|
||||||
"\0d\310\0d\310\0d\310\0d\310\0d\5ii\310\0d\310\0d\310\0d\310\0d\310\0d\310"
|
|
||||||
"\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0"
|
|
||||||
"d\310\0d77\5\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310"
|
|
||||||
"\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\5ii\310\0d\310\0d\310"
|
|
||||||
"\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\15I\310"
|
|
||||||
"\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310"
|
|
||||||
"\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\310\0d\310\0"
|
|
||||||
"d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\5ii\310"
|
|
||||||
"\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0"
|
|
||||||
"d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d77\5\310\0d\310\0d\310"
|
|
||||||
"\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0"
|
|
||||||
"d\310\0d\310\0d\310\0d\310\0d\5ii\310\0d\310\0d\310\0d\310\0d\310\0d\310"
|
|
||||||
"\0d\310\0d\310\0d\310\0d\310\0d\310\0d\15I\310\15I\310\15I\310\15I\310\15"
|
|
||||||
"I\310\15I\310\15I\310\15I\310\15I\310\15I\310\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
|
|
||||||
"\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\310\0d\310\0d\310\0d\310\0d\310\0d\310\0"
|
|
||||||
"d\310\0d\310\0d\310\0d\310\0d\5ii\310\0d\310\0d\310\0d\310\0d\310\0d\310"
|
|
||||||
"\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0"
|
|
||||||
"d\310\0d\310\0d\310\0d77\5\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310"
|
|
||||||
"\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0"
|
|
||||||
"d\310\0d\5ii\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310"
|
|
||||||
"\0d\310\0d\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310"
|
|
||||||
"\15I\310\15I\310\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
|
|
||||||
"\0\0\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\5ii\310"
|
|
||||||
"\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0"
|
|
||||||
"d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d77\5\310"
|
|
||||||
"\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0"
|
|
||||||
"d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\5ii\310\0d\310"
|
|
||||||
"\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\15I\310\15I\310\15I"
|
|
||||||
"\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310\0\0\0\0\0\0"
|
|
||||||
"\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\310\0d\310\0d\310\0d\310"
|
|
||||||
"\0d\310\0d\310\0d\310\0d\310\0d\5ii\310\0d\310\0d\310\0d\310\0d\310\0d\310"
|
|
||||||
"\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0"
|
|
||||||
"d\310\0d\310\0d\310\0d\310\0d\310\0d77\5\310\0d\310\0d\310\0d\310\0d\310"
|
|
||||||
"\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0"
|
|
||||||
"d\310\0d\310\0d\310\0d\310\0d\310\0d\5ii\310\0d\310\0d\310\0d\310\0d\310"
|
|
||||||
"\0d\310\0d\310\0d\310\0d\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310"
|
|
||||||
"\15I\310\15I\310\15I\310\15I\310\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
|
|
||||||
"\0\0\0\0\0\0\0\0\0\0\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\5i"
|
|
||||||
"i\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310"
|
|
||||||
"\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0"
|
|
||||||
"d\310\0d77\5\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310"
|
|
||||||
"\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0"
|
|
||||||
"d\310\0d\310\0d\5ii\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\15I"
|
|
||||||
"\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I"
|
|
||||||
"\310\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\310\0d\310"
|
|
||||||
"\0d\310\0d\310\0d\310\0d\310\0d\5ii\310\0d\310\0d\310\0d\310\0d\310\0d\310"
|
|
||||||
"\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0"
|
|
||||||
"d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d77\5\310\0d\310\0d\310"
|
|
||||||
"\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0"
|
|
||||||
"d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\5ii\310"
|
|
||||||
"\0d\310\0d\310\0d\310\0d\310\0d\310\0d\15I\310\15I\310\15I\310\15I\310\15"
|
|
||||||
"I\310\15I\310\15I\310\15I\310\15I\310\15I\310\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
|
|
||||||
"\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\310\0d\310\0d\310\0d\310\0d\310\0d\5ii\310"
|
|
||||||
"\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0"
|
|
||||||
"d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310"
|
|
||||||
"\0d\310\0d\310\0d77\5\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310"
|
|
||||||
"\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0"
|
|
||||||
"d\310\0d\310\0d\310\0d\310\0d\310\0d\5ii\310\0d\310\0d\310\0d\310\0d\310"
|
|
||||||
"\0d\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310"
|
|
||||||
"\15I\310\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\310"
|
|
||||||
"\0d\310\0d\310\0d\310\0d\5ii\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310"
|
|
||||||
"\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0"
|
|
||||||
"d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d77\5\310\0d\310"
|
|
||||||
"\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0"
|
|
||||||
"d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310"
|
|
||||||
"\0d\310\0d\5ii\310\0d\310\0d\310\0d\310\0d\15I\310\15I\310\15I\310\15I\310"
|
|
||||||
"\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310\0\0\0\0\0\0\0\0\0\0\0\0"
|
|
||||||
"\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\310\0d\310\0d\310\0d\5ii\310\0d\310"
|
|
||||||
"\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0"
|
|
||||||
"d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310"
|
|
||||||
"\0d\310\0d\310\0d\310\0d77\5\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310"
|
|
||||||
"\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0"
|
|
||||||
"d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\5ii\310\0d\310"
|
|
||||||
"\0d\310\0d\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310"
|
|
||||||
"\15I\310\15I\310\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
|
|
||||||
"\0\0\310\0d\310\0d\5ii\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310"
|
|
||||||
"\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0"
|
|
||||||
"d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d77\5\310"
|
|
||||||
"\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0"
|
|
||||||
"d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310"
|
|
||||||
"\0d\310\0d\310\0d\310\0d\310\0d\5ii\310\0d\310\0d\15I\310\15I\310\15I\310"
|
|
||||||
"\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310\0\0\0\0\0\0\0\0"
|
|
||||||
"\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\310\0d\5ii\310\0d\310\0d\310"
|
|
||||||
"\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0"
|
|
||||||
"d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310"
|
|
||||||
"\0d\310\0d\310\0d\310\0d\310\0d77\5\310\0d\310\0d\310\0d\310\0d\310\0d\310"
|
|
||||||
"\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0"
|
|
||||||
"d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310"
|
|
||||||
"\0d\5ii\310\0d\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310\15"
|
|
||||||
"I\310\15I\310\15I\310\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
|
|
||||||
"\0\0\0\0\5ii\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310"
|
|
||||||
"\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0"
|
|
||||||
"d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d7"
|
|
||||||
"7\5\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0"
|
|
||||||
"d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310"
|
|
||||||
"\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\5ii\15I\310\15I\310"
|
|
||||||
"\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310\0\0\0\0"
|
|
||||||
"\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\5ii\0\0\0\0\0\0\0\0\0\0\0"
|
|
||||||
"\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
|
|
||||||
"\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
|
|
||||||
"\0\0\0\0\0\0\0""77\5\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I"
|
|
||||||
"\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I"
|
|
||||||
"\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I"
|
|
||||||
"\310\15I\310\15I\310\15I\310\15I\310\5ii\15I\310\15I\310\15I\310\15I\310"
|
|
||||||
"\15I\310\15I\310\15I\310\15I\310\15I\310\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
|
|
||||||
"\0\0\0\0\0\0\0\0\5ii\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
|
|
||||||
"\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
|
|
||||||
"\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0""77\5\15I"
|
|
||||||
"\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I"
|
|
||||||
"\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I"
|
|
||||||
"\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I"
|
|
||||||
"\310\15I\310\15I\310\5ii\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310"
|
|
||||||
"\15I\310\15I\310\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\5ii\0\0\0\0\0"
|
|
||||||
"\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
|
|
||||||
"\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
|
|
||||||
"\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0""77\5\15I\310\15I\310\15I\310\15I"
|
|
||||||
"\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I"
|
|
||||||
"\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I"
|
|
||||||
"\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I"
|
|
||||||
"\310\5ii\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310\0\0\0\0"
|
|
||||||
"\0\0\0\0\0\0\0\0\0\0\0\0\0\0\5ii\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
|
|
||||||
"\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
|
|
||||||
"\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
|
|
||||||
"\0\0\0\0\0\0\0""77\5\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I"
|
|
||||||
"\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I"
|
|
||||||
"\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I"
|
|
||||||
"\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310\5ii\15I\310"
|
|
||||||
"\15I\310\15I\310\15I\310\15I\310\15I\310\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\5"
|
|
||||||
"ii\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
|
|
||||||
"\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
|
|
||||||
"\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0""77\5\15I"
|
|
||||||
"\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I"
|
|
||||||
"\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I"
|
|
||||||
"\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I"
|
|
||||||
"\310\15I\310\15I\310\15I\310\15I\310\15I\310\5ii\15I\310\15I\310\15I\310"
|
|
||||||
"\15I\310\15I\310\0\0\0\0\0\0\0\0\0\0\0\0\5ii\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
|
|
||||||
"\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
|
|
||||||
"\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
|
|
||||||
"\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0""77\5\15I\310\15I\310\15I\310\15I"
|
|
||||||
"\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I"
|
|
||||||
"\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I"
|
|
||||||
"\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I"
|
|
||||||
"\310\15I\310\15I\310\15I\310\5ii\15I\310\15I\310\15I\310\15I\310\0\0\0\0"
|
|
||||||
"\0\0\0\0\0\5ii\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
|
|
||||||
"\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
|
|
||||||
"\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
|
|
||||||
"\0\0\0\0\0\0\0""77\5\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I"
|
|
||||||
"\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I"
|
|
||||||
"\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I"
|
|
||||||
"\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I"
|
|
||||||
"\310\15I\310\5ii\15I\310\15I\310\15I\310\0\0\0\0\0\0\5ii\0\0\0\0\0\0\0\0"
|
|
||||||
"\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
|
|
||||||
"\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
|
|
||||||
"\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0""77\5\15I"
|
|
||||||
"\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I"
|
|
||||||
"\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I"
|
|
||||||
"\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I"
|
|
||||||
"\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310\5ii"
|
|
||||||
"\15I\310\15I\310\0\0\0\5ii\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
|
|
||||||
"\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
|
|
||||||
"\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
|
|
||||||
"\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0""77\5\15I\310\15I\310\15I\310\15I"
|
|
||||||
"\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I"
|
|
||||||
"\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I"
|
|
||||||
"\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I"
|
|
||||||
"\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310\5ii\15I\310\5ii\0\0"
|
|
||||||
"\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
|
|
||||||
"\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
|
|
||||||
"\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
|
|
||||||
"\0\0\0\0\0\0\0""77\5\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I"
|
|
||||||
"\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I"
|
|
||||||
"\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I"
|
|
||||||
"\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I"
|
|
||||||
"\310\15I\310\15I\310\15I\310\15I\310\5ii",
|
|
||||||
};
|
|
||||||
|
|
|
@ -1,645 +0,0 @@
|
||||||
/* GIMP RGB C-Source image dump (alpha.c) */
|
|
||||||
|
|
||||||
static const SurfaceImage_t img_blend = {
|
|
||||||
80, 60, 3,
|
|
||||||
"\260e\15\222\356/\37\313\15\36\330\17K\3745D\3471\0\20\0D\3502D\3502<\321"
|
|
||||||
",\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\0-\0\377\377"
|
|
||||||
"\377\377\377\377\311\324\311\377\377\377\377\377\377\377\377\377\377\377"
|
|
||||||
"\377\377\377\377\0H\0\377\377\377\377\377\377\256\307\256\377\377\377\377"
|
|
||||||
"\377\377\377\377\377\377\377\377\377\377\377\0c\0\377\377\377\377\377\377"
|
|
||||||
"\223\300\223\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377"
|
|
||||||
"\0~\0\377\377\377\377\377\377x\277x\377\377\377\377\377\377\377\377\377\377"
|
|
||||||
"\377\377\377\377\377\0\231\0\377\377\377\377\377\377]\303]\377\377\377\377"
|
|
||||||
"\377\377\377\377\377\377\377\377\377\377\377\0\264\0\377\377\377\377\377"
|
|
||||||
"\377B\316B\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\0"
|
|
||||||
"\317\0\377\377\377\377\377\377'\335'\377\377\377\377\377\377\377\377\377"
|
|
||||||
"\377\377\377\377\377\377\0\352\0\377\377\377#\262\6\260d\15\260e\15\224\357"
|
|
||||||
"/&\262\6\34\300\5.\314\22\40\315\12[\3747M\332/\27\331\12\27\331\12K\374"
|
|
||||||
"5K\3745K\3745D\3471D\3471D\3471D\3471D\3471D\3502D\3502D\3502D\3502D\350"
|
|
||||||
"2D\3502D\3502D\3502D\3502D\3502\377\377\377\377\377\377\377\377\377\377\377"
|
|
||||||
"\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377"
|
|
||||||
"\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377"
|
|
||||||
"\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377"
|
|
||||||
"\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377"
|
|
||||||
"\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377"
|
|
||||||
"\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377"
|
|
||||||
"\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377"
|
|
||||||
"\377\377\377\377\377\377\377\377\377\377\377\377\377,\372\27\273\3465\327"
|
|
||||||
"Q.\260d\15\213\213\40\241\3601\200\366*=\265\13?\301\25s\375<Y\316-X\320"
|
|
||||||
"-!\315\13]\3749]\3749O\3321O\3321P\3342P\3342P\3342\371\377\364\371\377\364"
|
|
||||||
"\371\377\364\371\377\364\371\377\364\362\375\360\362\375\360\362\375\360"
|
|
||||||
"\362\375\360\362\375\360D\3471D\3471D\3471D\3502D\3502D\3502D\3502D\3502"
|
|
||||||
"D\3502D\3502D\3502D\3502D\3502D\3502D\3502D\3502D\3502D\3502D\3502D\3502"
|
|
||||||
"\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377"
|
|
||||||
"\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377"
|
|
||||||
"\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377"
|
|
||||||
"\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377"
|
|
||||||
"\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377"
|
|
||||||
"K\3745&\262\6\213\213\40\11\2\0\260`\15\241~#m}\11\273\363AQ\247\15S\266"
|
|
||||||
"\31\212\373@e\302,\4\33\2s\375<\\\3161M\260*\\\3202X\320-\366\377\354\364"
|
|
||||||
"\377\352O\3321\3""5\2O\3321O\3321<\261&P\3342P\3342S\3655\377\377\377\377"
|
|
||||||
"\377\377\14Z\14\377\377\377\377\377\377\234\302\231\371\377\364\362\375\360"
|
|
||||||
"\367\377\365\362\375\360\362\375\360\13t\13\362\375\360\362\375\360\177\275"
|
|
||||||
"~\362\375\360\362\375\360\370\377\366\362\375\360\377\377\377\14\220\14\377"
|
|
||||||
"\377\377D\3502\"\267\33D\3502D\3502K\3779D\3502D\3502\3\233\2D\3502D\350"
|
|
||||||
"2\34\303\26D\3502D\3502L\377:D\3502D\3502\3\264\2D\3502D\3502\25\323\22\377"
|
|
||||||
"\377\377\377\377\377\377\377\377\377\377\377\377\377\377\14\341\14\377\377"
|
|
||||||
"\377\377\377\377\40\353\40\377\377\377D\3471\34\300\5e\247\33\356\336?\277"
|
|
||||||
"f)\260P\17\260i\16\356\336?\331\353C\274\363GQ\247\15\243\370Cp\270)\212"
|
|
||||||
"\373@h\3021h\3042c\304+\364\377\336\\\3161\\\3161\\\3202\\\3202\\\3202\377"
|
|
||||||
"\377\377\364\377\352\364\377\352\346\371\342\346\371\342O\3321O\3321P\334"
|
|
||||||
"2P\3342P\3342P\3342P\3342P\3342\377\377\377\377\377\377\377\377\377\377\377"
|
|
||||||
"\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377"
|
|
||||||
"\377\377\377\377\362\375\360\362\375\360\362\375\360\362\375\360\362\375"
|
|
||||||
"\360\362\375\360\362\375\360\362\375\360\362\375\360\362\375\360\362\375"
|
|
||||||
"\360\362\375\360\362\375\360\377\377\377\377\377\377\377\377\377\377\377"
|
|
||||||
"\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377"
|
|
||||||
"\377D\3502D\3502D\3502D\3502D\3502D\3502D\3502D\3502D\3502D\3502D\3502\40"
|
|
||||||
"\315\12=\265\13f\230\14\237y\15\274Y\17\327Q.\260X\14\243\177$\220\214\""
|
|
||||||
"\215\235*\274\363G\177\252+\243\370Cu\2661p\270)\367\377\324h\3021h\3021"
|
|
||||||
"h\3042\364\377\336\364\377\336\335\364\323\\\3161\\\3161\\\3202\\\3202\\"
|
|
||||||
"\3202\377\377\377\377\377\377\364\377\352\364\377\352\346\371\342\346\371"
|
|
||||||
"\342\346\371\342\346\371\342O\3321P\3342P\3342P\3342P\3342P\3342P\3342P\334"
|
|
||||||
"2\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377"
|
|
||||||
"\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377"
|
|
||||||
"\377\377\377\377\377\377\377\377\377\377\377\377\362\375\360\362\375\360"
|
|
||||||
"\362\375\360\362\375\360\362\375\360\362\375\360\362\375\360\362\375\360"
|
|
||||||
"\362\375\360\362\375\360\362\375\360\362\375\360\362\375\360\377\377\377"
|
|
||||||
"\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377"
|
|
||||||
"\6\0\4[\3747?\301\25N\241\14\331\353C\243\177$\275Z\21\377\254W\260Q\17\30"
|
|
||||||
"\26\7\370\343N\201\210\16|\213-\274\363G\200\2521\202\263+\243\370Cu\266"
|
|
||||||
"1\12&\4\367\377\324h\3021S\241)h\3042h\3042\377\377\377\364\377\336\335\364"
|
|
||||||
"\323\24M\23\\\3161\\\3202C\245(\\\3202\\\3202\377\377\377\377\377\377\377"
|
|
||||||
"\377\377\30l\30\346\371\342\346\371\342\207\273\205\346\371\342\346\371\342"
|
|
||||||
"\361\377\355\377\377\377P\3342\7t\4P\3342P\3342/\260\"P\3342P\3342^\377@"
|
|
||||||
"\377\377\377\377\377\377\30\242\30\377\377\377\377\377\377d\306d\377\377"
|
|
||||||
"\377\377\377\377\377\377\377\377\377\377\377\377\377\30\275\30\377\377\377"
|
|
||||||
"\377\377\377K\322K\377\377\377\377\377\377\377\377\377\377\377\377\377\377"
|
|
||||||
"\377\30\330\30\362\375\360\362\375\3601\3431\362\375\360\362\375\360\377"
|
|
||||||
"\377\377\362\375\360D\3502M\332/s\375<>\265\14\177\252+\201\210\16\245\204"
|
|
||||||
"*\377\314U\312\\,\224'\11\260i\17\244\210\40\232\2211\331\353J\215\2351\377"
|
|
||||||
"\377\276\200\2521\200\2542\375\377\310u\2661t\2702t\2702\367\377\324\325"
|
|
||||||
"\355\305h\3021h\3042h\3042\377\377\377\377\377\377\364\377\336\335\364\323"
|
|
||||||
"\335\364\323\335\364\323\\\3202\\\3202\\\3202\\\3202\\\3202\377\377\377\377"
|
|
||||||
"\377\377\377\377\377\377\377\377\377\377\377\346\371\342\346\371\342\346"
|
|
||||||
"\371\342\346\371\342\346\371\342\346\371\342\346\371\342\377\377\377\377"
|
|
||||||
"\377\377P\3342P\3342P\3342P\3342P\3342P\3342P\3342P\3342\377\377\377\377"
|
|
||||||
"\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377"
|
|
||||||
"\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377"
|
|
||||||
"\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377"
|
|
||||||
"\377\377\377\377\377\27\331\12Y\316-h\3021\243\370Cg\230\15\230\224\"\245"
|
|
||||||
"\204*\377\314U\310J\21\327Q.\260b\21\245\2041\370\343N\230\2242\331\353J"
|
|
||||||
"\214\2402\377\377\276\200\2521\200\2542\375\377\310\317\344\266u\2661t\270"
|
|
||||||
"2\377\377\377\367\377\324\325\355\305h\3021h\3042h\3042h\3042\377\377\377"
|
|
||||||
"\377\377\377\364\377\336\335\364\323\335\364\323\335\364\323\335\364\323"
|
|
||||||
"\\\3202\\\3202\\\3202\\\3202\377\377\377\377\377\377\377\377\377\377\377"
|
|
||||||
"\377\377\377\377\377\377\377\377\377\377\377\377\377\346\371\342\346\371"
|
|
||||||
"\342\346\371\342\346\371\342\346\371\342\346\371\342\377\377\377\377\377"
|
|
||||||
"\377\377\377\377\377\377\377P\3342P\3342P\3342P\3342P\3342P\3342P\3342P\334"
|
|
||||||
"2\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377"
|
|
||||||
"\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377"
|
|
||||||
"\377\377\377K\3745!\315\13d\304,p\270)\177\252+\23\13\6\232\2211\245\204"
|
|
||||||
"1\347\270O\377\277Y\324<\22\265V\24\377\330Q\244\210\40#(\13\230\224\"\331"
|
|
||||||
"\353Ju\211.\377\377\276\200\2521\210\273:\200\2542\375\377\310\20""3\6u\266"
|
|
||||||
"1t\2702\271\307\271\367\377\324\325\355\305\341\377\321h\3021h\3042\16L\7"
|
|
||||||
"h\3042\377\377\377\242\300\242\377\377\377\335\364\323\355\377\343\335\364"
|
|
||||||
"\323\335\364\323\14f\7\\\3202\\\3202>\250*\\\3202\377\377\377\377\377\377"
|
|
||||||
"\377\377\377\377\377\377$\231$\377\377\377\377\377\377s\303s\377\377\377"
|
|
||||||
"\346\371\342\376\377\372\346\371\342\346\371\342\40\257\37\346\371\342\346"
|
|
||||||
"\371\342\\\316\\\377\377\377\377\377\377\377\377\377\377\377\377P\3342\13"
|
|
||||||
"\262\7P\3342P\3342*\327%P\3342P\3342o\377Q\377\377\377\377\377\377$\352$"
|
|
||||||
"\377\377\377\377\377\377K\3745]\3749s\375<\212\373@\243\370C\274\363G\331"
|
|
||||||
"\353J\370\343N\377\330Q\377\314U\377\277Y\377\260\\\224(\11\260|\36\245\204"
|
|
||||||
"1\377\377\250\232\2211\230\224\"\215\2351\214\2402\377\377\276\312\332\250"
|
|
||||||
"\200\2521\200\2542\377\377\377\317\344\266u\2661t\2702t\2702\377\377\377"
|
|
||||||
"\377\377\377\325\355\305\325\355\305\325\355\305h\3042h\3042h\3042\377\377"
|
|
||||||
"\377\377\377\377\377\377\377\377\377\377\335\364\323\335\364\323\335\364"
|
|
||||||
"\323\335\364\323\335\364\323\\\3202\\\3202\\\3202\\\3202\\\3202\377\377\377"
|
|
||||||
"\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377"
|
|
||||||
"\377\377\377\377\377\377\377\377\377\377\377\377\346\371\342\346\371\342"
|
|
||||||
"\346\371\342\346\371\342\346\371\342\346\371\342\346\371\342\377\377\377"
|
|
||||||
"\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377P\3342P\3342"
|
|
||||||
"P\3342P\3342\377\377\377K\3745O\3321\\\3161h\3021t\2702~\254'\214\240%\377"
|
|
||||||
"\377\262\370\343N\377\330Q\262x1\277l1\312`1\327R.\260X\23\377\330Q\244\210"
|
|
||||||
"2\377\377\250\230\2242\377\377\262\215\2351\214\2402\377\377\377\312\332"
|
|
||||||
"\250\200\2521\200\2542\377\377\377\375\377\310\317\344\266u\2661t\2702t\270"
|
|
||||||
"2\377\377\377\377\377\377\325\355\305\325\355\305\325\355\305h\3042h\304"
|
|
||||||
"2h\3042h\3042\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377"
|
|
||||||
"\335\364\323\335\364\323\335\364\323\335\364\323\377\377\377\\\3202\\\320"
|
|
||||||
"2\\\3202\\\3202\\\3202\377\377\377\377\377\377\377\377\377\377\377\377\377"
|
|
||||||
"\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377"
|
|
||||||
"\377\377\377\377\377\377\377\377\346\371\342\346\371\342\346\371\342\346"
|
|
||||||
"\371\342\346\371\342\346\371\342\377\377\377\377\377\377\377\377\377\377"
|
|
||||||
"\377\377\377\377\377D\3471O\3321\21\7\11c\304+\367\377\324o\2520\200\252"
|
|
||||||
"1\214\2402\235\226'\377\377\250\377\330Q!\20\11\277l1\310d2\266?\33\224("
|
|
||||||
"\11\260|\36\257\217;\377\377\250\232\2211\34$\11\377\377\262\215\2351q\206"
|
|
||||||
"0\377\377\377\312\332\250\217\303@\200\2542\200\25420Z0\317\344\266\317\344"
|
|
||||||
"\266X\2260t\2702t\2702\377\377\377\377\377\377\325\355\305(l%\325\355\305"
|
|
||||||
"\325\355\305K\2410h\3042h\3042\377\377\377\377\377\377\377\377\3770\2200"
|
|
||||||
"\377\377\377\377\377\377t\274p\335\364\323\335\364\323\373\377\361\377\377"
|
|
||||||
"\377\377\377\377\21\213\11\\\3202\\\3202<\274/\\\3202\377\377\377\377\377"
|
|
||||||
"\377\377\377\377\377\377\3770\3060\377\377\377\377\377\377V\330V\377\377"
|
|
||||||
"\377\377\377\377\377\377\377\377\377\377\377\377\3770\3410\346\371\342\346"
|
|
||||||
"\371\342>\352>\346\371\342\377\377\377D\3471P\3342\364\377\352s\375<h\302"
|
|
||||||
"1t\2702~\254'\377\377\276\215\2351\230\2242\244\210\40\377\377\234\262x1"
|
|
||||||
"\277l1\310W\32\377\260\\\327T1\260|2\377\330Q\244\2102\377\377\250\232\221"
|
|
||||||
"1\230\2242\377\377\262\215\2351\214\2402\377\377\377\377\377\276\312\332"
|
|
||||||
"\250\200\2542\200\2542\377\377\377\375\377\310\317\344\266\317\344\266t\270"
|
|
||||||
"2t\2702t\2702\377\377\377\377\377\377\377\377\377\325\355\305\325\355\305"
|
|
||||||
"\325\355\305h\3042h\3042h\3042h\3042\377\377\377\377\377\377\377\377\377"
|
|
||||||
"\377\377\377\377\377\377\377\377\377\335\364\323\335\364\323\335\364\323"
|
|
||||||
"\335\364\323\335\364\323\377\377\377\377\377\377\\\3202\\\3202\\\3202\\\320"
|
|
||||||
"2\\\3202\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377"
|
|
||||||
"\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377"
|
|
||||||
"\377\377\377\377\377\377\377\377D\3471P\3342\364\377\352\\\3161h\3042\367"
|
|
||||||
"\377\324u\2661\200\2542\214\240%\377\377\262\232\2211\244\2102\377\377\234"
|
|
||||||
"\262x1\274p2\377\337\207\377\260\\\327T1\227/\14\377\377\234\245\2041\244"
|
|
||||||
"\2102\307\300\213\230\2242\377\377\377\377\377\262\215\2351\214\2402\377"
|
|
||||||
"\377\377\377\377\276\312\332\250\200\2542\200\2542\377\377\377\377\377\377"
|
|
||||||
"\317\344\266\317\344\266\317\344\266t\2702t\2702\377\377\377\377\377\377"
|
|
||||||
"\377\377\377\377\377\377\325\355\305\325\355\305\325\355\305\377\377\377"
|
|
||||||
"h\3042h\3042h\3042h\3042\377\377\377\377\377\377\377\377\377\377\377\377"
|
|
||||||
"\377\377\377\377\377\377\377\377\377\335\364\323\335\364\323\335\364\323"
|
|
||||||
"\335\364\323\377\377\377\377\377\377\377\377\377\\\3202\\\3202\\\3202\\\320"
|
|
||||||
"2\\\3202\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377"
|
|
||||||
"\377\377\377\377\377\377\377\377<\0<D\3502\371\377\364N\3221\\\3202\364\377"
|
|
||||||
"\336l\3035t\2702\375\377\310\36\22\13\214\2402\377\377\262\214\2012\244\210"
|
|
||||||
"2\377\377\234\274\177;\274p2\377\337\207/\24\13\324X2\227/\14\222l3\307\260"
|
|
||||||
"|\244\2102\377\377\270\232\2211\230\2242<Q<\310\316\231\215\2351o\2065\377"
|
|
||||||
"\377\377\377\377\276\341\377\277\200\2521\200\2542\36H\13\377\377\377\377"
|
|
||||||
"\377\377\213\260}\317\344\266t\2702\221\366Ot\2702\377\377\377<\207<\377"
|
|
||||||
"\377\377\377\377\377}\270v\325\355\305\325\355\305\371\377\351\377\377\377"
|
|
||||||
"h\3042\30|\13h\3042\377\377\377|\306|\377\377\377\377\377\377\377\377\377"
|
|
||||||
"\377\377\377\377\377\377<\275<\335\364\323\335\364\323_\317]\335\364\323"
|
|
||||||
"\335\364\323\377\377\377\377\377\377\377\377\377\25\260\13\\\3202\\\3202"
|
|
||||||
">\3369\\\3202\377\377\377\377\377\377\377\377\377\377\377\377D\3502\371\377"
|
|
||||||
"\364O\3321\\\3202\364\377\336h\3042\367\377\324u\2661\200\2542\377\377\276"
|
|
||||||
"\215\2351\230\2242\307\300\213\244\2102\377\377\234\262x1\274p2\377\337\207"
|
|
||||||
"\312`1\324E\30\327T1\260|2\377\377\234\245\2041\244\2102\377\377\250\232"
|
|
||||||
"\2211\230\2242\377\377\377\310\316\231\215\2351\214\2402\377\377\377\377"
|
|
||||||
"\377\377\312\332\250\312\332\250\200\2542\200\2542\377\377\377\377\377\377"
|
|
||||||
"\317\344\266\317\344\266\317\344\266t\2702t\2702t\2702\377\377\377\377\377"
|
|
||||||
"\377\377\377\377\377\377\377\377\377\377\325\355\305\325\355\305\325\355"
|
|
||||||
"\305\377\377\377h\3042h\3042h\3042h\3042\377\377\377\377\377\377\377\377"
|
|
||||||
"\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377"
|
|
||||||
"\377\335\364\323\335\364\323\335\364\323\335\364\323\377\377\377\377\377"
|
|
||||||
"\377\377\377\377\377\377\377\\\3202\\\3202\\\3202\377\377\377D\3502\371\377"
|
|
||||||
"\364O\3321\377\377\377\\\3161h\3042\367\377\324t\2702\375\377\310\200\252"
|
|
||||||
"1\377\377\377\215\2351\230\2242\377\377\250\244\2102\377\377\234\262x1\274"
|
|
||||||
"p2\316\214_\310d2\377\310|\327T1\227/\14\377\377\377\307\260|\244\2102\377"
|
|
||||||
"\377\377\307\300\213\230\2242\230\2242\377\377\377\310\316\231\214\2402\214"
|
|
||||||
"\2402\377\377\377\377\377\377\312\332\250\312\332\250\200\2542\200\2542\377"
|
|
||||||
"\377\377\377\377\377\377\377\377\317\344\266\317\344\266\317\344\266t\270"
|
|
||||||
"2t\2702t\2702\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377"
|
|
||||||
"\325\355\305\325\355\305\325\355\305\377\377\377\377\377\377h\3042h\3042"
|
|
||||||
"h\3042\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377"
|
|
||||||
"\377\377\377\377\377\377\377\377\377\377\377\377\377\335\364\323\335\364"
|
|
||||||
"\323\335\364\323\335\364\323\377\377\377\377\377\377\377\377\377\377\377"
|
|
||||||
"\377D\3502\371\377\364R\3344\364\377\352\\\3161H\22Hh\3021\377\377\377o\244"
|
|
||||||
"2\200\2542\312\332\250\226\245<\377\377\262\230\2242H-/\245\2041\377\377"
|
|
||||||
"\377\233i5\274p2\277l1\331sC\377\310|\324X2*\15\3\260|2\377\377\234\206s"
|
|
||||||
"7\244\2102\377\377\250\340\337\244\230\2242\377\377\377Hc2\310\316\231\214"
|
|
||||||
"\2402n\211:\377\377\377\377\377\377\353\377\311\312\332\250\200\2542$T\16"
|
|
||||||
"\377\377\377\377\377\377\236\277\236\377\377\377\317\344\266\367\377\336"
|
|
||||||
"\377\377\377t\2702\40n\16t\2702\377\377\377\212\303\212\377\377\377\377\377"
|
|
||||||
"\377\377\377\377\325\355\305\325\355\305<\2477\377\377\377\377\377\377O\276"
|
|
||||||
"Ah\3042h\3042\237\377i\377\377\377\377\377\377H\317H\377\377\377\377\377"
|
|
||||||
"\377c\335c\377\377\377\377\377\377\377\377\377\377\377\377\335\364\323>\337"
|
|
||||||
";\335\364\323\377\377\377D\3502\362\375\360P\3342\346\371\342\\\3202\364"
|
|
||||||
"\377\336h\3042\367\377\324t\2702\375\377\310\200\2542\377\377\276\214\240"
|
|
||||||
"2\377\377\262\232\2211\377\377\377\245\2041\377\377\377\262x1\377\377\377"
|
|
||||||
"\277l1\310d2\312`1\324X2\327T1\260|2\377\377\377\307\260|\244\2102\377\377"
|
|
||||||
"\377\307\300\213\232\2211\230\2242\377\377\377\377\377\262\310\316\231\214"
|
|
||||||
"\2402\214\2402\377\377\377\377\377\377\312\332\250\312\332\250\200\2542\200"
|
|
||||||
"\2542\200\2542\377\377\377\377\377\377\377\377\377\317\344\266\317\344\266"
|
|
||||||
"\317\344\266\377\377\377t\2702t\2702t\2702\377\377\377\377\377\377\377\377"
|
|
||||||
"\377\377\377\377\377\377\377\325\355\305\325\355\305\325\355\305\325\355"
|
|
||||||
"\305\377\377\377\377\377\377h\3042h\3042h\3042h\3042\377\377\377\377\377"
|
|
||||||
"\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377"
|
|
||||||
"\377\377\377\377\377\377\377D\3502\362\375\360P\3342\346\371\342\\\3202\335"
|
|
||||||
"\364\323h\3042\325\355\305t\2702\317\344\266\377\377\377\200\2521\377\377"
|
|
||||||
"\377\215\2351\377\377\377\232\2211\377\377\377\245\2041\377\377\377\262x"
|
|
||||||
"1\377\377\377\277l1\377\377\377\312`1\377\310|\327T1\227/\14\377\377\377"
|
|
||||||
"\307\260|\244\2102\244\2102\377\377\377\307\300\213\230\2242\230\2242\377"
|
|
||||||
"\377\377\310\316\231\310\316\231\214\2402\214\2402\377\377\377\377\377\377"
|
|
||||||
"\312\332\250\312\332\250\377\377\377\200\2542\200\2542\377\377\377\377\377"
|
|
||||||
"\377\377\377\377\377\377\377\317\344\266\317\344\266\377\377\377\377\377"
|
|
||||||
"\377t\2702t\2702\377\377\377\377\377\377\377\377\377\377\377\377\377\377"
|
|
||||||
"\377\377\377\377\377\377\377\325\355\305\325\355\305\325\355\305\377\377"
|
|
||||||
"\377\377\377\377\377\377\377h\3042h\3042h\3042\377\377\377\377\377\377\377"
|
|
||||||
"\377\377\377\377\377\377\377\377\377\377\377\377\377\377D\3502\362\375\360"
|
|
||||||
"T\11TO\3321\377\377\377Z\3002\377\377\377h\3042\377\377\334t\2702\375\377"
|
|
||||||
"\310*\30\20\312\332\250\214\2402\262\260\214\230\2242\307\300\213\377\377"
|
|
||||||
"\377\245\2041\377\377\377:\35\20\377\377\377\277l1\316\264w\310d2\377\310"
|
|
||||||
"|\356qL\227/\14\260|2TZ3\307\260|\244\2102\274\302\274\307\300\213\307\300"
|
|
||||||
"\213\273\301U\377\377\377\377\377\377A^2\310\316\231\214\2402o\216B\377\377"
|
|
||||||
"\377\377\377\377\366\377\324\312\332\250\312\332\250*a\20\200\2542\377\377"
|
|
||||||
"\377\230\301\230\377\377\377\377\377\377\377\377\353\317\344\266\317\344"
|
|
||||||
"\266T\253Tt\2702t\2702]\265I\377\377\377\377\377\377\377\377\377\377\377"
|
|
||||||
"\377\377\377\377T\306T\377\377\377\325\355\305l\324i\325\355\305\377\377"
|
|
||||||
"\377\377\377\377\377\377\377h\3042\"\254\20h\3042h\3042b\353b\377\377\377"
|
|
||||||
"\377\377\377D\3502\362\375\360\377\377\377O\3321\377\377\377\\\3202\364\377"
|
|
||||||
"\336h\3042\325\355\305t\2702\317\344\266\377\377\377\200\2521\377\377\377"
|
|
||||||
"\214\2402\377\377\262\230\2242\307\300\213\244\2102\307\260|\377\377\377"
|
|
||||||
"\262x1\377\377\377\274p2\377\337\207\310d2\377\310|\324X2\333bB\260|2\377"
|
|
||||||
"\377\377\307\260|\244\2102\244\2102\377\377\377\307\300\213\232\2211\230"
|
|
||||||
"\2242\377\377\377\377\377\377\310\316\231\310\316\231\214\2402\214\2402\377"
|
|
||||||
"\377\377\377\377\377\377\377\377\312\332\250\312\332\250\200\2542\200\254"
|
|
||||||
"2\200\2542\377\377\377\377\377\377\377\377\377\377\377\377\317\344\266\317"
|
|
||||||
"\344\266\317\344\266\377\377\377t\2702t\2702t\2702\377\377\377\377\377\377"
|
|
||||||
"\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\325\355\305"
|
|
||||||
"\325\355\305\325\355\305\325\355\305\377\377\377\377\377\377\377\377\377"
|
|
||||||
"h\3042h\3042\377\377\377\377\377\377D\3471\377\377\377P\3342\364\377\352"
|
|
||||||
"\\\3202\335\364\323\377\377\377h\3021\377\377\377t\2702\375\377\310\200\254"
|
|
||||||
"2\312\332\250\377\377\377\215\2351\377\377\377\230\2242\377\377\250\244\210"
|
|
||||||
"2\307\260|\377\377\377\262x1\377\377\377\274p2\377\337\207\310d2\323xQ\324"
|
|
||||||
"X2\327T1\227/\14\260|2\377\377\234\307\260|\244\2102\377\377\377\377\377"
|
|
||||||
"\377\307\300\213\230\2242\230\2242\377\377\377\377\377\377\310\316\231\310"
|
|
||||||
"\316\231\214\2402\214\2402\377\377\377\377\377\377\377\377\377\312\332\250"
|
|
||||||
"\312\332\250\377\377\377\200\2542\200\2542\377\377\377\377\377\377\377\377"
|
|
||||||
"\377\377\377\377\377\377\377\317\344\266\317\344\266\377\377\377\377\377"
|
|
||||||
"\377t\2702t\2702t\2702\377\377\377\377\377\377\377\377\377\377\377\377\377"
|
|
||||||
"\377\377\377\377\377\377\377\377\377\377\377\325\355\305\325\355\305\325"
|
|
||||||
"\355\305\377\377\377\377\377\377`\0`\377\377\377D\3471\371\366\371P\3342"
|
|
||||||
"\346\371\342\377\377\377\\\3161\377\377\377'\24\22\325\355\305t\2702\276"
|
|
||||||
"\310\251\377\377\377\200\2542\377\377\316\214\2402\310\316\231`6`\230\224"
|
|
||||||
"2\377\377\250\222u<\307\260|\377\377\377\315\214L\377\377\377\274p2M,#\310"
|
|
||||||
"d2\312`1\306\304\306\324X2\333bB\325\242W\377\377\377\307\260|=9\22\244\210"
|
|
||||||
"2\377\377\377\227\234w\307\300\213\230\2242\307\322a\377\377\377\377\377"
|
|
||||||
"\377Km9\310\316\231\214\2402r\226K\377\377\377\377\377\377\377\377\377\312"
|
|
||||||
"\332\250\312\332\250`\242`\200\2542\200\2542\224\306\224\377\377\377\377"
|
|
||||||
"\377\377\377\377\377\377\377\377\317\344\266M\250D\317\344\266\377\377\377"
|
|
||||||
"\203\322\203t\2702t\2702\301\377\177\377\377\377\377\377\377`\330`\377\377"
|
|
||||||
"\377\377\377\377r\344r\377\377\377\377\377\377\377\377\377\325\355\305\377"
|
|
||||||
"\377\377\377\377\377D\3502\371\377\364P\3342\346\371\342\377\377\377\\\320"
|
|
||||||
"2\364\377\336h\3042\325\355\305\377\377\377t\2702\317\344\266\200\2542\312"
|
|
||||||
"\332\250\377\377\377\214\2402\310\316\231\230\2242\307\300\213\377\377\377"
|
|
||||||
"\244\2102\307\260|\377\377\377\200U0\220^\377\7\4/\227U[\246]\377\255Q1\377"
|
|
||||||
"\242y\10\3/\306M@\6\4/{^\377mVvmVv\6\5/h\\\377h\\\377\\U\204\12\12\360\5"
|
|
||||||
"\5/VX\377VX\377\12\12\360LR\221\12\12\360\5\6/\214\2402\377\377\377\377\377"
|
|
||||||
"\377\377\377\377\312\332\250\312\332\250\377\377\377\200\2542\200\2542\200"
|
|
||||||
"\2542\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\317\344"
|
|
||||||
"\266\317\344\266\317\344\266\377\377\377\377\377\377t\2702t\2702\377\377"
|
|
||||||
"\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377"
|
|
||||||
"\377\377\377\377\377\377\377\377\377\377D\3502\362\375\360P\3342\346\371"
|
|
||||||
"\342\377\377\377\\\3202\335\364\323\377\377\377h\3042\367\377\324t\2702\317"
|
|
||||||
"\344\266\377\377\377\200\2542\312\332\250\377\377\377\214\2402\377\377\262"
|
|
||||||
"\230\2242\307\300\213\377\377\377\244\2102\307\260|{^\377\200U0\220^\377"
|
|
||||||
"\7\4/\227U[\246]\377\7\3/\377\242y\236\37""2\306M0\210%\14T-2{^\377mVv\6"
|
|
||||||
"\5/\6\5/h\\\377\\U\204\\U\204\5\5/\5\5/VX\377VX\377LR\221LR\221\377\377\377"
|
|
||||||
"\214\2402\214\2402\377\377\377\377\377\377\377\377\377\312\332\250\312\332"
|
|
||||||
"\250\312\332\250\377\377\377\200\2542\200\2542\377\377\377\377\377\377\377"
|
|
||||||
"\377\377\377\377\377\377\377\377\377\377\377\317\344\266\317\344\266\377"
|
|
||||||
"\377\377\377\377\377t\2702t\2702t\2702\377\377\377\377\377\377\377\377\377"
|
|
||||||
"\377\377\377\377\377\377\377\377\377\377\377\377D\3502\365\375\363\377\377"
|
|
||||||
"\377O\3321l\22l\\\3202\335\364\323\357\346\357h\3042\325\355\305\377\377"
|
|
||||||
"\377t\2702\317\344\266l-l\200\2521\377\377\377\204\211=\310\316\231\377\377"
|
|
||||||
"\377\262\243L\307\300\213\377\377\377E&\25mVv{^\377ySB\220^\377\7\4/\275"
|
|
||||||
"t\201\246]\377\7\3/I\37!\277Z\377\10\3/\237YQ\6\4/{^\377\236\213\247mVv\6"
|
|
||||||
"\5/,-lh\\\377\\U\204dow\5\5/\5\5/\222\251\377VX\377\310\316\231T{@\377\377"
|
|
||||||
"\377\214\2402w\240V\377\377\377\377\377\377\377\377\377\377\377\377\312\332"
|
|
||||||
"\250U\231G\377\377\377\200\2542q\270\\\377\377\377\377\377\377\377\377\377"
|
|
||||||
"\377\377\377\377\377\377l\317l\317\344\266\317\344\266z\330v\377\377\377"
|
|
||||||
"\377\377\377\323\377\221t\2702t\2702l\352l\377\377\377\377\377\377\377\377"
|
|
||||||
"\377D\3502\362\375\360\377\377\377P\3342\346\371\342\377\377\377\\\3202\364"
|
|
||||||
"\377\336h\3042\325\355\305\377\377\377t\2702\317\344\266\377\377\377\200"
|
|
||||||
"\2542\312\332\250\377\377\377\214\2402\310\316\231\377\377\377\230\2242\307"
|
|
||||||
"\300\213\377\377\377\6\5/mVv{^\377\200U0\220^\377\7\4/\227U[\246]\377\7\3"
|
|
||||||
"/\255RN\277Z\377\10\3/\306M@\6\4/{^\377{^\377mVv\6\5/\6\5/h\\\377h\\\377"
|
|
||||||
"\\U\204\12\12\360\5\5/\12\12\360\377\377\377\377\377\377\310\316\231\310"
|
|
||||||
"\316\231\377\377\377\214\2402\214\2402\377\377\377\377\377\377\377\377\377"
|
|
||||||
"\377\377\377\312\332\250\312\332\250\377\377\377\200\2542\200\2542\200\254"
|
|
||||||
"2\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377"
|
|
||||||
"\317\344\266\317\344\266\317\344\266\377\377\377\377\377\377t\2702t\2702"
|
|
||||||
"\377\377\377\377\377\377D\3502\362\375\360\377\377\377P\3342\346\371\342"
|
|
||||||
"\377\377\377\\\3202\335\364\323\377\377\377h\3042\325\355\305\377\377\377"
|
|
||||||
"t\2702\317\344\266\377\377\377\200\2542\312\332\250\377\377\377\214\2402"
|
|
||||||
"\310\316\231\377\377\377\230\2242\307\300\213h\\\377\6\5/mVv{^\377\200U0"
|
|
||||||
"\220^\377\7\4/\227U[\246]\377\7\3/\255RN\277Z\377\10\3/\306M@\6\4/\6\4/{"
|
|
||||||
"^\377mVvmVv\6\5/\12\12\360h\\\377\\U\204\\U\204\5\5/\230\2242\377\377\377"
|
|
||||||
"\377\377\377\377\377\377\310\316\231\310\316\231\377\377\377\214\2402\214"
|
|
||||||
"\2402\377\377\377\377\377\377\377\377\377\377\377\377\312\332\250\312\332"
|
|
||||||
"\250\377\377\377\377\377\377\200\2542\200\2542\377\377\377\377\377\377\377"
|
|
||||||
"\377\377\377\377\377\377\377\377\377\377\377\377\377\377\317\344\266\317"
|
|
||||||
"\344\266\377\377\377\377\377\377\377\377\377\377\377\377D\3502q\10p\377\377"
|
|
||||||
"\377P\3342\335\350\332\377\377\377\\\3202\351\366\337\377\377\377h\3042d"
|
|
||||||
"!\\\377\377\377t\2702\277\302\252\377\377\377\200\2542\343\345\301\377\377"
|
|
||||||
"\377\214\2402^2H\377\377\377\230\2242\257\235\204h\\\377\6\5/\223o\234{^"
|
|
||||||
"\377\6\4/<\36""1\377\252\215j)2\211XK\377\250\203\202$2\337~c\377\242y\236"
|
|
||||||
"\37""2]#\26\306M@\6\4/ym\274{^\377mVvELn\6\5/h\\\37703x\\U\204\307\300\213"
|
|
||||||
"\204\226\\\230\2242\377\377\377\377\377\377\377\377\377\310\316\231^\212"
|
|
||||||
"H\377\377\377\214\2402}\256b\377\377\377\377\377\377\377\377\377\377\377"
|
|
||||||
"\377\312\332\250_\251O\377\377\377\377\377\377y\310j\200\2542\377\377\377"
|
|
||||||
"\377\377\377\377\377\377\377\377\377x\341x\377\377\377\377\377\377\177\350"
|
|
||||||
"|\317\344\266\377\377\377\377\377\377D\3502\362\375\360\377\377\377P\334"
|
|
||||||
"2\346\371\342\377\377\377\\\3202\335\364\323\377\377\377\377\377\377h\304"
|
|
||||||
"2\325\355\305\377\377\377t\2702\317\344\266\377\377\377\200\2542\312\332"
|
|
||||||
"\250\377\377\377\214\2402\310\316\231\377\377\377\230\2242\\U\204h\\\377"
|
|
||||||
"\6\5/mVv{^\377\6\4/\12\12\360\201Vi\220^\377\7\4/\227U[\246]\377\7\3/\255"
|
|
||||||
"RN\277Z\377\10\3/\306M@\6\4/\12\12\360{^\377mVvmVv\6\5/\12\12\360h\\\377"
|
|
||||||
"\377\377\377\307\300\213\377\377\377\230\2242\230\2242\377\377\377\377\377"
|
|
||||||
"\377\377\377\377\310\316\231\310\316\231\377\377\377\214\2402\214\2402\377"
|
|
||||||
"\377\377\377\377\377\377\377\377\377\377\377\312\332\250\312\332\250\312"
|
|
||||||
"\332\250\377\377\377\200\2542\200\2542\200\2542\377\377\377\377\377\377\377"
|
|
||||||
"\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377D\350"
|
|
||||||
"2\362\375\360\377\377\377P\3342\377\377\377\346\371\342\377\377\377\\\320"
|
|
||||||
"2\335\364\323\377\377\377h\3042\325\355\305\377\377\377t\2702\317\344\266"
|
|
||||||
"\377\377\377\200\2542\377\377\377\312\332\250\377\377\377\214\2402\310\316"
|
|
||||||
"\231\377\377\377\5\5/\\U\204h\\\377\6\5/mVv{^\377\6\4/\12\12\360\201Vi\220"
|
|
||||||
"^\377\7\4/\227U[\246]\377\7\3/\255RN\277Z\377\10\3/\306M@\6\4/\6\4/{^\377"
|
|
||||||
"\12\12\360mVv\6\5/\6\5/\377\377\377\377\377\377\307\300\213\307\300\213\377"
|
|
||||||
"\377\377\230\2242\377\377\377\377\377\377\377\377\377\377\377\377\310\316"
|
|
||||||
"\231\310\316\231\377\377\377\214\2402\214\2402\377\377\377\377\377\377\377"
|
|
||||||
"\377\377\377\377\377\377\377\377\312\332\250\312\332\250\377\377\377\377"
|
|
||||||
"\377\377\200\2542\200\2542\377\377\377\377\377\377\377\377\377\377\377\377"
|
|
||||||
"\204\0\204\377\377\377D\3502\355\364\353\377\377\377\377\377\377Y\335;\346"
|
|
||||||
"\371\342\377\377\377/\26\31\335\364\323\377\377\377k\255<\325\355\305\377"
|
|
||||||
"\377\377\377\377\377t\2702\317\344\266\2046\204\200\2542\312\332\250\340"
|
|
||||||
"\317\340\214\2402\310\316\231\377\377\377VX\377\5\5//\33Dh\\\377\6\5/tVz"
|
|
||||||
"{^\377\6\4/=0\377\201Vi\220^\377\3\1\30\227U[\246]\377?6U\255RN\277Z\377"
|
|
||||||
"\337]s\306M0\306M@\3\2\30{^\377{^\377yv}mVv\244\2102\377\377\377\377\377"
|
|
||||||
"\377\377\377\377gyG\307\300\213\230\2242\212\242h\377\377\377\377\377\377"
|
|
||||||
"\377\377\377\377\377\377\310\316\231g\230O\377\377\377\214\2402\205\274q"
|
|
||||||
"\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377h\270V\312\332"
|
|
||||||
"\250\377\377\377\222\344\222\200\2542\200\2542\377\377\377\377\377\377\377"
|
|
||||||
"\377\377\377\377\377D\3502\362\375\360\377\377\377\377\377\377P\3342\346"
|
|
||||||
"\371\342\377\377\377\\\3202\335\364\323\377\377\377\377\377\377h\3042\325"
|
|
||||||
"\355\305\377\377\377t\2702\317\344\266\377\377\377\377\377\377\200\2542\312"
|
|
||||||
"\332\250\377\377\377\214\2402\310\316\231VX\377\12\12\360\5\5/\\U\204h\\"
|
|
||||||
"\377\6\5/mVv{^\377\6\4/\12\12\360\201Vi\220^\377\7\4/\227U[\246]\377\7\3"
|
|
||||||
"/\255RN\255RN\277Z\377\10\3/\306M@\6\4/\12\12\360{^\377\12\12\360\307\260"
|
|
||||||
"|\244\2102\244\2102\377\377\377\377\377\377\377\377\377\307\300\213\377\377"
|
|
||||||
"\377\230\2242\230\2242\377\377\377\377\377\377\377\377\377\377\377\377\310"
|
|
||||||
"\316\231\377\377\377\377\377\377\214\2402\214\2402\377\377\377\377\377\377"
|
|
||||||
"\377\377\377\377\377\377\377\377\377\312\332\250\312\332\250\377\377\377"
|
|
||||||
"\377\377\377\200\2542\200\2542\377\377\377\377\377\377D\3502\377\377\377"
|
|
||||||
"\362\375\360\377\377\377P\3342\346\371\342\377\377\377\\\3202\377\377\377"
|
|
||||||
"\335\364\323\377\377\377h\3042\325\355\305\377\377\377\377\377\377t\2702"
|
|
||||||
"\317\344\266\377\377\377\200\2542\312\332\250\377\377\377\377\377\377\214"
|
|
||||||
"\2402LR\221VX\377\5\5/\\U\204\12\12\360h\\\377\6\5/mVv{^\377\6\4/\12\12\360"
|
|
||||||
"\201Vi\220^\377\7\4/\227U[\246]\377\7\3/\7\3/\255RN\277Z\377\10\3/\306M@"
|
|
||||||
"\6\4/\6\4/{^\377\377\377\377\307\260|\377\377\377\244\2102\377\377\377\377"
|
|
||||||
"\377\377\377\377\377\307\300\213\307\300\213\377\377\377\230\2242\377\377"
|
|
||||||
"\377\377\377\377\377\377\377\377\377\377\310\316\231\310\316\231\377\377"
|
|
||||||
"\377\377\377\377\214\2402\214\2402\377\377\377\377\377\377\377\377\377\377"
|
|
||||||
"\377\377\377\377\377\312\332\250\312\332\250\377\377\377\377\377\377\377"
|
|
||||||
"\377\377\377\377\377D\3502\377\377\377\362\375\360\377\377\377-\17\34\346"
|
|
||||||
"\371\342\377\377\377\363\346\363\\\3202\335\364\323\377\377\377h\3042\377"
|
|
||||||
"\377\377x)o\377\377\377t\2702\301\276\255\377\377\377\377\377\377\243\273"
|
|
||||||
"U\312\332\250\377\377\377O-\34\12\12\360LR\221gU\333\5\5/\\U\204<)\377h\\"
|
|
||||||
"\377\6\5/=!B{^\377\6\4/A2\306\201Vi\220^\377I9q\227U[\246]\377]-\220\7\3"
|
|
||||||
"/\255RN\245q\304\10\3/\306M0\377\236\221\6\4/\377\377\377\220\231\220\307"
|
|
||||||
"\260|\307\260|\226\227m\244\2102\377\377\377\377\377\377\377\377\377\307"
|
|
||||||
"\300\213p\207N\230\2242\230\2242\254\316\254\377\377\377\377\377\377\377"
|
|
||||||
"\377\377\310\316\231\310\316\231\220\317\220\377\377\377\214\2402\216\316"
|
|
||||||
"\200\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377r\310^\312"
|
|
||||||
"\332\250\377\377\377\377\377\377\377\377\377D\3502\362\375\360\377\377\377"
|
|
||||||
"P\3342\377\377\377\346\371\342\377\377\377\\\3202\335\364\323\377\377\377"
|
|
||||||
"\377\377\377h\3042\325\355\305\377\377\377\377\377\377t\2702\317\344\266"
|
|
||||||
"\377\377\377\200\2542\377\377\377\312\332\250\377\377\377\5\6/LR\221\12\12"
|
|
||||||
"\360VX\377\5\5/\\U\204h\\\377\12\12\360\6\5/mVv{^\377\6\4/\12\12\360\201"
|
|
||||||
"Vi\220^\377\7\4/\227U[\12\12\360\246]\377\7\3/\255RN\277Z\377\277Z\377\10"
|
|
||||||
"\3/\306M@\260|2\260|2\377\377\377\377\377\377\307\260|\377\377\377\244\210"
|
|
||||||
"2\377\377\377\377\377\377\377\377\377\377\377\377\307\300\213\377\377\377"
|
|
||||||
"\230\2242\230\2242\377\377\377\377\377\377\377\377\377\377\377\377\310\316"
|
|
||||||
"\231\310\316\231\377\377\377\377\377\377\214\2402\214\2402\377\377\377\377"
|
|
||||||
"\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377"
|
|
||||||
"\377\377D\3502\362\375\360\377\377\377P\3342\377\377\377\346\371\342\377"
|
|
||||||
"\377\377\\\3202\377\377\377\335\364\323\377\377\377h\3042\325\355\305\377"
|
|
||||||
"\377\377\377\377\377t\2702\317\344\266\377\377\377\377\377\377\200\2542\312"
|
|
||||||
"\332\250\377\377\377\12\12\360\5\6/LR\221VX\377\12\12\360\5\5/\\U\204h\\"
|
|
||||||
"\377\6\5/\12\12\360mVv{^\377\6\4/\12\12\360\201Vi\220^\377\7\4/\227U[\227"
|
|
||||||
"U[\246]\377\7\3/\255RN\12\12\360\277Z\377\10\3/\333bB\377\377\377\260|2\377"
|
|
||||||
"\377\377\377\377\377\307\260|\307\260|\244\2102\244\2102\377\377\377\377"
|
|
||||||
"\377\377\377\377\377\307\300\213\307\300\213\377\377\377\230\2242\230\224"
|
|
||||||
"2\377\377\377\377\377\377\377\377\377\377\377\377\310\316\231\310\316\231"
|
|
||||||
"\377\377\377\377\377\377\214\2402\214\2402\377\377\377\377\377\377\377\377"
|
|
||||||
"\377\377\377\377\377\377\377\377\377\377)\10\36\362\375\360\377\377\377\370"
|
|
||||||
"\356\370P\3342\346\371\342\377\377\377\377\377\377\\\3202\207\"\201\377\377"
|
|
||||||
"\377\377\377\377p\250D\325\355\305\377\377\377\377\377\377t\2702\317\344"
|
|
||||||
"\266\234?\234\200\2542\377\377\377\274\260\244FS\377\5\6/;#\377LR\221VX\377"
|
|
||||||
"\3\1\34\12\12\360\\U\204{^\330\6\5/\12\12\360\257\203\270{^\377\6\4/\6\4"
|
|
||||||
"\222\201Vi\220^\377P@d\12\12\360\227U[\370\244\377\7\3/\255RNi./\277Z\377"
|
|
||||||
"\324X2\264\202w\333bB\260|2\377\377\377\377\377\377\377\377\377yvK\377\377"
|
|
||||||
"\377\244\2102\236\247|\377\377\377\377\377\377\377\377\377\307\300\213\307"
|
|
||||||
"\300\213\234\306\234\230\2242\377\377\377\256\330\256\377\377\377\377\377"
|
|
||||||
"\377\377\377\377\310\316\231\310\316\231\234\341\234\377\377\377\214\240"
|
|
||||||
"2\232\343\223\377\377\377\377\377\377\377\377\377\377\377\377D\3502\362\375"
|
|
||||||
"\360\377\377\377\377\377\377P\3342\346\371\342\377\377\377\377\377\377\\"
|
|
||||||
"\3202\335\364\323\377\377\377\377\377\377h\3042\325\355\305\377\377\377\377"
|
|
||||||
"\377\377t\2702\317\344\266\377\377\377\377\377\377\200\2542\312\332\250\12"
|
|
||||||
"\12\360FS\377\5\6/LR\221\12\12\360RW\255\3\5\35\6\11\224ZT\\d[\261\3\4\35"
|
|
||||||
"\6\11\224lVTw]\264\4\4\35\6\11\224\200VN\214]\270\4\3\35\6\11\224\226UG\242"
|
|
||||||
"\\\274\4\3\35\4\3\35\254R@\377\377\311\203U\36\203U\36\323a:my\36my\36\377"
|
|
||||||
"\377\276\377\377\276\243\255X\243\255X\236\371\236e\204\36\236\371\236\374"
|
|
||||||
"\377\273\236\371\236\236\371\236\234\275`\236\371\236^\220\36^\220\36\236"
|
|
||||||
"\371\236\352\377\267\352\377\267\236\371\236\236\371\236\310\316\231\310"
|
|
||||||
"\316\231\377\377\377\377\377\377\214\2402\377\377\377\377\377\377\377\377"
|
|
||||||
"\377D\3502\362\375\360\377\377\377\377\377\377P\3342\346\371\342\377\377"
|
|
||||||
"\377\377\377\377\\\3202\377\377\377\335\364\323\377\377\377h\3042\377\377"
|
|
||||||
"\377\325\355\305\377\377\377t\2702\377\377\377\317\344\266\377\377\377\377"
|
|
||||||
"\377\377\200\2542<L\237FS\377\12\12\360\5\6/LR\221\6\11\224RW\255\3\5\35"
|
|
||||||
"ZT\\\6\11\224d[\261\3\4\35\6\11\224lVTw]\264\4\4\35\6\11\224\200VN\214]\270"
|
|
||||||
"\4\3\35\4\3\35\226UG\242\\\274\6\11\224\4\3\35\304wB\377\377\311\377\377"
|
|
||||||
"\311\203U\36\323a:\236\371\236my\36\236\371\236\377\377\276\236\371\236\243"
|
|
||||||
"\255X\236\371\236e\204\36e\204\36\374\377\273\374\377\273\236\371\236\234"
|
|
||||||
"\275`\234\275`\236\371\236^\220\36^\220\36\236\371\236\352\377\267\352\377"
|
|
||||||
"\267\377\377\377\377\377\377\310\316\231\310\316\231\377\377\377\250\0\250"
|
|
||||||
"\377\377\377\377\377\377F\3375\362\375\360\377\377\377\377\377\377P\3342"
|
|
||||||
"\377\377\377\227\32\224\377\377\377\\\3202\362\340\362\335\364\323\377\377"
|
|
||||||
"\377\377\377\377h\3042\325\355\305\2506\250\377\377\377t\2702\304\272\262"
|
|
||||||
"\377\377\377\377\377\377\257\300a\12\12\360<L\237.\32\250\5\6/\12\12\360"
|
|
||||||
"jSzRW\255\6\11\224D+^ZT\\\6\11\224A&t\3\4\35lVTP9\235w]\264\4\4\35YG\347"
|
|
||||||
"\200VN\214]\270\3\4a\4\3\35\226UG\244y\257\6\11\224{a\36\377\322\246\236"
|
|
||||||
"\371\236\377\377\311V6\23\323a:\323a:\223\231y\236\371\236\377\377\276\377"
|
|
||||||
"\377\377\243\255X\243\255Xh\270he\204\36\236\371\236\272\322\253\374\377"
|
|
||||||
"\273\236\371\236\377\377\350\236\371\236\236\371\236=y\23\236\371\236\236"
|
|
||||||
"\371\236\262\344\262\377\377\377\377\377\377\377\377\377\310\316\231\377"
|
|
||||||
"\377\377\377\377\377\377\377\377D\3502\362\375\360\377\377\377\377\377\377"
|
|
||||||
"P\3342\377\377\377\346\371\342\377\377\377\377\377\377\\\3202\335\364\323"
|
|
||||||
"\377\377\377\377\377\377h\3042\325\355\305\377\377\377\377\377\377t\2702"
|
|
||||||
"\377\377\377\317\344\266\377\377\377\377\377\377\5\6/<L\237\12\12\360FS\377"
|
|
||||||
"\5\6/\6\11\224JQbRW\255\6\11\224\3\5\35ZT\\d[\261\6\11\224\3\4\35lVT\6\11"
|
|
||||||
"\224w]\264\4\4\35\6\11\224\200VN\214]\270\6\11\224\4\3\35\226UG\242\\\274"
|
|
||||||
"\377\377\306{a\36\304wB\304wB\377\377\311\203U\36\203U\36\323a:my\36my\36"
|
|
||||||
"\377\377\276\377\377\276\236\371\236\243\255X\236\371\236e\204\36e\204\36"
|
|
||||||
"\236\371\236\374\377\273\236\371\236\234\275`\234\275`\236\371\236^\220\36"
|
|
||||||
"^\220\36\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377"
|
|
||||||
"\377\377\377\377\377\377\377\377D\3502\362\375\360\377\377\377\377\377\377"
|
|
||||||
"P\3342\377\377\377\346\371\342\377\377\377\377\377\377\\\3202\335\364\323"
|
|
||||||
"\377\377\377\377\377\377h\3042\377\377\377\325\355\305\377\377\377\377\377"
|
|
||||||
"\377t\2702\317\344\266\377\377\377\377\377\377\5\6/\12\12\360<L\237FS\377"
|
|
||||||
"\12\12\360\3\5\35JQb\6\11\224RW\255\3\5\35\6\11\224ZT\\d[\261\6\11\224\3"
|
|
||||||
"\4\35lVT\6\11\224w]\264\4\4\35\6\11\224\200VN\214]\270\6\11\224\4\3\35\226"
|
|
||||||
"UG\236\371\236\377\377\306{a\36\236\371\236\304wB\377\377\311\236\371\236"
|
|
||||||
"\203U\36\323a:\236\371\236my\36\236\371\236\377\377\276\236\371\236\243\255"
|
|
||||||
"X\243\255X\236\371\236e\204\36\236\371\236\374\377\273\374\377\273\236\371"
|
|
||||||
"\236\234\275`\234\275`\236\371\236\230\2242\230\2242\377\377\377\377\377"
|
|
||||||
"\377\377\377\377\377\377\377\377\377\377\377\377\377J\3508\377\377\377\362"
|
|
||||||
"\375\360\264\22\264\377\377\377P\3342\340\340\335\377\377\377\377\377\377"
|
|
||||||
"u\325K\377\377\377\335\364\323\264-\264\377\377\377h\3042\315\305\301\377"
|
|
||||||
"\377\377\377\377\377\240\307^\377\377\377\317\344\266\264H\264\12\12\360"
|
|
||||||
"\5\6/aL\245\12\12\360FS\377E(\323\3\5\35JQb\4\3hRW\255\3\5\35O2\241ZT\\d"
|
|
||||||
"[\261X>\346\3\4\35lVT\4\4hw]\264\4\4\35aK\244\200VN\214]\270kZ\371\4\3\35"
|
|
||||||
"\270\212Io\225o\377\377\306{a\36\253\300\253\304wB\377\377\311\377\377\377"
|
|
||||||
"\203U\36\323a:\224D(my\36\236\371\236\307\316\266\377\377\276\236\371\236"
|
|
||||||
"\377\377\343\236\371\236e\204\36Gk\25\236\371\236\374\377\273\260\334\260"
|
|
||||||
"\236\371\236\234\275`\377\377\377\377\377\377\230\2242k\207#\377\377\377"
|
|
||||||
"\377\377\377\377\377\377\377\377\377D\3502\377\377\377\362\375\360\377\377"
|
|
||||||
"\377\377\377\377P\3342\346\371\342\377\377\377\377\377\377\\\3202\377\377"
|
|
||||||
"\377\335\364\323\377\377\377\377\377\377h\3042\377\377\377\325\355\305\377"
|
|
||||||
"\377\377\377\377\377t\2702\317\344\266\377\377\3778L\377\12\12\360\5\6/<"
|
|
||||||
"L\237\12\12\360BR\252\3\5\35\6\11\224JQbRW\255\6\11\224\3\5\35ZT\\\6\11\224"
|
|
||||||
"d[\261\6\11\224\3\4\35lVT\6\11\224w]\264\4\4\35\6\11\224\200VN\214]\270\6"
|
|
||||||
"\11\224tm\36\270\212I\270\212I\377\377\306{a\36{a\36\304wB\236\371\236\377"
|
|
||||||
"\377\311\203U\36\236\371\236\323a:my\36my\36\236\371\236\377\377\276\236"
|
|
||||||
"\371\236\243\255X\243\255X\236\371\236e\204\36\236\371\236\374\377\273\374"
|
|
||||||
"\377\273\236\371\236\307\300\213\307\300\213\377\377\377\377\377\377\230"
|
|
||||||
"\2242\377\377\377\377\377\377\377\377\377D\3502\377\377\377\362\375\360\377"
|
|
||||||
"\377\377\377\377\377P\3342\377\377\377\346\371\342\377\377\377\377\377\377"
|
|
||||||
"\\\3202\335\364\323\377\377\377\377\377\377\377\377\377h\3042\325\355\305"
|
|
||||||
"\377\377\377\377\377\377t\2702\377\377\377\317\344\2668L\377\12\12\360\5"
|
|
||||||
"\6/\12\12\360<L\237BR\252\6\11\224\3\5\35JQb\6\11\224RW\255\6\11\224\3\5"
|
|
||||||
"\35ZT\\\6\11\224d[\261\3\4\35\6\11\224lVT\6\11\224w]\264\4\4\35\6\11\224"
|
|
||||||
"\200VN\214]\270\236\371\236tm\36\236\371\236\270\212I\377\377\306\236\371"
|
|
||||||
"\236{a\36\304wB\236\371\236\377\377\311\203U\36\203U\36\323a:\236\371\236"
|
|
||||||
"my\36\236\371\236\377\377\276\377\377\276\236\371\236\243\255X\236\371\236"
|
|
||||||
"e\204\36e\204\36\236\371\236\374\377\273\377\377\377\377\377\377\307\300"
|
|
||||||
"\213\307\300\213\377\377\377\377\377\377\377\377\377\377\377\3773\10%\377"
|
|
||||||
"\377\377\362\375\360\372\356\372\377\377\377P\3342\377\377\377\346\371\342"
|
|
||||||
"\377\377\377\300$\300\\\3202\377\377\377\327\317\316\377\377\377\377\377"
|
|
||||||
"\377\220\317Z\377\377\377\325\355\305\300?\300\377\377\377t\2702\312\267"
|
|
||||||
"\270\12\12\3608L\377F#\377\5\6/<L\237\4\3oBR\252\6\11\224K)[JQb\6\11\224"
|
|
||||||
"\243\204\376\3\5\35\6\11\224C&E\6\11\224d[\261_@l\6\11\224lVTkP\371w]\264"
|
|
||||||
"\4\4\35\4\5o\200VN\377\377\302\262\276\262tm\36\236\371\236\377\360\302\377"
|
|
||||||
"\377\306\236\371\236\\A\26\304wB\304wB\322\312\302\236\371\236\203U\36\377"
|
|
||||||
"\355\310\323a:my\36R]\26\236\371\236\377\377\276\270\326\270\243\255X\236"
|
|
||||||
"\371\236\377\377\377e\204\36\236\371\236\300\341\300\377\377\377\377\377"
|
|
||||||
"\377\305\353\305\307\300\213\377\377\377\377\377\377\377\377\377D\3502\377"
|
|
||||||
"\377\377\362\375\360\377\377\377\377\377\377P\3342\377\377\377\346\371\342"
|
|
||||||
"\377\377\377\377\377\377\\\3202\377\377\377\335\364\323\377\377\377\377\377"
|
|
||||||
"\377h\3042\377\377\377\325\355\305\377\377\377\377\377\377t\2702\377\377"
|
|
||||||
"\3770E\254\12\12\3608L\377\5\6/\12\12\360:Lj\6\11\224BR\252\3\5\35\6\11\224"
|
|
||||||
"JQb\6\11\224RW\255\3\5\35\6\11\224ZT\\\6\11\224d[\261\3\4\35\6\11\224lVT"
|
|
||||||
"\6\11\224w]\264\4\4\35\6\11\224\255\235Q\377\377\302\377\377\302tm\36\236"
|
|
||||||
"\371\236\270\212I\377\377\306\377\377\306{a\36\236\371\236\304wB\377\377"
|
|
||||||
"\311\377\377\311\203U\36\236\371\236\323a:\236\371\236my\36\236\371\236\377"
|
|
||||||
"\377\276\236\371\236\243\255X\243\255X\236\371\236e\204\36\244\2102\377\377"
|
|
||||||
"\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377"
|
|
||||||
"\377D\3502\377\377\377\362\375\360\377\377\377\377\377\377P\3342\377\377"
|
|
||||||
"\377\346\371\342\377\377\377\377\377\377\377\377\377\\\3202\335\364\323\377"
|
|
||||||
"\377\377\377\377\377\377\377\377h\3042\325\355\305\377\377\377\377\377\377"
|
|
||||||
"\377\377\377t\2702\317\344\266\377\377\377\377\377\377\377\377\377\200\254"
|
|
||||||
"2\236\371\236\222\326p\332\377\264\236\371\236V\234\36\236\371\236\226\312"
|
|
||||||
"g\352\377\267\236\371\236^\220\36\236\371\236\234\275`\374\377\273\236\371"
|
|
||||||
"\236e\204\36\236\371\236\243\255X\377\377\276\236\371\236my\36\236\371\236"
|
|
||||||
"\255\235Q\236\371\236\377\377\302tm\36\236\371\236\270\212I\236\371\236\377"
|
|
||||||
"\377\306{a\36\236\371\236\304wB\236\371\236\377\377\311\203U\36\203U\36\323"
|
|
||||||
"a:\236\371\236my\36\236\371\236\377\377\276\377\377\276\236\371\236\243\255"
|
|
||||||
"X\236\371\236\377\377\377\244\2102\377\377\377\377\377\377\377\377\377\314"
|
|
||||||
"\0\314\377\377\377\377\377\377H\3377\377\377\377\362\375\360\377\377\377"
|
|
||||||
"\377\377\377\377\377\377@\27(\346\371\342\377\377\377\367\340\367\377\377"
|
|
||||||
"\377\\\3202\377\377\377\335\364\323\377\377\377\3146\314h\3042\377\377\377"
|
|
||||||
"\322\301\306\377\377\377\377\377\377\255\314k\377\377\377\317\344\266\314"
|
|
||||||
"Q\314\377\377\377\200\2542\256\300\256\222\326p\236\371\236\377\377\377\236"
|
|
||||||
"\371\236V\234\36xUR\236\371\236\352\377\267\262\273\262^\220\36\234\275`"
|
|
||||||
"\377\377\377\374\377\273\236\371\236PE\30\236\371\236\243\255X\342\300\305"
|
|
||||||
"\236\371\236my\36\377\377\377\255\235Q\236\371\236\314\242\233tm\36\236\371"
|
|
||||||
"\236\304\237\240\236\371\236\377\377\306\377\340\256{a\36\304wB~\270~\377"
|
|
||||||
"\377\311\236\371\236\273\254\244\323a:\323a:\377\377\303my\36\236\371\236"
|
|
||||||
"\314\330\230\236\371\236\243\255X\313\332\302\377\377\377\244\2102\377\377"
|
|
||||||
"\355\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377D\3502\362"
|
|
||||||
"\375\360\377\377\377\377\377\377\377\377\377P\3342\377\377\377\346\371\342"
|
|
||||||
"\377\377\377\377\377\377\\\3202\377\377\377\335\364\323\377\377\377\377\377"
|
|
||||||
"\377h\3042\377\377\377\325\355\305\377\377\377\377\377\377\377\377\377t\270"
|
|
||||||
"2\317\344\266\377\377\377\377\377\377\377\377\377O\247\36\236\371\236\222"
|
|
||||||
"\326p\332\377\264\236\371\236V\234\36\236\371\236\226\312g\236\371\236\352"
|
|
||||||
"\377\267\236\371\236^\220\36\234\275`\236\371\236\374\377\273\236\371\236"
|
|
||||||
"e\204\36\236\371\236\243\255X\377\377\276\236\371\236my\36\236\371\236\255"
|
|
||||||
"\235Q\236\371\236\377\377\302tm\36\236\371\236\270\212I\236\371\236\377\377"
|
|
||||||
"\306\236\371\236{a\36\304wB\304wB\377\377\311\236\371\236\203U\36\236\371"
|
|
||||||
"\236\323a:\236\371\236my\36\236\371\236\377\377\276\377\377\276\377\377\377"
|
|
||||||
"\307\260|\377\377\377\377\377\377\244\2102\377\377\377\377\377\377\377\377"
|
|
||||||
"\377\377\377\377D\3502\362\375\360\377\377\377\377\377\377\377\377\377P\334"
|
|
||||||
"2\377\377\377\346\371\342\377\377\377\377\377\377\\\3202\377\377\377\335"
|
|
||||||
"\364\323\377\377\377\377\377\377\377\377\377h\3042\377\377\377\325\355\305"
|
|
||||||
"\377\377\377\377\377\377t\2702\377\377\377\317\344\266\377\377\377\377\377"
|
|
||||||
"\377\236\371\236O\247\36\222\326p\236\371\236\332\377\264\236\371\236V\234"
|
|
||||||
"\36\236\371\236\226\312g\236\371\236\352\377\267^\220\36\236\371\236\234"
|
|
||||||
"\275`\236\371\236\374\377\273\236\371\236e\204\36\236\371\236\243\255X\377"
|
|
||||||
"\377\276\236\371\236my\36\236\371\236\255\235Q\236\371\236\377\377\302tm"
|
|
||||||
"\36tm\36\270\212I\236\371\236\377\377\306\236\371\236{a\36\236\371\236\304"
|
|
||||||
"wB\377\377\311\377\377\311\203U\36\236\371\236\323a:\236\371\236my\36\236"
|
|
||||||
"\371\236\236\371\236\377\377\377\377\377\377\307\260|\307\260|\377\377\377"
|
|
||||||
"\377\377\377\377\377\377\377\377\377\377\377\377D\3502\362\375\360\330\22"
|
|
||||||
"\330\377\377\377\377\377\377]\306B\377\377\377\346\371\342\377\377\377\377"
|
|
||||||
"\377\377\377\377\377M$*\335\364\323\377\377\377\366\324\366\377\377\377h"
|
|
||||||
"\3042\377\377\377\325\355\305\377\377\377\330H\330\377\377\377t\2702\321"
|
|
||||||
"\264\300\377\377\377\377\377\377\352\377\352O\247\36\236\371\236{S^\236\371"
|
|
||||||
"\236\332\377\264\266\274\266V\234\36\226\312g\377\377\377\352\377\267\236"
|
|
||||||
"\371\236OG\31\236\371\236\234\275`\274\274\274\374\377\273\236\371\236\336"
|
|
||||||
"\325\227\243\255X\236\371\236\330\231\240\236\371\236my\36\302\300\302\255"
|
|
||||||
"\235Q\236\371\236\377\377\377\236\371\236tm\36\233a=\236\371\236\377\377"
|
|
||||||
"\306\310\314\310{a\36\236\371\236\377\377\351\236\371\236\377\377\311nE\31"
|
|
||||||
"\203U\36\323a:\326\304\276my\36my\36\377\377\377\377\377\377\377\377\377"
|
|
||||||
"\330\352\330\307\260|\377\377\377\377\377\377\377\377\377\377\377\377D\350"
|
|
||||||
"2\377\377\377\362\375\360\377\377\377\377\377\377P\3342\377\377\377\346\371"
|
|
||||||
"\342\377\377\377\377\377\377\377\377\377\\\3202\377\377\377\335\364\323\377"
|
|
||||||
"\377\377\377\377\377\377\377\377h\3042\325\355\305\377\377\377\377\377\377"
|
|
||||||
"\377\377\377t\2702\377\377\377\317\344\266\377\377\377\377\377\377\377\377"
|
|
||||||
"\377\200\2542\377\377\377\312\332\250\377\377\377\377\377\377\214\2402\377"
|
|
||||||
"\377\377\310\316\231\377\377\377\377\377\377\377\377\377\230\2242\377\377"
|
|
||||||
"\377\307\300\213\377\377\377\377\377\377\244\2102\377\377\377\307\260|\377"
|
|
||||||
"\377\377\377\377\377\377\377\377\260|2\377\377\377\312\237n\377\377\377\377"
|
|
||||||
"\377\377\377\377\377\274p2\316\214_\316\214_\377\377\377\377\377\377\310"
|
|
||||||
"d2\377\377\377\323xQ\377\377\377\377\377\377\377\377\377\324X2\377\377\377"
|
|
||||||
"\333bB\377\377\377\260|2\377\377\377\377\377\377\377\377\377\377\377\377"
|
|
||||||
"\377\377\377\377\377\377\377\377\377\377\377\377D\3502\377\377\377\362\375"
|
|
||||||
"\360\377\377\377\377\377\377P\3342\377\377\377\346\371\342\377\377\377\377"
|
|
||||||
"\377\377\377\377\377\\\3202\377\377\377\335\364\323\377\377\377\377\377\377"
|
|
||||||
"\377\377\377h\3042\377\377\377\325\355\305\377\377\377\377\377\377\377\377"
|
|
||||||
"\377t\2702\317\344\266\377\377\377\377\377\377\377\377\377\200\2542\377\377"
|
|
||||||
"\377\312\332\250\377\377\377\377\377\377\377\377\377\214\2402\377\377\377"
|
|
||||||
"\310\316\231\377\377\377\377\377\377\377\377\377\230\2242\377\377\377\307"
|
|
||||||
"\300\213\377\377\377\377\377\377\244\2102\377\377\377\307\260|\377\377\377"
|
|
||||||
"\377\377\377\377\377\377\260|2\377\377\377\312\237n\377\377\377\377\377\377"
|
|
||||||
"\377\377\377\274p2\377\377\377\316\214_\377\377\377\377\377\377\310d2\310"
|
|
||||||
"d2\323xQ\377\377\377\377\377\377\377\377\377\324X2\377\377\377\333bB\377"
|
|
||||||
"\377\377\260|2\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377"
|
|
||||||
"\377\377\377\344\11\344D\3502\377\377\377\360\354\357\377\377\377\377\377"
|
|
||||||
"\377\377\377\377P\3342\377\377\377\315#\312\377\377\377\377\377\377s\262"
|
|
||||||
"Q\377\377\377\335\364\323\377\377\377\377\377\377\377\377\377\\0,\377\377"
|
|
||||||
"\377\325\355\305\367\313\367\377\377\377\377\377\377\274\321z\377\377\377"
|
|
||||||
"\317\344\266\344Z\344\377\377\377\377\377\377\246\217v\377\377\377\312\332"
|
|
||||||
"\250\377\377\377\377\377\377\377\377\377}I,\377\377\377\310\316\231\361\277"
|
|
||||||
"\361\377\377\377\230\2242\377\377\377\307\300\213\377\377\377\344\220\344"
|
|
||||||
"\377\377\377\244\2102\356\301\356\307\260|\377\377\377\377\377\377\377\377"
|
|
||||||
"\377\260|2\344\253\344\312\237n\377\377\377\353\312\353\377\377\377\274p"
|
|
||||||
"2\377\377\377\316\214_\377\377\377\344\306\344\377\377\377\310d2\340\276"
|
|
||||||
"\310\323xQ\377\377\377\377\377\377\324X2\324X2\303V;\333bB\260|2\337\340"
|
|
||||||
"\325\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377D\3502\377"
|
|
||||||
"\377\377\362\375\360\377\377\377\377\377\377\377\377\377P\3342\377\377\377"
|
|
||||||
"\346\371\342\377\377\377\377\377\377\377\377\377\\\3202\377\377\377\335\364"
|
|
||||||
"\323\377\377\377\377\377\377\377\377\377h\3042\377\377\377\325\355\305\377"
|
|
||||||
"\377\377\377\377\377\377\377\377t\2702\317\344\266\377\377\377\377\377\377"
|
|
||||||
"\377\377\377\200\2542\377\377\377\312\332\250\377\377\377\377\377\377\377"
|
|
||||||
"\377\377\214\2402\377\377\377\310\316\231\377\377\377\377\377\377\377\377"
|
|
||||||
"\377\230\2242\377\377\377\307\300\213\377\377\377\377\377\377\377\377\377"
|
|
||||||
"\244\2102\377\377\377\307\260|\377\377\377\377\377\377\377\377\377\260|2"
|
|
||||||
"\377\377\377\312\237n\377\377\377\377\377\377\377\377\377\274p2\377\377\377"
|
|
||||||
"\316\214_\377\377\377\377\377\377\377\377\377\310d2\377\377\377\323xQ\377"
|
|
||||||
"\377\377\377\377\377\377\377\377\324X2\377\377\377\333bB\377\377\377\260"
|
|
||||||
"|2\377\377\377\377\377\377\377\377\377\377\377\377D\3502\377\377\377\362"
|
|
||||||
"\375\360\377\377\377\377\377\377\377\377\377P\3342\377\377\377\346\371\342"
|
|
||||||
"\377\377\377\377\377\377\377\377\377\\\3202\377\377\377\335\364\323\377\377"
|
|
||||||
"\377\377\377\377\377\377\377h\3042\377\377\377\325\355\305\377\377\377\377"
|
|
||||||
"\377\377\377\377\377t\2702\377\377\377\317\344\266\377\377\377\377\377\377"
|
|
||||||
"\377\377\377\200\2542\377\377\377\312\332\250\377\377\377\377\377\377\377"
|
|
||||||
"\377\377\214\2402\377\377\377\310\316\231\377\377\377\377\377\377\377\377"
|
|
||||||
"\377\230\2242\377\377\377\307\300\213\377\377\377\377\377\377\377\377\377"
|
|
||||||
"\244\2102\377\377\377\307\260|\377\377\377\377\377\377\377\377\377\260|2"
|
|
||||||
"\377\377\377\312\237n\377\377\377\377\377\377\377\377\377\274p2\377\377\377"
|
|
||||||
"\316\214_\377\377\377\377\377\377\377\377\377\310d2\377\377\377\323xQ\377"
|
|
||||||
"\377\377\377\377\377\377\377\377\324X2\377\377\377\333bB\377\377\377",
|
|
||||||
};
|
|
||||||
|
|
|
@ -1,169 +0,0 @@
|
||||||
/**
|
|
||||||
* Automated SDL platform test.
|
|
||||||
*
|
|
||||||
* Based off of testplatform.c.
|
|
||||||
*
|
|
||||||
* Written by Edgar Simo "bobbens"
|
|
||||||
*
|
|
||||||
* Released under Public Domain.
|
|
||||||
*/
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
#include "SDL.h"
|
|
||||||
#include "SDL_endian.h"
|
|
||||||
#include "SDL_cpuinfo.h"
|
|
||||||
#include "../SDL_at.h"
|
|
||||||
|
|
||||||
|
|
||||||
/*
|
|
||||||
* Prototypes.
|
|
||||||
*/
|
|
||||||
static int plat_testSize( size_t sizeoftype, size_t hardcodetype );
|
|
||||||
static void plat_testTypes (void);
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @brief Test size.
|
|
||||||
*
|
|
||||||
* @note Watcom C flags these as Warning 201: "Unreachable code" if you just
|
|
||||||
* compare them directly, so we push it through a function to keep the
|
|
||||||
* compiler quiet. --ryan.
|
|
||||||
*/
|
|
||||||
static int plat_testSize( size_t sizeoftype, size_t hardcodetype )
|
|
||||||
{
|
|
||||||
return sizeoftype != hardcodetype;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @brief Tests type size.
|
|
||||||
*/
|
|
||||||
static void plat_testTypes (void)
|
|
||||||
{
|
|
||||||
int ret;
|
|
||||||
|
|
||||||
SDL_ATbegin( "Type size" );
|
|
||||||
|
|
||||||
ret = plat_testSize( sizeof(Uint8), 1 );
|
|
||||||
if (SDL_ATvassert( ret == 0, "sizeof(Uint8) = %lu instead of 1", sizeof(Uint8) ))
|
|
||||||
return;
|
|
||||||
|
|
||||||
ret = plat_testSize( sizeof(Uint16), 2 );
|
|
||||||
if (SDL_ATvassert( ret == 0, "sizeof(Uint16) = %lu instead of 2", sizeof(Uint16) ))
|
|
||||||
return;
|
|
||||||
|
|
||||||
ret = plat_testSize( sizeof(Uint32), 4 );
|
|
||||||
if (SDL_ATvassert( ret == 0, "sizeof(Uint32) = %lu instead of 4", sizeof(Uint32) ))
|
|
||||||
return;
|
|
||||||
|
|
||||||
ret = plat_testSize( sizeof(Uint64), 8 );
|
|
||||||
if (SDL_ATvassert( ret == 0, "sizeof(Uint64) = %lu instead of 8", sizeof(Uint64) ))
|
|
||||||
return;
|
|
||||||
|
|
||||||
SDL_ATend();
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @brief Tests platform endianness.
|
|
||||||
*/
|
|
||||||
static void plat_testEndian (void)
|
|
||||||
{
|
|
||||||
Uint16 value = 0x1234;
|
|
||||||
int real_byteorder;
|
|
||||||
Uint16 value16 = 0xCDAB;
|
|
||||||
Uint16 swapped16 = 0xABCD;
|
|
||||||
Uint32 value32 = 0xEFBEADDE;
|
|
||||||
Uint32 swapped32 = 0xDEADBEEF;
|
|
||||||
|
|
||||||
Uint64 value64, swapped64;
|
|
||||||
value64 = 0xEFBEADDE;
|
|
||||||
value64 <<= 32;
|
|
||||||
value64 |= 0xCDAB3412;
|
|
||||||
swapped64 = 0x1234ABCD;
|
|
||||||
swapped64 <<= 32;
|
|
||||||
swapped64 |= 0xDEADBEEF;
|
|
||||||
|
|
||||||
SDL_ATbegin( "Endianness" );
|
|
||||||
|
|
||||||
/* Test endianness. */
|
|
||||||
if ((*((char *) &value) >> 4) == 0x1) {
|
|
||||||
real_byteorder = SDL_BIG_ENDIAN;
|
|
||||||
} else {
|
|
||||||
real_byteorder = SDL_LIL_ENDIAN;
|
|
||||||
}
|
|
||||||
if (SDL_ATvassert( real_byteorder == SDL_BYTEORDER,
|
|
||||||
"Machine detected as %s endian but appears to be %s endian.",
|
|
||||||
(SDL_BYTEORDER == SDL_LIL_ENDIAN) ? "little" : "big",
|
|
||||||
(real_byteorder == SDL_LIL_ENDIAN) ? "little" : "big" ))
|
|
||||||
return;
|
|
||||||
|
|
||||||
/* Test 16 swap. */
|
|
||||||
if (SDL_ATvassert( SDL_Swap16(value16) == swapped16,
|
|
||||||
"16 bit swapped incorrectly: 0x%X => 0x%X",
|
|
||||||
value16, SDL_Swap16(value16) ))
|
|
||||||
return;
|
|
||||||
|
|
||||||
/* Test 32 swap. */
|
|
||||||
if (SDL_ATvassert( SDL_Swap32(value32) == swapped32,
|
|
||||||
"32 bit swapped incorrectly: 0x%X => 0x%X",
|
|
||||||
value32, SDL_Swap32(value32) ))
|
|
||||||
return;
|
|
||||||
|
|
||||||
/* Test 64 swap. */
|
|
||||||
if (SDL_ATvassert( SDL_Swap64(value64) == swapped64,
|
|
||||||
#ifdef _MSC_VER
|
|
||||||
"64 bit swapped incorrectly: 0x%I64X => 0x%I64X",
|
|
||||||
#else
|
|
||||||
"64 bit swapped incorrectly: 0x%llX => 0x%llX",
|
|
||||||
#endif
|
|
||||||
value64, SDL_Swap64(value64) ))
|
|
||||||
return;
|
|
||||||
|
|
||||||
SDL_ATend();
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @brief Platform test entrypoint.
|
|
||||||
*/
|
|
||||||
#ifdef TEST_STANDALONE
|
|
||||||
int main( int argc, const char *argv[] )
|
|
||||||
{
|
|
||||||
(void) argc;
|
|
||||||
(void) argv;
|
|
||||||
#else /* TEST_STANDALONE */
|
|
||||||
int test_platform (void)
|
|
||||||
{
|
|
||||||
#endif /* TEST_STANDALONE */
|
|
||||||
|
|
||||||
SDL_ATinit( "Platform" );
|
|
||||||
|
|
||||||
/* Debug information. */
|
|
||||||
SDL_ATprintVerbose( 1, "%s System detected\n", SDL_GetPlatform() );
|
|
||||||
SDL_ATprintVerbose( 1, "System is %s endian\n",
|
|
||||||
#ifdef SDL_LIL_ENDIAN
|
|
||||||
"little"
|
|
||||||
#else
|
|
||||||
"big"
|
|
||||||
#endif
|
|
||||||
);
|
|
||||||
SDL_ATprintVerbose( 1, "CPU count: %d\n", SDL_GetCPUCount());
|
|
||||||
SDL_ATprintVerbose( 1, "Available extensions:\n" );
|
|
||||||
SDL_ATprintVerbose( 1, " RDTSC %s\n", SDL_HasRDTSC()? "detected" : "not detected" );
|
|
||||||
SDL_ATprintVerbose( 1, " AltiVec %s\n", SDL_HasAltiVec()? "detected" : "not detected" );
|
|
||||||
SDL_ATprintVerbose( 1, " MMX %s\n", SDL_HasMMX()? "detected" : "not detected" );
|
|
||||||
SDL_ATprintVerbose( 1, " 3DNow! %s\n", SDL_Has3DNow()? "detected" : "not detected" );
|
|
||||||
SDL_ATprintVerbose( 1, " SSE %s\n", SDL_HasSSE()? "detected" : "not detected" );
|
|
||||||
SDL_ATprintVerbose( 1, " SSE2 %s\n", SDL_HasSSE2()? "detected" : "not detected" );
|
|
||||||
SDL_ATprintVerbose( 1, " SSE3 %s\n", SDL_HasSSE3()? "detected" : "not detected" );
|
|
||||||
SDL_ATprintVerbose( 1, " SSE4.1 %s\n", SDL_HasSSE41()? "detected" : "not detected" );
|
|
||||||
SDL_ATprintVerbose( 1, " SSE4.2 %s\n", SDL_HasSSE42()? "detected" : "not detected" );
|
|
||||||
|
|
||||||
plat_testTypes();
|
|
||||||
plat_testEndian();
|
|
||||||
|
|
||||||
return SDL_ATfinish();
|
|
||||||
}
|
|
|
@ -1,18 +0,0 @@
|
||||||
/**
|
|
||||||
* Part of SDL test suite.
|
|
||||||
*
|
|
||||||
* Written by Edgar Simo "bobbens"
|
|
||||||
*
|
|
||||||
* Released under Public Domain.
|
|
||||||
*/
|
|
||||||
|
|
||||||
|
|
||||||
#ifndef _TEST_PLATFORM
|
|
||||||
# define _TEST_PLATFORM
|
|
||||||
|
|
||||||
|
|
||||||
int test_platform (void);
|
|
||||||
|
|
||||||
|
|
||||||
#endif /* _TEST_PLATFORM */
|
|
||||||
|
|
|
@ -1,156 +0,0 @@
|
||||||
/**
|
|
||||||
* Automated SDL rect test.
|
|
||||||
*
|
|
||||||
* Written by Edgar Simo "bobbens"
|
|
||||||
*
|
|
||||||
* Released under Public Domain.
|
|
||||||
*/
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
#include "SDL_rect.h"
|
|
||||||
#include "../SDL_at.h"
|
|
||||||
|
|
||||||
|
|
||||||
/*
|
|
||||||
* Prototypes.
|
|
||||||
*/
|
|
||||||
static void rect_testIntersectRectAndLine (void);
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @brief Tests SDL_IntersectRectAndLine()
|
|
||||||
*/
|
|
||||||
static void rect_testIntersectRectAndLine (void)
|
|
||||||
{
|
|
||||||
SDL_Rect rect = { 0, 0, 32, 32 };
|
|
||||||
int x1, y1;
|
|
||||||
int x2, y2;
|
|
||||||
SDL_bool clipped;
|
|
||||||
|
|
||||||
SDL_ATbegin( "IntersectRectAndLine" );
|
|
||||||
|
|
||||||
x1 = -10;
|
|
||||||
y1 = 0;
|
|
||||||
x2 = -10;
|
|
||||||
y2 = 31;
|
|
||||||
clipped = SDL_IntersectRectAndLine(&rect, &x1, &y1, &x2, &y2);
|
|
||||||
SDL_ATvassert( !clipped &&
|
|
||||||
x1 == -10 && y1 == 0 && x2 == -10 && y2 == 31,
|
|
||||||
"line outside to the left was incorrectly clipped: %d,%d - %d,%d",
|
|
||||||
x1, y1, x2, y2);
|
|
||||||
|
|
||||||
x1 = 40;
|
|
||||||
y1 = 0;
|
|
||||||
x2 = 40;
|
|
||||||
y2 = 31;
|
|
||||||
clipped = SDL_IntersectRectAndLine(&rect, &x1, &y1, &x2, &y2);
|
|
||||||
SDL_ATvassert( !clipped &&
|
|
||||||
x1 == 40 && y1 == 0 && x2 == 40 && y2 == 31,
|
|
||||||
"line outside to the right was incorrectly clipped: %d,%d - %d,%d",
|
|
||||||
x1, y1, x2, y2);
|
|
||||||
|
|
||||||
x1 = 0;
|
|
||||||
y1 = -10;
|
|
||||||
x2 = 31;
|
|
||||||
y2 = -10;
|
|
||||||
clipped = SDL_IntersectRectAndLine(&rect, &x1, &y1, &x2, &y2);
|
|
||||||
SDL_ATvassert( !clipped &&
|
|
||||||
x1 == 0 && y1 == -10 && x2 == 31 && y2 == -10,
|
|
||||||
"line outside above was incorrectly clipped: %d,%d - %d,%d",
|
|
||||||
x1, y1, x2, y2);
|
|
||||||
|
|
||||||
x1 = 0;
|
|
||||||
y1 = 40;
|
|
||||||
x2 = 31;
|
|
||||||
y2 = 40;
|
|
||||||
clipped = SDL_IntersectRectAndLine(&rect, &x1, &y1, &x2, &y2);
|
|
||||||
SDL_ATvassert( !clipped &&
|
|
||||||
x1 == 0 && y1 == 40 && x2 == 31 && y2 == 40,
|
|
||||||
"line outside below was incorrectly clipped: %d,%d - %d,%d",
|
|
||||||
x1, y1, x2, y2);
|
|
||||||
|
|
||||||
x1 = 0;
|
|
||||||
y1 = 0;
|
|
||||||
x2 = 31;
|
|
||||||
y2 = 31;
|
|
||||||
clipped = SDL_IntersectRectAndLine(&rect, &x1, &y1, &x2, &y2);
|
|
||||||
SDL_ATvassert( clipped &&
|
|
||||||
x1 == 0 && y1 == 0 && x2 == 31 && y2 == 31,
|
|
||||||
"line fully inside rect was clipped: %d,%d - %d,%d",
|
|
||||||
x1, y1, x2, y2);
|
|
||||||
|
|
||||||
x1 = -10;
|
|
||||||
y1 = 15;
|
|
||||||
x2 = 40;
|
|
||||||
y2 = 15;
|
|
||||||
clipped = SDL_IntersectRectAndLine(&rect, &x1, &y1, &x2, &y2);
|
|
||||||
SDL_ATvassert( clipped &&
|
|
||||||
x1 == 0 && y1 == 15 && x2 == 31 && y2 == 15,
|
|
||||||
"horizontal line rect was incorrectly clipped: %d,%d - %d,%d",
|
|
||||||
x1, y1, x2, y2);
|
|
||||||
|
|
||||||
x1 = -32;
|
|
||||||
y1 = -32;
|
|
||||||
x2 = 63;
|
|
||||||
y2 = 63;
|
|
||||||
clipped = SDL_IntersectRectAndLine(&rect, &x1, &y1, &x2, &y2);
|
|
||||||
SDL_ATvassert( clipped &&
|
|
||||||
x1 == 0 && y1 == 0 && x2 == 31 && y2 == 31,
|
|
||||||
"diagonal line to lower right was incorrectly clipped: %d,%d - %d,%d",
|
|
||||||
x1, y1, x2, y2);
|
|
||||||
|
|
||||||
x1 = 63;
|
|
||||||
y1 = 63;
|
|
||||||
x2 = -32;
|
|
||||||
y2 = -32;
|
|
||||||
clipped = SDL_IntersectRectAndLine(&rect, &x1, &y1, &x2, &y2);
|
|
||||||
SDL_ATvassert( clipped &&
|
|
||||||
x1 == 31 && y1 == 31 && x2 == 0 && y2 == 0,
|
|
||||||
"diagonal line to upper left was incorrectly clipped: %d,%d - %d,%d",
|
|
||||||
x1, y1, x2, y2);
|
|
||||||
|
|
||||||
x1 = 63;
|
|
||||||
y1 = -32;
|
|
||||||
x2 = -32;
|
|
||||||
y2 = 63;
|
|
||||||
clipped = SDL_IntersectRectAndLine(&rect, &x1, &y1, &x2, &y2);
|
|
||||||
SDL_ATvassert( clipped &&
|
|
||||||
x1 == 31 && y1 == 0 && x2 == 0 && y2 == 31,
|
|
||||||
"diagonal line to lower left was incorrectly clipped: %d,%d - %d,%d",
|
|
||||||
x1, y1, x2, y2);
|
|
||||||
|
|
||||||
x1 = -32;
|
|
||||||
y1 = 63;
|
|
||||||
x2 = 63;
|
|
||||||
y2 = -32;
|
|
||||||
clipped = SDL_IntersectRectAndLine(&rect, &x1, &y1, &x2, &y2);
|
|
||||||
SDL_ATvassert( clipped &&
|
|
||||||
x1 == 0 && y1 == 31 && x2 == 31 && y2 == 0,
|
|
||||||
"diagonal line to upper right was incorrectly clipped: %d,%d - %d,%d",
|
|
||||||
x1, y1, x2, y2);
|
|
||||||
|
|
||||||
SDL_ATend();
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @brief Rect test entrypoint.
|
|
||||||
*/
|
|
||||||
#ifdef TEST_STANDALONE
|
|
||||||
int main( int argc, const char *argv[] )
|
|
||||||
{
|
|
||||||
(void) argc;
|
|
||||||
(void) argv;
|
|
||||||
#else /* TEST_STANDALONE */
|
|
||||||
int test_rect (void)
|
|
||||||
{
|
|
||||||
#endif /* TEST_STANDALONE */
|
|
||||||
|
|
||||||
SDL_ATinit( "Rect" );
|
|
||||||
|
|
||||||
rect_testIntersectRectAndLine();
|
|
||||||
|
|
||||||
return SDL_ATfinish();
|
|
||||||
}
|
|
|
@ -1,18 +0,0 @@
|
||||||
/**
|
|
||||||
* Part of SDL test suite.
|
|
||||||
*
|
|
||||||
* Written by Edgar Simo "bobbens"
|
|
||||||
*
|
|
||||||
* Released under Public Domain.
|
|
||||||
*/
|
|
||||||
|
|
||||||
|
|
||||||
#ifndef _TEST_RECT
|
|
||||||
# define _TEST_RECT
|
|
||||||
|
|
||||||
|
|
||||||
int test_rect (void);
|
|
||||||
|
|
||||||
|
|
||||||
#endif /* _TEST_RECT */
|
|
||||||
|
|
File diff suppressed because it is too large
Load diff
|
@ -1,18 +0,0 @@
|
||||||
/**
|
|
||||||
* Part of SDL test suite.
|
|
||||||
*
|
|
||||||
* Written by Edgar Simo "bobbens"
|
|
||||||
*
|
|
||||||
* Released under Public Domain.
|
|
||||||
*/
|
|
||||||
|
|
||||||
|
|
||||||
#ifndef _TEST_RENDER
|
|
||||||
# define _TEST_RENDER
|
|
||||||
|
|
||||||
|
|
||||||
int test_render (void);
|
|
||||||
|
|
||||||
|
|
||||||
#endif /* _TEST_RENDER */
|
|
||||||
|
|
|
@ -1,14 +0,0 @@
|
||||||
|
|
||||||
#include <stdio.h>
|
|
||||||
#include "SDL.h"
|
|
||||||
|
|
||||||
#ifndef TestSupportRWops_h
|
|
||||||
#define TestSupportRWops_h
|
|
||||||
|
|
||||||
FILE* TestSupportRWops_OpenFPFromReadDir(const char *file, const char *mode);
|
|
||||||
FILE* TestSupportRWops_OpenFPFromWriteDir(const char *file, const char *mode);
|
|
||||||
SDL_RWops* TestSupportRWops_OpenRWopsFromReadDir(const char *file, const char *mode);
|
|
||||||
SDL_RWops* TestSupportRWops_OpenRWopsFromWriteDir(const char *file, const char *mode);
|
|
||||||
|
|
||||||
|
|
||||||
#endif
|
|
|
@ -1,89 +0,0 @@
|
||||||
#import "TestSupportRWops.h"
|
|
||||||
#import <Foundation/Foundation.h>
|
|
||||||
#include "SDL.h"
|
|
||||||
|
|
||||||
/* For proper OS X applications, the resources are contained inside the application bundle.
|
|
||||||
So the strategy is to first check the application bundle for the file, then fallback to the current working directory.
|
|
||||||
Note: One additional corner-case is if the resource is in a framework's resource bundle instead of the app.
|
|
||||||
We might want to use bundle identifiers, e.g. org.libsdl.sdl to get the bundle for the framework,
|
|
||||||
but we would somehow need to know what the bundle identifiers we need to search are.
|
|
||||||
Conversely, write directories are usually not in the bundles. This implementation uses NSTemporaryDirectory,
|
|
||||||
but consider Preferences, Application Support, Documents, etc.
|
|
||||||
Also, note the bundle layouts are different for iPhone and Mac.
|
|
||||||
*/
|
|
||||||
|
|
||||||
const char* RWOPS_READ = "rwops/read";
|
|
||||||
const char* RWOPS_WRITE = "write";
|
|
||||||
|
|
||||||
|
|
||||||
FILE* TestSupportRWops_OpenFPFromReadDir(const char *file, const char *mode)
|
|
||||||
{
|
|
||||||
FILE* fp = NULL;
|
|
||||||
|
|
||||||
/* If the file mode is writable, skip all the bundle stuff because generally the bundle is read-only. */
|
|
||||||
if(strcmp("r", mode) && strcmp("rb", mode))
|
|
||||||
{
|
|
||||||
return fopen(file, mode);
|
|
||||||
}
|
|
||||||
|
|
||||||
NSAutoreleasePool* autorelease_pool = [[NSAutoreleasePool alloc] init];
|
|
||||||
|
|
||||||
|
|
||||||
NSFileManager* file_manager = [NSFileManager defaultManager];
|
|
||||||
NSString* resource_path = [[NSBundle mainBundle] resourcePath];
|
|
||||||
|
|
||||||
NSString* ns_string_file_component = [file_manager stringWithFileSystemRepresentation:file length:strlen(file)];
|
|
||||||
|
|
||||||
NSString* full_path_with_file_to_try = [resource_path stringByAppendingPathComponent:ns_string_file_component];
|
|
||||||
if([file_manager fileExistsAtPath:full_path_with_file_to_try])
|
|
||||||
{
|
|
||||||
fp = fopen([full_path_with_file_to_try fileSystemRepresentation], mode);
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
fp = fopen(file, mode);
|
|
||||||
}
|
|
||||||
|
|
||||||
[autorelease_pool drain];
|
|
||||||
|
|
||||||
return fp;
|
|
||||||
}
|
|
||||||
|
|
||||||
FILE* TestSupportRWops_OpenFPFromWriteDir(const char *file, const char *mode)
|
|
||||||
{
|
|
||||||
FILE* fp = NULL;
|
|
||||||
|
|
||||||
NSAutoreleasePool* autorelease_pool = [[NSAutoreleasePool alloc] init];
|
|
||||||
|
|
||||||
NSFileManager* file_manager = [NSFileManager defaultManager];
|
|
||||||
NSString* ns_string_file_component = [file_manager stringWithFileSystemRepresentation:file length:strlen(file)];
|
|
||||||
NSString* full_path_with_file_to_try = [NSTemporaryDirectory() stringByAppendingPathComponent:ns_string_file_component];
|
|
||||||
|
|
||||||
fp = fopen([full_path_with_file_to_try fileSystemRepresentation], mode);
|
|
||||||
|
|
||||||
[autorelease_pool drain];
|
|
||||||
|
|
||||||
return fp;
|
|
||||||
}
|
|
||||||
|
|
||||||
SDL_RWops* TestSupportRWops_OpenRWopsFromReadDir(const char *file, const char *mode)
|
|
||||||
{
|
|
||||||
return SDL_RWFromFile(file, mode);
|
|
||||||
}
|
|
||||||
|
|
||||||
SDL_RWops* TestSupportRWops_OpenRWopsFromWriteDir(const char *file, const char *mode)
|
|
||||||
{
|
|
||||||
SDL_RWops* rw = NULL;
|
|
||||||
|
|
||||||
NSAutoreleasePool* autorelease_pool = [[NSAutoreleasePool alloc] init];
|
|
||||||
|
|
||||||
NSFileManager* file_manager = [NSFileManager defaultManager];
|
|
||||||
NSString* ns_string_file_component = [file_manager stringWithFileSystemRepresentation:file length:strlen(file)];
|
|
||||||
NSString* full_path_with_file_to_try = [NSTemporaryDirectory() stringByAppendingPathComponent:ns_string_file_component];
|
|
||||||
|
|
||||||
rw = SDL_RWFromFile( [full_path_with_file_to_try fileSystemRepresentation], mode );
|
|
||||||
|
|
||||||
[autorelease_pool drain];
|
|
||||||
return rw;
|
|
||||||
}
|
|
||||||
|
|
|
@ -1,32 +0,0 @@
|
||||||
/* Generic implementation for file opening routines.
|
|
||||||
* Customizations for specific platforms should go in alternative files.
|
|
||||||
*/
|
|
||||||
|
|
||||||
/* quiet windows compiler warnings */
|
|
||||||
#define _CRT_SECURE_NO_WARNINGS
|
|
||||||
|
|
||||||
#include <stdio.h>
|
|
||||||
#include "SDL.h"
|
|
||||||
|
|
||||||
const char* RWOPS_READ = "rwops/read";
|
|
||||||
const char* RWOPS_WRITE = "rwops/write";
|
|
||||||
|
|
||||||
FILE* TestSupportRWops_OpenFPFromReadDir(const char *file, const char *mode)
|
|
||||||
{
|
|
||||||
return fopen(file, mode);
|
|
||||||
}
|
|
||||||
|
|
||||||
FILE* TestSupportRWops_OpenFPFromWriteDir(const char *file, const char *mode)
|
|
||||||
{
|
|
||||||
return fopen(file, mode);
|
|
||||||
}
|
|
||||||
|
|
||||||
SDL_RWops* TestSupportRWops_OpenRWopsFromReadDir(const char *file, const char *mode)
|
|
||||||
{
|
|
||||||
return SDL_RWFromFile(file, mode);
|
|
||||||
}
|
|
||||||
|
|
||||||
SDL_RWops* TestSupportRWops_OpenRWopsFromWriteDir(const char *file, const char *mode)
|
|
||||||
{
|
|
||||||
return SDL_RWFromFile(file, mode);
|
|
||||||
}
|
|
|
@ -1 +0,0 @@
|
||||||
Hello World!
|
|
|
@ -1,272 +0,0 @@
|
||||||
/**
|
|
||||||
* Automated SDL_RWops test.
|
|
||||||
*
|
|
||||||
* Written by Edgar Simo "bobbens"
|
|
||||||
*
|
|
||||||
* Released under Public Domain.
|
|
||||||
*/
|
|
||||||
|
|
||||||
|
|
||||||
#include "SDL.h"
|
|
||||||
#include "../SDL_at.h"
|
|
||||||
#include "TestSupportRWops.h"
|
|
||||||
|
|
||||||
/* Defined in TestSupportRWops implementation to allow flexibility. */
|
|
||||||
extern const char* RWOPS_READ;
|
|
||||||
extern const char* RWOPS_WRITE;
|
|
||||||
|
|
||||||
static const char hello_world[] = "Hello World!";
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @brief Makes sure parameters work properly.
|
|
||||||
*/
|
|
||||||
static void rwops_testParam (void)
|
|
||||||
{
|
|
||||||
SDL_RWops *rwops;
|
|
||||||
|
|
||||||
/* Begin testcase. */
|
|
||||||
SDL_ATbegin( "RWops Parameters" );
|
|
||||||
|
|
||||||
/* These should all fail. */
|
|
||||||
rwops = SDL_RWFromFile(NULL, NULL);
|
|
||||||
if (SDL_ATassert( "SDL_RWFromFile(NULL, NULL) worked", rwops == NULL ))
|
|
||||||
return;
|
|
||||||
rwops = SDL_RWFromFile(NULL, "ab+");
|
|
||||||
if (SDL_ATassert( "SDL_RWFromFile(NULL, \"ab+\") worked", rwops == NULL ))
|
|
||||||
return;
|
|
||||||
rwops = SDL_RWFromFile(NULL, "sldfkjsldkfj");
|
|
||||||
if (SDL_ATassert( "SDL_RWFromFile(NULL, \"sldfkjsldkfj\") worked", rwops == NULL ))
|
|
||||||
return;
|
|
||||||
rwops = SDL_RWFromFile("something", "");
|
|
||||||
if (SDL_ATassert( "SDL_RWFromFile(\"something\", \"\") worked", rwops == NULL ))
|
|
||||||
return;
|
|
||||||
rwops = SDL_RWFromFile("something", NULL);
|
|
||||||
if (SDL_ATassert( "SDL_RWFromFile(\"something\", NULL) worked", rwops == NULL ))
|
|
||||||
return;
|
|
||||||
|
|
||||||
|
|
||||||
/* End testcase. */
|
|
||||||
SDL_ATend();
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @brief Does a generic rwops test.
|
|
||||||
*
|
|
||||||
* RWops should have "Hello World!" in it already if write is disabled.
|
|
||||||
*
|
|
||||||
* @param write Test writing also.
|
|
||||||
* @return 1 if an assert is failed.
|
|
||||||
*/
|
|
||||||
static int rwops_testGeneric( SDL_RWops *rw, int write )
|
|
||||||
{
|
|
||||||
char buf[sizeof(hello_world)];
|
|
||||||
Sint64 i;
|
|
||||||
|
|
||||||
/* Set to start. */
|
|
||||||
i = SDL_RWseek( rw, 0, RW_SEEK_SET );
|
|
||||||
if (SDL_ATvassert( i == 0,
|
|
||||||
"Seeking with SDL_RWseek (RW_SEEK_SET): got %d, expected %d",
|
|
||||||
(int)i, 0 ))
|
|
||||||
return 1;
|
|
||||||
|
|
||||||
/* Test write. */
|
|
||||||
i = SDL_RWwrite( rw, hello_world, sizeof(hello_world)-1, 1 );
|
|
||||||
if (write) {
|
|
||||||
if (SDL_ATassert( "Writing with SDL_RWwrite (failed to write)", i == 1 ))
|
|
||||||
return 1;
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
if (SDL_ATassert( "Writing with SDL_RWwrite (wrote when shouldn't have)", i <= 0 ))
|
|
||||||
return 1;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Test seek. */
|
|
||||||
i = SDL_RWseek( rw, 6, RW_SEEK_SET );
|
|
||||||
if (SDL_ATvassert( i == 6,
|
|
||||||
"Seeking with SDL_RWseek (RW_SEEK_SET): got %d, expected %d",
|
|
||||||
(int)i, 0 ))
|
|
||||||
return 1;
|
|
||||||
|
|
||||||
/* Test seek. */
|
|
||||||
i = SDL_RWseek( rw, 0, RW_SEEK_SET );
|
|
||||||
if (SDL_ATvassert( i == 0,
|
|
||||||
"Seeking with SDL_RWseek (RW_SEEK_SET): got %d, expected %d",
|
|
||||||
(int)i, 0 ))
|
|
||||||
return 1;
|
|
||||||
|
|
||||||
/* Test read. */
|
|
||||||
i = SDL_RWread( rw, buf, 1, sizeof(hello_world)-1 );
|
|
||||||
if (SDL_ATassert( "Reading with SDL_RWread", i == sizeof(hello_world)-1 ))
|
|
||||||
return 1;
|
|
||||||
if (SDL_ATassert( "Memory read does not match memory written",
|
|
||||||
SDL_memcmp( buf, hello_world, sizeof(hello_world)-1 ) == 0 ))
|
|
||||||
return 1;
|
|
||||||
|
|
||||||
/* More seek tests. */
|
|
||||||
i = SDL_RWseek( rw, -4, RW_SEEK_CUR );
|
|
||||||
if (SDL_ATvassert( i == sizeof(hello_world)-5,
|
|
||||||
"Seeking with SDL_RWseek (RW_SEEK_CUR): got %d, expected %d",
|
|
||||||
(int)i, sizeof(hello_world)-5 ))
|
|
||||||
return 1;
|
|
||||||
i = SDL_RWseek( rw, -1, RW_SEEK_END );
|
|
||||||
if (SDL_ATvassert( i == sizeof(hello_world)-2,
|
|
||||||
"Seeking with SDL_RWseek (RW_SEEK_END): got %d, expected %d",
|
|
||||||
(int)i, sizeof(hello_world)-2 ))
|
|
||||||
return 1;
|
|
||||||
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @brief Tests opening from memory.
|
|
||||||
*/
|
|
||||||
static void rwops_testMem (void)
|
|
||||||
{
|
|
||||||
char mem[sizeof(hello_world)];
|
|
||||||
SDL_RWops *rw;
|
|
||||||
|
|
||||||
/* Begin testcase. */
|
|
||||||
SDL_ATbegin( "SDL_RWFromMem" );
|
|
||||||
|
|
||||||
/* Open. */
|
|
||||||
rw = SDL_RWFromMem( mem, sizeof(hello_world)-1 );
|
|
||||||
if (SDL_ATassert( "Opening memory with SDL_RWFromMem", rw != NULL ))
|
|
||||||
return;
|
|
||||||
|
|
||||||
/* Run generic tests. */
|
|
||||||
if (rwops_testGeneric( rw, 1 ))
|
|
||||||
return;
|
|
||||||
|
|
||||||
/* Close. */
|
|
||||||
SDL_FreeRW( rw );
|
|
||||||
|
|
||||||
/* End testcase. */
|
|
||||||
SDL_ATend();
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
static const char const_mem[] = "Hello World!";
|
|
||||||
/**
|
|
||||||
* @brief Tests opening from memory.
|
|
||||||
*/
|
|
||||||
static void rwops_testConstMem (void)
|
|
||||||
{
|
|
||||||
SDL_RWops *rw;
|
|
||||||
|
|
||||||
/* Begin testcase. */
|
|
||||||
SDL_ATbegin( "SDL_RWFromConstMem" );
|
|
||||||
|
|
||||||
/* Open. */
|
|
||||||
rw = SDL_RWFromConstMem( const_mem, sizeof(const_mem)-1 );
|
|
||||||
if (SDL_ATassert( "Opening memory with SDL_RWFromConstMem", rw != NULL ))
|
|
||||||
return;
|
|
||||||
|
|
||||||
/* Run generic tests. */
|
|
||||||
if (rwops_testGeneric( rw, 0 ))
|
|
||||||
return;
|
|
||||||
|
|
||||||
/* Close. */
|
|
||||||
SDL_FreeRW( rw );
|
|
||||||
|
|
||||||
/* End testcase. */
|
|
||||||
SDL_ATend();
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @brief Tests opening from memory.
|
|
||||||
*/
|
|
||||||
static void rwops_testFile (void)
|
|
||||||
{
|
|
||||||
SDL_RWops *rw;
|
|
||||||
|
|
||||||
/* Begin testcase. */
|
|
||||||
SDL_ATbegin( "SDL_RWFromFile" );
|
|
||||||
|
|
||||||
/* Read test. */
|
|
||||||
rw = TestSupportRWops_OpenRWopsFromReadDir( RWOPS_READ, "r" );
|
|
||||||
if (SDL_ATassert( "Opening memory with SDL_RWFromFile RWOPS_READ", rw != NULL ))
|
|
||||||
return;
|
|
||||||
if (rwops_testGeneric( rw, 0 ))
|
|
||||||
return;
|
|
||||||
SDL_FreeRW( rw );
|
|
||||||
|
|
||||||
/* Write test. */
|
|
||||||
rw = TestSupportRWops_OpenRWopsFromWriteDir( RWOPS_WRITE, "w+" );
|
|
||||||
if (SDL_ATassert( "Opening memory with SDL_RWFromFile RWOPS_WRITE", rw != NULL ))
|
|
||||||
return;
|
|
||||||
if (rwops_testGeneric( rw, 1 ))
|
|
||||||
return;
|
|
||||||
SDL_FreeRW( rw );
|
|
||||||
|
|
||||||
/* End testcase. */
|
|
||||||
SDL_ATend();
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @brief Tests opening from memory.
|
|
||||||
*/
|
|
||||||
static void rwops_testFP (void)
|
|
||||||
{
|
|
||||||
#ifdef HAVE_STDIO_H
|
|
||||||
FILE *fp;
|
|
||||||
SDL_RWops *rw;
|
|
||||||
|
|
||||||
/* Begin testcase. */
|
|
||||||
SDL_ATbegin( "SDL_RWFromFP" );
|
|
||||||
|
|
||||||
/* Run read tests. */
|
|
||||||
fp = TestSupportRWops_OpenFPFromReadDir( RWOPS_READ, "r" );
|
|
||||||
if (SDL_ATassert( "Failed to open file 'WOPS_READ", fp != NULL))
|
|
||||||
return;
|
|
||||||
rw = SDL_RWFromFP( fp, 1 );
|
|
||||||
if (SDL_ATassert( "Opening memory with SDL_RWFromFP", rw != NULL ))
|
|
||||||
return;
|
|
||||||
if (rwops_testGeneric( rw, 0 ))
|
|
||||||
return;
|
|
||||||
SDL_FreeRW( rw );
|
|
||||||
|
|
||||||
/* Run write tests. */
|
|
||||||
fp = TestSupportRWops_OpenFPFromWriteDir( RWOPS_WRITE, "w+" );
|
|
||||||
if (SDL_ATassert( "Failed to open file RWOPS_WRITE", fp != NULL))
|
|
||||||
return;
|
|
||||||
rw = SDL_RWFromFP( fp, 1 );
|
|
||||||
if (SDL_ATassert( "Opening memory with SDL_RWFromFP", rw != NULL ))
|
|
||||||
return;
|
|
||||||
if (rwops_testGeneric( rw, 1 ))
|
|
||||||
return;
|
|
||||||
SDL_FreeRW( rw );
|
|
||||||
|
|
||||||
/* End testcase. */
|
|
||||||
SDL_ATend();
|
|
||||||
#endif /* HAVE_STDIO_H */
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @brief Entry point.
|
|
||||||
*/
|
|
||||||
#ifdef TEST_STANDALONE
|
|
||||||
int main( int argc, const char *argv[] )
|
|
||||||
{
|
|
||||||
(void) argc;
|
|
||||||
(void) argv;
|
|
||||||
#else /* TEST_STANDALONE */
|
|
||||||
int test_rwops (void)
|
|
||||||
{
|
|
||||||
#endif /* TEST_STANDALONE */
|
|
||||||
|
|
||||||
SDL_ATinit( "SDL_RWops" );
|
|
||||||
|
|
||||||
rwops_testParam();
|
|
||||||
rwops_testMem();
|
|
||||||
rwops_testConstMem();
|
|
||||||
rwops_testFile();
|
|
||||||
rwops_testFP();
|
|
||||||
|
|
||||||
return SDL_ATfinish();
|
|
||||||
}
|
|
|
@ -1,18 +0,0 @@
|
||||||
/**
|
|
||||||
* Part of SDL test suite.
|
|
||||||
*
|
|
||||||
* Written by Edgar Simo "bobbens"
|
|
||||||
*
|
|
||||||
* Released under Public Domain.
|
|
||||||
*/
|
|
||||||
|
|
||||||
|
|
||||||
#ifndef _TEST_RWOPS
|
|
||||||
# define _TEST_RWOPS
|
|
||||||
|
|
||||||
|
|
||||||
int test_rwops (void);
|
|
||||||
|
|
||||||
|
|
||||||
#endif /* _TEST_RWOPS */
|
|
||||||
|
|
|
@ -1,450 +0,0 @@
|
||||||
/**
|
|
||||||
* Automated SDL_Surface test.
|
|
||||||
*
|
|
||||||
* Written by Edgar Simo "bobbens"
|
|
||||||
*
|
|
||||||
* Released under Public Domain.
|
|
||||||
*/
|
|
||||||
|
|
||||||
|
|
||||||
#include "SDL.h"
|
|
||||||
#include "SDL_surface.h"
|
|
||||||
#include "SDL_video.h"
|
|
||||||
#include "../SDL_at.h"
|
|
||||||
|
|
||||||
#include "../common/common.h"
|
|
||||||
|
|
||||||
|
|
||||||
/*
|
|
||||||
* Pull in images for testcases.
|
|
||||||
*/
|
|
||||||
#include "../common/images.h"
|
|
||||||
|
|
||||||
|
|
||||||
/*
|
|
||||||
* Prototypes.
|
|
||||||
*/
|
|
||||||
/* Testcases. */
|
|
||||||
static void surface_testLoad( SDL_Surface *testsur );
|
|
||||||
static void surface_testBlit( SDL_Surface *testsur );
|
|
||||||
static int surface_testBlitBlendMode( SDL_Surface *testsur, SDL_Surface *face, SDL_BlendMode bMode );
|
|
||||||
static void surface_testBlitBlend( SDL_Surface *testsur );
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @brief Tests sprite loading.
|
|
||||||
*/
|
|
||||||
static void surface_testLoad( SDL_Surface *testsur )
|
|
||||||
{
|
|
||||||
int ret;
|
|
||||||
SDL_Surface *face, *rface;
|
|
||||||
|
|
||||||
SDL_ATbegin( "Load Test" );
|
|
||||||
|
|
||||||
/* Clear surface. */
|
|
||||||
ret = SDL_FillRect( testsur, NULL,
|
|
||||||
SDL_MapRGB( testsur->format, 0, 0, 0 ) );
|
|
||||||
if (SDL_ATassert( "SDL_FillRect", ret == 0))
|
|
||||||
return;
|
|
||||||
|
|
||||||
/* Create the blit surface. */
|
|
||||||
#ifdef __APPLE__
|
|
||||||
face = SDL_LoadBMP("icon.bmp");
|
|
||||||
#else
|
|
||||||
face = SDL_LoadBMP("../icon.bmp");
|
|
||||||
#endif
|
|
||||||
|
|
||||||
if (SDL_ATassert( "SDL_CreateLoadBmp", face != NULL))
|
|
||||||
return;
|
|
||||||
|
|
||||||
/* Set transparent pixel as the pixel at (0,0) */
|
|
||||||
if (face->format->palette) {
|
|
||||||
ret = SDL_SetColorKey(face, SDL_RLEACCEL, *(Uint8 *) face->pixels);
|
|
||||||
if (SDL_ATassert( "SDL_SetColorKey", ret == 0))
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Convert to 32 bit to compare. */
|
|
||||||
rface = SDL_ConvertSurface( face, testsur->format, 0 );
|
|
||||||
if (SDL_ATassert( "SDL_ConvertSurface", rface != NULL))
|
|
||||||
return;
|
|
||||||
|
|
||||||
/* See if it's the same. */
|
|
||||||
if (SDL_ATassert( "Primitives output not the same.",
|
|
||||||
surface_compare( rface, &img_face, 0 )==0 ))
|
|
||||||
return;
|
|
||||||
|
|
||||||
/* Clean up. */
|
|
||||||
SDL_FreeSurface( rface );
|
|
||||||
SDL_FreeSurface( face );
|
|
||||||
|
|
||||||
SDL_ATend();
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @brief Tests some blitting routines.
|
|
||||||
*/
|
|
||||||
static void surface_testBlit( SDL_Surface *testsur )
|
|
||||||
{
|
|
||||||
int ret;
|
|
||||||
SDL_Rect rect;
|
|
||||||
SDL_Surface *face;
|
|
||||||
int i, j, ni, nj;
|
|
||||||
|
|
||||||
SDL_ATbegin( "Blit Tests" );
|
|
||||||
|
|
||||||
/* Clear surface. */
|
|
||||||
ret = SDL_FillRect( testsur, NULL,
|
|
||||||
SDL_MapRGB( testsur->format, 0, 0, 0 ) );
|
|
||||||
if (SDL_ATassert( "SDL_FillRect", ret == 0))
|
|
||||||
return;
|
|
||||||
|
|
||||||
/* Create face surface. */
|
|
||||||
face = SDL_CreateRGBSurfaceFrom( (void*)img_face.pixel_data,
|
|
||||||
img_face.width, img_face.height, 32, img_face.width*4,
|
|
||||||
#if (SDL_BYTEORDER == SDL_BIG_ENDIAN)
|
|
||||||
0xff000000, /* Red bit mask. */
|
|
||||||
0x00ff0000, /* Green bit mask. */
|
|
||||||
0x0000ff00, /* Blue bit mask. */
|
|
||||||
0x000000ff /* Alpha bit mask. */
|
|
||||||
#else
|
|
||||||
0x000000ff, /* Red bit mask. */
|
|
||||||
0x0000ff00, /* Green bit mask. */
|
|
||||||
0x00ff0000, /* Blue bit mask. */
|
|
||||||
0xff000000 /* Alpha bit mask. */
|
|
||||||
#endif
|
|
||||||
);
|
|
||||||
if (SDL_ATassert( "SDL_CreateRGBSurfaceFrom", face != NULL))
|
|
||||||
return;
|
|
||||||
|
|
||||||
/* Constant values. */
|
|
||||||
rect.w = face->w;
|
|
||||||
rect.h = face->h;
|
|
||||||
ni = testsur->w - face->w;
|
|
||||||
nj = testsur->h - face->h;
|
|
||||||
|
|
||||||
/* Loop blit. */
|
|
||||||
for (j=0; j <= nj; j+=4) {
|
|
||||||
for (i=0; i <= ni; i+=4) {
|
|
||||||
/* Blitting. */
|
|
||||||
rect.x = i;
|
|
||||||
rect.y = j;
|
|
||||||
ret = SDL_BlitSurface( face, NULL, testsur, &rect );
|
|
||||||
if (SDL_ATassert( "SDL_BlitSurface", ret == 0))
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/* See if it's the same. */
|
|
||||||
if (SDL_ATassert( "Blitting output not the same (normal blit).",
|
|
||||||
surface_compare( testsur, &img_blit, 0 )==0 ))
|
|
||||||
return;
|
|
||||||
|
|
||||||
/* Clear surface. */
|
|
||||||
ret = SDL_FillRect( testsur, NULL,
|
|
||||||
SDL_MapRGB( testsur->format, 0, 0, 0 ) );
|
|
||||||
if (SDL_ATassert( "SDL_FillRect", ret == 0))
|
|
||||||
return;
|
|
||||||
|
|
||||||
/* Test blitting with colour mod. */
|
|
||||||
for (j=0; j <= nj; j+=4) {
|
|
||||||
for (i=0; i <= ni; i+=4) {
|
|
||||||
/* Set colour mod. */
|
|
||||||
ret = SDL_SetSurfaceColorMod( face, (255/nj)*j, (255/ni)*i, (255/nj)*j );
|
|
||||||
if (SDL_ATassert( "SDL_SetSurfaceColorMod", ret == 0))
|
|
||||||
return;
|
|
||||||
|
|
||||||
/* Blitting. */
|
|
||||||
rect.x = i;
|
|
||||||
rect.y = j;
|
|
||||||
ret = SDL_BlitSurface( face, NULL, testsur, &rect );
|
|
||||||
if (SDL_ATassert( "SDL_BlitSurface", ret == 0))
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/* See if it's the same. */
|
|
||||||
if (SDL_ATassert( "Blitting output not the same (using SDL_SetSurfaceColorMod).",
|
|
||||||
surface_compare( testsur, &img_blitColour, 0 )==0 ))
|
|
||||||
return;
|
|
||||||
|
|
||||||
/* Clear surface. */
|
|
||||||
ret = SDL_FillRect( testsur, NULL,
|
|
||||||
SDL_MapRGB( testsur->format, 0, 0, 0 ) );
|
|
||||||
if (SDL_ATassert( "SDL_FillRect", ret == 0))
|
|
||||||
return;
|
|
||||||
|
|
||||||
/* Restore colour. */
|
|
||||||
ret = SDL_SetSurfaceColorMod( face, 255, 255, 255 );
|
|
||||||
if (SDL_ATassert( "SDL_SetSurfaceColorMod", ret == 0))
|
|
||||||
return;
|
|
||||||
|
|
||||||
/* Test blitting with colour mod. */
|
|
||||||
for (j=0; j <= nj; j+=4) {
|
|
||||||
for (i=0; i <= ni; i+=4) {
|
|
||||||
/* Set alpha mod. */
|
|
||||||
ret = SDL_SetSurfaceAlphaMod( face, (255/ni)*i );
|
|
||||||
if (SDL_ATassert( "SDL_SetSurfaceAlphaMod", ret == 0))
|
|
||||||
return;
|
|
||||||
|
|
||||||
/* Blitting. */
|
|
||||||
rect.x = i;
|
|
||||||
rect.y = j;
|
|
||||||
ret = SDL_BlitSurface( face, NULL, testsur, &rect );
|
|
||||||
if (SDL_ATassert( "SDL_BlitSurface", ret == 0))
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/* See if it's the same. */
|
|
||||||
if (SDL_ATassert( "Blitting output not the same (using SDL_SetSurfaceAlphaMod).",
|
|
||||||
surface_compare( testsur, &img_blitAlpha, 0 )==0 ))
|
|
||||||
return;
|
|
||||||
|
|
||||||
/* Clean up. */
|
|
||||||
SDL_FreeSurface( face );
|
|
||||||
|
|
||||||
SDL_ATend();
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @brief Tests a blend mode.
|
|
||||||
*/
|
|
||||||
static int surface_testBlitBlendMode( SDL_Surface *testsur, SDL_Surface *face, SDL_BlendMode bMode )
|
|
||||||
{
|
|
||||||
int ret;
|
|
||||||
int i, j, ni, nj;
|
|
||||||
SDL_Rect rect;
|
|
||||||
|
|
||||||
/* Clear surface. */
|
|
||||||
ret = SDL_FillRect( testsur, NULL,
|
|
||||||
SDL_MapRGB( testsur->format, 0, 0, 0 ) );
|
|
||||||
if (SDL_ATassert( "SDL_FillRect", ret == 0))
|
|
||||||
return 1;
|
|
||||||
|
|
||||||
/* Steps to take. */
|
|
||||||
ni = testsur->w - face->w;
|
|
||||||
nj = testsur->h - face->h;
|
|
||||||
|
|
||||||
/* Constant values. */
|
|
||||||
rect.w = face->w;
|
|
||||||
rect.h = face->h;
|
|
||||||
|
|
||||||
/* Test blend mode. */
|
|
||||||
for (j=0; j <= nj; j+=4) {
|
|
||||||
for (i=0; i <= ni; i+=4) {
|
|
||||||
/* Set blend mode. */
|
|
||||||
ret = SDL_SetSurfaceBlendMode( face, bMode );
|
|
||||||
if (SDL_ATassert( "SDL_SetSurfaceBlendMode", ret == 0))
|
|
||||||
return 1;
|
|
||||||
|
|
||||||
/* Blitting. */
|
|
||||||
rect.x = i;
|
|
||||||
rect.y = j;
|
|
||||||
ret = SDL_BlitSurface( face, NULL, testsur, &rect );
|
|
||||||
if (SDL_ATassert( "SDL_BlitSurface", ret == 0))
|
|
||||||
return 1;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @brief Tests some more blitting routines.
|
|
||||||
*/
|
|
||||||
static void surface_testBlitBlend( SDL_Surface *testsur )
|
|
||||||
{
|
|
||||||
int ret;
|
|
||||||
SDL_Rect rect;
|
|
||||||
SDL_Surface *face;
|
|
||||||
int i, j, ni, nj;
|
|
||||||
int mode;
|
|
||||||
SDL_BlendMode bMode;
|
|
||||||
|
|
||||||
SDL_ATbegin( "Blit Blending Tests" );
|
|
||||||
|
|
||||||
/* Clear surface. */
|
|
||||||
ret = SDL_FillRect( testsur, NULL,
|
|
||||||
SDL_MapRGB( testsur->format, 0, 0, 0 ) );
|
|
||||||
if (SDL_ATassert( "SDL_FillRect", ret == 0))
|
|
||||||
return;
|
|
||||||
|
|
||||||
/* Create the blit surface. */
|
|
||||||
face = SDL_CreateRGBSurfaceFrom( (void*)img_face.pixel_data,
|
|
||||||
img_face.width, img_face.height, 32, img_face.width*4,
|
|
||||||
#if (SDL_BYTEORDER == SDL_BIG_ENDIAN)
|
|
||||||
0xff000000, /* Red bit mask. */
|
|
||||||
0x00ff0000, /* Green bit mask. */
|
|
||||||
0x0000ff00, /* Blue bit mask. */
|
|
||||||
0x000000ff /* Alpha bit mask. */
|
|
||||||
#else
|
|
||||||
0x000000ff, /* Red bit mask. */
|
|
||||||
0x0000ff00, /* Green bit mask. */
|
|
||||||
0x00ff0000, /* Blue bit mask. */
|
|
||||||
0xff000000 /* Alpha bit mask. */
|
|
||||||
#endif
|
|
||||||
);
|
|
||||||
if (SDL_ATassert( "SDL_CreateRGBSurfaceFrom", face != NULL))
|
|
||||||
return;
|
|
||||||
|
|
||||||
/* Set alpha mod. */
|
|
||||||
ret = SDL_SetSurfaceAlphaMod( face, 100 );
|
|
||||||
if (SDL_ATassert( "SDL_SetSurfaceAlphaMod", ret == 0))
|
|
||||||
return;
|
|
||||||
|
|
||||||
/* Steps to take. */
|
|
||||||
ni = testsur->w - face->w;
|
|
||||||
nj = testsur->h - face->h;
|
|
||||||
|
|
||||||
/* Constant values. */
|
|
||||||
rect.w = face->w;
|
|
||||||
rect.h = face->h;
|
|
||||||
|
|
||||||
/* Test None. */
|
|
||||||
if (surface_testBlitBlendMode( testsur, face, SDL_BLENDMODE_NONE ))
|
|
||||||
return;
|
|
||||||
if (SDL_ATassert( "Blitting blending output not the same (using SDL_BLENDMODE_NONE).",
|
|
||||||
surface_compare( testsur, &img_blendNone, 0 )==0 ))
|
|
||||||
return;
|
|
||||||
|
|
||||||
/* Test Blend. */
|
|
||||||
if (surface_testBlitBlendMode( testsur, face, SDL_BLENDMODE_BLEND ))
|
|
||||||
return;
|
|
||||||
if (SDL_ATassert( "Blitting blending output not the same (using SDL_BLENDMODE_BLEND).",
|
|
||||||
surface_compare( testsur, &img_blendBlend, 0 )==0 ))
|
|
||||||
return;
|
|
||||||
|
|
||||||
/* Test Add. */
|
|
||||||
if (surface_testBlitBlendMode( testsur, face, SDL_BLENDMODE_ADD ))
|
|
||||||
return;
|
|
||||||
if (SDL_ATassert( "Blitting blending output not the same (using SDL_BLENDMODE_ADD).",
|
|
||||||
surface_compare( testsur, &img_blendAdd, 0 )==0 ))
|
|
||||||
return;
|
|
||||||
|
|
||||||
/* Test Mod. */
|
|
||||||
if (surface_testBlitBlendMode( testsur, face, SDL_BLENDMODE_MOD ))
|
|
||||||
return;
|
|
||||||
if (SDL_ATassert( "Blitting blending output not the same (using SDL_BLENDMODE_MOD).",
|
|
||||||
surface_compare( testsur, &img_blendMod, 0 )==0 ))
|
|
||||||
return;
|
|
||||||
|
|
||||||
/* Clear surface. */
|
|
||||||
ret = SDL_FillRect( testsur, NULL,
|
|
||||||
SDL_MapRGB( testsur->format, 0, 0, 0 ) );
|
|
||||||
if (SDL_ATassert( "SDL_FillRect", ret == 0))
|
|
||||||
return;
|
|
||||||
|
|
||||||
/* Loop blit. */
|
|
||||||
for (j=0; j <= nj; j+=4) {
|
|
||||||
for (i=0; i <= ni; i+=4) {
|
|
||||||
|
|
||||||
/* Set colour mod. */
|
|
||||||
ret = SDL_SetSurfaceColorMod( face, (255/nj)*j, (255/ni)*i, (255/nj)*j );
|
|
||||||
if (SDL_ATassert( "SDL_SetSurfaceColorMod", ret == 0))
|
|
||||||
return;
|
|
||||||
|
|
||||||
/* Set alpha mod. */
|
|
||||||
ret = SDL_SetSurfaceAlphaMod( face, (100/ni)*i );
|
|
||||||
if (SDL_ATassert( "SDL_SetSurfaceAlphaMod", ret == 0))
|
|
||||||
return;
|
|
||||||
|
|
||||||
/* Crazy blending mode magic. */
|
|
||||||
mode = (i/4*j/4) % 4;
|
|
||||||
if (mode==0) bMode = SDL_BLENDMODE_NONE;
|
|
||||||
else if (mode==1) bMode = SDL_BLENDMODE_BLEND;
|
|
||||||
else if (mode==2) bMode = SDL_BLENDMODE_ADD;
|
|
||||||
else if (mode==3) bMode = SDL_BLENDMODE_MOD;
|
|
||||||
ret = SDL_SetSurfaceBlendMode( face, bMode );
|
|
||||||
if (SDL_ATassert( "SDL_SetSurfaceBlendMode", ret == 0))
|
|
||||||
return;
|
|
||||||
|
|
||||||
/* Blitting. */
|
|
||||||
rect.x = i;
|
|
||||||
rect.y = j;
|
|
||||||
ret = SDL_BlitSurface( face, NULL, testsur, &rect );
|
|
||||||
if (SDL_ATassert( "SDL_BlitSurface", ret == 0))
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Check to see if matches. */
|
|
||||||
if (SDL_ATassert( "Blitting blending output not the same (using SDL_BLEND_*).",
|
|
||||||
surface_compare( testsur, &img_blendAll, 0 )==0 ))
|
|
||||||
return;
|
|
||||||
|
|
||||||
/* Clean up. */
|
|
||||||
SDL_FreeSurface( face );
|
|
||||||
|
|
||||||
SDL_ATend();
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @brief Runs all the tests on the surface.
|
|
||||||
*
|
|
||||||
* @param testsur Surface to run tests on.
|
|
||||||
*/
|
|
||||||
void surface_runTests( SDL_Surface *testsur )
|
|
||||||
{
|
|
||||||
/* Software surface blitting. */
|
|
||||||
surface_testBlit( testsur );
|
|
||||||
surface_testBlitBlend( testsur );
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @brief Entry point.
|
|
||||||
*/
|
|
||||||
#ifdef TEST_STANDALONE
|
|
||||||
int main( int argc, const char *argv[] )
|
|
||||||
{
|
|
||||||
(void) argc;
|
|
||||||
(void) argv;
|
|
||||||
#else /* TEST_STANDALONE */
|
|
||||||
int test_surface (void)
|
|
||||||
{
|
|
||||||
#endif /* TEST_STANDALONE */
|
|
||||||
int ret;
|
|
||||||
SDL_Surface *testsur;
|
|
||||||
|
|
||||||
SDL_ATinit( "SDL_Surface" );
|
|
||||||
|
|
||||||
SDL_ATbegin( "Initializing" );
|
|
||||||
/* Initializes the SDL subsystems. */
|
|
||||||
ret = SDL_Init(0);
|
|
||||||
if (SDL_ATassert( "SDL_Init(0)", ret == 0))
|
|
||||||
goto err;
|
|
||||||
|
|
||||||
/* Now run on the video mode. */
|
|
||||||
ret = SDL_InitSubSystem( SDL_INIT_VIDEO );
|
|
||||||
if (SDL_ATassert( "SDL_InitSubSystem( SDL_INIT_VIDEO )", ret == 0))
|
|
||||||
goto err;
|
|
||||||
|
|
||||||
/*
|
|
||||||
* Surface on surface tests.
|
|
||||||
*/
|
|
||||||
/* Create the test surface. */
|
|
||||||
testsur = SDL_CreateRGBSurface( 0, 80, 60, 32,
|
|
||||||
RMASK, GMASK, BMASK, AMASK );
|
|
||||||
if (SDL_ATassert( "SDL_CreateRGBSurface", testsur != NULL))
|
|
||||||
goto err;
|
|
||||||
SDL_ATend();
|
|
||||||
/* Run surface on surface tests. */
|
|
||||||
surface_testLoad( testsur );
|
|
||||||
surface_runTests( testsur );
|
|
||||||
/* Clean up. */
|
|
||||||
SDL_FreeSurface( testsur );
|
|
||||||
|
|
||||||
/* Exit SDL. */
|
|
||||||
SDL_Quit();
|
|
||||||
|
|
||||||
return SDL_ATfinish();
|
|
||||||
|
|
||||||
err:
|
|
||||||
return SDL_ATfinish();
|
|
||||||
}
|
|
||||||
|
|
|
@ -1,18 +0,0 @@
|
||||||
/**
|
|
||||||
* Part of SDL test suite.
|
|
||||||
*
|
|
||||||
* Written by Edgar Simo "bobbens"
|
|
||||||
*
|
|
||||||
* Released under Public Domain.
|
|
||||||
*/
|
|
||||||
|
|
||||||
|
|
||||||
#ifndef _TEST_SURFACE
|
|
||||||
# define _TEST_SURFACE
|
|
||||||
|
|
||||||
|
|
||||||
int test_surface (void);
|
|
||||||
|
|
||||||
|
|
||||||
#endif /* _TEST_SURFACE */
|
|
||||||
|
|
|
@ -1,185 +0,0 @@
|
||||||
/*
|
|
||||||
* SDL test suite framework code.
|
|
||||||
*
|
|
||||||
* Written by Edgar Simo "bobbens"
|
|
||||||
*
|
|
||||||
* Released under Public Domain.
|
|
||||||
*/
|
|
||||||
|
|
||||||
#include "SDL.h"
|
|
||||||
#include "SDL_at.h"
|
|
||||||
|
|
||||||
#include "platform/platform.h"
|
|
||||||
#include "rwops/rwops.h"
|
|
||||||
#include "rect/rect.h"
|
|
||||||
#include "surface/surface.h"
|
|
||||||
#include "render/render.h"
|
|
||||||
#include "audio/audio.h"
|
|
||||||
|
|
||||||
#if defined(WIN32)
|
|
||||||
#define NO_GETOPT
|
|
||||||
#endif
|
|
||||||
#if defined(__QNXNTO__)
|
|
||||||
#define NO_GETOPT_LONG 1
|
|
||||||
#endif /* __QNXNTO__ */
|
|
||||||
|
|
||||||
#include <stdio.h> /* printf */
|
|
||||||
#include <stdlib.h> /* exit */
|
|
||||||
#ifndef NO_GETOPT
|
|
||||||
#include <unistd.h> /* getopt */
|
|
||||||
#if !defined(NO_GETOPT_LONG)
|
|
||||||
#include <getopt.h> /* getopt_long */
|
|
||||||
#endif /* !NO_GETOPT_LONG */
|
|
||||||
#endif /* !NO_GETOPT */
|
|
||||||
|
|
||||||
|
|
||||||
/*
|
|
||||||
* Tests to run.
|
|
||||||
*/
|
|
||||||
static int run_manual = 0; /**< Run manual tests. */
|
|
||||||
/* Manual. */
|
|
||||||
/* Automatic. */
|
|
||||||
static int run_platform = 1; /**< Run platform tests. */
|
|
||||||
static int run_rwops = 1; /**< Run RWops tests. */
|
|
||||||
static int run_rect = 1; /**< Run rect tests. */
|
|
||||||
static int run_surface = 1; /**< Run surface tests. */
|
|
||||||
static int run_render = 1; /**< Run render tests. */
|
|
||||||
static int run_audio = 1; /**< Run audio tests. */
|
|
||||||
|
|
||||||
/*
|
|
||||||
* Prototypes.
|
|
||||||
*/
|
|
||||||
static void print_usage( const char *name );
|
|
||||||
static void parse_options( int argc, char *argv[] );
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @brief Displays program usage.
|
|
||||||
*/
|
|
||||||
static void print_usage( const char *name )
|
|
||||||
{
|
|
||||||
printf("Usage: %s [OPTIONS]\n", name);
|
|
||||||
printf("Options are:\n");
|
|
||||||
printf(" -m, --manual enables tests that require user interaction\n");
|
|
||||||
printf(" --noplatform do not run the platform tests\n");
|
|
||||||
printf(" --norwops do not run the rwops tests\n");
|
|
||||||
printf(" --norect do not run the rect tests\n");
|
|
||||||
printf(" --nosurface do not run the surface tests\n");
|
|
||||||
printf(" --norender do not run the render tests\n");
|
|
||||||
printf(" --noaudio do not run the audio tests\n");
|
|
||||||
printf(" -v, --verbose increases verbosity level by 1 for each -v\n");
|
|
||||||
printf(" -q, --quiet only displays errors\n");
|
|
||||||
printf(" -h, --help display this message and exit\n");
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @brief Handles the options.
|
|
||||||
*/
|
|
||||||
static void parse_options( int argc, char *argv[] )
|
|
||||||
{
|
|
||||||
int i;
|
|
||||||
|
|
||||||
for (i = 1; i < argc; ++i) {
|
|
||||||
const char *arg = argv[i];
|
|
||||||
if (SDL_strcmp(arg, "-m") == 0 || SDL_strcmp(arg, "--manual") == 0) {
|
|
||||||
run_manual = 1;
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
if (SDL_strcmp(arg, "-v") == 0 || SDL_strcmp(arg, "--verbose") == 0) {
|
|
||||||
int level;
|
|
||||||
SDL_ATgeti( SDL_AT_VERBOSE, &level );
|
|
||||||
SDL_ATseti( SDL_AT_VERBOSE, level+1 );
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
if (SDL_strcmp(arg, "-q") == 0 || SDL_strcmp(arg, "--quiet") == 0) {
|
|
||||||
SDL_ATseti( SDL_AT_QUIET, 1 );
|
|
||||||
SDL_setenv("SDL_ASSERT", "abort", 0);
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
if (SDL_strcmp(arg, "--noplatform") == 0) {
|
|
||||||
run_platform = 0;
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
if (SDL_strcmp(arg, "--norwops") == 0) {
|
|
||||||
run_rwops = 0;
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
if (SDL_strcmp(arg, "--norect") == 0) {
|
|
||||||
run_rect = 0;
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
if (SDL_strcmp(arg, "--nosurface") == 0) {
|
|
||||||
run_surface = 0;
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
if (SDL_strcmp(arg, "--norender") == 0) {
|
|
||||||
run_render = 0;
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
if (SDL_strcmp(arg, "--noaudio") == 0) {
|
|
||||||
run_audio = 0;
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Print help and exit! */
|
|
||||||
print_usage( argv[0] );
|
|
||||||
exit(EXIT_FAILURE);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @brief Main entry point.
|
|
||||||
*/
|
|
||||||
int main( int argc, char *argv[] )
|
|
||||||
{
|
|
||||||
int failed;
|
|
||||||
const char *rev;
|
|
||||||
SDL_version ver;
|
|
||||||
|
|
||||||
/* Get options. */
|
|
||||||
parse_options( argc, argv );
|
|
||||||
|
|
||||||
/* Defaults. */
|
|
||||||
failed = 0;
|
|
||||||
|
|
||||||
/* Print some text if verbose. */
|
|
||||||
SDL_GetVersion( &ver );
|
|
||||||
rev = SDL_GetRevision();
|
|
||||||
SDL_ATprintVerbose( 1, "Running tests with SDL %d.%d.%d revision %s\n",
|
|
||||||
ver.major, ver.minor, ver.patch, rev );
|
|
||||||
|
|
||||||
/* Automatic tests. */
|
|
||||||
if (run_platform)
|
|
||||||
failed += test_platform();
|
|
||||||
if (run_rwops)
|
|
||||||
failed += test_rwops();
|
|
||||||
if (run_rect)
|
|
||||||
failed += test_rect();
|
|
||||||
if (run_surface)
|
|
||||||
failed += test_surface();
|
|
||||||
if (run_render)
|
|
||||||
failed += test_render();
|
|
||||||
if (run_audio)
|
|
||||||
failed += test_audio();
|
|
||||||
|
|
||||||
/* Manual tests. */
|
|
||||||
if (run_manual) {
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Display more information if failed. */
|
|
||||||
if (failed > 0) {
|
|
||||||
SDL_ATprintErr( "Tests run with SDL %d.%d.%d revision %d\n",
|
|
||||||
ver.major, ver.minor, ver.patch, rev );
|
|
||||||
SDL_ATprintErr( "System is running %s and is %s endian\n",
|
|
||||||
SDL_GetPlatform(),
|
|
||||||
#if SDL_BYTEORDER == SDL_LIL_ENDIAN
|
|
||||||
"little"
|
|
||||||
#else
|
|
||||||
"big"
|
|
||||||
#endif
|
|
||||||
);
|
|
||||||
}
|
|
||||||
|
|
||||||
return failed;
|
|
||||||
}
|
|
||||||
|
|
|
@ -1,24 +0,0 @@
|
||||||
Note:
|
|
||||||
|
|
||||||
The copyright below applies to source code in src/ and its
|
|
||||||
subdirectories unless otherwise noted.
|
|
||||||
|
|
||||||
======
|
|
||||||
|
|
||||||
Copyright (C) 2011 Markus Kauppila <markus.kauppila@gmail.com>
|
|
||||||
|
|
||||||
This software is provided 'as-is', without any express or implied
|
|
||||||
warranty. In no event will the authors be held liable for any damages
|
|
||||||
arising from the use of this software.
|
|
||||||
|
|
||||||
Permission is granted to anyone to use this software for any purpose,
|
|
||||||
including commercial applications, and to alter it and redistribute it
|
|
||||||
freely, subject to the following restrictions:
|
|
||||||
|
|
||||||
1. The origin of this software must not be misrepresented; you must not
|
|
||||||
claim that you wrote the original software. If you use this software
|
|
||||||
in a product, an acknowledgment in the product documentation would be
|
|
||||||
appreciated but is not required.
|
|
||||||
2. Altered source versions must be plainly marked as such, and must not be
|
|
||||||
misrepresented as being the original software.
|
|
||||||
3. This notice may not be removed or altered from any source distribution.
|
|
File diff suppressed because it is too large
Load diff
|
@ -1,18 +0,0 @@
|
||||||
Installation Instructions
|
|
||||||
*************************
|
|
||||||
|
|
||||||
To compile the project use the following commands:
|
|
||||||
|
|
||||||
./autogen.sh
|
|
||||||
./configure
|
|
||||||
make
|
|
||||||
|
|
||||||
Then you're ready to test. Run the harness with the following command:
|
|
||||||
|
|
||||||
./runner
|
|
||||||
|
|
||||||
To view the command line options for the harness use: ./runner --help
|
|
||||||
|
|
||||||
For more information, check out project's wiki at:
|
|
||||||
https://bitbucket.org/Markusk/sdl-gsoc/wiki/Home
|
|
||||||
|
|
|
@ -1,26 +0,0 @@
|
||||||
ACLOCAL_AMFLAGS = -I acinclude -I build-scripts
|
|
||||||
|
|
||||||
SUBDIRS = src/libSDLtest \
|
|
||||||
src/runner \
|
|
||||||
tests/testdummy \
|
|
||||||
tests/testrect \
|
|
||||||
tests/testplatform \
|
|
||||||
tests/testaudio \
|
|
||||||
tests/testsurface \
|
|
||||||
tests/testrwops \
|
|
||||||
tests/testrender \
|
|
||||||
tests/testvideo \
|
|
||||||
tests/testsyswm \
|
|
||||||
tests/testclipboard \
|
|
||||||
tests/testevents \
|
|
||||||
tests/testkeyboard
|
|
||||||
|
|
||||||
install: install-runner install-tests
|
|
||||||
install-runner:
|
|
||||||
$(SHELL) build-scripts/install-runner.sh
|
|
||||||
install-tests:
|
|
||||||
$(SHELL) build-scripts/install-tests.sh
|
|
||||||
|
|
||||||
distclean-local:
|
|
||||||
$(SHELL) build-scripts/distclean.sh
|
|
||||||
|
|
|
@ -1,12 +0,0 @@
|
||||||
/*! \mainpage Documentation for SDL test harness
|
|
||||||
|
|
||||||
\section Introduction
|
|
||||||
|
|
||||||
This is doxygen-generated docs for SDL test harness.
|
|
||||||
|
|
||||||
Pull the project with Mercurial:
|
|
||||||
hg clone https://Markusk@bitbucket.org/Markusk/sdl-gsoc/wiki
|
|
||||||
|
|
||||||
For more information: https://bitbucket.org/Markusk/sdl-gsoc/wiki/Home
|
|
||||||
|
|
||||||
*/
|
|
|
@ -1,11 +0,0 @@
|
||||||
- Add proper Tracelog function to logging system. It should be possible
|
|
||||||
for a test writer to send information to logs for further investigation.
|
|
||||||
This would replace the current Log(time_t, char *fmt, ...) function
|
|
||||||
in practice.
|
|
||||||
|
|
||||||
- If running tests with --in-proc option failing asserts
|
|
||||||
don't bail out from the test case as it should. Fix this.
|
|
||||||
|
|
||||||
- Might be good idea to warn the user if runner is given command line
|
|
||||||
options that doesn't make sense together. Cases such as using --xsl
|
|
||||||
without --xml option or --iterations combined with --exec-key
|
|
7359
test/test-automation/acinclude/libtool.m4
vendored
7359
test/test-automation/acinclude/libtool.m4
vendored
File diff suppressed because it is too large
Load diff
368
test/test-automation/acinclude/ltoptions.m4
vendored
368
test/test-automation/acinclude/ltoptions.m4
vendored
|
@ -1,368 +0,0 @@
|
||||||
# Helper functions for option handling. -*- Autoconf -*-
|
|
||||||
#
|
|
||||||
# Copyright (C) 2004, 2005, 2007, 2008 Free Software Foundation, Inc.
|
|
||||||
# Written by Gary V. Vaughan, 2004
|
|
||||||
#
|
|
||||||
# This file is free software; the Free Software Foundation gives
|
|
||||||
# unlimited permission to copy and/or distribute it, with or without
|
|
||||||
# modifications, as long as this notice is preserved.
|
|
||||||
|
|
||||||
# serial 6 ltoptions.m4
|
|
||||||
|
|
||||||
# This is to help aclocal find these macros, as it can't see m4_define.
|
|
||||||
AC_DEFUN([LTOPTIONS_VERSION], [m4_if([1])])
|
|
||||||
|
|
||||||
|
|
||||||
# _LT_MANGLE_OPTION(MACRO-NAME, OPTION-NAME)
|
|
||||||
# ------------------------------------------
|
|
||||||
m4_define([_LT_MANGLE_OPTION],
|
|
||||||
[[_LT_OPTION_]m4_bpatsubst($1__$2, [[^a-zA-Z0-9_]], [_])])
|
|
||||||
|
|
||||||
|
|
||||||
# _LT_SET_OPTION(MACRO-NAME, OPTION-NAME)
|
|
||||||
# ---------------------------------------
|
|
||||||
# Set option OPTION-NAME for macro MACRO-NAME, and if there is a
|
|
||||||
# matching handler defined, dispatch to it. Other OPTION-NAMEs are
|
|
||||||
# saved as a flag.
|
|
||||||
m4_define([_LT_SET_OPTION],
|
|
||||||
[m4_define(_LT_MANGLE_OPTION([$1], [$2]))dnl
|
|
||||||
m4_ifdef(_LT_MANGLE_DEFUN([$1], [$2]),
|
|
||||||
_LT_MANGLE_DEFUN([$1], [$2]),
|
|
||||||
[m4_warning([Unknown $1 option `$2'])])[]dnl
|
|
||||||
])
|
|
||||||
|
|
||||||
|
|
||||||
# _LT_IF_OPTION(MACRO-NAME, OPTION-NAME, IF-SET, [IF-NOT-SET])
|
|
||||||
# ------------------------------------------------------------
|
|
||||||
# Execute IF-SET if OPTION is set, IF-NOT-SET otherwise.
|
|
||||||
m4_define([_LT_IF_OPTION],
|
|
||||||
[m4_ifdef(_LT_MANGLE_OPTION([$1], [$2]), [$3], [$4])])
|
|
||||||
|
|
||||||
|
|
||||||
# _LT_UNLESS_OPTIONS(MACRO-NAME, OPTION-LIST, IF-NOT-SET)
|
|
||||||
# -------------------------------------------------------
|
|
||||||
# Execute IF-NOT-SET unless all options in OPTION-LIST for MACRO-NAME
|
|
||||||
# are set.
|
|
||||||
m4_define([_LT_UNLESS_OPTIONS],
|
|
||||||
[m4_foreach([_LT_Option], m4_split(m4_normalize([$2])),
|
|
||||||
[m4_ifdef(_LT_MANGLE_OPTION([$1], _LT_Option),
|
|
||||||
[m4_define([$0_found])])])[]dnl
|
|
||||||
m4_ifdef([$0_found], [m4_undefine([$0_found])], [$3
|
|
||||||
])[]dnl
|
|
||||||
])
|
|
||||||
|
|
||||||
|
|
||||||
# _LT_SET_OPTIONS(MACRO-NAME, OPTION-LIST)
|
|
||||||
# ----------------------------------------
|
|
||||||
# OPTION-LIST is a space-separated list of Libtool options associated
|
|
||||||
# with MACRO-NAME. If any OPTION has a matching handler declared with
|
|
||||||
# LT_OPTION_DEFINE, dispatch to that macro; otherwise complain about
|
|
||||||
# the unknown option and exit.
|
|
||||||
m4_defun([_LT_SET_OPTIONS],
|
|
||||||
[# Set options
|
|
||||||
m4_foreach([_LT_Option], m4_split(m4_normalize([$2])),
|
|
||||||
[_LT_SET_OPTION([$1], _LT_Option)])
|
|
||||||
|
|
||||||
m4_if([$1],[LT_INIT],[
|
|
||||||
dnl
|
|
||||||
dnl Simply set some default values (i.e off) if boolean options were not
|
|
||||||
dnl specified:
|
|
||||||
_LT_UNLESS_OPTIONS([LT_INIT], [dlopen], [enable_dlopen=no
|
|
||||||
])
|
|
||||||
_LT_UNLESS_OPTIONS([LT_INIT], [win32-dll], [enable_win32_dll=no
|
|
||||||
])
|
|
||||||
dnl
|
|
||||||
dnl If no reference was made to various pairs of opposing options, then
|
|
||||||
dnl we run the default mode handler for the pair. For example, if neither
|
|
||||||
dnl `shared' nor `disable-shared' was passed, we enable building of shared
|
|
||||||
dnl archives by default:
|
|
||||||
_LT_UNLESS_OPTIONS([LT_INIT], [shared disable-shared], [_LT_ENABLE_SHARED])
|
|
||||||
_LT_UNLESS_OPTIONS([LT_INIT], [static disable-static], [_LT_ENABLE_STATIC])
|
|
||||||
_LT_UNLESS_OPTIONS([LT_INIT], [pic-only no-pic], [_LT_WITH_PIC])
|
|
||||||
_LT_UNLESS_OPTIONS([LT_INIT], [fast-install disable-fast-install],
|
|
||||||
[_LT_ENABLE_FAST_INSTALL])
|
|
||||||
])
|
|
||||||
])# _LT_SET_OPTIONS
|
|
||||||
|
|
||||||
|
|
||||||
## --------------------------------- ##
|
|
||||||
## Macros to handle LT_INIT options. ##
|
|
||||||
## --------------------------------- ##
|
|
||||||
|
|
||||||
# _LT_MANGLE_DEFUN(MACRO-NAME, OPTION-NAME)
|
|
||||||
# -----------------------------------------
|
|
||||||
m4_define([_LT_MANGLE_DEFUN],
|
|
||||||
[[_LT_OPTION_DEFUN_]m4_bpatsubst(m4_toupper([$1__$2]), [[^A-Z0-9_]], [_])])
|
|
||||||
|
|
||||||
|
|
||||||
# LT_OPTION_DEFINE(MACRO-NAME, OPTION-NAME, CODE)
|
|
||||||
# -----------------------------------------------
|
|
||||||
m4_define([LT_OPTION_DEFINE],
|
|
||||||
[m4_define(_LT_MANGLE_DEFUN([$1], [$2]), [$3])[]dnl
|
|
||||||
])# LT_OPTION_DEFINE
|
|
||||||
|
|
||||||
|
|
||||||
# dlopen
|
|
||||||
# ------
|
|
||||||
LT_OPTION_DEFINE([LT_INIT], [dlopen], [enable_dlopen=yes
|
|
||||||
])
|
|
||||||
|
|
||||||
AU_DEFUN([AC_LIBTOOL_DLOPEN],
|
|
||||||
[_LT_SET_OPTION([LT_INIT], [dlopen])
|
|
||||||
AC_DIAGNOSE([obsolete],
|
|
||||||
[$0: Remove this warning and the call to _LT_SET_OPTION when you
|
|
||||||
put the `dlopen' option into LT_INIT's first parameter.])
|
|
||||||
])
|
|
||||||
|
|
||||||
dnl aclocal-1.4 backwards compatibility:
|
|
||||||
dnl AC_DEFUN([AC_LIBTOOL_DLOPEN], [])
|
|
||||||
|
|
||||||
|
|
||||||
# win32-dll
|
|
||||||
# ---------
|
|
||||||
# Declare package support for building win32 dll's.
|
|
||||||
LT_OPTION_DEFINE([LT_INIT], [win32-dll],
|
|
||||||
[enable_win32_dll=yes
|
|
||||||
|
|
||||||
case $host in
|
|
||||||
*-*-cygwin* | *-*-mingw* | *-*-pw32* | *-cegcc*)
|
|
||||||
AC_CHECK_TOOL(AS, as, false)
|
|
||||||
AC_CHECK_TOOL(DLLTOOL, dlltool, false)
|
|
||||||
AC_CHECK_TOOL(OBJDUMP, objdump, false)
|
|
||||||
;;
|
|
||||||
esac
|
|
||||||
|
|
||||||
test -z "$AS" && AS=as
|
|
||||||
_LT_DECL([], [AS], [0], [Assembler program])dnl
|
|
||||||
|
|
||||||
test -z "$DLLTOOL" && DLLTOOL=dlltool
|
|
||||||
_LT_DECL([], [DLLTOOL], [0], [DLL creation program])dnl
|
|
||||||
|
|
||||||
test -z "$OBJDUMP" && OBJDUMP=objdump
|
|
||||||
_LT_DECL([], [OBJDUMP], [0], [Object dumper program])dnl
|
|
||||||
])# win32-dll
|
|
||||||
|
|
||||||
AU_DEFUN([AC_LIBTOOL_WIN32_DLL],
|
|
||||||
[AC_REQUIRE([AC_CANONICAL_HOST])dnl
|
|
||||||
_LT_SET_OPTION([LT_INIT], [win32-dll])
|
|
||||||
AC_DIAGNOSE([obsolete],
|
|
||||||
[$0: Remove this warning and the call to _LT_SET_OPTION when you
|
|
||||||
put the `win32-dll' option into LT_INIT's first parameter.])
|
|
||||||
])
|
|
||||||
|
|
||||||
dnl aclocal-1.4 backwards compatibility:
|
|
||||||
dnl AC_DEFUN([AC_LIBTOOL_WIN32_DLL], [])
|
|
||||||
|
|
||||||
|
|
||||||
# _LT_ENABLE_SHARED([DEFAULT])
|
|
||||||
# ----------------------------
|
|
||||||
# implement the --enable-shared flag, and supports the `shared' and
|
|
||||||
# `disable-shared' LT_INIT options.
|
|
||||||
# DEFAULT is either `yes' or `no'. If omitted, it defaults to `yes'.
|
|
||||||
m4_define([_LT_ENABLE_SHARED],
|
|
||||||
[m4_define([_LT_ENABLE_SHARED_DEFAULT], [m4_if($1, no, no, yes)])dnl
|
|
||||||
AC_ARG_ENABLE([shared],
|
|
||||||
[AS_HELP_STRING([--enable-shared@<:@=PKGS@:>@],
|
|
||||||
[build shared libraries @<:@default=]_LT_ENABLE_SHARED_DEFAULT[@:>@])],
|
|
||||||
[p=${PACKAGE-default}
|
|
||||||
case $enableval in
|
|
||||||
yes) enable_shared=yes ;;
|
|
||||||
no) enable_shared=no ;;
|
|
||||||
*)
|
|
||||||
enable_shared=no
|
|
||||||
# Look at the argument we got. We use all the common list separators.
|
|
||||||
lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR,"
|
|
||||||
for pkg in $enableval; do
|
|
||||||
IFS="$lt_save_ifs"
|
|
||||||
if test "X$pkg" = "X$p"; then
|
|
||||||
enable_shared=yes
|
|
||||||
fi
|
|
||||||
done
|
|
||||||
IFS="$lt_save_ifs"
|
|
||||||
;;
|
|
||||||
esac],
|
|
||||||
[enable_shared=]_LT_ENABLE_SHARED_DEFAULT)
|
|
||||||
|
|
||||||
_LT_DECL([build_libtool_libs], [enable_shared], [0],
|
|
||||||
[Whether or not to build shared libraries])
|
|
||||||
])# _LT_ENABLE_SHARED
|
|
||||||
|
|
||||||
LT_OPTION_DEFINE([LT_INIT], [shared], [_LT_ENABLE_SHARED([yes])])
|
|
||||||
LT_OPTION_DEFINE([LT_INIT], [disable-shared], [_LT_ENABLE_SHARED([no])])
|
|
||||||
|
|
||||||
# Old names:
|
|
||||||
AC_DEFUN([AC_ENABLE_SHARED],
|
|
||||||
[_LT_SET_OPTION([LT_INIT], m4_if([$1], [no], [disable-])[shared])
|
|
||||||
])
|
|
||||||
|
|
||||||
AC_DEFUN([AC_DISABLE_SHARED],
|
|
||||||
[_LT_SET_OPTION([LT_INIT], [disable-shared])
|
|
||||||
])
|
|
||||||
|
|
||||||
AU_DEFUN([AM_ENABLE_SHARED], [AC_ENABLE_SHARED($@)])
|
|
||||||
AU_DEFUN([AM_DISABLE_SHARED], [AC_DISABLE_SHARED($@)])
|
|
||||||
|
|
||||||
dnl aclocal-1.4 backwards compatibility:
|
|
||||||
dnl AC_DEFUN([AM_ENABLE_SHARED], [])
|
|
||||||
dnl AC_DEFUN([AM_DISABLE_SHARED], [])
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
# _LT_ENABLE_STATIC([DEFAULT])
|
|
||||||
# ----------------------------
|
|
||||||
# implement the --enable-static flag, and support the `static' and
|
|
||||||
# `disable-static' LT_INIT options.
|
|
||||||
# DEFAULT is either `yes' or `no'. If omitted, it defaults to `yes'.
|
|
||||||
m4_define([_LT_ENABLE_STATIC],
|
|
||||||
[m4_define([_LT_ENABLE_STATIC_DEFAULT], [m4_if($1, no, no, yes)])dnl
|
|
||||||
AC_ARG_ENABLE([static],
|
|
||||||
[AS_HELP_STRING([--enable-static@<:@=PKGS@:>@],
|
|
||||||
[build static libraries @<:@default=]_LT_ENABLE_STATIC_DEFAULT[@:>@])],
|
|
||||||
[p=${PACKAGE-default}
|
|
||||||
case $enableval in
|
|
||||||
yes) enable_static=yes ;;
|
|
||||||
no) enable_static=no ;;
|
|
||||||
*)
|
|
||||||
enable_static=no
|
|
||||||
# Look at the argument we got. We use all the common list separators.
|
|
||||||
lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR,"
|
|
||||||
for pkg in $enableval; do
|
|
||||||
IFS="$lt_save_ifs"
|
|
||||||
if test "X$pkg" = "X$p"; then
|
|
||||||
enable_static=yes
|
|
||||||
fi
|
|
||||||
done
|
|
||||||
IFS="$lt_save_ifs"
|
|
||||||
;;
|
|
||||||
esac],
|
|
||||||
[enable_static=]_LT_ENABLE_STATIC_DEFAULT)
|
|
||||||
|
|
||||||
_LT_DECL([build_old_libs], [enable_static], [0],
|
|
||||||
[Whether or not to build static libraries])
|
|
||||||
])# _LT_ENABLE_STATIC
|
|
||||||
|
|
||||||
LT_OPTION_DEFINE([LT_INIT], [static], [_LT_ENABLE_STATIC([yes])])
|
|
||||||
LT_OPTION_DEFINE([LT_INIT], [disable-static], [_LT_ENABLE_STATIC([no])])
|
|
||||||
|
|
||||||
# Old names:
|
|
||||||
AC_DEFUN([AC_ENABLE_STATIC],
|
|
||||||
[_LT_SET_OPTION([LT_INIT], m4_if([$1], [no], [disable-])[static])
|
|
||||||
])
|
|
||||||
|
|
||||||
AC_DEFUN([AC_DISABLE_STATIC],
|
|
||||||
[_LT_SET_OPTION([LT_INIT], [disable-static])
|
|
||||||
])
|
|
||||||
|
|
||||||
AU_DEFUN([AM_ENABLE_STATIC], [AC_ENABLE_STATIC($@)])
|
|
||||||
AU_DEFUN([AM_DISABLE_STATIC], [AC_DISABLE_STATIC($@)])
|
|
||||||
|
|
||||||
dnl aclocal-1.4 backwards compatibility:
|
|
||||||
dnl AC_DEFUN([AM_ENABLE_STATIC], [])
|
|
||||||
dnl AC_DEFUN([AM_DISABLE_STATIC], [])
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
# _LT_ENABLE_FAST_INSTALL([DEFAULT])
|
|
||||||
# ----------------------------------
|
|
||||||
# implement the --enable-fast-install flag, and support the `fast-install'
|
|
||||||
# and `disable-fast-install' LT_INIT options.
|
|
||||||
# DEFAULT is either `yes' or `no'. If omitted, it defaults to `yes'.
|
|
||||||
m4_define([_LT_ENABLE_FAST_INSTALL],
|
|
||||||
[m4_define([_LT_ENABLE_FAST_INSTALL_DEFAULT], [m4_if($1, no, no, yes)])dnl
|
|
||||||
AC_ARG_ENABLE([fast-install],
|
|
||||||
[AS_HELP_STRING([--enable-fast-install@<:@=PKGS@:>@],
|
|
||||||
[optimize for fast installation @<:@default=]_LT_ENABLE_FAST_INSTALL_DEFAULT[@:>@])],
|
|
||||||
[p=${PACKAGE-default}
|
|
||||||
case $enableval in
|
|
||||||
yes) enable_fast_install=yes ;;
|
|
||||||
no) enable_fast_install=no ;;
|
|
||||||
*)
|
|
||||||
enable_fast_install=no
|
|
||||||
# Look at the argument we got. We use all the common list separators.
|
|
||||||
lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR,"
|
|
||||||
for pkg in $enableval; do
|
|
||||||
IFS="$lt_save_ifs"
|
|
||||||
if test "X$pkg" = "X$p"; then
|
|
||||||
enable_fast_install=yes
|
|
||||||
fi
|
|
||||||
done
|
|
||||||
IFS="$lt_save_ifs"
|
|
||||||
;;
|
|
||||||
esac],
|
|
||||||
[enable_fast_install=]_LT_ENABLE_FAST_INSTALL_DEFAULT)
|
|
||||||
|
|
||||||
_LT_DECL([fast_install], [enable_fast_install], [0],
|
|
||||||
[Whether or not to optimize for fast installation])dnl
|
|
||||||
])# _LT_ENABLE_FAST_INSTALL
|
|
||||||
|
|
||||||
LT_OPTION_DEFINE([LT_INIT], [fast-install], [_LT_ENABLE_FAST_INSTALL([yes])])
|
|
||||||
LT_OPTION_DEFINE([LT_INIT], [disable-fast-install], [_LT_ENABLE_FAST_INSTALL([no])])
|
|
||||||
|
|
||||||
# Old names:
|
|
||||||
AU_DEFUN([AC_ENABLE_FAST_INSTALL],
|
|
||||||
[_LT_SET_OPTION([LT_INIT], m4_if([$1], [no], [disable-])[fast-install])
|
|
||||||
AC_DIAGNOSE([obsolete],
|
|
||||||
[$0: Remove this warning and the call to _LT_SET_OPTION when you put
|
|
||||||
the `fast-install' option into LT_INIT's first parameter.])
|
|
||||||
])
|
|
||||||
|
|
||||||
AU_DEFUN([AC_DISABLE_FAST_INSTALL],
|
|
||||||
[_LT_SET_OPTION([LT_INIT], [disable-fast-install])
|
|
||||||
AC_DIAGNOSE([obsolete],
|
|
||||||
[$0: Remove this warning and the call to _LT_SET_OPTION when you put
|
|
||||||
the `disable-fast-install' option into LT_INIT's first parameter.])
|
|
||||||
])
|
|
||||||
|
|
||||||
dnl aclocal-1.4 backwards compatibility:
|
|
||||||
dnl AC_DEFUN([AC_ENABLE_FAST_INSTALL], [])
|
|
||||||
dnl AC_DEFUN([AM_DISABLE_FAST_INSTALL], [])
|
|
||||||
|
|
||||||
|
|
||||||
# _LT_WITH_PIC([MODE])
|
|
||||||
# --------------------
|
|
||||||
# implement the --with-pic flag, and support the `pic-only' and `no-pic'
|
|
||||||
# LT_INIT options.
|
|
||||||
# MODE is either `yes' or `no'. If omitted, it defaults to `both'.
|
|
||||||
m4_define([_LT_WITH_PIC],
|
|
||||||
[AC_ARG_WITH([pic],
|
|
||||||
[AS_HELP_STRING([--with-pic],
|
|
||||||
[try to use only PIC/non-PIC objects @<:@default=use both@:>@])],
|
|
||||||
[pic_mode="$withval"],
|
|
||||||
[pic_mode=default])
|
|
||||||
|
|
||||||
test -z "$pic_mode" && pic_mode=m4_default([$1], [default])
|
|
||||||
|
|
||||||
_LT_DECL([], [pic_mode], [0], [What type of objects to build])dnl
|
|
||||||
])# _LT_WITH_PIC
|
|
||||||
|
|
||||||
LT_OPTION_DEFINE([LT_INIT], [pic-only], [_LT_WITH_PIC([yes])])
|
|
||||||
LT_OPTION_DEFINE([LT_INIT], [no-pic], [_LT_WITH_PIC([no])])
|
|
||||||
|
|
||||||
# Old name:
|
|
||||||
AU_DEFUN([AC_LIBTOOL_PICMODE],
|
|
||||||
[_LT_SET_OPTION([LT_INIT], [pic-only])
|
|
||||||
AC_DIAGNOSE([obsolete],
|
|
||||||
[$0: Remove this warning and the call to _LT_SET_OPTION when you
|
|
||||||
put the `pic-only' option into LT_INIT's first parameter.])
|
|
||||||
])
|
|
||||||
|
|
||||||
dnl aclocal-1.4 backwards compatibility:
|
|
||||||
dnl AC_DEFUN([AC_LIBTOOL_PICMODE], [])
|
|
||||||
|
|
||||||
## ----------------- ##
|
|
||||||
## LTDL_INIT Options ##
|
|
||||||
## ----------------- ##
|
|
||||||
|
|
||||||
m4_define([_LTDL_MODE], [])
|
|
||||||
LT_OPTION_DEFINE([LTDL_INIT], [nonrecursive],
|
|
||||||
[m4_define([_LTDL_MODE], [nonrecursive])])
|
|
||||||
LT_OPTION_DEFINE([LTDL_INIT], [recursive],
|
|
||||||
[m4_define([_LTDL_MODE], [recursive])])
|
|
||||||
LT_OPTION_DEFINE([LTDL_INIT], [subproject],
|
|
||||||
[m4_define([_LTDL_MODE], [subproject])])
|
|
||||||
|
|
||||||
m4_define([_LTDL_TYPE], [])
|
|
||||||
LT_OPTION_DEFINE([LTDL_INIT], [installable],
|
|
||||||
[m4_define([_LTDL_TYPE], [installable])])
|
|
||||||
LT_OPTION_DEFINE([LTDL_INIT], [convenience],
|
|
||||||
[m4_define([_LTDL_TYPE], [convenience])])
|
|
123
test/test-automation/acinclude/ltsugar.m4
vendored
123
test/test-automation/acinclude/ltsugar.m4
vendored
|
@ -1,123 +0,0 @@
|
||||||
# ltsugar.m4 -- libtool m4 base layer. -*-Autoconf-*-
|
|
||||||
#
|
|
||||||
# Copyright (C) 2004, 2005, 2007, 2008 Free Software Foundation, Inc.
|
|
||||||
# Written by Gary V. Vaughan, 2004
|
|
||||||
#
|
|
||||||
# This file is free software; the Free Software Foundation gives
|
|
||||||
# unlimited permission to copy and/or distribute it, with or without
|
|
||||||
# modifications, as long as this notice is preserved.
|
|
||||||
|
|
||||||
# serial 6 ltsugar.m4
|
|
||||||
|
|
||||||
# This is to help aclocal find these macros, as it can't see m4_define.
|
|
||||||
AC_DEFUN([LTSUGAR_VERSION], [m4_if([0.1])])
|
|
||||||
|
|
||||||
|
|
||||||
# lt_join(SEP, ARG1, [ARG2...])
|
|
||||||
# -----------------------------
|
|
||||||
# Produce ARG1SEPARG2...SEPARGn, omitting [] arguments and their
|
|
||||||
# associated separator.
|
|
||||||
# Needed until we can rely on m4_join from Autoconf 2.62, since all earlier
|
|
||||||
# versions in m4sugar had bugs.
|
|
||||||
m4_define([lt_join],
|
|
||||||
[m4_if([$#], [1], [],
|
|
||||||
[$#], [2], [[$2]],
|
|
||||||
[m4_if([$2], [], [], [[$2]_])$0([$1], m4_shift(m4_shift($@)))])])
|
|
||||||
m4_define([_lt_join],
|
|
||||||
[m4_if([$#$2], [2], [],
|
|
||||||
[m4_if([$2], [], [], [[$1$2]])$0([$1], m4_shift(m4_shift($@)))])])
|
|
||||||
|
|
||||||
|
|
||||||
# lt_car(LIST)
|
|
||||||
# lt_cdr(LIST)
|
|
||||||
# ------------
|
|
||||||
# Manipulate m4 lists.
|
|
||||||
# These macros are necessary as long as will still need to support
|
|
||||||
# Autoconf-2.59 which quotes differently.
|
|
||||||
m4_define([lt_car], [[$1]])
|
|
||||||
m4_define([lt_cdr],
|
|
||||||
[m4_if([$#], 0, [m4_fatal([$0: cannot be called without arguments])],
|
|
||||||
[$#], 1, [],
|
|
||||||
[m4_dquote(m4_shift($@))])])
|
|
||||||
m4_define([lt_unquote], $1)
|
|
||||||
|
|
||||||
|
|
||||||
# lt_append(MACRO-NAME, STRING, [SEPARATOR])
|
|
||||||
# ------------------------------------------
|
|
||||||
# Redefine MACRO-NAME to hold its former content plus `SEPARATOR'`STRING'.
|
|
||||||
# Note that neither SEPARATOR nor STRING are expanded; they are appended
|
|
||||||
# to MACRO-NAME as is (leaving the expansion for when MACRO-NAME is invoked).
|
|
||||||
# No SEPARATOR is output if MACRO-NAME was previously undefined (different
|
|
||||||
# than defined and empty).
|
|
||||||
#
|
|
||||||
# This macro is needed until we can rely on Autoconf 2.62, since earlier
|
|
||||||
# versions of m4sugar mistakenly expanded SEPARATOR but not STRING.
|
|
||||||
m4_define([lt_append],
|
|
||||||
[m4_define([$1],
|
|
||||||
m4_ifdef([$1], [m4_defn([$1])[$3]])[$2])])
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
# lt_combine(SEP, PREFIX-LIST, INFIX, SUFFIX1, [SUFFIX2...])
|
|
||||||
# ----------------------------------------------------------
|
|
||||||
# Produce a SEP delimited list of all paired combinations of elements of
|
|
||||||
# PREFIX-LIST with SUFFIX1 through SUFFIXn. Each element of the list
|
|
||||||
# has the form PREFIXmINFIXSUFFIXn.
|
|
||||||
# Needed until we can rely on m4_combine added in Autoconf 2.62.
|
|
||||||
m4_define([lt_combine],
|
|
||||||
[m4_if(m4_eval([$# > 3]), [1],
|
|
||||||
[m4_pushdef([_Lt_sep], [m4_define([_Lt_sep], m4_defn([lt_car]))])]]dnl
|
|
||||||
[[m4_foreach([_Lt_prefix], [$2],
|
|
||||||
[m4_foreach([_Lt_suffix],
|
|
||||||
]m4_dquote(m4_dquote(m4_shift(m4_shift(m4_shift($@)))))[,
|
|
||||||
[_Lt_sep([$1])[]m4_defn([_Lt_prefix])[$3]m4_defn([_Lt_suffix])])])])])
|
|
||||||
|
|
||||||
|
|
||||||
# lt_if_append_uniq(MACRO-NAME, VARNAME, [SEPARATOR], [UNIQ], [NOT-UNIQ])
|
|
||||||
# -----------------------------------------------------------------------
|
|
||||||
# Iff MACRO-NAME does not yet contain VARNAME, then append it (delimited
|
|
||||||
# by SEPARATOR if supplied) and expand UNIQ, else NOT-UNIQ.
|
|
||||||
m4_define([lt_if_append_uniq],
|
|
||||||
[m4_ifdef([$1],
|
|
||||||
[m4_if(m4_index([$3]m4_defn([$1])[$3], [$3$2$3]), [-1],
|
|
||||||
[lt_append([$1], [$2], [$3])$4],
|
|
||||||
[$5])],
|
|
||||||
[lt_append([$1], [$2], [$3])$4])])
|
|
||||||
|
|
||||||
|
|
||||||
# lt_dict_add(DICT, KEY, VALUE)
|
|
||||||
# -----------------------------
|
|
||||||
m4_define([lt_dict_add],
|
|
||||||
[m4_define([$1($2)], [$3])])
|
|
||||||
|
|
||||||
|
|
||||||
# lt_dict_add_subkey(DICT, KEY, SUBKEY, VALUE)
|
|
||||||
# --------------------------------------------
|
|
||||||
m4_define([lt_dict_add_subkey],
|
|
||||||
[m4_define([$1($2:$3)], [$4])])
|
|
||||||
|
|
||||||
|
|
||||||
# lt_dict_fetch(DICT, KEY, [SUBKEY])
|
|
||||||
# ----------------------------------
|
|
||||||
m4_define([lt_dict_fetch],
|
|
||||||
[m4_ifval([$3],
|
|
||||||
m4_ifdef([$1($2:$3)], [m4_defn([$1($2:$3)])]),
|
|
||||||
m4_ifdef([$1($2)], [m4_defn([$1($2)])]))])
|
|
||||||
|
|
||||||
|
|
||||||
# lt_if_dict_fetch(DICT, KEY, [SUBKEY], VALUE, IF-TRUE, [IF-FALSE])
|
|
||||||
# -----------------------------------------------------------------
|
|
||||||
m4_define([lt_if_dict_fetch],
|
|
||||||
[m4_if(lt_dict_fetch([$1], [$2], [$3]), [$4],
|
|
||||||
[$5],
|
|
||||||
[$6])])
|
|
||||||
|
|
||||||
|
|
||||||
# lt_dict_filter(DICT, [SUBKEY], VALUE, [SEPARATOR], KEY, [...])
|
|
||||||
# --------------------------------------------------------------
|
|
||||||
m4_define([lt_dict_filter],
|
|
||||||
[m4_if([$5], [], [],
|
|
||||||
[lt_join(m4_quote(m4_default([$4], [[, ]])),
|
|
||||||
lt_unquote(m4_split(m4_normalize(m4_foreach(_Lt_key, lt_car([m4_shiftn(4, $@)]),
|
|
||||||
[lt_if_dict_fetch([$1], _Lt_key, [$2], [$3], [_Lt_key ])])))))])[]dnl
|
|
||||||
])
|
|
23
test/test-automation/acinclude/ltversion.m4
vendored
23
test/test-automation/acinclude/ltversion.m4
vendored
|
@ -1,23 +0,0 @@
|
||||||
# ltversion.m4 -- version numbers -*- Autoconf -*-
|
|
||||||
#
|
|
||||||
# Copyright (C) 2004 Free Software Foundation, Inc.
|
|
||||||
# Written by Scott James Remnant, 2004
|
|
||||||
#
|
|
||||||
# This file is free software; the Free Software Foundation gives
|
|
||||||
# unlimited permission to copy and/or distribute it, with or without
|
|
||||||
# modifications, as long as this notice is preserved.
|
|
||||||
|
|
||||||
# Generated from ltversion.in.
|
|
||||||
|
|
||||||
# serial 3017 ltversion.m4
|
|
||||||
# This file is part of GNU Libtool
|
|
||||||
|
|
||||||
m4_define([LT_PACKAGE_VERSION], [2.2.6b])
|
|
||||||
m4_define([LT_PACKAGE_REVISION], [1.3017])
|
|
||||||
|
|
||||||
AC_DEFUN([LTVERSION_VERSION],
|
|
||||||
[macro_version='2.2.6b'
|
|
||||||
macro_revision='1.3017'
|
|
||||||
_LT_DECL(, macro_version, 0, [Which release of libtool.m4 was used?])
|
|
||||||
_LT_DECL(, macro_revision, 0)
|
|
||||||
])
|
|
92
test/test-automation/acinclude/lt~obsolete.m4
vendored
92
test/test-automation/acinclude/lt~obsolete.m4
vendored
|
@ -1,92 +0,0 @@
|
||||||
# lt~obsolete.m4 -- aclocal satisfying obsolete definitions. -*-Autoconf-*-
|
|
||||||
#
|
|
||||||
# Copyright (C) 2004, 2005, 2007 Free Software Foundation, Inc.
|
|
||||||
# Written by Scott James Remnant, 2004.
|
|
||||||
#
|
|
||||||
# This file is free software; the Free Software Foundation gives
|
|
||||||
# unlimited permission to copy and/or distribute it, with or without
|
|
||||||
# modifications, as long as this notice is preserved.
|
|
||||||
|
|
||||||
# serial 4 lt~obsolete.m4
|
|
||||||
|
|
||||||
# These exist entirely to fool aclocal when bootstrapping libtool.
|
|
||||||
#
|
|
||||||
# In the past libtool.m4 has provided macros via AC_DEFUN (or AU_DEFUN)
|
|
||||||
# which have later been changed to m4_define as they aren't part of the
|
|
||||||
# exported API, or moved to Autoconf or Automake where they belong.
|
|
||||||
#
|
|
||||||
# The trouble is, aclocal is a bit thick. It'll see the old AC_DEFUN
|
|
||||||
# in /usr/share/aclocal/libtool.m4 and remember it, then when it sees us
|
|
||||||
# using a macro with the same name in our local m4/libtool.m4 it'll
|
|
||||||
# pull the old libtool.m4 in (it doesn't see our shiny new m4_define
|
|
||||||
# and doesn't know about Autoconf macros at all.)
|
|
||||||
#
|
|
||||||
# So we provide this file, which has a silly filename so it's always
|
|
||||||
# included after everything else. This provides aclocal with the
|
|
||||||
# AC_DEFUNs it wants, but when m4 processes it, it doesn't do anything
|
|
||||||
# because those macros already exist, or will be overwritten later.
|
|
||||||
# We use AC_DEFUN over AU_DEFUN for compatibility with aclocal-1.6.
|
|
||||||
#
|
|
||||||
# Anytime we withdraw an AC_DEFUN or AU_DEFUN, remember to add it here.
|
|
||||||
# Yes, that means every name once taken will need to remain here until
|
|
||||||
# we give up compatibility with versions before 1.7, at which point
|
|
||||||
# we need to keep only those names which we still refer to.
|
|
||||||
|
|
||||||
# This is to help aclocal find these macros, as it can't see m4_define.
|
|
||||||
AC_DEFUN([LTOBSOLETE_VERSION], [m4_if([1])])
|
|
||||||
|
|
||||||
m4_ifndef([AC_LIBTOOL_LINKER_OPTION], [AC_DEFUN([AC_LIBTOOL_LINKER_OPTION])])
|
|
||||||
m4_ifndef([AC_PROG_EGREP], [AC_DEFUN([AC_PROG_EGREP])])
|
|
||||||
m4_ifndef([_LT_AC_PROG_ECHO_BACKSLASH], [AC_DEFUN([_LT_AC_PROG_ECHO_BACKSLASH])])
|
|
||||||
m4_ifndef([_LT_AC_SHELL_INIT], [AC_DEFUN([_LT_AC_SHELL_INIT])])
|
|
||||||
m4_ifndef([_LT_AC_SYS_LIBPATH_AIX], [AC_DEFUN([_LT_AC_SYS_LIBPATH_AIX])])
|
|
||||||
m4_ifndef([_LT_PROG_LTMAIN], [AC_DEFUN([_LT_PROG_LTMAIN])])
|
|
||||||
m4_ifndef([_LT_AC_TAGVAR], [AC_DEFUN([_LT_AC_TAGVAR])])
|
|
||||||
m4_ifndef([AC_LTDL_ENABLE_INSTALL], [AC_DEFUN([AC_LTDL_ENABLE_INSTALL])])
|
|
||||||
m4_ifndef([AC_LTDL_PREOPEN], [AC_DEFUN([AC_LTDL_PREOPEN])])
|
|
||||||
m4_ifndef([_LT_AC_SYS_COMPILER], [AC_DEFUN([_LT_AC_SYS_COMPILER])])
|
|
||||||
m4_ifndef([_LT_AC_LOCK], [AC_DEFUN([_LT_AC_LOCK])])
|
|
||||||
m4_ifndef([AC_LIBTOOL_SYS_OLD_ARCHIVE], [AC_DEFUN([AC_LIBTOOL_SYS_OLD_ARCHIVE])])
|
|
||||||
m4_ifndef([_LT_AC_TRY_DLOPEN_SELF], [AC_DEFUN([_LT_AC_TRY_DLOPEN_SELF])])
|
|
||||||
m4_ifndef([AC_LIBTOOL_PROG_CC_C_O], [AC_DEFUN([AC_LIBTOOL_PROG_CC_C_O])])
|
|
||||||
m4_ifndef([AC_LIBTOOL_SYS_HARD_LINK_LOCKS], [AC_DEFUN([AC_LIBTOOL_SYS_HARD_LINK_LOCKS])])
|
|
||||||
m4_ifndef([AC_LIBTOOL_OBJDIR], [AC_DEFUN([AC_LIBTOOL_OBJDIR])])
|
|
||||||
m4_ifndef([AC_LTDL_OBJDIR], [AC_DEFUN([AC_LTDL_OBJDIR])])
|
|
||||||
m4_ifndef([AC_LIBTOOL_PROG_LD_HARDCODE_LIBPATH], [AC_DEFUN([AC_LIBTOOL_PROG_LD_HARDCODE_LIBPATH])])
|
|
||||||
m4_ifndef([AC_LIBTOOL_SYS_LIB_STRIP], [AC_DEFUN([AC_LIBTOOL_SYS_LIB_STRIP])])
|
|
||||||
m4_ifndef([AC_PATH_MAGIC], [AC_DEFUN([AC_PATH_MAGIC])])
|
|
||||||
m4_ifndef([AC_PROG_LD_GNU], [AC_DEFUN([AC_PROG_LD_GNU])])
|
|
||||||
m4_ifndef([AC_PROG_LD_RELOAD_FLAG], [AC_DEFUN([AC_PROG_LD_RELOAD_FLAG])])
|
|
||||||
m4_ifndef([AC_DEPLIBS_CHECK_METHOD], [AC_DEFUN([AC_DEPLIBS_CHECK_METHOD])])
|
|
||||||
m4_ifndef([AC_LIBTOOL_PROG_COMPILER_NO_RTTI], [AC_DEFUN([AC_LIBTOOL_PROG_COMPILER_NO_RTTI])])
|
|
||||||
m4_ifndef([AC_LIBTOOL_SYS_GLOBAL_SYMBOL_PIPE], [AC_DEFUN([AC_LIBTOOL_SYS_GLOBAL_SYMBOL_PIPE])])
|
|
||||||
m4_ifndef([AC_LIBTOOL_PROG_COMPILER_PIC], [AC_DEFUN([AC_LIBTOOL_PROG_COMPILER_PIC])])
|
|
||||||
m4_ifndef([AC_LIBTOOL_PROG_LD_SHLIBS], [AC_DEFUN([AC_LIBTOOL_PROG_LD_SHLIBS])])
|
|
||||||
m4_ifndef([AC_LIBTOOL_POSTDEP_PREDEP], [AC_DEFUN([AC_LIBTOOL_POSTDEP_PREDEP])])
|
|
||||||
m4_ifndef([LT_AC_PROG_EGREP], [AC_DEFUN([LT_AC_PROG_EGREP])])
|
|
||||||
m4_ifndef([LT_AC_PROG_SED], [AC_DEFUN([LT_AC_PROG_SED])])
|
|
||||||
m4_ifndef([_LT_CC_BASENAME], [AC_DEFUN([_LT_CC_BASENAME])])
|
|
||||||
m4_ifndef([_LT_COMPILER_BOILERPLATE], [AC_DEFUN([_LT_COMPILER_BOILERPLATE])])
|
|
||||||
m4_ifndef([_LT_LINKER_BOILERPLATE], [AC_DEFUN([_LT_LINKER_BOILERPLATE])])
|
|
||||||
m4_ifndef([_AC_PROG_LIBTOOL], [AC_DEFUN([_AC_PROG_LIBTOOL])])
|
|
||||||
m4_ifndef([AC_LIBTOOL_SETUP], [AC_DEFUN([AC_LIBTOOL_SETUP])])
|
|
||||||
m4_ifndef([_LT_AC_CHECK_DLFCN], [AC_DEFUN([_LT_AC_CHECK_DLFCN])])
|
|
||||||
m4_ifndef([AC_LIBTOOL_SYS_DYNAMIC_LINKER], [AC_DEFUN([AC_LIBTOOL_SYS_DYNAMIC_LINKER])])
|
|
||||||
m4_ifndef([_LT_AC_TAGCONFIG], [AC_DEFUN([_LT_AC_TAGCONFIG])])
|
|
||||||
m4_ifndef([AC_DISABLE_FAST_INSTALL], [AC_DEFUN([AC_DISABLE_FAST_INSTALL])])
|
|
||||||
m4_ifndef([_LT_AC_LANG_CXX], [AC_DEFUN([_LT_AC_LANG_CXX])])
|
|
||||||
m4_ifndef([_LT_AC_LANG_F77], [AC_DEFUN([_LT_AC_LANG_F77])])
|
|
||||||
m4_ifndef([_LT_AC_LANG_GCJ], [AC_DEFUN([_LT_AC_LANG_GCJ])])
|
|
||||||
m4_ifndef([AC_LIBTOOL_RC], [AC_DEFUN([AC_LIBTOOL_RC])])
|
|
||||||
m4_ifndef([AC_LIBTOOL_LANG_C_CONFIG], [AC_DEFUN([AC_LIBTOOL_LANG_C_CONFIG])])
|
|
||||||
m4_ifndef([_LT_AC_LANG_C_CONFIG], [AC_DEFUN([_LT_AC_LANG_C_CONFIG])])
|
|
||||||
m4_ifndef([AC_LIBTOOL_LANG_CXX_CONFIG], [AC_DEFUN([AC_LIBTOOL_LANG_CXX_CONFIG])])
|
|
||||||
m4_ifndef([_LT_AC_LANG_CXX_CONFIG], [AC_DEFUN([_LT_AC_LANG_CXX_CONFIG])])
|
|
||||||
m4_ifndef([AC_LIBTOOL_LANG_F77_CONFIG], [AC_DEFUN([AC_LIBTOOL_LANG_F77_CONFIG])])
|
|
||||||
m4_ifndef([_LT_AC_LANG_F77_CONFIG], [AC_DEFUN([_LT_AC_LANG_F77_CONFIG])])
|
|
||||||
m4_ifndef([AC_LIBTOOL_LANG_GCJ_CONFIG], [AC_DEFUN([AC_LIBTOOL_LANG_GCJ_CONFIG])])
|
|
||||||
m4_ifndef([_LT_AC_LANG_GCJ_CONFIG], [AC_DEFUN([_LT_AC_LANG_GCJ_CONFIG])])
|
|
||||||
m4_ifndef([AC_LIBTOOL_LANG_RC_CONFIG], [AC_DEFUN([AC_LIBTOOL_LANG_RC_CONFIG])])
|
|
||||||
m4_ifndef([_LT_AC_LANG_RC_CONFIG], [AC_DEFUN([_LT_AC_LANG_RC_CONFIG])])
|
|
||||||
m4_ifndef([AC_LIBTOOL_CONFIG], [AC_DEFUN([AC_LIBTOOL_CONFIG])])
|
|
||||||
m4_ifndef([_LT_AC_FILE_LTDLL_C], [AC_DEFUN([_LT_AC_FILE_LTDLL_C])])
|
|
991
test/test-automation/aclocal.m4
vendored
991
test/test-automation/aclocal.m4
vendored
|
@ -1,991 +0,0 @@
|
||||||
# generated automatically by aclocal 1.11.1 -*- Autoconf -*-
|
|
||||||
|
|
||||||
# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004,
|
|
||||||
# 2005, 2006, 2007, 2008, 2009 Free Software Foundation, Inc.
|
|
||||||
# This file is free software; the Free Software Foundation
|
|
||||||
# gives unlimited permission to copy and/or distribute it,
|
|
||||||
# with or without modifications, as long as this notice is preserved.
|
|
||||||
|
|
||||||
# This program is distributed in the hope that it will be useful,
|
|
||||||
# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
|
|
||||||
# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
|
|
||||||
# PARTICULAR PURPOSE.
|
|
||||||
|
|
||||||
m4_ifndef([AC_AUTOCONF_VERSION],
|
|
||||||
[m4_copy([m4_PACKAGE_VERSION], [AC_AUTOCONF_VERSION])])dnl
|
|
||||||
m4_if(m4_defn([AC_AUTOCONF_VERSION]), [2.65],,
|
|
||||||
[m4_warning([this file was generated for autoconf 2.65.
|
|
||||||
You have another version of autoconf. It may work, but is not guaranteed to.
|
|
||||||
If you have problems, you may need to regenerate the build system entirely.
|
|
||||||
To do so, use the procedure documented by the package, typically `autoreconf'.])])
|
|
||||||
|
|
||||||
# Copyright (C) 2002, 2003, 2005, 2006, 2007, 2008 Free Software Foundation, Inc.
|
|
||||||
#
|
|
||||||
# This file is free software; the Free Software Foundation
|
|
||||||
# gives unlimited permission to copy and/or distribute it,
|
|
||||||
# with or without modifications, as long as this notice is preserved.
|
|
||||||
|
|
||||||
# AM_AUTOMAKE_VERSION(VERSION)
|
|
||||||
# ----------------------------
|
|
||||||
# Automake X.Y traces this macro to ensure aclocal.m4 has been
|
|
||||||
# generated from the m4 files accompanying Automake X.Y.
|
|
||||||
# (This private macro should not be called outside this file.)
|
|
||||||
AC_DEFUN([AM_AUTOMAKE_VERSION],
|
|
||||||
[am__api_version='1.11'
|
|
||||||
dnl Some users find AM_AUTOMAKE_VERSION and mistake it for a way to
|
|
||||||
dnl require some minimum version. Point them to the right macro.
|
|
||||||
m4_if([$1], [1.11.1], [],
|
|
||||||
[AC_FATAL([Do not call $0, use AM_INIT_AUTOMAKE([$1]).])])dnl
|
|
||||||
])
|
|
||||||
|
|
||||||
# _AM_AUTOCONF_VERSION(VERSION)
|
|
||||||
# -----------------------------
|
|
||||||
# aclocal traces this macro to find the Autoconf version.
|
|
||||||
# This is a private macro too. Using m4_define simplifies
|
|
||||||
# the logic in aclocal, which can simply ignore this definition.
|
|
||||||
m4_define([_AM_AUTOCONF_VERSION], [])
|
|
||||||
|
|
||||||
# AM_SET_CURRENT_AUTOMAKE_VERSION
|
|
||||||
# -------------------------------
|
|
||||||
# Call AM_AUTOMAKE_VERSION and AM_AUTOMAKE_VERSION so they can be traced.
|
|
||||||
# This function is AC_REQUIREd by AM_INIT_AUTOMAKE.
|
|
||||||
AC_DEFUN([AM_SET_CURRENT_AUTOMAKE_VERSION],
|
|
||||||
[AM_AUTOMAKE_VERSION([1.11.1])dnl
|
|
||||||
m4_ifndef([AC_AUTOCONF_VERSION],
|
|
||||||
[m4_copy([m4_PACKAGE_VERSION], [AC_AUTOCONF_VERSION])])dnl
|
|
||||||
_AM_AUTOCONF_VERSION(m4_defn([AC_AUTOCONF_VERSION]))])
|
|
||||||
|
|
||||||
# AM_AUX_DIR_EXPAND -*- Autoconf -*-
|
|
||||||
|
|
||||||
# Copyright (C) 2001, 2003, 2005 Free Software Foundation, Inc.
|
|
||||||
#
|
|
||||||
# This file is free software; the Free Software Foundation
|
|
||||||
# gives unlimited permission to copy and/or distribute it,
|
|
||||||
# with or without modifications, as long as this notice is preserved.
|
|
||||||
|
|
||||||
# For projects using AC_CONFIG_AUX_DIR([foo]), Autoconf sets
|
|
||||||
# $ac_aux_dir to `$srcdir/foo'. In other projects, it is set to
|
|
||||||
# `$srcdir', `$srcdir/..', or `$srcdir/../..'.
|
|
||||||
#
|
|
||||||
# Of course, Automake must honor this variable whenever it calls a
|
|
||||||
# tool from the auxiliary directory. The problem is that $srcdir (and
|
|
||||||
# therefore $ac_aux_dir as well) can be either absolute or relative,
|
|
||||||
# depending on how configure is run. This is pretty annoying, since
|
|
||||||
# it makes $ac_aux_dir quite unusable in subdirectories: in the top
|
|
||||||
# source directory, any form will work fine, but in subdirectories a
|
|
||||||
# relative path needs to be adjusted first.
|
|
||||||
#
|
|
||||||
# $ac_aux_dir/missing
|
|
||||||
# fails when called from a subdirectory if $ac_aux_dir is relative
|
|
||||||
# $top_srcdir/$ac_aux_dir/missing
|
|
||||||
# fails if $ac_aux_dir is absolute,
|
|
||||||
# fails when called from a subdirectory in a VPATH build with
|
|
||||||
# a relative $ac_aux_dir
|
|
||||||
#
|
|
||||||
# The reason of the latter failure is that $top_srcdir and $ac_aux_dir
|
|
||||||
# are both prefixed by $srcdir. In an in-source build this is usually
|
|
||||||
# harmless because $srcdir is `.', but things will broke when you
|
|
||||||
# start a VPATH build or use an absolute $srcdir.
|
|
||||||
#
|
|
||||||
# So we could use something similar to $top_srcdir/$ac_aux_dir/missing,
|
|
||||||
# iff we strip the leading $srcdir from $ac_aux_dir. That would be:
|
|
||||||
# am_aux_dir='\$(top_srcdir)/'`expr "$ac_aux_dir" : "$srcdir//*\(.*\)"`
|
|
||||||
# and then we would define $MISSING as
|
|
||||||
# MISSING="\${SHELL} $am_aux_dir/missing"
|
|
||||||
# This will work as long as MISSING is not called from configure, because
|
|
||||||
# unfortunately $(top_srcdir) has no meaning in configure.
|
|
||||||
# However there are other variables, like CC, which are often used in
|
|
||||||
# configure, and could therefore not use this "fixed" $ac_aux_dir.
|
|
||||||
#
|
|
||||||
# Another solution, used here, is to always expand $ac_aux_dir to an
|
|
||||||
# absolute PATH. The drawback is that using absolute paths prevent a
|
|
||||||
# configured tree to be moved without reconfiguration.
|
|
||||||
|
|
||||||
AC_DEFUN([AM_AUX_DIR_EXPAND],
|
|
||||||
[dnl Rely on autoconf to set up CDPATH properly.
|
|
||||||
AC_PREREQ([2.50])dnl
|
|
||||||
# expand $ac_aux_dir to an absolute path
|
|
||||||
am_aux_dir=`cd $ac_aux_dir && pwd`
|
|
||||||
])
|
|
||||||
|
|
||||||
# AM_CONDITIONAL -*- Autoconf -*-
|
|
||||||
|
|
||||||
# Copyright (C) 1997, 2000, 2001, 2003, 2004, 2005, 2006, 2008
|
|
||||||
# Free Software Foundation, Inc.
|
|
||||||
#
|
|
||||||
# This file is free software; the Free Software Foundation
|
|
||||||
# gives unlimited permission to copy and/or distribute it,
|
|
||||||
# with or without modifications, as long as this notice is preserved.
|
|
||||||
|
|
||||||
# serial 9
|
|
||||||
|
|
||||||
# AM_CONDITIONAL(NAME, SHELL-CONDITION)
|
|
||||||
# -------------------------------------
|
|
||||||
# Define a conditional.
|
|
||||||
AC_DEFUN([AM_CONDITIONAL],
|
|
||||||
[AC_PREREQ(2.52)dnl
|
|
||||||
ifelse([$1], [TRUE], [AC_FATAL([$0: invalid condition: $1])],
|
|
||||||
[$1], [FALSE], [AC_FATAL([$0: invalid condition: $1])])dnl
|
|
||||||
AC_SUBST([$1_TRUE])dnl
|
|
||||||
AC_SUBST([$1_FALSE])dnl
|
|
||||||
_AM_SUBST_NOTMAKE([$1_TRUE])dnl
|
|
||||||
_AM_SUBST_NOTMAKE([$1_FALSE])dnl
|
|
||||||
m4_define([_AM_COND_VALUE_$1], [$2])dnl
|
|
||||||
if $2; then
|
|
||||||
$1_TRUE=
|
|
||||||
$1_FALSE='#'
|
|
||||||
else
|
|
||||||
$1_TRUE='#'
|
|
||||||
$1_FALSE=
|
|
||||||
fi
|
|
||||||
AC_CONFIG_COMMANDS_PRE(
|
|
||||||
[if test -z "${$1_TRUE}" && test -z "${$1_FALSE}"; then
|
|
||||||
AC_MSG_ERROR([[conditional "$1" was never defined.
|
|
||||||
Usually this means the macro was only invoked conditionally.]])
|
|
||||||
fi])])
|
|
||||||
|
|
||||||
# Copyright (C) 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2009
|
|
||||||
# Free Software Foundation, Inc.
|
|
||||||
#
|
|
||||||
# This file is free software; the Free Software Foundation
|
|
||||||
# gives unlimited permission to copy and/or distribute it,
|
|
||||||
# with or without modifications, as long as this notice is preserved.
|
|
||||||
|
|
||||||
# serial 10
|
|
||||||
|
|
||||||
# There are a few dirty hacks below to avoid letting `AC_PROG_CC' be
|
|
||||||
# written in clear, in which case automake, when reading aclocal.m4,
|
|
||||||
# will think it sees a *use*, and therefore will trigger all it's
|
|
||||||
# C support machinery. Also note that it means that autoscan, seeing
|
|
||||||
# CC etc. in the Makefile, will ask for an AC_PROG_CC use...
|
|
||||||
|
|
||||||
|
|
||||||
# _AM_DEPENDENCIES(NAME)
|
|
||||||
# ----------------------
|
|
||||||
# See how the compiler implements dependency checking.
|
|
||||||
# NAME is "CC", "CXX", "GCJ", or "OBJC".
|
|
||||||
# We try a few techniques and use that to set a single cache variable.
|
|
||||||
#
|
|
||||||
# We don't AC_REQUIRE the corresponding AC_PROG_CC since the latter was
|
|
||||||
# modified to invoke _AM_DEPENDENCIES(CC); we would have a circular
|
|
||||||
# dependency, and given that the user is not expected to run this macro,
|
|
||||||
# just rely on AC_PROG_CC.
|
|
||||||
AC_DEFUN([_AM_DEPENDENCIES],
|
|
||||||
[AC_REQUIRE([AM_SET_DEPDIR])dnl
|
|
||||||
AC_REQUIRE([AM_OUTPUT_DEPENDENCY_COMMANDS])dnl
|
|
||||||
AC_REQUIRE([AM_MAKE_INCLUDE])dnl
|
|
||||||
AC_REQUIRE([AM_DEP_TRACK])dnl
|
|
||||||
|
|
||||||
ifelse([$1], CC, [depcc="$CC" am_compiler_list=],
|
|
||||||
[$1], CXX, [depcc="$CXX" am_compiler_list=],
|
|
||||||
[$1], OBJC, [depcc="$OBJC" am_compiler_list='gcc3 gcc'],
|
|
||||||
[$1], UPC, [depcc="$UPC" am_compiler_list=],
|
|
||||||
[$1], GCJ, [depcc="$GCJ" am_compiler_list='gcc3 gcc'],
|
|
||||||
[depcc="$$1" am_compiler_list=])
|
|
||||||
|
|
||||||
AC_CACHE_CHECK([dependency style of $depcc],
|
|
||||||
[am_cv_$1_dependencies_compiler_type],
|
|
||||||
[if test -z "$AMDEP_TRUE" && test -f "$am_depcomp"; then
|
|
||||||
# We make a subdir and do the tests there. Otherwise we can end up
|
|
||||||
# making bogus files that we don't know about and never remove. For
|
|
||||||
# instance it was reported that on HP-UX the gcc test will end up
|
|
||||||
# making a dummy file named `D' -- because `-MD' means `put the output
|
|
||||||
# in D'.
|
|
||||||
mkdir conftest.dir
|
|
||||||
# Copy depcomp to subdir because otherwise we won't find it if we're
|
|
||||||
# using a relative directory.
|
|
||||||
cp "$am_depcomp" conftest.dir
|
|
||||||
cd conftest.dir
|
|
||||||
# We will build objects and dependencies in a subdirectory because
|
|
||||||
# it helps to detect inapplicable dependency modes. For instance
|
|
||||||
# both Tru64's cc and ICC support -MD to output dependencies as a
|
|
||||||
# side effect of compilation, but ICC will put the dependencies in
|
|
||||||
# the current directory while Tru64 will put them in the object
|
|
||||||
# directory.
|
|
||||||
mkdir sub
|
|
||||||
|
|
||||||
am_cv_$1_dependencies_compiler_type=none
|
|
||||||
if test "$am_compiler_list" = ""; then
|
|
||||||
am_compiler_list=`sed -n ['s/^#*\([a-zA-Z0-9]*\))$/\1/p'] < ./depcomp`
|
|
||||||
fi
|
|
||||||
am__universal=false
|
|
||||||
m4_case([$1], [CC],
|
|
||||||
[case " $depcc " in #(
|
|
||||||
*\ -arch\ *\ -arch\ *) am__universal=true ;;
|
|
||||||
esac],
|
|
||||||
[CXX],
|
|
||||||
[case " $depcc " in #(
|
|
||||||
*\ -arch\ *\ -arch\ *) am__universal=true ;;
|
|
||||||
esac])
|
|
||||||
|
|
||||||
for depmode in $am_compiler_list; do
|
|
||||||
# Setup a source with many dependencies, because some compilers
|
|
||||||
# like to wrap large dependency lists on column 80 (with \), and
|
|
||||||
# we should not choose a depcomp mode which is confused by this.
|
|
||||||
#
|
|
||||||
# We need to recreate these files for each test, as the compiler may
|
|
||||||
# overwrite some of them when testing with obscure command lines.
|
|
||||||
# This happens at least with the AIX C compiler.
|
|
||||||
: > sub/conftest.c
|
|
||||||
for i in 1 2 3 4 5 6; do
|
|
||||||
echo '#include "conftst'$i'.h"' >> sub/conftest.c
|
|
||||||
# Using `: > sub/conftst$i.h' creates only sub/conftst1.h with
|
|
||||||
# Solaris 8's {/usr,}/bin/sh.
|
|
||||||
touch sub/conftst$i.h
|
|
||||||
done
|
|
||||||
echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf
|
|
||||||
|
|
||||||
# We check with `-c' and `-o' for the sake of the "dashmstdout"
|
|
||||||
# mode. It turns out that the SunPro C++ compiler does not properly
|
|
||||||
# handle `-M -o', and we need to detect this. Also, some Intel
|
|
||||||
# versions had trouble with output in subdirs
|
|
||||||
am__obj=sub/conftest.${OBJEXT-o}
|
|
||||||
am__minus_obj="-o $am__obj"
|
|
||||||
case $depmode in
|
|
||||||
gcc)
|
|
||||||
# This depmode causes a compiler race in universal mode.
|
|
||||||
test "$am__universal" = false || continue
|
|
||||||
;;
|
|
||||||
nosideeffect)
|
|
||||||
# after this tag, mechanisms are not by side-effect, so they'll
|
|
||||||
# only be used when explicitly requested
|
|
||||||
if test "x$enable_dependency_tracking" = xyes; then
|
|
||||||
continue
|
|
||||||
else
|
|
||||||
break
|
|
||||||
fi
|
|
||||||
;;
|
|
||||||
msvisualcpp | msvcmsys)
|
|
||||||
# This compiler won't grok `-c -o', but also, the minuso test has
|
|
||||||
# not run yet. These depmodes are late enough in the game, and
|
|
||||||
# so weak that their functioning should not be impacted.
|
|
||||||
am__obj=conftest.${OBJEXT-o}
|
|
||||||
am__minus_obj=
|
|
||||||
;;
|
|
||||||
none) break ;;
|
|
||||||
esac
|
|
||||||
if depmode=$depmode \
|
|
||||||
source=sub/conftest.c object=$am__obj \
|
|
||||||
depfile=sub/conftest.Po tmpdepfile=sub/conftest.TPo \
|
|
||||||
$SHELL ./depcomp $depcc -c $am__minus_obj sub/conftest.c \
|
|
||||||
>/dev/null 2>conftest.err &&
|
|
||||||
grep sub/conftst1.h sub/conftest.Po > /dev/null 2>&1 &&
|
|
||||||
grep sub/conftst6.h sub/conftest.Po > /dev/null 2>&1 &&
|
|
||||||
grep $am__obj sub/conftest.Po > /dev/null 2>&1 &&
|
|
||||||
${MAKE-make} -s -f confmf > /dev/null 2>&1; then
|
|
||||||
# icc doesn't choke on unknown options, it will just issue warnings
|
|
||||||
# or remarks (even with -Werror). So we grep stderr for any message
|
|
||||||
# that says an option was ignored or not supported.
|
|
||||||
# When given -MP, icc 7.0 and 7.1 complain thusly:
|
|
||||||
# icc: Command line warning: ignoring option '-M'; no argument required
|
|
||||||
# The diagnosis changed in icc 8.0:
|
|
||||||
# icc: Command line remark: option '-MP' not supported
|
|
||||||
if (grep 'ignoring option' conftest.err ||
|
|
||||||
grep 'not supported' conftest.err) >/dev/null 2>&1; then :; else
|
|
||||||
am_cv_$1_dependencies_compiler_type=$depmode
|
|
||||||
break
|
|
||||||
fi
|
|
||||||
fi
|
|
||||||
done
|
|
||||||
|
|
||||||
cd ..
|
|
||||||
rm -rf conftest.dir
|
|
||||||
else
|
|
||||||
am_cv_$1_dependencies_compiler_type=none
|
|
||||||
fi
|
|
||||||
])
|
|
||||||
AC_SUBST([$1DEPMODE], [depmode=$am_cv_$1_dependencies_compiler_type])
|
|
||||||
AM_CONDITIONAL([am__fastdep$1], [
|
|
||||||
test "x$enable_dependency_tracking" != xno \
|
|
||||||
&& test "$am_cv_$1_dependencies_compiler_type" = gcc3])
|
|
||||||
])
|
|
||||||
|
|
||||||
|
|
||||||
# AM_SET_DEPDIR
|
|
||||||
# -------------
|
|
||||||
# Choose a directory name for dependency files.
|
|
||||||
# This macro is AC_REQUIREd in _AM_DEPENDENCIES
|
|
||||||
AC_DEFUN([AM_SET_DEPDIR],
|
|
||||||
[AC_REQUIRE([AM_SET_LEADING_DOT])dnl
|
|
||||||
AC_SUBST([DEPDIR], ["${am__leading_dot}deps"])dnl
|
|
||||||
])
|
|
||||||
|
|
||||||
|
|
||||||
# AM_DEP_TRACK
|
|
||||||
# ------------
|
|
||||||
AC_DEFUN([AM_DEP_TRACK],
|
|
||||||
[AC_ARG_ENABLE(dependency-tracking,
|
|
||||||
[ --disable-dependency-tracking speeds up one-time build
|
|
||||||
--enable-dependency-tracking do not reject slow dependency extractors])
|
|
||||||
if test "x$enable_dependency_tracking" != xno; then
|
|
||||||
am_depcomp="$ac_aux_dir/depcomp"
|
|
||||||
AMDEPBACKSLASH='\'
|
|
||||||
fi
|
|
||||||
AM_CONDITIONAL([AMDEP], [test "x$enable_dependency_tracking" != xno])
|
|
||||||
AC_SUBST([AMDEPBACKSLASH])dnl
|
|
||||||
_AM_SUBST_NOTMAKE([AMDEPBACKSLASH])dnl
|
|
||||||
])
|
|
||||||
|
|
||||||
# Generate code to set up dependency tracking. -*- Autoconf -*-
|
|
||||||
|
|
||||||
# Copyright (C) 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2008
|
|
||||||
# Free Software Foundation, Inc.
|
|
||||||
#
|
|
||||||
# This file is free software; the Free Software Foundation
|
|
||||||
# gives unlimited permission to copy and/or distribute it,
|
|
||||||
# with or without modifications, as long as this notice is preserved.
|
|
||||||
|
|
||||||
#serial 5
|
|
||||||
|
|
||||||
# _AM_OUTPUT_DEPENDENCY_COMMANDS
|
|
||||||
# ------------------------------
|
|
||||||
AC_DEFUN([_AM_OUTPUT_DEPENDENCY_COMMANDS],
|
|
||||||
[{
|
|
||||||
# Autoconf 2.62 quotes --file arguments for eval, but not when files
|
|
||||||
# are listed without --file. Let's play safe and only enable the eval
|
|
||||||
# if we detect the quoting.
|
|
||||||
case $CONFIG_FILES in
|
|
||||||
*\'*) eval set x "$CONFIG_FILES" ;;
|
|
||||||
*) set x $CONFIG_FILES ;;
|
|
||||||
esac
|
|
||||||
shift
|
|
||||||
for mf
|
|
||||||
do
|
|
||||||
# Strip MF so we end up with the name of the file.
|
|
||||||
mf=`echo "$mf" | sed -e 's/:.*$//'`
|
|
||||||
# Check whether this is an Automake generated Makefile or not.
|
|
||||||
# We used to match only the files named `Makefile.in', but
|
|
||||||
# some people rename them; so instead we look at the file content.
|
|
||||||
# Grep'ing the first line is not enough: some people post-process
|
|
||||||
# each Makefile.in and add a new line on top of each file to say so.
|
|
||||||
# Grep'ing the whole file is not good either: AIX grep has a line
|
|
||||||
# limit of 2048, but all sed's we know have understand at least 4000.
|
|
||||||
if sed -n 's,^#.*generated by automake.*,X,p' "$mf" | grep X >/dev/null 2>&1; then
|
|
||||||
dirpart=`AS_DIRNAME("$mf")`
|
|
||||||
else
|
|
||||||
continue
|
|
||||||
fi
|
|
||||||
# Extract the definition of DEPDIR, am__include, and am__quote
|
|
||||||
# from the Makefile without running `make'.
|
|
||||||
DEPDIR=`sed -n 's/^DEPDIR = //p' < "$mf"`
|
|
||||||
test -z "$DEPDIR" && continue
|
|
||||||
am__include=`sed -n 's/^am__include = //p' < "$mf"`
|
|
||||||
test -z "am__include" && continue
|
|
||||||
am__quote=`sed -n 's/^am__quote = //p' < "$mf"`
|
|
||||||
# When using ansi2knr, U may be empty or an underscore; expand it
|
|
||||||
U=`sed -n 's/^U = //p' < "$mf"`
|
|
||||||
# Find all dependency output files, they are included files with
|
|
||||||
# $(DEPDIR) in their names. We invoke sed twice because it is the
|
|
||||||
# simplest approach to changing $(DEPDIR) to its actual value in the
|
|
||||||
# expansion.
|
|
||||||
for file in `sed -n "
|
|
||||||
s/^$am__include $am__quote\(.*(DEPDIR).*\)$am__quote"'$/\1/p' <"$mf" | \
|
|
||||||
sed -e 's/\$(DEPDIR)/'"$DEPDIR"'/g' -e 's/\$U/'"$U"'/g'`; do
|
|
||||||
# Make sure the directory exists.
|
|
||||||
test -f "$dirpart/$file" && continue
|
|
||||||
fdir=`AS_DIRNAME(["$file"])`
|
|
||||||
AS_MKDIR_P([$dirpart/$fdir])
|
|
||||||
# echo "creating $dirpart/$file"
|
|
||||||
echo '# dummy' > "$dirpart/$file"
|
|
||||||
done
|
|
||||||
done
|
|
||||||
}
|
|
||||||
])# _AM_OUTPUT_DEPENDENCY_COMMANDS
|
|
||||||
|
|
||||||
|
|
||||||
# AM_OUTPUT_DEPENDENCY_COMMANDS
|
|
||||||
# -----------------------------
|
|
||||||
# This macro should only be invoked once -- use via AC_REQUIRE.
|
|
||||||
#
|
|
||||||
# This code is only required when automatic dependency tracking
|
|
||||||
# is enabled. FIXME. This creates each `.P' file that we will
|
|
||||||
# need in order to bootstrap the dependency handling code.
|
|
||||||
AC_DEFUN([AM_OUTPUT_DEPENDENCY_COMMANDS],
|
|
||||||
[AC_CONFIG_COMMANDS([depfiles],
|
|
||||||
[test x"$AMDEP_TRUE" != x"" || _AM_OUTPUT_DEPENDENCY_COMMANDS],
|
|
||||||
[AMDEP_TRUE="$AMDEP_TRUE" ac_aux_dir="$ac_aux_dir"])
|
|
||||||
])
|
|
||||||
|
|
||||||
# Do all the work for Automake. -*- Autoconf -*-
|
|
||||||
|
|
||||||
# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004,
|
|
||||||
# 2005, 2006, 2008, 2009 Free Software Foundation, Inc.
|
|
||||||
#
|
|
||||||
# This file is free software; the Free Software Foundation
|
|
||||||
# gives unlimited permission to copy and/or distribute it,
|
|
||||||
# with or without modifications, as long as this notice is preserved.
|
|
||||||
|
|
||||||
# serial 16
|
|
||||||
|
|
||||||
# This macro actually does too much. Some checks are only needed if
|
|
||||||
# your package does certain things. But this isn't really a big deal.
|
|
||||||
|
|
||||||
# AM_INIT_AUTOMAKE(PACKAGE, VERSION, [NO-DEFINE])
|
|
||||||
# AM_INIT_AUTOMAKE([OPTIONS])
|
|
||||||
# -----------------------------------------------
|
|
||||||
# The call with PACKAGE and VERSION arguments is the old style
|
|
||||||
# call (pre autoconf-2.50), which is being phased out. PACKAGE
|
|
||||||
# and VERSION should now be passed to AC_INIT and removed from
|
|
||||||
# the call to AM_INIT_AUTOMAKE.
|
|
||||||
# We support both call styles for the transition. After
|
|
||||||
# the next Automake release, Autoconf can make the AC_INIT
|
|
||||||
# arguments mandatory, and then we can depend on a new Autoconf
|
|
||||||
# release and drop the old call support.
|
|
||||||
AC_DEFUN([AM_INIT_AUTOMAKE],
|
|
||||||
[AC_PREREQ([2.62])dnl
|
|
||||||
dnl Autoconf wants to disallow AM_ names. We explicitly allow
|
|
||||||
dnl the ones we care about.
|
|
||||||
m4_pattern_allow([^AM_[A-Z]+FLAGS$])dnl
|
|
||||||
AC_REQUIRE([AM_SET_CURRENT_AUTOMAKE_VERSION])dnl
|
|
||||||
AC_REQUIRE([AC_PROG_INSTALL])dnl
|
|
||||||
if test "`cd $srcdir && pwd`" != "`pwd`"; then
|
|
||||||
# Use -I$(srcdir) only when $(srcdir) != ., so that make's output
|
|
||||||
# is not polluted with repeated "-I."
|
|
||||||
AC_SUBST([am__isrc], [' -I$(srcdir)'])_AM_SUBST_NOTMAKE([am__isrc])dnl
|
|
||||||
# test to see if srcdir already configured
|
|
||||||
if test -f $srcdir/config.status; then
|
|
||||||
AC_MSG_ERROR([source directory already configured; run "make distclean" there first])
|
|
||||||
fi
|
|
||||||
fi
|
|
||||||
|
|
||||||
# test whether we have cygpath
|
|
||||||
if test -z "$CYGPATH_W"; then
|
|
||||||
if (cygpath --version) >/dev/null 2>/dev/null; then
|
|
||||||
CYGPATH_W='cygpath -w'
|
|
||||||
else
|
|
||||||
CYGPATH_W=echo
|
|
||||||
fi
|
|
||||||
fi
|
|
||||||
AC_SUBST([CYGPATH_W])
|
|
||||||
|
|
||||||
# Define the identity of the package.
|
|
||||||
dnl Distinguish between old-style and new-style calls.
|
|
||||||
m4_ifval([$2],
|
|
||||||
[m4_ifval([$3], [_AM_SET_OPTION([no-define])])dnl
|
|
||||||
AC_SUBST([PACKAGE], [$1])dnl
|
|
||||||
AC_SUBST([VERSION], [$2])],
|
|
||||||
[_AM_SET_OPTIONS([$1])dnl
|
|
||||||
dnl Diagnose old-style AC_INIT with new-style AM_AUTOMAKE_INIT.
|
|
||||||
m4_if(m4_ifdef([AC_PACKAGE_NAME], 1)m4_ifdef([AC_PACKAGE_VERSION], 1), 11,,
|
|
||||||
[m4_fatal([AC_INIT should be called with package and version arguments])])dnl
|
|
||||||
AC_SUBST([PACKAGE], ['AC_PACKAGE_TARNAME'])dnl
|
|
||||||
AC_SUBST([VERSION], ['AC_PACKAGE_VERSION'])])dnl
|
|
||||||
|
|
||||||
_AM_IF_OPTION([no-define],,
|
|
||||||
[AC_DEFINE_UNQUOTED(PACKAGE, "$PACKAGE", [Name of package])
|
|
||||||
AC_DEFINE_UNQUOTED(VERSION, "$VERSION", [Version number of package])])dnl
|
|
||||||
|
|
||||||
# Some tools Automake needs.
|
|
||||||
AC_REQUIRE([AM_SANITY_CHECK])dnl
|
|
||||||
AC_REQUIRE([AC_ARG_PROGRAM])dnl
|
|
||||||
AM_MISSING_PROG(ACLOCAL, aclocal-${am__api_version})
|
|
||||||
AM_MISSING_PROG(AUTOCONF, autoconf)
|
|
||||||
AM_MISSING_PROG(AUTOMAKE, automake-${am__api_version})
|
|
||||||
AM_MISSING_PROG(AUTOHEADER, autoheader)
|
|
||||||
AM_MISSING_PROG(MAKEINFO, makeinfo)
|
|
||||||
AC_REQUIRE([AM_PROG_INSTALL_SH])dnl
|
|
||||||
AC_REQUIRE([AM_PROG_INSTALL_STRIP])dnl
|
|
||||||
AC_REQUIRE([AM_PROG_MKDIR_P])dnl
|
|
||||||
# We need awk for the "check" target. The system "awk" is bad on
|
|
||||||
# some platforms.
|
|
||||||
AC_REQUIRE([AC_PROG_AWK])dnl
|
|
||||||
AC_REQUIRE([AC_PROG_MAKE_SET])dnl
|
|
||||||
AC_REQUIRE([AM_SET_LEADING_DOT])dnl
|
|
||||||
_AM_IF_OPTION([tar-ustar], [_AM_PROG_TAR([ustar])],
|
|
||||||
[_AM_IF_OPTION([tar-pax], [_AM_PROG_TAR([pax])],
|
|
||||||
[_AM_PROG_TAR([v7])])])
|
|
||||||
_AM_IF_OPTION([no-dependencies],,
|
|
||||||
[AC_PROVIDE_IFELSE([AC_PROG_CC],
|
|
||||||
[_AM_DEPENDENCIES(CC)],
|
|
||||||
[define([AC_PROG_CC],
|
|
||||||
defn([AC_PROG_CC])[_AM_DEPENDENCIES(CC)])])dnl
|
|
||||||
AC_PROVIDE_IFELSE([AC_PROG_CXX],
|
|
||||||
[_AM_DEPENDENCIES(CXX)],
|
|
||||||
[define([AC_PROG_CXX],
|
|
||||||
defn([AC_PROG_CXX])[_AM_DEPENDENCIES(CXX)])])dnl
|
|
||||||
AC_PROVIDE_IFELSE([AC_PROG_OBJC],
|
|
||||||
[_AM_DEPENDENCIES(OBJC)],
|
|
||||||
[define([AC_PROG_OBJC],
|
|
||||||
defn([AC_PROG_OBJC])[_AM_DEPENDENCIES(OBJC)])])dnl
|
|
||||||
])
|
|
||||||
_AM_IF_OPTION([silent-rules], [AC_REQUIRE([AM_SILENT_RULES])])dnl
|
|
||||||
dnl The `parallel-tests' driver may need to know about EXEEXT, so add the
|
|
||||||
dnl `am__EXEEXT' conditional if _AM_COMPILER_EXEEXT was seen. This macro
|
|
||||||
dnl is hooked onto _AC_COMPILER_EXEEXT early, see below.
|
|
||||||
AC_CONFIG_COMMANDS_PRE(dnl
|
|
||||||
[m4_provide_if([_AM_COMPILER_EXEEXT],
|
|
||||||
[AM_CONDITIONAL([am__EXEEXT], [test -n "$EXEEXT"])])])dnl
|
|
||||||
])
|
|
||||||
|
|
||||||
dnl Hook into `_AC_COMPILER_EXEEXT' early to learn its expansion. Do not
|
|
||||||
dnl add the conditional right here, as _AC_COMPILER_EXEEXT may be further
|
|
||||||
dnl mangled by Autoconf and run in a shell conditional statement.
|
|
||||||
m4_define([_AC_COMPILER_EXEEXT],
|
|
||||||
m4_defn([_AC_COMPILER_EXEEXT])[m4_provide([_AM_COMPILER_EXEEXT])])
|
|
||||||
|
|
||||||
|
|
||||||
# When config.status generates a header, we must update the stamp-h file.
|
|
||||||
# This file resides in the same directory as the config header
|
|
||||||
# that is generated. The stamp files are numbered to have different names.
|
|
||||||
|
|
||||||
# Autoconf calls _AC_AM_CONFIG_HEADER_HOOK (when defined) in the
|
|
||||||
# loop where config.status creates the headers, so we can generate
|
|
||||||
# our stamp files there.
|
|
||||||
AC_DEFUN([_AC_AM_CONFIG_HEADER_HOOK],
|
|
||||||
[# Compute $1's index in $config_headers.
|
|
||||||
_am_arg=$1
|
|
||||||
_am_stamp_count=1
|
|
||||||
for _am_header in $config_headers :; do
|
|
||||||
case $_am_header in
|
|
||||||
$_am_arg | $_am_arg:* )
|
|
||||||
break ;;
|
|
||||||
* )
|
|
||||||
_am_stamp_count=`expr $_am_stamp_count + 1` ;;
|
|
||||||
esac
|
|
||||||
done
|
|
||||||
echo "timestamp for $_am_arg" >`AS_DIRNAME(["$_am_arg"])`/stamp-h[]$_am_stamp_count])
|
|
||||||
|
|
||||||
# Copyright (C) 2001, 2003, 2005, 2008 Free Software Foundation, Inc.
|
|
||||||
#
|
|
||||||
# This file is free software; the Free Software Foundation
|
|
||||||
# gives unlimited permission to copy and/or distribute it,
|
|
||||||
# with or without modifications, as long as this notice is preserved.
|
|
||||||
|
|
||||||
# AM_PROG_INSTALL_SH
|
|
||||||
# ------------------
|
|
||||||
# Define $install_sh.
|
|
||||||
AC_DEFUN([AM_PROG_INSTALL_SH],
|
|
||||||
[AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl
|
|
||||||
if test x"${install_sh}" != xset; then
|
|
||||||
case $am_aux_dir in
|
|
||||||
*\ * | *\ *)
|
|
||||||
install_sh="\${SHELL} '$am_aux_dir/install-sh'" ;;
|
|
||||||
*)
|
|
||||||
install_sh="\${SHELL} $am_aux_dir/install-sh"
|
|
||||||
esac
|
|
||||||
fi
|
|
||||||
AC_SUBST(install_sh)])
|
|
||||||
|
|
||||||
# Copyright (C) 2003, 2005 Free Software Foundation, Inc.
|
|
||||||
#
|
|
||||||
# This file is free software; the Free Software Foundation
|
|
||||||
# gives unlimited permission to copy and/or distribute it,
|
|
||||||
# with or without modifications, as long as this notice is preserved.
|
|
||||||
|
|
||||||
# serial 2
|
|
||||||
|
|
||||||
# Check whether the underlying file-system supports filenames
|
|
||||||
# with a leading dot. For instance MS-DOS doesn't.
|
|
||||||
AC_DEFUN([AM_SET_LEADING_DOT],
|
|
||||||
[rm -rf .tst 2>/dev/null
|
|
||||||
mkdir .tst 2>/dev/null
|
|
||||||
if test -d .tst; then
|
|
||||||
am__leading_dot=.
|
|
||||||
else
|
|
||||||
am__leading_dot=_
|
|
||||||
fi
|
|
||||||
rmdir .tst 2>/dev/null
|
|
||||||
AC_SUBST([am__leading_dot])])
|
|
||||||
|
|
||||||
# Check to see how 'make' treats includes. -*- Autoconf -*-
|
|
||||||
|
|
||||||
# Copyright (C) 2001, 2002, 2003, 2005, 2009 Free Software Foundation, Inc.
|
|
||||||
#
|
|
||||||
# This file is free software; the Free Software Foundation
|
|
||||||
# gives unlimited permission to copy and/or distribute it,
|
|
||||||
# with or without modifications, as long as this notice is preserved.
|
|
||||||
|
|
||||||
# serial 4
|
|
||||||
|
|
||||||
# AM_MAKE_INCLUDE()
|
|
||||||
# -----------------
|
|
||||||
# Check to see how make treats includes.
|
|
||||||
AC_DEFUN([AM_MAKE_INCLUDE],
|
|
||||||
[am_make=${MAKE-make}
|
|
||||||
cat > confinc << 'END'
|
|
||||||
am__doit:
|
|
||||||
@echo this is the am__doit target
|
|
||||||
.PHONY: am__doit
|
|
||||||
END
|
|
||||||
# If we don't find an include directive, just comment out the code.
|
|
||||||
AC_MSG_CHECKING([for style of include used by $am_make])
|
|
||||||
am__include="#"
|
|
||||||
am__quote=
|
|
||||||
_am_result=none
|
|
||||||
# First try GNU make style include.
|
|
||||||
echo "include confinc" > confmf
|
|
||||||
# Ignore all kinds of additional output from `make'.
|
|
||||||
case `$am_make -s -f confmf 2> /dev/null` in #(
|
|
||||||
*the\ am__doit\ target*)
|
|
||||||
am__include=include
|
|
||||||
am__quote=
|
|
||||||
_am_result=GNU
|
|
||||||
;;
|
|
||||||
esac
|
|
||||||
# Now try BSD make style include.
|
|
||||||
if test "$am__include" = "#"; then
|
|
||||||
echo '.include "confinc"' > confmf
|
|
||||||
case `$am_make -s -f confmf 2> /dev/null` in #(
|
|
||||||
*the\ am__doit\ target*)
|
|
||||||
am__include=.include
|
|
||||||
am__quote="\""
|
|
||||||
_am_result=BSD
|
|
||||||
;;
|
|
||||||
esac
|
|
||||||
fi
|
|
||||||
AC_SUBST([am__include])
|
|
||||||
AC_SUBST([am__quote])
|
|
||||||
AC_MSG_RESULT([$_am_result])
|
|
||||||
rm -f confinc confmf
|
|
||||||
])
|
|
||||||
|
|
||||||
# Copyright (C) 1999, 2000, 2001, 2003, 2004, 2005, 2008
|
|
||||||
# Free Software Foundation, Inc.
|
|
||||||
#
|
|
||||||
# This file is free software; the Free Software Foundation
|
|
||||||
# gives unlimited permission to copy and/or distribute it,
|
|
||||||
# with or without modifications, as long as this notice is preserved.
|
|
||||||
|
|
||||||
# serial 6
|
|
||||||
|
|
||||||
# AM_PROG_CC_C_O
|
|
||||||
# --------------
|
|
||||||
# Like AC_PROG_CC_C_O, but changed for automake.
|
|
||||||
AC_DEFUN([AM_PROG_CC_C_O],
|
|
||||||
[AC_REQUIRE([AC_PROG_CC_C_O])dnl
|
|
||||||
AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl
|
|
||||||
AC_REQUIRE_AUX_FILE([compile])dnl
|
|
||||||
# FIXME: we rely on the cache variable name because
|
|
||||||
# there is no other way.
|
|
||||||
set dummy $CC
|
|
||||||
am_cc=`echo $[2] | sed ['s/[^a-zA-Z0-9_]/_/g;s/^[0-9]/_/']`
|
|
||||||
eval am_t=\$ac_cv_prog_cc_${am_cc}_c_o
|
|
||||||
if test "$am_t" != yes; then
|
|
||||||
# Losing compiler, so override with the script.
|
|
||||||
# FIXME: It is wrong to rewrite CC.
|
|
||||||
# But if we don't then we get into trouble of one sort or another.
|
|
||||||
# A longer-term fix would be to have automake use am__CC in this case,
|
|
||||||
# and then we could set am__CC="\$(top_srcdir)/compile \$(CC)"
|
|
||||||
CC="$am_aux_dir/compile $CC"
|
|
||||||
fi
|
|
||||||
dnl Make sure AC_PROG_CC is never called again, or it will override our
|
|
||||||
dnl setting of CC.
|
|
||||||
m4_define([AC_PROG_CC],
|
|
||||||
[m4_fatal([AC_PROG_CC cannot be called after AM_PROG_CC_C_O])])
|
|
||||||
])
|
|
||||||
|
|
||||||
# Fake the existence of programs that GNU maintainers use. -*- Autoconf -*-
|
|
||||||
|
|
||||||
# Copyright (C) 1997, 1999, 2000, 2001, 2003, 2004, 2005, 2008
|
|
||||||
# Free Software Foundation, Inc.
|
|
||||||
#
|
|
||||||
# This file is free software; the Free Software Foundation
|
|
||||||
# gives unlimited permission to copy and/or distribute it,
|
|
||||||
# with or without modifications, as long as this notice is preserved.
|
|
||||||
|
|
||||||
# serial 6
|
|
||||||
|
|
||||||
# AM_MISSING_PROG(NAME, PROGRAM)
|
|
||||||
# ------------------------------
|
|
||||||
AC_DEFUN([AM_MISSING_PROG],
|
|
||||||
[AC_REQUIRE([AM_MISSING_HAS_RUN])
|
|
||||||
$1=${$1-"${am_missing_run}$2"}
|
|
||||||
AC_SUBST($1)])
|
|
||||||
|
|
||||||
|
|
||||||
# AM_MISSING_HAS_RUN
|
|
||||||
# ------------------
|
|
||||||
# Define MISSING if not defined so far and test if it supports --run.
|
|
||||||
# If it does, set am_missing_run to use it, otherwise, to nothing.
|
|
||||||
AC_DEFUN([AM_MISSING_HAS_RUN],
|
|
||||||
[AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl
|
|
||||||
AC_REQUIRE_AUX_FILE([missing])dnl
|
|
||||||
if test x"${MISSING+set}" != xset; then
|
|
||||||
case $am_aux_dir in
|
|
||||||
*\ * | *\ *)
|
|
||||||
MISSING="\${SHELL} \"$am_aux_dir/missing\"" ;;
|
|
||||||
*)
|
|
||||||
MISSING="\${SHELL} $am_aux_dir/missing" ;;
|
|
||||||
esac
|
|
||||||
fi
|
|
||||||
# Use eval to expand $SHELL
|
|
||||||
if eval "$MISSING --run true"; then
|
|
||||||
am_missing_run="$MISSING --run "
|
|
||||||
else
|
|
||||||
am_missing_run=
|
|
||||||
AC_MSG_WARN([`missing' script is too old or missing])
|
|
||||||
fi
|
|
||||||
])
|
|
||||||
|
|
||||||
# Copyright (C) 2003, 2004, 2005, 2006 Free Software Foundation, Inc.
|
|
||||||
#
|
|
||||||
# This file is free software; the Free Software Foundation
|
|
||||||
# gives unlimited permission to copy and/or distribute it,
|
|
||||||
# with or without modifications, as long as this notice is preserved.
|
|
||||||
|
|
||||||
# AM_PROG_MKDIR_P
|
|
||||||
# ---------------
|
|
||||||
# Check for `mkdir -p'.
|
|
||||||
AC_DEFUN([AM_PROG_MKDIR_P],
|
|
||||||
[AC_PREREQ([2.60])dnl
|
|
||||||
AC_REQUIRE([AC_PROG_MKDIR_P])dnl
|
|
||||||
dnl Automake 1.8 to 1.9.6 used to define mkdir_p. We now use MKDIR_P,
|
|
||||||
dnl while keeping a definition of mkdir_p for backward compatibility.
|
|
||||||
dnl @MKDIR_P@ is magic: AC_OUTPUT adjusts its value for each Makefile.
|
|
||||||
dnl However we cannot define mkdir_p as $(MKDIR_P) for the sake of
|
|
||||||
dnl Makefile.ins that do not define MKDIR_P, so we do our own
|
|
||||||
dnl adjustment using top_builddir (which is defined more often than
|
|
||||||
dnl MKDIR_P).
|
|
||||||
AC_SUBST([mkdir_p], ["$MKDIR_P"])dnl
|
|
||||||
case $mkdir_p in
|
|
||||||
[[\\/$]]* | ?:[[\\/]]*) ;;
|
|
||||||
*/*) mkdir_p="\$(top_builddir)/$mkdir_p" ;;
|
|
||||||
esac
|
|
||||||
])
|
|
||||||
|
|
||||||
# Helper functions for option handling. -*- Autoconf -*-
|
|
||||||
|
|
||||||
# Copyright (C) 2001, 2002, 2003, 2005, 2008 Free Software Foundation, Inc.
|
|
||||||
#
|
|
||||||
# This file is free software; the Free Software Foundation
|
|
||||||
# gives unlimited permission to copy and/or distribute it,
|
|
||||||
# with or without modifications, as long as this notice is preserved.
|
|
||||||
|
|
||||||
# serial 4
|
|
||||||
|
|
||||||
# _AM_MANGLE_OPTION(NAME)
|
|
||||||
# -----------------------
|
|
||||||
AC_DEFUN([_AM_MANGLE_OPTION],
|
|
||||||
[[_AM_OPTION_]m4_bpatsubst($1, [[^a-zA-Z0-9_]], [_])])
|
|
||||||
|
|
||||||
# _AM_SET_OPTION(NAME)
|
|
||||||
# ------------------------------
|
|
||||||
# Set option NAME. Presently that only means defining a flag for this option.
|
|
||||||
AC_DEFUN([_AM_SET_OPTION],
|
|
||||||
[m4_define(_AM_MANGLE_OPTION([$1]), 1)])
|
|
||||||
|
|
||||||
# _AM_SET_OPTIONS(OPTIONS)
|
|
||||||
# ----------------------------------
|
|
||||||
# OPTIONS is a space-separated list of Automake options.
|
|
||||||
AC_DEFUN([_AM_SET_OPTIONS],
|
|
||||||
[m4_foreach_w([_AM_Option], [$1], [_AM_SET_OPTION(_AM_Option)])])
|
|
||||||
|
|
||||||
# _AM_IF_OPTION(OPTION, IF-SET, [IF-NOT-SET])
|
|
||||||
# -------------------------------------------
|
|
||||||
# Execute IF-SET if OPTION is set, IF-NOT-SET otherwise.
|
|
||||||
AC_DEFUN([_AM_IF_OPTION],
|
|
||||||
[m4_ifset(_AM_MANGLE_OPTION([$1]), [$2], [$3])])
|
|
||||||
|
|
||||||
# Check to make sure that the build environment is sane. -*- Autoconf -*-
|
|
||||||
|
|
||||||
# Copyright (C) 1996, 1997, 2000, 2001, 2003, 2005, 2008
|
|
||||||
# Free Software Foundation, Inc.
|
|
||||||
#
|
|
||||||
# This file is free software; the Free Software Foundation
|
|
||||||
# gives unlimited permission to copy and/or distribute it,
|
|
||||||
# with or without modifications, as long as this notice is preserved.
|
|
||||||
|
|
||||||
# serial 5
|
|
||||||
|
|
||||||
# AM_SANITY_CHECK
|
|
||||||
# ---------------
|
|
||||||
AC_DEFUN([AM_SANITY_CHECK],
|
|
||||||
[AC_MSG_CHECKING([whether build environment is sane])
|
|
||||||
# Just in case
|
|
||||||
sleep 1
|
|
||||||
echo timestamp > conftest.file
|
|
||||||
# Reject unsafe characters in $srcdir or the absolute working directory
|
|
||||||
# name. Accept space and tab only in the latter.
|
|
||||||
am_lf='
|
|
||||||
'
|
|
||||||
case `pwd` in
|
|
||||||
*[[\\\"\#\$\&\'\`$am_lf]]*)
|
|
||||||
AC_MSG_ERROR([unsafe absolute working directory name]);;
|
|
||||||
esac
|
|
||||||
case $srcdir in
|
|
||||||
*[[\\\"\#\$\&\'\`$am_lf\ \ ]]*)
|
|
||||||
AC_MSG_ERROR([unsafe srcdir value: `$srcdir']);;
|
|
||||||
esac
|
|
||||||
|
|
||||||
# Do `set' in a subshell so we don't clobber the current shell's
|
|
||||||
# arguments. Must try -L first in case configure is actually a
|
|
||||||
# symlink; some systems play weird games with the mod time of symlinks
|
|
||||||
# (eg FreeBSD returns the mod time of the symlink's containing
|
|
||||||
# directory).
|
|
||||||
if (
|
|
||||||
set X `ls -Lt "$srcdir/configure" conftest.file 2> /dev/null`
|
|
||||||
if test "$[*]" = "X"; then
|
|
||||||
# -L didn't work.
|
|
||||||
set X `ls -t "$srcdir/configure" conftest.file`
|
|
||||||
fi
|
|
||||||
rm -f conftest.file
|
|
||||||
if test "$[*]" != "X $srcdir/configure conftest.file" \
|
|
||||||
&& test "$[*]" != "X conftest.file $srcdir/configure"; then
|
|
||||||
|
|
||||||
# If neither matched, then we have a broken ls. This can happen
|
|
||||||
# if, for instance, CONFIG_SHELL is bash and it inherits a
|
|
||||||
# broken ls alias from the environment. This has actually
|
|
||||||
# happened. Such a system could not be considered "sane".
|
|
||||||
AC_MSG_ERROR([ls -t appears to fail. Make sure there is not a broken
|
|
||||||
alias in your environment])
|
|
||||||
fi
|
|
||||||
|
|
||||||
test "$[2]" = conftest.file
|
|
||||||
)
|
|
||||||
then
|
|
||||||
# Ok.
|
|
||||||
:
|
|
||||||
else
|
|
||||||
AC_MSG_ERROR([newly created file is older than distributed files!
|
|
||||||
Check your system clock])
|
|
||||||
fi
|
|
||||||
AC_MSG_RESULT(yes)])
|
|
||||||
|
|
||||||
# Copyright (C) 2001, 2003, 2005 Free Software Foundation, Inc.
|
|
||||||
#
|
|
||||||
# This file is free software; the Free Software Foundation
|
|
||||||
# gives unlimited permission to copy and/or distribute it,
|
|
||||||
# with or without modifications, as long as this notice is preserved.
|
|
||||||
|
|
||||||
# AM_PROG_INSTALL_STRIP
|
|
||||||
# ---------------------
|
|
||||||
# One issue with vendor `install' (even GNU) is that you can't
|
|
||||||
# specify the program used to strip binaries. This is especially
|
|
||||||
# annoying in cross-compiling environments, where the build's strip
|
|
||||||
# is unlikely to handle the host's binaries.
|
|
||||||
# Fortunately install-sh will honor a STRIPPROG variable, so we
|
|
||||||
# always use install-sh in `make install-strip', and initialize
|
|
||||||
# STRIPPROG with the value of the STRIP variable (set by the user).
|
|
||||||
AC_DEFUN([AM_PROG_INSTALL_STRIP],
|
|
||||||
[AC_REQUIRE([AM_PROG_INSTALL_SH])dnl
|
|
||||||
# Installed binaries are usually stripped using `strip' when the user
|
|
||||||
# run `make install-strip'. However `strip' might not be the right
|
|
||||||
# tool to use in cross-compilation environments, therefore Automake
|
|
||||||
# will honor the `STRIP' environment variable to overrule this program.
|
|
||||||
dnl Don't test for $cross_compiling = yes, because it might be `maybe'.
|
|
||||||
if test "$cross_compiling" != no; then
|
|
||||||
AC_CHECK_TOOL([STRIP], [strip], :)
|
|
||||||
fi
|
|
||||||
INSTALL_STRIP_PROGRAM="\$(install_sh) -c -s"
|
|
||||||
AC_SUBST([INSTALL_STRIP_PROGRAM])])
|
|
||||||
|
|
||||||
# Copyright (C) 2006, 2008 Free Software Foundation, Inc.
|
|
||||||
#
|
|
||||||
# This file is free software; the Free Software Foundation
|
|
||||||
# gives unlimited permission to copy and/or distribute it,
|
|
||||||
# with or without modifications, as long as this notice is preserved.
|
|
||||||
|
|
||||||
# serial 2
|
|
||||||
|
|
||||||
# _AM_SUBST_NOTMAKE(VARIABLE)
|
|
||||||
# ---------------------------
|
|
||||||
# Prevent Automake from outputting VARIABLE = @VARIABLE@ in Makefile.in.
|
|
||||||
# This macro is traced by Automake.
|
|
||||||
AC_DEFUN([_AM_SUBST_NOTMAKE])
|
|
||||||
|
|
||||||
# AM_SUBST_NOTMAKE(VARIABLE)
|
|
||||||
# ---------------------------
|
|
||||||
# Public sister of _AM_SUBST_NOTMAKE.
|
|
||||||
AC_DEFUN([AM_SUBST_NOTMAKE], [_AM_SUBST_NOTMAKE($@)])
|
|
||||||
|
|
||||||
# Check how to create a tarball. -*- Autoconf -*-
|
|
||||||
|
|
||||||
# Copyright (C) 2004, 2005 Free Software Foundation, Inc.
|
|
||||||
#
|
|
||||||
# This file is free software; the Free Software Foundation
|
|
||||||
# gives unlimited permission to copy and/or distribute it,
|
|
||||||
# with or without modifications, as long as this notice is preserved.
|
|
||||||
|
|
||||||
# serial 2
|
|
||||||
|
|
||||||
# _AM_PROG_TAR(FORMAT)
|
|
||||||
# --------------------
|
|
||||||
# Check how to create a tarball in format FORMAT.
|
|
||||||
# FORMAT should be one of `v7', `ustar', or `pax'.
|
|
||||||
#
|
|
||||||
# Substitute a variable $(am__tar) that is a command
|
|
||||||
# writing to stdout a FORMAT-tarball containing the directory
|
|
||||||
# $tardir.
|
|
||||||
# tardir=directory && $(am__tar) > result.tar
|
|
||||||
#
|
|
||||||
# Substitute a variable $(am__untar) that extract such
|
|
||||||
# a tarball read from stdin.
|
|
||||||
# $(am__untar) < result.tar
|
|
||||||
AC_DEFUN([_AM_PROG_TAR],
|
|
||||||
[# Always define AMTAR for backward compatibility.
|
|
||||||
AM_MISSING_PROG([AMTAR], [tar])
|
|
||||||
m4_if([$1], [v7],
|
|
||||||
[am__tar='${AMTAR} chof - "$$tardir"'; am__untar='${AMTAR} xf -'],
|
|
||||||
[m4_case([$1], [ustar],, [pax],,
|
|
||||||
[m4_fatal([Unknown tar format])])
|
|
||||||
AC_MSG_CHECKING([how to create a $1 tar archive])
|
|
||||||
# Loop over all known methods to create a tar archive until one works.
|
|
||||||
_am_tools='gnutar m4_if([$1], [ustar], [plaintar]) pax cpio none'
|
|
||||||
_am_tools=${am_cv_prog_tar_$1-$_am_tools}
|
|
||||||
# Do not fold the above two line into one, because Tru64 sh and
|
|
||||||
# Solaris sh will not grok spaces in the rhs of `-'.
|
|
||||||
for _am_tool in $_am_tools
|
|
||||||
do
|
|
||||||
case $_am_tool in
|
|
||||||
gnutar)
|
|
||||||
for _am_tar in tar gnutar gtar;
|
|
||||||
do
|
|
||||||
AM_RUN_LOG([$_am_tar --version]) && break
|
|
||||||
done
|
|
||||||
am__tar="$_am_tar --format=m4_if([$1], [pax], [posix], [$1]) -chf - "'"$$tardir"'
|
|
||||||
am__tar_="$_am_tar --format=m4_if([$1], [pax], [posix], [$1]) -chf - "'"$tardir"'
|
|
||||||
am__untar="$_am_tar -xf -"
|
|
||||||
;;
|
|
||||||
plaintar)
|
|
||||||
# Must skip GNU tar: if it does not support --format= it doesn't create
|
|
||||||
# ustar tarball either.
|
|
||||||
(tar --version) >/dev/null 2>&1 && continue
|
|
||||||
am__tar='tar chf - "$$tardir"'
|
|
||||||
am__tar_='tar chf - "$tardir"'
|
|
||||||
am__untar='tar xf -'
|
|
||||||
;;
|
|
||||||
pax)
|
|
||||||
am__tar='pax -L -x $1 -w "$$tardir"'
|
|
||||||
am__tar_='pax -L -x $1 -w "$tardir"'
|
|
||||||
am__untar='pax -r'
|
|
||||||
;;
|
|
||||||
cpio)
|
|
||||||
am__tar='find "$$tardir" -print | cpio -o -H $1 -L'
|
|
||||||
am__tar_='find "$tardir" -print | cpio -o -H $1 -L'
|
|
||||||
am__untar='cpio -i -H $1 -d'
|
|
||||||
;;
|
|
||||||
none)
|
|
||||||
am__tar=false
|
|
||||||
am__tar_=false
|
|
||||||
am__untar=false
|
|
||||||
;;
|
|
||||||
esac
|
|
||||||
|
|
||||||
# If the value was cached, stop now. We just wanted to have am__tar
|
|
||||||
# and am__untar set.
|
|
||||||
test -n "${am_cv_prog_tar_$1}" && break
|
|
||||||
|
|
||||||
# tar/untar a dummy directory, and stop if the command works
|
|
||||||
rm -rf conftest.dir
|
|
||||||
mkdir conftest.dir
|
|
||||||
echo GrepMe > conftest.dir/file
|
|
||||||
AM_RUN_LOG([tardir=conftest.dir && eval $am__tar_ >conftest.tar])
|
|
||||||
rm -rf conftest.dir
|
|
||||||
if test -s conftest.tar; then
|
|
||||||
AM_RUN_LOG([$am__untar <conftest.tar])
|
|
||||||
grep GrepMe conftest.dir/file >/dev/null 2>&1 && break
|
|
||||||
fi
|
|
||||||
done
|
|
||||||
rm -rf conftest.dir
|
|
||||||
|
|
||||||
AC_CACHE_VAL([am_cv_prog_tar_$1], [am_cv_prog_tar_$1=$_am_tool])
|
|
||||||
AC_MSG_RESULT([$am_cv_prog_tar_$1])])
|
|
||||||
AC_SUBST([am__tar])
|
|
||||||
AC_SUBST([am__untar])
|
|
||||||
]) # _AM_PROG_TAR
|
|
||||||
|
|
||||||
m4_include([acinclude/libtool.m4])
|
|
||||||
m4_include([acinclude/ltoptions.m4])
|
|
||||||
m4_include([acinclude/ltsugar.m4])
|
|
||||||
m4_include([acinclude/ltversion.m4])
|
|
||||||
m4_include([acinclude/lt~obsolete.m4])
|
|
|
@ -1,11 +0,0 @@
|
||||||
#! /bin/sh
|
|
||||||
|
|
||||||
echo "Generating build information using autoreconf"
|
|
||||||
echo "This may take a while..."
|
|
||||||
|
|
||||||
test -d acinclude || mkdir acinclude
|
|
||||||
|
|
||||||
autoreconf -i
|
|
||||||
|
|
||||||
# Run configure for this platform
|
|
||||||
echo "Now you are ready to run ./configure"
|
|
|
@ -1,143 +0,0 @@
|
||||||
#! /bin/sh
|
|
||||||
# Wrapper for compilers which do not understand `-c -o'.
|
|
||||||
|
|
||||||
scriptversion=2009-10-06.20; # UTC
|
|
||||||
|
|
||||||
# Copyright (C) 1999, 2000, 2003, 2004, 2005, 2009 Free Software
|
|
||||||
# Foundation, Inc.
|
|
||||||
# Written by Tom Tromey <tromey@cygnus.com>.
|
|
||||||
#
|
|
||||||
# This program is free software; you can redistribute it and/or modify
|
|
||||||
# it under the terms of the GNU General Public License as published by
|
|
||||||
# the Free Software Foundation; either version 2, or (at your option)
|
|
||||||
# any later version.
|
|
||||||
#
|
|
||||||
# This program is distributed in the hope that it will be useful,
|
|
||||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
||||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
||||||
# GNU General Public License for more details.
|
|
||||||
#
|
|
||||||
# You should have received a copy of the GNU General Public License
|
|
||||||
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
|
||||||
|
|
||||||
# As a special exception to the GNU General Public License, if you
|
|
||||||
# distribute this file as part of a program that contains a
|
|
||||||
# configuration script generated by Autoconf, you may include it under
|
|
||||||
# the same distribution terms that you use for the rest of that program.
|
|
||||||
|
|
||||||
# This file is maintained in Automake, please report
|
|
||||||
# bugs to <bug-automake@gnu.org> or send patches to
|
|
||||||
# <automake-patches@gnu.org>.
|
|
||||||
|
|
||||||
case $1 in
|
|
||||||
'')
|
|
||||||
echo "$0: No command. Try \`$0 --help' for more information." 1>&2
|
|
||||||
exit 1;
|
|
||||||
;;
|
|
||||||
-h | --h*)
|
|
||||||
cat <<\EOF
|
|
||||||
Usage: compile [--help] [--version] PROGRAM [ARGS]
|
|
||||||
|
|
||||||
Wrapper for compilers which do not understand `-c -o'.
|
|
||||||
Remove `-o dest.o' from ARGS, run PROGRAM with the remaining
|
|
||||||
arguments, and rename the output as expected.
|
|
||||||
|
|
||||||
If you are trying to build a whole package this is not the
|
|
||||||
right script to run: please start by reading the file `INSTALL'.
|
|
||||||
|
|
||||||
Report bugs to <bug-automake@gnu.org>.
|
|
||||||
EOF
|
|
||||||
exit $?
|
|
||||||
;;
|
|
||||||
-v | --v*)
|
|
||||||
echo "compile $scriptversion"
|
|
||||||
exit $?
|
|
||||||
;;
|
|
||||||
esac
|
|
||||||
|
|
||||||
ofile=
|
|
||||||
cfile=
|
|
||||||
eat=
|
|
||||||
|
|
||||||
for arg
|
|
||||||
do
|
|
||||||
if test -n "$eat"; then
|
|
||||||
eat=
|
|
||||||
else
|
|
||||||
case $1 in
|
|
||||||
-o)
|
|
||||||
# configure might choose to run compile as `compile cc -o foo foo.c'.
|
|
||||||
# So we strip `-o arg' only if arg is an object.
|
|
||||||
eat=1
|
|
||||||
case $2 in
|
|
||||||
*.o | *.obj)
|
|
||||||
ofile=$2
|
|
||||||
;;
|
|
||||||
*)
|
|
||||||
set x "$@" -o "$2"
|
|
||||||
shift
|
|
||||||
;;
|
|
||||||
esac
|
|
||||||
;;
|
|
||||||
*.c)
|
|
||||||
cfile=$1
|
|
||||||
set x "$@" "$1"
|
|
||||||
shift
|
|
||||||
;;
|
|
||||||
*)
|
|
||||||
set x "$@" "$1"
|
|
||||||
shift
|
|
||||||
;;
|
|
||||||
esac
|
|
||||||
fi
|
|
||||||
shift
|
|
||||||
done
|
|
||||||
|
|
||||||
if test -z "$ofile" || test -z "$cfile"; then
|
|
||||||
# If no `-o' option was seen then we might have been invoked from a
|
|
||||||
# pattern rule where we don't need one. That is ok -- this is a
|
|
||||||
# normal compilation that the losing compiler can handle. If no
|
|
||||||
# `.c' file was seen then we are probably linking. That is also
|
|
||||||
# ok.
|
|
||||||
exec "$@"
|
|
||||||
fi
|
|
||||||
|
|
||||||
# Name of file we expect compiler to create.
|
|
||||||
cofile=`echo "$cfile" | sed 's|^.*[\\/]||; s|^[a-zA-Z]:||; s/\.c$/.o/'`
|
|
||||||
|
|
||||||
# Create the lock directory.
|
|
||||||
# Note: use `[/\\:.-]' here to ensure that we don't use the same name
|
|
||||||
# that we are using for the .o file. Also, base the name on the expected
|
|
||||||
# object file name, since that is what matters with a parallel build.
|
|
||||||
lockdir=`echo "$cofile" | sed -e 's|[/\\:.-]|_|g'`.d
|
|
||||||
while true; do
|
|
||||||
if mkdir "$lockdir" >/dev/null 2>&1; then
|
|
||||||
break
|
|
||||||
fi
|
|
||||||
sleep 1
|
|
||||||
done
|
|
||||||
# FIXME: race condition here if user kills between mkdir and trap.
|
|
||||||
trap "rmdir '$lockdir'; exit 1" 1 2 15
|
|
||||||
|
|
||||||
# Run the compile.
|
|
||||||
"$@"
|
|
||||||
ret=$?
|
|
||||||
|
|
||||||
if test -f "$cofile"; then
|
|
||||||
test "$cofile" = "$ofile" || mv "$cofile" "$ofile"
|
|
||||||
elif test -f "${cofile}bj"; then
|
|
||||||
test "${cofile}bj" = "$ofile" || mv "${cofile}bj" "$ofile"
|
|
||||||
fi
|
|
||||||
|
|
||||||
rmdir "$lockdir"
|
|
||||||
exit $ret
|
|
||||||
|
|
||||||
# Local Variables:
|
|
||||||
# mode: shell-script
|
|
||||||
# sh-indentation: 2
|
|
||||||
# eval: (add-hook 'write-file-hooks 'time-stamp)
|
|
||||||
# time-stamp-start: "scriptversion="
|
|
||||||
# time-stamp-format: "%:y-%02m-%02d.%02H"
|
|
||||||
# time-stamp-time-zone: "UTC"
|
|
||||||
# time-stamp-end: "; # UTC"
|
|
||||||
# End:
|
|
1502
test/test-automation/build-scripts/config.guess
vendored
1502
test/test-automation/build-scripts/config.guess
vendored
File diff suppressed because it is too large
Load diff
1714
test/test-automation/build-scripts/config.sub
vendored
1714
test/test-automation/build-scripts/config.sub
vendored
File diff suppressed because it is too large
Load diff
|
@ -1,630 +0,0 @@
|
||||||
#! /bin/sh
|
|
||||||
# depcomp - compile a program generating dependencies as side-effects
|
|
||||||
|
|
||||||
scriptversion=2009-04-28.21; # UTC
|
|
||||||
|
|
||||||
# Copyright (C) 1999, 2000, 2003, 2004, 2005, 2006, 2007, 2009 Free
|
|
||||||
# Software Foundation, Inc.
|
|
||||||
|
|
||||||
# This program is free software; you can redistribute it and/or modify
|
|
||||||
# it under the terms of the GNU General Public License as published by
|
|
||||||
# the Free Software Foundation; either version 2, or (at your option)
|
|
||||||
# any later version.
|
|
||||||
|
|
||||||
# This program is distributed in the hope that it will be useful,
|
|
||||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
||||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
||||||
# GNU General Public License for more details.
|
|
||||||
|
|
||||||
# You should have received a copy of the GNU General Public License
|
|
||||||
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
|
||||||
|
|
||||||
# As a special exception to the GNU General Public License, if you
|
|
||||||
# distribute this file as part of a program that contains a
|
|
||||||
# configuration script generated by Autoconf, you may include it under
|
|
||||||
# the same distribution terms that you use for the rest of that program.
|
|
||||||
|
|
||||||
# Originally written by Alexandre Oliva <oliva@dcc.unicamp.br>.
|
|
||||||
|
|
||||||
case $1 in
|
|
||||||
'')
|
|
||||||
echo "$0: No command. Try \`$0 --help' for more information." 1>&2
|
|
||||||
exit 1;
|
|
||||||
;;
|
|
||||||
-h | --h*)
|
|
||||||
cat <<\EOF
|
|
||||||
Usage: depcomp [--help] [--version] PROGRAM [ARGS]
|
|
||||||
|
|
||||||
Run PROGRAMS ARGS to compile a file, generating dependencies
|
|
||||||
as side-effects.
|
|
||||||
|
|
||||||
Environment variables:
|
|
||||||
depmode Dependency tracking mode.
|
|
||||||
source Source file read by `PROGRAMS ARGS'.
|
|
||||||
object Object file output by `PROGRAMS ARGS'.
|
|
||||||
DEPDIR directory where to store dependencies.
|
|
||||||
depfile Dependency file to output.
|
|
||||||
tmpdepfile Temporary file to use when outputing dependencies.
|
|
||||||
libtool Whether libtool is used (yes/no).
|
|
||||||
|
|
||||||
Report bugs to <bug-automake@gnu.org>.
|
|
||||||
EOF
|
|
||||||
exit $?
|
|
||||||
;;
|
|
||||||
-v | --v*)
|
|
||||||
echo "depcomp $scriptversion"
|
|
||||||
exit $?
|
|
||||||
;;
|
|
||||||
esac
|
|
||||||
|
|
||||||
if test -z "$depmode" || test -z "$source" || test -z "$object"; then
|
|
||||||
echo "depcomp: Variables source, object and depmode must be set" 1>&2
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
|
|
||||||
# Dependencies for sub/bar.o or sub/bar.obj go into sub/.deps/bar.Po.
|
|
||||||
depfile=${depfile-`echo "$object" |
|
|
||||||
sed 's|[^\\/]*$|'${DEPDIR-.deps}'/&|;s|\.\([^.]*\)$|.P\1|;s|Pobj$|Po|'`}
|
|
||||||
tmpdepfile=${tmpdepfile-`echo "$depfile" | sed 's/\.\([^.]*\)$/.T\1/'`}
|
|
||||||
|
|
||||||
rm -f "$tmpdepfile"
|
|
||||||
|
|
||||||
# Some modes work just like other modes, but use different flags. We
|
|
||||||
# parameterize here, but still list the modes in the big case below,
|
|
||||||
# to make depend.m4 easier to write. Note that we *cannot* use a case
|
|
||||||
# here, because this file can only contain one case statement.
|
|
||||||
if test "$depmode" = hp; then
|
|
||||||
# HP compiler uses -M and no extra arg.
|
|
||||||
gccflag=-M
|
|
||||||
depmode=gcc
|
|
||||||
fi
|
|
||||||
|
|
||||||
if test "$depmode" = dashXmstdout; then
|
|
||||||
# This is just like dashmstdout with a different argument.
|
|
||||||
dashmflag=-xM
|
|
||||||
depmode=dashmstdout
|
|
||||||
fi
|
|
||||||
|
|
||||||
cygpath_u="cygpath -u -f -"
|
|
||||||
if test "$depmode" = msvcmsys; then
|
|
||||||
# This is just like msvisualcpp but w/o cygpath translation.
|
|
||||||
# Just convert the backslash-escaped backslashes to single forward
|
|
||||||
# slashes to satisfy depend.m4
|
|
||||||
cygpath_u="sed s,\\\\\\\\,/,g"
|
|
||||||
depmode=msvisualcpp
|
|
||||||
fi
|
|
||||||
|
|
||||||
case "$depmode" in
|
|
||||||
gcc3)
|
|
||||||
## gcc 3 implements dependency tracking that does exactly what
|
|
||||||
## we want. Yay! Note: for some reason libtool 1.4 doesn't like
|
|
||||||
## it if -MD -MP comes after the -MF stuff. Hmm.
|
|
||||||
## Unfortunately, FreeBSD c89 acceptance of flags depends upon
|
|
||||||
## the command line argument order; so add the flags where they
|
|
||||||
## appear in depend2.am. Note that the slowdown incurred here
|
|
||||||
## affects only configure: in makefiles, %FASTDEP% shortcuts this.
|
|
||||||
for arg
|
|
||||||
do
|
|
||||||
case $arg in
|
|
||||||
-c) set fnord "$@" -MT "$object" -MD -MP -MF "$tmpdepfile" "$arg" ;;
|
|
||||||
*) set fnord "$@" "$arg" ;;
|
|
||||||
esac
|
|
||||||
shift # fnord
|
|
||||||
shift # $arg
|
|
||||||
done
|
|
||||||
"$@"
|
|
||||||
stat=$?
|
|
||||||
if test $stat -eq 0; then :
|
|
||||||
else
|
|
||||||
rm -f "$tmpdepfile"
|
|
||||||
exit $stat
|
|
||||||
fi
|
|
||||||
mv "$tmpdepfile" "$depfile"
|
|
||||||
;;
|
|
||||||
|
|
||||||
gcc)
|
|
||||||
## There are various ways to get dependency output from gcc. Here's
|
|
||||||
## why we pick this rather obscure method:
|
|
||||||
## - Don't want to use -MD because we'd like the dependencies to end
|
|
||||||
## up in a subdir. Having to rename by hand is ugly.
|
|
||||||
## (We might end up doing this anyway to support other compilers.)
|
|
||||||
## - The DEPENDENCIES_OUTPUT environment variable makes gcc act like
|
|
||||||
## -MM, not -M (despite what the docs say).
|
|
||||||
## - Using -M directly means running the compiler twice (even worse
|
|
||||||
## than renaming).
|
|
||||||
if test -z "$gccflag"; then
|
|
||||||
gccflag=-MD,
|
|
||||||
fi
|
|
||||||
"$@" -Wp,"$gccflag$tmpdepfile"
|
|
||||||
stat=$?
|
|
||||||
if test $stat -eq 0; then :
|
|
||||||
else
|
|
||||||
rm -f "$tmpdepfile"
|
|
||||||
exit $stat
|
|
||||||
fi
|
|
||||||
rm -f "$depfile"
|
|
||||||
echo "$object : \\" > "$depfile"
|
|
||||||
alpha=ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz
|
|
||||||
## The second -e expression handles DOS-style file names with drive letters.
|
|
||||||
sed -e 's/^[^:]*: / /' \
|
|
||||||
-e 's/^['$alpha']:\/[^:]*: / /' < "$tmpdepfile" >> "$depfile"
|
|
||||||
## This next piece of magic avoids the `deleted header file' problem.
|
|
||||||
## The problem is that when a header file which appears in a .P file
|
|
||||||
## is deleted, the dependency causes make to die (because there is
|
|
||||||
## typically no way to rebuild the header). We avoid this by adding
|
|
||||||
## dummy dependencies for each header file. Too bad gcc doesn't do
|
|
||||||
## this for us directly.
|
|
||||||
tr ' ' '
|
|
||||||
' < "$tmpdepfile" |
|
|
||||||
## Some versions of gcc put a space before the `:'. On the theory
|
|
||||||
## that the space means something, we add a space to the output as
|
|
||||||
## well.
|
|
||||||
## Some versions of the HPUX 10.20 sed can't process this invocation
|
|
||||||
## correctly. Breaking it into two sed invocations is a workaround.
|
|
||||||
sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' | sed -e 's/$/ :/' >> "$depfile"
|
|
||||||
rm -f "$tmpdepfile"
|
|
||||||
;;
|
|
||||||
|
|
||||||
hp)
|
|
||||||
# This case exists only to let depend.m4 do its work. It works by
|
|
||||||
# looking at the text of this script. This case will never be run,
|
|
||||||
# since it is checked for above.
|
|
||||||
exit 1
|
|
||||||
;;
|
|
||||||
|
|
||||||
sgi)
|
|
||||||
if test "$libtool" = yes; then
|
|
||||||
"$@" "-Wp,-MDupdate,$tmpdepfile"
|
|
||||||
else
|
|
||||||
"$@" -MDupdate "$tmpdepfile"
|
|
||||||
fi
|
|
||||||
stat=$?
|
|
||||||
if test $stat -eq 0; then :
|
|
||||||
else
|
|
||||||
rm -f "$tmpdepfile"
|
|
||||||
exit $stat
|
|
||||||
fi
|
|
||||||
rm -f "$depfile"
|
|
||||||
|
|
||||||
if test -f "$tmpdepfile"; then # yes, the sourcefile depend on other files
|
|
||||||
echo "$object : \\" > "$depfile"
|
|
||||||
|
|
||||||
# Clip off the initial element (the dependent). Don't try to be
|
|
||||||
# clever and replace this with sed code, as IRIX sed won't handle
|
|
||||||
# lines with more than a fixed number of characters (4096 in
|
|
||||||
# IRIX 6.2 sed, 8192 in IRIX 6.5). We also remove comment lines;
|
|
||||||
# the IRIX cc adds comments like `#:fec' to the end of the
|
|
||||||
# dependency line.
|
|
||||||
tr ' ' '
|
|
||||||
' < "$tmpdepfile" \
|
|
||||||
| sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' | \
|
|
||||||
tr '
|
|
||||||
' ' ' >> "$depfile"
|
|
||||||
echo >> "$depfile"
|
|
||||||
|
|
||||||
# The second pass generates a dummy entry for each header file.
|
|
||||||
tr ' ' '
|
|
||||||
' < "$tmpdepfile" \
|
|
||||||
| sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' -e 's/$/:/' \
|
|
||||||
>> "$depfile"
|
|
||||||
else
|
|
||||||
# The sourcefile does not contain any dependencies, so just
|
|
||||||
# store a dummy comment line, to avoid errors with the Makefile
|
|
||||||
# "include basename.Plo" scheme.
|
|
||||||
echo "#dummy" > "$depfile"
|
|
||||||
fi
|
|
||||||
rm -f "$tmpdepfile"
|
|
||||||
;;
|
|
||||||
|
|
||||||
aix)
|
|
||||||
# The C for AIX Compiler uses -M and outputs the dependencies
|
|
||||||
# in a .u file. In older versions, this file always lives in the
|
|
||||||
# current directory. Also, the AIX compiler puts `$object:' at the
|
|
||||||
# start of each line; $object doesn't have directory information.
|
|
||||||
# Version 6 uses the directory in both cases.
|
|
||||||
dir=`echo "$object" | sed -e 's|/[^/]*$|/|'`
|
|
||||||
test "x$dir" = "x$object" && dir=
|
|
||||||
base=`echo "$object" | sed -e 's|^.*/||' -e 's/\.o$//' -e 's/\.lo$//'`
|
|
||||||
if test "$libtool" = yes; then
|
|
||||||
tmpdepfile1=$dir$base.u
|
|
||||||
tmpdepfile2=$base.u
|
|
||||||
tmpdepfile3=$dir.libs/$base.u
|
|
||||||
"$@" -Wc,-M
|
|
||||||
else
|
|
||||||
tmpdepfile1=$dir$base.u
|
|
||||||
tmpdepfile2=$dir$base.u
|
|
||||||
tmpdepfile3=$dir$base.u
|
|
||||||
"$@" -M
|
|
||||||
fi
|
|
||||||
stat=$?
|
|
||||||
|
|
||||||
if test $stat -eq 0; then :
|
|
||||||
else
|
|
||||||
rm -f "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3"
|
|
||||||
exit $stat
|
|
||||||
fi
|
|
||||||
|
|
||||||
for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3"
|
|
||||||
do
|
|
||||||
test -f "$tmpdepfile" && break
|
|
||||||
done
|
|
||||||
if test -f "$tmpdepfile"; then
|
|
||||||
# Each line is of the form `foo.o: dependent.h'.
|
|
||||||
# Do two passes, one to just change these to
|
|
||||||
# `$object: dependent.h' and one to simply `dependent.h:'.
|
|
||||||
sed -e "s,^.*\.[a-z]*:,$object:," < "$tmpdepfile" > "$depfile"
|
|
||||||
# That's a tab and a space in the [].
|
|
||||||
sed -e 's,^.*\.[a-z]*:[ ]*,,' -e 's,$,:,' < "$tmpdepfile" >> "$depfile"
|
|
||||||
else
|
|
||||||
# The sourcefile does not contain any dependencies, so just
|
|
||||||
# store a dummy comment line, to avoid errors with the Makefile
|
|
||||||
# "include basename.Plo" scheme.
|
|
||||||
echo "#dummy" > "$depfile"
|
|
||||||
fi
|
|
||||||
rm -f "$tmpdepfile"
|
|
||||||
;;
|
|
||||||
|
|
||||||
icc)
|
|
||||||
# Intel's C compiler understands `-MD -MF file'. However on
|
|
||||||
# icc -MD -MF foo.d -c -o sub/foo.o sub/foo.c
|
|
||||||
# ICC 7.0 will fill foo.d with something like
|
|
||||||
# foo.o: sub/foo.c
|
|
||||||
# foo.o: sub/foo.h
|
|
||||||
# which is wrong. We want:
|
|
||||||
# sub/foo.o: sub/foo.c
|
|
||||||
# sub/foo.o: sub/foo.h
|
|
||||||
# sub/foo.c:
|
|
||||||
# sub/foo.h:
|
|
||||||
# ICC 7.1 will output
|
|
||||||
# foo.o: sub/foo.c sub/foo.h
|
|
||||||
# and will wrap long lines using \ :
|
|
||||||
# foo.o: sub/foo.c ... \
|
|
||||||
# sub/foo.h ... \
|
|
||||||
# ...
|
|
||||||
|
|
||||||
"$@" -MD -MF "$tmpdepfile"
|
|
||||||
stat=$?
|
|
||||||
if test $stat -eq 0; then :
|
|
||||||
else
|
|
||||||
rm -f "$tmpdepfile"
|
|
||||||
exit $stat
|
|
||||||
fi
|
|
||||||
rm -f "$depfile"
|
|
||||||
# Each line is of the form `foo.o: dependent.h',
|
|
||||||
# or `foo.o: dep1.h dep2.h \', or ` dep3.h dep4.h \'.
|
|
||||||
# Do two passes, one to just change these to
|
|
||||||
# `$object: dependent.h' and one to simply `dependent.h:'.
|
|
||||||
sed "s,^[^:]*:,$object :," < "$tmpdepfile" > "$depfile"
|
|
||||||
# Some versions of the HPUX 10.20 sed can't process this invocation
|
|
||||||
# correctly. Breaking it into two sed invocations is a workaround.
|
|
||||||
sed 's,^[^:]*: \(.*\)$,\1,;s/^\\$//;/^$/d;/:$/d' < "$tmpdepfile" |
|
|
||||||
sed -e 's/$/ :/' >> "$depfile"
|
|
||||||
rm -f "$tmpdepfile"
|
|
||||||
;;
|
|
||||||
|
|
||||||
hp2)
|
|
||||||
# The "hp" stanza above does not work with aCC (C++) and HP's ia64
|
|
||||||
# compilers, which have integrated preprocessors. The correct option
|
|
||||||
# to use with these is +Maked; it writes dependencies to a file named
|
|
||||||
# 'foo.d', which lands next to the object file, wherever that
|
|
||||||
# happens to be.
|
|
||||||
# Much of this is similar to the tru64 case; see comments there.
|
|
||||||
dir=`echo "$object" | sed -e 's|/[^/]*$|/|'`
|
|
||||||
test "x$dir" = "x$object" && dir=
|
|
||||||
base=`echo "$object" | sed -e 's|^.*/||' -e 's/\.o$//' -e 's/\.lo$//'`
|
|
||||||
if test "$libtool" = yes; then
|
|
||||||
tmpdepfile1=$dir$base.d
|
|
||||||
tmpdepfile2=$dir.libs/$base.d
|
|
||||||
"$@" -Wc,+Maked
|
|
||||||
else
|
|
||||||
tmpdepfile1=$dir$base.d
|
|
||||||
tmpdepfile2=$dir$base.d
|
|
||||||
"$@" +Maked
|
|
||||||
fi
|
|
||||||
stat=$?
|
|
||||||
if test $stat -eq 0; then :
|
|
||||||
else
|
|
||||||
rm -f "$tmpdepfile1" "$tmpdepfile2"
|
|
||||||
exit $stat
|
|
||||||
fi
|
|
||||||
|
|
||||||
for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2"
|
|
||||||
do
|
|
||||||
test -f "$tmpdepfile" && break
|
|
||||||
done
|
|
||||||
if test -f "$tmpdepfile"; then
|
|
||||||
sed -e "s,^.*\.[a-z]*:,$object:," "$tmpdepfile" > "$depfile"
|
|
||||||
# Add `dependent.h:' lines.
|
|
||||||
sed -ne '2,${
|
|
||||||
s/^ *//
|
|
||||||
s/ \\*$//
|
|
||||||
s/$/:/
|
|
||||||
p
|
|
||||||
}' "$tmpdepfile" >> "$depfile"
|
|
||||||
else
|
|
||||||
echo "#dummy" > "$depfile"
|
|
||||||
fi
|
|
||||||
rm -f "$tmpdepfile" "$tmpdepfile2"
|
|
||||||
;;
|
|
||||||
|
|
||||||
tru64)
|
|
||||||
# The Tru64 compiler uses -MD to generate dependencies as a side
|
|
||||||
# effect. `cc -MD -o foo.o ...' puts the dependencies into `foo.o.d'.
|
|
||||||
# At least on Alpha/Redhat 6.1, Compaq CCC V6.2-504 seems to put
|
|
||||||
# dependencies in `foo.d' instead, so we check for that too.
|
|
||||||
# Subdirectories are respected.
|
|
||||||
dir=`echo "$object" | sed -e 's|/[^/]*$|/|'`
|
|
||||||
test "x$dir" = "x$object" && dir=
|
|
||||||
base=`echo "$object" | sed -e 's|^.*/||' -e 's/\.o$//' -e 's/\.lo$//'`
|
|
||||||
|
|
||||||
if test "$libtool" = yes; then
|
|
||||||
# With Tru64 cc, shared objects can also be used to make a
|
|
||||||
# static library. This mechanism is used in libtool 1.4 series to
|
|
||||||
# handle both shared and static libraries in a single compilation.
|
|
||||||
# With libtool 1.4, dependencies were output in $dir.libs/$base.lo.d.
|
|
||||||
#
|
|
||||||
# With libtool 1.5 this exception was removed, and libtool now
|
|
||||||
# generates 2 separate objects for the 2 libraries. These two
|
|
||||||
# compilations output dependencies in $dir.libs/$base.o.d and
|
|
||||||
# in $dir$base.o.d. We have to check for both files, because
|
|
||||||
# one of the two compilations can be disabled. We should prefer
|
|
||||||
# $dir$base.o.d over $dir.libs/$base.o.d because the latter is
|
|
||||||
# automatically cleaned when .libs/ is deleted, while ignoring
|
|
||||||
# the former would cause a distcleancheck panic.
|
|
||||||
tmpdepfile1=$dir.libs/$base.lo.d # libtool 1.4
|
|
||||||
tmpdepfile2=$dir$base.o.d # libtool 1.5
|
|
||||||
tmpdepfile3=$dir.libs/$base.o.d # libtool 1.5
|
|
||||||
tmpdepfile4=$dir.libs/$base.d # Compaq CCC V6.2-504
|
|
||||||
"$@" -Wc,-MD
|
|
||||||
else
|
|
||||||
tmpdepfile1=$dir$base.o.d
|
|
||||||
tmpdepfile2=$dir$base.d
|
|
||||||
tmpdepfile3=$dir$base.d
|
|
||||||
tmpdepfile4=$dir$base.d
|
|
||||||
"$@" -MD
|
|
||||||
fi
|
|
||||||
|
|
||||||
stat=$?
|
|
||||||
if test $stat -eq 0; then :
|
|
||||||
else
|
|
||||||
rm -f "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" "$tmpdepfile4"
|
|
||||||
exit $stat
|
|
||||||
fi
|
|
||||||
|
|
||||||
for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" "$tmpdepfile4"
|
|
||||||
do
|
|
||||||
test -f "$tmpdepfile" && break
|
|
||||||
done
|
|
||||||
if test -f "$tmpdepfile"; then
|
|
||||||
sed -e "s,^.*\.[a-z]*:,$object:," < "$tmpdepfile" > "$depfile"
|
|
||||||
# That's a tab and a space in the [].
|
|
||||||
sed -e 's,^.*\.[a-z]*:[ ]*,,' -e 's,$,:,' < "$tmpdepfile" >> "$depfile"
|
|
||||||
else
|
|
||||||
echo "#dummy" > "$depfile"
|
|
||||||
fi
|
|
||||||
rm -f "$tmpdepfile"
|
|
||||||
;;
|
|
||||||
|
|
||||||
#nosideeffect)
|
|
||||||
# This comment above is used by automake to tell side-effect
|
|
||||||
# dependency tracking mechanisms from slower ones.
|
|
||||||
|
|
||||||
dashmstdout)
|
|
||||||
# Important note: in order to support this mode, a compiler *must*
|
|
||||||
# always write the preprocessed file to stdout, regardless of -o.
|
|
||||||
"$@" || exit $?
|
|
||||||
|
|
||||||
# Remove the call to Libtool.
|
|
||||||
if test "$libtool" = yes; then
|
|
||||||
while test "X$1" != 'X--mode=compile'; do
|
|
||||||
shift
|
|
||||||
done
|
|
||||||
shift
|
|
||||||
fi
|
|
||||||
|
|
||||||
# Remove `-o $object'.
|
|
||||||
IFS=" "
|
|
||||||
for arg
|
|
||||||
do
|
|
||||||
case $arg in
|
|
||||||
-o)
|
|
||||||
shift
|
|
||||||
;;
|
|
||||||
$object)
|
|
||||||
shift
|
|
||||||
;;
|
|
||||||
*)
|
|
||||||
set fnord "$@" "$arg"
|
|
||||||
shift # fnord
|
|
||||||
shift # $arg
|
|
||||||
;;
|
|
||||||
esac
|
|
||||||
done
|
|
||||||
|
|
||||||
test -z "$dashmflag" && dashmflag=-M
|
|
||||||
# Require at least two characters before searching for `:'
|
|
||||||
# in the target name. This is to cope with DOS-style filenames:
|
|
||||||
# a dependency such as `c:/foo/bar' could be seen as target `c' otherwise.
|
|
||||||
"$@" $dashmflag |
|
|
||||||
sed 's:^[ ]*[^: ][^:][^:]*\:[ ]*:'"$object"'\: :' > "$tmpdepfile"
|
|
||||||
rm -f "$depfile"
|
|
||||||
cat < "$tmpdepfile" > "$depfile"
|
|
||||||
tr ' ' '
|
|
||||||
' < "$tmpdepfile" | \
|
|
||||||
## Some versions of the HPUX 10.20 sed can't process this invocation
|
|
||||||
## correctly. Breaking it into two sed invocations is a workaround.
|
|
||||||
sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' | sed -e 's/$/ :/' >> "$depfile"
|
|
||||||
rm -f "$tmpdepfile"
|
|
||||||
;;
|
|
||||||
|
|
||||||
dashXmstdout)
|
|
||||||
# This case only exists to satisfy depend.m4. It is never actually
|
|
||||||
# run, as this mode is specially recognized in the preamble.
|
|
||||||
exit 1
|
|
||||||
;;
|
|
||||||
|
|
||||||
makedepend)
|
|
||||||
"$@" || exit $?
|
|
||||||
# Remove any Libtool call
|
|
||||||
if test "$libtool" = yes; then
|
|
||||||
while test "X$1" != 'X--mode=compile'; do
|
|
||||||
shift
|
|
||||||
done
|
|
||||||
shift
|
|
||||||
fi
|
|
||||||
# X makedepend
|
|
||||||
shift
|
|
||||||
cleared=no eat=no
|
|
||||||
for arg
|
|
||||||
do
|
|
||||||
case $cleared in
|
|
||||||
no)
|
|
||||||
set ""; shift
|
|
||||||
cleared=yes ;;
|
|
||||||
esac
|
|
||||||
if test $eat = yes; then
|
|
||||||
eat=no
|
|
||||||
continue
|
|
||||||
fi
|
|
||||||
case "$arg" in
|
|
||||||
-D*|-I*)
|
|
||||||
set fnord "$@" "$arg"; shift ;;
|
|
||||||
# Strip any option that makedepend may not understand. Remove
|
|
||||||
# the object too, otherwise makedepend will parse it as a source file.
|
|
||||||
-arch)
|
|
||||||
eat=yes ;;
|
|
||||||
-*|$object)
|
|
||||||
;;
|
|
||||||
*)
|
|
||||||
set fnord "$@" "$arg"; shift ;;
|
|
||||||
esac
|
|
||||||
done
|
|
||||||
obj_suffix=`echo "$object" | sed 's/^.*\././'`
|
|
||||||
touch "$tmpdepfile"
|
|
||||||
${MAKEDEPEND-makedepend} -o"$obj_suffix" -f"$tmpdepfile" "$@"
|
|
||||||
rm -f "$depfile"
|
|
||||||
cat < "$tmpdepfile" > "$depfile"
|
|
||||||
sed '1,2d' "$tmpdepfile" | tr ' ' '
|
|
||||||
' | \
|
|
||||||
## Some versions of the HPUX 10.20 sed can't process this invocation
|
|
||||||
## correctly. Breaking it into two sed invocations is a workaround.
|
|
||||||
sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' | sed -e 's/$/ :/' >> "$depfile"
|
|
||||||
rm -f "$tmpdepfile" "$tmpdepfile".bak
|
|
||||||
;;
|
|
||||||
|
|
||||||
cpp)
|
|
||||||
# Important note: in order to support this mode, a compiler *must*
|
|
||||||
# always write the preprocessed file to stdout.
|
|
||||||
"$@" || exit $?
|
|
||||||
|
|
||||||
# Remove the call to Libtool.
|
|
||||||
if test "$libtool" = yes; then
|
|
||||||
while test "X$1" != 'X--mode=compile'; do
|
|
||||||
shift
|
|
||||||
done
|
|
||||||
shift
|
|
||||||
fi
|
|
||||||
|
|
||||||
# Remove `-o $object'.
|
|
||||||
IFS=" "
|
|
||||||
for arg
|
|
||||||
do
|
|
||||||
case $arg in
|
|
||||||
-o)
|
|
||||||
shift
|
|
||||||
;;
|
|
||||||
$object)
|
|
||||||
shift
|
|
||||||
;;
|
|
||||||
*)
|
|
||||||
set fnord "$@" "$arg"
|
|
||||||
shift # fnord
|
|
||||||
shift # $arg
|
|
||||||
;;
|
|
||||||
esac
|
|
||||||
done
|
|
||||||
|
|
||||||
"$@" -E |
|
|
||||||
sed -n -e '/^# [0-9][0-9]* "\([^"]*\)".*/ s:: \1 \\:p' \
|
|
||||||
-e '/^#line [0-9][0-9]* "\([^"]*\)".*/ s:: \1 \\:p' |
|
|
||||||
sed '$ s: \\$::' > "$tmpdepfile"
|
|
||||||
rm -f "$depfile"
|
|
||||||
echo "$object : \\" > "$depfile"
|
|
||||||
cat < "$tmpdepfile" >> "$depfile"
|
|
||||||
sed < "$tmpdepfile" '/^$/d;s/^ //;s/ \\$//;s/$/ :/' >> "$depfile"
|
|
||||||
rm -f "$tmpdepfile"
|
|
||||||
;;
|
|
||||||
|
|
||||||
msvisualcpp)
|
|
||||||
# Important note: in order to support this mode, a compiler *must*
|
|
||||||
# always write the preprocessed file to stdout.
|
|
||||||
"$@" || exit $?
|
|
||||||
|
|
||||||
# Remove the call to Libtool.
|
|
||||||
if test "$libtool" = yes; then
|
|
||||||
while test "X$1" != 'X--mode=compile'; do
|
|
||||||
shift
|
|
||||||
done
|
|
||||||
shift
|
|
||||||
fi
|
|
||||||
|
|
||||||
IFS=" "
|
|
||||||
for arg
|
|
||||||
do
|
|
||||||
case "$arg" in
|
|
||||||
-o)
|
|
||||||
shift
|
|
||||||
;;
|
|
||||||
$object)
|
|
||||||
shift
|
|
||||||
;;
|
|
||||||
"-Gm"|"/Gm"|"-Gi"|"/Gi"|"-ZI"|"/ZI")
|
|
||||||
set fnord "$@"
|
|
||||||
shift
|
|
||||||
shift
|
|
||||||
;;
|
|
||||||
*)
|
|
||||||
set fnord "$@" "$arg"
|
|
||||||
shift
|
|
||||||
shift
|
|
||||||
;;
|
|
||||||
esac
|
|
||||||
done
|
|
||||||
"$@" -E 2>/dev/null |
|
|
||||||
sed -n '/^#line [0-9][0-9]* "\([^"]*\)"/ s::\1:p' | $cygpath_u | sort -u > "$tmpdepfile"
|
|
||||||
rm -f "$depfile"
|
|
||||||
echo "$object : \\" > "$depfile"
|
|
||||||
sed < "$tmpdepfile" -n -e 's% %\\ %g' -e '/^\(.*\)$/ s:: \1 \\:p' >> "$depfile"
|
|
||||||
echo " " >> "$depfile"
|
|
||||||
sed < "$tmpdepfile" -n -e 's% %\\ %g' -e '/^\(.*\)$/ s::\1\::p' >> "$depfile"
|
|
||||||
rm -f "$tmpdepfile"
|
|
||||||
;;
|
|
||||||
|
|
||||||
msvcmsys)
|
|
||||||
# This case exists only to let depend.m4 do its work. It works by
|
|
||||||
# looking at the text of this script. This case will never be run,
|
|
||||||
# since it is checked for above.
|
|
||||||
exit 1
|
|
||||||
;;
|
|
||||||
|
|
||||||
none)
|
|
||||||
exec "$@"
|
|
||||||
;;
|
|
||||||
|
|
||||||
*)
|
|
||||||
echo "Unknown depmode $depmode" 1>&2
|
|
||||||
exit 1
|
|
||||||
;;
|
|
||||||
esac
|
|
||||||
|
|
||||||
exit 0
|
|
||||||
|
|
||||||
# Local Variables:
|
|
||||||
# mode: shell-script
|
|
||||||
# sh-indentation: 2
|
|
||||||
# eval: (add-hook 'write-file-hooks 'time-stamp)
|
|
||||||
# time-stamp-start: "scriptversion="
|
|
||||||
# time-stamp-format: "%:y-%02m-%02d.%02H"
|
|
||||||
# time-stamp-time-zone: "UTC"
|
|
||||||
# time-stamp-end: "; # UTC"
|
|
||||||
# End:
|
|
|
@ -1,17 +0,0 @@
|
||||||
#! /bin/bash
|
|
||||||
|
|
||||||
DIRECTORY="tests"
|
|
||||||
EXT="error"
|
|
||||||
|
|
||||||
PLATFORM="$(uname)"
|
|
||||||
if [[ $PLATFORM == "Linux" ]]; then
|
|
||||||
EXT="so"
|
|
||||||
elif [[ $PLATFORM == "Darwin" ]]; then
|
|
||||||
EXT="dylib"
|
|
||||||
fi
|
|
||||||
|
|
||||||
echo "Debug: $DIRECTORY/*.$EXT"
|
|
||||||
|
|
||||||
rm -f $DIRECTORY/*.$EXT
|
|
||||||
rm -f runner
|
|
||||||
rm -f *.bmp
|
|
|
@ -1,13 +0,0 @@
|
||||||
#! /bin/bash
|
|
||||||
|
|
||||||
cp src/runner/.libs/runner .
|
|
||||||
chmod u+x runner
|
|
||||||
|
|
||||||
PLATFORM="$(uname)"
|
|
||||||
if [[ $PLATFORM == "Linux" ]]; then
|
|
||||||
cp -f src/libSDLtest/.libs/libSDLtest.so.0 /usr/local/lib
|
|
||||||
elif [[ $PLATFORM == "Darwin" ]]; then
|
|
||||||
cp -f src/libSDLtest/.libs/libSDLtest.0.dylib /usr/local/lib
|
|
||||||
fi
|
|
||||||
|
|
||||||
echo "Runner installed."
|
|
|
@ -1,520 +0,0 @@
|
||||||
#!/bin/sh
|
|
||||||
# install - install a program, script, or datafile
|
|
||||||
|
|
||||||
scriptversion=2009-04-28.21; # UTC
|
|
||||||
|
|
||||||
# This originates from X11R5 (mit/util/scripts/install.sh), which was
|
|
||||||
# later released in X11R6 (xc/config/util/install.sh) with the
|
|
||||||
# following copyright and license.
|
|
||||||
#
|
|
||||||
# Copyright (C) 1994 X Consortium
|
|
||||||
#
|
|
||||||
# Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
||||||
# of this software and associated documentation files (the "Software"), to
|
|
||||||
# deal in the Software without restriction, including without limitation the
|
|
||||||
# rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
|
|
||||||
# sell copies of the Software, and to permit persons to whom the Software is
|
|
||||||
# furnished to do so, subject to the following conditions:
|
|
||||||
#
|
|
||||||
# The above copyright notice and this permission notice shall be included in
|
|
||||||
# all copies or substantial portions of the Software.
|
|
||||||
#
|
|
||||||
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
||||||
# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
||||||
# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
||||||
# X CONSORTIUM BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
|
|
||||||
# AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNEC-
|
|
||||||
# TION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
|
||||||
#
|
|
||||||
# Except as contained in this notice, the name of the X Consortium shall not
|
|
||||||
# be used in advertising or otherwise to promote the sale, use or other deal-
|
|
||||||
# ings in this Software without prior written authorization from the X Consor-
|
|
||||||
# tium.
|
|
||||||
#
|
|
||||||
#
|
|
||||||
# FSF changes to this file are in the public domain.
|
|
||||||
#
|
|
||||||
# Calling this script install-sh is preferred over install.sh, to prevent
|
|
||||||
# `make' implicit rules from creating a file called install from it
|
|
||||||
# when there is no Makefile.
|
|
||||||
#
|
|
||||||
# This script is compatible with the BSD install script, but was written
|
|
||||||
# from scratch.
|
|
||||||
|
|
||||||
nl='
|
|
||||||
'
|
|
||||||
IFS=" "" $nl"
|
|
||||||
|
|
||||||
# set DOITPROG to echo to test this script
|
|
||||||
|
|
||||||
# Don't use :- since 4.3BSD and earlier shells don't like it.
|
|
||||||
doit=${DOITPROG-}
|
|
||||||
if test -z "$doit"; then
|
|
||||||
doit_exec=exec
|
|
||||||
else
|
|
||||||
doit_exec=$doit
|
|
||||||
fi
|
|
||||||
|
|
||||||
# Put in absolute file names if you don't have them in your path;
|
|
||||||
# or use environment vars.
|
|
||||||
|
|
||||||
chgrpprog=${CHGRPPROG-chgrp}
|
|
||||||
chmodprog=${CHMODPROG-chmod}
|
|
||||||
chownprog=${CHOWNPROG-chown}
|
|
||||||
cmpprog=${CMPPROG-cmp}
|
|
||||||
cpprog=${CPPROG-cp}
|
|
||||||
mkdirprog=${MKDIRPROG-mkdir}
|
|
||||||
mvprog=${MVPROG-mv}
|
|
||||||
rmprog=${RMPROG-rm}
|
|
||||||
stripprog=${STRIPPROG-strip}
|
|
||||||
|
|
||||||
posix_glob='?'
|
|
||||||
initialize_posix_glob='
|
|
||||||
test "$posix_glob" != "?" || {
|
|
||||||
if (set -f) 2>/dev/null; then
|
|
||||||
posix_glob=
|
|
||||||
else
|
|
||||||
posix_glob=:
|
|
||||||
fi
|
|
||||||
}
|
|
||||||
'
|
|
||||||
|
|
||||||
posix_mkdir=
|
|
||||||
|
|
||||||
# Desired mode of installed file.
|
|
||||||
mode=0755
|
|
||||||
|
|
||||||
chgrpcmd=
|
|
||||||
chmodcmd=$chmodprog
|
|
||||||
chowncmd=
|
|
||||||
mvcmd=$mvprog
|
|
||||||
rmcmd="$rmprog -f"
|
|
||||||
stripcmd=
|
|
||||||
|
|
||||||
src=
|
|
||||||
dst=
|
|
||||||
dir_arg=
|
|
||||||
dst_arg=
|
|
||||||
|
|
||||||
copy_on_change=false
|
|
||||||
no_target_directory=
|
|
||||||
|
|
||||||
usage="\
|
|
||||||
Usage: $0 [OPTION]... [-T] SRCFILE DSTFILE
|
|
||||||
or: $0 [OPTION]... SRCFILES... DIRECTORY
|
|
||||||
or: $0 [OPTION]... -t DIRECTORY SRCFILES...
|
|
||||||
or: $0 [OPTION]... -d DIRECTORIES...
|
|
||||||
|
|
||||||
In the 1st form, copy SRCFILE to DSTFILE.
|
|
||||||
In the 2nd and 3rd, copy all SRCFILES to DIRECTORY.
|
|
||||||
In the 4th, create DIRECTORIES.
|
|
||||||
|
|
||||||
Options:
|
|
||||||
--help display this help and exit.
|
|
||||||
--version display version info and exit.
|
|
||||||
|
|
||||||
-c (ignored)
|
|
||||||
-C install only if different (preserve the last data modification time)
|
|
||||||
-d create directories instead of installing files.
|
|
||||||
-g GROUP $chgrpprog installed files to GROUP.
|
|
||||||
-m MODE $chmodprog installed files to MODE.
|
|
||||||
-o USER $chownprog installed files to USER.
|
|
||||||
-s $stripprog installed files.
|
|
||||||
-t DIRECTORY install into DIRECTORY.
|
|
||||||
-T report an error if DSTFILE is a directory.
|
|
||||||
|
|
||||||
Environment variables override the default commands:
|
|
||||||
CHGRPPROG CHMODPROG CHOWNPROG CMPPROG CPPROG MKDIRPROG MVPROG
|
|
||||||
RMPROG STRIPPROG
|
|
||||||
"
|
|
||||||
|
|
||||||
while test $# -ne 0; do
|
|
||||||
case $1 in
|
|
||||||
-c) ;;
|
|
||||||
|
|
||||||
-C) copy_on_change=true;;
|
|
||||||
|
|
||||||
-d) dir_arg=true;;
|
|
||||||
|
|
||||||
-g) chgrpcmd="$chgrpprog $2"
|
|
||||||
shift;;
|
|
||||||
|
|
||||||
--help) echo "$usage"; exit $?;;
|
|
||||||
|
|
||||||
-m) mode=$2
|
|
||||||
case $mode in
|
|
||||||
*' '* | *' '* | *'
|
|
||||||
'* | *'*'* | *'?'* | *'['*)
|
|
||||||
echo "$0: invalid mode: $mode" >&2
|
|
||||||
exit 1;;
|
|
||||||
esac
|
|
||||||
shift;;
|
|
||||||
|
|
||||||
-o) chowncmd="$chownprog $2"
|
|
||||||
shift;;
|
|
||||||
|
|
||||||
-s) stripcmd=$stripprog;;
|
|
||||||
|
|
||||||
-t) dst_arg=$2
|
|
||||||
shift;;
|
|
||||||
|
|
||||||
-T) no_target_directory=true;;
|
|
||||||
|
|
||||||
--version) echo "$0 $scriptversion"; exit $?;;
|
|
||||||
|
|
||||||
--) shift
|
|
||||||
break;;
|
|
||||||
|
|
||||||
-*) echo "$0: invalid option: $1" >&2
|
|
||||||
exit 1;;
|
|
||||||
|
|
||||||
*) break;;
|
|
||||||
esac
|
|
||||||
shift
|
|
||||||
done
|
|
||||||
|
|
||||||
if test $# -ne 0 && test -z "$dir_arg$dst_arg"; then
|
|
||||||
# When -d is used, all remaining arguments are directories to create.
|
|
||||||
# When -t is used, the destination is already specified.
|
|
||||||
# Otherwise, the last argument is the destination. Remove it from $@.
|
|
||||||
for arg
|
|
||||||
do
|
|
||||||
if test -n "$dst_arg"; then
|
|
||||||
# $@ is not empty: it contains at least $arg.
|
|
||||||
set fnord "$@" "$dst_arg"
|
|
||||||
shift # fnord
|
|
||||||
fi
|
|
||||||
shift # arg
|
|
||||||
dst_arg=$arg
|
|
||||||
done
|
|
||||||
fi
|
|
||||||
|
|
||||||
if test $# -eq 0; then
|
|
||||||
if test -z "$dir_arg"; then
|
|
||||||
echo "$0: no input file specified." >&2
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
# It's OK to call `install-sh -d' without argument.
|
|
||||||
# This can happen when creating conditional directories.
|
|
||||||
exit 0
|
|
||||||
fi
|
|
||||||
|
|
||||||
if test -z "$dir_arg"; then
|
|
||||||
trap '(exit $?); exit' 1 2 13 15
|
|
||||||
|
|
||||||
# Set umask so as not to create temps with too-generous modes.
|
|
||||||
# However, 'strip' requires both read and write access to temps.
|
|
||||||
case $mode in
|
|
||||||
# Optimize common cases.
|
|
||||||
*644) cp_umask=133;;
|
|
||||||
*755) cp_umask=22;;
|
|
||||||
|
|
||||||
*[0-7])
|
|
||||||
if test -z "$stripcmd"; then
|
|
||||||
u_plus_rw=
|
|
||||||
else
|
|
||||||
u_plus_rw='% 200'
|
|
||||||
fi
|
|
||||||
cp_umask=`expr '(' 777 - $mode % 1000 ')' $u_plus_rw`;;
|
|
||||||
*)
|
|
||||||
if test -z "$stripcmd"; then
|
|
||||||
u_plus_rw=
|
|
||||||
else
|
|
||||||
u_plus_rw=,u+rw
|
|
||||||
fi
|
|
||||||
cp_umask=$mode$u_plus_rw;;
|
|
||||||
esac
|
|
||||||
fi
|
|
||||||
|
|
||||||
for src
|
|
||||||
do
|
|
||||||
# Protect names starting with `-'.
|
|
||||||
case $src in
|
|
||||||
-*) src=./$src;;
|
|
||||||
esac
|
|
||||||
|
|
||||||
if test -n "$dir_arg"; then
|
|
||||||
dst=$src
|
|
||||||
dstdir=$dst
|
|
||||||
test -d "$dstdir"
|
|
||||||
dstdir_status=$?
|
|
||||||
else
|
|
||||||
|
|
||||||
# Waiting for this to be detected by the "$cpprog $src $dsttmp" command
|
|
||||||
# might cause directories to be created, which would be especially bad
|
|
||||||
# if $src (and thus $dsttmp) contains '*'.
|
|
||||||
if test ! -f "$src" && test ! -d "$src"; then
|
|
||||||
echo "$0: $src does not exist." >&2
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
|
|
||||||
if test -z "$dst_arg"; then
|
|
||||||
echo "$0: no destination specified." >&2
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
|
|
||||||
dst=$dst_arg
|
|
||||||
# Protect names starting with `-'.
|
|
||||||
case $dst in
|
|
||||||
-*) dst=./$dst;;
|
|
||||||
esac
|
|
||||||
|
|
||||||
# If destination is a directory, append the input filename; won't work
|
|
||||||
# if double slashes aren't ignored.
|
|
||||||
if test -d "$dst"; then
|
|
||||||
if test -n "$no_target_directory"; then
|
|
||||||
echo "$0: $dst_arg: Is a directory" >&2
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
dstdir=$dst
|
|
||||||
dst=$dstdir/`basename "$src"`
|
|
||||||
dstdir_status=0
|
|
||||||
else
|
|
||||||
# Prefer dirname, but fall back on a substitute if dirname fails.
|
|
||||||
dstdir=`
|
|
||||||
(dirname "$dst") 2>/dev/null ||
|
|
||||||
expr X"$dst" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
|
|
||||||
X"$dst" : 'X\(//\)[^/]' \| \
|
|
||||||
X"$dst" : 'X\(//\)$' \| \
|
|
||||||
X"$dst" : 'X\(/\)' \| . 2>/dev/null ||
|
|
||||||
echo X"$dst" |
|
|
||||||
sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{
|
|
||||||
s//\1/
|
|
||||||
q
|
|
||||||
}
|
|
||||||
/^X\(\/\/\)[^/].*/{
|
|
||||||
s//\1/
|
|
||||||
q
|
|
||||||
}
|
|
||||||
/^X\(\/\/\)$/{
|
|
||||||
s//\1/
|
|
||||||
q
|
|
||||||
}
|
|
||||||
/^X\(\/\).*/{
|
|
||||||
s//\1/
|
|
||||||
q
|
|
||||||
}
|
|
||||||
s/.*/./; q'
|
|
||||||
`
|
|
||||||
|
|
||||||
test -d "$dstdir"
|
|
||||||
dstdir_status=$?
|
|
||||||
fi
|
|
||||||
fi
|
|
||||||
|
|
||||||
obsolete_mkdir_used=false
|
|
||||||
|
|
||||||
if test $dstdir_status != 0; then
|
|
||||||
case $posix_mkdir in
|
|
||||||
'')
|
|
||||||
# Create intermediate dirs using mode 755 as modified by the umask.
|
|
||||||
# This is like FreeBSD 'install' as of 1997-10-28.
|
|
||||||
umask=`umask`
|
|
||||||
case $stripcmd.$umask in
|
|
||||||
# Optimize common cases.
|
|
||||||
*[2367][2367]) mkdir_umask=$umask;;
|
|
||||||
.*0[02][02] | .[02][02] | .[02]) mkdir_umask=22;;
|
|
||||||
|
|
||||||
*[0-7])
|
|
||||||
mkdir_umask=`expr $umask + 22 \
|
|
||||||
- $umask % 100 % 40 + $umask % 20 \
|
|
||||||
- $umask % 10 % 4 + $umask % 2
|
|
||||||
`;;
|
|
||||||
*) mkdir_umask=$umask,go-w;;
|
|
||||||
esac
|
|
||||||
|
|
||||||
# With -d, create the new directory with the user-specified mode.
|
|
||||||
# Otherwise, rely on $mkdir_umask.
|
|
||||||
if test -n "$dir_arg"; then
|
|
||||||
mkdir_mode=-m$mode
|
|
||||||
else
|
|
||||||
mkdir_mode=
|
|
||||||
fi
|
|
||||||
|
|
||||||
posix_mkdir=false
|
|
||||||
case $umask in
|
|
||||||
*[123567][0-7][0-7])
|
|
||||||
# POSIX mkdir -p sets u+wx bits regardless of umask, which
|
|
||||||
# is incompatible with FreeBSD 'install' when (umask & 300) != 0.
|
|
||||||
;;
|
|
||||||
*)
|
|
||||||
tmpdir=${TMPDIR-/tmp}/ins$RANDOM-$$
|
|
||||||
trap 'ret=$?; rmdir "$tmpdir/d" "$tmpdir" 2>/dev/null; exit $ret' 0
|
|
||||||
|
|
||||||
if (umask $mkdir_umask &&
|
|
||||||
exec $mkdirprog $mkdir_mode -p -- "$tmpdir/d") >/dev/null 2>&1
|
|
||||||
then
|
|
||||||
if test -z "$dir_arg" || {
|
|
||||||
# Check for POSIX incompatibilities with -m.
|
|
||||||
# HP-UX 11.23 and IRIX 6.5 mkdir -m -p sets group- or
|
|
||||||
# other-writeable bit of parent directory when it shouldn't.
|
|
||||||
# FreeBSD 6.1 mkdir -m -p sets mode of existing directory.
|
|
||||||
ls_ld_tmpdir=`ls -ld "$tmpdir"`
|
|
||||||
case $ls_ld_tmpdir in
|
|
||||||
d????-?r-*) different_mode=700;;
|
|
||||||
d????-?--*) different_mode=755;;
|
|
||||||
*) false;;
|
|
||||||
esac &&
|
|
||||||
$mkdirprog -m$different_mode -p -- "$tmpdir" && {
|
|
||||||
ls_ld_tmpdir_1=`ls -ld "$tmpdir"`
|
|
||||||
test "$ls_ld_tmpdir" = "$ls_ld_tmpdir_1"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
then posix_mkdir=:
|
|
||||||
fi
|
|
||||||
rmdir "$tmpdir/d" "$tmpdir"
|
|
||||||
else
|
|
||||||
# Remove any dirs left behind by ancient mkdir implementations.
|
|
||||||
rmdir ./$mkdir_mode ./-p ./-- 2>/dev/null
|
|
||||||
fi
|
|
||||||
trap '' 0;;
|
|
||||||
esac;;
|
|
||||||
esac
|
|
||||||
|
|
||||||
if
|
|
||||||
$posix_mkdir && (
|
|
||||||
umask $mkdir_umask &&
|
|
||||||
$doit_exec $mkdirprog $mkdir_mode -p -- "$dstdir"
|
|
||||||
)
|
|
||||||
then :
|
|
||||||
else
|
|
||||||
|
|
||||||
# The umask is ridiculous, or mkdir does not conform to POSIX,
|
|
||||||
# or it failed possibly due to a race condition. Create the
|
|
||||||
# directory the slow way, step by step, checking for races as we go.
|
|
||||||
|
|
||||||
case $dstdir in
|
|
||||||
/*) prefix='/';;
|
|
||||||
-*) prefix='./';;
|
|
||||||
*) prefix='';;
|
|
||||||
esac
|
|
||||||
|
|
||||||
eval "$initialize_posix_glob"
|
|
||||||
|
|
||||||
oIFS=$IFS
|
|
||||||
IFS=/
|
|
||||||
$posix_glob set -f
|
|
||||||
set fnord $dstdir
|
|
||||||
shift
|
|
||||||
$posix_glob set +f
|
|
||||||
IFS=$oIFS
|
|
||||||
|
|
||||||
prefixes=
|
|
||||||
|
|
||||||
for d
|
|
||||||
do
|
|
||||||
test -z "$d" && continue
|
|
||||||
|
|
||||||
prefix=$prefix$d
|
|
||||||
if test -d "$prefix"; then
|
|
||||||
prefixes=
|
|
||||||
else
|
|
||||||
if $posix_mkdir; then
|
|
||||||
(umask=$mkdir_umask &&
|
|
||||||
$doit_exec $mkdirprog $mkdir_mode -p -- "$dstdir") && break
|
|
||||||
# Don't fail if two instances are running concurrently.
|
|
||||||
test -d "$prefix" || exit 1
|
|
||||||
else
|
|
||||||
case $prefix in
|
|
||||||
*\'*) qprefix=`echo "$prefix" | sed "s/'/'\\\\\\\\''/g"`;;
|
|
||||||
*) qprefix=$prefix;;
|
|
||||||
esac
|
|
||||||
prefixes="$prefixes '$qprefix'"
|
|
||||||
fi
|
|
||||||
fi
|
|
||||||
prefix=$prefix/
|
|
||||||
done
|
|
||||||
|
|
||||||
if test -n "$prefixes"; then
|
|
||||||
# Don't fail if two instances are running concurrently.
|
|
||||||
(umask $mkdir_umask &&
|
|
||||||
eval "\$doit_exec \$mkdirprog $prefixes") ||
|
|
||||||
test -d "$dstdir" || exit 1
|
|
||||||
obsolete_mkdir_used=true
|
|
||||||
fi
|
|
||||||
fi
|
|
||||||
fi
|
|
||||||
|
|
||||||
if test -n "$dir_arg"; then
|
|
||||||
{ test -z "$chowncmd" || $doit $chowncmd "$dst"; } &&
|
|
||||||
{ test -z "$chgrpcmd" || $doit $chgrpcmd "$dst"; } &&
|
|
||||||
{ test "$obsolete_mkdir_used$chowncmd$chgrpcmd" = false ||
|
|
||||||
test -z "$chmodcmd" || $doit $chmodcmd $mode "$dst"; } || exit 1
|
|
||||||
else
|
|
||||||
|
|
||||||
# Make a couple of temp file names in the proper directory.
|
|
||||||
dsttmp=$dstdir/_inst.$$_
|
|
||||||
rmtmp=$dstdir/_rm.$$_
|
|
||||||
|
|
||||||
# Trap to clean up those temp files at exit.
|
|
||||||
trap 'ret=$?; rm -f "$dsttmp" "$rmtmp" && exit $ret' 0
|
|
||||||
|
|
||||||
# Copy the file name to the temp name.
|
|
||||||
(umask $cp_umask && $doit_exec $cpprog "$src" "$dsttmp") &&
|
|
||||||
|
|
||||||
# and set any options; do chmod last to preserve setuid bits.
|
|
||||||
#
|
|
||||||
# If any of these fail, we abort the whole thing. If we want to
|
|
||||||
# ignore errors from any of these, just make sure not to ignore
|
|
||||||
# errors from the above "$doit $cpprog $src $dsttmp" command.
|
|
||||||
#
|
|
||||||
{ test -z "$chowncmd" || $doit $chowncmd "$dsttmp"; } &&
|
|
||||||
{ test -z "$chgrpcmd" || $doit $chgrpcmd "$dsttmp"; } &&
|
|
||||||
{ test -z "$stripcmd" || $doit $stripcmd "$dsttmp"; } &&
|
|
||||||
{ test -z "$chmodcmd" || $doit $chmodcmd $mode "$dsttmp"; } &&
|
|
||||||
|
|
||||||
# If -C, don't bother to copy if it wouldn't change the file.
|
|
||||||
if $copy_on_change &&
|
|
||||||
old=`LC_ALL=C ls -dlL "$dst" 2>/dev/null` &&
|
|
||||||
new=`LC_ALL=C ls -dlL "$dsttmp" 2>/dev/null` &&
|
|
||||||
|
|
||||||
eval "$initialize_posix_glob" &&
|
|
||||||
$posix_glob set -f &&
|
|
||||||
set X $old && old=:$2:$4:$5:$6 &&
|
|
||||||
set X $new && new=:$2:$4:$5:$6 &&
|
|
||||||
$posix_glob set +f &&
|
|
||||||
|
|
||||||
test "$old" = "$new" &&
|
|
||||||
$cmpprog "$dst" "$dsttmp" >/dev/null 2>&1
|
|
||||||
then
|
|
||||||
rm -f "$dsttmp"
|
|
||||||
else
|
|
||||||
# Rename the file to the real destination.
|
|
||||||
$doit $mvcmd -f "$dsttmp" "$dst" 2>/dev/null ||
|
|
||||||
|
|
||||||
# The rename failed, perhaps because mv can't rename something else
|
|
||||||
# to itself, or perhaps because mv is so ancient that it does not
|
|
||||||
# support -f.
|
|
||||||
{
|
|
||||||
# Now remove or move aside any old file at destination location.
|
|
||||||
# We try this two ways since rm can't unlink itself on some
|
|
||||||
# systems and the destination file might be busy for other
|
|
||||||
# reasons. In this case, the final cleanup might fail but the new
|
|
||||||
# file should still install successfully.
|
|
||||||
{
|
|
||||||
test ! -f "$dst" ||
|
|
||||||
$doit $rmcmd -f "$dst" 2>/dev/null ||
|
|
||||||
{ $doit $mvcmd -f "$dst" "$rmtmp" 2>/dev/null &&
|
|
||||||
{ $doit $rmcmd -f "$rmtmp" 2>/dev/null; :; }
|
|
||||||
} ||
|
|
||||||
{ echo "$0: cannot unlink or rename $dst" >&2
|
|
||||||
(exit 1); exit 1
|
|
||||||
}
|
|
||||||
} &&
|
|
||||||
|
|
||||||
# Now rename the file to the real destination.
|
|
||||||
$doit $mvcmd "$dsttmp" "$dst"
|
|
||||||
}
|
|
||||||
fi || exit 1
|
|
||||||
|
|
||||||
trap '' 0
|
|
||||||
fi
|
|
||||||
done
|
|
||||||
|
|
||||||
# Local variables:
|
|
||||||
# eval: (add-hook 'write-file-hooks 'time-stamp)
|
|
||||||
# time-stamp-start: "scriptversion="
|
|
||||||
# time-stamp-format: "%:y-%02m-%02d.%02H"
|
|
||||||
# time-stamp-time-zone: "UTC"
|
|
||||||
# time-stamp-end: "; # UTC"
|
|
||||||
# End:
|
|
|
@ -1,25 +0,0 @@
|
||||||
#! /bin/bash
|
|
||||||
|
|
||||||
DIRECTORY="tests"
|
|
||||||
EXT="error"
|
|
||||||
|
|
||||||
mkdir $DIRECTORY > /dev/null 2>&1
|
|
||||||
|
|
||||||
PLATFORM="$(uname)"
|
|
||||||
if [[ $PLATFORM == "Linux" ]]; then
|
|
||||||
EXT="so"
|
|
||||||
elif [[ $PLATFORM == "Darwin" ]]; then
|
|
||||||
EXT="dylib"
|
|
||||||
fi
|
|
||||||
|
|
||||||
# TODO: put the test in an array
|
|
||||||
for suite in "testdummy" "testplatform" "testrect" "testaudio" "testsurface" "testrwops" "testrender" "testvideo" "testsyswm" "testclipboard" "testevents" "testkeyboard"
|
|
||||||
do
|
|
||||||
cp -f "$DIRECTORY/$suite/.libs/lib$suite.$EXT" $DIRECTORY
|
|
||||||
done
|
|
||||||
|
|
||||||
echo "Test suites installed."
|
|
||||||
echo "Run './runner --show-tests' to see the available tests"
|
|
||||||
echo "and './runner' to execute them"
|
|
||||||
echo ""
|
|
||||||
echo "For more commands: './runner --help'"
|
|
File diff suppressed because it is too large
Load diff
|
@ -1,376 +0,0 @@
|
||||||
#! /bin/sh
|
|
||||||
# Common stub for a few missing GNU programs while installing.
|
|
||||||
|
|
||||||
scriptversion=2009-04-28.21; # UTC
|
|
||||||
|
|
||||||
# Copyright (C) 1996, 1997, 1999, 2000, 2002, 2003, 2004, 2005, 2006,
|
|
||||||
# 2008, 2009 Free Software Foundation, Inc.
|
|
||||||
# Originally by Fran,cois Pinard <pinard@iro.umontreal.ca>, 1996.
|
|
||||||
|
|
||||||
# This program is free software; you can redistribute it and/or modify
|
|
||||||
# it under the terms of the GNU General Public License as published by
|
|
||||||
# the Free Software Foundation; either version 2, or (at your option)
|
|
||||||
# any later version.
|
|
||||||
|
|
||||||
# This program is distributed in the hope that it will be useful,
|
|
||||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
||||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
||||||
# GNU General Public License for more details.
|
|
||||||
|
|
||||||
# You should have received a copy of the GNU General Public License
|
|
||||||
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
|
||||||
|
|
||||||
# As a special exception to the GNU General Public License, if you
|
|
||||||
# distribute this file as part of a program that contains a
|
|
||||||
# configuration script generated by Autoconf, you may include it under
|
|
||||||
# the same distribution terms that you use for the rest of that program.
|
|
||||||
|
|
||||||
if test $# -eq 0; then
|
|
||||||
echo 1>&2 "Try \`$0 --help' for more information"
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
|
|
||||||
run=:
|
|
||||||
sed_output='s/.* --output[ =]\([^ ]*\).*/\1/p'
|
|
||||||
sed_minuso='s/.* -o \([^ ]*\).*/\1/p'
|
|
||||||
|
|
||||||
# In the cases where this matters, `missing' is being run in the
|
|
||||||
# srcdir already.
|
|
||||||
if test -f configure.ac; then
|
|
||||||
configure_ac=configure.ac
|
|
||||||
else
|
|
||||||
configure_ac=configure.in
|
|
||||||
fi
|
|
||||||
|
|
||||||
msg="missing on your system"
|
|
||||||
|
|
||||||
case $1 in
|
|
||||||
--run)
|
|
||||||
# Try to run requested program, and just exit if it succeeds.
|
|
||||||
run=
|
|
||||||
shift
|
|
||||||
"$@" && exit 0
|
|
||||||
# Exit code 63 means version mismatch. This often happens
|
|
||||||
# when the user try to use an ancient version of a tool on
|
|
||||||
# a file that requires a minimum version. In this case we
|
|
||||||
# we should proceed has if the program had been absent, or
|
|
||||||
# if --run hadn't been passed.
|
|
||||||
if test $? = 63; then
|
|
||||||
run=:
|
|
||||||
msg="probably too old"
|
|
||||||
fi
|
|
||||||
;;
|
|
||||||
|
|
||||||
-h|--h|--he|--hel|--help)
|
|
||||||
echo "\
|
|
||||||
$0 [OPTION]... PROGRAM [ARGUMENT]...
|
|
||||||
|
|
||||||
Handle \`PROGRAM [ARGUMENT]...' for when PROGRAM is missing, or return an
|
|
||||||
error status if there is no known handling for PROGRAM.
|
|
||||||
|
|
||||||
Options:
|
|
||||||
-h, --help display this help and exit
|
|
||||||
-v, --version output version information and exit
|
|
||||||
--run try to run the given command, and emulate it if it fails
|
|
||||||
|
|
||||||
Supported PROGRAM values:
|
|
||||||
aclocal touch file \`aclocal.m4'
|
|
||||||
autoconf touch file \`configure'
|
|
||||||
autoheader touch file \`config.h.in'
|
|
||||||
autom4te touch the output file, or create a stub one
|
|
||||||
automake touch all \`Makefile.in' files
|
|
||||||
bison create \`y.tab.[ch]', if possible, from existing .[ch]
|
|
||||||
flex create \`lex.yy.c', if possible, from existing .c
|
|
||||||
help2man touch the output file
|
|
||||||
lex create \`lex.yy.c', if possible, from existing .c
|
|
||||||
makeinfo touch the output file
|
|
||||||
tar try tar, gnutar, gtar, then tar without non-portable flags
|
|
||||||
yacc create \`y.tab.[ch]', if possible, from existing .[ch]
|
|
||||||
|
|
||||||
Version suffixes to PROGRAM as well as the prefixes \`gnu-', \`gnu', and
|
|
||||||
\`g' are ignored when checking the name.
|
|
||||||
|
|
||||||
Send bug reports to <bug-automake@gnu.org>."
|
|
||||||
exit $?
|
|
||||||
;;
|
|
||||||
|
|
||||||
-v|--v|--ve|--ver|--vers|--versi|--versio|--version)
|
|
||||||
echo "missing $scriptversion (GNU Automake)"
|
|
||||||
exit $?
|
|
||||||
;;
|
|
||||||
|
|
||||||
-*)
|
|
||||||
echo 1>&2 "$0: Unknown \`$1' option"
|
|
||||||
echo 1>&2 "Try \`$0 --help' for more information"
|
|
||||||
exit 1
|
|
||||||
;;
|
|
||||||
|
|
||||||
esac
|
|
||||||
|
|
||||||
# normalize program name to check for.
|
|
||||||
program=`echo "$1" | sed '
|
|
||||||
s/^gnu-//; t
|
|
||||||
s/^gnu//; t
|
|
||||||
s/^g//; t'`
|
|
||||||
|
|
||||||
# Now exit if we have it, but it failed. Also exit now if we
|
|
||||||
# don't have it and --version was passed (most likely to detect
|
|
||||||
# the program). This is about non-GNU programs, so use $1 not
|
|
||||||
# $program.
|
|
||||||
case $1 in
|
|
||||||
lex*|yacc*)
|
|
||||||
# Not GNU programs, they don't have --version.
|
|
||||||
;;
|
|
||||||
|
|
||||||
tar*)
|
|
||||||
if test -n "$run"; then
|
|
||||||
echo 1>&2 "ERROR: \`tar' requires --run"
|
|
||||||
exit 1
|
|
||||||
elif test "x$2" = "x--version" || test "x$2" = "x--help"; then
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
;;
|
|
||||||
|
|
||||||
*)
|
|
||||||
if test -z "$run" && ($1 --version) > /dev/null 2>&1; then
|
|
||||||
# We have it, but it failed.
|
|
||||||
exit 1
|
|
||||||
elif test "x$2" = "x--version" || test "x$2" = "x--help"; then
|
|
||||||
# Could not run --version or --help. This is probably someone
|
|
||||||
# running `$TOOL --version' or `$TOOL --help' to check whether
|
|
||||||
# $TOOL exists and not knowing $TOOL uses missing.
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
;;
|
|
||||||
esac
|
|
||||||
|
|
||||||
# If it does not exist, or fails to run (possibly an outdated version),
|
|
||||||
# try to emulate it.
|
|
||||||
case $program in
|
|
||||||
aclocal*)
|
|
||||||
echo 1>&2 "\
|
|
||||||
WARNING: \`$1' is $msg. You should only need it if
|
|
||||||
you modified \`acinclude.m4' or \`${configure_ac}'. You might want
|
|
||||||
to install the \`Automake' and \`Perl' packages. Grab them from
|
|
||||||
any GNU archive site."
|
|
||||||
touch aclocal.m4
|
|
||||||
;;
|
|
||||||
|
|
||||||
autoconf*)
|
|
||||||
echo 1>&2 "\
|
|
||||||
WARNING: \`$1' is $msg. You should only need it if
|
|
||||||
you modified \`${configure_ac}'. You might want to install the
|
|
||||||
\`Autoconf' and \`GNU m4' packages. Grab them from any GNU
|
|
||||||
archive site."
|
|
||||||
touch configure
|
|
||||||
;;
|
|
||||||
|
|
||||||
autoheader*)
|
|
||||||
echo 1>&2 "\
|
|
||||||
WARNING: \`$1' is $msg. You should only need it if
|
|
||||||
you modified \`acconfig.h' or \`${configure_ac}'. You might want
|
|
||||||
to install the \`Autoconf' and \`GNU m4' packages. Grab them
|
|
||||||
from any GNU archive site."
|
|
||||||
files=`sed -n 's/^[ ]*A[CM]_CONFIG_HEADER(\([^)]*\)).*/\1/p' ${configure_ac}`
|
|
||||||
test -z "$files" && files="config.h"
|
|
||||||
touch_files=
|
|
||||||
for f in $files; do
|
|
||||||
case $f in
|
|
||||||
*:*) touch_files="$touch_files "`echo "$f" |
|
|
||||||
sed -e 's/^[^:]*://' -e 's/:.*//'`;;
|
|
||||||
*) touch_files="$touch_files $f.in";;
|
|
||||||
esac
|
|
||||||
done
|
|
||||||
touch $touch_files
|
|
||||||
;;
|
|
||||||
|
|
||||||
automake*)
|
|
||||||
echo 1>&2 "\
|
|
||||||
WARNING: \`$1' is $msg. You should only need it if
|
|
||||||
you modified \`Makefile.am', \`acinclude.m4' or \`${configure_ac}'.
|
|
||||||
You might want to install the \`Automake' and \`Perl' packages.
|
|
||||||
Grab them from any GNU archive site."
|
|
||||||
find . -type f -name Makefile.am -print |
|
|
||||||
sed 's/\.am$/.in/' |
|
|
||||||
while read f; do touch "$f"; done
|
|
||||||
;;
|
|
||||||
|
|
||||||
autom4te*)
|
|
||||||
echo 1>&2 "\
|
|
||||||
WARNING: \`$1' is needed, but is $msg.
|
|
||||||
You might have modified some files without having the
|
|
||||||
proper tools for further handling them.
|
|
||||||
You can get \`$1' as part of \`Autoconf' from any GNU
|
|
||||||
archive site."
|
|
||||||
|
|
||||||
file=`echo "$*" | sed -n "$sed_output"`
|
|
||||||
test -z "$file" && file=`echo "$*" | sed -n "$sed_minuso"`
|
|
||||||
if test -f "$file"; then
|
|
||||||
touch $file
|
|
||||||
else
|
|
||||||
test -z "$file" || exec >$file
|
|
||||||
echo "#! /bin/sh"
|
|
||||||
echo "# Created by GNU Automake missing as a replacement of"
|
|
||||||
echo "# $ $@"
|
|
||||||
echo "exit 0"
|
|
||||||
chmod +x $file
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
;;
|
|
||||||
|
|
||||||
bison*|yacc*)
|
|
||||||
echo 1>&2 "\
|
|
||||||
WARNING: \`$1' $msg. You should only need it if
|
|
||||||
you modified a \`.y' file. You may need the \`Bison' package
|
|
||||||
in order for those modifications to take effect. You can get
|
|
||||||
\`Bison' from any GNU archive site."
|
|
||||||
rm -f y.tab.c y.tab.h
|
|
||||||
if test $# -ne 1; then
|
|
||||||
eval LASTARG="\${$#}"
|
|
||||||
case $LASTARG in
|
|
||||||
*.y)
|
|
||||||
SRCFILE=`echo "$LASTARG" | sed 's/y$/c/'`
|
|
||||||
if test -f "$SRCFILE"; then
|
|
||||||
cp "$SRCFILE" y.tab.c
|
|
||||||
fi
|
|
||||||
SRCFILE=`echo "$LASTARG" | sed 's/y$/h/'`
|
|
||||||
if test -f "$SRCFILE"; then
|
|
||||||
cp "$SRCFILE" y.tab.h
|
|
||||||
fi
|
|
||||||
;;
|
|
||||||
esac
|
|
||||||
fi
|
|
||||||
if test ! -f y.tab.h; then
|
|
||||||
echo >y.tab.h
|
|
||||||
fi
|
|
||||||
if test ! -f y.tab.c; then
|
|
||||||
echo 'main() { return 0; }' >y.tab.c
|
|
||||||
fi
|
|
||||||
;;
|
|
||||||
|
|
||||||
lex*|flex*)
|
|
||||||
echo 1>&2 "\
|
|
||||||
WARNING: \`$1' is $msg. You should only need it if
|
|
||||||
you modified a \`.l' file. You may need the \`Flex' package
|
|
||||||
in order for those modifications to take effect. You can get
|
|
||||||
\`Flex' from any GNU archive site."
|
|
||||||
rm -f lex.yy.c
|
|
||||||
if test $# -ne 1; then
|
|
||||||
eval LASTARG="\${$#}"
|
|
||||||
case $LASTARG in
|
|
||||||
*.l)
|
|
||||||
SRCFILE=`echo "$LASTARG" | sed 's/l$/c/'`
|
|
||||||
if test -f "$SRCFILE"; then
|
|
||||||
cp "$SRCFILE" lex.yy.c
|
|
||||||
fi
|
|
||||||
;;
|
|
||||||
esac
|
|
||||||
fi
|
|
||||||
if test ! -f lex.yy.c; then
|
|
||||||
echo 'main() { return 0; }' >lex.yy.c
|
|
||||||
fi
|
|
||||||
;;
|
|
||||||
|
|
||||||
help2man*)
|
|
||||||
echo 1>&2 "\
|
|
||||||
WARNING: \`$1' is $msg. You should only need it if
|
|
||||||
you modified a dependency of a manual page. You may need the
|
|
||||||
\`Help2man' package in order for those modifications to take
|
|
||||||
effect. You can get \`Help2man' from any GNU archive site."
|
|
||||||
|
|
||||||
file=`echo "$*" | sed -n "$sed_output"`
|
|
||||||
test -z "$file" && file=`echo "$*" | sed -n "$sed_minuso"`
|
|
||||||
if test -f "$file"; then
|
|
||||||
touch $file
|
|
||||||
else
|
|
||||||
test -z "$file" || exec >$file
|
|
||||||
echo ".ab help2man is required to generate this page"
|
|
||||||
exit $?
|
|
||||||
fi
|
|
||||||
;;
|
|
||||||
|
|
||||||
makeinfo*)
|
|
||||||
echo 1>&2 "\
|
|
||||||
WARNING: \`$1' is $msg. You should only need it if
|
|
||||||
you modified a \`.texi' or \`.texinfo' file, or any other file
|
|
||||||
indirectly affecting the aspect of the manual. The spurious
|
|
||||||
call might also be the consequence of using a buggy \`make' (AIX,
|
|
||||||
DU, IRIX). You might want to install the \`Texinfo' package or
|
|
||||||
the \`GNU make' package. Grab either from any GNU archive site."
|
|
||||||
# The file to touch is that specified with -o ...
|
|
||||||
file=`echo "$*" | sed -n "$sed_output"`
|
|
||||||
test -z "$file" && file=`echo "$*" | sed -n "$sed_minuso"`
|
|
||||||
if test -z "$file"; then
|
|
||||||
# ... or it is the one specified with @setfilename ...
|
|
||||||
infile=`echo "$*" | sed 's/.* \([^ ]*\) *$/\1/'`
|
|
||||||
file=`sed -n '
|
|
||||||
/^@setfilename/{
|
|
||||||
s/.* \([^ ]*\) *$/\1/
|
|
||||||
p
|
|
||||||
q
|
|
||||||
}' $infile`
|
|
||||||
# ... or it is derived from the source name (dir/f.texi becomes f.info)
|
|
||||||
test -z "$file" && file=`echo "$infile" | sed 's,.*/,,;s,.[^.]*$,,'`.info
|
|
||||||
fi
|
|
||||||
# If the file does not exist, the user really needs makeinfo;
|
|
||||||
# let's fail without touching anything.
|
|
||||||
test -f $file || exit 1
|
|
||||||
touch $file
|
|
||||||
;;
|
|
||||||
|
|
||||||
tar*)
|
|
||||||
shift
|
|
||||||
|
|
||||||
# We have already tried tar in the generic part.
|
|
||||||
# Look for gnutar/gtar before invocation to avoid ugly error
|
|
||||||
# messages.
|
|
||||||
if (gnutar --version > /dev/null 2>&1); then
|
|
||||||
gnutar "$@" && exit 0
|
|
||||||
fi
|
|
||||||
if (gtar --version > /dev/null 2>&1); then
|
|
||||||
gtar "$@" && exit 0
|
|
||||||
fi
|
|
||||||
firstarg="$1"
|
|
||||||
if shift; then
|
|
||||||
case $firstarg in
|
|
||||||
*o*)
|
|
||||||
firstarg=`echo "$firstarg" | sed s/o//`
|
|
||||||
tar "$firstarg" "$@" && exit 0
|
|
||||||
;;
|
|
||||||
esac
|
|
||||||
case $firstarg in
|
|
||||||
*h*)
|
|
||||||
firstarg=`echo "$firstarg" | sed s/h//`
|
|
||||||
tar "$firstarg" "$@" && exit 0
|
|
||||||
;;
|
|
||||||
esac
|
|
||||||
fi
|
|
||||||
|
|
||||||
echo 1>&2 "\
|
|
||||||
WARNING: I can't seem to be able to run \`tar' with the given arguments.
|
|
||||||
You may want to install GNU tar or Free paxutils, or check the
|
|
||||||
command line arguments."
|
|
||||||
exit 1
|
|
||||||
;;
|
|
||||||
|
|
||||||
*)
|
|
||||||
echo 1>&2 "\
|
|
||||||
WARNING: \`$1' is needed, and is $msg.
|
|
||||||
You might have modified some files without having the
|
|
||||||
proper tools for further handling them. Check the \`README' file,
|
|
||||||
it often tells you about the needed prerequisites for installing
|
|
||||||
this package. You may also peek at any GNU archive site, in case
|
|
||||||
some other package would contain this missing \`$1' program."
|
|
||||||
exit 1
|
|
||||||
;;
|
|
||||||
esac
|
|
||||||
|
|
||||||
exit 0
|
|
||||||
|
|
||||||
# Local variables:
|
|
||||||
# eval: (add-hook 'write-file-hooks 'time-stamp)
|
|
||||||
# time-stamp-start: "scriptversion="
|
|
||||||
# time-stamp-format: "%:y-%02m-%02d.%02H"
|
|
||||||
# time-stamp-time-zone: "UTC"
|
|
||||||
# time-stamp-end: "; # UTC"
|
|
||||||
# End:
|
|
|
@ -1,86 +0,0 @@
|
||||||
/* config.h.in. Generated from configure.ac by autoheader. */
|
|
||||||
|
|
||||||
/* Define to 1 if you have the <dlfcn.h> header file. */
|
|
||||||
#undef HAVE_DLFCN_H
|
|
||||||
|
|
||||||
/* Define to 1 if you have the `fork' function. */
|
|
||||||
#undef HAVE_FORK
|
|
||||||
|
|
||||||
/* Define to 1 if you have the <inttypes.h> header file. */
|
|
||||||
#undef HAVE_INTTYPES_H
|
|
||||||
|
|
||||||
/* Define to 1 if you have the <memory.h> header file. */
|
|
||||||
#undef HAVE_MEMORY_H
|
|
||||||
|
|
||||||
/* Define to 1 if you have the <stdint.h> header file. */
|
|
||||||
#undef HAVE_STDINT_H
|
|
||||||
|
|
||||||
/* Define to 1 if you have the <stdlib.h> header file. */
|
|
||||||
#undef HAVE_STDLIB_H
|
|
||||||
|
|
||||||
/* Define to 1 if you have the <strings.h> header file. */
|
|
||||||
#undef HAVE_STRINGS_H
|
|
||||||
|
|
||||||
/* Define to 1 if you have the <string.h> header file. */
|
|
||||||
#undef HAVE_STRING_H
|
|
||||||
|
|
||||||
/* Define to 1 if you have the <sys/stat.h> header file. */
|
|
||||||
#undef HAVE_SYS_STAT_H
|
|
||||||
|
|
||||||
/* Define to 1 if you have the <sys/types.h> header file. */
|
|
||||||
#undef HAVE_SYS_TYPES_H
|
|
||||||
|
|
||||||
/* Define to 1 if you have the <unistd.h> header file. */
|
|
||||||
#undef HAVE_UNISTD_H
|
|
||||||
|
|
||||||
/* Define to 1 if you have the `vfork' function. */
|
|
||||||
#undef HAVE_VFORK
|
|
||||||
|
|
||||||
/* Define to 1 if you have the <vfork.h> header file. */
|
|
||||||
#undef HAVE_VFORK_H
|
|
||||||
|
|
||||||
/* Define to 1 if `fork' works. */
|
|
||||||
#undef HAVE_WORKING_FORK
|
|
||||||
|
|
||||||
/* Define to 1 if `vfork' works. */
|
|
||||||
#undef HAVE_WORKING_VFORK
|
|
||||||
|
|
||||||
/* Define to the sub-directory in which libtool stores uninstalled libraries.
|
|
||||||
*/
|
|
||||||
#undef LT_OBJDIR
|
|
||||||
|
|
||||||
/* Define to 1 if your C compiler doesn't accept -c and -o together. */
|
|
||||||
#undef NO_MINUS_C_MINUS_O
|
|
||||||
|
|
||||||
/* Name of package */
|
|
||||||
#undef PACKAGE
|
|
||||||
|
|
||||||
/* Define to the address where bug reports for this package should be sent. */
|
|
||||||
#undef PACKAGE_BUGREPORT
|
|
||||||
|
|
||||||
/* Define to the full name of this package. */
|
|
||||||
#undef PACKAGE_NAME
|
|
||||||
|
|
||||||
/* Define to the full name and version of this package. */
|
|
||||||
#undef PACKAGE_STRING
|
|
||||||
|
|
||||||
/* Define to the one symbol short name of this package. */
|
|
||||||
#undef PACKAGE_TARNAME
|
|
||||||
|
|
||||||
/* Define to the home page for this package. */
|
|
||||||
#undef PACKAGE_URL
|
|
||||||
|
|
||||||
/* Define to the version of this package. */
|
|
||||||
#undef PACKAGE_VERSION
|
|
||||||
|
|
||||||
/* Define to 1 if you have the ANSI C header files. */
|
|
||||||
#undef STDC_HEADERS
|
|
||||||
|
|
||||||
/* Version number of package */
|
|
||||||
#undef VERSION
|
|
||||||
|
|
||||||
/* Define to `int' if <sys/types.h> does not define. */
|
|
||||||
#undef pid_t
|
|
||||||
|
|
||||||
/* Define as `fork' if `vfork' does not work. */
|
|
||||||
#undef vfork
|
|
|
@ -1,57 +0,0 @@
|
||||||
# -*- Autoconf -*-
|
|
||||||
# Process this file with autoconf to produce a configure script.
|
|
||||||
|
|
||||||
AC_PREREQ([2.65])
|
|
||||||
AC_INIT([runner], [0.01], [markus.kauppila@gmail.com])
|
|
||||||
AC_CONFIG_SRCDIR([src/runner/runner.c])
|
|
||||||
AC_CONFIG_HEADERS([config.h])
|
|
||||||
AC_CONFIG_MACRO_DIR(acinclude)
|
|
||||||
AC_CONFIG_AUX_DIR(build-scripts)
|
|
||||||
|
|
||||||
AM_INIT_AUTOMAKE
|
|
||||||
|
|
||||||
#libdir="$(pwd)/tests"
|
|
||||||
#AC_SUBST([libdir])
|
|
||||||
|
|
||||||
# Checks for programs.
|
|
||||||
AC_PROG_CC
|
|
||||||
AC_PROG_INSTALL
|
|
||||||
AC_PROG_LIBTOOL
|
|
||||||
AM_PROG_CC_C_O
|
|
||||||
|
|
||||||
# Checks for libraries.
|
|
||||||
|
|
||||||
# Checks for header files.
|
|
||||||
AC_CHECK_HEADERS([stdlib.h unistd.h])
|
|
||||||
|
|
||||||
# Checks for typedefs, structures, and compiler characteristics.
|
|
||||||
|
|
||||||
# without this debugging information will be stripped (at least on OS X)
|
|
||||||
CFLAGS="-g"
|
|
||||||
|
|
||||||
# Checks for library functions.
|
|
||||||
AC_FUNC_FORK
|
|
||||||
|
|
||||||
AC_CONFIG_FILES([Makefile
|
|
||||||
src/runner/Makefile
|
|
||||||
src/libSDLtest/Makefile
|
|
||||||
tests/testdummy/Makefile
|
|
||||||
tests/testrect/Makefile
|
|
||||||
tests/testplatform/Makefile
|
|
||||||
tests/testaudio/Makefile
|
|
||||||
tests/testsurface/Makefile
|
|
||||||
tests/testrwops/Makefile
|
|
||||||
tests/testvideo/Makefile
|
|
||||||
tests/testsyswm/Makefile
|
|
||||||
tests/testclipboard/Makefile
|
|
||||||
tests/testevents/Makefile
|
|
||||||
tests/testkeyboard/Makefile
|
|
||||||
tests/testrender/Makefile])
|
|
||||||
|
|
||||||
AC_OUTPUT
|
|
||||||
|
|
||||||
echo ""
|
|
||||||
echo "========================================"
|
|
||||||
echo ""
|
|
||||||
echo "./configure ready!"
|
|
||||||
echo "you're ready to run: 'make && sudo make install'"
|
|
Binary file not shown.
Before Width: | Height: | Size: 578 B |
|
@ -1,123 +0,0 @@
|
||||||
/*
|
|
||||||
Copyright (C) 2011 Markus Kauppila <markus.kauppila@gmail.com>
|
|
||||||
|
|
||||||
This software is provided 'as-is', without any express or implied
|
|
||||||
warranty. In no event will the authors be held liable for any damages
|
|
||||||
arising from the use of this software.
|
|
||||||
|
|
||||||
Permission is granted to anyone to use this software for any purpose,
|
|
||||||
including commercial applications, and to alter it and redistribute it
|
|
||||||
freely, subject to the following restrictions:
|
|
||||||
|
|
||||||
1. The origin of this software must not be misrepresented; you must not
|
|
||||||
claim that you wrote the original software. If you use this software
|
|
||||||
in a product, an acknowledgment in the product documentation would be
|
|
||||||
appreciated but is not required.
|
|
||||||
2. Altered source versions must be plainly marked as such, and must not be
|
|
||||||
misrepresented as being the original software.
|
|
||||||
3. This notice may not be removed or altered from any source distribution.
|
|
||||||
*/
|
|
||||||
|
|
||||||
#ifndef _SDL_TEST_H
|
|
||||||
#define _SDL_TEST_H
|
|
||||||
|
|
||||||
#include "../src/runner/logger.h"
|
|
||||||
|
|
||||||
#include "../src/libSDLtest/common/common.h"
|
|
||||||
#include "../src/libSDLtest/common/images.h"
|
|
||||||
#include "../src/libSDLtest/fuzzer/fuzzer.h"
|
|
||||||
|
|
||||||
#define TEST_ENABLED 1
|
|
||||||
#define TEST_DISABLED 0
|
|
||||||
|
|
||||||
//! Definitions of assert results
|
|
||||||
#define ASSERT_PASS 1
|
|
||||||
#define ASSERT_FAILURE 0
|
|
||||||
|
|
||||||
//! Definition of all the possible test results
|
|
||||||
#define TEST_RESULT_PASS 0
|
|
||||||
#define TEST_RESULT_FAILURE 1
|
|
||||||
#define TEST_RESULT_NO_ASSERT 2
|
|
||||||
#define TEST_RESULT_SKIPPED 3
|
|
||||||
#define TEST_RESULT_KILLED 4
|
|
||||||
#define TEST_RESULT_SETUP_FAILURE 5
|
|
||||||
|
|
||||||
//! Definitions for test requirements
|
|
||||||
#define TEST_REQUIRES_AUDIO 1
|
|
||||||
//! Defines that the a test requires STDIO
|
|
||||||
#define TEST_REQUIRES_STDIO 1
|
|
||||||
|
|
||||||
/*!
|
|
||||||
* Holds information about a test case
|
|
||||||
*/
|
|
||||||
typedef struct TestCaseReference {
|
|
||||||
/*!< "Func2Stress" */
|
|
||||||
char *name;
|
|
||||||
/*!< "This test beats the crap out of func2()" */
|
|
||||||
char *description;
|
|
||||||
/*!< Set to TEST_ENABLED or TEST_DISABLED */
|
|
||||||
int enabled;
|
|
||||||
/*!< Set to TEST_REQUIRES_OPENGL, TEST_REQUIRES_AUDIO, ... */
|
|
||||||
long requirements;
|
|
||||||
/*<! Timeout value in seconds. If exceeded runner will kill the test. 0 means infinite time */
|
|
||||||
long timeout;
|
|
||||||
} TestCaseReference;
|
|
||||||
|
|
||||||
/*!
|
|
||||||
* Initialized the test environment such as asserts. Must be called at
|
|
||||||
* the beginning of every test case, before doing anything else.
|
|
||||||
*
|
|
||||||
* \param execKey Execution key for the test
|
|
||||||
* \param inproc Whether tests are run in-process or not
|
|
||||||
*/
|
|
||||||
void _InitTestEnvironment(Uint64 execKey, SDL_bool inproc);
|
|
||||||
|
|
||||||
/*!
|
|
||||||
* Deinitializes the test environment and
|
|
||||||
* returns the result of the test (pass or failure)
|
|
||||||
*
|
|
||||||
* \return 0 if test succeeded, otherwise 1
|
|
||||||
*/
|
|
||||||
int _QuitTestEnvironment();
|
|
||||||
|
|
||||||
/*!
|
|
||||||
* Can be used to query the number of failed asserts
|
|
||||||
* \return Returns the failed assert count.
|
|
||||||
*/
|
|
||||||
int _CountFailedAsserts();
|
|
||||||
|
|
||||||
/*!
|
|
||||||
* Assert function. Tests if the expected value equals the actual value, then
|
|
||||||
* the test assert succeeds, otherwise it fails and warns about it.
|
|
||||||
*
|
|
||||||
* \param expected Value user expects to have
|
|
||||||
* \param actual The actual value of tested variable
|
|
||||||
* \param message Message that will be printed
|
|
||||||
*/
|
|
||||||
void AssertEquals(int expected, int actual, char *message, ...);
|
|
||||||
|
|
||||||
/*!
|
|
||||||
* Assert function. Tests if the given condition is true. True in
|
|
||||||
* this case means non-zero value. If the condition is true, the
|
|
||||||
* assert passes, otherwise it fails.
|
|
||||||
*
|
|
||||||
* \param condition Condition which will be evaluated
|
|
||||||
* \param message Message that will be printed
|
|
||||||
*/
|
|
||||||
void AssertTrue(int condition, char *message, ...);
|
|
||||||
|
|
||||||
/*!
|
|
||||||
* Assert function which will always fail
|
|
||||||
*
|
|
||||||
* \param message Message that will be printed
|
|
||||||
*/
|
|
||||||
void AssertFail(char *message, ...);
|
|
||||||
|
|
||||||
/*!
|
|
||||||
* Assert function which will always pass
|
|
||||||
*
|
|
||||||
* \param message Message that will be printed
|
|
||||||
*/
|
|
||||||
void AssertPass(char *message, ...);
|
|
||||||
|
|
||||||
#endif
|
|
|
@ -1,158 +0,0 @@
|
||||||
<?xml version="1.0" encoding="ISO-8859-1"?>
|
|
||||||
<xsl:stylesheet version="1.0"
|
|
||||||
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
|
|
||||||
|
|
||||||
<xsl:template match="/">
|
|
||||||
|
|
||||||
<html>
|
|
||||||
<head>
|
|
||||||
<title>Test report</title>
|
|
||||||
|
|
||||||
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.6.1/jquery.min.js"/>
|
|
||||||
|
|
||||||
<script type="text/javascript">
|
|
||||||
|
|
||||||
var hideTests = '[Hide tests]';
|
|
||||||
var showTests = '[Show tests]';
|
|
||||||
|
|
||||||
var hideAsserts = '[Hide Assert Summary]';
|
|
||||||
var showAsserts = '[Show Assert Summary]';
|
|
||||||
|
|
||||||
var hideAllTests = '[Hide All Tests]';
|
|
||||||
var showAllTests = '[Show All Tests]';
|
|
||||||
|
|
||||||
var hideEverything = '[Hide Everything]';
|
|
||||||
var showEverything = '[Show Everything]';
|
|
||||||
|
|
||||||
var animationSpeed = 'fast';
|
|
||||||
|
|
||||||
$(document).ready(function() {
|
|
||||||
$("span.show-tests").click(function() {
|
|
||||||
var content = $(this).html();
|
|
||||||
var id = $(this).attr('uid');
|
|
||||||
var searchString = "div.tests[uid="+id+"]";
|
|
||||||
|
|
||||||
if(content == hideTests) {
|
|
||||||
$(searchString).hide(animationSpeed);
|
|
||||||
$(this).text(showTests);
|
|
||||||
} else {
|
|
||||||
$(searchString).show(animationSpeed);
|
|
||||||
$(this).text(hideTests);
|
|
||||||
}
|
|
||||||
});
|
|
||||||
|
|
||||||
$("span.show-asserts").click(function() {
|
|
||||||
var content = $(this).html();
|
|
||||||
var id = $(this).attr('uid');
|
|
||||||
var searchString = "div.asserts[uid="+id+"]";
|
|
||||||
|
|
||||||
if(content == hideAsserts) {
|
|
||||||
$(searchString).hide(animationSpeed);
|
|
||||||
$(this).text(showAsserts);
|
|
||||||
} else {
|
|
||||||
$(searchString).show(animationSpeed);
|
|
||||||
$(this).text(hideAsserts);
|
|
||||||
}
|
|
||||||
});
|
|
||||||
|
|
||||||
$("span.show-all-tests").click(function() {
|
|
||||||
var content = $(this).html();
|
|
||||||
var searchString = "div.tests";
|
|
||||||
|
|
||||||
if(content == hideAllTests) {
|
|
||||||
$(searchString).hide(animationSpeed);
|
|
||||||
$(this).text(showAllTests);
|
|
||||||
|
|
||||||
/* handle the individual '[show tests]' switcher */
|
|
||||||
$("span.show-tests[uid]").text(showTests);
|
|
||||||
} else {
|
|
||||||
$(searchString).show(animationSpeed);
|
|
||||||
$(this).text(hideAllTests);
|
|
||||||
|
|
||||||
/* handle the individual '[show tests]' switcher */
|
|
||||||
$("span.show-tests[uid]").text(hideTests);
|
|
||||||
}
|
|
||||||
});
|
|
||||||
|
|
||||||
$("span.show-everything").click(function() {
|
|
||||||
var content = $(this).html();
|
|
||||||
var searchString = "div.tests";
|
|
||||||
|
|
||||||
if(content == hideEverything) {
|
|
||||||
$("div.tests").hide(animationSpeed);
|
|
||||||
$("div.asserts").hide(animationSpeed);
|
|
||||||
$(this).text(showEverything);
|
|
||||||
|
|
||||||
/* handle the individual switchers */
|
|
||||||
$("span.show-tests[uid]").text(showTests);
|
|
||||||
$("span.show-asserts[uid]").text(showAsserts);
|
|
||||||
} else {
|
|
||||||
$("div.tests").show(animationSpeed);
|
|
||||||
$("div.asserts").show(animationSpeed);
|
|
||||||
$(this).text(hideEverything);
|
|
||||||
|
|
||||||
/* handle the individual switchers */
|
|
||||||
$("span.show-tests[uid]").text(hideTests);
|
|
||||||
$("span.show-asserts[uid]").text(hideAsserts);
|
|
||||||
}
|
|
||||||
});
|
|
||||||
|
|
||||||
/* Initially everything is hidden */
|
|
||||||
$("div.tests").hide();
|
|
||||||
$("div.asserts").hide();
|
|
||||||
|
|
||||||
/* Color the tests based on the result */
|
|
||||||
$("div.test[result='passed']").addClass('passed');
|
|
||||||
$("div.test[result='failed']").addClass('failed');
|
|
||||||
|
|
||||||
/* Color the asserts based on the result */
|
|
||||||
$("div.assert[result='pass']").addClass('passed');
|
|
||||||
$("div.assert[result='failure']").addClass('failed');
|
|
||||||
});
|
|
||||||
|
|
||||||
</script>
|
|
||||||
<style>
|
|
||||||
|
|
||||||
div, h1 {
|
|
||||||
padding: 3px 10px 2px 10px;
|
|
||||||
margin: 5px 0px 5px 0px;
|
|
||||||
}
|
|
||||||
|
|
||||||
.document {
|
|
||||||
font-family: Arial;
|
|
||||||
font-size: 11pt;
|
|
||||||
background-color: #EDEDED;
|
|
||||||
}
|
|
||||||
|
|
||||||
.title {
|
|
||||||
font-weight: bold;
|
|
||||||
}
|
|
||||||
</style>
|
|
||||||
|
|
||||||
</head>
|
|
||||||
<body class="document">
|
|
||||||
<h1>Test Report</h1>
|
|
||||||
<div>
|
|
||||||
<span class="title">Start time: </span><xsl:value-of select="testlog/startTime"/><br/>
|
|
||||||
<!-- and ended at <xsl:value-of select="testlog/endTime"/>.<br/>-->
|
|
||||||
<span class="title">Total runtime: </span><xsl:value-of select="testlog/totalRuntime"/> seconds.<br/>
|
|
||||||
<span class="title">Harness parameters: </span>
|
|
||||||
<span xml:space="preserve">
|
|
||||||
<xsl:for-each select="testlog/parameters/parameter">
|
|
||||||
<xsl:value-of select="."/>
|
|
||||||
</xsl:for-each>
|
|
||||||
</span>
|
|
||||||
<br/>
|
|
||||||
<span class="title">Statistics:</span><br/>
|
|
||||||
<div>
|
|
||||||
<span>Executed </span> <xsl:value-of select="testlog/numSuites"/> test suites. <br/>
|
|
||||||
<span>Tests in total: </span> <xsl:value-of select="testlog/numTests"/> (passed: <xsl:value-of select="testlog/numPassedTests"/>, failed: <xsl:value-of select="testlog/numFailedTests"/>)
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
</body>
|
|
||||||
</html>
|
|
||||||
|
|
||||||
</xsl:template>
|
|
||||||
</xsl:stylesheet>
|
|
||||||
|
|
|
@ -1,23 +0,0 @@
|
||||||
INCLUDE = -I../../include
|
|
||||||
|
|
||||||
lib_LTLIBRARIES = libSDLtest.la
|
|
||||||
libSDLtest_la_SOURCES = SDL_test.c \
|
|
||||||
logger_helpers.c \
|
|
||||||
plain_logger.c \
|
|
||||||
xml_logger.c xml.c \
|
|
||||||
common/common.c \
|
|
||||||
common/img_blit.c \
|
|
||||||
common/img_blitblend.c \
|
|
||||||
common/img_face.c \
|
|
||||||
common/img_primitives.c \
|
|
||||||
common/img_primitivesblend.c \
|
|
||||||
fuzzer/utl_crc32.c \
|
|
||||||
fuzzer/utl_md5.c \
|
|
||||||
fuzzer/utl_random.c \
|
|
||||||
fuzzer/fuzzer.c \
|
|
||||||
../runner/logger.h
|
|
||||||
libSDLtest_la_CLAGS = -fPIC -g
|
|
||||||
libSDLtest_la_LDFLAGS = `sdl-config --libs`
|
|
||||||
|
|
||||||
libSDLtest: libSDLtest.la
|
|
||||||
echo "Test library compiled."
|
|
|
@ -1,187 +0,0 @@
|
||||||
/*
|
|
||||||
Copyright (C) 2011 Markus Kauppila <markus.kauppila@gmail.com>
|
|
||||||
|
|
||||||
This software is provided 'as-is', without any express or implied
|
|
||||||
warranty. In no event will the authors be held liable for any damages
|
|
||||||
arising from the use of this software.
|
|
||||||
|
|
||||||
Permission is granted to anyone to use this software for any purpose,
|
|
||||||
including commercial applications, and to alter it and redistribute it
|
|
||||||
freely, subject to the following restrictions:
|
|
||||||
|
|
||||||
1. The origin of this software must not be misrepresented; you must not
|
|
||||||
claim that you wrote the original software. If you use this software
|
|
||||||
in a product, an acknowledgment in the product documentation would be
|
|
||||||
appreciated but is not required.
|
|
||||||
2. Altered source versions must be plainly marked as such, and must not be
|
|
||||||
misrepresented as being the original software.
|
|
||||||
3. This notice may not be removed or altered from any source distribution.
|
|
||||||
*/
|
|
||||||
|
|
||||||
#include <stdio.h> /* printf/fprintf */
|
|
||||||
#include <stdarg.h> /* va_list */
|
|
||||||
#include <time.h>
|
|
||||||
|
|
||||||
#include <SDL/SDL_stdinc.h>
|
|
||||||
|
|
||||||
#include "fuzzer/fuzzer.h"
|
|
||||||
|
|
||||||
#include "../runner/logger.h"
|
|
||||||
|
|
||||||
#include "../../include/SDL_test.h"
|
|
||||||
|
|
||||||
|
|
||||||
/*! \brief return value of test case. Non-zero value means that the test failed */
|
|
||||||
int _testReturnValue;
|
|
||||||
|
|
||||||
/*! \brief counts the failed asserts */
|
|
||||||
int _testAssertsFailed;
|
|
||||||
|
|
||||||
/*! \brief counts the passed asserts */
|
|
||||||
int _testAssertsPassed;
|
|
||||||
|
|
||||||
/*! \brief is the execution done in-process? */
|
|
||||||
SDL_bool canBailOut;
|
|
||||||
|
|
||||||
void
|
|
||||||
_InitTestEnvironment(Uint64 execKey, SDL_bool inproc)
|
|
||||||
{
|
|
||||||
InitFuzzer(execKey);
|
|
||||||
|
|
||||||
canBailOut = inproc == 0;
|
|
||||||
|
|
||||||
_testReturnValue = TEST_RESULT_PASS;
|
|
||||||
_testAssertsFailed = 0;
|
|
||||||
_testAssertsPassed = 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
int
|
|
||||||
_QuitTestEnvironment()
|
|
||||||
{
|
|
||||||
AssertSummary(_testAssertsFailed + _testAssertsPassed,
|
|
||||||
_testAssertsFailed, _testAssertsPassed, time(0));
|
|
||||||
|
|
||||||
if(_testAssertsFailed == 0 && _testAssertsPassed == 0) {
|
|
||||||
_testReturnValue = TEST_RESULT_NO_ASSERT;
|
|
||||||
}
|
|
||||||
|
|
||||||
if(GetInvocationCount() > 0) {
|
|
||||||
Log(time(0), "Fuzzer invocation count: %d", GetInvocationCount());
|
|
||||||
}
|
|
||||||
|
|
||||||
DeinitFuzzer();
|
|
||||||
|
|
||||||
return _testReturnValue;
|
|
||||||
}
|
|
||||||
|
|
||||||
int
|
|
||||||
_CountFailedAsserts() {
|
|
||||||
return _testAssertsFailed;
|
|
||||||
}
|
|
||||||
|
|
||||||
/*!
|
|
||||||
* Bail out from test case. For example, the function is used to bail out
|
|
||||||
* from a test case after a failed assert.
|
|
||||||
*/
|
|
||||||
void
|
|
||||||
_BailOut()
|
|
||||||
{
|
|
||||||
if(!canBailOut)
|
|
||||||
return ;
|
|
||||||
|
|
||||||
AssertSummary(_testAssertsFailed + _testAssertsPassed,
|
|
||||||
_testAssertsFailed, _testAssertsPassed, time(0));
|
|
||||||
|
|
||||||
if(GetInvocationCount() > 0) {
|
|
||||||
Log(time(0), "Fuzzer invocation count: %d", GetInvocationCount());
|
|
||||||
}
|
|
||||||
|
|
||||||
DeinitFuzzer();
|
|
||||||
|
|
||||||
exit(TEST_RESULT_FAILURE); // bail out from the test
|
|
||||||
}
|
|
||||||
|
|
||||||
void
|
|
||||||
AssertEquals(int expected, int actual, char *message, ...)
|
|
||||||
{
|
|
||||||
va_list args;
|
|
||||||
char buf[256];
|
|
||||||
|
|
||||||
va_start( args, message );
|
|
||||||
memset(buf, 0, sizeof(buf));
|
|
||||||
SDL_vsnprintf( buf, sizeof(buf), message, args );
|
|
||||||
va_end( args );
|
|
||||||
|
|
||||||
if(expected != actual) {
|
|
||||||
AssertWithValues("AssertEquals", 0, buf, actual, expected, time(0));
|
|
||||||
|
|
||||||
_testReturnValue = TEST_RESULT_FAILURE;
|
|
||||||
_testAssertsFailed++;
|
|
||||||
|
|
||||||
_BailOut();
|
|
||||||
} else {
|
|
||||||
AssertWithValues("AssertEquals", 1, buf,
|
|
||||||
actual, expected, time(0));
|
|
||||||
|
|
||||||
_testAssertsPassed++;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
void
|
|
||||||
AssertTrue(int condition, char *message, ...)
|
|
||||||
{
|
|
||||||
va_list args;
|
|
||||||
char buf[256];
|
|
||||||
va_start( args, message );
|
|
||||||
SDL_vsnprintf( buf, sizeof(buf), message, args );
|
|
||||||
va_end( args );
|
|
||||||
|
|
||||||
if (!condition) {
|
|
||||||
Assert("AssertTrue", 0, buf, time(0));
|
|
||||||
|
|
||||||
_testReturnValue = TEST_RESULT_FAILURE;
|
|
||||||
_testAssertsFailed++;
|
|
||||||
|
|
||||||
_BailOut();
|
|
||||||
} else {
|
|
||||||
Assert("AssertTrue", 1, buf, time(0));
|
|
||||||
|
|
||||||
_testAssertsPassed++;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
void
|
|
||||||
AssertPass(char *message, ...)
|
|
||||||
{
|
|
||||||
va_list args;
|
|
||||||
char buf[256];
|
|
||||||
|
|
||||||
va_start( args, message );
|
|
||||||
SDL_vsnprintf( buf, sizeof(buf), message, args );
|
|
||||||
va_end( args );
|
|
||||||
|
|
||||||
Assert("AssertPass", 1, buf, time(0));
|
|
||||||
|
|
||||||
_testAssertsPassed++;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
void
|
|
||||||
AssertFail(char *message, ...)
|
|
||||||
{
|
|
||||||
va_list args;
|
|
||||||
char buf[256];
|
|
||||||
|
|
||||||
va_start( args, message );
|
|
||||||
SDL_vsnprintf( buf, sizeof(buf), message, args );
|
|
||||||
va_end( args );
|
|
||||||
|
|
||||||
Assert("AssertFail", 0, buf, time(0));
|
|
||||||
|
|
||||||
_testReturnValue = TEST_RESULT_FAILURE;
|
|
||||||
_testAssertsFailed++;
|
|
||||||
|
|
||||||
_BailOut();
|
|
||||||
}
|
|
||||||
|
|
|
@ -1,110 +0,0 @@
|
||||||
/**
|
|
||||||
* Automated SDL_Surface test.
|
|
||||||
*
|
|
||||||
* Written by Edgar Simo "bobbens"
|
|
||||||
*
|
|
||||||
* Released under Public Domain.
|
|
||||||
*/
|
|
||||||
|
|
||||||
|
|
||||||
#include "common.h"
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @brief Compares a surface and a surface image for equality
|
|
||||||
*
|
|
||||||
* @param sur Surface used in comparison
|
|
||||||
* @param img Surface image used in comparison
|
|
||||||
* @param allowable_error Allowable difference in blending accuracy
|
|
||||||
*/
|
|
||||||
int surface_compare( SDL_Surface *sur, const SurfaceImage_t *img, int allowable_error )
|
|
||||||
{
|
|
||||||
int ret;
|
|
||||||
int i,j;
|
|
||||||
int bpp;
|
|
||||||
Uint8 *p, *pd;
|
|
||||||
|
|
||||||
/* Make sure size is the same. */
|
|
||||||
if ((sur->w != img->width) || (sur->h != img->height))
|
|
||||||
return -1;
|
|
||||||
|
|
||||||
SDL_LockSurface( sur );
|
|
||||||
|
|
||||||
ret = 0;
|
|
||||||
bpp = sur->format->BytesPerPixel;
|
|
||||||
|
|
||||||
/* Compare image - should be same format. */
|
|
||||||
for (j=0; j<sur->h; j++) {
|
|
||||||
for (i=0; i<sur->w; i++) {
|
|
||||||
p = (Uint8 *)sur->pixels + j * sur->pitch + i * bpp;
|
|
||||||
pd = (Uint8 *)img->pixel_data + (j*img->width + i) * img->bytes_per_pixel;
|
|
||||||
switch (bpp) {
|
|
||||||
case 1:
|
|
||||||
case 2:
|
|
||||||
case 3:
|
|
||||||
ret += 1;
|
|
||||||
/*printf("%d BPP not supported yet.\n",bpp);*/
|
|
||||||
break;
|
|
||||||
|
|
||||||
case 4:
|
|
||||||
{
|
|
||||||
int dist = 0;
|
|
||||||
Uint8 R, G, B, A;
|
|
||||||
|
|
||||||
SDL_GetRGBA(*(Uint32*)p, sur->format, &R, &G, &B, &A);
|
|
||||||
|
|
||||||
if (img->bytes_per_pixel == 3) {
|
|
||||||
dist += (R-pd[0])*(R-pd[0]);
|
|
||||||
dist += (G-pd[1])*(G-pd[1]);
|
|
||||||
dist += (B-pd[2])*(B-pd[2]);
|
|
||||||
} else {
|
|
||||||
dist += (R-pd[0])*(R-pd[0]);
|
|
||||||
dist += (G-pd[1])*(G-pd[1]);
|
|
||||||
dist += (B-pd[2])*(B-pd[2]);
|
|
||||||
dist += (A-pd[3])*(A-pd[3]);
|
|
||||||
}
|
|
||||||
/* Allow some difference in blending accuracy */
|
|
||||||
if (dist > allowable_error) {
|
|
||||||
/*printf("pixel %d,%d varies by %d\n", i, j, dist);*/
|
|
||||||
++ret;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
SDL_UnlockSurface( sur );
|
|
||||||
|
|
||||||
if (ret) {
|
|
||||||
SDL_SaveBMP(sur, "fail.bmp");
|
|
||||||
|
|
||||||
SDL_LockSurface( sur );
|
|
||||||
|
|
||||||
bpp = sur->format->BytesPerPixel;
|
|
||||||
|
|
||||||
if (bpp == 4) {
|
|
||||||
for (j=0; j<sur->h; j++) {
|
|
||||||
for (i=0; i<sur->w; i++) {
|
|
||||||
Uint8 R, G, B, A;
|
|
||||||
p = (Uint8 *)sur->pixels + j * sur->pitch + i * bpp;
|
|
||||||
pd = (Uint8 *)img->pixel_data + (j*img->width + i) * img->bytes_per_pixel;
|
|
||||||
|
|
||||||
R = pd[0];
|
|
||||||
G = pd[1];
|
|
||||||
B = pd[2];
|
|
||||||
if (img->bytes_per_pixel == 4) {
|
|
||||||
A = pd[3];
|
|
||||||
} else {
|
|
||||||
A = 0;
|
|
||||||
}
|
|
||||||
*(Uint32*)p = (A << 24) | (R << 16) | (G << 8) | B;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
SDL_UnlockSurface( sur );
|
|
||||||
|
|
||||||
SDL_SaveBMP(sur, "good.bmp");
|
|
||||||
}
|
|
||||||
return ret;
|
|
||||||
}
|
|
|
@ -1,43 +0,0 @@
|
||||||
/**
|
|
||||||
* Automated SDL test common framework.
|
|
||||||
*
|
|
||||||
* Written by Edgar Simo "bobbens"
|
|
||||||
*
|
|
||||||
* Released under Public Domain.
|
|
||||||
*/
|
|
||||||
|
|
||||||
|
|
||||||
#ifndef COMMON_H
|
|
||||||
# define COMMON_H
|
|
||||||
|
|
||||||
#include "SDL/SDL.h"
|
|
||||||
|
|
||||||
# define FORMAT SDL_PIXELFORMAT_ARGB8888
|
|
||||||
# define AMASK 0xff000000 /**< Alpha bit mask. */
|
|
||||||
# define RMASK 0x00ff0000 /**< Red bit mask. */
|
|
||||||
# define GMASK 0x0000ff00 /**< Green bit mask. */
|
|
||||||
# define BMASK 0x000000ff /**< Blue bit mask. */
|
|
||||||
|
|
||||||
|
|
||||||
typedef struct SurfaceImage_s {
|
|
||||||
int width;
|
|
||||||
int height;
|
|
||||||
unsigned int bytes_per_pixel; /* 3:RGB, 4:RGBA */
|
|
||||||
const unsigned char pixel_data[];
|
|
||||||
} SurfaceImage_t;
|
|
||||||
|
|
||||||
#define ALLOWABLE_ERROR_OPAQUE 0
|
|
||||||
#define ALLOWABLE_ERROR_BLENDED 64
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @brief Compares a surface and a surface image for equality.
|
|
||||||
*
|
|
||||||
* @param sur Surface to compare.
|
|
||||||
* @param img Image to compare against.
|
|
||||||
* @return 0 if they are the same, -1 on error and positive if different.
|
|
||||||
*/
|
|
||||||
int surface_compare( SDL_Surface *sur, const SurfaceImage_t *img, int allowable_error );
|
|
||||||
|
|
||||||
|
|
||||||
#endif /* COMMON_H */
|
|
||||||
|
|
|
@ -1,22 +0,0 @@
|
||||||
|
|
||||||
|
|
||||||
#ifndef IMAGES_H
|
|
||||||
# define IMAGES_H
|
|
||||||
|
|
||||||
|
|
||||||
#include "common.h"
|
|
||||||
|
|
||||||
|
|
||||||
/*
|
|
||||||
* Pull in images for testcases.
|
|
||||||
*/
|
|
||||||
#include "img_primitives.c"
|
|
||||||
#include "img_primitivesblend.c"
|
|
||||||
#include "img_face.c"
|
|
||||||
#include "img_blit.c"
|
|
||||||
#include "img_blitblend.c"
|
|
||||||
|
|
||||||
|
|
||||||
#endif /* IMAGES_H */
|
|
||||||
|
|
||||||
|
|
File diff suppressed because it is too large
Load diff
File diff suppressed because it is too large
Load diff
|
@ -1,197 +0,0 @@
|
||||||
/* GIMP RGBA C-Source image dump (face.c) */
|
|
||||||
#include "common.h"
|
|
||||||
|
|
||||||
static const SurfaceImage_t img_face = {
|
|
||||||
32, 32, 4,
|
|
||||||
"\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377"
|
|
||||||
"\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377"
|
|
||||||
"\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377"
|
|
||||||
"\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0"
|
|
||||||
"\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377"
|
|
||||||
"\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377"
|
|
||||||
"\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377"
|
|
||||||
"\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0"
|
|
||||||
"\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377"
|
|
||||||
"\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377"
|
|
||||||
"\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377"
|
|
||||||
"\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0"
|
|
||||||
"\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377"
|
|
||||||
"\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377"
|
|
||||||
"\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377"
|
|
||||||
"\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0"
|
|
||||||
"\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377"
|
|
||||||
"\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377"
|
|
||||||
"\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377"
|
|
||||||
"\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0"
|
|
||||||
"\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377"
|
|
||||||
"\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377"
|
|
||||||
"\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377"
|
|
||||||
"\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0"
|
|
||||||
"\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377"
|
|
||||||
"\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377"
|
|
||||||
"\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377"
|
|
||||||
"\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0"
|
|
||||||
"\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377"
|
|
||||||
"\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377"
|
|
||||||
"\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377"
|
|
||||||
"\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0"
|
|
||||||
"\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377"
|
|
||||||
"\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377"
|
|
||||||
"\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377"
|
|
||||||
"\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0"
|
|
||||||
"\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377"
|
|
||||||
"\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377"
|
|
||||||
"\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377"
|
|
||||||
"\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0"
|
|
||||||
"\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377"
|
|
||||||
"\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377"
|
|
||||||
"\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377"
|
|
||||||
"\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0"
|
|
||||||
"\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\0"
|
|
||||||
"\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0"
|
|
||||||
"\0\377\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377"
|
|
||||||
"\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0"
|
|
||||||
"\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377"
|
|
||||||
"\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377"
|
|
||||||
"\377\0\377\377\377\0\0\0\0\377\0\0\0\377\377\377\0\377\377\377\0\377\377"
|
|
||||||
"\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377"
|
|
||||||
"\0\377\0\0\0\377\0\0\0\377\377\377\377\0\377\377\377\0\377\377\377\0\377"
|
|
||||||
"\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377"
|
|
||||||
"\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377"
|
|
||||||
"\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0"
|
|
||||||
"\0\0\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377"
|
|
||||||
"\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0"
|
|
||||||
"\377\377\377\0\377\377\377\0\377\0\0\0\377\377\377\377\0\377\377\377\0\377"
|
|
||||||
"\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377"
|
|
||||||
"\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377"
|
|
||||||
"\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\0\0\0\377\377"
|
|
||||||
"\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377"
|
|
||||||
"\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0"
|
|
||||||
"\377\377\377\0\377\377\377\0\377\377\377\0\377\0\0\0\377\377\377\377\0\377"
|
|
||||||
"\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377"
|
|
||||||
"\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377"
|
|
||||||
"\0\377\377\377\0\377\377\377\0\377\377\377\0\0\0\0\377\377\377\0\377\377"
|
|
||||||
"\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377"
|
|
||||||
"\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0"
|
|
||||||
"\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\0\0\0\377\377"
|
|
||||||
"\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377"
|
|
||||||
"\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377"
|
|
||||||
"\0\377\377\377\0\377\377\377\0\0\0\0\377\377\377\0\377\377\377\0\377\377"
|
|
||||||
"\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377"
|
|
||||||
"\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0"
|
|
||||||
"\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377"
|
|
||||||
"\0\0\0\377\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377"
|
|
||||||
"\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377"
|
|
||||||
"\0\377\377\377\0\377\377\377\0\0\0\0\377\377\377\0\377\377\377\0\377\377"
|
|
||||||
"\377\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\377\377\0\377\377\377"
|
|
||||||
"\0\377\377\377\0\377\377\377\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377"
|
|
||||||
"\377\377\0\377\377\377\0\377\377\377\0\377\0\0\0\377\377\377\377\0\377\377"
|
|
||||||
"\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377"
|
|
||||||
"\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\0\0\0\377\377"
|
|
||||||
"\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\0\0\0\377\0\0\0\377"
|
|
||||||
"\377\377\377\0\0\0\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377"
|
|
||||||
"\0\377\0\0\0\377\0\0\0\377\377\377\377\0\0\0\0\377\377\377\0\377\377\377"
|
|
||||||
"\0\377\377\377\0\377\377\377\0\377\0\0\0\377\377\377\377\0\377\377\377\0"
|
|
||||||
"\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377"
|
|
||||||
"\377\377\0\377\377\377\0\377\377\377\0\0\0\0\377\377\377\0\377\377\377\0"
|
|
||||||
"\377\377\377\0\377\377\377\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377"
|
|
||||||
"\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\0\0\0\377\0\0\0"
|
|
||||||
"\377\0\0\0\377\0\0\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377"
|
|
||||||
"\0\377\0\0\0\377\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0"
|
|
||||||
"\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377"
|
|
||||||
"\377\377\0\0\0\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0"
|
|
||||||
"\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377"
|
|
||||||
"\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377"
|
|
||||||
"\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377"
|
|
||||||
"\0\377\0\0\0\377\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0"
|
|
||||||
"\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377"
|
|
||||||
"\377\377\0\0\0\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0"
|
|
||||||
"\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377"
|
|
||||||
"\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377"
|
|
||||||
"\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377"
|
|
||||||
"\0\377\0\0\0\377\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0"
|
|
||||||
"\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377"
|
|
||||||
"\377\377\0\0\0\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0"
|
|
||||||
"\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377"
|
|
||||||
"\0\0\0\377\0\0\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0"
|
|
||||||
"\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377"
|
|
||||||
"\0\0\0\377\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377"
|
|
||||||
"\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377"
|
|
||||||
"\0\0\0\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377"
|
|
||||||
"\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\0\0\0"
|
|
||||||
"\377\0\0\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377"
|
|
||||||
"\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\0\0\0"
|
|
||||||
"\377\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377"
|
|
||||||
"\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0"
|
|
||||||
"\0\0\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377"
|
|
||||||
"\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0"
|
|
||||||
"\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377"
|
|
||||||
"\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\0"
|
|
||||||
"\0\0\377\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377"
|
|
||||||
"\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377"
|
|
||||||
"\0\377\377\377\0\0\0\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377"
|
|
||||||
"\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377"
|
|
||||||
"\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0"
|
|
||||||
"\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\0\0\0\377\377"
|
|
||||||
"\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377"
|
|
||||||
"\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377"
|
|
||||||
"\0\377\377\377\0\0\0\0\377\377\377\0\377\377\377\0\377\0\0\0\377\0\0\0\377"
|
|
||||||
"\0\0\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377"
|
|
||||||
"\0\377\377\377\0\377\377\377\0\377\377\377\0\377\0\0\0\377\0\0\0\377\0\0"
|
|
||||||
"\0\377\377\377\0\377\377\377\0\377\0\0\0\377\377\377\377\0\377\377\377\0"
|
|
||||||
"\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377"
|
|
||||||
"\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377"
|
|
||||||
"\377\0\0\0\0\377\377\377\0\377\377\377\0\377\0\0\0\377\0\0\0\377\0\0\0\377"
|
|
||||||
"\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0"
|
|
||||||
"\0\0\377\0\0\0\377\377\377\0\377\377\377\0\377\0\0\0\377\377\377\377\0\377"
|
|
||||||
"\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377"
|
|
||||||
"\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377"
|
|
||||||
"\0\377\377\377\0\377\377\377\0\377\377\377\0\0\0\0\377\377\377\0\377\377"
|
|
||||||
"\377\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0"
|
|
||||||
"\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\377\377\0\377\377\377\0\377\0\0\0"
|
|
||||||
"\377\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377"
|
|
||||||
"\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0"
|
|
||||||
"\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377"
|
|
||||||
"\377\377\0\377\377\377\0\0\0\0\377\377\377\0\377\377\377\0\377\377\377\0"
|
|
||||||
"\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\377\377"
|
|
||||||
"\0\377\377\377\0\377\377\377\0\377\0\0\0\377\377\377\377\0\377\377\377\0"
|
|
||||||
"\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377"
|
|
||||||
"\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377"
|
|
||||||
"\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377"
|
|
||||||
"\0\377\377\377\0\0\0\0\377\0\0\0\377\377\377\0\377\377\377\0\377\377\377"
|
|
||||||
"\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0"
|
|
||||||
"\377\0\0\0\377\0\0\0\377\377\377\377\0\377\377\377\0\377\377\377\0\377\377"
|
|
||||||
"\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377"
|
|
||||||
"\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0"
|
|
||||||
"\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377"
|
|
||||||
"\377\377\0\377\377\377\0\377\377\377\0\0\0\0\377\0\0\0\377\0\0\0\377\0\0"
|
|
||||||
"\0\377\0\0\0\377\0\0\0\377\0\0\0\377\0\0\0\377\377\377\377\0\377\377\377"
|
|
||||||
"\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0"
|
|
||||||
"\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377"
|
|
||||||
"\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377"
|
|
||||||
"\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377"
|
|
||||||
"\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0"
|
|
||||||
"\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377"
|
|
||||||
"\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377"
|
|
||||||
"\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377"
|
|
||||||
"\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0"
|
|
||||||
"\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377"
|
|
||||||
"\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377"
|
|
||||||
"\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377"
|
|
||||||
"\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0"
|
|
||||||
"\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377"
|
|
||||||
"\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377"
|
|
||||||
"\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377"
|
|
||||||
"\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0"
|
|
||||||
"\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377"
|
|
||||||
"\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377"
|
|
||||||
"\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377"
|
|
||||||
"\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0"
|
|
||||||
"\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377"
|
|
||||||
"\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377"
|
|
||||||
"\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377"
|
|
||||||
"\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0"
|
|
||||||
"\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377"
|
|
||||||
"\377\377\0\377\377\377\0",
|
|
||||||
};
|
|
||||||
|
|
|
@ -1,464 +0,0 @@
|
||||||
/* GIMP RGB C-Source image dump (primitives.c) */
|
|
||||||
#include "common.h"
|
|
||||||
|
|
||||||
static const SurfaceImage_t img_primitives = {
|
|
||||||
80, 60, 3,
|
|
||||||
"\5ii\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
|
|
||||||
"\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
|
|
||||||
"\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
|
|
||||||
"\0\0\0\0\0\0\0\0\0\0\0\0\0\0\15I\310\0\0\0\15I\310\0\0\0\15I\310\0\0\0\15"
|
|
||||||
"I\310\0\0\0\15I\310\0\0\0\15I\310\0\0\0\15I\310\0\0\0\15I\310\0\0\0\15I\310"
|
|
||||||
"\0\0\0\15I\310\0\0\0\15I\310\0\0\0\15I\310\0\0\0\15I\310\0\0\0\15I\310\0"
|
|
||||||
"\0\0\15I\310\0\0\0\15I\310\0\0\0\15I\310\0\0\0\15I\310\0\0\0\15I\310\0\0"
|
|
||||||
"\0\5ii\0\0\0\5ii\0\0\0\3\1\1\0\0\0\5\2\1\0\0\0\7\3\2\0\0\0\11\4\3\0\0\0\13"
|
|
||||||
"\5\3\0\0\0\15\6\4\0\0\0\17\7\5\0\0\0\21\10\5\0\0\0\23\11\6\0\0\0\25\12\7"
|
|
||||||
"\0\0\0\27\13\7\0\0\0\31\14\10\0\0\0\33\15\11\0\0\0\35\16\11\0\0\0\37\17\12"
|
|
||||||
"\0\0\0!\20\13\0\0\0#\21\13\0\0\0%\22\14\0\0\0'\23\15\15I\310)\24\15\15I\310"
|
|
||||||
"+\25\16\15I\310-\26\17\15I\310/\27\17\15I\3101\30\20\15I\3103\31\21\15I\310"
|
|
||||||
"5\32\21\15I\3107\33\22\15I\3109\34\23\15I\310;\35\23\15I\310=\36\24\15I\310"
|
|
||||||
"?\37\25\15I\310A\40\25\15I\310C!\26\15I\310E\"\27\15I\310G#\27\15I\310I$"
|
|
||||||
"\30\15I\310K%\31\15I\310M&\31\5iiO'\32\0\0\0\0\0\0\5ii\0\0\0\10\4\2\0\0\0"
|
|
||||||
"\14\6\4\0\0\0\20\10\5\0\0\0\24\12\6\0\0\0\30\14\10\0\0\0\34\16\11\0\0\0\40"
|
|
||||||
"\20\12\0\0\0$\22\14\0\0\0(\24\15\0\0\0,\26\16\0\0\0""0\30\20\0\0\0""4\32"
|
|
||||||
"\21\0\0\0""8\34\22\0\0\0<\36\24\0\0\0@\40\25\0\0\0D\"\26\0\0\0H$\30\0\0\0"
|
|
||||||
"L&\31\0\0\0P(\32\15I\310T*\34\15I\310X,\35\15I\310\\.\36\15I\310`0\40\15"
|
|
||||||
"I\310d2!\15I\310h4\"\15I\310l6$\15I\310p8%\15I\310t:&\15I\310x<(\15I\310"
|
|
||||||
"|>)\15I\310\200@*\15I\310\204B,\15I\310\210D-\15I\310\214F.\15I\310\220H"
|
|
||||||
"0\15I\310\224J1\15I\310\230L2\5ii\234N4\15I\310\0\0\0\0\0\0\0\0\0\5ii\0\0"
|
|
||||||
"\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
|
|
||||||
"\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
|
|
||||||
"\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\15I"
|
|
||||||
"\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I"
|
|
||||||
"\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I"
|
|
||||||
"\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I"
|
|
||||||
"\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310\5ii"
|
|
||||||
"\15I\310\15I\310\15I\310\0\0\0\0\0\0\0\0\0\0\0\0\5ii\0\0\0\0\0\0\0\0\0\0"
|
|
||||||
"\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
|
|
||||||
"\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
|
|
||||||
"\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\15I\310\15I\310\15I\310\15"
|
|
||||||
"I\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310\15"
|
|
||||||
"I\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310\15"
|
|
||||||
"I\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310\15"
|
|
||||||
"I\310\15I\310\15I\310\15I\310\15I\310\5ii\15I\310\15I\310\15I\310\15I\310"
|
|
||||||
"\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\5ii\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
|
|
||||||
"\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
|
|
||||||
"\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
|
|
||||||
"\0\0\0\0\0\0\0\0\0\0\0\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310\15"
|
|
||||||
"I\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310\15"
|
|
||||||
"I\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310\15"
|
|
||||||
"I\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310\15"
|
|
||||||
"I\310\5ii\15I\310\15I\310\15I\310\15I\310\15I\310\0\0\0\0\0\0\0\0\0\0\0\0"
|
|
||||||
"\0\0\0\0\0\0\5ii\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
|
|
||||||
"\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
|
|
||||||
"\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\15"
|
|
||||||
"I\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310\15"
|
|
||||||
"I\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310\15"
|
|
||||||
"I\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310\15"
|
|
||||||
"I\310\15I\310\15I\310\15I\310\15I\310\15I\310\5ii\15I\310\15I\310\15I\310"
|
|
||||||
"\15I\310\15I\310\15I\310\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\5ii\0"
|
|
||||||
"\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
|
|
||||||
"\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
|
|
||||||
"\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\15I\310\15I\310\15I\310\15"
|
|
||||||
"I\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310\15"
|
|
||||||
"I\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310\15"
|
|
||||||
"I\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310\15"
|
|
||||||
"I\310\15I\310\5ii\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310"
|
|
||||||
"\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\5ii\0\0\0\0\0\0\0\0\0\0"
|
|
||||||
"\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
|
|
||||||
"\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
|
|
||||||
"\0\0\0\0\0\0\0\0\0\0\0\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310\15"
|
|
||||||
"I\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310\15"
|
|
||||||
"I\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310\15"
|
|
||||||
"I\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310\5ii\15I\310\15I\310"
|
|
||||||
"\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310\0\0\0\0\0\0\0\0\0\0\0\0"
|
|
||||||
"\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\5ii\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
|
|
||||||
"\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
|
|
||||||
"\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\15"
|
|
||||||
"I\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310\15"
|
|
||||||
"I\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310\15"
|
|
||||||
"I\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310\15"
|
|
||||||
"I\310\15I\310\15I\310\5ii\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310"
|
|
||||||
"\15I\310\15I\310\15I\310\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
|
|
||||||
"\0\0\0\0\0\0\5ii\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d"
|
|
||||||
"\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310"
|
|
||||||
"\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0"
|
|
||||||
"d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310"
|
|
||||||
"\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0"
|
|
||||||
"d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\5ii\15I\310\15"
|
|
||||||
"I\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310\0\0"
|
|
||||||
"\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\310\0d\5ii\310\0"
|
|
||||||
"d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310"
|
|
||||||
"\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0"
|
|
||||||
"d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310"
|
|
||||||
"\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0"
|
|
||||||
"d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310"
|
|
||||||
"\0d\310\0d\310\0d\5ii\310\0d\15I\310\15I\310\15I\310\15I\310\15I\310\15I"
|
|
||||||
"\310\15I\310\15I\310\15I\310\15I\310\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
|
|
||||||
"\0\0\0\0\0\0\0\0\0\0\0\0\310\0d\310\0d\5ii\310\0d\310\0d\310\0d\310\0d\310"
|
|
||||||
"\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0"
|
|
||||||
"d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310"
|
|
||||||
"\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0"
|
|
||||||
"d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310"
|
|
||||||
"\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\5ii\310\0d\310\0d\15"
|
|
||||||
"I\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310\15"
|
|
||||||
"I\310\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\310\0d"
|
|
||||||
"\310\0d\310\0d\5ii\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0"
|
|
||||||
"d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310"
|
|
||||||
"\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0"
|
|
||||||
"d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310"
|
|
||||||
"\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0"
|
|
||||||
"d\310\0d\310\0d\5ii\310\0d\310\0d\310\0d\15I\310\15I\310\15I\310\15I\310"
|
|
||||||
"\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310\0\0\0\0\0\0\0\0\0\0\0\0"
|
|
||||||
"\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\310\0d\310\0d\310\0d\310\0d\5ii\310"
|
|
||||||
"\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0"
|
|
||||||
"d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310"
|
|
||||||
"\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0"
|
|
||||||
"d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310"
|
|
||||||
"\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\5ii\310\0d\310\0d\310"
|
|
||||||
"\0d\310\0d\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310"
|
|
||||||
"\15I\310\15I\310\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
|
|
||||||
"\0\0\310\0d\310\0d\310\0d\310\0d\310\0d\5ii\310\0d\310\0d\310\0d\310\0d\310"
|
|
||||||
"\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0"
|
|
||||||
"d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310"
|
|
||||||
"\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0"
|
|
||||||
"d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310"
|
|
||||||
"\0d\310\0d\5ii\310\0d\310\0d\310\0d\310\0d\310\0d\15I\310\15I\310\15I\310"
|
|
||||||
"\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310\0\0\0\0\0\0\0\0"
|
|
||||||
"\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\310\0d\310\0d\310\0d\310\0d"
|
|
||||||
"\310\0d\310\0d\5ii\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0"
|
|
||||||
"d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310"
|
|
||||||
"\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0"
|
|
||||||
"d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310"
|
|
||||||
"\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\5ii\310\0d\310\0d\310\0d\310"
|
|
||||||
"\0d\310\0d\310\0d\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310"
|
|
||||||
"\15I\310\15I\310\15I\310\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
|
|
||||||
"\0\0\0\0\0\0\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\5ii\310\0d"
|
|
||||||
"\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310"
|
|
||||||
"\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0"
|
|
||||||
"d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310"
|
|
||||||
"\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0"
|
|
||||||
"d\310\0d\5ii\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\15I\310\15"
|
|
||||||
"I\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310\0\0"
|
|
||||||
"\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\310\0d\310\0d\310"
|
|
||||||
"\0d\310\0d\310\0d\310\0d\310\0d\310\0d\5ii\310\0d\310\0d\310\0d\310\0d\310"
|
|
||||||
"\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0"
|
|
||||||
"d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310"
|
|
||||||
"\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0"
|
|
||||||
"d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\5ii\310\0d\310\0d\310\0d\310"
|
|
||||||
"\0d\310\0d\310\0d\310\0d\310\0d\15I\310\15I\310\15I\310\15I\310\15I\310\15"
|
|
||||||
"I\310\15I\310\15I\310\15I\310\15I\310\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
|
|
||||||
"\0\0\0\0\0\0\0\0\0\0\0\0\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0"
|
|
||||||
"d\310\0d\310\0d\5ii\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310"
|
|
||||||
"\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0"
|
|
||||||
"d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310"
|
|
||||||
"\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0"
|
|
||||||
"d\310\0d\5ii\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310"
|
|
||||||
"\0d\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310"
|
|
||||||
"\15I\310\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\310"
|
|
||||||
"\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\5ii\310"
|
|
||||||
"\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0"
|
|
||||||
"d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310"
|
|
||||||
"\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0"
|
|
||||||
"d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\5ii\310\0d\310\0d\310\0d\310"
|
|
||||||
"\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\15I\310\15I\310\15I\310\15"
|
|
||||||
"I\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310\0\0\0\0\0\0\0\0\0\0"
|
|
||||||
"\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\310\0d\310\0d\310\0d\310\0d\310"
|
|
||||||
"\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\5ii\310\0d\310\0d\310\0d\310"
|
|
||||||
"\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0"
|
|
||||||
"d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310"
|
|
||||||
"\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0"
|
|
||||||
"d\310\0d\5ii\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310"
|
|
||||||
"\0d\310\0d\310\0d\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310"
|
|
||||||
"\15I\310\15I\310\15I\310\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
|
|
||||||
"\0\0\0\0\0\0\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310"
|
|
||||||
"\0d\310\0d\310\0d\310\0d\5ii\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310"
|
|
||||||
"\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0"
|
|
||||||
"d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310"
|
|
||||||
"\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\5ii\310\0d\310\0d\310\0d\310"
|
|
||||||
"\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\15I\310\15I\310"
|
|
||||||
"\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310\0\0\0\0"
|
|
||||||
"\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\310\0d\310\0d\310\0"
|
|
||||||
"d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\5"
|
|
||||||
"ii\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d"
|
|
||||||
"\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310"
|
|
||||||
"\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0"
|
|
||||||
"d\310\0d\5ii\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310"
|
|
||||||
"\0d\310\0d\310\0d\310\0d\310\0d\15I\310\15I\310\15I\310\15I\310\15I\310\15"
|
|
||||||
"I\310\15I\310\15I\310\15I\310\15I\310\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
|
|
||||||
"\0\0\0\0\0\0\0\0\0\0\0\0\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0"
|
|
||||||
"d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\5ii\310\0d\310\0d\310"
|
|
||||||
"\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0"
|
|
||||||
"d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310"
|
|
||||||
"\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\5ii\310\0d\310\0d\310\0d\310"
|
|
||||||
"\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0"
|
|
||||||
"d\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310"
|
|
||||||
"\15I\310\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\310"
|
|
||||||
"\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0"
|
|
||||||
"d\310\0d\310\0d\310\0d\310\0d\5ii\310\0d\310\0d\310\0d\310\0d\310\0d\310"
|
|
||||||
"\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0"
|
|
||||||
"d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310"
|
|
||||||
"\0d\310\0d\5ii\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310"
|
|
||||||
"\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\15I\310\15I\310\15I\310\15"
|
|
||||||
"I\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310\0\0\0\0\0\0\0\0\0\0"
|
|
||||||
"\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\310\0d\310\0d\310\0d\310\0d\310"
|
|
||||||
"\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0"
|
|
||||||
"d\310\0d\5ii\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310"
|
|
||||||
"\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0"
|
|
||||||
"d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\5ii\310\0d\310\0d\310"
|
|
||||||
"\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0"
|
|
||||||
"d\310\0d\310\0d\310\0d\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310\15"
|
|
||||||
"I\310\15I\310\15I\310\15I\310\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
|
|
||||||
"\0\0\0\0\0\0\0\0\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d"
|
|
||||||
"\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\5ii\310\0"
|
|
||||||
"d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310"
|
|
||||||
"\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0"
|
|
||||||
"d\310\0d\310\0d\5ii\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310"
|
|
||||||
"\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\15I\310"
|
|
||||||
"\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310"
|
|
||||||
"\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\310\0d\310\0"
|
|
||||||
"d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310"
|
|
||||||
"\0d\310\0d\310\0d\310\0d\310\0d\310\0d\5ii\310\0d\310\0d\310\0d\310\0d\310"
|
|
||||||
"\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0"
|
|
||||||
"d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\5ii\310\0d\310\0d\310"
|
|
||||||
"\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0"
|
|
||||||
"d\310\0d\310\0d\310\0d\310\0d\310\0d\15I\310\15I\310\15I\310\15I\310\15I"
|
|
||||||
"\310\15I\310\15I\310\15I\310\15I\310\15I\310\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
|
|
||||||
"\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\310\0d\310\0d\310\0d\310\0d\310\0d\310\0"
|
|
||||||
"d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310"
|
|
||||||
"\0d\310\0d\310\0d\5ii\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310"
|
|
||||||
"\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0"
|
|
||||||
"d\310\0d\310\0d\5ii\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310"
|
|
||||||
"\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0"
|
|
||||||
"d\310\0d\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310"
|
|
||||||
"\15I\310\15I\310\0\377\0\0\377\0\0\377\0\0\377\0\0\377\0\0\377\0\0\377\0"
|
|
||||||
"\0\377\0\0\377\0\0\377\0\0\377\0\0\377\0\0\377\0\0\377\0\0\377\0\0\377\0"
|
|
||||||
"\0\377\0\0\377\0\0\377\0\0\377\0\0\377\0\0\377\0\0\377\0\0\377\0\0\377\0"
|
|
||||||
"\0\377\0\0\377\0\0\377\0\0\377\0\5ii\0\377\0\0\377\0\0\377\0\0\377\0\0\377"
|
|
||||||
"\0\0\377\0\0\377\0\0\377\0\0\377\0\0\377\0""77\5\0\377\0\0\377\0\0\377\0"
|
|
||||||
"\0\377\0\0\377\0\0\377\0\0\377\0\0\377\0\0\377\0\5ii\0\377\0\0\377\0\0\377"
|
|
||||||
"\0\0\377\0\0\377\0\0\377\0\0\377\0\0\377\0\0\377\0\0\377\0\0\377\0\0\377"
|
|
||||||
"\0\0\377\0\0\377\0\0\377\0\0\377\0\0\377\0\0\377\0\0\377\0\0\377\0\0\377"
|
|
||||||
"\0\0\377\0\0\377\0\0\377\0\0\377\0\0\377\0\0\377\0\0\377\0\0\377\0\0\0\0"
|
|
||||||
"\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\310\0d\310\0d\310"
|
|
||||||
"\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0"
|
|
||||||
"d\310\0d\310\0d\310\0d\310\0d\310\0d\5ii\310\0d\310\0d\310\0d\310\0d\310"
|
|
||||||
"\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d77\5\310\0d\310\0d\310\0d\310"
|
|
||||||
"\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\5ii\310\0d\310\0d\310\0d\310"
|
|
||||||
"\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0"
|
|
||||||
"d\310\0d\310\0d\310\0d\310\0d\15I\310\15I\310\15I\310\15I\310\15I\310\15"
|
|
||||||
"I\310\15I\310\15I\310\15I\310\15I\310\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
|
|
||||||
"\0\0\0\0\0\0\0\0\0\0\0\0\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0"
|
|
||||||
"d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\5"
|
|
||||||
"ii\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d"
|
|
||||||
"\310\0d\310\0d77\5\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0"
|
|
||||||
"d\310\0d\310\0d\310\0d\5ii\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310"
|
|
||||||
"\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0"
|
|
||||||
"d\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310"
|
|
||||||
"\15I\310\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\310"
|
|
||||||
"\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0"
|
|
||||||
"d\310\0d\310\0d\310\0d\310\0d\310\0d\5ii\310\0d\310\0d\310\0d\310\0d\310"
|
|
||||||
"\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d77\5\310\0d\310"
|
|
||||||
"\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0"
|
|
||||||
"d\5ii\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310"
|
|
||||||
"\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\15I\310\15I\310\15I\310\15"
|
|
||||||
"I\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310\0\0\0\0\0\0\0\0\0\0"
|
|
||||||
"\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\310\0d\310\0d\310\0d\310\0d\310"
|
|
||||||
"\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0"
|
|
||||||
"d\5ii\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310"
|
|
||||||
"\0d\310\0d\310\0d\310\0d\310\0d77\5\310\0d\310\0d\310\0d\310\0d\310\0d\310"
|
|
||||||
"\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\5ii\310\0d\310\0d\310"
|
|
||||||
"\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0"
|
|
||||||
"d\310\0d\310\0d\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310\15"
|
|
||||||
"I\310\15I\310\15I\310\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
|
|
||||||
"\0\0\0\0\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310"
|
|
||||||
"\0d\310\0d\310\0d\310\0d\310\0d\5ii\310\0d\310\0d\310\0d\310\0d\310\0d\310"
|
|
||||||
"\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d77\5\310"
|
|
||||||
"\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0"
|
|
||||||
"d\310\0d\310\0d\310\0d\5ii\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310"
|
|
||||||
"\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\15I\310\15I\310\15I"
|
|
||||||
"\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310\0\0\0\0\0\0"
|
|
||||||
"\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\310\0d\310\0d\310\0d\310"
|
|
||||||
"\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\5ii\310"
|
|
||||||
"\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0"
|
|
||||||
"d\310\0d\310\0d\310\0d\310\0d\310\0d77\5\310\0d\310\0d\310\0d\310\0d\310"
|
|
||||||
"\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0"
|
|
||||||
"d\5ii\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310"
|
|
||||||
"\0d\310\0d\310\0d\310\0d\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310"
|
|
||||||
"\15I\310\15I\310\15I\310\15I\310\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
|
|
||||||
"\0\0\0\0\0\0\0\0\0\0\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310"
|
|
||||||
"\0d\310\0d\310\0d\310\0d\310\0d\5ii\310\0d\310\0d\310\0d\310\0d\310\0d\310"
|
|
||||||
"\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0"
|
|
||||||
"d\310\0d77\5\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310"
|
|
||||||
"\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\5ii\310\0d\310\0d\310"
|
|
||||||
"\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\15I\310"
|
|
||||||
"\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310"
|
|
||||||
"\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\310\0d\310\0"
|
|
||||||
"d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\5ii\310"
|
|
||||||
"\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0"
|
|
||||||
"d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d77\5\310\0d\310\0d\310"
|
|
||||||
"\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0"
|
|
||||||
"d\310\0d\310\0d\310\0d\310\0d\5ii\310\0d\310\0d\310\0d\310\0d\310\0d\310"
|
|
||||||
"\0d\310\0d\310\0d\310\0d\310\0d\310\0d\15I\310\15I\310\15I\310\15I\310\15"
|
|
||||||
"I\310\15I\310\15I\310\15I\310\15I\310\15I\310\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
|
|
||||||
"\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\310\0d\310\0d\310\0d\310\0d\310\0d\310\0"
|
|
||||||
"d\310\0d\310\0d\310\0d\310\0d\5ii\310\0d\310\0d\310\0d\310\0d\310\0d\310"
|
|
||||||
"\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0"
|
|
||||||
"d\310\0d\310\0d\310\0d77\5\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310"
|
|
||||||
"\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0"
|
|
||||||
"d\310\0d\5ii\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310"
|
|
||||||
"\0d\310\0d\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310"
|
|
||||||
"\15I\310\15I\310\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
|
|
||||||
"\0\0\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\5ii\310"
|
|
||||||
"\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0"
|
|
||||||
"d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d77\5\310"
|
|
||||||
"\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0"
|
|
||||||
"d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\5ii\310\0d\310"
|
|
||||||
"\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\15I\310\15I\310\15I"
|
|
||||||
"\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310\0\0\0\0\0\0"
|
|
||||||
"\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\310\0d\310\0d\310\0d\310"
|
|
||||||
"\0d\310\0d\310\0d\310\0d\310\0d\5ii\310\0d\310\0d\310\0d\310\0d\310\0d\310"
|
|
||||||
"\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0"
|
|
||||||
"d\310\0d\310\0d\310\0d\310\0d\310\0d77\5\310\0d\310\0d\310\0d\310\0d\310"
|
|
||||||
"\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0"
|
|
||||||
"d\310\0d\310\0d\310\0d\310\0d\310\0d\5ii\310\0d\310\0d\310\0d\310\0d\310"
|
|
||||||
"\0d\310\0d\310\0d\310\0d\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310"
|
|
||||||
"\15I\310\15I\310\15I\310\15I\310\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
|
|
||||||
"\0\0\0\0\0\0\0\0\0\0\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\5i"
|
|
||||||
"i\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310"
|
|
||||||
"\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0"
|
|
||||||
"d\310\0d77\5\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310"
|
|
||||||
"\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0"
|
|
||||||
"d\310\0d\310\0d\5ii\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\15I"
|
|
||||||
"\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I"
|
|
||||||
"\310\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\310\0d\310"
|
|
||||||
"\0d\310\0d\310\0d\310\0d\310\0d\5ii\310\0d\310\0d\310\0d\310\0d\310\0d\310"
|
|
||||||
"\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0"
|
|
||||||
"d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d77\5\310\0d\310\0d\310"
|
|
||||||
"\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0"
|
|
||||||
"d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\5ii\310"
|
|
||||||
"\0d\310\0d\310\0d\310\0d\310\0d\310\0d\15I\310\15I\310\15I\310\15I\310\15"
|
|
||||||
"I\310\15I\310\15I\310\15I\310\15I\310\15I\310\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
|
|
||||||
"\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\310\0d\310\0d\310\0d\310\0d\310\0d\5ii\310"
|
|
||||||
"\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0"
|
|
||||||
"d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310"
|
|
||||||
"\0d\310\0d\310\0d77\5\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310"
|
|
||||||
"\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0"
|
|
||||||
"d\310\0d\310\0d\310\0d\310\0d\310\0d\5ii\310\0d\310\0d\310\0d\310\0d\310"
|
|
||||||
"\0d\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310"
|
|
||||||
"\15I\310\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\310"
|
|
||||||
"\0d\310\0d\310\0d\310\0d\5ii\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310"
|
|
||||||
"\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0"
|
|
||||||
"d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d77\5\310\0d\310"
|
|
||||||
"\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0"
|
|
||||||
"d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310"
|
|
||||||
"\0d\310\0d\5ii\310\0d\310\0d\310\0d\310\0d\15I\310\15I\310\15I\310\15I\310"
|
|
||||||
"\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310\0\0\0\0\0\0\0\0\0\0\0\0"
|
|
||||||
"\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\310\0d\310\0d\310\0d\5ii\310\0d\310"
|
|
||||||
"\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0"
|
|
||||||
"d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310"
|
|
||||||
"\0d\310\0d\310\0d\310\0d77\5\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310"
|
|
||||||
"\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0"
|
|
||||||
"d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\5ii\310\0d\310"
|
|
||||||
"\0d\310\0d\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310"
|
|
||||||
"\15I\310\15I\310\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
|
|
||||||
"\0\0\310\0d\310\0d\5ii\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310"
|
|
||||||
"\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0"
|
|
||||||
"d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d77\5\310"
|
|
||||||
"\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0"
|
|
||||||
"d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310"
|
|
||||||
"\0d\310\0d\310\0d\310\0d\310\0d\5ii\310\0d\310\0d\15I\310\15I\310\15I\310"
|
|
||||||
"\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310\0\0\0\0\0\0\0\0"
|
|
||||||
"\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\310\0d\5ii\310\0d\310\0d\310"
|
|
||||||
"\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0"
|
|
||||||
"d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310"
|
|
||||||
"\0d\310\0d\310\0d\310\0d\310\0d77\5\310\0d\310\0d\310\0d\310\0d\310\0d\310"
|
|
||||||
"\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0"
|
|
||||||
"d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310"
|
|
||||||
"\0d\5ii\310\0d\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310\15"
|
|
||||||
"I\310\15I\310\15I\310\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
|
|
||||||
"\0\0\0\0\5ii\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310"
|
|
||||||
"\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0"
|
|
||||||
"d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d7"
|
|
||||||
"7\5\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0"
|
|
||||||
"d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310"
|
|
||||||
"\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\310\0d\5ii\15I\310\15I\310"
|
|
||||||
"\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310\0\0\0\0"
|
|
||||||
"\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\5ii\0\0\0\0\0\0\0\0\0\0\0"
|
|
||||||
"\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
|
|
||||||
"\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
|
|
||||||
"\0\0\0\0\0\0\0""77\5\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I"
|
|
||||||
"\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I"
|
|
||||||
"\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I"
|
|
||||||
"\310\15I\310\15I\310\15I\310\15I\310\5ii\15I\310\15I\310\15I\310\15I\310"
|
|
||||||
"\15I\310\15I\310\15I\310\15I\310\15I\310\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
|
|
||||||
"\0\0\0\0\0\0\0\0\5ii\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
|
|
||||||
"\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
|
|
||||||
"\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0""77\5\15I"
|
|
||||||
"\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I"
|
|
||||||
"\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I"
|
|
||||||
"\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I"
|
|
||||||
"\310\15I\310\15I\310\5ii\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310"
|
|
||||||
"\15I\310\15I\310\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\5ii\0\0\0\0\0"
|
|
||||||
"\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
|
|
||||||
"\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
|
|
||||||
"\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0""77\5\15I\310\15I\310\15I\310\15I"
|
|
||||||
"\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I"
|
|
||||||
"\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I"
|
|
||||||
"\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I"
|
|
||||||
"\310\5ii\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310\0\0\0\0"
|
|
||||||
"\0\0\0\0\0\0\0\0\0\0\0\0\0\0\5ii\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
|
|
||||||
"\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
|
|
||||||
"\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
|
|
||||||
"\0\0\0\0\0\0\0""77\5\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I"
|
|
||||||
"\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I"
|
|
||||||
"\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I"
|
|
||||||
"\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310\5ii\15I\310"
|
|
||||||
"\15I\310\15I\310\15I\310\15I\310\15I\310\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\5"
|
|
||||||
"ii\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
|
|
||||||
"\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
|
|
||||||
"\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0""77\5\15I"
|
|
||||||
"\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I"
|
|
||||||
"\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I"
|
|
||||||
"\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I"
|
|
||||||
"\310\15I\310\15I\310\15I\310\15I\310\15I\310\5ii\15I\310\15I\310\15I\310"
|
|
||||||
"\15I\310\15I\310\0\0\0\0\0\0\0\0\0\0\0\0\5ii\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
|
|
||||||
"\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
|
|
||||||
"\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
|
|
||||||
"\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0""77\5\15I\310\15I\310\15I\310\15I"
|
|
||||||
"\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I"
|
|
||||||
"\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I"
|
|
||||||
"\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I"
|
|
||||||
"\310\15I\310\15I\310\15I\310\5ii\15I\310\15I\310\15I\310\15I\310\0\0\0\0"
|
|
||||||
"\0\0\0\0\0\5ii\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
|
|
||||||
"\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
|
|
||||||
"\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
|
|
||||||
"\0\0\0\0\0\0\0""77\5\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I"
|
|
||||||
"\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I"
|
|
||||||
"\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I"
|
|
||||||
"\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I"
|
|
||||||
"\310\15I\310\5ii\15I\310\15I\310\15I\310\0\0\0\0\0\0\5ii\0\0\0\0\0\0\0\0"
|
|
||||||
"\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
|
|
||||||
"\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
|
|
||||||
"\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0""77\5\15I"
|
|
||||||
"\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I"
|
|
||||||
"\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I"
|
|
||||||
"\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I"
|
|
||||||
"\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310\5ii"
|
|
||||||
"\15I\310\15I\310\0\0\0\5ii\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
|
|
||||||
"\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
|
|
||||||
"\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
|
|
||||||
"\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0""77\5\15I\310\15I\310\15I\310\15I"
|
|
||||||
"\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I"
|
|
||||||
"\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I"
|
|
||||||
"\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I"
|
|
||||||
"\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310\5ii\15I\310\5ii\0\0"
|
|
||||||
"\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
|
|
||||||
"\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
|
|
||||||
"\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
|
|
||||||
"\0\0\0\0\0\0\0""77\5\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I"
|
|
||||||
"\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I"
|
|
||||||
"\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I"
|
|
||||||
"\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I\310\15I"
|
|
||||||
"\310\15I\310\15I\310\15I\310\15I\310\5ii",
|
|
||||||
};
|
|
||||||
|
|
|
@ -1,646 +0,0 @@
|
||||||
/* GIMP RGB C-Source image dump (alpha.c) */
|
|
||||||
#include "common.h"
|
|
||||||
|
|
||||||
static const SurfaceImage_t img_blend = {
|
|
||||||
80, 60, 3,
|
|
||||||
"\260e\15\222\356/\37\313\15\36\330\17K\3745D\3471\0\20\0D\3502D\3502<\321"
|
|
||||||
",\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\0-\0\377\377"
|
|
||||||
"\377\377\377\377\311\324\311\377\377\377\377\377\377\377\377\377\377\377"
|
|
||||||
"\377\377\377\377\0H\0\377\377\377\377\377\377\256\307\256\377\377\377\377"
|
|
||||||
"\377\377\377\377\377\377\377\377\377\377\377\0c\0\377\377\377\377\377\377"
|
|
||||||
"\223\300\223\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377"
|
|
||||||
"\0~\0\377\377\377\377\377\377x\277x\377\377\377\377\377\377\377\377\377\377"
|
|
||||||
"\377\377\377\377\377\0\231\0\377\377\377\377\377\377]\303]\377\377\377\377"
|
|
||||||
"\377\377\377\377\377\377\377\377\377\377\377\0\264\0\377\377\377\377\377"
|
|
||||||
"\377B\316B\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\0"
|
|
||||||
"\317\0\377\377\377\377\377\377'\335'\377\377\377\377\377\377\377\377\377"
|
|
||||||
"\377\377\377\377\377\377\0\352\0\377\377\377#\262\6\260d\15\260e\15\224\357"
|
|
||||||
"/&\262\6\34\300\5.\314\22\40\315\12[\3747M\332/\27\331\12\27\331\12K\374"
|
|
||||||
"5K\3745K\3745D\3471D\3471D\3471D\3471D\3471D\3502D\3502D\3502D\3502D\350"
|
|
||||||
"2D\3502D\3502D\3502D\3502D\3502\377\377\377\377\377\377\377\377\377\377\377"
|
|
||||||
"\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377"
|
|
||||||
"\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377"
|
|
||||||
"\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377"
|
|
||||||
"\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377"
|
|
||||||
"\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377"
|
|
||||||
"\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377"
|
|
||||||
"\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377"
|
|
||||||
"\377\377\377\377\377\377\377\377\377\377\377\377\377,\372\27\273\3465\327"
|
|
||||||
"Q.\260d\15\213\213\40\241\3601\200\366*=\265\13?\301\25s\375<Y\316-X\320"
|
|
||||||
"-!\315\13]\3749]\3749O\3321O\3321P\3342P\3342P\3342\371\377\364\371\377\364"
|
|
||||||
"\371\377\364\371\377\364\371\377\364\362\375\360\362\375\360\362\375\360"
|
|
||||||
"\362\375\360\362\375\360D\3471D\3471D\3471D\3502D\3502D\3502D\3502D\3502"
|
|
||||||
"D\3502D\3502D\3502D\3502D\3502D\3502D\3502D\3502D\3502D\3502D\3502D\3502"
|
|
||||||
"\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377"
|
|
||||||
"\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377"
|
|
||||||
"\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377"
|
|
||||||
"\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377"
|
|
||||||
"\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377"
|
|
||||||
"K\3745&\262\6\213\213\40\11\2\0\260`\15\241~#m}\11\273\363AQ\247\15S\266"
|
|
||||||
"\31\212\373@e\302,\4\33\2s\375<\\\3161M\260*\\\3202X\320-\366\377\354\364"
|
|
||||||
"\377\352O\3321\3""5\2O\3321O\3321<\261&P\3342P\3342S\3655\377\377\377\377"
|
|
||||||
"\377\377\14Z\14\377\377\377\377\377\377\234\302\231\371\377\364\362\375\360"
|
|
||||||
"\367\377\365\362\375\360\362\375\360\13t\13\362\375\360\362\375\360\177\275"
|
|
||||||
"~\362\375\360\362\375\360\370\377\366\362\375\360\377\377\377\14\220\14\377"
|
|
||||||
"\377\377D\3502\"\267\33D\3502D\3502K\3779D\3502D\3502\3\233\2D\3502D\350"
|
|
||||||
"2\34\303\26D\3502D\3502L\377:D\3502D\3502\3\264\2D\3502D\3502\25\323\22\377"
|
|
||||||
"\377\377\377\377\377\377\377\377\377\377\377\377\377\377\14\341\14\377\377"
|
|
||||||
"\377\377\377\377\40\353\40\377\377\377D\3471\34\300\5e\247\33\356\336?\277"
|
|
||||||
"f)\260P\17\260i\16\356\336?\331\353C\274\363GQ\247\15\243\370Cp\270)\212"
|
|
||||||
"\373@h\3021h\3042c\304+\364\377\336\\\3161\\\3161\\\3202\\\3202\\\3202\377"
|
|
||||||
"\377\377\364\377\352\364\377\352\346\371\342\346\371\342O\3321O\3321P\334"
|
|
||||||
"2P\3342P\3342P\3342P\3342P\3342\377\377\377\377\377\377\377\377\377\377\377"
|
|
||||||
"\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377"
|
|
||||||
"\377\377\377\377\362\375\360\362\375\360\362\375\360\362\375\360\362\375"
|
|
||||||
"\360\362\375\360\362\375\360\362\375\360\362\375\360\362\375\360\362\375"
|
|
||||||
"\360\362\375\360\362\375\360\377\377\377\377\377\377\377\377\377\377\377"
|
|
||||||
"\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377"
|
|
||||||
"\377D\3502D\3502D\3502D\3502D\3502D\3502D\3502D\3502D\3502D\3502D\3502\40"
|
|
||||||
"\315\12=\265\13f\230\14\237y\15\274Y\17\327Q.\260X\14\243\177$\220\214\""
|
|
||||||
"\215\235*\274\363G\177\252+\243\370Cu\2661p\270)\367\377\324h\3021h\3021"
|
|
||||||
"h\3042\364\377\336\364\377\336\335\364\323\\\3161\\\3161\\\3202\\\3202\\"
|
|
||||||
"\3202\377\377\377\377\377\377\364\377\352\364\377\352\346\371\342\346\371"
|
|
||||||
"\342\346\371\342\346\371\342O\3321P\3342P\3342P\3342P\3342P\3342P\3342P\334"
|
|
||||||
"2\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377"
|
|
||||||
"\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377"
|
|
||||||
"\377\377\377\377\377\377\377\377\377\377\377\377\362\375\360\362\375\360"
|
|
||||||
"\362\375\360\362\375\360\362\375\360\362\375\360\362\375\360\362\375\360"
|
|
||||||
"\362\375\360\362\375\360\362\375\360\362\375\360\362\375\360\377\377\377"
|
|
||||||
"\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377"
|
|
||||||
"\6\0\4[\3747?\301\25N\241\14\331\353C\243\177$\275Z\21\377\254W\260Q\17\30"
|
|
||||||
"\26\7\370\343N\201\210\16|\213-\274\363G\200\2521\202\263+\243\370Cu\266"
|
|
||||||
"1\12&\4\367\377\324h\3021S\241)h\3042h\3042\377\377\377\364\377\336\335\364"
|
|
||||||
"\323\24M\23\\\3161\\\3202C\245(\\\3202\\\3202\377\377\377\377\377\377\377"
|
|
||||||
"\377\377\30l\30\346\371\342\346\371\342\207\273\205\346\371\342\346\371\342"
|
|
||||||
"\361\377\355\377\377\377P\3342\7t\4P\3342P\3342/\260\"P\3342P\3342^\377@"
|
|
||||||
"\377\377\377\377\377\377\30\242\30\377\377\377\377\377\377d\306d\377\377"
|
|
||||||
"\377\377\377\377\377\377\377\377\377\377\377\377\377\30\275\30\377\377\377"
|
|
||||||
"\377\377\377K\322K\377\377\377\377\377\377\377\377\377\377\377\377\377\377"
|
|
||||||
"\377\30\330\30\362\375\360\362\375\3601\3431\362\375\360\362\375\360\377"
|
|
||||||
"\377\377\362\375\360D\3502M\332/s\375<>\265\14\177\252+\201\210\16\245\204"
|
|
||||||
"*\377\314U\312\\,\224'\11\260i\17\244\210\40\232\2211\331\353J\215\2351\377"
|
|
||||||
"\377\276\200\2521\200\2542\375\377\310u\2661t\2702t\2702\367\377\324\325"
|
|
||||||
"\355\305h\3021h\3042h\3042\377\377\377\377\377\377\364\377\336\335\364\323"
|
|
||||||
"\335\364\323\335\364\323\\\3202\\\3202\\\3202\\\3202\\\3202\377\377\377\377"
|
|
||||||
"\377\377\377\377\377\377\377\377\377\377\377\346\371\342\346\371\342\346"
|
|
||||||
"\371\342\346\371\342\346\371\342\346\371\342\346\371\342\377\377\377\377"
|
|
||||||
"\377\377P\3342P\3342P\3342P\3342P\3342P\3342P\3342P\3342\377\377\377\377"
|
|
||||||
"\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377"
|
|
||||||
"\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377"
|
|
||||||
"\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377"
|
|
||||||
"\377\377\377\377\377\27\331\12Y\316-h\3021\243\370Cg\230\15\230\224\"\245"
|
|
||||||
"\204*\377\314U\310J\21\327Q.\260b\21\245\2041\370\343N\230\2242\331\353J"
|
|
||||||
"\214\2402\377\377\276\200\2521\200\2542\375\377\310\317\344\266u\2661t\270"
|
|
||||||
"2\377\377\377\367\377\324\325\355\305h\3021h\3042h\3042h\3042\377\377\377"
|
|
||||||
"\377\377\377\364\377\336\335\364\323\335\364\323\335\364\323\335\364\323"
|
|
||||||
"\\\3202\\\3202\\\3202\\\3202\377\377\377\377\377\377\377\377\377\377\377"
|
|
||||||
"\377\377\377\377\377\377\377\377\377\377\377\377\377\346\371\342\346\371"
|
|
||||||
"\342\346\371\342\346\371\342\346\371\342\346\371\342\377\377\377\377\377"
|
|
||||||
"\377\377\377\377\377\377\377P\3342P\3342P\3342P\3342P\3342P\3342P\3342P\334"
|
|
||||||
"2\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377"
|
|
||||||
"\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377"
|
|
||||||
"\377\377\377K\3745!\315\13d\304,p\270)\177\252+\23\13\6\232\2211\245\204"
|
|
||||||
"1\347\270O\377\277Y\324<\22\265V\24\377\330Q\244\210\40#(\13\230\224\"\331"
|
|
||||||
"\353Ju\211.\377\377\276\200\2521\210\273:\200\2542\375\377\310\20""3\6u\266"
|
|
||||||
"1t\2702\271\307\271\367\377\324\325\355\305\341\377\321h\3021h\3042\16L\7"
|
|
||||||
"h\3042\377\377\377\242\300\242\377\377\377\335\364\323\355\377\343\335\364"
|
|
||||||
"\323\335\364\323\14f\7\\\3202\\\3202>\250*\\\3202\377\377\377\377\377\377"
|
|
||||||
"\377\377\377\377\377\377$\231$\377\377\377\377\377\377s\303s\377\377\377"
|
|
||||||
"\346\371\342\376\377\372\346\371\342\346\371\342\40\257\37\346\371\342\346"
|
|
||||||
"\371\342\\\316\\\377\377\377\377\377\377\377\377\377\377\377\377P\3342\13"
|
|
||||||
"\262\7P\3342P\3342*\327%P\3342P\3342o\377Q\377\377\377\377\377\377$\352$"
|
|
||||||
"\377\377\377\377\377\377K\3745]\3749s\375<\212\373@\243\370C\274\363G\331"
|
|
||||||
"\353J\370\343N\377\330Q\377\314U\377\277Y\377\260\\\224(\11\260|\36\245\204"
|
|
||||||
"1\377\377\250\232\2211\230\224\"\215\2351\214\2402\377\377\276\312\332\250"
|
|
||||||
"\200\2521\200\2542\377\377\377\317\344\266u\2661t\2702t\2702\377\377\377"
|
|
||||||
"\377\377\377\325\355\305\325\355\305\325\355\305h\3042h\3042h\3042\377\377"
|
|
||||||
"\377\377\377\377\377\377\377\377\377\377\335\364\323\335\364\323\335\364"
|
|
||||||
"\323\335\364\323\335\364\323\\\3202\\\3202\\\3202\\\3202\\\3202\377\377\377"
|
|
||||||
"\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377"
|
|
||||||
"\377\377\377\377\377\377\377\377\377\377\377\377\346\371\342\346\371\342"
|
|
||||||
"\346\371\342\346\371\342\346\371\342\346\371\342\346\371\342\377\377\377"
|
|
||||||
"\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377P\3342P\3342"
|
|
||||||
"P\3342P\3342\377\377\377K\3745O\3321\\\3161h\3021t\2702~\254'\214\240%\377"
|
|
||||||
"\377\262\370\343N\377\330Q\262x1\277l1\312`1\327R.\260X\23\377\330Q\244\210"
|
|
||||||
"2\377\377\250\230\2242\377\377\262\215\2351\214\2402\377\377\377\312\332"
|
|
||||||
"\250\200\2521\200\2542\377\377\377\375\377\310\317\344\266u\2661t\2702t\270"
|
|
||||||
"2\377\377\377\377\377\377\325\355\305\325\355\305\325\355\305h\3042h\304"
|
|
||||||
"2h\3042h\3042\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377"
|
|
||||||
"\335\364\323\335\364\323\335\364\323\335\364\323\377\377\377\\\3202\\\320"
|
|
||||||
"2\\\3202\\\3202\\\3202\377\377\377\377\377\377\377\377\377\377\377\377\377"
|
|
||||||
"\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377"
|
|
||||||
"\377\377\377\377\377\377\377\377\346\371\342\346\371\342\346\371\342\346"
|
|
||||||
"\371\342\346\371\342\346\371\342\377\377\377\377\377\377\377\377\377\377"
|
|
||||||
"\377\377\377\377\377D\3471O\3321\21\7\11c\304+\367\377\324o\2520\200\252"
|
|
||||||
"1\214\2402\235\226'\377\377\250\377\330Q!\20\11\277l1\310d2\266?\33\224("
|
|
||||||
"\11\260|\36\257\217;\377\377\250\232\2211\34$\11\377\377\262\215\2351q\206"
|
|
||||||
"0\377\377\377\312\332\250\217\303@\200\2542\200\25420Z0\317\344\266\317\344"
|
|
||||||
"\266X\2260t\2702t\2702\377\377\377\377\377\377\325\355\305(l%\325\355\305"
|
|
||||||
"\325\355\305K\2410h\3042h\3042\377\377\377\377\377\377\377\377\3770\2200"
|
|
||||||
"\377\377\377\377\377\377t\274p\335\364\323\335\364\323\373\377\361\377\377"
|
|
||||||
"\377\377\377\377\21\213\11\\\3202\\\3202<\274/\\\3202\377\377\377\377\377"
|
|
||||||
"\377\377\377\377\377\377\3770\3060\377\377\377\377\377\377V\330V\377\377"
|
|
||||||
"\377\377\377\377\377\377\377\377\377\377\377\377\3770\3410\346\371\342\346"
|
|
||||||
"\371\342>\352>\346\371\342\377\377\377D\3471P\3342\364\377\352s\375<h\302"
|
|
||||||
"1t\2702~\254'\377\377\276\215\2351\230\2242\244\210\40\377\377\234\262x1"
|
|
||||||
"\277l1\310W\32\377\260\\\327T1\260|2\377\330Q\244\2102\377\377\250\232\221"
|
|
||||||
"1\230\2242\377\377\262\215\2351\214\2402\377\377\377\377\377\276\312\332"
|
|
||||||
"\250\200\2542\200\2542\377\377\377\375\377\310\317\344\266\317\344\266t\270"
|
|
||||||
"2t\2702t\2702\377\377\377\377\377\377\377\377\377\325\355\305\325\355\305"
|
|
||||||
"\325\355\305h\3042h\3042h\3042h\3042\377\377\377\377\377\377\377\377\377"
|
|
||||||
"\377\377\377\377\377\377\377\377\377\335\364\323\335\364\323\335\364\323"
|
|
||||||
"\335\364\323\335\364\323\377\377\377\377\377\377\\\3202\\\3202\\\3202\\\320"
|
|
||||||
"2\\\3202\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377"
|
|
||||||
"\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377"
|
|
||||||
"\377\377\377\377\377\377\377\377D\3471P\3342\364\377\352\\\3161h\3042\367"
|
|
||||||
"\377\324u\2661\200\2542\214\240%\377\377\262\232\2211\244\2102\377\377\234"
|
|
||||||
"\262x1\274p2\377\337\207\377\260\\\327T1\227/\14\377\377\234\245\2041\244"
|
|
||||||
"\2102\307\300\213\230\2242\377\377\377\377\377\262\215\2351\214\2402\377"
|
|
||||||
"\377\377\377\377\276\312\332\250\200\2542\200\2542\377\377\377\377\377\377"
|
|
||||||
"\317\344\266\317\344\266\317\344\266t\2702t\2702\377\377\377\377\377\377"
|
|
||||||
"\377\377\377\377\377\377\325\355\305\325\355\305\325\355\305\377\377\377"
|
|
||||||
"h\3042h\3042h\3042h\3042\377\377\377\377\377\377\377\377\377\377\377\377"
|
|
||||||
"\377\377\377\377\377\377\377\377\377\335\364\323\335\364\323\335\364\323"
|
|
||||||
"\335\364\323\377\377\377\377\377\377\377\377\377\\\3202\\\3202\\\3202\\\320"
|
|
||||||
"2\\\3202\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377"
|
|
||||||
"\377\377\377\377\377\377\377\377<\0<D\3502\371\377\364N\3221\\\3202\364\377"
|
|
||||||
"\336l\3035t\2702\375\377\310\36\22\13\214\2402\377\377\262\214\2012\244\210"
|
|
||||||
"2\377\377\234\274\177;\274p2\377\337\207/\24\13\324X2\227/\14\222l3\307\260"
|
|
||||||
"|\244\2102\377\377\270\232\2211\230\2242<Q<\310\316\231\215\2351o\2065\377"
|
|
||||||
"\377\377\377\377\276\341\377\277\200\2521\200\2542\36H\13\377\377\377\377"
|
|
||||||
"\377\377\213\260}\317\344\266t\2702\221\366Ot\2702\377\377\377<\207<\377"
|
|
||||||
"\377\377\377\377\377}\270v\325\355\305\325\355\305\371\377\351\377\377\377"
|
|
||||||
"h\3042\30|\13h\3042\377\377\377|\306|\377\377\377\377\377\377\377\377\377"
|
|
||||||
"\377\377\377\377\377\377<\275<\335\364\323\335\364\323_\317]\335\364\323"
|
|
||||||
"\335\364\323\377\377\377\377\377\377\377\377\377\25\260\13\\\3202\\\3202"
|
|
||||||
">\3369\\\3202\377\377\377\377\377\377\377\377\377\377\377\377D\3502\371\377"
|
|
||||||
"\364O\3321\\\3202\364\377\336h\3042\367\377\324u\2661\200\2542\377\377\276"
|
|
||||||
"\215\2351\230\2242\307\300\213\244\2102\377\377\234\262x1\274p2\377\337\207"
|
|
||||||
"\312`1\324E\30\327T1\260|2\377\377\234\245\2041\244\2102\377\377\250\232"
|
|
||||||
"\2211\230\2242\377\377\377\310\316\231\215\2351\214\2402\377\377\377\377"
|
|
||||||
"\377\377\312\332\250\312\332\250\200\2542\200\2542\377\377\377\377\377\377"
|
|
||||||
"\317\344\266\317\344\266\317\344\266t\2702t\2702t\2702\377\377\377\377\377"
|
|
||||||
"\377\377\377\377\377\377\377\377\377\377\325\355\305\325\355\305\325\355"
|
|
||||||
"\305\377\377\377h\3042h\3042h\3042h\3042\377\377\377\377\377\377\377\377"
|
|
||||||
"\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377"
|
|
||||||
"\377\335\364\323\335\364\323\335\364\323\335\364\323\377\377\377\377\377"
|
|
||||||
"\377\377\377\377\377\377\377\\\3202\\\3202\\\3202\377\377\377D\3502\371\377"
|
|
||||||
"\364O\3321\377\377\377\\\3161h\3042\367\377\324t\2702\375\377\310\200\252"
|
|
||||||
"1\377\377\377\215\2351\230\2242\377\377\250\244\2102\377\377\234\262x1\274"
|
|
||||||
"p2\316\214_\310d2\377\310|\327T1\227/\14\377\377\377\307\260|\244\2102\377"
|
|
||||||
"\377\377\307\300\213\230\2242\230\2242\377\377\377\310\316\231\214\2402\214"
|
|
||||||
"\2402\377\377\377\377\377\377\312\332\250\312\332\250\200\2542\200\2542\377"
|
|
||||||
"\377\377\377\377\377\377\377\377\317\344\266\317\344\266\317\344\266t\270"
|
|
||||||
"2t\2702t\2702\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377"
|
|
||||||
"\325\355\305\325\355\305\325\355\305\377\377\377\377\377\377h\3042h\3042"
|
|
||||||
"h\3042\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377"
|
|
||||||
"\377\377\377\377\377\377\377\377\377\377\377\377\377\335\364\323\335\364"
|
|
||||||
"\323\335\364\323\335\364\323\377\377\377\377\377\377\377\377\377\377\377"
|
|
||||||
"\377D\3502\371\377\364R\3344\364\377\352\\\3161H\22Hh\3021\377\377\377o\244"
|
|
||||||
"2\200\2542\312\332\250\226\245<\377\377\262\230\2242H-/\245\2041\377\377"
|
|
||||||
"\377\233i5\274p2\277l1\331sC\377\310|\324X2*\15\3\260|2\377\377\234\206s"
|
|
||||||
"7\244\2102\377\377\250\340\337\244\230\2242\377\377\377Hc2\310\316\231\214"
|
|
||||||
"\2402n\211:\377\377\377\377\377\377\353\377\311\312\332\250\200\2542$T\16"
|
|
||||||
"\377\377\377\377\377\377\236\277\236\377\377\377\317\344\266\367\377\336"
|
|
||||||
"\377\377\377t\2702\40n\16t\2702\377\377\377\212\303\212\377\377\377\377\377"
|
|
||||||
"\377\377\377\377\325\355\305\325\355\305<\2477\377\377\377\377\377\377O\276"
|
|
||||||
"Ah\3042h\3042\237\377i\377\377\377\377\377\377H\317H\377\377\377\377\377"
|
|
||||||
"\377c\335c\377\377\377\377\377\377\377\377\377\377\377\377\335\364\323>\337"
|
|
||||||
";\335\364\323\377\377\377D\3502\362\375\360P\3342\346\371\342\\\3202\364"
|
|
||||||
"\377\336h\3042\367\377\324t\2702\375\377\310\200\2542\377\377\276\214\240"
|
|
||||||
"2\377\377\262\232\2211\377\377\377\245\2041\377\377\377\262x1\377\377\377"
|
|
||||||
"\277l1\310d2\312`1\324X2\327T1\260|2\377\377\377\307\260|\244\2102\377\377"
|
|
||||||
"\377\307\300\213\232\2211\230\2242\377\377\377\377\377\262\310\316\231\214"
|
|
||||||
"\2402\214\2402\377\377\377\377\377\377\312\332\250\312\332\250\200\2542\200"
|
|
||||||
"\2542\200\2542\377\377\377\377\377\377\377\377\377\317\344\266\317\344\266"
|
|
||||||
"\317\344\266\377\377\377t\2702t\2702t\2702\377\377\377\377\377\377\377\377"
|
|
||||||
"\377\377\377\377\377\377\377\325\355\305\325\355\305\325\355\305\325\355"
|
|
||||||
"\305\377\377\377\377\377\377h\3042h\3042h\3042h\3042\377\377\377\377\377"
|
|
||||||
"\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377"
|
|
||||||
"\377\377\377\377\377\377\377D\3502\362\375\360P\3342\346\371\342\\\3202\335"
|
|
||||||
"\364\323h\3042\325\355\305t\2702\317\344\266\377\377\377\200\2521\377\377"
|
|
||||||
"\377\215\2351\377\377\377\232\2211\377\377\377\245\2041\377\377\377\262x"
|
|
||||||
"1\377\377\377\277l1\377\377\377\312`1\377\310|\327T1\227/\14\377\377\377"
|
|
||||||
"\307\260|\244\2102\244\2102\377\377\377\307\300\213\230\2242\230\2242\377"
|
|
||||||
"\377\377\310\316\231\310\316\231\214\2402\214\2402\377\377\377\377\377\377"
|
|
||||||
"\312\332\250\312\332\250\377\377\377\200\2542\200\2542\377\377\377\377\377"
|
|
||||||
"\377\377\377\377\377\377\377\317\344\266\317\344\266\377\377\377\377\377"
|
|
||||||
"\377t\2702t\2702\377\377\377\377\377\377\377\377\377\377\377\377\377\377"
|
|
||||||
"\377\377\377\377\377\377\377\325\355\305\325\355\305\325\355\305\377\377"
|
|
||||||
"\377\377\377\377\377\377\377h\3042h\3042h\3042\377\377\377\377\377\377\377"
|
|
||||||
"\377\377\377\377\377\377\377\377\377\377\377\377\377\377D\3502\362\375\360"
|
|
||||||
"T\11TO\3321\377\377\377Z\3002\377\377\377h\3042\377\377\334t\2702\375\377"
|
|
||||||
"\310*\30\20\312\332\250\214\2402\262\260\214\230\2242\307\300\213\377\377"
|
|
||||||
"\377\245\2041\377\377\377:\35\20\377\377\377\277l1\316\264w\310d2\377\310"
|
|
||||||
"|\356qL\227/\14\260|2TZ3\307\260|\244\2102\274\302\274\307\300\213\307\300"
|
|
||||||
"\213\273\301U\377\377\377\377\377\377A^2\310\316\231\214\2402o\216B\377\377"
|
|
||||||
"\377\377\377\377\366\377\324\312\332\250\312\332\250*a\20\200\2542\377\377"
|
|
||||||
"\377\230\301\230\377\377\377\377\377\377\377\377\353\317\344\266\317\344"
|
|
||||||
"\266T\253Tt\2702t\2702]\265I\377\377\377\377\377\377\377\377\377\377\377"
|
|
||||||
"\377\377\377\377T\306T\377\377\377\325\355\305l\324i\325\355\305\377\377"
|
|
||||||
"\377\377\377\377\377\377\377h\3042\"\254\20h\3042h\3042b\353b\377\377\377"
|
|
||||||
"\377\377\377D\3502\362\375\360\377\377\377O\3321\377\377\377\\\3202\364\377"
|
|
||||||
"\336h\3042\325\355\305t\2702\317\344\266\377\377\377\200\2521\377\377\377"
|
|
||||||
"\214\2402\377\377\262\230\2242\307\300\213\244\2102\307\260|\377\377\377"
|
|
||||||
"\262x1\377\377\377\274p2\377\337\207\310d2\377\310|\324X2\333bB\260|2\377"
|
|
||||||
"\377\377\307\260|\244\2102\244\2102\377\377\377\307\300\213\232\2211\230"
|
|
||||||
"\2242\377\377\377\377\377\377\310\316\231\310\316\231\214\2402\214\2402\377"
|
|
||||||
"\377\377\377\377\377\377\377\377\312\332\250\312\332\250\200\2542\200\254"
|
|
||||||
"2\200\2542\377\377\377\377\377\377\377\377\377\377\377\377\317\344\266\317"
|
|
||||||
"\344\266\317\344\266\377\377\377t\2702t\2702t\2702\377\377\377\377\377\377"
|
|
||||||
"\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\325\355\305"
|
|
||||||
"\325\355\305\325\355\305\325\355\305\377\377\377\377\377\377\377\377\377"
|
|
||||||
"h\3042h\3042\377\377\377\377\377\377D\3471\377\377\377P\3342\364\377\352"
|
|
||||||
"\\\3202\335\364\323\377\377\377h\3021\377\377\377t\2702\375\377\310\200\254"
|
|
||||||
"2\312\332\250\377\377\377\215\2351\377\377\377\230\2242\377\377\250\244\210"
|
|
||||||
"2\307\260|\377\377\377\262x1\377\377\377\274p2\377\337\207\310d2\323xQ\324"
|
|
||||||
"X2\327T1\227/\14\260|2\377\377\234\307\260|\244\2102\377\377\377\377\377"
|
|
||||||
"\377\307\300\213\230\2242\230\2242\377\377\377\377\377\377\310\316\231\310"
|
|
||||||
"\316\231\214\2402\214\2402\377\377\377\377\377\377\377\377\377\312\332\250"
|
|
||||||
"\312\332\250\377\377\377\200\2542\200\2542\377\377\377\377\377\377\377\377"
|
|
||||||
"\377\377\377\377\377\377\377\317\344\266\317\344\266\377\377\377\377\377"
|
|
||||||
"\377t\2702t\2702t\2702\377\377\377\377\377\377\377\377\377\377\377\377\377"
|
|
||||||
"\377\377\377\377\377\377\377\377\377\377\377\325\355\305\325\355\305\325"
|
|
||||||
"\355\305\377\377\377\377\377\377`\0`\377\377\377D\3471\371\366\371P\3342"
|
|
||||||
"\346\371\342\377\377\377\\\3161\377\377\377'\24\22\325\355\305t\2702\276"
|
|
||||||
"\310\251\377\377\377\200\2542\377\377\316\214\2402\310\316\231`6`\230\224"
|
|
||||||
"2\377\377\250\222u<\307\260|\377\377\377\315\214L\377\377\377\274p2M,#\310"
|
|
||||||
"d2\312`1\306\304\306\324X2\333bB\325\242W\377\377\377\307\260|=9\22\244\210"
|
|
||||||
"2\377\377\377\227\234w\307\300\213\230\2242\307\322a\377\377\377\377\377"
|
|
||||||
"\377Km9\310\316\231\214\2402r\226K\377\377\377\377\377\377\377\377\377\312"
|
|
||||||
"\332\250\312\332\250`\242`\200\2542\200\2542\224\306\224\377\377\377\377"
|
|
||||||
"\377\377\377\377\377\377\377\377\317\344\266M\250D\317\344\266\377\377\377"
|
|
||||||
"\203\322\203t\2702t\2702\301\377\177\377\377\377\377\377\377`\330`\377\377"
|
|
||||||
"\377\377\377\377r\344r\377\377\377\377\377\377\377\377\377\325\355\305\377"
|
|
||||||
"\377\377\377\377\377D\3502\371\377\364P\3342\346\371\342\377\377\377\\\320"
|
|
||||||
"2\364\377\336h\3042\325\355\305\377\377\377t\2702\317\344\266\200\2542\312"
|
|
||||||
"\332\250\377\377\377\214\2402\310\316\231\230\2242\307\300\213\377\377\377"
|
|
||||||
"\244\2102\307\260|\377\377\377\200U0\220^\377\7\4/\227U[\246]\377\255Q1\377"
|
|
||||||
"\242y\10\3/\306M@\6\4/{^\377mVvmVv\6\5/h\\\377h\\\377\\U\204\12\12\360\5"
|
|
||||||
"\5/VX\377VX\377\12\12\360LR\221\12\12\360\5\6/\214\2402\377\377\377\377\377"
|
|
||||||
"\377\377\377\377\312\332\250\312\332\250\377\377\377\200\2542\200\2542\200"
|
|
||||||
"\2542\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\317\344"
|
|
||||||
"\266\317\344\266\317\344\266\377\377\377\377\377\377t\2702t\2702\377\377"
|
|
||||||
"\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377"
|
|
||||||
"\377\377\377\377\377\377\377\377\377\377D\3502\362\375\360P\3342\346\371"
|
|
||||||
"\342\377\377\377\\\3202\335\364\323\377\377\377h\3042\367\377\324t\2702\317"
|
|
||||||
"\344\266\377\377\377\200\2542\312\332\250\377\377\377\214\2402\377\377\262"
|
|
||||||
"\230\2242\307\300\213\377\377\377\244\2102\307\260|{^\377\200U0\220^\377"
|
|
||||||
"\7\4/\227U[\246]\377\7\3/\377\242y\236\37""2\306M0\210%\14T-2{^\377mVv\6"
|
|
||||||
"\5/\6\5/h\\\377\\U\204\\U\204\5\5/\5\5/VX\377VX\377LR\221LR\221\377\377\377"
|
|
||||||
"\214\2402\214\2402\377\377\377\377\377\377\377\377\377\312\332\250\312\332"
|
|
||||||
"\250\312\332\250\377\377\377\200\2542\200\2542\377\377\377\377\377\377\377"
|
|
||||||
"\377\377\377\377\377\377\377\377\377\377\377\317\344\266\317\344\266\377"
|
|
||||||
"\377\377\377\377\377t\2702t\2702t\2702\377\377\377\377\377\377\377\377\377"
|
|
||||||
"\377\377\377\377\377\377\377\377\377\377\377\377D\3502\365\375\363\377\377"
|
|
||||||
"\377O\3321l\22l\\\3202\335\364\323\357\346\357h\3042\325\355\305\377\377"
|
|
||||||
"\377t\2702\317\344\266l-l\200\2521\377\377\377\204\211=\310\316\231\377\377"
|
|
||||||
"\377\262\243L\307\300\213\377\377\377E&\25mVv{^\377ySB\220^\377\7\4/\275"
|
|
||||||
"t\201\246]\377\7\3/I\37!\277Z\377\10\3/\237YQ\6\4/{^\377\236\213\247mVv\6"
|
|
||||||
"\5/,-lh\\\377\\U\204dow\5\5/\5\5/\222\251\377VX\377\310\316\231T{@\377\377"
|
|
||||||
"\377\214\2402w\240V\377\377\377\377\377\377\377\377\377\377\377\377\312\332"
|
|
||||||
"\250U\231G\377\377\377\200\2542q\270\\\377\377\377\377\377\377\377\377\377"
|
|
||||||
"\377\377\377\377\377\377l\317l\317\344\266\317\344\266z\330v\377\377\377"
|
|
||||||
"\377\377\377\323\377\221t\2702t\2702l\352l\377\377\377\377\377\377\377\377"
|
|
||||||
"\377D\3502\362\375\360\377\377\377P\3342\346\371\342\377\377\377\\\3202\364"
|
|
||||||
"\377\336h\3042\325\355\305\377\377\377t\2702\317\344\266\377\377\377\200"
|
|
||||||
"\2542\312\332\250\377\377\377\214\2402\310\316\231\377\377\377\230\2242\307"
|
|
||||||
"\300\213\377\377\377\6\5/mVv{^\377\200U0\220^\377\7\4/\227U[\246]\377\7\3"
|
|
||||||
"/\255RN\277Z\377\10\3/\306M@\6\4/{^\377{^\377mVv\6\5/\6\5/h\\\377h\\\377"
|
|
||||||
"\\U\204\12\12\360\5\5/\12\12\360\377\377\377\377\377\377\310\316\231\310"
|
|
||||||
"\316\231\377\377\377\214\2402\214\2402\377\377\377\377\377\377\377\377\377"
|
|
||||||
"\377\377\377\312\332\250\312\332\250\377\377\377\200\2542\200\2542\200\254"
|
|
||||||
"2\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377"
|
|
||||||
"\317\344\266\317\344\266\317\344\266\377\377\377\377\377\377t\2702t\2702"
|
|
||||||
"\377\377\377\377\377\377D\3502\362\375\360\377\377\377P\3342\346\371\342"
|
|
||||||
"\377\377\377\\\3202\335\364\323\377\377\377h\3042\325\355\305\377\377\377"
|
|
||||||
"t\2702\317\344\266\377\377\377\200\2542\312\332\250\377\377\377\214\2402"
|
|
||||||
"\310\316\231\377\377\377\230\2242\307\300\213h\\\377\6\5/mVv{^\377\200U0"
|
|
||||||
"\220^\377\7\4/\227U[\246]\377\7\3/\255RN\277Z\377\10\3/\306M@\6\4/\6\4/{"
|
|
||||||
"^\377mVvmVv\6\5/\12\12\360h\\\377\\U\204\\U\204\5\5/\230\2242\377\377\377"
|
|
||||||
"\377\377\377\377\377\377\310\316\231\310\316\231\377\377\377\214\2402\214"
|
|
||||||
"\2402\377\377\377\377\377\377\377\377\377\377\377\377\312\332\250\312\332"
|
|
||||||
"\250\377\377\377\377\377\377\200\2542\200\2542\377\377\377\377\377\377\377"
|
|
||||||
"\377\377\377\377\377\377\377\377\377\377\377\377\377\377\317\344\266\317"
|
|
||||||
"\344\266\377\377\377\377\377\377\377\377\377\377\377\377D\3502q\10p\377\377"
|
|
||||||
"\377P\3342\335\350\332\377\377\377\\\3202\351\366\337\377\377\377h\3042d"
|
|
||||||
"!\\\377\377\377t\2702\277\302\252\377\377\377\200\2542\343\345\301\377\377"
|
|
||||||
"\377\214\2402^2H\377\377\377\230\2242\257\235\204h\\\377\6\5/\223o\234{^"
|
|
||||||
"\377\6\4/<\36""1\377\252\215j)2\211XK\377\250\203\202$2\337~c\377\242y\236"
|
|
||||||
"\37""2]#\26\306M@\6\4/ym\274{^\377mVvELn\6\5/h\\\37703x\\U\204\307\300\213"
|
|
||||||
"\204\226\\\230\2242\377\377\377\377\377\377\377\377\377\310\316\231^\212"
|
|
||||||
"H\377\377\377\214\2402}\256b\377\377\377\377\377\377\377\377\377\377\377"
|
|
||||||
"\377\312\332\250_\251O\377\377\377\377\377\377y\310j\200\2542\377\377\377"
|
|
||||||
"\377\377\377\377\377\377\377\377\377x\341x\377\377\377\377\377\377\177\350"
|
|
||||||
"|\317\344\266\377\377\377\377\377\377D\3502\362\375\360\377\377\377P\334"
|
|
||||||
"2\346\371\342\377\377\377\\\3202\335\364\323\377\377\377\377\377\377h\304"
|
|
||||||
"2\325\355\305\377\377\377t\2702\317\344\266\377\377\377\200\2542\312\332"
|
|
||||||
"\250\377\377\377\214\2402\310\316\231\377\377\377\230\2242\\U\204h\\\377"
|
|
||||||
"\6\5/mVv{^\377\6\4/\12\12\360\201Vi\220^\377\7\4/\227U[\246]\377\7\3/\255"
|
|
||||||
"RN\277Z\377\10\3/\306M@\6\4/\12\12\360{^\377mVvmVv\6\5/\12\12\360h\\\377"
|
|
||||||
"\377\377\377\307\300\213\377\377\377\230\2242\230\2242\377\377\377\377\377"
|
|
||||||
"\377\377\377\377\310\316\231\310\316\231\377\377\377\214\2402\214\2402\377"
|
|
||||||
"\377\377\377\377\377\377\377\377\377\377\377\312\332\250\312\332\250\312"
|
|
||||||
"\332\250\377\377\377\200\2542\200\2542\200\2542\377\377\377\377\377\377\377"
|
|
||||||
"\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377D\350"
|
|
||||||
"2\362\375\360\377\377\377P\3342\377\377\377\346\371\342\377\377\377\\\320"
|
|
||||||
"2\335\364\323\377\377\377h\3042\325\355\305\377\377\377t\2702\317\344\266"
|
|
||||||
"\377\377\377\200\2542\377\377\377\312\332\250\377\377\377\214\2402\310\316"
|
|
||||||
"\231\377\377\377\5\5/\\U\204h\\\377\6\5/mVv{^\377\6\4/\12\12\360\201Vi\220"
|
|
||||||
"^\377\7\4/\227U[\246]\377\7\3/\255RN\277Z\377\10\3/\306M@\6\4/\6\4/{^\377"
|
|
||||||
"\12\12\360mVv\6\5/\6\5/\377\377\377\377\377\377\307\300\213\307\300\213\377"
|
|
||||||
"\377\377\230\2242\377\377\377\377\377\377\377\377\377\377\377\377\310\316"
|
|
||||||
"\231\310\316\231\377\377\377\214\2402\214\2402\377\377\377\377\377\377\377"
|
|
||||||
"\377\377\377\377\377\377\377\377\312\332\250\312\332\250\377\377\377\377"
|
|
||||||
"\377\377\200\2542\200\2542\377\377\377\377\377\377\377\377\377\377\377\377"
|
|
||||||
"\204\0\204\377\377\377D\3502\355\364\353\377\377\377\377\377\377Y\335;\346"
|
|
||||||
"\371\342\377\377\377/\26\31\335\364\323\377\377\377k\255<\325\355\305\377"
|
|
||||||
"\377\377\377\377\377t\2702\317\344\266\2046\204\200\2542\312\332\250\340"
|
|
||||||
"\317\340\214\2402\310\316\231\377\377\377VX\377\5\5//\33Dh\\\377\6\5/tVz"
|
|
||||||
"{^\377\6\4/=0\377\201Vi\220^\377\3\1\30\227U[\246]\377?6U\255RN\277Z\377"
|
|
||||||
"\337]s\306M0\306M@\3\2\30{^\377{^\377yv}mVv\244\2102\377\377\377\377\377"
|
|
||||||
"\377\377\377\377gyG\307\300\213\230\2242\212\242h\377\377\377\377\377\377"
|
|
||||||
"\377\377\377\377\377\377\310\316\231g\230O\377\377\377\214\2402\205\274q"
|
|
||||||
"\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377h\270V\312\332"
|
|
||||||
"\250\377\377\377\222\344\222\200\2542\200\2542\377\377\377\377\377\377\377"
|
|
||||||
"\377\377\377\377\377D\3502\362\375\360\377\377\377\377\377\377P\3342\346"
|
|
||||||
"\371\342\377\377\377\\\3202\335\364\323\377\377\377\377\377\377h\3042\325"
|
|
||||||
"\355\305\377\377\377t\2702\317\344\266\377\377\377\377\377\377\200\2542\312"
|
|
||||||
"\332\250\377\377\377\214\2402\310\316\231VX\377\12\12\360\5\5/\\U\204h\\"
|
|
||||||
"\377\6\5/mVv{^\377\6\4/\12\12\360\201Vi\220^\377\7\4/\227U[\246]\377\7\3"
|
|
||||||
"/\255RN\255RN\277Z\377\10\3/\306M@\6\4/\12\12\360{^\377\12\12\360\307\260"
|
|
||||||
"|\244\2102\244\2102\377\377\377\377\377\377\377\377\377\307\300\213\377\377"
|
|
||||||
"\377\230\2242\230\2242\377\377\377\377\377\377\377\377\377\377\377\377\310"
|
|
||||||
"\316\231\377\377\377\377\377\377\214\2402\214\2402\377\377\377\377\377\377"
|
|
||||||
"\377\377\377\377\377\377\377\377\377\312\332\250\312\332\250\377\377\377"
|
|
||||||
"\377\377\377\200\2542\200\2542\377\377\377\377\377\377D\3502\377\377\377"
|
|
||||||
"\362\375\360\377\377\377P\3342\346\371\342\377\377\377\\\3202\377\377\377"
|
|
||||||
"\335\364\323\377\377\377h\3042\325\355\305\377\377\377\377\377\377t\2702"
|
|
||||||
"\317\344\266\377\377\377\200\2542\312\332\250\377\377\377\377\377\377\214"
|
|
||||||
"\2402LR\221VX\377\5\5/\\U\204\12\12\360h\\\377\6\5/mVv{^\377\6\4/\12\12\360"
|
|
||||||
"\201Vi\220^\377\7\4/\227U[\246]\377\7\3/\7\3/\255RN\277Z\377\10\3/\306M@"
|
|
||||||
"\6\4/\6\4/{^\377\377\377\377\307\260|\377\377\377\244\2102\377\377\377\377"
|
|
||||||
"\377\377\377\377\377\307\300\213\307\300\213\377\377\377\230\2242\377\377"
|
|
||||||
"\377\377\377\377\377\377\377\377\377\377\310\316\231\310\316\231\377\377"
|
|
||||||
"\377\377\377\377\214\2402\214\2402\377\377\377\377\377\377\377\377\377\377"
|
|
||||||
"\377\377\377\377\377\312\332\250\312\332\250\377\377\377\377\377\377\377"
|
|
||||||
"\377\377\377\377\377D\3502\377\377\377\362\375\360\377\377\377-\17\34\346"
|
|
||||||
"\371\342\377\377\377\363\346\363\\\3202\335\364\323\377\377\377h\3042\377"
|
|
||||||
"\377\377x)o\377\377\377t\2702\301\276\255\377\377\377\377\377\377\243\273"
|
|
||||||
"U\312\332\250\377\377\377O-\34\12\12\360LR\221gU\333\5\5/\\U\204<)\377h\\"
|
|
||||||
"\377\6\5/=!B{^\377\6\4/A2\306\201Vi\220^\377I9q\227U[\246]\377]-\220\7\3"
|
|
||||||
"/\255RN\245q\304\10\3/\306M0\377\236\221\6\4/\377\377\377\220\231\220\307"
|
|
||||||
"\260|\307\260|\226\227m\244\2102\377\377\377\377\377\377\377\377\377\307"
|
|
||||||
"\300\213p\207N\230\2242\230\2242\254\316\254\377\377\377\377\377\377\377"
|
|
||||||
"\377\377\310\316\231\310\316\231\220\317\220\377\377\377\214\2402\216\316"
|
|
||||||
"\200\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377r\310^\312"
|
|
||||||
"\332\250\377\377\377\377\377\377\377\377\377D\3502\362\375\360\377\377\377"
|
|
||||||
"P\3342\377\377\377\346\371\342\377\377\377\\\3202\335\364\323\377\377\377"
|
|
||||||
"\377\377\377h\3042\325\355\305\377\377\377\377\377\377t\2702\317\344\266"
|
|
||||||
"\377\377\377\200\2542\377\377\377\312\332\250\377\377\377\5\6/LR\221\12\12"
|
|
||||||
"\360VX\377\5\5/\\U\204h\\\377\12\12\360\6\5/mVv{^\377\6\4/\12\12\360\201"
|
|
||||||
"Vi\220^\377\7\4/\227U[\12\12\360\246]\377\7\3/\255RN\277Z\377\277Z\377\10"
|
|
||||||
"\3/\306M@\260|2\260|2\377\377\377\377\377\377\307\260|\377\377\377\244\210"
|
|
||||||
"2\377\377\377\377\377\377\377\377\377\377\377\377\307\300\213\377\377\377"
|
|
||||||
"\230\2242\230\2242\377\377\377\377\377\377\377\377\377\377\377\377\310\316"
|
|
||||||
"\231\310\316\231\377\377\377\377\377\377\214\2402\214\2402\377\377\377\377"
|
|
||||||
"\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377"
|
|
||||||
"\377\377D\3502\362\375\360\377\377\377P\3342\377\377\377\346\371\342\377"
|
|
||||||
"\377\377\\\3202\377\377\377\335\364\323\377\377\377h\3042\325\355\305\377"
|
|
||||||
"\377\377\377\377\377t\2702\317\344\266\377\377\377\377\377\377\200\2542\312"
|
|
||||||
"\332\250\377\377\377\12\12\360\5\6/LR\221VX\377\12\12\360\5\5/\\U\204h\\"
|
|
||||||
"\377\6\5/\12\12\360mVv{^\377\6\4/\12\12\360\201Vi\220^\377\7\4/\227U[\227"
|
|
||||||
"U[\246]\377\7\3/\255RN\12\12\360\277Z\377\10\3/\333bB\377\377\377\260|2\377"
|
|
||||||
"\377\377\377\377\377\307\260|\307\260|\244\2102\244\2102\377\377\377\377"
|
|
||||||
"\377\377\377\377\377\307\300\213\307\300\213\377\377\377\230\2242\230\224"
|
|
||||||
"2\377\377\377\377\377\377\377\377\377\377\377\377\310\316\231\310\316\231"
|
|
||||||
"\377\377\377\377\377\377\214\2402\214\2402\377\377\377\377\377\377\377\377"
|
|
||||||
"\377\377\377\377\377\377\377\377\377\377)\10\36\362\375\360\377\377\377\370"
|
|
||||||
"\356\370P\3342\346\371\342\377\377\377\377\377\377\\\3202\207\"\201\377\377"
|
|
||||||
"\377\377\377\377p\250D\325\355\305\377\377\377\377\377\377t\2702\317\344"
|
|
||||||
"\266\234?\234\200\2542\377\377\377\274\260\244FS\377\5\6/;#\377LR\221VX\377"
|
|
||||||
"\3\1\34\12\12\360\\U\204{^\330\6\5/\12\12\360\257\203\270{^\377\6\4/\6\4"
|
|
||||||
"\222\201Vi\220^\377P@d\12\12\360\227U[\370\244\377\7\3/\255RNi./\277Z\377"
|
|
||||||
"\324X2\264\202w\333bB\260|2\377\377\377\377\377\377\377\377\377yvK\377\377"
|
|
||||||
"\377\244\2102\236\247|\377\377\377\377\377\377\377\377\377\307\300\213\307"
|
|
||||||
"\300\213\234\306\234\230\2242\377\377\377\256\330\256\377\377\377\377\377"
|
|
||||||
"\377\377\377\377\310\316\231\310\316\231\234\341\234\377\377\377\214\240"
|
|
||||||
"2\232\343\223\377\377\377\377\377\377\377\377\377\377\377\377D\3502\362\375"
|
|
||||||
"\360\377\377\377\377\377\377P\3342\346\371\342\377\377\377\377\377\377\\"
|
|
||||||
"\3202\335\364\323\377\377\377\377\377\377h\3042\325\355\305\377\377\377\377"
|
|
||||||
"\377\377t\2702\317\344\266\377\377\377\377\377\377\200\2542\312\332\250\12"
|
|
||||||
"\12\360FS\377\5\6/LR\221\12\12\360RW\255\3\5\35\6\11\224ZT\\d[\261\3\4\35"
|
|
||||||
"\6\11\224lVTw]\264\4\4\35\6\11\224\200VN\214]\270\4\3\35\6\11\224\226UG\242"
|
|
||||||
"\\\274\4\3\35\4\3\35\254R@\377\377\311\203U\36\203U\36\323a:my\36my\36\377"
|
|
||||||
"\377\276\377\377\276\243\255X\243\255X\236\371\236e\204\36\236\371\236\374"
|
|
||||||
"\377\273\236\371\236\236\371\236\234\275`\236\371\236^\220\36^\220\36\236"
|
|
||||||
"\371\236\352\377\267\352\377\267\236\371\236\236\371\236\310\316\231\310"
|
|
||||||
"\316\231\377\377\377\377\377\377\214\2402\377\377\377\377\377\377\377\377"
|
|
||||||
"\377D\3502\362\375\360\377\377\377\377\377\377P\3342\346\371\342\377\377"
|
|
||||||
"\377\377\377\377\\\3202\377\377\377\335\364\323\377\377\377h\3042\377\377"
|
|
||||||
"\377\325\355\305\377\377\377t\2702\377\377\377\317\344\266\377\377\377\377"
|
|
||||||
"\377\377\200\2542<L\237FS\377\12\12\360\5\6/LR\221\6\11\224RW\255\3\5\35"
|
|
||||||
"ZT\\\6\11\224d[\261\3\4\35\6\11\224lVTw]\264\4\4\35\6\11\224\200VN\214]\270"
|
|
||||||
"\4\3\35\4\3\35\226UG\242\\\274\6\11\224\4\3\35\304wB\377\377\311\377\377"
|
|
||||||
"\311\203U\36\323a:\236\371\236my\36\236\371\236\377\377\276\236\371\236\243"
|
|
||||||
"\255X\236\371\236e\204\36e\204\36\374\377\273\374\377\273\236\371\236\234"
|
|
||||||
"\275`\234\275`\236\371\236^\220\36^\220\36\236\371\236\352\377\267\352\377"
|
|
||||||
"\267\377\377\377\377\377\377\310\316\231\310\316\231\377\377\377\250\0\250"
|
|
||||||
"\377\377\377\377\377\377F\3375\362\375\360\377\377\377\377\377\377P\3342"
|
|
||||||
"\377\377\377\227\32\224\377\377\377\\\3202\362\340\362\335\364\323\377\377"
|
|
||||||
"\377\377\377\377h\3042\325\355\305\2506\250\377\377\377t\2702\304\272\262"
|
|
||||||
"\377\377\377\377\377\377\257\300a\12\12\360<L\237.\32\250\5\6/\12\12\360"
|
|
||||||
"jSzRW\255\6\11\224D+^ZT\\\6\11\224A&t\3\4\35lVTP9\235w]\264\4\4\35YG\347"
|
|
||||||
"\200VN\214]\270\3\4a\4\3\35\226UG\244y\257\6\11\224{a\36\377\322\246\236"
|
|
||||||
"\371\236\377\377\311V6\23\323a:\323a:\223\231y\236\371\236\377\377\276\377"
|
|
||||||
"\377\377\243\255X\243\255Xh\270he\204\36\236\371\236\272\322\253\374\377"
|
|
||||||
"\273\236\371\236\377\377\350\236\371\236\236\371\236=y\23\236\371\236\236"
|
|
||||||
"\371\236\262\344\262\377\377\377\377\377\377\377\377\377\310\316\231\377"
|
|
||||||
"\377\377\377\377\377\377\377\377D\3502\362\375\360\377\377\377\377\377\377"
|
|
||||||
"P\3342\377\377\377\346\371\342\377\377\377\377\377\377\\\3202\335\364\323"
|
|
||||||
"\377\377\377\377\377\377h\3042\325\355\305\377\377\377\377\377\377t\2702"
|
|
||||||
"\377\377\377\317\344\266\377\377\377\377\377\377\5\6/<L\237\12\12\360FS\377"
|
|
||||||
"\5\6/\6\11\224JQbRW\255\6\11\224\3\5\35ZT\\d[\261\6\11\224\3\4\35lVT\6\11"
|
|
||||||
"\224w]\264\4\4\35\6\11\224\200VN\214]\270\6\11\224\4\3\35\226UG\242\\\274"
|
|
||||||
"\377\377\306{a\36\304wB\304wB\377\377\311\203U\36\203U\36\323a:my\36my\36"
|
|
||||||
"\377\377\276\377\377\276\236\371\236\243\255X\236\371\236e\204\36e\204\36"
|
|
||||||
"\236\371\236\374\377\273\236\371\236\234\275`\234\275`\236\371\236^\220\36"
|
|
||||||
"^\220\36\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377"
|
|
||||||
"\377\377\377\377\377\377\377\377D\3502\362\375\360\377\377\377\377\377\377"
|
|
||||||
"P\3342\377\377\377\346\371\342\377\377\377\377\377\377\\\3202\335\364\323"
|
|
||||||
"\377\377\377\377\377\377h\3042\377\377\377\325\355\305\377\377\377\377\377"
|
|
||||||
"\377t\2702\317\344\266\377\377\377\377\377\377\5\6/\12\12\360<L\237FS\377"
|
|
||||||
"\12\12\360\3\5\35JQb\6\11\224RW\255\3\5\35\6\11\224ZT\\d[\261\6\11\224\3"
|
|
||||||
"\4\35lVT\6\11\224w]\264\4\4\35\6\11\224\200VN\214]\270\6\11\224\4\3\35\226"
|
|
||||||
"UG\236\371\236\377\377\306{a\36\236\371\236\304wB\377\377\311\236\371\236"
|
|
||||||
"\203U\36\323a:\236\371\236my\36\236\371\236\377\377\276\236\371\236\243\255"
|
|
||||||
"X\243\255X\236\371\236e\204\36\236\371\236\374\377\273\374\377\273\236\371"
|
|
||||||
"\236\234\275`\234\275`\236\371\236\230\2242\230\2242\377\377\377\377\377"
|
|
||||||
"\377\377\377\377\377\377\377\377\377\377\377\377\377J\3508\377\377\377\362"
|
|
||||||
"\375\360\264\22\264\377\377\377P\3342\340\340\335\377\377\377\377\377\377"
|
|
||||||
"u\325K\377\377\377\335\364\323\264-\264\377\377\377h\3042\315\305\301\377"
|
|
||||||
"\377\377\377\377\377\240\307^\377\377\377\317\344\266\264H\264\12\12\360"
|
|
||||||
"\5\6/aL\245\12\12\360FS\377E(\323\3\5\35JQb\4\3hRW\255\3\5\35O2\241ZT\\d"
|
|
||||||
"[\261X>\346\3\4\35lVT\4\4hw]\264\4\4\35aK\244\200VN\214]\270kZ\371\4\3\35"
|
|
||||||
"\270\212Io\225o\377\377\306{a\36\253\300\253\304wB\377\377\311\377\377\377"
|
|
||||||
"\203U\36\323a:\224D(my\36\236\371\236\307\316\266\377\377\276\236\371\236"
|
|
||||||
"\377\377\343\236\371\236e\204\36Gk\25\236\371\236\374\377\273\260\334\260"
|
|
||||||
"\236\371\236\234\275`\377\377\377\377\377\377\230\2242k\207#\377\377\377"
|
|
||||||
"\377\377\377\377\377\377\377\377\377D\3502\377\377\377\362\375\360\377\377"
|
|
||||||
"\377\377\377\377P\3342\346\371\342\377\377\377\377\377\377\\\3202\377\377"
|
|
||||||
"\377\335\364\323\377\377\377\377\377\377h\3042\377\377\377\325\355\305\377"
|
|
||||||
"\377\377\377\377\377t\2702\317\344\266\377\377\3778L\377\12\12\360\5\6/<"
|
|
||||||
"L\237\12\12\360BR\252\3\5\35\6\11\224JQbRW\255\6\11\224\3\5\35ZT\\\6\11\224"
|
|
||||||
"d[\261\6\11\224\3\4\35lVT\6\11\224w]\264\4\4\35\6\11\224\200VN\214]\270\6"
|
|
||||||
"\11\224tm\36\270\212I\270\212I\377\377\306{a\36{a\36\304wB\236\371\236\377"
|
|
||||||
"\377\311\203U\36\236\371\236\323a:my\36my\36\236\371\236\377\377\276\236"
|
|
||||||
"\371\236\243\255X\243\255X\236\371\236e\204\36\236\371\236\374\377\273\374"
|
|
||||||
"\377\273\236\371\236\307\300\213\307\300\213\377\377\377\377\377\377\230"
|
|
||||||
"\2242\377\377\377\377\377\377\377\377\377D\3502\377\377\377\362\375\360\377"
|
|
||||||
"\377\377\377\377\377P\3342\377\377\377\346\371\342\377\377\377\377\377\377"
|
|
||||||
"\\\3202\335\364\323\377\377\377\377\377\377\377\377\377h\3042\325\355\305"
|
|
||||||
"\377\377\377\377\377\377t\2702\377\377\377\317\344\2668L\377\12\12\360\5"
|
|
||||||
"\6/\12\12\360<L\237BR\252\6\11\224\3\5\35JQb\6\11\224RW\255\6\11\224\3\5"
|
|
||||||
"\35ZT\\\6\11\224d[\261\3\4\35\6\11\224lVT\6\11\224w]\264\4\4\35\6\11\224"
|
|
||||||
"\200VN\214]\270\236\371\236tm\36\236\371\236\270\212I\377\377\306\236\371"
|
|
||||||
"\236{a\36\304wB\236\371\236\377\377\311\203U\36\203U\36\323a:\236\371\236"
|
|
||||||
"my\36\236\371\236\377\377\276\377\377\276\236\371\236\243\255X\236\371\236"
|
|
||||||
"e\204\36e\204\36\236\371\236\374\377\273\377\377\377\377\377\377\307\300"
|
|
||||||
"\213\307\300\213\377\377\377\377\377\377\377\377\377\377\377\3773\10%\377"
|
|
||||||
"\377\377\362\375\360\372\356\372\377\377\377P\3342\377\377\377\346\371\342"
|
|
||||||
"\377\377\377\300$\300\\\3202\377\377\377\327\317\316\377\377\377\377\377"
|
|
||||||
"\377\220\317Z\377\377\377\325\355\305\300?\300\377\377\377t\2702\312\267"
|
|
||||||
"\270\12\12\3608L\377F#\377\5\6/<L\237\4\3oBR\252\6\11\224K)[JQb\6\11\224"
|
|
||||||
"\243\204\376\3\5\35\6\11\224C&E\6\11\224d[\261_@l\6\11\224lVTkP\371w]\264"
|
|
||||||
"\4\4\35\4\5o\200VN\377\377\302\262\276\262tm\36\236\371\236\377\360\302\377"
|
|
||||||
"\377\306\236\371\236\\A\26\304wB\304wB\322\312\302\236\371\236\203U\36\377"
|
|
||||||
"\355\310\323a:my\36R]\26\236\371\236\377\377\276\270\326\270\243\255X\236"
|
|
||||||
"\371\236\377\377\377e\204\36\236\371\236\300\341\300\377\377\377\377\377"
|
|
||||||
"\377\305\353\305\307\300\213\377\377\377\377\377\377\377\377\377D\3502\377"
|
|
||||||
"\377\377\362\375\360\377\377\377\377\377\377P\3342\377\377\377\346\371\342"
|
|
||||||
"\377\377\377\377\377\377\\\3202\377\377\377\335\364\323\377\377\377\377\377"
|
|
||||||
"\377h\3042\377\377\377\325\355\305\377\377\377\377\377\377t\2702\377\377"
|
|
||||||
"\3770E\254\12\12\3608L\377\5\6/\12\12\360:Lj\6\11\224BR\252\3\5\35\6\11\224"
|
|
||||||
"JQb\6\11\224RW\255\3\5\35\6\11\224ZT\\\6\11\224d[\261\3\4\35\6\11\224lVT"
|
|
||||||
"\6\11\224w]\264\4\4\35\6\11\224\255\235Q\377\377\302\377\377\302tm\36\236"
|
|
||||||
"\371\236\270\212I\377\377\306\377\377\306{a\36\236\371\236\304wB\377\377"
|
|
||||||
"\311\377\377\311\203U\36\236\371\236\323a:\236\371\236my\36\236\371\236\377"
|
|
||||||
"\377\276\236\371\236\243\255X\243\255X\236\371\236e\204\36\244\2102\377\377"
|
|
||||||
"\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377"
|
|
||||||
"\377D\3502\377\377\377\362\375\360\377\377\377\377\377\377P\3342\377\377"
|
|
||||||
"\377\346\371\342\377\377\377\377\377\377\377\377\377\\\3202\335\364\323\377"
|
|
||||||
"\377\377\377\377\377\377\377\377h\3042\325\355\305\377\377\377\377\377\377"
|
|
||||||
"\377\377\377t\2702\317\344\266\377\377\377\377\377\377\377\377\377\200\254"
|
|
||||||
"2\236\371\236\222\326p\332\377\264\236\371\236V\234\36\236\371\236\226\312"
|
|
||||||
"g\352\377\267\236\371\236^\220\36\236\371\236\234\275`\374\377\273\236\371"
|
|
||||||
"\236e\204\36\236\371\236\243\255X\377\377\276\236\371\236my\36\236\371\236"
|
|
||||||
"\255\235Q\236\371\236\377\377\302tm\36\236\371\236\270\212I\236\371\236\377"
|
|
||||||
"\377\306{a\36\236\371\236\304wB\236\371\236\377\377\311\203U\36\203U\36\323"
|
|
||||||
"a:\236\371\236my\36\236\371\236\377\377\276\377\377\276\236\371\236\243\255"
|
|
||||||
"X\236\371\236\377\377\377\244\2102\377\377\377\377\377\377\377\377\377\314"
|
|
||||||
"\0\314\377\377\377\377\377\377H\3377\377\377\377\362\375\360\377\377\377"
|
|
||||||
"\377\377\377\377\377\377@\27(\346\371\342\377\377\377\367\340\367\377\377"
|
|
||||||
"\377\\\3202\377\377\377\335\364\323\377\377\377\3146\314h\3042\377\377\377"
|
|
||||||
"\322\301\306\377\377\377\377\377\377\255\314k\377\377\377\317\344\266\314"
|
|
||||||
"Q\314\377\377\377\200\2542\256\300\256\222\326p\236\371\236\377\377\377\236"
|
|
||||||
"\371\236V\234\36xUR\236\371\236\352\377\267\262\273\262^\220\36\234\275`"
|
|
||||||
"\377\377\377\374\377\273\236\371\236PE\30\236\371\236\243\255X\342\300\305"
|
|
||||||
"\236\371\236my\36\377\377\377\255\235Q\236\371\236\314\242\233tm\36\236\371"
|
|
||||||
"\236\304\237\240\236\371\236\377\377\306\377\340\256{a\36\304wB~\270~\377"
|
|
||||||
"\377\311\236\371\236\273\254\244\323a:\323a:\377\377\303my\36\236\371\236"
|
|
||||||
"\314\330\230\236\371\236\243\255X\313\332\302\377\377\377\244\2102\377\377"
|
|
||||||
"\355\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377D\3502\362"
|
|
||||||
"\375\360\377\377\377\377\377\377\377\377\377P\3342\377\377\377\346\371\342"
|
|
||||||
"\377\377\377\377\377\377\\\3202\377\377\377\335\364\323\377\377\377\377\377"
|
|
||||||
"\377h\3042\377\377\377\325\355\305\377\377\377\377\377\377\377\377\377t\270"
|
|
||||||
"2\317\344\266\377\377\377\377\377\377\377\377\377O\247\36\236\371\236\222"
|
|
||||||
"\326p\332\377\264\236\371\236V\234\36\236\371\236\226\312g\236\371\236\352"
|
|
||||||
"\377\267\236\371\236^\220\36\234\275`\236\371\236\374\377\273\236\371\236"
|
|
||||||
"e\204\36\236\371\236\243\255X\377\377\276\236\371\236my\36\236\371\236\255"
|
|
||||||
"\235Q\236\371\236\377\377\302tm\36\236\371\236\270\212I\236\371\236\377\377"
|
|
||||||
"\306\236\371\236{a\36\304wB\304wB\377\377\311\236\371\236\203U\36\236\371"
|
|
||||||
"\236\323a:\236\371\236my\36\236\371\236\377\377\276\377\377\276\377\377\377"
|
|
||||||
"\307\260|\377\377\377\377\377\377\244\2102\377\377\377\377\377\377\377\377"
|
|
||||||
"\377\377\377\377D\3502\362\375\360\377\377\377\377\377\377\377\377\377P\334"
|
|
||||||
"2\377\377\377\346\371\342\377\377\377\377\377\377\\\3202\377\377\377\335"
|
|
||||||
"\364\323\377\377\377\377\377\377\377\377\377h\3042\377\377\377\325\355\305"
|
|
||||||
"\377\377\377\377\377\377t\2702\377\377\377\317\344\266\377\377\377\377\377"
|
|
||||||
"\377\236\371\236O\247\36\222\326p\236\371\236\332\377\264\236\371\236V\234"
|
|
||||||
"\36\236\371\236\226\312g\236\371\236\352\377\267^\220\36\236\371\236\234"
|
|
||||||
"\275`\236\371\236\374\377\273\236\371\236e\204\36\236\371\236\243\255X\377"
|
|
||||||
"\377\276\236\371\236my\36\236\371\236\255\235Q\236\371\236\377\377\302tm"
|
|
||||||
"\36tm\36\270\212I\236\371\236\377\377\306\236\371\236{a\36\236\371\236\304"
|
|
||||||
"wB\377\377\311\377\377\311\203U\36\236\371\236\323a:\236\371\236my\36\236"
|
|
||||||
"\371\236\236\371\236\377\377\377\377\377\377\307\260|\307\260|\377\377\377"
|
|
||||||
"\377\377\377\377\377\377\377\377\377\377\377\377D\3502\362\375\360\330\22"
|
|
||||||
"\330\377\377\377\377\377\377]\306B\377\377\377\346\371\342\377\377\377\377"
|
|
||||||
"\377\377\377\377\377M$*\335\364\323\377\377\377\366\324\366\377\377\377h"
|
|
||||||
"\3042\377\377\377\325\355\305\377\377\377\330H\330\377\377\377t\2702\321"
|
|
||||||
"\264\300\377\377\377\377\377\377\352\377\352O\247\36\236\371\236{S^\236\371"
|
|
||||||
"\236\332\377\264\266\274\266V\234\36\226\312g\377\377\377\352\377\267\236"
|
|
||||||
"\371\236OG\31\236\371\236\234\275`\274\274\274\374\377\273\236\371\236\336"
|
|
||||||
"\325\227\243\255X\236\371\236\330\231\240\236\371\236my\36\302\300\302\255"
|
|
||||||
"\235Q\236\371\236\377\377\377\236\371\236tm\36\233a=\236\371\236\377\377"
|
|
||||||
"\306\310\314\310{a\36\236\371\236\377\377\351\236\371\236\377\377\311nE\31"
|
|
||||||
"\203U\36\323a:\326\304\276my\36my\36\377\377\377\377\377\377\377\377\377"
|
|
||||||
"\330\352\330\307\260|\377\377\377\377\377\377\377\377\377\377\377\377D\350"
|
|
||||||
"2\377\377\377\362\375\360\377\377\377\377\377\377P\3342\377\377\377\346\371"
|
|
||||||
"\342\377\377\377\377\377\377\377\377\377\\\3202\377\377\377\335\364\323\377"
|
|
||||||
"\377\377\377\377\377\377\377\377h\3042\325\355\305\377\377\377\377\377\377"
|
|
||||||
"\377\377\377t\2702\377\377\377\317\344\266\377\377\377\377\377\377\377\377"
|
|
||||||
"\377\200\2542\377\377\377\312\332\250\377\377\377\377\377\377\214\2402\377"
|
|
||||||
"\377\377\310\316\231\377\377\377\377\377\377\377\377\377\230\2242\377\377"
|
|
||||||
"\377\307\300\213\377\377\377\377\377\377\244\2102\377\377\377\307\260|\377"
|
|
||||||
"\377\377\377\377\377\377\377\377\260|2\377\377\377\312\237n\377\377\377\377"
|
|
||||||
"\377\377\377\377\377\274p2\316\214_\316\214_\377\377\377\377\377\377\310"
|
|
||||||
"d2\377\377\377\323xQ\377\377\377\377\377\377\377\377\377\324X2\377\377\377"
|
|
||||||
"\333bB\377\377\377\260|2\377\377\377\377\377\377\377\377\377\377\377\377"
|
|
||||||
"\377\377\377\377\377\377\377\377\377\377\377\377D\3502\377\377\377\362\375"
|
|
||||||
"\360\377\377\377\377\377\377P\3342\377\377\377\346\371\342\377\377\377\377"
|
|
||||||
"\377\377\377\377\377\\\3202\377\377\377\335\364\323\377\377\377\377\377\377"
|
|
||||||
"\377\377\377h\3042\377\377\377\325\355\305\377\377\377\377\377\377\377\377"
|
|
||||||
"\377t\2702\317\344\266\377\377\377\377\377\377\377\377\377\200\2542\377\377"
|
|
||||||
"\377\312\332\250\377\377\377\377\377\377\377\377\377\214\2402\377\377\377"
|
|
||||||
"\310\316\231\377\377\377\377\377\377\377\377\377\230\2242\377\377\377\307"
|
|
||||||
"\300\213\377\377\377\377\377\377\244\2102\377\377\377\307\260|\377\377\377"
|
|
||||||
"\377\377\377\377\377\377\260|2\377\377\377\312\237n\377\377\377\377\377\377"
|
|
||||||
"\377\377\377\274p2\377\377\377\316\214_\377\377\377\377\377\377\310d2\310"
|
|
||||||
"d2\323xQ\377\377\377\377\377\377\377\377\377\324X2\377\377\377\333bB\377"
|
|
||||||
"\377\377\260|2\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377"
|
|
||||||
"\377\377\377\344\11\344D\3502\377\377\377\360\354\357\377\377\377\377\377"
|
|
||||||
"\377\377\377\377P\3342\377\377\377\315#\312\377\377\377\377\377\377s\262"
|
|
||||||
"Q\377\377\377\335\364\323\377\377\377\377\377\377\377\377\377\\0,\377\377"
|
|
||||||
"\377\325\355\305\367\313\367\377\377\377\377\377\377\274\321z\377\377\377"
|
|
||||||
"\317\344\266\344Z\344\377\377\377\377\377\377\246\217v\377\377\377\312\332"
|
|
||||||
"\250\377\377\377\377\377\377\377\377\377}I,\377\377\377\310\316\231\361\277"
|
|
||||||
"\361\377\377\377\230\2242\377\377\377\307\300\213\377\377\377\344\220\344"
|
|
||||||
"\377\377\377\244\2102\356\301\356\307\260|\377\377\377\377\377\377\377\377"
|
|
||||||
"\377\260|2\344\253\344\312\237n\377\377\377\353\312\353\377\377\377\274p"
|
|
||||||
"2\377\377\377\316\214_\377\377\377\344\306\344\377\377\377\310d2\340\276"
|
|
||||||
"\310\323xQ\377\377\377\377\377\377\324X2\324X2\303V;\333bB\260|2\337\340"
|
|
||||||
"\325\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377D\3502\377"
|
|
||||||
"\377\377\362\375\360\377\377\377\377\377\377\377\377\377P\3342\377\377\377"
|
|
||||||
"\346\371\342\377\377\377\377\377\377\377\377\377\\\3202\377\377\377\335\364"
|
|
||||||
"\323\377\377\377\377\377\377\377\377\377h\3042\377\377\377\325\355\305\377"
|
|
||||||
"\377\377\377\377\377\377\377\377t\2702\317\344\266\377\377\377\377\377\377"
|
|
||||||
"\377\377\377\200\2542\377\377\377\312\332\250\377\377\377\377\377\377\377"
|
|
||||||
"\377\377\214\2402\377\377\377\310\316\231\377\377\377\377\377\377\377\377"
|
|
||||||
"\377\230\2242\377\377\377\307\300\213\377\377\377\377\377\377\377\377\377"
|
|
||||||
"\244\2102\377\377\377\307\260|\377\377\377\377\377\377\377\377\377\260|2"
|
|
||||||
"\377\377\377\312\237n\377\377\377\377\377\377\377\377\377\274p2\377\377\377"
|
|
||||||
"\316\214_\377\377\377\377\377\377\377\377\377\310d2\377\377\377\323xQ\377"
|
|
||||||
"\377\377\377\377\377\377\377\377\324X2\377\377\377\333bB\377\377\377\260"
|
|
||||||
"|2\377\377\377\377\377\377\377\377\377\377\377\377D\3502\377\377\377\362"
|
|
||||||
"\375\360\377\377\377\377\377\377\377\377\377P\3342\377\377\377\346\371\342"
|
|
||||||
"\377\377\377\377\377\377\377\377\377\\\3202\377\377\377\335\364\323\377\377"
|
|
||||||
"\377\377\377\377\377\377\377h\3042\377\377\377\325\355\305\377\377\377\377"
|
|
||||||
"\377\377\377\377\377t\2702\377\377\377\317\344\266\377\377\377\377\377\377"
|
|
||||||
"\377\377\377\200\2542\377\377\377\312\332\250\377\377\377\377\377\377\377"
|
|
||||||
"\377\377\214\2402\377\377\377\310\316\231\377\377\377\377\377\377\377\377"
|
|
||||||
"\377\230\2242\377\377\377\307\300\213\377\377\377\377\377\377\377\377\377"
|
|
||||||
"\244\2102\377\377\377\307\260|\377\377\377\377\377\377\377\377\377\260|2"
|
|
||||||
"\377\377\377\312\237n\377\377\377\377\377\377\377\377\377\274p2\377\377\377"
|
|
||||||
"\316\214_\377\377\377\377\377\377\377\377\377\310d2\377\377\377\323xQ\377"
|
|
||||||
"\377\377\377\377\377\377\377\377\324X2\377\377\377\333bB\377\377\377",
|
|
||||||
};
|
|
||||||
|
|
|
@ -1,662 +0,0 @@
|
||||||
/*
|
|
||||||
Copyright (C) 2011 Markus Kauppila <markus.kauppila@gmail.com>
|
|
||||||
|
|
||||||
This software is provided 'as-is', without any express or implied
|
|
||||||
warranty. In no event will the authors be held liable for any damages
|
|
||||||
arising from the use of this software.
|
|
||||||
|
|
||||||
Permission is granted to anyone to use this software for any purpose,
|
|
||||||
including commercial applications, and to alter it and redistribute it
|
|
||||||
freely, subject to the following restrictions:
|
|
||||||
|
|
||||||
1. The origin of this software must not be misrepresented; you must not
|
|
||||||
claim that you wrote the original software. If you use this software
|
|
||||||
in a product, an acknowledgment in the product documentation would be
|
|
||||||
appreciated but is not required.
|
|
||||||
2. Altered source versions must be plainly marked as such, and must not be
|
|
||||||
misrepresented as being the original software.
|
|
||||||
3. This notice may not be removed or altered from any source distribution.
|
|
||||||
*/
|
|
||||||
|
|
||||||
#include <stdio.h>
|
|
||||||
#include <stdlib.h>
|
|
||||||
#include <limits.h>
|
|
||||||
|
|
||||||
#include "../../../include/SDL_test.h"
|
|
||||||
|
|
||||||
#include "fuzzer.h"
|
|
||||||
|
|
||||||
/*!
|
|
||||||
* Note: doxygen documentation markup is in the header file.
|
|
||||||
*/
|
|
||||||
|
|
||||||
//! context for test-specific random number generator
|
|
||||||
static RND_CTX rndContext;
|
|
||||||
|
|
||||||
//! Counts invocation of fuzzer generator functions
|
|
||||||
int invocationCounter = 0;
|
|
||||||
|
|
||||||
Uint64
|
|
||||||
GenerateExecKey(char *runSeed, char *suiteName,
|
|
||||||
char *testName, int iterationNumber)
|
|
||||||
{
|
|
||||||
if(runSeed == NULL) {
|
|
||||||
fprintf(stderr, "Error: Incorrect runSeed given to GenerateExecKey function\n");
|
|
||||||
return -1;
|
|
||||||
}
|
|
||||||
|
|
||||||
if(suiteName == NULL) {
|
|
||||||
fprintf(stderr, "Error: Incorrect suiteName given to GenerateExecKey function\n");
|
|
||||||
return -1;
|
|
||||||
}
|
|
||||||
|
|
||||||
if(testName == NULL) {
|
|
||||||
fprintf(stderr, "Error: Incorrect testName given to GenerateExecKey function\n");
|
|
||||||
return -1;
|
|
||||||
}
|
|
||||||
|
|
||||||
if(iterationNumber < 0) {
|
|
||||||
fprintf(stderr, "Error: Incorrect iteration number given to GenerateExecKey function\n");
|
|
||||||
return -1;
|
|
||||||
}
|
|
||||||
|
|
||||||
char iterationString[16];
|
|
||||||
memset(iterationString, 0, sizeof(iterationString));
|
|
||||||
SDL_snprintf(iterationString, sizeof(iterationString) - 1, "%d", iterationNumber);
|
|
||||||
|
|
||||||
// combine the parameters
|
|
||||||
const Uint32 runSeedLength = strlen(runSeed);
|
|
||||||
const Uint32 suiteNameLength = strlen(suiteName);
|
|
||||||
const Uint32 testNameLength = strlen(testName);
|
|
||||||
const Uint32 iterationStringLength = strlen(iterationString);
|
|
||||||
|
|
||||||
// size of the entire + 3 for slashes and + 1 for '\0'
|
|
||||||
const Uint32 entireString = runSeedLength + suiteNameLength +
|
|
||||||
testNameLength + iterationStringLength + 3 + 1;
|
|
||||||
|
|
||||||
char *buffer = SDL_malloc(entireString);
|
|
||||||
if(!buffer) {
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
SDL_snprintf(buffer, entireString, "%s/%s/%s/%d", runSeed, suiteName,
|
|
||||||
testName, iterationNumber);
|
|
||||||
|
|
||||||
MD5_CTX md5Context;
|
|
||||||
utl_md5Init(&md5Context);
|
|
||||||
utl_md5Update(&md5Context, buffer, entireString);
|
|
||||||
utl_md5Final(&md5Context);
|
|
||||||
|
|
||||||
SDL_free(buffer);
|
|
||||||
|
|
||||||
Uint64 *keys = (Uint64 *)md5Context.digest;
|
|
||||||
|
|
||||||
return keys[0];
|
|
||||||
}
|
|
||||||
|
|
||||||
void
|
|
||||||
InitFuzzer(Uint64 execKey)
|
|
||||||
{
|
|
||||||
Uint32 a = (execKey >> 32) & 0x00000000FFFFFFFF;
|
|
||||||
Uint32 b = execKey & 0x00000000FFFFFFFF;
|
|
||||||
utl_randomInit(&rndContext, a, b);
|
|
||||||
}
|
|
||||||
|
|
||||||
int
|
|
||||||
GetInvocationCount()
|
|
||||||
{
|
|
||||||
return invocationCounter;
|
|
||||||
}
|
|
||||||
|
|
||||||
void
|
|
||||||
DeinitFuzzer()
|
|
||||||
{
|
|
||||||
invocationCounter = 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
Uint8
|
|
||||||
RandomUint8()
|
|
||||||
{
|
|
||||||
invocationCounter++;
|
|
||||||
|
|
||||||
return (Uint8) utl_randomInt(&rndContext) & 0x000000FF;
|
|
||||||
}
|
|
||||||
|
|
||||||
Sint8
|
|
||||||
RandomSint8()
|
|
||||||
{
|
|
||||||
invocationCounter++;
|
|
||||||
|
|
||||||
return (Sint8) utl_randomInt(&rndContext) & 0x000000FF;
|
|
||||||
}
|
|
||||||
|
|
||||||
Uint16
|
|
||||||
RandomUint16()
|
|
||||||
{
|
|
||||||
invocationCounter++;
|
|
||||||
|
|
||||||
return (Uint16) utl_randomInt(&rndContext) & 0x0000FFFF;
|
|
||||||
}
|
|
||||||
|
|
||||||
Sint16
|
|
||||||
RandomSint16()
|
|
||||||
{
|
|
||||||
invocationCounter++;
|
|
||||||
|
|
||||||
return (Sint16) utl_randomInt(&rndContext) & 0x0000FFFF;
|
|
||||||
}
|
|
||||||
|
|
||||||
Sint32
|
|
||||||
RandomSint32()
|
|
||||||
{
|
|
||||||
invocationCounter++;
|
|
||||||
|
|
||||||
return (Sint32) utl_randomInt(&rndContext);
|
|
||||||
}
|
|
||||||
|
|
||||||
Uint32
|
|
||||||
RandomUint32()
|
|
||||||
{
|
|
||||||
invocationCounter++;
|
|
||||||
|
|
||||||
return (Uint32) utl_randomInt(&rndContext);
|
|
||||||
}
|
|
||||||
|
|
||||||
Uint64
|
|
||||||
RandomUint64()
|
|
||||||
{
|
|
||||||
Uint64 value;
|
|
||||||
|
|
||||||
invocationCounter++;
|
|
||||||
|
|
||||||
Uint32 *vp = (Uint32*)&value;
|
|
||||||
vp[0] = RandomSint32();
|
|
||||||
vp[1] = RandomSint32();
|
|
||||||
|
|
||||||
return value;
|
|
||||||
}
|
|
||||||
|
|
||||||
Sint64
|
|
||||||
RandomSint64()
|
|
||||||
{
|
|
||||||
Uint64 value;
|
|
||||||
|
|
||||||
invocationCounter++;
|
|
||||||
|
|
||||||
Uint32 *vp = (Uint32*)&value;
|
|
||||||
vp[0] = RandomSint32();
|
|
||||||
vp[1] = RandomSint32();
|
|
||||||
|
|
||||||
return value;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
Sint32
|
|
||||||
RandomIntegerInRange(Sint32 pMin, Sint32 pMax)
|
|
||||||
{
|
|
||||||
Sint64 min = pMin;
|
|
||||||
Sint64 max = pMax;
|
|
||||||
|
|
||||||
if(pMin > pMax) {
|
|
||||||
Sint64 temp = min;
|
|
||||||
min = max;
|
|
||||||
max = temp;
|
|
||||||
} else if(pMin == pMax) {
|
|
||||||
return min;
|
|
||||||
}
|
|
||||||
|
|
||||||
Sint64 number = RandomUint32(); // invocation count increment in there
|
|
||||||
|
|
||||||
return (Sint32)((number % ((max + 1) - min)) + min);
|
|
||||||
}
|
|
||||||
|
|
||||||
/*!
|
|
||||||
* Generates boundary values between the given boundaries.
|
|
||||||
* Boundary values are inclusive. See the examples below.
|
|
||||||
* If boundary2 < boundary1, the values are swapped.
|
|
||||||
* If boundary1 == boundary2, value of boundary1 will be returned
|
|
||||||
*
|
|
||||||
* Generating boundary values for Uint8:
|
|
||||||
* BoundaryValues(sizeof(Uint8), 10, 20, True) -> [10,11,19,20]
|
|
||||||
* BoundaryValues(sizeof(Uint8), 10, 20, False) -> [9,21]
|
|
||||||
* BoundaryValues(sizeof(Uint8), 0, 15, True) -> [0, 1, 14, 15]
|
|
||||||
* BoundaryValues(sizeof(Uint8), 0, 15, False) -> [16]
|
|
||||||
* BoundaryValues(sizeof(Uint8), 0, 255, False) -> NULL
|
|
||||||
*
|
|
||||||
* Generator works the same for other types of unsigned integers.
|
|
||||||
*
|
|
||||||
* Note: outBuffer will be allocated and needs to be freed later.
|
|
||||||
* If outbuffer != NULL, it'll be freed.
|
|
||||||
*
|
|
||||||
* \param maxValue The biggest value that is acceptable for this data type.
|
|
||||||
* For instance, for Uint8 -> 255, Uint16 -> 65536 etc.
|
|
||||||
* \param pBoundary1 defines lower boundary
|
|
||||||
* \param pBoundary2 defines upper boundary
|
|
||||||
* \param validDomain Generate only for valid domain (for the data type)
|
|
||||||
*
|
|
||||||
* \param outBuffer The generated boundary values are put here
|
|
||||||
*
|
|
||||||
* \returns Returns the number of elements in outBuffer or -1 in case of error
|
|
||||||
*/
|
|
||||||
Uint32
|
|
||||||
GenerateUnsignedBoundaryValues(const Uint64 maxValue,
|
|
||||||
Uint64 pBoundary1, Uint64 pBoundary2, SDL_bool validDomain,
|
|
||||||
Uint64 *outBuffer)
|
|
||||||
{
|
|
||||||
Uint64 boundary1 = pBoundary1, boundary2 = pBoundary2;
|
|
||||||
|
|
||||||
if(outBuffer != NULL) {
|
|
||||||
SDL_free(outBuffer);
|
|
||||||
}
|
|
||||||
|
|
||||||
if(boundary1 > boundary2) {
|
|
||||||
Uint64 temp = boundary1;
|
|
||||||
boundary1 = boundary2;
|
|
||||||
boundary2 = temp;
|
|
||||||
}
|
|
||||||
|
|
||||||
Uint64 tempBuf[4];
|
|
||||||
Uint64 index = 0;
|
|
||||||
|
|
||||||
if(boundary1 == boundary2) {
|
|
||||||
tempBuf[index++] = boundary1;
|
|
||||||
}
|
|
||||||
else if(validDomain) {
|
|
||||||
tempBuf[index++] = boundary1;
|
|
||||||
|
|
||||||
if(boundary1 < UINT64_MAX)
|
|
||||||
tempBuf[index++] = boundary1 + 1;
|
|
||||||
|
|
||||||
tempBuf[index++] = boundary2 - 1;
|
|
||||||
tempBuf[index++] = boundary2;
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
if(boundary1 > 0) {
|
|
||||||
tempBuf[index++] = boundary1 - 1;
|
|
||||||
}
|
|
||||||
|
|
||||||
if(boundary2 < maxValue && boundary2 < UINT64_MAX) {
|
|
||||||
tempBuf[index++] = boundary2 + 1;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if(index == 0) {
|
|
||||||
// There are no valid boundaries
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
// Create the return buffer
|
|
||||||
outBuffer = SDL_malloc(index * sizeof(Uint64));
|
|
||||||
if(outBuffer == NULL) {
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
SDL_memcpy(outBuffer, tempBuf, index * sizeof(Uint64));
|
|
||||||
|
|
||||||
return index;
|
|
||||||
}
|
|
||||||
|
|
||||||
Uint8
|
|
||||||
RandomUint8BoundaryValue(Uint8 boundary1, Uint8 boundary2, SDL_bool validDomain)
|
|
||||||
{
|
|
||||||
Uint64 *buffer = NULL;
|
|
||||||
Uint32 size;
|
|
||||||
|
|
||||||
// max value for Uint8
|
|
||||||
const Uint64 maxValue = UINT8_MAX;
|
|
||||||
|
|
||||||
size = GenerateUnsignedBoundaryValues(maxValue,
|
|
||||||
(Uint64) boundary1, (Uint64) boundary2,
|
|
||||||
validDomain, buffer);
|
|
||||||
if(size == 0) {
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
Uint32 index = RandomSint32() % size;
|
|
||||||
Uint8 retVal = (Uint8) buffer[index];
|
|
||||||
|
|
||||||
SDL_free(buffer);
|
|
||||||
|
|
||||||
invocationCounter++;
|
|
||||||
|
|
||||||
return retVal;
|
|
||||||
}
|
|
||||||
|
|
||||||
Uint16
|
|
||||||
RandomUint16BoundaryValue(Uint16 boundary1, Uint16 boundary2, SDL_bool validDomain)
|
|
||||||
{
|
|
||||||
Uint64 *buffer = NULL;
|
|
||||||
Uint32 size;
|
|
||||||
|
|
||||||
// max value for Uint16
|
|
||||||
const Uint64 maxValue = UINT16_MAX;
|
|
||||||
|
|
||||||
size = GenerateUnsignedBoundaryValues(maxValue,
|
|
||||||
(Uint64) boundary1, (Uint64) boundary2,
|
|
||||||
validDomain, buffer);
|
|
||||||
if(size == 0) {
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
Uint32 index = RandomSint32() % size;
|
|
||||||
Uint16 retVal = (Uint16) buffer[index];
|
|
||||||
|
|
||||||
SDL_free(buffer);
|
|
||||||
|
|
||||||
invocationCounter++;
|
|
||||||
|
|
||||||
return retVal;
|
|
||||||
}
|
|
||||||
|
|
||||||
Uint32
|
|
||||||
RandomUint32BoundaryValue(Uint32 boundary1, Uint32 boundary2, SDL_bool validDomain)
|
|
||||||
{
|
|
||||||
Uint64 *buffer = NULL;
|
|
||||||
Uint32 size;
|
|
||||||
|
|
||||||
// max value for Uint32
|
|
||||||
const Uint64 maxValue = UINT32_MAX;
|
|
||||||
|
|
||||||
size = GenerateUnsignedBoundaryValues(maxValue,
|
|
||||||
(Uint64) boundary1, (Uint64) boundary2,
|
|
||||||
validDomain, buffer);
|
|
||||||
if(size == 0) {
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
Uint32 index = RandomSint32() % size;
|
|
||||||
Uint32 retVal = (Uint32) buffer[index];
|
|
||||||
|
|
||||||
SDL_free(buffer);
|
|
||||||
|
|
||||||
invocationCounter++;
|
|
||||||
|
|
||||||
return retVal;
|
|
||||||
}
|
|
||||||
|
|
||||||
Uint64
|
|
||||||
RandomUint64BoundaryValue(Uint64 boundary1, Uint64 boundary2, SDL_bool validDomain)
|
|
||||||
{
|
|
||||||
Uint64 *buffer = NULL;
|
|
||||||
Uint32 size;
|
|
||||||
|
|
||||||
// max value for Uint64
|
|
||||||
const Uint64 maxValue = UINT64_MAX;
|
|
||||||
|
|
||||||
size = GenerateUnsignedBoundaryValues(maxValue,
|
|
||||||
(Uint64) boundary1, (Uint64) boundary2,
|
|
||||||
validDomain, buffer);
|
|
||||||
if(size == 0) {
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
Uint32 index = RandomSint32() % size;
|
|
||||||
Uint64 retVal = (Uint64) buffer[index];
|
|
||||||
|
|
||||||
SDL_free(buffer);
|
|
||||||
|
|
||||||
invocationCounter++;
|
|
||||||
|
|
||||||
return retVal;
|
|
||||||
}
|
|
||||||
|
|
||||||
/*!
|
|
||||||
* Generates boundary values between the given boundaries.
|
|
||||||
* Boundary values are inclusive. See the examples below.
|
|
||||||
* If boundary2 < boundary1, the values are swapped.
|
|
||||||
* If boundary1 == boundary2, value of boundary1 will be returned
|
|
||||||
*
|
|
||||||
* Generating boundary values for Sint8:
|
|
||||||
* SignedBoundaryValues(sizeof(Sint8), -10, 20, True) -> [-11,-10,19,20]
|
|
||||||
* SignedBoundaryValues(sizeof(Sint8), -10, 20, False) -> [-11,21]
|
|
||||||
* SignedBoundaryValues(sizeof(Sint8), -30, -15, True) -> [-30, -29, -16, -15]
|
|
||||||
* SignedBoundaryValues(sizeof(Sint8), -128, 15, False) -> [16]
|
|
||||||
* SignedBoundaryValues(sizeof(Sint8), -128, 127, False) -> NULL
|
|
||||||
*
|
|
||||||
* Generator works the same for other types of signed integers.
|
|
||||||
*
|
|
||||||
* Note: outBuffer will be allocated and needs to be freed later.
|
|
||||||
* If outbuffer != NULL, it'll be freed.
|
|
||||||
*
|
|
||||||
*
|
|
||||||
* \param minValue The smallest value that is acceptable for this data type.
|
|
||||||
* For instance, for Uint8 -> -128, Uint16 -> -32,768 etc.
|
|
||||||
* \param maxValue The biggest value that is acceptable for this data type.
|
|
||||||
* For instance, for Uint8 -> 127, Uint16 -> 32767 etc.
|
|
||||||
* \param pBoundary1 defines lower boundary
|
|
||||||
* \param pBoundary2 defines upper boundary
|
|
||||||
* \param validDomain Generate only for valid domain (for the data type)
|
|
||||||
*
|
|
||||||
* \param outBuffer The generated boundary values are put here
|
|
||||||
*
|
|
||||||
* \returns Returns the number of elements in outBuffer or -1 in case of error
|
|
||||||
*/
|
|
||||||
Uint32
|
|
||||||
GenerateSignedBoundaryValues(const Sint64 minValue, const Sint64 maxValue,
|
|
||||||
Sint64 pBoundary1, Sint64 pBoundary2, SDL_bool validDomain,
|
|
||||||
Sint64 *outBuffer)
|
|
||||||
{
|
|
||||||
Sint64 boundary1 = pBoundary1, boundary2 = pBoundary2;
|
|
||||||
|
|
||||||
if(outBuffer != NULL) {
|
|
||||||
SDL_free(outBuffer);
|
|
||||||
}
|
|
||||||
|
|
||||||
if(boundary1 > boundary2) {
|
|
||||||
Sint64 temp = boundary1;
|
|
||||||
boundary1 = boundary2;
|
|
||||||
boundary2 = temp;
|
|
||||||
}
|
|
||||||
|
|
||||||
Sint64 tempBuf[4];
|
|
||||||
|
|
||||||
Sint64 index = 0;
|
|
||||||
|
|
||||||
if(boundary1 == boundary2) {
|
|
||||||
tempBuf[index++] = boundary1;
|
|
||||||
}
|
|
||||||
else if(validDomain) {
|
|
||||||
tempBuf[index++] = boundary1;
|
|
||||||
|
|
||||||
if(boundary1 < LLONG_MAX)
|
|
||||||
tempBuf[index++] = boundary1 + 1;
|
|
||||||
|
|
||||||
if(boundary2 > LLONG_MIN)
|
|
||||||
tempBuf[index++] = boundary2 - 1;
|
|
||||||
|
|
||||||
tempBuf[index++] = boundary2;
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
if(boundary1 > minValue && boundary1 > LLONG_MIN) {
|
|
||||||
tempBuf[index++] = boundary1 - 1;
|
|
||||||
}
|
|
||||||
|
|
||||||
if(boundary2 < maxValue && boundary2 < UINT64_MAX) {
|
|
||||||
tempBuf[index++] = boundary2 + 1;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if(index == 0) {
|
|
||||||
// There are no valid boundaries
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
// Create the return buffer
|
|
||||||
outBuffer = SDL_malloc(index * sizeof(Sint64));
|
|
||||||
if(outBuffer == NULL) {
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
SDL_memcpy(outBuffer, tempBuf, index * sizeof(Sint64));
|
|
||||||
|
|
||||||
return index;
|
|
||||||
}
|
|
||||||
|
|
||||||
Sint8
|
|
||||||
RandomSint8BoundaryValue(Sint8 boundary1, Sint8 boundary2, SDL_bool validDomain)
|
|
||||||
{
|
|
||||||
Sint64 *buffer = NULL;
|
|
||||||
Uint32 size;
|
|
||||||
|
|
||||||
// min & max values for Sint8
|
|
||||||
const Sint64 maxValue = CHAR_MAX;
|
|
||||||
const Sint64 minValue = CHAR_MIN;
|
|
||||||
|
|
||||||
size = GenerateSignedBoundaryValues(minValue, maxValue,
|
|
||||||
(Sint64) boundary1, (Sint64) boundary2,
|
|
||||||
validDomain, buffer);
|
|
||||||
if(size == 0) {
|
|
||||||
return CHAR_MIN;
|
|
||||||
}
|
|
||||||
|
|
||||||
Uint32 index = RandomSint32() % size;
|
|
||||||
Sint8 retVal = (Sint8) buffer[index];
|
|
||||||
|
|
||||||
SDL_free(buffer);
|
|
||||||
|
|
||||||
invocationCounter++;
|
|
||||||
|
|
||||||
return retVal;
|
|
||||||
}
|
|
||||||
|
|
||||||
Sint16
|
|
||||||
RandomSint16BoundaryValue(Sint16 boundary1, Sint16 boundary2, SDL_bool validDomain)
|
|
||||||
{
|
|
||||||
Sint64 *buffer = NULL;
|
|
||||||
Uint32 size;
|
|
||||||
|
|
||||||
// min & max values for Sint16
|
|
||||||
const Sint64 maxValue = SHRT_MAX;
|
|
||||||
const Sint64 minValue = SHRT_MIN;
|
|
||||||
|
|
||||||
size = GenerateSignedBoundaryValues(minValue, maxValue,
|
|
||||||
(Sint64) boundary1, (Sint64) boundary2,
|
|
||||||
validDomain, buffer);
|
|
||||||
if(size == 0) {
|
|
||||||
return SHRT_MIN;
|
|
||||||
}
|
|
||||||
|
|
||||||
Uint32 index = RandomSint32() % size;
|
|
||||||
Sint16 retVal = (Sint16) buffer[index];
|
|
||||||
|
|
||||||
SDL_free(buffer);
|
|
||||||
|
|
||||||
invocationCounter++;
|
|
||||||
|
|
||||||
return retVal;
|
|
||||||
}
|
|
||||||
|
|
||||||
Sint32
|
|
||||||
RandomSint32BoundaryValue(Sint32 boundary1, Sint32 boundary2, SDL_bool validDomain)
|
|
||||||
{
|
|
||||||
Sint64 *buffer = NULL;
|
|
||||||
Uint32 size;
|
|
||||||
|
|
||||||
// min & max values for Sint32
|
|
||||||
const Sint64 maxValue = INT_MAX;
|
|
||||||
const Sint64 minValue = INT_MIN;
|
|
||||||
|
|
||||||
size = GenerateSignedBoundaryValues(minValue, maxValue,
|
|
||||||
(Sint64) boundary1, (Sint64) boundary2,
|
|
||||||
validDomain, buffer);
|
|
||||||
if(size == 0) {
|
|
||||||
return INT_MIN;
|
|
||||||
}
|
|
||||||
|
|
||||||
Uint32 index = RandomSint32() % size;
|
|
||||||
Sint32 retVal = (Sint32) buffer[index];
|
|
||||||
|
|
||||||
SDL_free(buffer);
|
|
||||||
|
|
||||||
invocationCounter++;
|
|
||||||
|
|
||||||
return retVal;
|
|
||||||
}
|
|
||||||
|
|
||||||
Sint64
|
|
||||||
RandomSint64BoundaryValue(Sint64 boundary1, Sint64 boundary2, SDL_bool validDomain)
|
|
||||||
{
|
|
||||||
Sint64 *buffer = NULL;
|
|
||||||
Uint32 size;
|
|
||||||
|
|
||||||
// min & max values for Sint64
|
|
||||||
const Sint64 maxValue = LLONG_MAX;
|
|
||||||
const Sint64 minValue = LLONG_MIN;
|
|
||||||
|
|
||||||
size = GenerateSignedBoundaryValues(minValue, maxValue,
|
|
||||||
(Sint64) boundary1, (Sint64) boundary2,
|
|
||||||
validDomain, buffer);
|
|
||||||
if(size == 0) {
|
|
||||||
return LLONG_MIN;
|
|
||||||
}
|
|
||||||
|
|
||||||
Uint32 index = RandomSint32() % size;
|
|
||||||
Sint64 retVal = (Sint64) buffer[index];
|
|
||||||
|
|
||||||
SDL_free(buffer);
|
|
||||||
|
|
||||||
invocationCounter++;
|
|
||||||
|
|
||||||
return retVal;
|
|
||||||
}
|
|
||||||
|
|
||||||
float
|
|
||||||
RandomUnitFloat()
|
|
||||||
{
|
|
||||||
return (float) RandomUint32() / UINT_MAX;
|
|
||||||
}
|
|
||||||
|
|
||||||
double
|
|
||||||
RandomUnitDouble()
|
|
||||||
{
|
|
||||||
return (RandomUint64() >> 11) * (1.0/9007199254740992.0);
|
|
||||||
}
|
|
||||||
|
|
||||||
float
|
|
||||||
RandomFloat()
|
|
||||||
{
|
|
||||||
invocationCounter++;
|
|
||||||
|
|
||||||
// \todo to be implemented
|
|
||||||
return 0.0f;
|
|
||||||
}
|
|
||||||
|
|
||||||
double
|
|
||||||
RandomDouble()
|
|
||||||
{
|
|
||||||
invocationCounter++;
|
|
||||||
|
|
||||||
// \todo to be implemented
|
|
||||||
return 0.0f;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
char *
|
|
||||||
RandomAsciiString()
|
|
||||||
{
|
|
||||||
// note: invocationCounter is increment in the RandomAsciiStringWithMaximumLenght
|
|
||||||
return RandomAsciiStringWithMaximumLength(255);
|
|
||||||
}
|
|
||||||
|
|
||||||
char *
|
|
||||||
RandomAsciiStringWithMaximumLength(int maxSize)
|
|
||||||
{
|
|
||||||
invocationCounter++;
|
|
||||||
|
|
||||||
if(maxSize < 1) {
|
|
||||||
return NULL;
|
|
||||||
}
|
|
||||||
|
|
||||||
int size = (RandomUint32() % (maxSize + 1)) + 1;
|
|
||||||
char *string = SDL_malloc(size * sizeof(char));
|
|
||||||
|
|
||||||
int counter = 0;
|
|
||||||
for( ; counter < size; ++counter) {
|
|
||||||
string[counter] = (char) RandomIntegerInRange(1, 127);
|
|
||||||
}
|
|
||||||
|
|
||||||
string[counter] = '\0';
|
|
||||||
|
|
||||||
return string;
|
|
||||||
}
|
|
|
@ -1,361 +0,0 @@
|
||||||
/*
|
|
||||||
Copyright (C) 2011 Markus Kauppila <markus.kauppila@gmail.com>
|
|
||||||
|
|
||||||
This software is provided 'as-is', without any express or implied
|
|
||||||
warranty. In no event will the authors be held liable for any damages
|
|
||||||
arising from the use of this software.
|
|
||||||
|
|
||||||
Permission is granted to anyone to use this software for any purpose,
|
|
||||||
including commercial applications, and to alter it and redistribute it
|
|
||||||
freely, subject to the following restrictions:
|
|
||||||
|
|
||||||
1. The origin of this software must not be misrepresented; you must not
|
|
||||||
claim that you wrote the original software. If you use this software
|
|
||||||
in a product, an acknowledgment in the product documentation would be
|
|
||||||
appreciated but is not required.
|
|
||||||
2. Altered source versions must be plainly marked as such, and must not be
|
|
||||||
misrepresented as being the original software.
|
|
||||||
3. This notice may not be removed or altered from any source distribution.
|
|
||||||
*/
|
|
||||||
|
|
||||||
#ifndef _FUZZER_H
|
|
||||||
#define _FUZZER_H
|
|
||||||
|
|
||||||
#include <SDL/SDL_stdinc.h>
|
|
||||||
|
|
||||||
#include "utl_crc32.h"
|
|
||||||
#include "utl_md5.h"
|
|
||||||
#include "utl_random.h"
|
|
||||||
|
|
||||||
/*!
|
|
||||||
* \file
|
|
||||||
* Note: fuzzer implementation uses static instance of random context
|
|
||||||
* internally which makes it thread-UNsafe.
|
|
||||||
*/
|
|
||||||
|
|
||||||
/*!
|
|
||||||
* Inits the fuzzer for a test
|
|
||||||
*/
|
|
||||||
void InitFuzzer(Uint64 execKey);
|
|
||||||
|
|
||||||
|
|
||||||
/*!
|
|
||||||
* Deinits the fuzzer (for a test)
|
|
||||||
*/
|
|
||||||
void DeinitFuzzer();
|
|
||||||
|
|
||||||
|
|
||||||
/*!
|
|
||||||
* Returns a random Uint8
|
|
||||||
*
|
|
||||||
* \returns Generated integer
|
|
||||||
*/
|
|
||||||
Uint8 RandomUint8();
|
|
||||||
|
|
||||||
/*!
|
|
||||||
* Returns a random Sint8
|
|
||||||
*
|
|
||||||
* \returns Generated signed integer
|
|
||||||
*/
|
|
||||||
Sint8 RandomSint8();
|
|
||||||
|
|
||||||
|
|
||||||
/*!
|
|
||||||
* Returns a random Uint16
|
|
||||||
*
|
|
||||||
* \returns Generated integer
|
|
||||||
*/
|
|
||||||
Uint16 RandomUint16();
|
|
||||||
|
|
||||||
/*!
|
|
||||||
* Returns a random Sint16
|
|
||||||
*
|
|
||||||
* \returns Generated signed integer
|
|
||||||
*/
|
|
||||||
Sint16 RandomSint16();
|
|
||||||
|
|
||||||
|
|
||||||
/*!
|
|
||||||
* Returns a random integer
|
|
||||||
*
|
|
||||||
* \returns Generated integer
|
|
||||||
*/
|
|
||||||
Sint32 RandomSint32();
|
|
||||||
|
|
||||||
|
|
||||||
/*!
|
|
||||||
* Returns a random positive integer
|
|
||||||
*
|
|
||||||
* \returns Generated integer
|
|
||||||
*/
|
|
||||||
Uint32 RandomUint32();
|
|
||||||
|
|
||||||
/*!
|
|
||||||
* Returns random Uint64.
|
|
||||||
*
|
|
||||||
* \returns Generated integer
|
|
||||||
*/
|
|
||||||
Uint64 RandomUint64();
|
|
||||||
|
|
||||||
|
|
||||||
/*!
|
|
||||||
* Returns random Sint64.
|
|
||||||
*
|
|
||||||
* \returns Generated signed integer
|
|
||||||
*/
|
|
||||||
Sint64 RandomSint64();
|
|
||||||
|
|
||||||
/*!
|
|
||||||
* Returns random float in range [0.0 - 1.0] (inclusive)
|
|
||||||
*/
|
|
||||||
float RandomUnitFloat();
|
|
||||||
|
|
||||||
/*!
|
|
||||||
* Returns random double in range [0.0 - 1.0[ (note: zero included, 1 is not!)
|
|
||||||
*/
|
|
||||||
double RandomUnitDouble();
|
|
||||||
|
|
||||||
/*!
|
|
||||||
* Returns random float.
|
|
||||||
*
|
|
||||||
* Note: NOT implemented.
|
|
||||||
*/
|
|
||||||
float RandomFloat();
|
|
||||||
|
|
||||||
/*!
|
|
||||||
* Returns random double
|
|
||||||
*
|
|
||||||
* Note: NOT implemented.
|
|
||||||
*/
|
|
||||||
double RandomDouble();
|
|
||||||
|
|
||||||
/*!
|
|
||||||
* Returns a random boundary value for Uint8 within the given boundaries.
|
|
||||||
* Boundaries are inclusive, see the usage examples below. If validDomain
|
|
||||||
* is true, the function will only return valid boundaries, otherwise non-valid
|
|
||||||
* boundaries are also possible.
|
|
||||||
* If boundary1 > boundary2, the values are swapped
|
|
||||||
*
|
|
||||||
* Usage examples:
|
|
||||||
* RandomUint8BoundaryValue(10, 20, SDL_TRUE) returns 10, 11, 19 or 20
|
|
||||||
* RandomUint8BoundaryValue(1, 20, SDL_FALSE) returns 0 or 21
|
|
||||||
* RandomUint8BoundaryValue(0, 99, SDL_FALSE) returns 100
|
|
||||||
* RandomUint8BoundaryValue(0, 255, SDL_FALSE) returns -1 (== error value)
|
|
||||||
*
|
|
||||||
* \param boundary1 Lower boundary limit
|
|
||||||
* \param boundary2 Upper boundary limit
|
|
||||||
* \param validDomain Should the generated boundary be valid or not?
|
|
||||||
*
|
|
||||||
* \returns Boundary value in given range or error value (-1)
|
|
||||||
*/
|
|
||||||
Uint8 RandomUint8BoundaryValue(Uint8 boundary1, Uint8 boundary2, SDL_bool validDomain);
|
|
||||||
|
|
||||||
/*!
|
|
||||||
* Returns a random boundary value for Uint16 within the given boundaries.
|
|
||||||
* Boundaries are inclusive, see the usage examples below. If validDomain
|
|
||||||
* is true, the function will only return valid boundaries, otherwise non-valid
|
|
||||||
* boundaries are also possible.
|
|
||||||
* If boundary1 > boundary2, the values are swapped
|
|
||||||
*
|
|
||||||
* Usage examples:
|
|
||||||
* RandomUint16BoundaryValue(10, 20, SDL_TRUE) returns 10, 11, 19 or 20
|
|
||||||
* RandomUint16BoundaryValue(1, 20, SDL_FALSE) returns 0 or 21
|
|
||||||
* RandomUint16BoundaryValue(0, 99, SDL_FALSE) returns 100
|
|
||||||
* RandomUint16BoundaryValue(0, 0xFFFF, SDL_FALSE) returns -1 (== error value)
|
|
||||||
*
|
|
||||||
* \param boundary1 Lower boundary limit
|
|
||||||
* \param boundary2 Upper boundary limit
|
|
||||||
* \param validDomain Should the generated boundary be valid or not?
|
|
||||||
*
|
|
||||||
* \returns Boundary value in given range or error value (-1)
|
|
||||||
*/
|
|
||||||
Uint16 RandomUint16BoundaryValue(Uint16 boundary1, Uint16 boundary2, SDL_bool validDomain);
|
|
||||||
|
|
||||||
/*!
|
|
||||||
* Returns a random boundary value for Uint32 within the given boundaries.
|
|
||||||
* Boundaries are inclusive, see the usage examples below. If validDomain
|
|
||||||
* is true, the function will only return valid boundaries, otherwise non-valid
|
|
||||||
* boundaries are also possible.
|
|
||||||
* If boundary1 > boundary2, the values are swapped
|
|
||||||
*
|
|
||||||
* Usage examples:
|
|
||||||
* RandomUint32BoundaryValue(10, 20, SDL_TRUE) returns 10, 11, 19 or 20
|
|
||||||
* RandomUint32BoundaryValue(1, 20, SDL_FALSE) returns 0 or 21
|
|
||||||
* RandomUint32BoundaryValue(0, 99, SDL_FALSE) returns 100
|
|
||||||
* RandomUint32BoundaryValue(0, 0xFFFFFFFF, SDL_FALSE) returns -1 (== error value)
|
|
||||||
*
|
|
||||||
* \param boundary1 Lower boundary limit
|
|
||||||
* \param boundary2 Upper boundary limit
|
|
||||||
* \param validDomain Should the generated boundary be valid or not?
|
|
||||||
*
|
|
||||||
* \returns Boundary value in given range or error value (-1)
|
|
||||||
*/
|
|
||||||
Uint32 RandomUint32BoundaryValue(Uint32 boundary1, Uint32 boundary2, SDL_bool validDomain);
|
|
||||||
|
|
||||||
/*!
|
|
||||||
* Returns a random boundary value for Uint64 within the given boundaries.
|
|
||||||
* Boundaries are inclusive, see the usage examples below. If validDomain
|
|
||||||
* is true, the function will only return valid boundaries, otherwise non-valid
|
|
||||||
* boundaries are also possible.
|
|
||||||
* If boundary1 > boundary2, the values are swapped
|
|
||||||
*
|
|
||||||
* Usage examples:
|
|
||||||
* RandomUint64BoundaryValue(10, 20, SDL_TRUE) returns 10, 11, 19 or 20
|
|
||||||
* RandomUint64BoundaryValue(1, 20, SDL_FALSE) returns 0 or 21
|
|
||||||
* RandomUint64BoundaryValue(0, 99, SDL_FALSE) returns 100
|
|
||||||
* RandomUint64BoundaryValue(0, 0xFFFFFFFFFFFFFFFF, SDL_FALSE) returns -1 (== error value)
|
|
||||||
*
|
|
||||||
* \param boundary1 Lower boundary limit
|
|
||||||
* \param boundary2 Upper boundary limit
|
|
||||||
* \param validDomain Should the generated boundary be valid or not?
|
|
||||||
*
|
|
||||||
* \returns Boundary value in given range or error value (-1)
|
|
||||||
*/
|
|
||||||
Uint64 RandomUint64BoundaryValue(Uint64 boundary1, Uint64 boundary2, SDL_bool validDomain);
|
|
||||||
|
|
||||||
/*!
|
|
||||||
* Returns a random boundary value for Sint8 within the given boundaries.
|
|
||||||
* Boundaries are inclusive, see the usage examples below. If validDomain
|
|
||||||
* is true, the function will only return valid boundaries, otherwise non-valid
|
|
||||||
* boundaries are also possible.
|
|
||||||
* If boundary1 > boundary2, the values are swapped
|
|
||||||
*
|
|
||||||
* Usage examples:
|
|
||||||
* RandomSint8BoundaryValue(-10, 20, SDL_TRUE) returns -11, -10, 19 or 20
|
|
||||||
* RandomSint8BoundaryValue(-100, -10, SDL_FALSE) returns -101 or -9
|
|
||||||
* RandomSint8BoundaryValue(-128, 99, SDL_FALSE) returns 100
|
|
||||||
* RandomSint8BoundaryValue(-128, 127, SDL_FALSE) returns SINT8_MIN (== error value)
|
|
||||||
*
|
|
||||||
* \param boundary1 Lower boundary limit
|
|
||||||
* \param boundary2 Upper boundary limit
|
|
||||||
* \param validDomain Should the generated boundary be valid or not?
|
|
||||||
*
|
|
||||||
* \returns Boundary value in given range or error value (-1)
|
|
||||||
*/
|
|
||||||
Sint8
|
|
||||||
RandomSint8BoundaryValue(Sint8 boundary1, Sint8 boundary2, SDL_bool validDomain);
|
|
||||||
|
|
||||||
|
|
||||||
/*!
|
|
||||||
* Returns a random boundary value for Sint16 within the given boundaries.
|
|
||||||
* Boundaries are inclusive, see the usage examples below. If validDomain
|
|
||||||
* is true, the function will only return valid boundaries, otherwise non-valid
|
|
||||||
* boundaries are also possible.
|
|
||||||
* If boundary1 > boundary2, the values are swapped
|
|
||||||
*
|
|
||||||
* Usage examples:
|
|
||||||
* RandomSint16BoundaryValue(-10, 20, SDL_TRUE) returns -11, -10, 19 or 20
|
|
||||||
* RandomSint16BoundaryValue(-100, -10, SDL_FALSE) returns -101 or -9
|
|
||||||
* RandomSint16BoundaryValue(SINT8_MIN, 99, SDL_FALSE) returns 100
|
|
||||||
* RandomSint16BoundaryValue(SINT8_MIN, SINT8_MAX, SDL_FALSE) returns SINT16_MIN (== error value)
|
|
||||||
*
|
|
||||||
* \param boundary1 Lower boundary limit
|
|
||||||
* \param boundary2 Upper boundary limit
|
|
||||||
* \param validDomain Should the generated boundary be valid or not?
|
|
||||||
*
|
|
||||||
* \returns Boundary value in given range or error value (-1)
|
|
||||||
*/
|
|
||||||
Sint16
|
|
||||||
RandomSint16BoundaryValue(Sint16 boundary1, Sint16 boundary2, SDL_bool validDomain);
|
|
||||||
|
|
||||||
/*!
|
|
||||||
* Returns a random boundary value for Sint32 within the given boundaries.
|
|
||||||
* Boundaries are inclusive, see the usage examples below. If validDomain
|
|
||||||
* is true, the function will only return valid boundaries, otherwise non-valid
|
|
||||||
* boundaries are also possible.
|
|
||||||
* If boundary1 > boundary2, the values are swapped
|
|
||||||
*
|
|
||||||
* Usage examples:
|
|
||||||
* RandomSint32BoundaryValue(-10, 20, SDL_TRUE) returns -11, -10, 19 or 20
|
|
||||||
* RandomSint32BoundaryValue(-100, -10, SDL_FALSE) returns -101 or -9
|
|
||||||
* RandomSint32BoundaryValue(SINT32_MIN, 99, SDL_FALSE) returns 100
|
|
||||||
* RandomSint32BoundaryValue(SINT32_MIN, SINT32_MAX, SDL_FALSE) returns SINT32_MIN (== error value)
|
|
||||||
*
|
|
||||||
* \param boundary1 Lower boundary limit
|
|
||||||
* \param boundary2 Upper boundary limit
|
|
||||||
* \param validDomain Should the generated boundary be valid or not?
|
|
||||||
*
|
|
||||||
* \returns Boundary value in given range or error value (-1)
|
|
||||||
*/
|
|
||||||
Sint32
|
|
||||||
RandomSint32BoundaryValue(Sint32 boundary1, Sint32 boundary2, SDL_bool validDomain);
|
|
||||||
|
|
||||||
/*!
|
|
||||||
* Returns a random boundary value for Sint64 within the given boundaries.
|
|
||||||
* Boundaries are inclusive, see the usage examples below. If validDomain
|
|
||||||
* is true, the function will only return valid boundaries, otherwise non-valid
|
|
||||||
* boundaries are also possible.
|
|
||||||
* If boundary1 > boundary2, the values are swapped
|
|
||||||
*
|
|
||||||
* Usage examples:
|
|
||||||
* RandomSint64BoundaryValue(-10, 20, SDL_TRUE) returns -11, -10, 19 or 20
|
|
||||||
* RandomSint64BoundaryValue(-100, -10, SDL_FALSE) returns -101 or -9
|
|
||||||
* RandomSint64BoundaryValue(SINT64_MIN, 99, SDL_FALSE) returns 100
|
|
||||||
* RandomSint64BoundaryValue(SINT64_MIN, SINT32_MAX, SDL_FALSE) returns SINT64_MIN (== error value)
|
|
||||||
*
|
|
||||||
* \param boundary1 Lower boundary limit
|
|
||||||
* \param boundary2 Upper boundary limit
|
|
||||||
* \param validDomain Should the generated boundary be valid or not?
|
|
||||||
*
|
|
||||||
* \returns Boundary value in given range or error value (-1)
|
|
||||||
*/
|
|
||||||
Sint64
|
|
||||||
RandomSint64BoundaryValue(Sint64 boundary1, Sint64 boundary2, SDL_bool validDomain);
|
|
||||||
|
|
||||||
|
|
||||||
/*!
|
|
||||||
* Returns integer in range [min, max] (inclusive).
|
|
||||||
* Min and max values can be negative values.
|
|
||||||
* If Max in smaller tham min, then the values are swapped.
|
|
||||||
* Min and max are the same value, that value will be returned.
|
|
||||||
*
|
|
||||||
* \returns Generated integer
|
|
||||||
*/
|
|
||||||
Sint32 RandomIntegerInRange(Sint32 min, Sint32 max);
|
|
||||||
|
|
||||||
|
|
||||||
/*!
|
|
||||||
* Generates random null-terminated string. The maximum length for
|
|
||||||
* the string is 255 characters and it can contain ASCII characters
|
|
||||||
* from 1 to 127.
|
|
||||||
*
|
|
||||||
* Note: Returned string needs to be deallocated.
|
|
||||||
*
|
|
||||||
* \returns newly allocated random string
|
|
||||||
*/
|
|
||||||
char *RandomAsciiString();
|
|
||||||
|
|
||||||
|
|
||||||
/*!
|
|
||||||
* Generates random null-terminated string. The maximum length for
|
|
||||||
* the string is defined by maxLenght parameter.
|
|
||||||
* String can contain ASCII characters from 1 to 127.
|
|
||||||
*
|
|
||||||
* Note: Returned string needs to be deallocated.
|
|
||||||
*
|
|
||||||
* \param maxLength Maximum length of the generated string
|
|
||||||
*
|
|
||||||
* \returns newly allocated random string
|
|
||||||
*/
|
|
||||||
char *RandomAsciiStringWithMaximumLength(int maxLength);
|
|
||||||
|
|
||||||
|
|
||||||
/*!
|
|
||||||
* Generates execution key (used for random seed) for a test
|
|
||||||
*
|
|
||||||
* \param runSeed Seed of the harness
|
|
||||||
* \param suiteName Test suite name
|
|
||||||
* \param testName Test name
|
|
||||||
* \param iterationNumber of test iteration
|
|
||||||
*
|
|
||||||
* \return Generated execution key as blob of 16 bytes. It needs be deallocated.
|
|
||||||
* On error, returns NULL.
|
|
||||||
*/
|
|
||||||
Uint64 GenerateExecKey(char *runSeed, char *suiteName, char *testName, int iterationNumber);
|
|
||||||
|
|
||||||
/*!
|
|
||||||
* Returns test specific invocation count for the fuzzer.
|
|
||||||
*/
|
|
||||||
int GetInvocationCount();
|
|
||||||
|
|
||||||
#endif
|
|
|
@ -1,125 +0,0 @@
|
||||||
|
|
||||||
#include "utl_crc32.h"
|
|
||||||
|
|
||||||
int utl_crc32Init(CRC32_CTX *crcContext)
|
|
||||||
{
|
|
||||||
int i,j;
|
|
||||||
CrcUint32 c;
|
|
||||||
|
|
||||||
/* Sanity check context pointer */
|
|
||||||
if (crcContext==NULL) {
|
|
||||||
return(-1);
|
|
||||||
}
|
|
||||||
|
|
||||||
/*
|
|
||||||
* Build auxiliary table for parallel byte-at-a-time CRC-32
|
|
||||||
*/
|
|
||||||
#ifdef ORIGINAL_METHOD
|
|
||||||
for (i = 0; i < 256; ++i) {
|
|
||||||
for (c = i << 24, j = 8; j > 0; --j) {
|
|
||||||
c = c & 0x80000000 ? (c << 1) ^ CRC32_POLY : (c << 1);
|
|
||||||
}
|
|
||||||
crcContext->crc32_table[i] = c;
|
|
||||||
}
|
|
||||||
#else
|
|
||||||
for (i=0; i<256; i++) {
|
|
||||||
c = i;
|
|
||||||
for (j=8; j>0; j--) {
|
|
||||||
if (c & 1) {
|
|
||||||
c = (c >> 1) ^ CRC32_POLY;
|
|
||||||
} else {
|
|
||||||
c >>= 1;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
crcContext->crc32_table[i] = c;
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
|
|
||||||
return(0);
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Complete CRC32 calculation on a memory block */
|
|
||||||
|
|
||||||
int utl_crc32Calc(CRC32_CTX * crcContext, CrcUint8 *inBuf, CrcUint32 inLen, CrcUint32 *crc32)
|
|
||||||
{
|
|
||||||
if (utl_crc32CalcStart(crcContext,crc32)) {
|
|
||||||
return(-1);
|
|
||||||
}
|
|
||||||
if (utl_crc32CalcBuffer(crcContext, inBuf, inLen, crc32)) {
|
|
||||||
return(-1);
|
|
||||||
}
|
|
||||||
if (utl_crc32CalcEnd(crcContext, crc32)) {
|
|
||||||
return(-1);
|
|
||||||
}
|
|
||||||
return(0);
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Start crc calculation */
|
|
||||||
|
|
||||||
int utl_crc32CalcStart(CRC32_CTX * crcContext, CrcUint32 *crc32)
|
|
||||||
{
|
|
||||||
/* Sanity check pointers */
|
|
||||||
if (crcContext==NULL) {
|
|
||||||
*crc32=0;
|
|
||||||
return(-1);
|
|
||||||
}
|
|
||||||
|
|
||||||
/*
|
|
||||||
* Preload shift register, per CRC-32 spec
|
|
||||||
*/
|
|
||||||
*crc32 = 0xffffffff;
|
|
||||||
|
|
||||||
return(0);
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Finish crc calculation */
|
|
||||||
|
|
||||||
int utl_crc32CalcEnd(CRC32_CTX * crcContext, CrcUint32 *crc32)
|
|
||||||
{
|
|
||||||
/*
|
|
||||||
* Return complement, per CRC-32 spec
|
|
||||||
*/
|
|
||||||
*crc32 = (~(*crc32));
|
|
||||||
|
|
||||||
return(0);
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Include memory block in crc */
|
|
||||||
|
|
||||||
int utl_crc32CalcBuffer(CRC32_CTX * crcContext, CrcUint8 *inBuf, CrcUint32 inLen, CrcUint32 *crc32)
|
|
||||||
{
|
|
||||||
CrcUint8 *p;
|
|
||||||
register CrcUint32 crc;
|
|
||||||
|
|
||||||
/* Sanity check pointers */
|
|
||||||
if (crcContext==NULL) {
|
|
||||||
*crc32=0;
|
|
||||||
return(-1);
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/*
|
|
||||||
* Calculate CRC from data
|
|
||||||
*/
|
|
||||||
crc = *crc32;
|
|
||||||
for (p = inBuf; inLen > 0; ++p, --inLen) {
|
|
||||||
#ifdef ORIGINAL_METHOD
|
|
||||||
crc = (crc << 8) ^ crcContext->crc32_table[(crc >> 24) ^ *p];
|
|
||||||
#else
|
|
||||||
crc = ((crc >> 8) & 0x00FFFFFF) ^ crcContext->crc32_table[ (crc ^ *p) & 0xFF ];
|
|
||||||
#endif
|
|
||||||
}
|
|
||||||
*crc32 = crc;
|
|
||||||
|
|
||||||
return(0);
|
|
||||||
}
|
|
||||||
|
|
||||||
int utl_crc32Done(CRC32_CTX * crcContext)
|
|
||||||
{
|
|
||||||
/* Sanity check context pointer */
|
|
||||||
if (crcContext==NULL) {
|
|
||||||
return(-1);
|
|
||||||
}
|
|
||||||
|
|
||||||
return(0);
|
|
||||||
}
|
|
|
@ -1,113 +0,0 @@
|
||||||
#ifndef _utl_crc32_h
|
|
||||||
#define _utl_crc32_h
|
|
||||||
|
|
||||||
/* Set up for C function definitions, even when using C++ */
|
|
||||||
#ifdef __cplusplus
|
|
||||||
extern "C" {
|
|
||||||
#endif
|
|
||||||
|
|
||||||
/* ----------- Includes -------------- */
|
|
||||||
|
|
||||||
#include <stdlib.h>
|
|
||||||
|
|
||||||
/* ------------ Definitions --------- */
|
|
||||||
|
|
||||||
/* Definition shared by all CRC routines */
|
|
||||||
|
|
||||||
#ifndef CrcUint32
|
|
||||||
#define CrcUint32 unsigned int
|
|
||||||
#endif
|
|
||||||
#ifndef CrcUint8
|
|
||||||
#define CrcUint8 unsigned char
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#ifdef ORIGINAL_METHOD
|
|
||||||
#define CRC32_POLY 0x04c11db7 /* AUTODIN II, Ethernet, & FDDI */
|
|
||||||
#else
|
|
||||||
#define CRC32_POLY 0xEDB88320 /* Perl String::CRC32 compatible */
|
|
||||||
#endif
|
|
||||||
|
|
||||||
/* Data structure for CRC32 (checksum) computation */
|
|
||||||
|
|
||||||
typedef struct {
|
|
||||||
CrcUint32 crc32_table[256]; /* CRC table */
|
|
||||||
} CRC32_CTX;
|
|
||||||
|
|
||||||
/* ---------- Function Prototypes ------------- */
|
|
||||||
|
|
||||||
#ifdef WIN32
|
|
||||||
#ifdef BUILD_DLL
|
|
||||||
#define DLLINTERFACE __declspec(dllexport)
|
|
||||||
#else
|
|
||||||
#define DLLINTERFACE __declspec(dllimport)
|
|
||||||
#endif
|
|
||||||
#else
|
|
||||||
#define DLLINTERFACE
|
|
||||||
#endif
|
|
||||||
|
|
||||||
/*
|
|
||||||
* utl_crc32Init: initialize the CRC context
|
|
||||||
*
|
|
||||||
* Parameters:
|
|
||||||
*
|
|
||||||
* crcContext pointer to context variable
|
|
||||||
*
|
|
||||||
* Return value:
|
|
||||||
*
|
|
||||||
* 0 OK
|
|
||||||
* -1 error
|
|
||||||
*
|
|
||||||
* Note: The function initializes the crc table required for crc calcs.
|
|
||||||
*/
|
|
||||||
DLLINTERFACE int utl_crc32Init(CRC32_CTX * crcContext);
|
|
||||||
|
|
||||||
|
|
||||||
/*
|
|
||||||
* utl_crc32Calc: calculate a crc32 from a data block
|
|
||||||
*
|
|
||||||
* Parameters:
|
|
||||||
*
|
|
||||||
* crcContext pointer to context variable
|
|
||||||
* inBuf input buffer to checksum
|
|
||||||
* inLen length of input buffer
|
|
||||||
* crc32 pointer to Uint32 to store the final CRC into
|
|
||||||
*
|
|
||||||
* Return value:
|
|
||||||
*
|
|
||||||
* 0 OK
|
|
||||||
* -1 error
|
|
||||||
*
|
|
||||||
*/
|
|
||||||
|
|
||||||
DLLINTERFACE int utl_crc32Calc(CRC32_CTX * crcContext, CrcUint8 *inBuf, CrcUint32 inLen, CrcUint32 *crc32);
|
|
||||||
|
|
||||||
/* Same routine broken down into three steps */
|
|
||||||
|
|
||||||
DLLINTERFACE int utl_crc32CalcStart(CRC32_CTX * crcContext, CrcUint32 *crc32);
|
|
||||||
DLLINTERFACE int utl_crc32CalcEnd(CRC32_CTX * crcContext, CrcUint32 *crc32);
|
|
||||||
DLLINTERFACE int utl_crc32CalcBuffer(CRC32_CTX * crcContext, CrcUint8 *inBuf, CrcUint32 inLen, CrcUint32 *crc32);
|
|
||||||
|
|
||||||
|
|
||||||
/*
|
|
||||||
* utl_crc32Done: clean up CRC context
|
|
||||||
*
|
|
||||||
* Parameters:
|
|
||||||
*
|
|
||||||
* crcContext pointer to context variable
|
|
||||||
*
|
|
||||||
* Return value:
|
|
||||||
*
|
|
||||||
* 0 OK
|
|
||||||
* -1 error
|
|
||||||
*
|
|
||||||
*/
|
|
||||||
|
|
||||||
DLLINTERFACE int utl_crc32Done(CRC32_CTX * crcContext);
|
|
||||||
|
|
||||||
|
|
||||||
/* Ends C function definitions when using C++ */
|
|
||||||
#ifdef __cplusplus
|
|
||||||
};
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#endif /* _utl_crc32_h */
|
|
|
@ -1,314 +0,0 @@
|
||||||
|
|
||||||
/*
|
|
||||||
***********************************************************************
|
|
||||||
** utl_md5.c -- the source code for MD5 routines **
|
|
||||||
** RSA Data Security, Inc. MD5 Message-Digest Algorithm **
|
|
||||||
** Created: 2/17/90 RLR **
|
|
||||||
** Revised: 1/91 SRD,AJ,BSK,JT Reference C ver., 7/10 constant corr. **
|
|
||||||
***********************************************************************
|
|
||||||
*/
|
|
||||||
|
|
||||||
/*
|
|
||||||
***********************************************************************
|
|
||||||
** Copyright (C) 1990, RSA Data Security, Inc. All rights reserved. **
|
|
||||||
** **
|
|
||||||
** License to copy and use this software is granted provided that **
|
|
||||||
** it is identified as the "RSA Data Security, Inc. MD5 Message- **
|
|
||||||
** Digest Algorithm" in all material mentioning or referencing this **
|
|
||||||
** software or this function. **
|
|
||||||
** **
|
|
||||||
** License is also granted to make and use derivative works **
|
|
||||||
** provided that such works are identified as "derived from the RSA **
|
|
||||||
** Data Security, Inc. MD5 Message-Digest Algorithm" in all **
|
|
||||||
** material mentioning or referencing the derived work. **
|
|
||||||
** **
|
|
||||||
** RSA Data Security, Inc. makes no representations concerning **
|
|
||||||
** either the merchantability of this software or the suitability **
|
|
||||||
** of this software for any particular purpose. It is provided "as **
|
|
||||||
** is" without express or implied warranty of any kind. **
|
|
||||||
** **
|
|
||||||
** These notices must be retained in any copies of any part of this **
|
|
||||||
** documentation and/or software. **
|
|
||||||
***********************************************************************
|
|
||||||
*/
|
|
||||||
|
|
||||||
#include "utl_md5.h"
|
|
||||||
|
|
||||||
/* forward declaration */
|
|
||||||
static void Transform(MD5UINT4 * buf, MD5UINT4 * in);
|
|
||||||
|
|
||||||
static unsigned char MD5PADDING[64] = {
|
|
||||||
0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
|
||||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
|
||||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
|
||||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
|
||||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
|
||||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
|
||||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
|
||||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
|
|
||||||
};
|
|
||||||
|
|
||||||
/* F, G, H and I are basic MD5 functions */
|
|
||||||
#define F(x, y, z) (((x) & (y)) | ((~x) & (z)))
|
|
||||||
#define G(x, y, z) (((x) & (z)) | ((y) & (~z)))
|
|
||||||
#define H(x, y, z) ((x) ^ (y) ^ (z))
|
|
||||||
#define I(x, y, z) ((y) ^ ((x) | (~z)))
|
|
||||||
|
|
||||||
/* ROTATE_LEFT rotates x left n bits */
|
|
||||||
#define ROTATE_LEFT(x, n) (((x) << (n)) | ((x) >> (32-(n))))
|
|
||||||
|
|
||||||
/* FF, GG, HH, and II transformations for rounds 1, 2, 3, and 4 */
|
|
||||||
|
|
||||||
/* Rotation is separate from addition to prevent recomputation */
|
|
||||||
#define FF(a, b, c, d, x, s, ac) \
|
|
||||||
{(a) += F ((b), (c), (d)) + (x) + (MD5UINT4)(ac); \
|
|
||||||
(a) = ROTATE_LEFT ((a), (s)); \
|
|
||||||
(a) += (b); \
|
|
||||||
}
|
|
||||||
#define GG(a, b, c, d, x, s, ac) \
|
|
||||||
{(a) += G ((b), (c), (d)) + (x) + (MD5UINT4)(ac); \
|
|
||||||
(a) = ROTATE_LEFT ((a), (s)); \
|
|
||||||
(a) += (b); \
|
|
||||||
}
|
|
||||||
#define HH(a, b, c, d, x, s, ac) \
|
|
||||||
{(a) += H ((b), (c), (d)) + (x) + (MD5UINT4)(ac); \
|
|
||||||
(a) = ROTATE_LEFT ((a), (s)); \
|
|
||||||
(a) += (b); \
|
|
||||||
}
|
|
||||||
#define II(a, b, c, d, x, s, ac) \
|
|
||||||
{(a) += I ((b), (c), (d)) + (x) + (MD5UINT4)(ac); \
|
|
||||||
(a) = ROTATE_LEFT ((a), (s)); \
|
|
||||||
(a) += (b); \
|
|
||||||
}
|
|
||||||
|
|
||||||
/*
|
|
||||||
The routine MD5Init initializes the message-digest context
|
|
||||||
mdContext. All fields are set to zero.
|
|
||||||
*/
|
|
||||||
|
|
||||||
void utl_md5Init(MD5_CTX * mdContext)
|
|
||||||
{
|
|
||||||
mdContext->i[0] = mdContext->i[1] = (MD5UINT4) 0;
|
|
||||||
|
|
||||||
/*
|
|
||||||
* Load magic initialization constants.
|
|
||||||
*/
|
|
||||||
mdContext->buf[0] = (MD5UINT4) 0x67452301;
|
|
||||||
mdContext->buf[1] = (MD5UINT4) 0xefcdab89;
|
|
||||||
mdContext->buf[2] = (MD5UINT4) 0x98badcfe;
|
|
||||||
mdContext->buf[3] = (MD5UINT4) 0x10325476;
|
|
||||||
}
|
|
||||||
|
|
||||||
/*
|
|
||||||
The routine MD5Update updates the message-digest context to
|
|
||||||
account for the presence of each of the characters inBuf[0..inLen-1]
|
|
||||||
in the message whose digest is being computed.
|
|
||||||
*/
|
|
||||||
|
|
||||||
void utl_md5Update(MD5_CTX * mdContext, unsigned char *inBuf,
|
|
||||||
unsigned int inLen)
|
|
||||||
{
|
|
||||||
MD5UINT4 in[16];
|
|
||||||
int mdi;
|
|
||||||
unsigned int i, ii;
|
|
||||||
|
|
||||||
/*
|
|
||||||
* compute number of bytes mod 64
|
|
||||||
*/
|
|
||||||
mdi = (int) ((mdContext->i[0] >> 3) & 0x3F);
|
|
||||||
|
|
||||||
/*
|
|
||||||
* update number of bits
|
|
||||||
*/
|
|
||||||
if ((mdContext->i[0] + ((MD5UINT4) inLen << 3)) < mdContext->i[0])
|
|
||||||
mdContext->i[1]++;
|
|
||||||
mdContext->i[0] += ((MD5UINT4) inLen << 3);
|
|
||||||
mdContext->i[1] += ((MD5UINT4) inLen >> 29);
|
|
||||||
|
|
||||||
while (inLen--) {
|
|
||||||
/*
|
|
||||||
* add new character to buffer, increment mdi
|
|
||||||
*/
|
|
||||||
mdContext->in[mdi++] = *inBuf++;
|
|
||||||
|
|
||||||
/*
|
|
||||||
* transform if necessary
|
|
||||||
*/
|
|
||||||
if (mdi == 0x40) {
|
|
||||||
for (i = 0, ii = 0; i < 16; i++, ii += 4)
|
|
||||||
in[i] = (((MD5UINT4) mdContext->in[ii + 3]) << 24) |
|
|
||||||
(((MD5UINT4) mdContext->in[ii + 2]) << 16) |
|
|
||||||
(((MD5UINT4) mdContext->in[ii + 1]) << 8) |
|
|
||||||
((MD5UINT4) mdContext->in[ii]);
|
|
||||||
Transform(mdContext->buf, in);
|
|
||||||
mdi = 0;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/*
|
|
||||||
The routine MD5Final terminates the message-digest computation and
|
|
||||||
ends with the desired message digest in mdContext->digest[0...15].
|
|
||||||
*/
|
|
||||||
|
|
||||||
void utl_md5Final(MD5_CTX * mdContext)
|
|
||||||
{
|
|
||||||
MD5UINT4 in[16];
|
|
||||||
int mdi;
|
|
||||||
unsigned int i, ii;
|
|
||||||
unsigned int padLen;
|
|
||||||
|
|
||||||
/*
|
|
||||||
* save number of bits
|
|
||||||
*/
|
|
||||||
in[14] = mdContext->i[0];
|
|
||||||
in[15] = mdContext->i[1];
|
|
||||||
|
|
||||||
/*
|
|
||||||
* compute number of bytes mod 64
|
|
||||||
*/
|
|
||||||
mdi = (int) ((mdContext->i[0] >> 3) & 0x3F);
|
|
||||||
|
|
||||||
/*
|
|
||||||
* pad out to 56 mod 64
|
|
||||||
*/
|
|
||||||
padLen = (mdi < 56) ? (56 - mdi) : (120 - mdi);
|
|
||||||
utl_md5Update(mdContext, MD5PADDING, padLen);
|
|
||||||
|
|
||||||
/*
|
|
||||||
* append length in bits and transform
|
|
||||||
*/
|
|
||||||
for (i = 0, ii = 0; i < 14; i++, ii += 4)
|
|
||||||
in[i] = (((MD5UINT4) mdContext->in[ii + 3]) << 24) |
|
|
||||||
(((MD5UINT4) mdContext->in[ii + 2]) << 16) |
|
|
||||||
(((MD5UINT4) mdContext->in[ii + 1]) << 8) |
|
|
||||||
((MD5UINT4) mdContext->in[ii]);
|
|
||||||
Transform(mdContext->buf, in);
|
|
||||||
|
|
||||||
/*
|
|
||||||
* store buffer in digest
|
|
||||||
*/
|
|
||||||
for (i = 0, ii = 0; i < 4; i++, ii += 4) {
|
|
||||||
mdContext->digest[ii] = (unsigned char) (mdContext->buf[i] & 0xFF);
|
|
||||||
mdContext->digest[ii + 1] =
|
|
||||||
(unsigned char) ((mdContext->buf[i] >> 8) & 0xFF);
|
|
||||||
mdContext->digest[ii + 2] =
|
|
||||||
(unsigned char) ((mdContext->buf[i] >> 16) & 0xFF);
|
|
||||||
mdContext->digest[ii + 3] =
|
|
||||||
(unsigned char) ((mdContext->buf[i] >> 24) & 0xFF);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Basic MD5 step. Transforms buf based on in.
|
|
||||||
*/
|
|
||||||
static void Transform(MD5UINT4 * buf, MD5UINT4 * in)
|
|
||||||
{
|
|
||||||
MD5UINT4 a = buf[0], b = buf[1], c = buf[2], d = buf[3];
|
|
||||||
|
|
||||||
/*
|
|
||||||
* Round 1
|
|
||||||
*/
|
|
||||||
#define S11 7
|
|
||||||
#define S12 12
|
|
||||||
#define S13 17
|
|
||||||
#define S14 22
|
|
||||||
FF(a, b, c, d, in[0], S11, 3614090360u); /* 1 */
|
|
||||||
FF(d, a, b, c, in[1], S12, 3905402710u); /* 2 */
|
|
||||||
FF(c, d, a, b, in[2], S13, 606105819u); /* 3 */
|
|
||||||
FF(b, c, d, a, in[3], S14, 3250441966u); /* 4 */
|
|
||||||
FF(a, b, c, d, in[4], S11, 4118548399u); /* 5 */
|
|
||||||
FF(d, a, b, c, in[5], S12, 1200080426u); /* 6 */
|
|
||||||
FF(c, d, a, b, in[6], S13, 2821735955u); /* 7 */
|
|
||||||
FF(b, c, d, a, in[7], S14, 4249261313u); /* 8 */
|
|
||||||
FF(a, b, c, d, in[8], S11, 1770035416u); /* 9 */
|
|
||||||
FF(d, a, b, c, in[9], S12, 2336552879u); /* 10 */
|
|
||||||
FF(c, d, a, b, in[10], S13, 4294925233u); /* 11 */
|
|
||||||
FF(b, c, d, a, in[11], S14, 2304563134u); /* 12 */
|
|
||||||
FF(a, b, c, d, in[12], S11, 1804603682u); /* 13 */
|
|
||||||
FF(d, a, b, c, in[13], S12, 4254626195u); /* 14 */
|
|
||||||
FF(c, d, a, b, in[14], S13, 2792965006u); /* 15 */
|
|
||||||
FF(b, c, d, a, in[15], S14, 1236535329u); /* 16 */
|
|
||||||
|
|
||||||
/*
|
|
||||||
* Round 2
|
|
||||||
*/
|
|
||||||
#define S21 5
|
|
||||||
#define S22 9
|
|
||||||
#define S23 14
|
|
||||||
#define S24 20
|
|
||||||
GG(a, b, c, d, in[1], S21, 4129170786u); /* 17 */
|
|
||||||
GG(d, a, b, c, in[6], S22, 3225465664u); /* 18 */
|
|
||||||
GG(c, d, a, b, in[11], S23, 643717713u); /* 19 */
|
|
||||||
GG(b, c, d, a, in[0], S24, 3921069994u); /* 20 */
|
|
||||||
GG(a, b, c, d, in[5], S21, 3593408605u); /* 21 */
|
|
||||||
GG(d, a, b, c, in[10], S22, 38016083u); /* 22 */
|
|
||||||
GG(c, d, a, b, in[15], S23, 3634488961u); /* 23 */
|
|
||||||
GG(b, c, d, a, in[4], S24, 3889429448u); /* 24 */
|
|
||||||
GG(a, b, c, d, in[9], S21, 568446438u); /* 25 */
|
|
||||||
GG(d, a, b, c, in[14], S22, 3275163606u); /* 26 */
|
|
||||||
GG(c, d, a, b, in[3], S23, 4107603335u); /* 27 */
|
|
||||||
GG(b, c, d, a, in[8], S24, 1163531501u); /* 28 */
|
|
||||||
GG(a, b, c, d, in[13], S21, 2850285829u); /* 29 */
|
|
||||||
GG(d, a, b, c, in[2], S22, 4243563512u); /* 30 */
|
|
||||||
GG(c, d, a, b, in[7], S23, 1735328473u); /* 31 */
|
|
||||||
GG(b, c, d, a, in[12], S24, 2368359562u); /* 32 */
|
|
||||||
|
|
||||||
/*
|
|
||||||
* Round 3
|
|
||||||
*/
|
|
||||||
#define S31 4
|
|
||||||
#define S32 11
|
|
||||||
#define S33 16
|
|
||||||
#define S34 23
|
|
||||||
HH(a, b, c, d, in[5], S31, 4294588738u); /* 33 */
|
|
||||||
HH(d, a, b, c, in[8], S32, 2272392833u); /* 34 */
|
|
||||||
HH(c, d, a, b, in[11], S33, 1839030562u); /* 35 */
|
|
||||||
HH(b, c, d, a, in[14], S34, 4259657740u); /* 36 */
|
|
||||||
HH(a, b, c, d, in[1], S31, 2763975236u); /* 37 */
|
|
||||||
HH(d, a, b, c, in[4], S32, 1272893353u); /* 38 */
|
|
||||||
HH(c, d, a, b, in[7], S33, 4139469664u); /* 39 */
|
|
||||||
HH(b, c, d, a, in[10], S34, 3200236656u); /* 40 */
|
|
||||||
HH(a, b, c, d, in[13], S31, 681279174u); /* 41 */
|
|
||||||
HH(d, a, b, c, in[0], S32, 3936430074u); /* 42 */
|
|
||||||
HH(c, d, a, b, in[3], S33, 3572445317u); /* 43 */
|
|
||||||
HH(b, c, d, a, in[6], S34, 76029189u); /* 44 */
|
|
||||||
HH(a, b, c, d, in[9], S31, 3654602809u); /* 45 */
|
|
||||||
HH(d, a, b, c, in[12], S32, 3873151461u); /* 46 */
|
|
||||||
HH(c, d, a, b, in[15], S33, 530742520u); /* 47 */
|
|
||||||
HH(b, c, d, a, in[2], S34, 3299628645u); /* 48 */
|
|
||||||
|
|
||||||
/*
|
|
||||||
* Round 4
|
|
||||||
*/
|
|
||||||
#define S41 6
|
|
||||||
#define S42 10
|
|
||||||
#define S43 15
|
|
||||||
#define S44 21
|
|
||||||
II(a, b, c, d, in[0], S41, 4096336452u); /* 49 */
|
|
||||||
II(d, a, b, c, in[7], S42, 1126891415u); /* 50 */
|
|
||||||
II(c, d, a, b, in[14], S43, 2878612391u); /* 51 */
|
|
||||||
II(b, c, d, a, in[5], S44, 4237533241u); /* 52 */
|
|
||||||
II(a, b, c, d, in[12], S41, 1700485571u); /* 53 */
|
|
||||||
II(d, a, b, c, in[3], S42, 2399980690u); /* 54 */
|
|
||||||
II(c, d, a, b, in[10], S43, 4293915773u); /* 55 */
|
|
||||||
II(b, c, d, a, in[1], S44, 2240044497u); /* 56 */
|
|
||||||
II(a, b, c, d, in[8], S41, 1873313359u); /* 57 */
|
|
||||||
II(d, a, b, c, in[15], S42, 4264355552u); /* 58 */
|
|
||||||
II(c, d, a, b, in[6], S43, 2734768916u); /* 59 */
|
|
||||||
II(b, c, d, a, in[13], S44, 1309151649u); /* 60 */
|
|
||||||
II(a, b, c, d, in[4], S41, 4149444226u); /* 61 */
|
|
||||||
II(d, a, b, c, in[11], S42, 3174756917u); /* 62 */
|
|
||||||
II(c, d, a, b, in[2], S43, 718787259u); /* 63 */
|
|
||||||
II(b, c, d, a, in[9], S44, 3951481745u); /* 64 */
|
|
||||||
|
|
||||||
buf[0] += a;
|
|
||||||
buf[1] += b;
|
|
||||||
buf[2] += c;
|
|
||||||
buf[3] += d;
|
|
||||||
}
|
|
||||||
|
|
||||||
/*
|
|
||||||
***********************************************************************
|
|
||||||
** End of utl_md5.c **
|
|
||||||
******************************** (cut) ********************************
|
|
||||||
*/
|
|
|
@ -1,125 +0,0 @@
|
||||||
|
|
||||||
/*
|
|
||||||
***********************************************************************
|
|
||||||
** utl_md5.h -- header file for implementation of MD5 **
|
|
||||||
** RSA Data Security, Inc. MD5 Message-Digest Algorithm **
|
|
||||||
** Created: 2/17/90 RLR **
|
|
||||||
** Revised: 12/27/90 SRD,AJ,BSK,JT Reference C version **
|
|
||||||
** Revised (for MD5): RLR 4/27/91 **
|
|
||||||
** -- G modified to have y&~z instead of y&z **
|
|
||||||
** -- FF, GG, HH modified to add in last register done **
|
|
||||||
** -- Access pattern: round 2 works mod 5, round 3 works mod 3 **
|
|
||||||
** -- distinct additive constant for each step **
|
|
||||||
** -- round 4 added, working mod 7 **
|
|
||||||
***********************************************************************
|
|
||||||
*/
|
|
||||||
|
|
||||||
/*
|
|
||||||
***********************************************************************
|
|
||||||
** Message-digest routines: **
|
|
||||||
** To form the message digest for a message M **
|
|
||||||
** (1) Initialize a context buffer mdContext using MD5Init **
|
|
||||||
** (2) Call MD5Update on mdContext and M **
|
|
||||||
** (3) Call MD5Final on mdContext **
|
|
||||||
** The message digest is now in mdContext->digest[0...15] **
|
|
||||||
***********************************************************************
|
|
||||||
*/
|
|
||||||
|
|
||||||
#ifndef _utl_md5_h
|
|
||||||
#define _utl_md5_h
|
|
||||||
|
|
||||||
/* Set up for C function definitions, even when using C++ */
|
|
||||||
#ifdef __cplusplus
|
|
||||||
extern "C" {
|
|
||||||
#endif
|
|
||||||
|
|
||||||
/* ------------ Definitions --------- */
|
|
||||||
|
|
||||||
/* typedef a 32-bit type */
|
|
||||||
typedef unsigned long int MD5UINT4;
|
|
||||||
|
|
||||||
/* Data structure for MD5 (Message-Digest) computation */
|
|
||||||
typedef struct {
|
|
||||||
MD5UINT4 i[2]; /* number of _bits_ handled mod 2^64 */
|
|
||||||
MD5UINT4 buf[4]; /* scratch buffer */
|
|
||||||
unsigned char in[64]; /* input buffer */
|
|
||||||
unsigned char digest[16]; /* actual digest after MD5Final call */
|
|
||||||
} MD5_CTX;
|
|
||||||
|
|
||||||
/* ---------- Function Prototypes ------------- */
|
|
||||||
|
|
||||||
#ifdef WIN32
|
|
||||||
#ifdef BUILD_DLL
|
|
||||||
#define DLLINTERFACE __declspec(dllexport)
|
|
||||||
#else
|
|
||||||
#define DLLINTERFACE __declspec(dllimport)
|
|
||||||
#endif
|
|
||||||
#else
|
|
||||||
#define DLLINTERFACE
|
|
||||||
#endif
|
|
||||||
|
|
||||||
/*
|
|
||||||
* utl_md5Init: initialize the context
|
|
||||||
*
|
|
||||||
* Parameters:
|
|
||||||
*
|
|
||||||
* mdContext pointer to context variable
|
|
||||||
*
|
|
||||||
* Return value:
|
|
||||||
*
|
|
||||||
* none
|
|
||||||
*
|
|
||||||
* Note: The function initializes the message-digest context
|
|
||||||
* mdContext. Call before each new use of the context -
|
|
||||||
* all fields are set to zero.
|
|
||||||
*/
|
|
||||||
DLLINTERFACE void utl_md5Init(MD5_CTX * mdContext);
|
|
||||||
|
|
||||||
|
|
||||||
/*
|
|
||||||
* utl_md5update: update digest from variable length data
|
|
||||||
*
|
|
||||||
* Parameters:
|
|
||||||
*
|
|
||||||
* mdContext pointer to context variable
|
|
||||||
* inBuf pointer to data array/string
|
|
||||||
* inLen length of data array/string
|
|
||||||
*
|
|
||||||
* Return value:
|
|
||||||
*
|
|
||||||
* none
|
|
||||||
*
|
|
||||||
* Note: The function updates the message-digest context to account
|
|
||||||
* for the presence of each of the characters inBuf[0..inLen-1]
|
|
||||||
* in the message whose digest is being computed.
|
|
||||||
*/
|
|
||||||
|
|
||||||
DLLINTERFACE void utl_md5Update(MD5_CTX * mdContext, unsigned char *inBuf,
|
|
||||||
unsigned int inLen);
|
|
||||||
|
|
||||||
|
|
||||||
/*
|
|
||||||
* utl_md5Final: complete digest computation
|
|
||||||
*
|
|
||||||
* Parameters:
|
|
||||||
*
|
|
||||||
* mdContext pointer to context variable
|
|
||||||
*
|
|
||||||
* Return value:
|
|
||||||
*
|
|
||||||
* none
|
|
||||||
*
|
|
||||||
* Note: The function terminates the message-digest computation and
|
|
||||||
* ends with the desired message digest in mdContext.digest[0..15].
|
|
||||||
* Always call before using the digest[] variable.
|
|
||||||
*/
|
|
||||||
|
|
||||||
DLLINTERFACE void utl_md5Final(MD5_CTX * mdContext);
|
|
||||||
|
|
||||||
|
|
||||||
/* Ends C function definitions when using C++ */
|
|
||||||
#ifdef __cplusplus
|
|
||||||
};
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#endif /* _utl_md5_h */
|
|
|
@ -1,63 +0,0 @@
|
||||||
|
|
||||||
/*
|
|
||||||
|
|
||||||
utl_random
|
|
||||||
|
|
||||||
A "32-bit Multiply with carry" random number generator.
|
|
||||||
|
|
||||||
*/
|
|
||||||
|
|
||||||
|
|
||||||
#include "utl_random.h"
|
|
||||||
|
|
||||||
|
|
||||||
/* Initialize random number generator with two integer variables */
|
|
||||||
|
|
||||||
void utl_randomInit(RND_CTX * rndContext, unsigned int xi, unsigned int ci)
|
|
||||||
{
|
|
||||||
/*
|
|
||||||
* Choose a value for 'a' from this list
|
|
||||||
* 1791398085 1929682203 1683268614 1965537969 1675393560
|
|
||||||
* 1967773755 1517746329 1447497129 1655692410 1606218150
|
|
||||||
* 2051013963 1075433238 1557985959 1781943330 1893513180
|
|
||||||
* 1631296680 2131995753 2083801278 1873196400 1554115554
|
|
||||||
*/
|
|
||||||
rndContext->a = 1655692410;
|
|
||||||
rndContext->x = 30903;
|
|
||||||
rndContext->c = 0;
|
|
||||||
if (xi != 0)
|
|
||||||
rndContext->x = xi;
|
|
||||||
rndContext->c = ci;
|
|
||||||
rndContext->ah = rndContext->a >> 16;
|
|
||||||
rndContext->al = rndContext->a & 65535;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Initialize random number generator from time */
|
|
||||||
|
|
||||||
void utl_randomInitTime(RND_CTX * rndContext)
|
|
||||||
{
|
|
||||||
int a,b;
|
|
||||||
|
|
||||||
srand(time(NULL));
|
|
||||||
a=rand();
|
|
||||||
srand(clock());
|
|
||||||
b=rand();
|
|
||||||
utl_randomInit(rndContext, a, b);
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Returns random numbers */
|
|
||||||
|
|
||||||
unsigned int utl_random(RND_CTX * rndContext)
|
|
||||||
{
|
|
||||||
unsigned int xh, xl;
|
|
||||||
|
|
||||||
xh = rndContext->x >> 16, xl = rndContext->x & 65535;
|
|
||||||
rndContext->x = rndContext->x * rndContext->a + rndContext->c;
|
|
||||||
rndContext->c =
|
|
||||||
xh * rndContext->ah + ((xh * rndContext->al) >> 16) +
|
|
||||||
((xl * rndContext->ah) >> 16);
|
|
||||||
if (xl * rndContext->al >= (~rndContext->c + 1))
|
|
||||||
rndContext->c++;
|
|
||||||
|
|
||||||
return (rndContext->x);
|
|
||||||
}
|
|
|
@ -1,112 +0,0 @@
|
||||||
/*
|
|
||||||
|
|
||||||
A "32-bit Multiply with carry: random number generator.
|
|
||||||
Has a list of recommended multipliers. Very fast and good.
|
|
||||||
|
|
||||||
multiply-with-carry generator" x(n) = a*x(n-1) + carry mod 2^32.
|
|
||||||
period" (a*2^31)-1
|
|
||||||
|
|
||||||
*/
|
|
||||||
|
|
||||||
#ifndef _utl_random_h
|
|
||||||
#define _utl_random_h
|
|
||||||
|
|
||||||
/* Set up for C function definitions, even when using C++ */
|
|
||||||
#ifdef __cplusplus
|
|
||||||
extern "C" {
|
|
||||||
#endif
|
|
||||||
|
|
||||||
/* ------- Includes ---------- */
|
|
||||||
|
|
||||||
#include <stdlib.h>
|
|
||||||
#include <stdio.h>
|
|
||||||
#include <time.h>
|
|
||||||
|
|
||||||
/* ------- Definitions ------- */
|
|
||||||
|
|
||||||
/*
|
|
||||||
* Macros that return random number in a specific format. See utl_random()
|
|
||||||
* below for details. Float values are in the range [0.0-1.0].
|
|
||||||
*/
|
|
||||||
#define utl_randomInt(c) ((int)utl_random(c))
|
|
||||||
#define utl_randomFloat(c) ((double)utl_random(c)/(unsigned long)0xffffffff)
|
|
||||||
|
|
||||||
typedef struct {
|
|
||||||
unsigned int a;
|
|
||||||
unsigned int x;
|
|
||||||
unsigned int c;
|
|
||||||
unsigned int ah;
|
|
||||||
unsigned int al;
|
|
||||||
} RND_CTX;
|
|
||||||
|
|
||||||
/* ---- Function Prototypes -------- */
|
|
||||||
|
|
||||||
#ifdef WIN32
|
|
||||||
#ifdef BUILD_DLL
|
|
||||||
#define DLLINTERFACE __declspec(dllexport)
|
|
||||||
#else
|
|
||||||
#define DLLINTERFACE __declspec(dllimport)
|
|
||||||
#endif
|
|
||||||
#else
|
|
||||||
#define DLLINTERFACE
|
|
||||||
#endif
|
|
||||||
|
|
||||||
/*
|
|
||||||
* utl_randomInit: Initialize random number generator with two integers.
|
|
||||||
*
|
|
||||||
* Paramaters:
|
|
||||||
*
|
|
||||||
* rndContext pointer to context structure
|
|
||||||
* xi, ci integers that define the random sequence
|
|
||||||
*
|
|
||||||
* Return value:
|
|
||||||
*
|
|
||||||
* none
|
|
||||||
*
|
|
||||||
* Note: The random sequence of numbers returned by utl_random() is the
|
|
||||||
* same for the same two integers and has a period of 2^31.
|
|
||||||
*
|
|
||||||
*/
|
|
||||||
DLLINTERFACE void utl_randomInit(RND_CTX * rndContext, unsigned int xi,
|
|
||||||
unsigned int ci);
|
|
||||||
|
|
||||||
/*
|
|
||||||
* utl_randomInitTime: Initialize random number generator with the time
|
|
||||||
*
|
|
||||||
* Parameters:
|
|
||||||
*
|
|
||||||
* rndContext pointer to context structure
|
|
||||||
*
|
|
||||||
* Return value:
|
|
||||||
*
|
|
||||||
* none
|
|
||||||
*
|
|
||||||
*/
|
|
||||||
DLLINTERFACE void utl_randomInitTime(RND_CTX * rndContext);
|
|
||||||
|
|
||||||
|
|
||||||
/*
|
|
||||||
* utl_random: Returns random numbers
|
|
||||||
*
|
|
||||||
* Parameters:
|
|
||||||
*
|
|
||||||
* rndContext pointer to context structure
|
|
||||||
*
|
|
||||||
* Return value:
|
|
||||||
*
|
|
||||||
* random number (32bit unsigned integer)
|
|
||||||
*
|
|
||||||
* Note: utl_randomInit() or utl_randomInitTime() must have been called
|
|
||||||
* before using this function.
|
|
||||||
*
|
|
||||||
*/
|
|
||||||
DLLINTERFACE unsigned int utl_random(RND_CTX * rndContext);
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/* Ends C function definitions when using C++ */
|
|
||||||
#ifdef __cplusplus
|
|
||||||
};
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#endif /* _utl_random_h */
|
|
|
@ -1,182 +0,0 @@
|
||||||
/*
|
|
||||||
Copyright (C) 2011 Markus Kauppila <markus.kauppila@gmail.com>
|
|
||||||
|
|
||||||
This software is provided 'as-is', without any express or implied
|
|
||||||
warranty. In no event will the authors be held liable for any damages
|
|
||||||
arising from the use of this software.
|
|
||||||
|
|
||||||
Permission is granted to anyone to use this software for any purpose,
|
|
||||||
including commercial applications, and to alter it and redistribute it
|
|
||||||
freely, subject to the following restrictions:
|
|
||||||
|
|
||||||
1. The origin of this software must not be misrepresented; you must not
|
|
||||||
claim that you wrote the original software. If you use this software
|
|
||||||
in a product, an acknowledgment in the product documentation would be
|
|
||||||
appreciated but is not required.
|
|
||||||
2. Altered source versions must be plainly marked as such, and must not be
|
|
||||||
misrepresented as being the original software.
|
|
||||||
3. This notice may not be removed or altered from any source distribution.
|
|
||||||
*/
|
|
||||||
|
|
||||||
#include <SDL/SDL.h>
|
|
||||||
|
|
||||||
#include "logger_helpers.h"
|
|
||||||
|
|
||||||
/*!
|
|
||||||
* Helper function. Turns the given integer in to a string
|
|
||||||
*
|
|
||||||
* Note: uses static buffer internally, so the return value
|
|
||||||
* isn't valid after the next call of this function. If you
|
|
||||||
* want to retain the return value, make a copy of it
|
|
||||||
*
|
|
||||||
* \param integer The converted integer
|
|
||||||
* \returns Given integer as string
|
|
||||||
*/
|
|
||||||
char *IntToString(const int integer) {
|
|
||||||
static char buffer[256]; // malloc might work better
|
|
||||||
memset(buffer, 0, sizeof(buffer));
|
|
||||||
|
|
||||||
SDL_snprintf(buffer, sizeof(buffer), "%d", integer);
|
|
||||||
|
|
||||||
return buffer;
|
|
||||||
}
|
|
||||||
|
|
||||||
/*!
|
|
||||||
* Helper function. Turns the given integer in to a string in
|
|
||||||
* hex format.
|
|
||||||
*
|
|
||||||
* Note: uses static buffer internally, so the return value
|
|
||||||
* isn't valid after the next call of this function. If you
|
|
||||||
* want to retain the return value, make a copy of it
|
|
||||||
*
|
|
||||||
* \param integer The converted integer
|
|
||||||
* \returns Given integer as string in hex fomat
|
|
||||||
*/
|
|
||||||
char *IntToHexString(const Uint64 integer) {
|
|
||||||
static char buffer[256]; // malloc might work better
|
|
||||||
memset(buffer, 0, sizeof(buffer));
|
|
||||||
|
|
||||||
SDL_snprintf(buffer, sizeof(buffer), "%llX", integer);
|
|
||||||
|
|
||||||
return buffer;
|
|
||||||
}
|
|
||||||
|
|
||||||
/*!
|
|
||||||
* Helper function. Turns the given double value in to a string
|
|
||||||
*
|
|
||||||
* Note: uses static buffer internally, so the return value
|
|
||||||
* isn't valid after the next call of this function. If you
|
|
||||||
* want to retain the return value, make a copy of it
|
|
||||||
*
|
|
||||||
* \param decimal The converted double value
|
|
||||||
* \returns Given double value as string
|
|
||||||
*/
|
|
||||||
char *DoubleToString(const double decimal) {
|
|
||||||
static char buffer[256]; // malloc might work better
|
|
||||||
memset(buffer, 0, sizeof(buffer));
|
|
||||||
|
|
||||||
SDL_snprintf(buffer, sizeof(buffer), "%.5f", decimal);
|
|
||||||
|
|
||||||
return buffer;
|
|
||||||
}
|
|
||||||
|
|
||||||
/*!
|
|
||||||
* Converts unix timestamp to its ascii presentation
|
|
||||||
*
|
|
||||||
* Note: uses static buffer internally, so the return value
|
|
||||||
* isn't valid after the next call of this function. If you
|
|
||||||
* want to retain the return value, make a copy of it
|
|
||||||
*
|
|
||||||
* \param timestamp Timestamp
|
|
||||||
* \return Ascii presentation
|
|
||||||
*/
|
|
||||||
char *TimestampToString(const time_t timestamp) {
|
|
||||||
static char buffer[256];
|
|
||||||
memset(buffer, 0, sizeof(buffer));
|
|
||||||
|
|
||||||
time_t copy = timestamp;
|
|
||||||
|
|
||||||
struct tm *local = localtime(©);
|
|
||||||
strftime(buffer, sizeof(buffer), "%a %Y-%m-%d %H:%M:%S %Z", local);
|
|
||||||
|
|
||||||
return buffer;
|
|
||||||
}
|
|
||||||
|
|
||||||
/*!
|
|
||||||
* Converts unix timestamp to its ascii presentation in given format
|
|
||||||
*
|
|
||||||
* Note: uses static buffer internally, so the return value
|
|
||||||
* isn't valid after the next call of this function. If you
|
|
||||||
* want to retain the return value, make a copy of it
|
|
||||||
*
|
|
||||||
* \param timestamp Timestamp
|
|
||||||
* \param format Formatting specification such as "%Y%m%d"
|
|
||||||
*
|
|
||||||
* \return Ascii presentation
|
|
||||||
*/
|
|
||||||
char *TimestampToStringWithFormat(const time_t timestamp, char *format) {
|
|
||||||
static char buffer[256];
|
|
||||||
memset(buffer, 0, sizeof(buffer));
|
|
||||||
|
|
||||||
time_t copy = timestamp;
|
|
||||||
|
|
||||||
struct tm *local = localtime(©);
|
|
||||||
strftime(buffer, sizeof(buffer), format, local);
|
|
||||||
|
|
||||||
return buffer;
|
|
||||||
}
|
|
||||||
|
|
||||||
/*! Turns all the characters of the given
|
|
||||||
* string to lowercase and returns the resulting string.
|
|
||||||
*
|
|
||||||
* \param string String to be converted
|
|
||||||
* \return Newly allocated lower-case version of the given string
|
|
||||||
*/
|
|
||||||
char *
|
|
||||||
ToLowerCase(const char *string)
|
|
||||||
{
|
|
||||||
if(ValidateString(string) == 0) {
|
|
||||||
return NULL;
|
|
||||||
}
|
|
||||||
|
|
||||||
const int size = SDL_strlen(string);
|
|
||||||
char *ret = SDL_malloc(size + 1);
|
|
||||||
strncpy(ret, string, size);
|
|
||||||
ret[size] = '\0';
|
|
||||||
|
|
||||||
int counter = 0;
|
|
||||||
for(; counter < size; ++counter) {
|
|
||||||
ret[counter] = tolower(ret[counter]);
|
|
||||||
}
|
|
||||||
|
|
||||||
// printf("Debug: %s == %s\n", string, ret);
|
|
||||||
|
|
||||||
return ret;
|
|
||||||
}
|
|
||||||
|
|
||||||
/*!
|
|
||||||
* Validates string by checking that given string is not
|
|
||||||
* NULL, its length is non-zero etc.
|
|
||||||
*
|
|
||||||
* \param string Validated string
|
|
||||||
* \returns 1 if string is valid, otherwise 0
|
|
||||||
*/
|
|
||||||
int
|
|
||||||
ValidateString(const char *string)
|
|
||||||
{
|
|
||||||
int retVal = 1;
|
|
||||||
|
|
||||||
if(string != NULL) {
|
|
||||||
if(SDL_strlen(string) > 0) {
|
|
||||||
retVal = 1;
|
|
||||||
}
|
|
||||||
|
|
||||||
retVal = 1;
|
|
||||||
} else {
|
|
||||||
retVal = 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
return retVal;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
|
@ -1,40 +0,0 @@
|
||||||
/*
|
|
||||||
Copyright (C) 2011 Markus Kauppila <markus.kauppila@gmail.com>
|
|
||||||
|
|
||||||
This software is provided 'as-is', without any express or implied
|
|
||||||
warranty. In no event will the authors be held liable for any damages
|
|
||||||
arising from the use of this software.
|
|
||||||
|
|
||||||
Permission is granted to anyone to use this software for any purpose,
|
|
||||||
including commercial applications, and to alter it and redistribute it
|
|
||||||
freely, subject to the following restrictions:
|
|
||||||
|
|
||||||
1. The origin of this software must not be misrepresented; you must not
|
|
||||||
claim that you wrote the original software. If you use this software
|
|
||||||
in a product, an acknowledgment in the product documentation would be
|
|
||||||
appreciated but is not required.
|
|
||||||
2. Altered source versions must be plainly marked as such, and must not be
|
|
||||||
misrepresented as being the original software.
|
|
||||||
3. This notice may not be removed or altered from any source distribution.
|
|
||||||
*/
|
|
||||||
|
|
||||||
#ifndef _LOGGER_HELPERS_G
|
|
||||||
#define _LOGGER_HELPERS_G
|
|
||||||
|
|
||||||
#include <time.h>
|
|
||||||
|
|
||||||
char *IntToString(const int integer);
|
|
||||||
|
|
||||||
char *IntToHexString(const Uint64 integer);
|
|
||||||
|
|
||||||
char *DoubleToString(const double decimal);
|
|
||||||
|
|
||||||
char *TimestampToString(const time_t timestamp);
|
|
||||||
|
|
||||||
char *TimestampToStringWithFormat(const time_t timestamp, char *format);
|
|
||||||
|
|
||||||
char *ToLowerCase(const char *string);
|
|
||||||
|
|
||||||
int ValidateString(const char *string);
|
|
||||||
|
|
||||||
#endif
|
|
|
@ -1,225 +0,0 @@
|
||||||
/*
|
|
||||||
Copyright (C) 2011 Markus Kauppila <markus.kauppila@gmail.com>
|
|
||||||
|
|
||||||
This software is provided 'as-is', without any express or implied
|
|
||||||
warranty. In no event will the authors be held liable for any damages
|
|
||||||
arising from the use of this software.
|
|
||||||
|
|
||||||
Permission is granted to anyone to use this software for any purpose,
|
|
||||||
including commercial applications, and to alter it and redistribute it
|
|
||||||
freely, subject to the following restrictions:
|
|
||||||
|
|
||||||
1. The origin of this software must not be misrepresented; you must not
|
|
||||||
claim that you wrote the original software. If you use this software
|
|
||||||
in a product, an acknowledgment in the product documentation would be
|
|
||||||
appreciated but is not required.
|
|
||||||
2. Altered source versions must be plainly marked as such, and must not be
|
|
||||||
misrepresented as being the original software.
|
|
||||||
3. This notice may not be removed or altered from any source distribution.
|
|
||||||
*/
|
|
||||||
|
|
||||||
#ifndef _PLAIN_LOGGER
|
|
||||||
#define _PLAIN_LOGGER
|
|
||||||
|
|
||||||
#include "stdio.h"
|
|
||||||
|
|
||||||
#include "../../include/SDL_test.h"
|
|
||||||
|
|
||||||
#include "../runner/logger.h"
|
|
||||||
|
|
||||||
#include "logger_helpers.h"
|
|
||||||
#include "plain_logger.h"
|
|
||||||
|
|
||||||
/*! Current indentationt level */
|
|
||||||
static int indentLevel;
|
|
||||||
|
|
||||||
/*! Logging level of the logger */
|
|
||||||
static Level level = LOGGER_TERSE;
|
|
||||||
|
|
||||||
//! Handle to log file
|
|
||||||
static FILE *logFile;
|
|
||||||
|
|
||||||
/*!
|
|
||||||
* Prints out the output of the logger
|
|
||||||
*
|
|
||||||
* \param currentIndentLevel The currently used indentation level
|
|
||||||
* \param message The message to be printed out
|
|
||||||
*/
|
|
||||||
int
|
|
||||||
Output(const int currentIndentLevel, const char *message, ...)
|
|
||||||
{
|
|
||||||
if(logFile == NULL) {
|
|
||||||
fprintf(stderr, "logfile is NULL\n");
|
|
||||||
exit(3);
|
|
||||||
}
|
|
||||||
|
|
||||||
int indent = 0;
|
|
||||||
for( ; indent < currentIndentLevel; ++indent) {
|
|
||||||
fprintf(logFile, " "); // \todo make configurable?
|
|
||||||
}
|
|
||||||
|
|
||||||
char buffer[1024];
|
|
||||||
memset(buffer, 0, 1024);
|
|
||||||
|
|
||||||
va_list list;
|
|
||||||
va_start(list, message);
|
|
||||||
|
|
||||||
SDL_vsnprintf(buffer, 1024, message, list);
|
|
||||||
|
|
||||||
va_end(list);
|
|
||||||
fprintf(logFile, "%s\n", buffer);
|
|
||||||
fflush(logFile);
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
void
|
|
||||||
PlainRunStarted(int parameterCount, char *runnerParameters[], char *runSeed,
|
|
||||||
time_t eventTime, LoggerData *data)
|
|
||||||
{
|
|
||||||
if(data == NULL) {
|
|
||||||
fprintf(stderr, "Logger data is NULL\n");
|
|
||||||
exit(3);
|
|
||||||
}
|
|
||||||
|
|
||||||
// Set up the logging destination
|
|
||||||
if(data->stdoutEnabled == 1) {
|
|
||||||
logFile = stdout;
|
|
||||||
} else {
|
|
||||||
logFile = fopen(data->filename, "w");
|
|
||||||
if(logFile == NULL) {
|
|
||||||
fprintf(stderr, "Log file %s couldn't opened\n", data->filename);
|
|
||||||
exit(3);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
level = data->level;
|
|
||||||
|
|
||||||
Output(indentLevel, "Test run started at %s", TimestampToString(eventTime));
|
|
||||||
Output(indentLevel, "Fuzzer seed is: %s", runSeed);
|
|
||||||
Output(indentLevel, "Runner parameters: ");
|
|
||||||
|
|
||||||
int counter = 0;
|
|
||||||
for(counter = 0; counter < parameterCount; counter++) {
|
|
||||||
char *parameter = runnerParameters[counter];
|
|
||||||
Output(indentLevel, "\t%s", parameter);
|
|
||||||
}
|
|
||||||
|
|
||||||
Output(indentLevel, "");
|
|
||||||
}
|
|
||||||
|
|
||||||
void
|
|
||||||
PlainRunEnded(int testCount, int suiteCount, int testPassCount, int testFailCount,
|
|
||||||
int testSkippedCount, time_t endTime, double totalRuntime)
|
|
||||||
{
|
|
||||||
Output(indentLevel, "Test run ended at %s", TimestampToString(endTime));
|
|
||||||
|
|
||||||
Output(indentLevel, "Ran %d tests in %0.5f seconds from %d suites.",
|
|
||||||
testCount, totalRuntime, suiteCount);
|
|
||||||
|
|
||||||
Output(indentLevel, "%d tests passed", testPassCount);
|
|
||||||
Output(indentLevel, "%d tests failed", testFailCount);
|
|
||||||
Output(indentLevel, "%d tests skipped", testSkippedCount);
|
|
||||||
|
|
||||||
fclose(logFile);
|
|
||||||
}
|
|
||||||
|
|
||||||
void
|
|
||||||
PlainSuiteStarted(const char *suiteName, time_t eventTime)
|
|
||||||
{
|
|
||||||
Output(indentLevel++, "Executing tests from %s", suiteName);
|
|
||||||
}
|
|
||||||
|
|
||||||
void
|
|
||||||
PlainSuiteEnded(int testsPassed, int testsFailed, int testsSkipped,
|
|
||||||
time_t endTime, double totalRuntime)
|
|
||||||
{
|
|
||||||
Output(--indentLevel, "Suite executed. %d passed, %d failed and %d skipped. Total runtime %0.5f seconds",
|
|
||||||
testsPassed, testsFailed, testsSkipped, totalRuntime);
|
|
||||||
Output(indentLevel, "");
|
|
||||||
}
|
|
||||||
|
|
||||||
void
|
|
||||||
PlainTestStarted(const char *testName, const char *suiteName,
|
|
||||||
const char *testDescription, Uint64 execKey, time_t startTime)
|
|
||||||
{
|
|
||||||
Output(indentLevel, "Executing test: %s (in %s, exec key: %llX)", testName, suiteName, execKey);
|
|
||||||
Output(indentLevel++, "Test description: %s", testDescription);
|
|
||||||
}
|
|
||||||
|
|
||||||
void
|
|
||||||
PlainTestEnded(const char *testName, const char *suiteName,
|
|
||||||
int testResult, time_t endTime, double totalRuntime)
|
|
||||||
{
|
|
||||||
switch(testResult) {
|
|
||||||
case TEST_RESULT_PASS:
|
|
||||||
Output(--indentLevel, "%s: ok", testName);
|
|
||||||
break;
|
|
||||||
case TEST_RESULT_FAILURE:
|
|
||||||
Output(--indentLevel, "%s: failed", testName);
|
|
||||||
break;
|
|
||||||
case TEST_RESULT_NO_ASSERT:
|
|
||||||
Output(--indentLevel, "%s: failed -> no assert", testName);
|
|
||||||
break;
|
|
||||||
case TEST_RESULT_SKIPPED:
|
|
||||||
Output(--indentLevel, "%s: skipped", testName);
|
|
||||||
break;
|
|
||||||
case TEST_RESULT_KILLED:
|
|
||||||
Output(--indentLevel, "%s: killed, exceeded timeout", testName);
|
|
||||||
break;
|
|
||||||
case TEST_RESULT_SETUP_FAILURE:
|
|
||||||
Output(--indentLevel, "%s: killed, setup failure", testName);
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
void
|
|
||||||
PlainAssert(const char *assertName, int assertResult, const char *assertMessage,
|
|
||||||
time_t eventTime)
|
|
||||||
{
|
|
||||||
// Log passed asserts only on VERBOSE level
|
|
||||||
if(level <= LOGGER_TERSE && assertResult == ASSERT_PASS) {
|
|
||||||
return ;
|
|
||||||
}
|
|
||||||
|
|
||||||
const char *result = (assertResult) ? "passed" : "failed";
|
|
||||||
Output(indentLevel, "%s: %s - %s", assertName, result, assertMessage);
|
|
||||||
}
|
|
||||||
|
|
||||||
void
|
|
||||||
PlainAssertWithValues(const char *assertName, int assertResult, const char *assertMessage,
|
|
||||||
int actualValue, int expectedValue, time_t eventTime)
|
|
||||||
{
|
|
||||||
// Log passed asserts only on VERBOSE level
|
|
||||||
if(level <= LOGGER_TERSE && assertResult == ASSERT_PASS) {
|
|
||||||
return ;
|
|
||||||
}
|
|
||||||
|
|
||||||
const char *result = (assertResult) ? "passed" : "failed";
|
|
||||||
Output(indentLevel, "%s: %s (expected %d, actualValue %d) - %s",
|
|
||||||
assertName, result, expectedValue, actualValue, assertMessage);
|
|
||||||
}
|
|
||||||
|
|
||||||
void
|
|
||||||
PlainAssertSummary(int numAsserts, int numAssertsFailed, int numAssertsPass, time_t eventTime)
|
|
||||||
{
|
|
||||||
Output(indentLevel, "Assert summary: %d failed, %d passed (total: %d)",
|
|
||||||
numAssertsFailed, numAssertsPass, numAsserts);
|
|
||||||
}
|
|
||||||
|
|
||||||
void
|
|
||||||
PlainLog(time_t eventTime, char *fmt, ...)
|
|
||||||
{
|
|
||||||
// create the log message
|
|
||||||
va_list args;
|
|
||||||
char logMessage[1024];
|
|
||||||
memset(logMessage, 0, sizeof(logMessage));
|
|
||||||
|
|
||||||
va_start( args, fmt );
|
|
||||||
SDL_vsnprintf( logMessage, sizeof(logMessage), fmt, args );
|
|
||||||
va_end( args );
|
|
||||||
|
|
||||||
Output(indentLevel, "%s", logMessage);
|
|
||||||
}
|
|
||||||
|
|
||||||
#endif
|
|
|
@ -1,142 +0,0 @@
|
||||||
/*
|
|
||||||
Copyright (C) 2011 Markus Kauppila <markus.kauppila@gmail.com>
|
|
||||||
|
|
||||||
This software is provided 'as-is', without any express or implied
|
|
||||||
warranty. In no event will the authors be held liable for any damages
|
|
||||||
arising from the use of this software.
|
|
||||||
|
|
||||||
Permission is granted to anyone to use this software for any purpose,
|
|
||||||
including commercial applications, and to alter it and redistribute it
|
|
||||||
freely, subject to the following restrictions:
|
|
||||||
|
|
||||||
1. The origin of this software must not be misrepresented; you must not
|
|
||||||
claim that you wrote the original software. If you use this software
|
|
||||||
in a product, an acknowledgment in the product documentation would be
|
|
||||||
appreciated but is not required.
|
|
||||||
2. Altered source versions must be plainly marked as such, and must not be
|
|
||||||
misrepresented as being the original software.
|
|
||||||
3. This notice may not be removed or altered from any source distribution.
|
|
||||||
*/
|
|
||||||
|
|
||||||
#ifndef _PLAIN_LOGGER_H
|
|
||||||
#define _PLAIN_LOGGER_H
|
|
||||||
|
|
||||||
#include <SDL/SDL_stdinc.h>
|
|
||||||
#include "../runner/logger.h"
|
|
||||||
|
|
||||||
|
|
||||||
/*!
|
|
||||||
* Prints out information about starting the test run.
|
|
||||||
*
|
|
||||||
* \param parameterCount How many parameters were given
|
|
||||||
* \param runnerParameters What parameters were given to the runner
|
|
||||||
* \param runSeed Fuzzer seed of the harness
|
|
||||||
* \param eventTime When the execution started
|
|
||||||
* \param data LoggerData structure which contains data for the logger
|
|
||||||
*
|
|
||||||
*/
|
|
||||||
void PlainRunStarted(int parameterCount, char *runnerParameters[], char *runSeed,
|
|
||||||
time_t eventTime, LoggerData *data);
|
|
||||||
|
|
||||||
/*!
|
|
||||||
* Prints out information about ending the test run.
|
|
||||||
*
|
|
||||||
* \param testCount How many tests were executed in total
|
|
||||||
* \param suiteCount How many suite were executed in total
|
|
||||||
* \param testPassCount How many tests passed in total
|
|
||||||
* \param testSkippedCount How many tests were skipped in total
|
|
||||||
* \param testFailCount How many tests failed in total
|
|
||||||
* \param endTime When the execution ended
|
|
||||||
* \param totalRuntime How long the execution took
|
|
||||||
*/
|
|
||||||
void PlainRunEnded(int testCount, int suiteCount, int testPassCount, int testFailCount,
|
|
||||||
int testSkippedCount, time_t endTime, double totalRuntime);
|
|
||||||
|
|
||||||
/*!
|
|
||||||
* Prints the data about the test suite that'll be executed next
|
|
||||||
*
|
|
||||||
* \param suiteName Name of the test suite
|
|
||||||
* \param eventTime When the execution starts
|
|
||||||
*/
|
|
||||||
void PlainSuiteStarted(const char *suiteName, time_t eventTime);
|
|
||||||
|
|
||||||
/*!
|
|
||||||
* Prints information about the test suite that was just executed
|
|
||||||
*
|
|
||||||
* \param testsPassed how many tests passed from this suite
|
|
||||||
* \param testsFailed how many tests failed from this suite
|
|
||||||
* \param testsSkipped how many tests were skipped (not implemented)
|
|
||||||
* \param endTime When the suite execution ended
|
|
||||||
* \param totalRuntime How long did the suite's execution take
|
|
||||||
*/
|
|
||||||
void PlainSuiteEnded(int testsPassed, int testsFailed, int testsSkipped,
|
|
||||||
time_t endTime, double totalRuntime);
|
|
||||||
|
|
||||||
/*!
|
|
||||||
* Prints the data about the test test that'll be executed next
|
|
||||||
*
|
|
||||||
* \param testName Name of the test that'll be executed
|
|
||||||
* \param suiteName Name of the suite of the test
|
|
||||||
* \param testDescription Description of the test
|
|
||||||
* \param execKey Execution key for fuzzing
|
|
||||||
* \param startTime When the test started to execute
|
|
||||||
*/
|
|
||||||
void PlainTestStarted(const char *testName, const char *suiteName,
|
|
||||||
const char *testDescription, Uint64 execKey, time_t startTime);
|
|
||||||
|
|
||||||
/*!
|
|
||||||
* Prints information about the test test that was just executed
|
|
||||||
*
|
|
||||||
* \param testName Name of the executed test
|
|
||||||
* \param suiteName Name of the suite of the test
|
|
||||||
* \param testResult Did the test fail (!= 0) or pass (== 0)
|
|
||||||
* \param endTime When the test execution ended
|
|
||||||
* \param totalRuntime Total runtime of the executed test
|
|
||||||
*/
|
|
||||||
void PlainTestEnded(const char *testName, const char *suiteName,
|
|
||||||
int testResult, time_t endTime, double totalRuntime);
|
|
||||||
|
|
||||||
|
|
||||||
/*!
|
|
||||||
* Prints information about plain assert
|
|
||||||
*
|
|
||||||
* \param assertName Name of the assert
|
|
||||||
* \param assertResult Did assert fail (== 0) or success (!= 0)
|
|
||||||
* \param assertMessage Message of the assert
|
|
||||||
* \param eventTime When the assert happened
|
|
||||||
*/
|
|
||||||
void PlainAssert(const char *assertName, int assertResult, const char *assertMessage,
|
|
||||||
time_t eventTime);
|
|
||||||
|
|
||||||
/*!
|
|
||||||
* Prints information about assert that has actual and expected values
|
|
||||||
*
|
|
||||||
* \param assertName Name of the assert
|
|
||||||
* \param assertResult Did assert fail (== 0) or success (!= 0)
|
|
||||||
* \param assertMessage Message of the assert
|
|
||||||
* \param actualValue Actual value of assert
|
|
||||||
* \param expected Excepted value of assert
|
|
||||||
* \param eventTime When the assert happened
|
|
||||||
*/
|
|
||||||
void PlainAssertWithValues(const char *assertName, int assertResult, const char *assertMessage,
|
|
||||||
int actualValue, int expected, time_t eventTime);
|
|
||||||
|
|
||||||
/*!
|
|
||||||
* Prints summary of all assertions of certain tests
|
|
||||||
*
|
|
||||||
* \param numAsserts Total assert count for the executed test
|
|
||||||
* \param numAssertsFailed Count of failed asserts in the test
|
|
||||||
* \param numAssertsPass Count of passed asserts in the test
|
|
||||||
* \param eventTime Timestamp of the summary
|
|
||||||
*/
|
|
||||||
void PlainAssertSummary(int numAsserts, int numAssertsFailed, int numAssertsPass, time_t eventTime);
|
|
||||||
|
|
||||||
/*!
|
|
||||||
* Prints given message
|
|
||||||
*
|
|
||||||
* \param eventTime Timestamp for log message
|
|
||||||
* \param fmt Message to be logged
|
|
||||||
*/
|
|
||||||
void PlainLog(time_t eventTime, char *fmt, ...);
|
|
||||||
|
|
||||||
#endif
|
|
|
@ -1,376 +0,0 @@
|
||||||
/*
|
|
||||||
Copyright (C) 2011 Markus Kauppila <markus.kauppila@gmail.com>
|
|
||||||
|
|
||||||
This software is provided 'as-is', without any express or implied
|
|
||||||
warranty. In no event will the authors be held liable for any damages
|
|
||||||
arising from the use of this software.
|
|
||||||
|
|
||||||
Permission is granted to anyone to use this software for any purpose,
|
|
||||||
including commercial applications, and to alter it and redistribute it
|
|
||||||
freely, subject to the following restrictions:
|
|
||||||
|
|
||||||
1. The origin of this software must not be misrepresented; you must not
|
|
||||||
claim that you wrote the original software. If you use this software
|
|
||||||
in a product, an acknowledgment in the product documentation would be
|
|
||||||
appreciated but is not required.
|
|
||||||
2. Altered source versions must be plainly marked as such, and must not be
|
|
||||||
misrepresented as being the original software.
|
|
||||||
3. This notice may not be removed or altered from any source distribution.
|
|
||||||
*/
|
|
||||||
|
|
||||||
#include <stdio.h>
|
|
||||||
#include <string.h>
|
|
||||||
#include <assert.h>
|
|
||||||
|
|
||||||
#include <SDL/SDL.h>
|
|
||||||
|
|
||||||
#include "xml.h"
|
|
||||||
#include "logger_helpers.h"
|
|
||||||
|
|
||||||
/*! Size for xml element buffer */
|
|
||||||
#define bufferSize 1024
|
|
||||||
/*! Buffer for storing the xml element under construction */
|
|
||||||
static char buffer[bufferSize];
|
|
||||||
|
|
||||||
/*! Pointer to XML root element's tag */
|
|
||||||
static const char *root;
|
|
||||||
|
|
||||||
/*!
|
|
||||||
* Defines structure used for "counting" open XML-tags
|
|
||||||
*/
|
|
||||||
typedef struct TagList {
|
|
||||||
const char *tag;
|
|
||||||
struct TagList *next;
|
|
||||||
} TagList;
|
|
||||||
|
|
||||||
static TagList *openTags = NULL;
|
|
||||||
|
|
||||||
/*!
|
|
||||||
* Prepend the open tags list
|
|
||||||
*
|
|
||||||
* \return On error returns non-zero value, otherwise zero will returned
|
|
||||||
*/
|
|
||||||
static int
|
|
||||||
AddOpenTag(const char *tag)
|
|
||||||
{
|
|
||||||
TagList *openTag = SDL_malloc(sizeof(TagList));
|
|
||||||
if(openTag == NULL) {
|
|
||||||
return 1;
|
|
||||||
}
|
|
||||||
memset(openTag, 0, sizeof(TagList));
|
|
||||||
|
|
||||||
const int tagSize = SDL_strlen(tag) + 1;
|
|
||||||
openTag->tag = SDL_malloc(tagSize);
|
|
||||||
if(openTag->tag == NULL) {
|
|
||||||
SDL_free(openTag);
|
|
||||||
return 1;
|
|
||||||
}
|
|
||||||
|
|
||||||
strncpy((char *)openTag->tag, (char *)tag, tagSize);
|
|
||||||
|
|
||||||
openTag->next = openTags;
|
|
||||||
|
|
||||||
openTags = openTag;
|
|
||||||
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
/*!
|
|
||||||
* Removes the first tag from the open tag list
|
|
||||||
*
|
|
||||||
* \return On error returns non-zero value, otherwise zero will returned
|
|
||||||
*/
|
|
||||||
static int
|
|
||||||
RemoveOpenTag(const char *tag)
|
|
||||||
{
|
|
||||||
if(openTags == NULL || ValidateString(tag) == 0) {
|
|
||||||
return 1;
|
|
||||||
}
|
|
||||||
|
|
||||||
int retVal = 0;
|
|
||||||
|
|
||||||
const int size = SDL_strlen(tag);
|
|
||||||
char *tempTag = SDL_malloc(size);
|
|
||||||
strncpy(tempTag, tag, size);
|
|
||||||
|
|
||||||
// Tag should always be the same as previously opened tag
|
|
||||||
// It prevents opening and ending tag mismatch
|
|
||||||
if(SDL_strncmp(tempTag, tag, size) == 0) {
|
|
||||||
TagList *openTag = openTags;
|
|
||||||
SDL_free((char *)openTag->tag);
|
|
||||||
|
|
||||||
openTags = openTags->next;
|
|
||||||
SDL_free(openTag);
|
|
||||||
} else {
|
|
||||||
//printf("Debug | xml.c:RemoveOpenTag(): open/end tag mismatch");
|
|
||||||
retVal = 1;
|
|
||||||
}
|
|
||||||
|
|
||||||
return retVal;
|
|
||||||
}
|
|
||||||
|
|
||||||
/*!
|
|
||||||
* Debug function. Prints the contents of the open tags list.
|
|
||||||
*/
|
|
||||||
static void
|
|
||||||
PrintOpenTags()
|
|
||||||
{
|
|
||||||
printf("\nOpen tags:\n");
|
|
||||||
|
|
||||||
TagList *openTag = NULL;
|
|
||||||
for(openTag = openTags; openTag; openTag = openTag->next) {
|
|
||||||
printf("\ttag: %s\n", openTag->tag);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/*!
|
|
||||||
* Converts the special characters ', ", <, >, and & to
|
|
||||||
* corresponding entities: ' " < > and &
|
|
||||||
*
|
|
||||||
* \param string String to be escaped
|
|
||||||
* \return Newly allocated escaped string
|
|
||||||
*/
|
|
||||||
const char *
|
|
||||||
EscapeString(const char *string)
|
|
||||||
{
|
|
||||||
// Calculate the size of the escaped string
|
|
||||||
int totalSize = 0;
|
|
||||||
|
|
||||||
const int maxCount = SDL_strlen(string);
|
|
||||||
|
|
||||||
int counter = 0;
|
|
||||||
for(; counter < maxCount; ++counter) {
|
|
||||||
char character = string[counter];
|
|
||||||
|
|
||||||
switch(character) {
|
|
||||||
case '&': totalSize += 5; //SDL_strlen("&");
|
|
||||||
break;
|
|
||||||
case '\'': totalSize += 6; //SDL_strlen("'");
|
|
||||||
break;
|
|
||||||
case '"': totalSize += 6; //SDL_strlen(""");
|
|
||||||
break;
|
|
||||||
case '<': totalSize += 4; //SDL_strlen("<");
|
|
||||||
break;
|
|
||||||
case '>': totalSize += 4; //SDL_strlen(">");
|
|
||||||
break;
|
|
||||||
default:
|
|
||||||
totalSize += 1;
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
totalSize += 1; // for '\0'
|
|
||||||
|
|
||||||
char *retBuffer = SDL_malloc(totalSize * sizeof(char));
|
|
||||||
if(retBuffer == NULL) {
|
|
||||||
return NULL;
|
|
||||||
}
|
|
||||||
|
|
||||||
// escape the string
|
|
||||||
char *curRetBuffer = retBuffer;
|
|
||||||
const char *curString = string;
|
|
||||||
|
|
||||||
char character = *curString;
|
|
||||||
while( (character = *curString++) ) {
|
|
||||||
|
|
||||||
switch(character) {
|
|
||||||
case '&':
|
|
||||||
memcpy((void *)curRetBuffer, (void *)"&", 5);
|
|
||||||
curRetBuffer += 5;
|
|
||||||
break;
|
|
||||||
case '\'':
|
|
||||||
memcpy((void *)curRetBuffer, (void *)"'", 6);
|
|
||||||
curRetBuffer += 6;
|
|
||||||
break;
|
|
||||||
case '"':
|
|
||||||
memcpy((void *)curRetBuffer, (void *)""", 6);
|
|
||||||
curRetBuffer += 6;
|
|
||||||
break;
|
|
||||||
case '<':
|
|
||||||
memcpy((void *)curRetBuffer, (void *)"<", 4);
|
|
||||||
curRetBuffer += 4;
|
|
||||||
break;
|
|
||||||
case '>':
|
|
||||||
memcpy((void *)curRetBuffer, (void *)">", 4);
|
|
||||||
curRetBuffer += 4;
|
|
||||||
break;
|
|
||||||
default:
|
|
||||||
*curRetBuffer = character;
|
|
||||||
curRetBuffer += 1;
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
*curRetBuffer = '\0';
|
|
||||||
|
|
||||||
return retBuffer;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/*
|
|
||||||
===================
|
|
||||||
|
|
||||||
Functions to handle creation of XML elements
|
|
||||||
|
|
||||||
===================
|
|
||||||
*/
|
|
||||||
|
|
||||||
char *
|
|
||||||
XMLOpenDocument(const char *rootTag, const char *xslStyle)
|
|
||||||
{
|
|
||||||
const char *doctype = "<?xml version=\"1.0\" encoding=\"ISO-8859-1\"?>\n";
|
|
||||||
|
|
||||||
//! \todo refactor this mess
|
|
||||||
char *style = NULL;
|
|
||||||
if(xslStyle) {
|
|
||||||
const char *styleStart = "<?xml-stylesheet type=\"text/xsl\" href=\"";
|
|
||||||
const char *styleEnd = "\"?>\n";
|
|
||||||
|
|
||||||
const int sizeStyleStart = SDL_strlen(styleStart);
|
|
||||||
const int sizeStyleEnd = SDL_strlen(styleEnd);
|
|
||||||
const int sizeStyleSheetName = SDL_strlen(xslStyle);
|
|
||||||
|
|
||||||
const int tempSize = sizeStyleStart + sizeStyleEnd + sizeStyleSheetName + 1;
|
|
||||||
style = SDL_malloc(tempSize);
|
|
||||||
memset(style, 0, tempSize);
|
|
||||||
SDL_snprintf(style, tempSize, "%s%s%s", styleStart, xslStyle, styleEnd);
|
|
||||||
}
|
|
||||||
|
|
||||||
memset(buffer, 0, bufferSize);
|
|
||||||
SDL_snprintf(buffer, bufferSize, "<%s>", rootTag);
|
|
||||||
|
|
||||||
AddOpenTag(rootTag);
|
|
||||||
|
|
||||||
root = rootTag; // it's fine, as long as rootTag points to static memory?
|
|
||||||
|
|
||||||
char *retBuf = NULL;
|
|
||||||
if(xslStyle) {
|
|
||||||
const int doctypeSize = SDL_strlen(doctype);
|
|
||||||
const int styleSize = SDL_strlen(style);
|
|
||||||
const int tagSize = SDL_strlen(buffer);
|
|
||||||
|
|
||||||
const int size = doctypeSize + styleSize + tagSize + 1; // extra byte for '\0'
|
|
||||||
retBuf = SDL_malloc(size);
|
|
||||||
|
|
||||||
SDL_snprintf(retBuf, size, "%s%s%s", doctype, style, buffer);
|
|
||||||
|
|
||||||
SDL_free(style);
|
|
||||||
} else {
|
|
||||||
const int doctypeSize = SDL_strlen(doctype);
|
|
||||||
const int tagSize = SDL_strlen(buffer);
|
|
||||||
|
|
||||||
const int size = doctypeSize + tagSize + 1; // extra byte for '\0'
|
|
||||||
retBuf = SDL_malloc(size);
|
|
||||||
|
|
||||||
SDL_snprintf(retBuf, size, "%s%s", doctype, buffer);
|
|
||||||
}
|
|
||||||
|
|
||||||
return retBuf;
|
|
||||||
}
|
|
||||||
|
|
||||||
char *
|
|
||||||
XMLCloseDocument() {
|
|
||||||
return XMLCloseElement(root);
|
|
||||||
}
|
|
||||||
|
|
||||||
char *
|
|
||||||
XMLOpenElement(const char *tag)
|
|
||||||
{
|
|
||||||
memset(buffer, 0, bufferSize);
|
|
||||||
SDL_snprintf(buffer, bufferSize, "<%s>", tag);
|
|
||||||
|
|
||||||
AddOpenTag(tag);
|
|
||||||
|
|
||||||
const int size = SDL_strlen(buffer);
|
|
||||||
char *ret = SDL_malloc(size + 1);
|
|
||||||
strncpy(ret, buffer, size);
|
|
||||||
ret[size] = '\0';
|
|
||||||
|
|
||||||
return ret;
|
|
||||||
}
|
|
||||||
|
|
||||||
char *
|
|
||||||
XMLAddContent(const char *content)
|
|
||||||
{
|
|
||||||
if(ValidateString(content) == 0) {
|
|
||||||
return NULL;
|
|
||||||
}
|
|
||||||
|
|
||||||
const char *escapedContent = EscapeString(content);
|
|
||||||
|
|
||||||
if(SDL_strlen(escapedContent) >= bufferSize) {
|
|
||||||
return NULL;
|
|
||||||
}
|
|
||||||
|
|
||||||
memset(buffer, 0, bufferSize);
|
|
||||||
SDL_snprintf(buffer, bufferSize, "%s", escapedContent);
|
|
||||||
SDL_free((char *)escapedContent);
|
|
||||||
|
|
||||||
const int size = SDL_strlen(buffer);
|
|
||||||
char *ret = SDL_malloc(size + 1);
|
|
||||||
strncpy(ret, buffer, size);
|
|
||||||
ret[size] = '\0';
|
|
||||||
|
|
||||||
return ret;
|
|
||||||
}
|
|
||||||
|
|
||||||
char *
|
|
||||||
XMLCloseElement(const char *tag)
|
|
||||||
{
|
|
||||||
if(ValidateString(tag) == 0) {
|
|
||||||
return NULL;
|
|
||||||
}
|
|
||||||
|
|
||||||
int retBufferSize = 150;
|
|
||||||
char *ret = SDL_malloc(retBufferSize);
|
|
||||||
memset(ret, 0, retBufferSize);
|
|
||||||
|
|
||||||
// \todo check that element we're trying to close is actually open,
|
|
||||||
// otherwise it'll cause nesting problems
|
|
||||||
|
|
||||||
// Close the open tags with proper nesting. Closes tags until it finds
|
|
||||||
// the given tag which is the last tag that will be closed
|
|
||||||
TagList *openTag = openTags;
|
|
||||||
while(openTag) {
|
|
||||||
TagList *temp = openTag->next;
|
|
||||||
|
|
||||||
char *lowOpenTag = ToLowerCase(openTag->tag);
|
|
||||||
char *lowTag = ToLowerCase(tag);
|
|
||||||
|
|
||||||
const int openTagSize = SDL_strlen(lowOpenTag);
|
|
||||||
const int tagSize = SDL_strlen(lowTag);
|
|
||||||
const int compSize = (openTagSize > tagSize) ? openTagSize : tagSize;
|
|
||||||
|
|
||||||
memset(buffer, 0, bufferSize);
|
|
||||||
|
|
||||||
int breakOut = 0;
|
|
||||||
if(SDL_strncmp(lowOpenTag, lowTag, compSize) == 0) {
|
|
||||||
breakOut = 1;
|
|
||||||
SDL_snprintf(buffer, bufferSize, "</%s>", tag);
|
|
||||||
} else {
|
|
||||||
SDL_snprintf(buffer, bufferSize, "</%s>", openTag->tag);
|
|
||||||
}
|
|
||||||
|
|
||||||
SDL_free(lowOpenTag);
|
|
||||||
SDL_free(lowTag);
|
|
||||||
|
|
||||||
int bytesLeft = bufferSize - SDL_strlen(ret);
|
|
||||||
if(bytesLeft) {
|
|
||||||
strncat(ret, buffer, bytesLeft);
|
|
||||||
} else {
|
|
||||||
// \! todo there's probably better way to report an error?
|
|
||||||
fprintf(stderr, "xml.c | XMLCloseElement: Buffer is full");
|
|
||||||
}
|
|
||||||
|
|
||||||
RemoveOpenTag(openTag->tag);
|
|
||||||
|
|
||||||
openTag = temp;
|
|
||||||
|
|
||||||
if(breakOut) {
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
return ret;
|
|
||||||
}
|
|
||||||
|
|
|
@ -1,76 +0,0 @@
|
||||||
/*
|
|
||||||
Copyright (C) 2011 Markus Kauppila <markus.kauppila@gmail.com>
|
|
||||||
|
|
||||||
This software is provided 'as-is', without any express or implied
|
|
||||||
warranty. In no event will the authors be held liable for any damages
|
|
||||||
arising from the use of this software.
|
|
||||||
|
|
||||||
Permission is granted to anyone to use this software for any purpose,
|
|
||||||
including commercial applications, and to alter it and redistribute it
|
|
||||||
freely, subject to the following restrictions:
|
|
||||||
|
|
||||||
1. The origin of this software must not be misrepresented; you must not
|
|
||||||
claim that you wrote the original software. If you use this software
|
|
||||||
in a product, an acknowledgment in the product documentation would be
|
|
||||||
appreciated but is not required.
|
|
||||||
2. Altered source versions must be plainly marked as such, and must not be
|
|
||||||
misrepresented as being the original software.
|
|
||||||
3. This notice may not be removed or altered from any source distribution.
|
|
||||||
*/
|
|
||||||
|
|
||||||
#ifndef _XML_H
|
|
||||||
#define _XML_H
|
|
||||||
|
|
||||||
/*! Defines attribute for XML elements */
|
|
||||||
typedef struct Attribute {
|
|
||||||
const char *attribute;
|
|
||||||
const char *value;
|
|
||||||
} Attribute;
|
|
||||||
|
|
||||||
|
|
||||||
/*!
|
|
||||||
* Opens XML document.
|
|
||||||
* Creates header and start tag for root element.
|
|
||||||
*
|
|
||||||
* Note: XML creation is not thread-safe!
|
|
||||||
*
|
|
||||||
* \param rootTag Root tag for the XML document
|
|
||||||
* \param xslStyle Name of the style sheet file. (empty string if no style is used)
|
|
||||||
* \return The generated XML output
|
|
||||||
*/
|
|
||||||
char *XMLOpenDocument(const char *rootTag, const char *xslStyle);
|
|
||||||
|
|
||||||
/*!
|
|
||||||
* Closes the XML-document.
|
|
||||||
* Creates end tag for root element and closes other open elements
|
|
||||||
* with correct nesting.
|
|
||||||
*/
|
|
||||||
char *XMLCloseDocument();
|
|
||||||
|
|
||||||
/*!
|
|
||||||
* Opens XML-element.
|
|
||||||
*
|
|
||||||
* \param tag Element to be opened
|
|
||||||
*/
|
|
||||||
char *XMLOpenElement(const char *tag);
|
|
||||||
|
|
||||||
/*!
|
|
||||||
* Add content to currently open element.
|
|
||||||
*
|
|
||||||
* \param content Content for the currently open element
|
|
||||||
*/
|
|
||||||
char *XMLAddContent(const char *content);
|
|
||||||
|
|
||||||
/*!
|
|
||||||
* Closes previously opened element until tag given as parameter is met.
|
|
||||||
* Enforces proper nesting by not allowing to close elements out-of-order.
|
|
||||||
*
|
|
||||||
* Closes all the opened elements until the given element/tag is found
|
|
||||||
* which will be the last tag to be closed
|
|
||||||
*
|
|
||||||
* \param tag Element to close
|
|
||||||
*/
|
|
||||||
char *XMLCloseElement(const char *tag);
|
|
||||||
|
|
||||||
#endif
|
|
||||||
|
|
|
@ -1,674 +0,0 @@
|
||||||
/*
|
|
||||||
Copyright (C) 2011 Markus Kauppila <markus.kauppila@gmail.com>
|
|
||||||
|
|
||||||
This software is provided 'as-is', without any express or implied
|
|
||||||
warranty. In no event will the authors be held liable for any damages
|
|
||||||
arising from the use of this software.
|
|
||||||
|
|
||||||
Permission is granted to anyone to use this software for any purpose,
|
|
||||||
including commercial applications, and to alter it and redistribute it
|
|
||||||
freely, subject to the following restrictions:
|
|
||||||
|
|
||||||
1. The origin of this software must not be misrepresented; you must not
|
|
||||||
claim that you wrote the original software. If you use this software
|
|
||||||
in a product, an acknowledgment in the product documentation would be
|
|
||||||
appreciated but is not required.
|
|
||||||
2. Altered source versions must be plainly marked as such, and must not be
|
|
||||||
misrepresented as being the original software.
|
|
||||||
3. This notice may not be removed or altered from any source distribution.
|
|
||||||
*/
|
|
||||||
|
|
||||||
#include <stdio.h>
|
|
||||||
#include <stdlib.h>
|
|
||||||
#include <time.h>
|
|
||||||
|
|
||||||
#include <SDL/SDL.h>
|
|
||||||
|
|
||||||
#include "../../include/SDL_test.h"
|
|
||||||
|
|
||||||
#include "../runner/logger.h"
|
|
||||||
|
|
||||||
#include "xml.h"
|
|
||||||
#include "logger_helpers.h"
|
|
||||||
#include "xml_logger.h"
|
|
||||||
|
|
||||||
/*! Static strings for XML elements */
|
|
||||||
const char *documentRoot = "testlog";
|
|
||||||
const char *parametersElementName = "parameters";
|
|
||||||
const char *parameterElementName = "parameter";
|
|
||||||
const char *startTimeElementName = "startTime";
|
|
||||||
const char *seedElementName = "seed";
|
|
||||||
const char *execKeyElementName = "executionKey";
|
|
||||||
const char *numSuitesElementName = "numSuites";
|
|
||||||
const char *numTestElementName = "numTests";
|
|
||||||
const char *numPassedTestsElementName = "numPassedTests";
|
|
||||||
const char *numFailedTestsElementName = "numFailedTests";
|
|
||||||
const char *numSkippedTestsElementName = "numSkippedTests";
|
|
||||||
const char *endTimeElementName = "endTime";
|
|
||||||
const char *totalRuntimeElementName = "totalRuntime";
|
|
||||||
const char *suiteElementName = "suite";
|
|
||||||
const char *testsPassedElementName = "testsPassed";
|
|
||||||
const char *testsFailedElementName = "testsFailed";
|
|
||||||
const char *testsSkippedElementName = "testsSkipped";
|
|
||||||
const char *testElementName = "test";
|
|
||||||
const char *nameElementName = "name";
|
|
||||||
const char *descriptionElementName = "description";
|
|
||||||
const char *resultElementName = "result";
|
|
||||||
const char *resultDescriptionElementName = "resultDescription";
|
|
||||||
const char *assertElementName = "assert";
|
|
||||||
const char *messageElementName = "message";
|
|
||||||
const char *timeElementName = "time";
|
|
||||||
const char *assertSummaryElementName = "assertSummary";
|
|
||||||
const char *assertCountElementName = "assertCount";
|
|
||||||
const char *assertsPassedElementName = "assertsPassed";
|
|
||||||
const char *assertsFailedElementName = "assertsFailed";
|
|
||||||
const char *logElementName = "log";
|
|
||||||
|
|
||||||
|
|
||||||
/*! Current indentationt level */
|
|
||||||
static int indentLevel;
|
|
||||||
|
|
||||||
/*! Logging level of the logger */
|
|
||||||
static Level level = LOGGER_TERSE;
|
|
||||||
|
|
||||||
//! Constants for XMLOuputters EOL parameter
|
|
||||||
#define YES 1
|
|
||||||
#define NO 0
|
|
||||||
|
|
||||||
/*! Controls printing the indentation in relation to line breaks */
|
|
||||||
static int prevEOL = YES;
|
|
||||||
|
|
||||||
//! Handle to log file
|
|
||||||
static FILE *logFile = NULL;
|
|
||||||
|
|
||||||
/*
|
|
||||||
* Prints out the given xml element etc.
|
|
||||||
*
|
|
||||||
* \todo Make the destination of the output changeable (defaults to stdout)
|
|
||||||
*
|
|
||||||
* \param currentIndentLevel the indent level of the message
|
|
||||||
* \param EOL will it print end of line character or not
|
|
||||||
* \param the XML element itself
|
|
||||||
*
|
|
||||||
*/
|
|
||||||
void
|
|
||||||
XMLOutputter(const int currentIndentLevel,
|
|
||||||
int EOL, const char *message)
|
|
||||||
{
|
|
||||||
if(ValidateString(message)) {
|
|
||||||
int indent = 0;
|
|
||||||
for( ; indent < currentIndentLevel && prevEOL; ++indent) {
|
|
||||||
fprintf(logFile, " "); // \todo make configurable?
|
|
||||||
}
|
|
||||||
|
|
||||||
prevEOL = EOL;
|
|
||||||
|
|
||||||
if(EOL) {
|
|
||||||
fprintf(logFile, "%s\n", message);
|
|
||||||
} else {
|
|
||||||
fprintf(logFile, "%s", message);
|
|
||||||
}
|
|
||||||
|
|
||||||
fflush(logFile);
|
|
||||||
} else {
|
|
||||||
fprintf(logFile, "Error: Tried to output invalid string!");
|
|
||||||
}
|
|
||||||
|
|
||||||
SDL_free((char *)message);
|
|
||||||
}
|
|
||||||
|
|
||||||
void
|
|
||||||
XMLRunStarted(int parameterCount, char *runnerParameters[], char *runSeed,
|
|
||||||
time_t eventTime, LoggerData *data)
|
|
||||||
{
|
|
||||||
// Set up the logging destination
|
|
||||||
if(data->stdoutEnabled) {
|
|
||||||
logFile = stdout;
|
|
||||||
} else {
|
|
||||||
logFile = fopen(data->filename, "w");
|
|
||||||
if(logFile == NULL) {
|
|
||||||
fprintf(stderr, "Log file %s couldn't opened\n", data->filename);
|
|
||||||
exit(3);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// Set up the style sheet
|
|
||||||
char *xslStylesheet = (char *)data->custom;
|
|
||||||
level = data->level;
|
|
||||||
//printf("Debug: %d == %d\n", level, data->level);
|
|
||||||
|
|
||||||
char *output = XMLOpenDocument(documentRoot, xslStylesheet);
|
|
||||||
XMLOutputter(indentLevel++, YES, output);
|
|
||||||
|
|
||||||
// log harness parameters
|
|
||||||
output = XMLOpenElement(parametersElementName);
|
|
||||||
XMLOutputter(indentLevel++, YES, output);
|
|
||||||
|
|
||||||
int counter = 0;
|
|
||||||
for(counter = 0; counter < parameterCount; counter++) {
|
|
||||||
char *parameter = runnerParameters[counter];
|
|
||||||
|
|
||||||
output = XMLOpenElement(parameterElementName);
|
|
||||||
XMLOutputter(indentLevel++, NO, output);
|
|
||||||
|
|
||||||
output = XMLAddContent(parameter);
|
|
||||||
XMLOutputter(indentLevel, NO, output);
|
|
||||||
|
|
||||||
output = XMLCloseElement(parameterElementName);
|
|
||||||
XMLOutputter(--indentLevel, YES, output);
|
|
||||||
}
|
|
||||||
|
|
||||||
output = XMLCloseElement(parametersElementName);
|
|
||||||
XMLOutputter(--indentLevel, YES, output);
|
|
||||||
|
|
||||||
// log seed
|
|
||||||
output = XMLOpenElement(seedElementName);
|
|
||||||
XMLOutputter(indentLevel++, NO, output);
|
|
||||||
|
|
||||||
output = XMLAddContent(runSeed);
|
|
||||||
XMLOutputter(indentLevel, NO, output);
|
|
||||||
|
|
||||||
output = XMLCloseElement(seedElementName);
|
|
||||||
XMLOutputter(--indentLevel, YES, output);
|
|
||||||
|
|
||||||
// log start time
|
|
||||||
output = XMLOpenElement(startTimeElementName);
|
|
||||||
XMLOutputter(indentLevel++, NO, output);
|
|
||||||
|
|
||||||
output = XMLAddContent(TimestampToString(eventTime));
|
|
||||||
XMLOutputter(indentLevel, NO, output);
|
|
||||||
|
|
||||||
output = XMLCloseElement(startTimeElementName);
|
|
||||||
XMLOutputter(--indentLevel, YES, output);
|
|
||||||
}
|
|
||||||
|
|
||||||
void
|
|
||||||
XMLRunEnded(int testCount, int suiteCount, int testPassCount, int testFailCount,
|
|
||||||
int testSkippedCount, time_t endTime, double totalRuntime)
|
|
||||||
{
|
|
||||||
// log suite count
|
|
||||||
char *output = XMLOpenElement(numSuitesElementName);
|
|
||||||
XMLOutputter(indentLevel++, NO, output);
|
|
||||||
|
|
||||||
output = XMLAddContent(IntToString(suiteCount));
|
|
||||||
XMLOutputter(indentLevel, NO, output);
|
|
||||||
|
|
||||||
output = XMLCloseElement(numSuitesElementName);
|
|
||||||
XMLOutputter(--indentLevel, YES, output);
|
|
||||||
|
|
||||||
// log test count
|
|
||||||
output = XMLOpenElement(numTestElementName);
|
|
||||||
XMLOutputter(indentLevel++, NO, output);
|
|
||||||
|
|
||||||
output = XMLAddContent(IntToString(testCount));
|
|
||||||
XMLOutputter(indentLevel, NO, output);
|
|
||||||
|
|
||||||
output = XMLCloseElement(numTestElementName);
|
|
||||||
XMLOutputter(--indentLevel, YES, output);
|
|
||||||
|
|
||||||
// log passed test count
|
|
||||||
output = XMLOpenElement(numPassedTestsElementName);
|
|
||||||
XMLOutputter(indentLevel++, NO, output);
|
|
||||||
|
|
||||||
output = XMLAddContent(IntToString(testPassCount));
|
|
||||||
XMLOutputter(indentLevel, NO, output);
|
|
||||||
|
|
||||||
output = XMLCloseElement(numPassedTestsElementName);
|
|
||||||
XMLOutputter(--indentLevel, YES, output);
|
|
||||||
|
|
||||||
// log failed test count
|
|
||||||
output = XMLOpenElement(numFailedTestsElementName);
|
|
||||||
XMLOutputter(indentLevel++, NO, output);
|
|
||||||
|
|
||||||
output = XMLAddContent(IntToString(testFailCount));
|
|
||||||
XMLOutputter(indentLevel, NO, output);
|
|
||||||
|
|
||||||
output = XMLCloseElement(numFailedTestsElementName);
|
|
||||||
XMLOutputter(--indentLevel, YES, output);
|
|
||||||
|
|
||||||
// log skipped test count
|
|
||||||
output = XMLOpenElement(numSkippedTestsElementName);
|
|
||||||
XMLOutputter(indentLevel++, NO, output);
|
|
||||||
|
|
||||||
output = XMLAddContent(IntToString(testSkippedCount));
|
|
||||||
XMLOutputter(indentLevel, NO, output);
|
|
||||||
|
|
||||||
output = XMLCloseElement(numSkippedTestsElementName);
|
|
||||||
XMLOutputter(--indentLevel, YES, output);
|
|
||||||
|
|
||||||
// log end tite
|
|
||||||
output = XMLOpenElement(endTimeElementName);
|
|
||||||
XMLOutputter(indentLevel++, NO, output);
|
|
||||||
|
|
||||||
output = XMLAddContent(TimestampToString(endTime));
|
|
||||||
XMLOutputter(indentLevel, NO, output);
|
|
||||||
|
|
||||||
output = XMLCloseElement(endTimeElementName);
|
|
||||||
XMLOutputter(--indentLevel, YES, output);
|
|
||||||
|
|
||||||
// log total runtime
|
|
||||||
output = XMLOpenElement(totalRuntimeElementName);
|
|
||||||
XMLOutputter(indentLevel++, NO, output);
|
|
||||||
|
|
||||||
output = XMLAddContent(DoubleToString(totalRuntime));
|
|
||||||
XMLOutputter(indentLevel, NO, output);
|
|
||||||
|
|
||||||
output = XMLCloseElement(totalRuntimeElementName);
|
|
||||||
XMLOutputter(--indentLevel, YES, output);
|
|
||||||
|
|
||||||
output = XMLCloseDocument(documentRoot);
|
|
||||||
XMLOutputter(--indentLevel, YES, output);
|
|
||||||
|
|
||||||
// close the log file
|
|
||||||
fclose(logFile);
|
|
||||||
}
|
|
||||||
|
|
||||||
void
|
|
||||||
XMLSuiteStarted(const char *suiteName, time_t eventTime)
|
|
||||||
{
|
|
||||||
// log suite name
|
|
||||||
char *output = XMLOpenElement(suiteElementName);
|
|
||||||
XMLOutputter(indentLevel++, YES, output);
|
|
||||||
|
|
||||||
output = XMLOpenElement(nameElementName);
|
|
||||||
XMLOutputter(indentLevel++, NO, output);
|
|
||||||
|
|
||||||
output = XMLAddContent(suiteName);
|
|
||||||
XMLOutputter(indentLevel, NO, output);
|
|
||||||
|
|
||||||
// log test name
|
|
||||||
output = XMLCloseElement(nameElementName);
|
|
||||||
XMLOutputter(--indentLevel, YES, output);
|
|
||||||
|
|
||||||
output = XMLOpenElement(startTimeElementName);
|
|
||||||
XMLOutputter(indentLevel++, NO, output);
|
|
||||||
|
|
||||||
// log beginning time
|
|
||||||
output = XMLAddContent(TimestampToString(eventTime));
|
|
||||||
XMLOutputter(indentLevel, NO, output);
|
|
||||||
|
|
||||||
output = XMLCloseElement(startTimeElementName);
|
|
||||||
XMLOutputter(--indentLevel, YES, output);
|
|
||||||
}
|
|
||||||
|
|
||||||
void
|
|
||||||
XMLSuiteEnded(int testsPassed, int testsFailed, int testsSkipped,
|
|
||||||
time_t endTime, double totalRuntime)
|
|
||||||
{
|
|
||||||
// log tests passed
|
|
||||||
char *output = XMLOpenElement(testsPassedElementName);
|
|
||||||
XMLOutputter(indentLevel++, NO, output);
|
|
||||||
|
|
||||||
output = XMLAddContent(IntToString(testsPassed));
|
|
||||||
XMLOutputter(indentLevel, NO, output);
|
|
||||||
|
|
||||||
output = XMLCloseElement(testsPassedElementName);
|
|
||||||
XMLOutputter(--indentLevel, YES, output);
|
|
||||||
|
|
||||||
// log tests failed
|
|
||||||
output = XMLOpenElement(testsFailedElementName);
|
|
||||||
XMLOutputter(indentLevel++, NO, output);
|
|
||||||
|
|
||||||
output = XMLAddContent(IntToString(testsFailed));
|
|
||||||
XMLOutputter(indentLevel, NO, output);
|
|
||||||
|
|
||||||
output = XMLCloseElement(testsFailedElementName);
|
|
||||||
XMLOutputter(--indentLevel, YES, output);
|
|
||||||
|
|
||||||
// log tests skipped
|
|
||||||
output = XMLOpenElement(testsSkippedElementName);
|
|
||||||
XMLOutputter(indentLevel++, NO, output);
|
|
||||||
|
|
||||||
output = XMLAddContent(IntToString(testsSkipped));
|
|
||||||
XMLOutputter(indentLevel, NO, output);
|
|
||||||
|
|
||||||
output = XMLCloseElement(testsSkippedElementName);
|
|
||||||
XMLOutputter(--indentLevel, YES, output);
|
|
||||||
|
|
||||||
// log tests skipped
|
|
||||||
output = XMLOpenElement(endTimeElementName);
|
|
||||||
XMLOutputter(indentLevel++, NO, output);
|
|
||||||
|
|
||||||
output = XMLAddContent(TimestampToString(endTime));
|
|
||||||
XMLOutputter(indentLevel, NO, output);
|
|
||||||
|
|
||||||
output = XMLCloseElement(endTimeElementName);
|
|
||||||
XMLOutputter(--indentLevel, YES, output);
|
|
||||||
|
|
||||||
// log total runtime
|
|
||||||
output = XMLOpenElement(totalRuntimeElementName);
|
|
||||||
XMLOutputter(indentLevel++, NO, output);
|
|
||||||
|
|
||||||
output = XMLAddContent(DoubleToString(totalRuntime));
|
|
||||||
XMLOutputter(indentLevel, NO, output);
|
|
||||||
|
|
||||||
output = XMLCloseElement(totalRuntimeElementName);
|
|
||||||
XMLOutputter(--indentLevel, YES, output);
|
|
||||||
|
|
||||||
|
|
||||||
output = XMLCloseElement(suiteElementName);
|
|
||||||
XMLOutputter(--indentLevel, YES, output);
|
|
||||||
}
|
|
||||||
|
|
||||||
void
|
|
||||||
XMLTestStarted(const char *testName, const char *suiteName,
|
|
||||||
const char *testDescription, Uint64 execKey, time_t startTime)
|
|
||||||
{
|
|
||||||
char * output = XMLOpenElement(testElementName);
|
|
||||||
XMLOutputter(indentLevel++, YES, output);
|
|
||||||
|
|
||||||
// log test name
|
|
||||||
output = XMLOpenElement(nameElementName);
|
|
||||||
XMLOutputter(indentLevel++, NO, output);
|
|
||||||
|
|
||||||
output = XMLAddContent(testName);
|
|
||||||
XMLOutputter(indentLevel, NO, output);
|
|
||||||
|
|
||||||
output = XMLCloseElement(nameElementName);
|
|
||||||
XMLOutputter(--indentLevel, YES, output);
|
|
||||||
|
|
||||||
// log test description
|
|
||||||
output = XMLOpenElement(descriptionElementName);
|
|
||||||
XMLOutputter(indentLevel++, NO, output);
|
|
||||||
|
|
||||||
output = XMLAddContent(testDescription);
|
|
||||||
XMLOutputter(indentLevel, NO, output);
|
|
||||||
|
|
||||||
output = XMLCloseElement(descriptionElementName);
|
|
||||||
XMLOutputter(--indentLevel, YES, output);
|
|
||||||
|
|
||||||
// log execution key
|
|
||||||
output = XMLOpenElement(execKeyElementName);
|
|
||||||
XMLOutputter(indentLevel++, NO, output);
|
|
||||||
|
|
||||||
output = XMLAddContent(IntToHexString(execKey));
|
|
||||||
XMLOutputter(indentLevel, NO, output);
|
|
||||||
|
|
||||||
output = XMLCloseElement(execKeyElementName);
|
|
||||||
XMLOutputter(--indentLevel, YES, output);
|
|
||||||
|
|
||||||
// log start time
|
|
||||||
output = XMLOpenElement(startTimeElementName);
|
|
||||||
XMLOutputter(indentLevel++, NO, output);
|
|
||||||
|
|
||||||
output = XMLAddContent(TimestampToString(startTime));
|
|
||||||
XMLOutputter(indentLevel, NO, output);
|
|
||||||
|
|
||||||
output = XMLCloseElement(startTimeElementName);
|
|
||||||
XMLOutputter(--indentLevel, YES, output);
|
|
||||||
}
|
|
||||||
|
|
||||||
void
|
|
||||||
XMLTestEnded(const char *testName, const char *suiteName,
|
|
||||||
int testResult, time_t endTime, double totalRuntime)
|
|
||||||
{
|
|
||||||
// Log test result
|
|
||||||
char *output = XMLOpenElement(resultElementName);
|
|
||||||
XMLOutputter(indentLevel++, NO, output);
|
|
||||||
|
|
||||||
switch(testResult) {
|
|
||||||
case TEST_RESULT_PASS:
|
|
||||||
output = XMLAddContent("passed");
|
|
||||||
break;
|
|
||||||
case TEST_RESULT_FAILURE:
|
|
||||||
output = XMLAddContent("failed");
|
|
||||||
break;
|
|
||||||
case TEST_RESULT_NO_ASSERT:
|
|
||||||
output = XMLAddContent("failed");
|
|
||||||
break;
|
|
||||||
case TEST_RESULT_SKIPPED:
|
|
||||||
output = XMLAddContent("skipped");
|
|
||||||
break;
|
|
||||||
case TEST_RESULT_KILLED:
|
|
||||||
output = XMLAddContent("failed");
|
|
||||||
break;
|
|
||||||
case TEST_RESULT_SETUP_FAILURE:
|
|
||||||
output = XMLAddContent("failed");
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
XMLOutputter(indentLevel, NO, output);
|
|
||||||
|
|
||||||
output = XMLCloseElement(resultElementName);
|
|
||||||
XMLOutputter(--indentLevel, YES, output);
|
|
||||||
|
|
||||||
// Log description of test result. Why the test failed,
|
|
||||||
// if there's some specific reason
|
|
||||||
output = XMLOpenElement(resultDescriptionElementName);
|
|
||||||
XMLOutputter(indentLevel++, NO, output);
|
|
||||||
|
|
||||||
switch(testResult) {
|
|
||||||
case TEST_RESULT_PASS:
|
|
||||||
case TEST_RESULT_FAILURE:
|
|
||||||
case TEST_RESULT_SKIPPED:
|
|
||||||
output = XMLAddContent("");
|
|
||||||
break;
|
|
||||||
case TEST_RESULT_NO_ASSERT:
|
|
||||||
output = XMLAddContent("No assert");
|
|
||||||
break;
|
|
||||||
case TEST_RESULT_KILLED:
|
|
||||||
output = XMLAddContent("Timeout exceeded");
|
|
||||||
break;
|
|
||||||
case TEST_RESULT_SETUP_FAILURE:
|
|
||||||
output = XMLAddContent("Setup failure, couldn't be executed");
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
XMLOutputter(indentLevel, NO, output);
|
|
||||||
|
|
||||||
output = XMLCloseElement(resultDescriptionElementName);
|
|
||||||
XMLOutputter(--indentLevel, YES, output);
|
|
||||||
|
|
||||||
// log total runtime
|
|
||||||
output = XMLOpenElement(endTimeElementName);
|
|
||||||
XMLOutputter(indentLevel++, NO, output);
|
|
||||||
|
|
||||||
output = XMLAddContent(TimestampToString(endTime));
|
|
||||||
XMLOutputter(indentLevel, NO, output);
|
|
||||||
|
|
||||||
output = XMLCloseElement(endTimeElementName);
|
|
||||||
XMLOutputter(--indentLevel, YES, output);
|
|
||||||
|
|
||||||
// log total runtime
|
|
||||||
output = XMLOpenElement(totalRuntimeElementName);
|
|
||||||
XMLOutputter(indentLevel++, NO, output);
|
|
||||||
|
|
||||||
output = XMLAddContent(DoubleToString(totalRuntime));
|
|
||||||
XMLOutputter(indentLevel, NO, output);
|
|
||||||
|
|
||||||
output = XMLCloseElement(totalRuntimeElementName);
|
|
||||||
XMLOutputter(--indentLevel, YES, output);
|
|
||||||
|
|
||||||
output = XMLCloseElement(testElementName);
|
|
||||||
XMLOutputter(--indentLevel, YES, output);
|
|
||||||
}
|
|
||||||
|
|
||||||
void
|
|
||||||
XMLAssert(const char *assertName, int assertResult, const char *assertMessage,
|
|
||||||
time_t eventTime)
|
|
||||||
{
|
|
||||||
// Log passed asserts only on VERBOSE level
|
|
||||||
if(level <= LOGGER_TERSE && assertResult == ASSERT_PASS) {
|
|
||||||
return ;
|
|
||||||
}
|
|
||||||
|
|
||||||
char *output = XMLOpenElement(assertElementName);
|
|
||||||
XMLOutputter(indentLevel++, YES, output);
|
|
||||||
|
|
||||||
// log assert name
|
|
||||||
output = XMLOpenElement(nameElementName);
|
|
||||||
XMLOutputter(indentLevel++, NO, output);
|
|
||||||
|
|
||||||
output = XMLAddContent(assertName);
|
|
||||||
XMLOutputter(indentLevel, NO, output);
|
|
||||||
|
|
||||||
output = XMLCloseElement(nameElementName);
|
|
||||||
XMLOutputter(--indentLevel, YES, output);
|
|
||||||
|
|
||||||
|
|
||||||
// log assert result
|
|
||||||
output = XMLOpenElement(resultElementName);
|
|
||||||
XMLOutputter(indentLevel++, NO, output);
|
|
||||||
|
|
||||||
output = XMLAddContent((assertResult) ? "pass" : "failure");
|
|
||||||
XMLOutputter(indentLevel, NO, output);
|
|
||||||
|
|
||||||
output = XMLCloseElement(resultElementName);
|
|
||||||
XMLOutputter(--indentLevel, YES, output);
|
|
||||||
|
|
||||||
// log assert message
|
|
||||||
output = XMLOpenElement(messageElementName);
|
|
||||||
XMLOutputter(indentLevel++, NO, output);
|
|
||||||
|
|
||||||
output = XMLAddContent(assertMessage);
|
|
||||||
XMLOutputter(indentLevel, NO, output);
|
|
||||||
|
|
||||||
output = XMLCloseElement(messageElementName);
|
|
||||||
XMLOutputter(--indentLevel, YES, output);
|
|
||||||
|
|
||||||
// log event time
|
|
||||||
output = XMLOpenElement(timeElementName);
|
|
||||||
XMLOutputter(indentLevel++, NO, output);
|
|
||||||
|
|
||||||
output = XMLAddContent(TimestampToString(eventTime));
|
|
||||||
XMLOutputter(indentLevel, NO, output);
|
|
||||||
|
|
||||||
output = XMLCloseElement(timeElementName);
|
|
||||||
XMLOutputter(--indentLevel, YES, output);
|
|
||||||
|
|
||||||
output = XMLCloseElement(assertElementName);
|
|
||||||
XMLOutputter(--indentLevel, YES, output);
|
|
||||||
}
|
|
||||||
|
|
||||||
void
|
|
||||||
XMLAssertWithValues(const char *assertName, int assertResult, const char *assertMessage,
|
|
||||||
int actualValue, int excpected, time_t eventTime)
|
|
||||||
{
|
|
||||||
// Log passed asserts only on VERBOSE level
|
|
||||||
if(level <= LOGGER_TERSE && assertResult == ASSERT_PASS) {
|
|
||||||
return ;
|
|
||||||
}
|
|
||||||
|
|
||||||
char *output = XMLOpenElement(assertElementName);
|
|
||||||
XMLOutputter(indentLevel++, YES, output);
|
|
||||||
|
|
||||||
// log assert name
|
|
||||||
output = XMLOpenElement(nameElementName);
|
|
||||||
XMLOutputter(indentLevel++, NO, output);
|
|
||||||
|
|
||||||
output = XMLAddContent(assertName);
|
|
||||||
XMLOutputter(indentLevel, NO, output);
|
|
||||||
|
|
||||||
output = XMLCloseElement(nameElementName);
|
|
||||||
XMLOutputter(--indentLevel, YES, output);
|
|
||||||
|
|
||||||
|
|
||||||
// log assert result
|
|
||||||
output = XMLOpenElement(resultElementName);
|
|
||||||
XMLOutputter(indentLevel++, NO, output);
|
|
||||||
|
|
||||||
output = XMLAddContent((assertResult) ? "pass" : "failure");
|
|
||||||
XMLOutputter(indentLevel, NO, output);
|
|
||||||
|
|
||||||
output = XMLCloseElement(resultElementName);
|
|
||||||
XMLOutputter(--indentLevel, YES, output);
|
|
||||||
|
|
||||||
// log assert message
|
|
||||||
output = XMLOpenElement(messageElementName);
|
|
||||||
XMLOutputter(indentLevel++, NO, output);
|
|
||||||
|
|
||||||
output = XMLAddContent(assertMessage);
|
|
||||||
XMLOutputter(indentLevel, NO, output);
|
|
||||||
|
|
||||||
output = XMLCloseElement(messageElementName);
|
|
||||||
XMLOutputter(--indentLevel, YES, output);
|
|
||||||
|
|
||||||
// log event time
|
|
||||||
output = XMLOpenElement(timeElementName);
|
|
||||||
XMLOutputter(indentLevel++, NO, output);
|
|
||||||
|
|
||||||
output = XMLAddContent(TimestampToString(eventTime));
|
|
||||||
XMLOutputter(indentLevel, NO, output);
|
|
||||||
|
|
||||||
output = XMLCloseElement(timeElementName);
|
|
||||||
XMLOutputter(--indentLevel, YES, output);
|
|
||||||
|
|
||||||
output = XMLCloseElement(assertElementName);
|
|
||||||
XMLOutputter(--indentLevel, YES, output);
|
|
||||||
}
|
|
||||||
|
|
||||||
void
|
|
||||||
XMLAssertSummary(int numAsserts, int numAssertsFailed,
|
|
||||||
int numAssertsPass, time_t eventTime)
|
|
||||||
{
|
|
||||||
char *output = XMLOpenElement(assertSummaryElementName);
|
|
||||||
XMLOutputter(indentLevel++, YES, output);
|
|
||||||
|
|
||||||
output = XMLOpenElement(assertCountElementName);
|
|
||||||
XMLOutputter(indentLevel++, NO, output);
|
|
||||||
|
|
||||||
output = XMLAddContent(IntToString(numAsserts));
|
|
||||||
XMLOutputter(indentLevel, NO, output);
|
|
||||||
|
|
||||||
output = XMLCloseElement(assertCountElementName);
|
|
||||||
XMLOutputter(--indentLevel, YES, output);
|
|
||||||
|
|
||||||
output = XMLOpenElement(assertsPassedElementName);
|
|
||||||
XMLOutputter(indentLevel++, NO, output);
|
|
||||||
|
|
||||||
output = XMLAddContent(IntToString(numAssertsPass));
|
|
||||||
XMLOutputter(indentLevel, NO, output);
|
|
||||||
|
|
||||||
output = XMLCloseElement(assertsPassedElementName);
|
|
||||||
XMLOutputter(--indentLevel, YES, output);
|
|
||||||
|
|
||||||
output = XMLOpenElement(assertsFailedElementName);
|
|
||||||
XMLOutputter(indentLevel++, NO, output);
|
|
||||||
|
|
||||||
output = XMLAddContent(IntToString(numAsserts));
|
|
||||||
XMLOutputter(indentLevel, NO, output);
|
|
||||||
|
|
||||||
output = XMLCloseElement(assertsFailedElementName);
|
|
||||||
XMLOutputter(--indentLevel, YES, output);
|
|
||||||
|
|
||||||
output = XMLCloseElement(assertSummaryElementName);
|
|
||||||
XMLOutputter(--indentLevel, YES, output);
|
|
||||||
}
|
|
||||||
|
|
||||||
void
|
|
||||||
XMLLog(time_t eventTime, char *fmt, ...)
|
|
||||||
{
|
|
||||||
// create the log message
|
|
||||||
va_list args;
|
|
||||||
char logMessage[1024];
|
|
||||||
memset(logMessage, 0, sizeof(logMessage));
|
|
||||||
|
|
||||||
va_start( args, fmt );
|
|
||||||
SDL_vsnprintf( logMessage, sizeof(logMessage), fmt, args );
|
|
||||||
va_end( args );
|
|
||||||
|
|
||||||
char *output = XMLOpenElement(logElementName);
|
|
||||||
XMLOutputter(indentLevel++, YES, output);
|
|
||||||
|
|
||||||
// log message
|
|
||||||
output = XMLOpenElement(messageElementName);
|
|
||||||
XMLOutputter(indentLevel++, NO, output);
|
|
||||||
|
|
||||||
// fix this here!
|
|
||||||
output = XMLAddContent(logMessage);
|
|
||||||
XMLOutputter(indentLevel, NO, output);
|
|
||||||
|
|
||||||
output = XMLCloseElement(messageElementName);
|
|
||||||
XMLOutputter(--indentLevel, YES, output);
|
|
||||||
|
|
||||||
// log eventTime
|
|
||||||
output = XMLOpenElement(timeElementName);
|
|
||||||
XMLOutputter(indentLevel++, NO, output);
|
|
||||||
|
|
||||||
output = XMLAddContent(TimestampToString(eventTime));
|
|
||||||
XMLOutputter(indentLevel, NO, output);
|
|
||||||
|
|
||||||
output = XMLCloseElement(timeElementName);
|
|
||||||
XMLOutputter(--indentLevel, YES, output);
|
|
||||||
|
|
||||||
output = XMLCloseElement(logElementName);
|
|
||||||
XMLOutputter(--indentLevel, YES, output);
|
|
||||||
}
|
|
|
@ -1,140 +0,0 @@
|
||||||
/*
|
|
||||||
Copyright (C) 2011 Markus Kauppila <markus.kauppila@gmail.com>
|
|
||||||
|
|
||||||
This software is provided 'as-is', without any express or implied
|
|
||||||
warranty. In no event will the authors be held liable for any damages
|
|
||||||
arising from the use of this software.
|
|
||||||
|
|
||||||
Permission is granted to anyone to use this software for any purpose,
|
|
||||||
including commercial applications, and to alter it and redistribute it
|
|
||||||
freely, subject to the following restrictions:
|
|
||||||
|
|
||||||
1. The origin of this software must not be misrepresented; you must not
|
|
||||||
claim that you wrote the original software. If you use this software
|
|
||||||
in a product, an acknowledgment in the product documentation would be
|
|
||||||
appreciated but is not required.
|
|
||||||
2. Altered source versions must be plainly marked as such, and must not be
|
|
||||||
misrepresented as being the original software.
|
|
||||||
3. This notice may not be removed or altered from any source distribution.
|
|
||||||
*/
|
|
||||||
|
|
||||||
#ifndef _XML_LOGGER_H
|
|
||||||
#define _XML_LOGGER_H
|
|
||||||
|
|
||||||
#include <SDL/SDL_stdinc.h>
|
|
||||||
|
|
||||||
#include "../runner/logger.h"
|
|
||||||
|
|
||||||
/*!
|
|
||||||
* Prints out information about starting the test run in XML
|
|
||||||
*
|
|
||||||
* \param parameterCount How many parameters were given
|
|
||||||
* \param runnerParameters What parameters were given to the runner
|
|
||||||
* \param runSeed Fuzzer seed of the harness
|
|
||||||
* \param eventTime When the execution started
|
|
||||||
* \param data LoggerData structure which contains data for the logger
|
|
||||||
*/
|
|
||||||
void XMLRunStarted(int parameterCount, char *runnerParameters[], char *runSeed,
|
|
||||||
time_t eventTime, LoggerData *data);
|
|
||||||
|
|
||||||
/*!
|
|
||||||
* Prints out information about ending the test run in XML
|
|
||||||
*
|
|
||||||
* \param testCount How many tests were executed in total
|
|
||||||
* \param suiteCount How many suite were executed in total
|
|
||||||
* \param testPassCount How many tests passed in total
|
|
||||||
* \param testFailCount How many tests failed in total
|
|
||||||
* \param testSkippedCount How many tests were skipped in total
|
|
||||||
* \param endTime When the execution ended
|
|
||||||
* \param totalRuntime How long the execution took
|
|
||||||
*/
|
|
||||||
void XMLRunEnded(int testCount, int suiteCount, int testPassCount, int testFailCount,
|
|
||||||
int testSkippedCount, time_t endTime, double totalRuntime);
|
|
||||||
|
|
||||||
/*!
|
|
||||||
* Prints the data about the test suite that'll be executed next in XML
|
|
||||||
*
|
|
||||||
* \param suiteName Name of the test suite
|
|
||||||
* \param eventTime When the execution starts
|
|
||||||
*/
|
|
||||||
void XMLSuiteStarted(const char *suiteName, time_t eventTime);
|
|
||||||
|
|
||||||
/*!
|
|
||||||
* Prints information about the test suite that was just executed in XML
|
|
||||||
*
|
|
||||||
* \param testsPassed how many tests passed from this suite
|
|
||||||
* \param testsFailed how many tests failed from this suite
|
|
||||||
* \param testsSkipped how many tests were skipped (not implemented)
|
|
||||||
* \param endTime When the suite execution ended
|
|
||||||
* \param totalRuntime How long did the suite's execution take
|
|
||||||
*/
|
|
||||||
void XMLSuiteEnded(int testsPassed, int testsFailed, int testsSkipped,
|
|
||||||
time_t endTime, double totalRuntime);
|
|
||||||
|
|
||||||
/*!
|
|
||||||
* Prints the data about the test test that'll be executed next in XML
|
|
||||||
*
|
|
||||||
* \param testName Name of the test that'll be executed
|
|
||||||
* \param suiteName Name of the suite of the test
|
|
||||||
* \param testDescription Description of the test
|
|
||||||
* \param execKey Execution key for fuzzing
|
|
||||||
* \param startTime When the test started to execute
|
|
||||||
*/
|
|
||||||
void XMLTestStarted(const char *testName, const char *suiteName,
|
|
||||||
const char *testDescription, Uint64 execKey, time_t startTime);
|
|
||||||
|
|
||||||
/*!
|
|
||||||
* Prints information about the test test that was just executed in XML
|
|
||||||
*
|
|
||||||
* \param testName Name of the executed test
|
|
||||||
* \param suiteName Name of the suite of the test
|
|
||||||
* \param testResult Did the test fail (!= 0) or pass (== 0)
|
|
||||||
* \param endTime When the test execution ended
|
|
||||||
* \param totalRuntime Total runtime of the executed test
|
|
||||||
*/
|
|
||||||
void XMLTestEnded(const char *testName, const char *suiteName,
|
|
||||||
int testResult, time_t endTime, double totalRuntime);
|
|
||||||
|
|
||||||
/*!
|
|
||||||
* Prints information about plain assert in XML
|
|
||||||
*
|
|
||||||
* \param assertName Name of the assert
|
|
||||||
* \param assertResult Did assert fail (== 0) or success (!= 0)
|
|
||||||
* \param assertMessage Message of the assert
|
|
||||||
* \param eventTime When the assert happened
|
|
||||||
*/
|
|
||||||
void XMLAssert(const char *assertName, int assertResult, const char *assertMessage,
|
|
||||||
time_t eventTime);
|
|
||||||
|
|
||||||
/*!
|
|
||||||
* Prints information about assert that has actual and expected values in XML
|
|
||||||
*
|
|
||||||
* \param assertName Name of the assert
|
|
||||||
* \param assertResult Did assert fail (== 0) or success (!= 0)
|
|
||||||
* \param assertMessage Message of the assert
|
|
||||||
* \param actualValue Actual value of assert
|
|
||||||
* \param expected Excepted value of assert
|
|
||||||
* \param eventTime When the assert happened
|
|
||||||
*/
|
|
||||||
void XMLAssertWithValues(const char *assertName, int assertResult, const char *assertMessage,
|
|
||||||
int actualValue, int expected, time_t eventTime);
|
|
||||||
|
|
||||||
/*!
|
|
||||||
* Prints summary of all assertions of certain tests in XML
|
|
||||||
*
|
|
||||||
* \param numAsserts Total assert count for the executed test
|
|
||||||
* \param numAssertsFailed Count of failed asserts in the test
|
|
||||||
* \param numAssertsPass Count of passed asserts in the test
|
|
||||||
* \param eventTime Timestamp of the summary
|
|
||||||
*/
|
|
||||||
void XMLAssertSummary(int numAsserts, int numAssertsFailed, int numAssertsPass, time_t eventTime);
|
|
||||||
|
|
||||||
/*!
|
|
||||||
* Prints given message in XML
|
|
||||||
*
|
|
||||||
* \param eventTime Timestamp for log message
|
|
||||||
* \param fmt Message to be logged
|
|
||||||
*/
|
|
||||||
void XMLLog(time_t eventTime, char *fmt, ...);
|
|
||||||
|
|
||||||
#endif
|
|
|
@ -1,7 +0,0 @@
|
||||||
INCLUDE = -I../libSDLtest -I../../include
|
|
||||||
|
|
||||||
bin_PROGRAMS = runner
|
|
||||||
runner_SOURCES = runner.c support.c
|
|
||||||
runner_LDADD = ../libSDLtest/libSDLtest.la
|
|
||||||
runner_CFLAGS = -W -Wall -Wextra -g `sdl-config --cflags` -DSDL_NO_COMPAT
|
|
||||||
runner_LDFLAGS = `sdl-config --libs`
|
|
|
@ -1,91 +0,0 @@
|
||||||
/*
|
|
||||||
Copyright (C) 2011 Markus Kauppila <markus.kauppila@gmail.com>
|
|
||||||
|
|
||||||
This software is provided 'as-is', without any express or implied
|
|
||||||
warranty. In no event will the authors be held liable for any damages
|
|
||||||
arising from the use of this software.
|
|
||||||
|
|
||||||
Permission is granted to anyone to use this software for any purpose,
|
|
||||||
including commercial applications, and to alter it and redistribute it
|
|
||||||
freely, subject to the following restrictions:
|
|
||||||
|
|
||||||
1. The origin of this software must not be misrepresented; you must not
|
|
||||||
claim that you wrote the original software. If you use this software
|
|
||||||
in a product, an acknowledgment in the product documentation would be
|
|
||||||
appreciated but is not required.
|
|
||||||
2. Altered source versions must be plainly marked as such, and must not be
|
|
||||||
misrepresented as being the original software.
|
|
||||||
3. This notice may not be removed or altered from any source distribution.
|
|
||||||
*/
|
|
||||||
|
|
||||||
#ifndef _LOGGER_H
|
|
||||||
#define _LOGGER_H
|
|
||||||
|
|
||||||
#include <SDL/SDL_stdinc.h>
|
|
||||||
#include <time.h>
|
|
||||||
|
|
||||||
/* Logging levels */
|
|
||||||
typedef enum LogLevel {
|
|
||||||
LOGGER_TERSE = 1,
|
|
||||||
LOGGER_VERBOSE
|
|
||||||
} Level;
|
|
||||||
|
|
||||||
//! Default logging level
|
|
||||||
#define LOGGER_DEFAULT_LEVEL LOGGER_TERSE
|
|
||||||
|
|
||||||
//! Contains information for the logger
|
|
||||||
typedef struct LoggerData {
|
|
||||||
//! If enabled logger will write to stdout instead of file
|
|
||||||
int stdoutEnabled;
|
|
||||||
//!< Name and directory of the log file (ie. logs/runner-seed.log)
|
|
||||||
char *filename;
|
|
||||||
//!< Logging level of the logger (such as VERBOSE)
|
|
||||||
Level level;
|
|
||||||
//!< Some custom data that a logger needs
|
|
||||||
char *custom;
|
|
||||||
} LoggerData;
|
|
||||||
|
|
||||||
/*!
|
|
||||||
* Typedefs for function pointers that implement the generic
|
|
||||||
* logging interface. See the headers of implementations (plain_logger.h or
|
|
||||||
* xml_logger.h) for more information.
|
|
||||||
*/
|
|
||||||
typedef void (*RunStartedFp)(int parameterCount, char *runnerParameters[], char *runSeed, time_t eventTime, LoggerData *data);
|
|
||||||
typedef void (*RunEndedFp)(int testCount, int suiteCount, int testPassCount, int testFailCount,
|
|
||||||
int testSkippedCount, time_t endTime, double totalRuntime);
|
|
||||||
|
|
||||||
typedef void (*SuiteStartedFp)(const char *suiteName, time_t eventTime);
|
|
||||||
typedef void (*SuiteEndedFp)(int testsPassed, int testsFailed, int testsSkipped,
|
|
||||||
time_t endTime, double totalRuntime);
|
|
||||||
|
|
||||||
typedef void (*TestStartedFp)(const char *testName, const char *suiteName,
|
|
||||||
const char *testDescription, Uint64 execKey, time_t startTime);
|
|
||||||
typedef void (*TestEndedFp)(const char *testName, const char *suiteName, int testResult,
|
|
||||||
time_t endTime, double totalRuntime);
|
|
||||||
|
|
||||||
typedef void (*AssertFp)(const char *assertName, int assertResult,
|
|
||||||
const char *assertMessage, time_t eventTime);
|
|
||||||
|
|
||||||
typedef void (*AssertWithValuesFp)(const char *assertName, int assertResult,
|
|
||||||
const char *assertMessage, int actualValue, int expected,
|
|
||||||
time_t eventTime);
|
|
||||||
|
|
||||||
typedef void (*AssertSummaryFp)(int numAsserts, int numAssertsFailed,
|
|
||||||
int numAssertsPass, time_t eventTime);
|
|
||||||
|
|
||||||
typedef void (*LogFp)(time_t eventTime, char *fmt, ...);
|
|
||||||
|
|
||||||
|
|
||||||
/*! Function pointers to actual logging function implementations */
|
|
||||||
extern RunStartedFp RunStarted;
|
|
||||||
extern RunEndedFp RunEnded;
|
|
||||||
extern SuiteStartedFp SuiteStarted;
|
|
||||||
extern SuiteEndedFp SuiteEnded;
|
|
||||||
extern TestStartedFp TestStarted;
|
|
||||||
extern TestEndedFp TestEnded;
|
|
||||||
extern AssertFp Assert;
|
|
||||||
extern AssertWithValuesFp AssertWithValues;
|
|
||||||
extern AssertSummaryFp AssertSummary;
|
|
||||||
extern LogFp Log;
|
|
||||||
|
|
||||||
#endif
|
|
File diff suppressed because it is too large
Load diff
|
@ -1,75 +0,0 @@
|
||||||
/*
|
|
||||||
Copyright (C) 2011 Markus Kauppila <markus.kauppila@gmail.com>
|
|
||||||
|
|
||||||
This software is provided 'as-is', without any express or implied
|
|
||||||
warranty. In no event will the authors be held liable for any damages
|
|
||||||
arising from the use of this software.
|
|
||||||
|
|
||||||
Permission is granted to anyone to use this software for any purpose,
|
|
||||||
including commercial applications, and to alter it and redistribute it
|
|
||||||
freely, subject to the following restrictions:
|
|
||||||
|
|
||||||
1. The origin of this software must not be misrepresented; you must not
|
|
||||||
claim that you wrote the original software. If you use this software
|
|
||||||
in a product, an acknowledgment in the product documentation would be
|
|
||||||
appreciated but is not required.
|
|
||||||
2. Altered source versions must be plainly marked as such, and must not be
|
|
||||||
misrepresented as being the original software.
|
|
||||||
3. This notice may not be removed or altered from any source distribution.
|
|
||||||
*/
|
|
||||||
|
|
||||||
#include "support.h"
|
|
||||||
|
|
||||||
#include <SDL/SDL_config.h>
|
|
||||||
|
|
||||||
int
|
|
||||||
PlatformSupportsAudio()
|
|
||||||
{
|
|
||||||
int retValue = 0;
|
|
||||||
|
|
||||||
#ifdef SDL_AUDIO_DRIVER_COREAUDIO
|
|
||||||
retValue = 1;
|
|
||||||
#endif
|
|
||||||
#ifdef SDL_AUDIO_DRIVER_OSS
|
|
||||||
retValue = 1;
|
|
||||||
#endif
|
|
||||||
|
|
||||||
return retValue;
|
|
||||||
}
|
|
||||||
|
|
||||||
int
|
|
||||||
PlatformSupportsStdio()
|
|
||||||
{
|
|
||||||
int retValue = 0;
|
|
||||||
|
|
||||||
#ifdef HAVE_STDIO_H
|
|
||||||
retValue = 1;
|
|
||||||
#endif
|
|
||||||
|
|
||||||
return retValue;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/*
|
|
||||||
|
|
||||||
Example of implementing new PlatformSupportXXX functions. The function
|
|
||||||
should return 1 if the feature is supported. Otherwise return 0.
|
|
||||||
|
|
||||||
Add call to the implemented function to runner.c in function
|
|
||||||
CheckTestRequirements. Use the current implementation as a guide.
|
|
||||||
|
|
||||||
Also add TEST_REQUIRES_XXX to SDL_test.h and use it in your tests
|
|
||||||
TestCaseReference. In this case, you'd add TEST_REQUIRES_OPENGL to
|
|
||||||
SDL_test.h
|
|
||||||
|
|
||||||
int
|
|
||||||
PlatformSupportsOpenGL() {
|
|
||||||
int retValue = 0;
|
|
||||||
#define SDL_VIDEO_OPENGL
|
|
||||||
retValue = 1;
|
|
||||||
#endif
|
|
||||||
|
|
||||||
return retValue;
|
|
||||||
}
|
|
||||||
|
|
||||||
*/
|
|
|
@ -1,39 +0,0 @@
|
||||||
/*
|
|
||||||
Copyright (C) 2011 Markus Kauppila <markus.kauppila@gmail.com>
|
|
||||||
|
|
||||||
This software is provided 'as-is', without any express or implied
|
|
||||||
warranty. In no event will the authors be held liable for any damages
|
|
||||||
arising from the use of this software.
|
|
||||||
|
|
||||||
Permission is granted to anyone to use this software for any purpose,
|
|
||||||
including commercial applications, and to alter it and redistribute it
|
|
||||||
freely, subject to the following restrictions:
|
|
||||||
|
|
||||||
1. The origin of this software must not be misrepresented; you must not
|
|
||||||
claim that you wrote the original software. If you use this software
|
|
||||||
in a product, an acknowledgment in the product documentation would be
|
|
||||||
appreciated but is not required.
|
|
||||||
2. Altered source versions must be plainly marked as such, and must not be
|
|
||||||
misrepresented as being the original software.
|
|
||||||
3. This notice may not be removed or altered from any source distribution.
|
|
||||||
*/
|
|
||||||
|
|
||||||
#ifndef _SUPPORT_H
|
|
||||||
#define _SUPPORT_H
|
|
||||||
|
|
||||||
/*!
|
|
||||||
* Checks if platform supports audio.
|
|
||||||
*
|
|
||||||
* \return 1 if audio is supported, otherwise 0
|
|
||||||
*/
|
|
||||||
int PlatformSupportsAudio();
|
|
||||||
|
|
||||||
/*!
|
|
||||||
* Checks if platform supports stdio.
|
|
||||||
*
|
|
||||||
* \return 1 if audio is supported, otherwise 0
|
|
||||||
*/
|
|
||||||
int PlatformSupportsStdio();
|
|
||||||
|
|
||||||
|
|
||||||
#endif
|
|
|
@ -1,248 +0,0 @@
|
||||||
<?xml version="1.0" encoding="ISO-8859-1"?>
|
|
||||||
<xsl:stylesheet version="1.0"
|
|
||||||
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
|
|
||||||
|
|
||||||
<xsl:template match="/">
|
|
||||||
|
|
||||||
<html>
|
|
||||||
<head>
|
|
||||||
<title>Test report</title>
|
|
||||||
|
|
||||||
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.6.1/jquery.min.js"/>
|
|
||||||
|
|
||||||
<script type="text/javascript">
|
|
||||||
|
|
||||||
var hideTests = '[Hide tests]';
|
|
||||||
var showTests = '[Show tests]';
|
|
||||||
|
|
||||||
var hideAsserts = '[Hide Assert Summary]';
|
|
||||||
var showAsserts = '[Show Assert Summary]';
|
|
||||||
|
|
||||||
var hideAllTests = '[Hide All Tests]';
|
|
||||||
var showAllTests = '[Show All Tests]';
|
|
||||||
|
|
||||||
var hideEverything = '[Hide Everything]';
|
|
||||||
var showEverything = '[Show Everything]';
|
|
||||||
|
|
||||||
var animationSpeed = 'fast';
|
|
||||||
|
|
||||||
$(document).ready(function() {
|
|
||||||
$("span.show-tests").click(function() {
|
|
||||||
var content = $(this).html();
|
|
||||||
var id = $(this).attr('uid');
|
|
||||||
var searchString = "div.tests[uid="+id+"]";
|
|
||||||
|
|
||||||
if(content == hideTests) {
|
|
||||||
$(searchString).hide(animationSpeed);
|
|
||||||
$(this).text(showTests);
|
|
||||||
} else {
|
|
||||||
$(searchString).show(animationSpeed);
|
|
||||||
$(this).text(hideTests);
|
|
||||||
}
|
|
||||||
});
|
|
||||||
|
|
||||||
$("span.show-asserts").click(function() {
|
|
||||||
var content = $(this).html();
|
|
||||||
var id = $(this).attr('uid');
|
|
||||||
var searchString = "div.asserts[uid="+id+"]";
|
|
||||||
|
|
||||||
if(content == hideAsserts) {
|
|
||||||
$(searchString).hide(animationSpeed);
|
|
||||||
$(this).text(showAsserts);
|
|
||||||
} else {
|
|
||||||
$(searchString).show(animationSpeed);
|
|
||||||
$(this).text(hideAsserts);
|
|
||||||
}
|
|
||||||
});
|
|
||||||
|
|
||||||
$("span.show-all-tests").click(function() {
|
|
||||||
var content = $(this).html();
|
|
||||||
var searchString = "div.tests";
|
|
||||||
|
|
||||||
if(content == hideAllTests) {
|
|
||||||
$(searchString).hide(animationSpeed);
|
|
||||||
$(this).text(showAllTests);
|
|
||||||
|
|
||||||
/* handle the individual '[show tests]' switcher */
|
|
||||||
$("span.show-tests[uid]").text(showTests);
|
|
||||||
} else {
|
|
||||||
$(searchString).show(animationSpeed);
|
|
||||||
$(this).text(hideAllTests);
|
|
||||||
|
|
||||||
/* handle the individual '[show tests]' switcher */
|
|
||||||
$("span.show-tests[uid]").text(hideTests);
|
|
||||||
}
|
|
||||||
});
|
|
||||||
|
|
||||||
$("span.show-everything").click(function() {
|
|
||||||
var content = $(this).html();
|
|
||||||
var searchString = "div.tests";
|
|
||||||
|
|
||||||
if(content == hideEverything) {
|
|
||||||
$("div.tests").hide(animationSpeed);
|
|
||||||
$("div.asserts").hide(animationSpeed);
|
|
||||||
$(this).text(showEverything);
|
|
||||||
|
|
||||||
/* handle the individual switchers */
|
|
||||||
$("span.show-tests[uid]").text(showTests);
|
|
||||||
$("span.show-asserts[uid]").text(showAsserts);
|
|
||||||
} else {
|
|
||||||
$("div.tests").show(animationSpeed);
|
|
||||||
$("div.asserts").show(animationSpeed);
|
|
||||||
$(this).text(hideEverything);
|
|
||||||
|
|
||||||
/* handle the individual switchers */
|
|
||||||
$("span.show-tests[uid]").text(hideTests);
|
|
||||||
$("span.show-asserts[uid]").text(hideAsserts);
|
|
||||||
}
|
|
||||||
});
|
|
||||||
|
|
||||||
/* Initially everything is hidden */
|
|
||||||
$("div.tests").hide();
|
|
||||||
$("div.asserts").hide();
|
|
||||||
|
|
||||||
/* Color the tests based on the result */
|
|
||||||
$("span.testResult[result='passed']").addClass('passed');
|
|
||||||
$("span.testResult[result='failed']").addClass('failed');
|
|
||||||
$("span.testResult[result='skipped']").addClass('skipped');
|
|
||||||
|
|
||||||
/* Color the asserts based on the result */
|
|
||||||
$("span.assertResult[result='pass']").addClass('passed');
|
|
||||||
$("span.assertResult[result='failure']").addClass('failed');
|
|
||||||
});
|
|
||||||
|
|
||||||
</script>
|
|
||||||
<style>
|
|
||||||
|
|
||||||
div, h1 {
|
|
||||||
padding: 2px 10px 2px 10px;
|
|
||||||
margin: 5px 0px 5px 0px;
|
|
||||||
}
|
|
||||||
|
|
||||||
.assert {
|
|
||||||
padding: 0px 10px 0px 10px;
|
|
||||||
margin: 0px 0px 0px 0px;
|
|
||||||
}
|
|
||||||
|
|
||||||
.document {
|
|
||||||
font-family: Arial;
|
|
||||||
font-size: 11pt;
|
|
||||||
background-color: #EDEDED;
|
|
||||||
}
|
|
||||||
|
|
||||||
.description {
|
|
||||||
font-style: italic;
|
|
||||||
}
|
|
||||||
|
|
||||||
.bigtitle {
|
|
||||||
font-size: 14pt;
|
|
||||||
font-weight: bold;
|
|
||||||
}
|
|
||||||
|
|
||||||
.title {
|
|
||||||
font-weight: bold;
|
|
||||||
}
|
|
||||||
|
|
||||||
.switch {
|
|
||||||
font-style: italic;
|
|
||||||
color: rgb(10, 10, 200);
|
|
||||||
font-size: 10pt;
|
|
||||||
cursor: pointer;
|
|
||||||
}
|
|
||||||
|
|
||||||
.passed {
|
|
||||||
color: green;
|
|
||||||
}
|
|
||||||
|
|
||||||
.failed {
|
|
||||||
color: red;
|
|
||||||
}
|
|
||||||
|
|
||||||
.skipped {
|
|
||||||
color: gray;
|
|
||||||
}
|
|
||||||
|
|
||||||
</style>
|
|
||||||
|
|
||||||
</head>
|
|
||||||
<body class="document">
|
|
||||||
<h1>Test Report</h1>
|
|
||||||
<div>
|
|
||||||
<span class="title">Start time: </span><xsl:value-of select="testlog/startTime"/><br/>
|
|
||||||
<span class="title">Total runtime: </span><xsl:value-of select="testlog/totalRuntime"/> seconds.<br/>
|
|
||||||
<span class="title">Fuzz seed: </span><xsl:value-of select="testlog/seed"/><br/>
|
|
||||||
<span class="title">Harness parameters: </span>
|
|
||||||
<span xml:space="preserve">
|
|
||||||
<xsl:for-each select="testlog/parameters/parameter">
|
|
||||||
<xsl:value-of select="."/>
|
|
||||||
</xsl:for-each>
|
|
||||||
</span>
|
|
||||||
<br/>
|
|
||||||
<span class="title">Statistics:</span><br/>
|
|
||||||
<div class="statistics">
|
|
||||||
<span>Executed </span> <xsl:value-of select="testlog/numSuites"/> test suites. <br/>
|
|
||||||
<span>Tests in total: </span> <xsl:value-of select="testlog/numTests"/> (passed: <xsl:value-of select="testlog/numPassedTests"/>, failed: <xsl:value-of select="testlog/numFailedTests"/>, skipped: <xsl:value-of select="testlog/numSkippedTests"/>)
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div>
|
|
||||||
<br/>
|
|
||||||
<span class="bigtitle">Test Results</span><br/>
|
|
||||||
<span class="switch show-all-tests">[Show All Tests] </span> |
|
|
||||||
<span class="switch show-everything">[Show Everything]</span>
|
|
||||||
</div>
|
|
||||||
<br/>
|
|
||||||
|
|
||||||
<xsl:for-each select="testlog/suite">
|
|
||||||
<div id="suite">
|
|
||||||
Suite: <span class="title"> <xsl:value-of select="name"/></span> (<xsl:value-of select="startTime"/>)
|
|
||||||
<div class="suiteInfo">
|
|
||||||
Tests: passed <xsl:value-of select="testsPassed"/>, failed <xsl:value-of select="testsFailed"/>, skipped <xsl:value-of select="testsSkipped"/>.<br/>
|
|
||||||
Total runtime: <xsl:value-of select="totalRuntime"/> seconds. <br/>
|
|
||||||
<span class="show-tests switch" uid="{generate-id(test)}">[Show tests]</span>
|
|
||||||
<div class="tests" uid="{generate-id(test)}">
|
|
||||||
<xsl:for-each select="test">
|
|
||||||
<div class="test">
|
|
||||||
Test <span class="title"><xsl:value-of select="name"/>: </span>
|
|
||||||
<span class="testResult">
|
|
||||||
<xsl:attribute name="result">
|
|
||||||
<xsl:value-of select="result"/>
|
|
||||||
</xsl:attribute><xsl:value-of select="result"/>
|
|
||||||
</span>
|
|
||||||
<xsl:if test="resultDescription != ''">
|
|
||||||
<span xml:space="preserve">
|
|
||||||
(<xsl:value-of select="resultDescription"/>)
|
|
||||||
</span>
|
|
||||||
</xsl:if>
|
|
||||||
- exec-key: <xsl:value-of select="executionKey"/>
|
|
||||||
(Total runtime: <xsl:value-of select="totalRuntime"/> seconds)<br/>
|
|
||||||
Description: <span class="description"> <xsl:value-of select="description"/> </span><br/>
|
|
||||||
<span class="switch show-asserts" uid="{generate-id(assertSummary)}">[Show Assert Summary]</span><br/>
|
|
||||||
<div class="asserts" uid="{generate-id(assertSummary)}">
|
|
||||||
<xsl:for-each select="assert">
|
|
||||||
<div class="assert">
|
|
||||||
<xsl:value-of select="name"/>:
|
|
||||||
<span class="assertResult">
|
|
||||||
<xsl:attribute name="result">
|
|
||||||
<xsl:value-of select="result"/>
|
|
||||||
</xsl:attribute>
|
|
||||||
<xsl:value-of select="result"/>
|
|
||||||
</span>.
|
|
||||||
Message: <span class="description"><xsl:value-of select="message"/></span>
|
|
||||||
</div>
|
|
||||||
</xsl:for-each>
|
|
||||||
Asserts in total: <xsl:value-of select="assertSummary/assertCount"/> (passed: <xsl:value-of select="assertSummary/assertsPassed"/>, failed: <xsl:value-of select="assertSummary/assertsFailed"/>)
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</xsl:for-each>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</xsl:for-each>
|
|
||||||
<br/>
|
|
||||||
</body>
|
|
||||||
</html>
|
|
||||||
|
|
||||||
|
|
||||||
</xsl:template>
|
|
||||||
</xsl:stylesheet>
|
|
||||||
|
|
|
@ -1,4 +0,0 @@
|
||||||
lib_LTLIBRARIES = libtestaudio.la
|
|
||||||
libtestaudio_la_SOURCES = testaudio.c
|
|
||||||
libtestaudio_la_CLAGS = -fPIC -g
|
|
||||||
libtestaudio_la_LDFLAGS = `sdl-config --libs` -I ../../src/libSDLtest/.libs/libSDLtest.la
|
|
|
@ -1,182 +0,0 @@
|
||||||
/**
|
|
||||||
* Original code: automated SDL audio test written by Edgar Simo "bobbens"
|
|
||||||
* New/updated tests: aschiffler at ferzkopp dot net
|
|
||||||
*/
|
|
||||||
|
|
||||||
#include <stdio.h>
|
|
||||||
|
|
||||||
#include <SDL/SDL.h>
|
|
||||||
|
|
||||||
#include "../../include/SDL_test.h"
|
|
||||||
|
|
||||||
/* Test cases */
|
|
||||||
static const TestCaseReference test1 =
|
|
||||||
(TestCaseReference){ "audio_enumerateAndNameAudioDevices", "Enumerate and name available audio devices (output and capture)", TEST_ENABLED, TEST_REQUIRES_AUDIO, 0};
|
|
||||||
|
|
||||||
static const TestCaseReference test2 =
|
|
||||||
(TestCaseReference){ "audio_enumerateAndNameAudioDevicesNegativeTests", "Netative tests around enumeration and naming of audio devices.", TEST_ENABLED, TEST_REQUIRES_AUDIO, 0};
|
|
||||||
|
|
||||||
static const TestCaseReference test3 =
|
|
||||||
(TestCaseReference){ "audio_printAudioDrivers", "Checks available audio driver names.", TEST_ENABLED, TEST_REQUIRES_AUDIO, 0};
|
|
||||||
|
|
||||||
static const TestCaseReference test4 =
|
|
||||||
(TestCaseReference){ "audio_printCurrentAudioDriver", "Checks current audio driver name with initialized audio.", TEST_ENABLED, TEST_REQUIRES_AUDIO, 0};
|
|
||||||
|
|
||||||
/* Test suite */
|
|
||||||
extern const TestCaseReference *testSuite[] = {
|
|
||||||
&test1, &test2, &test3, &test4, NULL
|
|
||||||
};
|
|
||||||
|
|
||||||
|
|
||||||
TestCaseReference **QueryTestSuite() {
|
|
||||||
return (TestCaseReference **)testSuite;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Fixture */
|
|
||||||
|
|
||||||
void
|
|
||||||
SetUp(void *arg)
|
|
||||||
{
|
|
||||||
/* Start SDL. */
|
|
||||||
int ret = SDL_Init( SDL_INIT_AUDIO );
|
|
||||||
AssertTrue(ret==0, "SDL_Init(SDL_INIT_AUDIO): %s", SDL_GetError());
|
|
||||||
}
|
|
||||||
|
|
||||||
void
|
|
||||||
TearDown(void *arg)
|
|
||||||
{
|
|
||||||
/* Quit SDL. */
|
|
||||||
SDL_Quit();
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Test case functions */
|
|
||||||
|
|
||||||
/**
|
|
||||||
* \brief Enumerate and name available audio devices (output and capture).
|
|
||||||
*
|
|
||||||
* \sa http://wiki.libsdl.org/moin.cgi/SDL_GetNumAudioDevices
|
|
||||||
* \sa http://wiki.libsdl.org/moin.cgi/SDL_GetAudioDeviceName
|
|
||||||
*/
|
|
||||||
int audio_enumerateAndNameAudioDevices()
|
|
||||||
{
|
|
||||||
int ret;
|
|
||||||
int t, tt;
|
|
||||||
int i, n, nn;
|
|
||||||
const char *name, *nameAgain;
|
|
||||||
|
|
||||||
/* Iterate over types: t=0 output device, t=1 input/capture device */
|
|
||||||
for (t=0; t<2; t++) {
|
|
||||||
|
|
||||||
/* Get number of devices. */
|
|
||||||
n = SDL_GetNumAudioDevices(t);
|
|
||||||
AssertTrue(n>=0,
|
|
||||||
"Number of %s devices < 0, reported as %i: %s",
|
|
||||||
(t) ? "output" : "capture",
|
|
||||||
n,
|
|
||||||
SDL_GetError());
|
|
||||||
|
|
||||||
/* Variation of non-zero type */
|
|
||||||
if (t==1) {
|
|
||||||
tt = t + RandomIntegerInRange(1,10);
|
|
||||||
nn = SDL_GetNumAudioDevices(tt);
|
|
||||||
AssertTrue(n==nn, "SDL_GetNumAudioDevices(%i) : expected same number of audio devices %i, got %i", tt, n, nn);
|
|
||||||
nn = SDL_GetNumAudioDevices(-tt);
|
|
||||||
AssertTrue(n==nn, "SDL_GetNumAudioDevices(%i) : expected same number of audio devices %i, got %i", -tt, n, nn);
|
|
||||||
}
|
|
||||||
|
|
||||||
/* List devices. */
|
|
||||||
if (n>0) {
|
|
||||||
for (i=0; i<n; i++) {
|
|
||||||
name = SDL_GetAudioDeviceName(i, t);
|
|
||||||
AssertTrue(name != NULL, "SDL_GetAudioDeviceName(%i, %i): returned NULL name", i, t);
|
|
||||||
AssertTrue(strlen(name)>0, "SDL_GetAudioDeviceName(%i, %i): returned empty name string", i, t);
|
|
||||||
if (t==1) {
|
|
||||||
/* Also try non-zero type */
|
|
||||||
nameAgain = SDL_GetAudioDeviceName(i, tt);
|
|
||||||
AssertTrue(nameAgain != NULL, "SDL_GetAudioDeviceName(%i, %i): returned NULL name", i, tt);
|
|
||||||
AssertTrue(strlen(nameAgain)>0, "SDL_GetAudioDeviceName(%i, %i): returned empty name string", i, tt);
|
|
||||||
AssertTrue(strcmp(name, nameAgain)==0,
|
|
||||||
"SDL_GetAudioDeviceName(%i, %i): returned unexpected name string %s, expected %s",
|
|
||||||
i, tt, nameAgain, name);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* \brief Negative tests around enumeration and naming of audio devices.
|
|
||||||
*
|
|
||||||
* \sa http://wiki.libsdl.org/moin.cgi/SDL_GetNumAudioDevices
|
|
||||||
* \sa http://wiki.libsdl.org/moin.cgi/SDL_GetAudioDeviceName
|
|
||||||
*/
|
|
||||||
int audio_enumerateAndNameAudioDevicesNegativeTests()
|
|
||||||
{
|
|
||||||
int ret;
|
|
||||||
int t;
|
|
||||||
int i, j, no, nc;
|
|
||||||
const char *name;
|
|
||||||
|
|
||||||
/* Get number of devices. */
|
|
||||||
no = SDL_GetNumAudioDevices(0);
|
|
||||||
nc = SDL_GetNumAudioDevices(1);
|
|
||||||
|
|
||||||
/* Invalid device index when getting name */
|
|
||||||
for (t=0; t<2; t++) {
|
|
||||||
/* Negative device index */
|
|
||||||
i = -1;
|
|
||||||
name = SDL_GetAudioDeviceName(i, t);
|
|
||||||
AssertTrue(name == NULL, "SDL_GetAudioDeviceName(%i, %i): returned a name, should return NULL", i, t);
|
|
||||||
|
|
||||||
/* Device index past range */
|
|
||||||
for (j=0; j<3; j++) {
|
|
||||||
i = (t) ? nc+j : no+j;
|
|
||||||
name = SDL_GetAudioDeviceName(i, t);
|
|
||||||
AssertTrue(name == NULL, "SDL_GetAudioDeviceName(%i, %i): returned a name, should return NULL", i, t);
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Capture index past capture range but within output range */
|
|
||||||
if ((no>0) && (no>nc) && (t==1)) {
|
|
||||||
i = no-1;
|
|
||||||
name = SDL_GetAudioDeviceName(i, t);
|
|
||||||
AssertTrue(name == NULL, "SDL_GetAudioDeviceName(%i, %i): returned a name, should return NULL", i, t);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @brief Checks available audio driver names.
|
|
||||||
*/
|
|
||||||
int audio_printAudioDrivers()
|
|
||||||
{
|
|
||||||
int i, n;
|
|
||||||
const char *name;
|
|
||||||
|
|
||||||
/* Get number of drivers */
|
|
||||||
n = SDL_GetNumAudioDrivers();
|
|
||||||
AssertTrue(n>=0, "Number of audio drivers >= 0");
|
|
||||||
|
|
||||||
/* List drivers. */
|
|
||||||
if (n>0)
|
|
||||||
{
|
|
||||||
for (i=0; i<n; i++) {
|
|
||||||
name = SDL_GetAudioDriver(i);
|
|
||||||
AssertTrue(name != NULL, "name != NULL");
|
|
||||||
AssertTrue(strlen(name)>0, "name empty");
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @brief Checks current audio driver name with initialized audio.
|
|
||||||
*/
|
|
||||||
int audio_printCurrentAudioDriver()
|
|
||||||
{
|
|
||||||
int ret;
|
|
||||||
const char *name;
|
|
||||||
|
|
||||||
/* Check current audio driver */
|
|
||||||
name = SDL_GetCurrentAudioDriver();
|
|
||||||
AssertTrue(name != NULL, "name != NULL");
|
|
||||||
AssertTrue(strlen(name)>0, "name empty");
|
|
||||||
}
|
|
Some files were not shown because too many files have changed in this diff Show more
Loading…
Add table
Add a link
Reference in a new issue