ToLuaDoxy: initial import
git-svn-id: http://mc-server.googlecode.com/svn/trunk@1544 0a769ca7-a7f5-676a-18bf-c427514a06d6
This commit is contained in:
parent
8ff22344af
commit
a9d221b74b
1832
Tools/ToLuaDoxy/Doxyfile
Normal file
1832
Tools/ToLuaDoxy/Doxyfile
Normal file
File diff suppressed because it is too large
Load Diff
10
Tools/ToLuaDoxy/Globals.cpp
Normal file
10
Tools/ToLuaDoxy/Globals.cpp
Normal file
@ -0,0 +1,10 @@
|
||||
|
||||
// Globals.cpp
|
||||
|
||||
// Used for precompiled header generation in MSVC
|
||||
|
||||
#include "Globals.h"
|
||||
|
||||
|
||||
|
||||
|
101
Tools/ToLuaDoxy/Globals.h
Normal file
101
Tools/ToLuaDoxy/Globals.h
Normal file
@ -0,0 +1,101 @@
|
||||
|
||||
// Globals.h
|
||||
|
||||
// This file is used for precompiled header generation in MSVC
|
||||
|
||||
|
||||
|
||||
|
||||
// OS-dependent stuff:
|
||||
#ifdef _WIN32
|
||||
#define WIN32_LEAN_AND_MEAN
|
||||
|
||||
#define _WIN32_WINNT 0x501 // We want to target WinXP and higher
|
||||
|
||||
#include <Windows.h>
|
||||
#include <winsock2.h>
|
||||
#include <Ws2tcpip.h> // IPv6 stuff
|
||||
|
||||
// Windows SDK defines min and max macros, messing up with our std::min and std::max usage
|
||||
#undef min
|
||||
#undef max
|
||||
|
||||
// Windows SDK defines GetFreeSpace as a constant, probably a Win16 API remnant
|
||||
#ifdef GetFreeSpace
|
||||
#undef GetFreeSpace
|
||||
#endif // GetFreeSpace
|
||||
#else
|
||||
#include <sys/types.h>
|
||||
#include <sys/stat.h> // for mkdir
|
||||
#include <sys/time.h>
|
||||
#include <sys/socket.h>
|
||||
#include <netinet/in.h>
|
||||
#include <arpa/inet.h>
|
||||
#include <netdb.h>
|
||||
#include <time.h>
|
||||
#include <dirent.h>
|
||||
#include <errno.h>
|
||||
#include <iostream>
|
||||
|
||||
#include <cstdio>
|
||||
#include <cstring>
|
||||
#include <pthread.h>
|
||||
#include <semaphore.h>
|
||||
#include <errno.h>
|
||||
#include <fcntl.h>
|
||||
|
||||
#if !defined(ANDROID_NDK)
|
||||
#include <tr1/memory>
|
||||
#endif
|
||||
#endif
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
// CRT stuff:
|
||||
#include <assert.h>
|
||||
#include <stdio.h>
|
||||
#include <math.h>
|
||||
#include <stdarg.h>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
// STL stuff:
|
||||
#include <vector>
|
||||
#include <list>
|
||||
#include <deque>
|
||||
#include <string>
|
||||
#include <map>
|
||||
#include <algorithm>
|
||||
#include <memory>
|
||||
#include <set>
|
||||
#include <queue>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
// Common headers (part 1, without macros):
|
||||
#include "../../source/StringUtils.h"
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
// Common definitions:
|
||||
|
||||
/// Evaluates to the number of elements in an array (compile-time!)
|
||||
#define ARRAYCOUNT(X) (sizeof(X) / sizeof(*(X)))
|
||||
|
||||
/// Allows arithmetic expressions like "32 KiB" (but consider using parenthesis around it, "(32 KiB)" )
|
||||
#define KiB * 1024
|
||||
#define MiB * 1024 * 1024
|
||||
|
||||
#define ASSERT assert
|
||||
|
||||
|
||||
|
||||
|
222
Tools/ToLuaDoxy/ToLuaDoxy.cpp
Normal file
222
Tools/ToLuaDoxy/ToLuaDoxy.cpp
Normal file
@ -0,0 +1,222 @@
|
||||
|
||||
// ToLuaDoxy.cpp
|
||||
|
||||
// Implements the main app entrypoint
|
||||
|
||||
#include "Globals.h"
|
||||
#include <fstream>
|
||||
#include <iostream>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
typedef std::vector<AString> AStrings;
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
class cProcessor
|
||||
{
|
||||
public:
|
||||
cProcessor(const AString & a_FileOut) :
|
||||
m_Out(a_FileOut.c_str(), std::ios::out),
|
||||
m_IsInToLua(false),
|
||||
m_IsInComment(false)
|
||||
{
|
||||
}
|
||||
|
||||
|
||||
bool IsGood(void) const
|
||||
{
|
||||
return !m_Out.fail();
|
||||
}
|
||||
|
||||
|
||||
void ProcessFile(const AString & a_FileIn)
|
||||
{
|
||||
std::ifstream In(a_FileIn.c_str());
|
||||
if (In.fail())
|
||||
{
|
||||
std::cerr << "Cannot open input file " << a_FileIn << "." << std::endl;
|
||||
return;
|
||||
}
|
||||
while (!In.eof())
|
||||
{
|
||||
AString Line;
|
||||
std::getline(In, Line);
|
||||
PushLine(Line);
|
||||
}
|
||||
}
|
||||
|
||||
protected:
|
||||
std::ofstream m_Out;
|
||||
bool m_IsInToLua; ///< Set to true if inside a tolua_begin .. tolua_end block
|
||||
bool m_IsInComment; ///< Set to true if previous line has started a multiline comment; only outside tolua blocks
|
||||
AString m_LastComment; ///< Accumulator for a multiline comment preceding a tolua block
|
||||
|
||||
|
||||
void PushLine(const AString & a_Line)
|
||||
{
|
||||
if (m_IsInToLua)
|
||||
{
|
||||
// Inside a tolua block
|
||||
if (TrimString(a_Line) == "// tolua_end")
|
||||
{
|
||||
// End of a tolua block
|
||||
m_IsInToLua = false;
|
||||
return;
|
||||
}
|
||||
m_Out << a_Line << std::endl;
|
||||
return;
|
||||
}
|
||||
|
||||
if (m_IsInComment)
|
||||
{
|
||||
// Inside a multiline comment block, outside of a tolua block; accumulate m_LastComment
|
||||
m_LastComment += a_Line + "\n";
|
||||
m_IsInComment = (a_Line.find("*/") == AString::npos);
|
||||
return;
|
||||
}
|
||||
|
||||
AString Trimmed(TrimString(a_Line));
|
||||
|
||||
if (Trimmed == "// tolua_begin")
|
||||
{
|
||||
// Beginning of a tolua block
|
||||
m_IsInToLua = true;
|
||||
if (!m_LastComment.empty())
|
||||
{
|
||||
m_Out << m_LastComment << std::endl;
|
||||
m_LastComment.clear();
|
||||
}
|
||||
return;
|
||||
}
|
||||
|
||||
size_t CommentBegin = a_Line.find("/*");
|
||||
if (CommentBegin != AString::npos)
|
||||
{
|
||||
m_IsInComment = (a_Line.find("*/", CommentBegin) == AString::npos);
|
||||
m_LastComment = a_Line;
|
||||
}
|
||||
|
||||
size_t ExportIdx = a_Line.find("// tolua_export");
|
||||
if (ExportIdx != AString::npos)
|
||||
{
|
||||
// Single-line tolua block
|
||||
|
||||
// Strip the export comment and right-trim the line:
|
||||
AString Stripped(a_Line.substr(0, ExportIdx));
|
||||
int End = Stripped.length() - 1;
|
||||
while ((End > 0) && (Stripped[End] <= 32))
|
||||
{
|
||||
End--;
|
||||
}
|
||||
Stripped.erase(End + 1);
|
||||
|
||||
if (!m_LastComment.empty())
|
||||
{
|
||||
m_Out << m_LastComment << std::endl;
|
||||
m_LastComment.clear();
|
||||
}
|
||||
m_Out << Stripped << std::endl;
|
||||
return;
|
||||
}
|
||||
|
||||
if (!m_IsInComment)
|
||||
{
|
||||
m_LastComment.clear();
|
||||
}
|
||||
}
|
||||
} ;
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
/** Parses the specified package file into a list of $cfile-included files and all the other contents
|
||||
Returns true if successful.
|
||||
Returns false and prints error if unsuccessful
|
||||
*/
|
||||
bool ParsePackageFile(const AString & a_FileName, AStrings & a_CFiles, AStrings & a_DirectContentsLines)
|
||||
{
|
||||
std::ifstream PkgFile(a_FileName.c_str());
|
||||
if (PkgFile.fail())
|
||||
{
|
||||
std::cerr << "Cannot open the package file " << a_FileName << "." << std::endl;
|
||||
return false;
|
||||
}
|
||||
|
||||
while (!PkgFile.eof())
|
||||
{
|
||||
AString Line;
|
||||
std::getline(PkgFile, Line);
|
||||
Line = TrimString(Line);
|
||||
if (strncmp(Line.c_str(), "$cfile \"", 8) == 0)
|
||||
{
|
||||
a_CFiles.push_back(Line.substr(8, Line.length() - 9));
|
||||
}
|
||||
else
|
||||
{
|
||||
a_DirectContentsLines.push_back(Line);
|
||||
}
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
/// Processes the specified input header file into the output file
|
||||
void ProcessCFile(const AString & a_CFileIn, const AString & a_CFileOut)
|
||||
{
|
||||
cProcessor p(a_CFileOut);
|
||||
if (!p.IsGood())
|
||||
{
|
||||
std::cerr << "Cannot open output file " << a_CFileOut << "." << std::endl;
|
||||
return;
|
||||
}
|
||||
p.ProcessFile(a_CFileIn);
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
int main(int argc, char * argv[])
|
||||
{
|
||||
AString BaseDir = (argc > 1) ? argv[1] : ".";
|
||||
AString OutDir = (argc > 2) ? argv[2] : "Out";
|
||||
|
||||
// Create the output directory:
|
||||
#ifdef _WIN32
|
||||
CreateDirectory(OutDir.c_str(), NULL);
|
||||
#else
|
||||
mkdir(OutDir.c_str(), S_IRWXU | S_IRWXG | S_IRWXO);
|
||||
#endif
|
||||
|
||||
// Parse the package file
|
||||
AStrings CFiles;
|
||||
AStrings DirectLines;
|
||||
if (!ParsePackageFile(Printf("%s/AllToLua.pkg", BaseDir.c_str()), CFiles, DirectLines))
|
||||
{
|
||||
return 1;
|
||||
}
|
||||
|
||||
// Process header files:
|
||||
for (AStrings::const_iterator itr = CFiles.begin(), end = CFiles.end(); itr != end; ++itr)
|
||||
{
|
||||
static int cnt = 0;
|
||||
AString In = Printf("%s/%s", BaseDir.c_str(), itr->c_str());
|
||||
AString Out = Printf("%s/%04x.h", OutDir.c_str(), cnt++);
|
||||
ProcessCFile(In, Out);
|
||||
} // for itr - CFiles[]
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
20
Tools/ToLuaDoxy/ToLuaDoxy.sln
Normal file
20
Tools/ToLuaDoxy/ToLuaDoxy.sln
Normal file
@ -0,0 +1,20 @@
|
||||
|
||||
Microsoft Visual Studio Solution File, Format Version 10.00
|
||||
# Visual C++ Express 2008
|
||||
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "ToLuaDoxy", "ToLuaDoxy.vcproj", "{137140AF-4E9D-404F-BC87-982A6517AC12}"
|
||||
EndProject
|
||||
Global
|
||||
GlobalSection(SolutionConfigurationPlatforms) = preSolution
|
||||
Debug|Win32 = Debug|Win32
|
||||
Release|Win32 = Release|Win32
|
||||
EndGlobalSection
|
||||
GlobalSection(ProjectConfigurationPlatforms) = postSolution
|
||||
{137140AF-4E9D-404F-BC87-982A6517AC12}.Debug|Win32.ActiveCfg = Debug|Win32
|
||||
{137140AF-4E9D-404F-BC87-982A6517AC12}.Debug|Win32.Build.0 = Debug|Win32
|
||||
{137140AF-4E9D-404F-BC87-982A6517AC12}.Release|Win32.ActiveCfg = Release|Win32
|
||||
{137140AF-4E9D-404F-BC87-982A6517AC12}.Release|Win32.Build.0 = Release|Win32
|
||||
EndGlobalSection
|
||||
GlobalSection(SolutionProperties) = preSolution
|
||||
HideSolutionNode = FALSE
|
||||
EndGlobalSection
|
||||
EndGlobal
|
221
Tools/ToLuaDoxy/ToLuaDoxy.vcproj
Normal file
221
Tools/ToLuaDoxy/ToLuaDoxy.vcproj
Normal file
@ -0,0 +1,221 @@
|
||||
<?xml version="1.0" encoding="windows-1250"?>
|
||||
<VisualStudioProject
|
||||
ProjectType="Visual C++"
|
||||
Version="9,00"
|
||||
Name="ToLuaDoxy"
|
||||
ProjectGUID="{137140AF-4E9D-404F-BC87-982A6517AC12}"
|
||||
RootNamespace="ToLuaDoxy"
|
||||
Keyword="Win32Proj"
|
||||
TargetFrameworkVersion="196613"
|
||||
>
|
||||
<Platforms>
|
||||
<Platform
|
||||
Name="Win32"
|
||||
/>
|
||||
</Platforms>
|
||||
<ToolFiles>
|
||||
</ToolFiles>
|
||||
<Configurations>
|
||||
<Configuration
|
||||
Name="Debug|Win32"
|
||||
OutputDirectory="$(SolutionDir)$(ConfigurationName)"
|
||||
IntermediateDirectory="$(ConfigurationName)"
|
||||
ConfigurationType="1"
|
||||
CharacterSet="2"
|
||||
>
|
||||
<Tool
|
||||
Name="VCPreBuildEventTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCCustomBuildTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCXMLDataGeneratorTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCWebServiceProxyGeneratorTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCMIDLTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCCLCompilerTool"
|
||||
Optimization="0"
|
||||
AdditionalIncludeDirectories="../../source"
|
||||
PreprocessorDefinitions="WIN32;_DEBUG;_CONSOLE"
|
||||
MinimalRebuild="true"
|
||||
BasicRuntimeChecks="3"
|
||||
RuntimeLibrary="3"
|
||||
UsePrecompiledHeader="2"
|
||||
PrecompiledHeaderThrough="Globals.h"
|
||||
WarningLevel="3"
|
||||
DebugInformationFormat="4"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCManagedResourceCompilerTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCResourceCompilerTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCPreLinkEventTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCLinkerTool"
|
||||
LinkIncremental="2"
|
||||
GenerateDebugInformation="true"
|
||||
SubSystem="1"
|
||||
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="2"
|
||||
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="../../source"
|
||||
PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE"
|
||||
RuntimeLibrary="2"
|
||||
EnableFunctionLevelLinking="true"
|
||||
UsePrecompiledHeader="2"
|
||||
PrecompiledHeaderThrough="Globals.h"
|
||||
WarningLevel="3"
|
||||
DebugInformationFormat="3"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCManagedResourceCompilerTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCResourceCompilerTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCPreLinkEventTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCLinkerTool"
|
||||
LinkIncremental="1"
|
||||
GenerateDebugInformation="true"
|
||||
SubSystem="1"
|
||||
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=".\Globals.cpp"
|
||||
>
|
||||
<FileConfiguration
|
||||
Name="Debug|Win32"
|
||||
>
|
||||
<Tool
|
||||
Name="VCCLCompilerTool"
|
||||
UsePrecompiledHeader="1"
|
||||
/>
|
||||
</FileConfiguration>
|
||||
<FileConfiguration
|
||||
Name="Release|Win32"
|
||||
>
|
||||
<Tool
|
||||
Name="VCCLCompilerTool"
|
||||
UsePrecompiledHeader="1"
|
||||
/>
|
||||
</FileConfiguration>
|
||||
</File>
|
||||
<File
|
||||
RelativePath=".\Globals.h"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath=".\ToLuaDoxy.cpp"
|
||||
>
|
||||
</File>
|
||||
<Filter
|
||||
Name="shared"
|
||||
>
|
||||
<File
|
||||
RelativePath="..\..\source\StringUtils.cpp"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\..\source\StringUtils.h"
|
||||
>
|
||||
</File>
|
||||
</Filter>
|
||||
</Filter>
|
||||
</Files>
|
||||
<Globals>
|
||||
</Globals>
|
||||
</VisualStudioProject>
|
@ -9,6 +9,12 @@
|
||||
#include <ctype.h>
|
||||
#endif
|
||||
|
||||
#ifdef _MSC_VER
|
||||
// Under MSVC, link to WinSock2 (needed by RawBEToUTF8's byteswapping)
|
||||
#pragma comment(lib, "ws2_32.lib")
|
||||
#endif
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user