1
0
Fork 0

ToLuaDoxy: initial import

git-svn-id: http://mc-server.googlecode.com/svn/trunk@1544 0a769ca7-a7f5-676a-18bf-c427514a06d6
This commit is contained in:
madmaxoft@gmail.com 2013-06-04 09:46:32 +00:00
parent 8ff22344af
commit a9d221b74b
9 changed files with 2415 additions and 3 deletions

1832
Tools/ToLuaDoxy/Doxyfile Normal file

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,10 @@
// Globals.cpp
// Used for precompiled header generation in MSVC
#include "Globals.h"

101
Tools/ToLuaDoxy/Globals.h Normal file
View 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

View 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;
}

View 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

View 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>

View File

@ -593,7 +593,7 @@ enum
E_ENTITY_TYPE_IRON_GOLEM = 99,
E_ENTITY_TYPE_VILLAGER = 120,
} ;
//tolua_end
// tolua_end

View File

@ -1316,8 +1316,8 @@ void ManualBindings::Bind( lua_State* tolua_S )
tolua_cclass(tolua_S,"HTTPRequest","HTTPRequest","",NULL);
tolua_beginmodule(tolua_S,"HTTPRequest");
//tolua_variable(tolua_S,"Method",tolua_get_HTTPRequest_Method,tolua_set_HTTPRequest_Method);
//tolua_variable(tolua_S,"Path",tolua_get_HTTPRequest_Path,tolua_set_HTTPRequest_Path);
// tolua_variable(tolua_S,"Method",tolua_get_HTTPRequest_Method,tolua_set_HTTPRequest_Method);
// tolua_variable(tolua_S,"Path",tolua_get_HTTPRequest_Path,tolua_set_HTTPRequest_Path);
tolua_variable(tolua_S,"Params",tolua_get_HTTPRequest_Params,0);
tolua_variable(tolua_S,"PostParams",tolua_get_HTTPRequest_PostParams,0);
tolua_variable(tolua_S,"FormData",tolua_get_HTTPRequest_FormData,0);

View File

@ -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