소스 검색

JSONParser bug fix, btw it needs additional tests

mikymod 12 년 전
부모
커밋
4df3d0ccd0
57개의 변경된 파일375개의 추가작업 그리고 140개의 파일을 삭제
  1. 1 1
      android/build.xml
  2. 12 15
      android/jni/Android.mk
  3. 1 0
      android/jni/ArchiveResourceArchive.cpp
  4. 1 0
      android/jni/ArchiveResourceArchive.h
  5. 1 0
      android/jni/Config.h.in
  6. 0 1
      android/jni/Data.h
  7. 1 0
      android/jni/FileResourceArchive.cpp
  8. 1 0
      android/jni/FileResourceArchive.h
  9. 0 1
      android/jni/FontManager.cpp
  10. 0 1
      android/jni/FontManager.h
  11. 0 1
      android/jni/ImageLoader.cpp
  12. 0 1
      android/jni/ImageLoader.h
  13. 0 1
      android/jni/IndexBuffer.h
  14. 1 0
      android/jni/JSONParser.cpp
  15. 1 0
      android/jni/JSONParser.h
  16. 0 1
      android/jni/Material.cpp
  17. 0 1
      android/jni/Material.h
  18. 0 1
      android/jni/MaterialManager.cpp
  19. 0 1
      android/jni/MaterialManager.h
  20. 1 0
      android/jni/MaterialResource.cpp
  21. 1 0
      android/jni/MaterialResource.h
  22. 0 1
      android/jni/Mesh.cpp
  23. 0 1
      android/jni/Mesh.h
  24. 0 1
      android/jni/MeshChunk.cpp
  25. 0 1
      android/jni/MeshChunk.h
  26. 0 1
      android/jni/MeshLoader.h
  27. 0 1
      android/jni/MeshManager.cpp
  28. 0 1
      android/jni/MeshManager.h
  29. 0 1
      android/jni/OcclusionQuery.h
  30. 0 1
      android/jni/Renderer.cpp
  31. 0 1
      android/jni/Renderer.h
  32. 1 0
      android/jni/ResourceArchive.h
  33. 1 0
      android/jni/ResourceLoader.cpp
  34. 1 0
      android/jni/ResourceLoader.h
  35. 0 1
      android/jni/SpriteAnimator.cpp
  36. 0 1
      android/jni/SpriteAnimator.h
  37. 0 1
      android/jni/TextRenderer.cpp
  38. 0 1
      android/jni/TextRenderer.h
  39. 1 0
      android/jni/TextResource.cpp
  40. 1 0
      android/jni/TextResource.h
  41. 0 1
      android/jni/Texture.h
  42. 0 1
      android/jni/TextureManager.h
  43. 1 0
      android/jni/TextureResource.cpp
  44. 1 0
      android/jni/TextureResource.h
  45. 0 1
      android/jni/VertexBuffer.h
  46. 0 1
      android/jni/loaders
  47. 1 1
      android/project.properties
  48. 28 0
      proj/sublime-text/crown.proj
  49. 140 0
      proj/sublime-text/crown.sublime-workspace
  50. 6 6
      samples/android/triangle.cpp
  51. 14 5
      samples/json/json.cpp
  52. 5 5
      src/Device.cpp
  53. 15 23
      src/JSONParser.cpp
  54. 12 1
      src/JSONParser.h
  55. 87 19
      src/os/android/AndroidOS.cpp
  56. 0 1
      tools/CMakeLists.txt
  57. 38 35
      tools/resource-compilers/lua-compiler.cpp

+ 1 - 1
android/build.xml

@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<project name="Crown" default="help">
+<project name="crown" default="help">
 
     <!-- The local.properties file is created and updated by the 'android' tool.
          It contains the path to the SDK. It should *NOT* be checked into

+ 12 - 15
android/jni/Android.mk

@@ -22,7 +22,6 @@ LOCAL_SRC_FILES :=\
 	core/bv/Frustum.cpp\
 	core/bv/Rect.cpp\
 	core/containers/Generic.cpp\
-	core/containers/Str.cpp\
 	core/math/Color4.cpp\
 	core/math/Mat3.cpp\
 	core/math/Mat4.cpp\
@@ -37,12 +36,11 @@ LOCAL_SRC_FILES :=\
 	core/streams/FileStream.cpp\
 	core/streams/MemoryStream.cpp\
 	core/streams/Stream.cpp\
+	core/threads/Thread.cpp\
+	core/threads/Mutex.cpp\
 \
 	input/EventDispatcher.cpp\
 	input/InputManager.cpp\
-\
-	loaders/BMPImageLoader.cpp\
-	loaders/TGAImageLoader.cpp\
 \
 	os/OS.cpp\
 	os/android/AndroidOS.cpp\
@@ -54,27 +52,23 @@ LOCAL_SRC_FILES :=\
 \
 	renderers/gles/GLESIndexBuffer.cpp\
 	renderers/gles/GLESRenderer.cpp\
-	renderers/gles/GLESTexture.cpp\
-	renderers/gles/GLESTextureManager.cpp\
 	renderers/gles/GLESUtils.cpp\
 	renderers/gles/GLESVertexBuffer.cpp\
 \
 	Camera.cpp\
 	Device.cpp\
 	Font.cpp\
-	FontManager.cpp\
 	Image.cpp\
-	ImageLoader.cpp\
 	Log.cpp\
-	Material.cpp\
-	MaterialManager.cpp\
-	MeshChunk.cpp\
-	Mesh.cpp\
-	MeshManager.cpp\
+	MaterialResource.cpp\
 	MovableCamera.cpp\
 	Pixel.cpp\
-	Renderer.cpp\
 	ResourceManager.cpp\
+	ResourceLoader.cpp\
+	FileResourceArchive.cpp\
+	ArchiveResourceArchive.cpp\
+	TextureResource.cpp\
+	TextResource.cpp\
 	Skybox.cpp\
 	FPSSystem.cpp\
 \
@@ -86,16 +80,19 @@ LOCAL_C_INCLUDES	:=\
 	$(LOCAL_PATH)/core/math\
 	$(LOCAL_PATH)/core/compressors\
 	$(LOCAL_PATH)/core/containers\
+	$(LOCAL_PATH)/core/strings\
+	$(LOCAL_PATH)/core/threads\
 	$(LOCAL_PATH)/core/bv\
 	$(LOCAL_PATH)/core/mem\
 	$(LOCAL_PATH)/core/streams\
+	$(LOCAL_PATH)/core/threads\
+	$(LOCAL_PATH)/core/settings\
 	$(LOCAL_PATH)/loaders\
 	$(LOCAL_PATH)/os\
 	$(LOCAL_PATH)/os/android\
 	$(LOCAL_PATH)/renderers\
 	$(LOCAL_PATH)/things\
 	$(LOCAL_PATH)/filesystem\
-	$(LOCAL_PATH)/renderers/gl\
 	$(LOCAL_PATH)/renderers/gles\
 	$(LOCAL_PATH)/renderers/gles/egl\
 	$(LOCAL_PATH)/input\

+ 1 - 0
android/jni/ArchiveResourceArchive.cpp

@@ -0,0 +1 @@
+../../src/ArchiveResourceArchive.cpp

+ 1 - 0
android/jni/ArchiveResourceArchive.h

@@ -0,0 +1 @@
+../../src/ArchiveResourceArchive.h

+ 1 - 0
android/jni/Config.h.in

@@ -0,0 +1 @@
+../../src/Config.h.in

+ 0 - 1
android/jni/Data.h

@@ -1 +0,0 @@
-../../src/Data.h

+ 1 - 0
android/jni/FileResourceArchive.cpp

@@ -0,0 +1 @@
+../../src/FileResourceArchive.cpp

+ 1 - 0
android/jni/FileResourceArchive.h

@@ -0,0 +1 @@
+../../src/FileResourceArchive.h

+ 0 - 1
android/jni/FontManager.cpp

@@ -1 +0,0 @@
-../../src/FontManager.cpp

+ 0 - 1
android/jni/FontManager.h

@@ -1 +0,0 @@
-../../src/FontManager.h

+ 0 - 1
android/jni/ImageLoader.cpp

@@ -1 +0,0 @@
-../../src/ImageLoader.cpp

+ 0 - 1
android/jni/ImageLoader.h

@@ -1 +0,0 @@
-../../src/ImageLoader.h

+ 0 - 1
android/jni/IndexBuffer.h

@@ -1 +0,0 @@
-../../src/IndexBuffer.h

+ 1 - 0
android/jni/JSONParser.cpp

@@ -0,0 +1 @@
+../../src/JSONParser.cpp

+ 1 - 0
android/jni/JSONParser.h

@@ -0,0 +1 @@
+../../src/JSONParser.h

+ 0 - 1
android/jni/Material.cpp

@@ -1 +0,0 @@
-../../src/Material.cpp

+ 0 - 1
android/jni/Material.h

@@ -1 +0,0 @@
-../../src/Material.h

+ 0 - 1
android/jni/MaterialManager.cpp

@@ -1 +0,0 @@
-../../src/MaterialManager.cpp

+ 0 - 1
android/jni/MaterialManager.h

@@ -1 +0,0 @@
-../../src/MaterialManager.h

+ 1 - 0
android/jni/MaterialResource.cpp

@@ -0,0 +1 @@
+../../src/MaterialResource.cpp

+ 1 - 0
android/jni/MaterialResource.h

@@ -0,0 +1 @@
+../../src/MaterialResource.h

+ 0 - 1
android/jni/Mesh.cpp

@@ -1 +0,0 @@
-../../src/Mesh.cpp

+ 0 - 1
android/jni/Mesh.h

@@ -1 +0,0 @@
-../../src/Mesh.h

+ 0 - 1
android/jni/MeshChunk.cpp

@@ -1 +0,0 @@
-../../src/MeshChunk.cpp

+ 0 - 1
android/jni/MeshChunk.h

@@ -1 +0,0 @@
-../../src/MeshChunk.h

+ 0 - 1
android/jni/MeshLoader.h

@@ -1 +0,0 @@
-../../src/MeshLoader.h

+ 0 - 1
android/jni/MeshManager.cpp

@@ -1 +0,0 @@
-../../src/MeshManager.cpp

+ 0 - 1
android/jni/MeshManager.h

@@ -1 +0,0 @@
-../../src/MeshManager.h

+ 0 - 1
android/jni/OcclusionQuery.h

@@ -1 +0,0 @@
-../../src/OcclusionQuery.h

+ 0 - 1
android/jni/Renderer.cpp

@@ -1 +0,0 @@
-../../src/Renderer.cpp

+ 0 - 1
android/jni/Renderer.h

@@ -1 +0,0 @@
-../../src/Renderer.h

+ 1 - 0
android/jni/ResourceArchive.h

@@ -0,0 +1 @@
+../../src/ResourceArchive.h

+ 1 - 0
android/jni/ResourceLoader.cpp

@@ -0,0 +1 @@
+../../src/ResourceLoader.cpp

+ 1 - 0
android/jni/ResourceLoader.h

@@ -0,0 +1 @@
+../../src/ResourceLoader.h

+ 0 - 1
android/jni/SpriteAnimator.cpp

@@ -1 +0,0 @@
-../../src/SpriteAnimator.cpp

+ 0 - 1
android/jni/SpriteAnimator.h

@@ -1 +0,0 @@
-../../src/SpriteAnimator.h

+ 0 - 1
android/jni/TextRenderer.cpp

@@ -1 +0,0 @@
-../../src/TextRenderer.cpp

+ 0 - 1
android/jni/TextRenderer.h

@@ -1 +0,0 @@
-../../src/TextRenderer.h

+ 1 - 0
android/jni/TextResource.cpp

@@ -0,0 +1 @@
+../../src/TextResource.cpp

+ 1 - 0
android/jni/TextResource.h

@@ -0,0 +1 @@
+../../src/TextResource.h

+ 0 - 1
android/jni/Texture.h

@@ -1 +0,0 @@
-../../src/Texture.h

+ 0 - 1
android/jni/TextureManager.h

@@ -1 +0,0 @@
-../../src/TextureManager.h

+ 1 - 0
android/jni/TextureResource.cpp

@@ -0,0 +1 @@
+../../src/TextureResource.cpp

+ 1 - 0
android/jni/TextureResource.h

@@ -0,0 +1 @@
+../../src/TextureResource.h

+ 0 - 1
android/jni/VertexBuffer.h

@@ -1 +0,0 @@
-../../src/VertexBuffer.h

+ 0 - 1
android/jni/loaders

@@ -1 +0,0 @@
-../../src/loaders

+ 1 - 1
android/project.properties

@@ -11,4 +11,4 @@
 #proguard.config=${sdk.dir}/tools/proguard/proguard-android.txt:proguard-project.txt
 
 # Project target.
-target=Google Inc.:Google APIs:17
+target=android-17

+ 28 - 0
proj/sublime-text/crown.proj

@@ -0,0 +1,28 @@
+{
+	"folders":
+	[
+		{
+			"path": "/home/mikymod/Repositories/crown/"
+		}
+	],
+	"build_systems":
+	[
+		{
+			"cmd": ["make",	"crown"],
+			"name": "make"
+		},
+		{
+			"cmd": ["ndk-build", "crown"],
+			"name": "ndk"
+		},
+		{
+			"cmd": ["ant",	"debug"],
+			"name": "android"
+		}
+	],
+	"settings":
+	{
+		"tab_size": 4,
+		"auto_complete": true
+	}
+}

+ 140 - 0
proj/sublime-text/crown.sublime-workspace

@@ -0,0 +1,140 @@
+{
+	"auto_complete":
+	{
+		"selected_items":
+		[
+		]
+	},
+	"buffers":
+	[
+	],
+	"build_system": "make",
+	"command_palette":
+	{
+		"height": 0.0,
+		"selected_items":
+		[
+		],
+		"width": 0.0
+	},
+	"console":
+	{
+		"height": 0.0
+	},
+	"distraction_free":
+	{
+		"menu_visible": true,
+		"show_minimap": false,
+		"show_open_files": false,
+		"show_tabs": false,
+		"side_bar_visible": false,
+		"status_bar_visible": false
+	},
+	"file_history":
+	[
+	],
+	"find":
+	{
+		"height": 0.0
+	},
+	"find_in_files":
+	{
+		"height": 0.0,
+		"where_history":
+		[
+		]
+	},
+	"find_state":
+	{
+		"case_sensitive": false,
+		"find_history":
+		[
+		],
+		"highlight": true,
+		"in_selection": false,
+		"preserve_case": false,
+		"regex": false,
+		"replace_history":
+		[
+		],
+		"reverse": false,
+		"show_context": true,
+		"use_buffer2": true,
+		"whole_word": false,
+		"wrap": true
+	},
+	"groups":
+	[
+		{
+			"sheets":
+			[
+			]
+		}
+	],
+	"incremental_find":
+	{
+		"height": 0.0
+	},
+	"input":
+	{
+		"height": 0.0
+	},
+	"layout":
+	{
+		"cells":
+		[
+			[
+				0,
+				0,
+				1,
+				1
+			]
+		],
+		"cols":
+		[
+			0.0,
+			1.0
+		],
+		"rows":
+		[
+			0.0,
+			1.0
+		]
+	},
+	"menu_visible": true,
+	"output.exec":
+	{
+		"height": 100.0
+	},
+	"replace":
+	{
+		"height": 0.0
+	},
+	"save_all_on_build": true,
+	"select_file":
+	{
+		"height": 0.0,
+		"selected_items":
+		[
+		],
+		"width": 0.0
+	},
+	"select_project":
+	{
+		"height": 500.0,
+		"selected_items":
+		[
+			[
+				"",
+				"/home/mikymod/Repositories/crown/proj/sublime-text/crown.proj"
+			]
+		],
+		"width": 380.0
+	},
+	"show_minimap": true,
+	"show_open_files": false,
+	"show_tabs": true,
+	"side_bar_visible": true,
+	"side_bar_width": 150.0,
+	"status_bar_visible": true
+}

+ 6 - 6
samples/android/triangle.cpp

@@ -51,10 +51,10 @@ public:
 
 	void draw_triangle()
 	{
-		GetDevice()->GetRenderer()->SetClearColor(Color4::LIGHTBLUE);
+		GetDevice()->GetRenderer()->set_clear_color(Color4::LIGHTBLUE);
 
-		GetDevice()->GetRenderer()->SetMatrix(MT_VIEW, Mat4::IDENTITY);
-		GetDevice()->GetRenderer()->SetMatrix(MT_MODEL, Mat4::IDENTITY);
+		GetDevice()->GetRenderer()->set_matrix(MT_VIEW, Mat4::IDENTITY);
+		GetDevice()->GetRenderer()->set_matrix(MT_MODEL, Mat4::IDENTITY);
 
 		cam->Render();
 
@@ -62,7 +62,7 @@ public:
 										1.0f, -1.0f, -2.0f,
 										0.0f, 1.0f, -2.0f};
 
-		GetDevice()->GetRenderer()->SetMatrix(MT_MODEL, Mat4::IDENTITY);
+		GetDevice()->GetRenderer()->set_matrix(MT_MODEL, Mat4::IDENTITY);
 
 		glEnableClientState(GL_VERTEX_ARRAY);
 		glVertexPointer(3, GL_FLOAT, 0, vertices);
@@ -80,9 +80,9 @@ public:
 
 		get_input_manager()->event_loop();
 
-		GetDevice()->GetRenderer()->_BeginFrame();
+		GetDevice()->GetRenderer()->begin_frame();
 		draw_triangle();
-		GetDevice()->GetRenderer()->_EndFrame();
+		GetDevice()->GetRenderer()->end_frame();
 
 		os::swap_buffers();
 	}

+ 14 - 5
samples/json/json.cpp

@@ -1,11 +1,14 @@
 #include <stdio.h>
+#include <string.h>
 #include "JSONParser.h"
 
 using namespace crown;
 
 int main(int argc, char** argv)
 {
-	const char* src = "\"test\" : {\"string\" : \"dio\", \"number\" : 33}";
+	const char* src = "\"params1\": [1,2,3,4], \"params2\": [5,6,7,8]";
+
+	char dst[10][256];
 
 	JSONParser* parser = new JSONParser();
 	json_error error;
@@ -17,10 +20,16 @@ int main(int argc, char** argv)
 
 	for (int i = 0; i < parser->get_tokens_number(); i++)
 	{
-		for (int j = tokens[i].m_start; j < tokens[i].m_end; j++)
-		{
-			printf("%c", src[j]);
-		}
+		strncpy((char*)dst[i], &src[tokens[i].m_start], tokens[i].m_size);
+		dst[i][tokens[i].m_size] = '\0';
+
+		printf("token[%d]\n", i);
+		printf("type: %d\n", tokens[i].m_type);
+		printf("size: %d\n", tokens[i].m_size);
+		printf("start: %d\n",tokens[i].m_start);
+		printf("end: %d\n",tokens[i].m_end);
+		printf("parent: %d\n",tokens[i].m_parent);
+		printf("string: %s\n", dst[i]);
 		printf("\n");
 	}
 

+ 5 - 5
src/Device.cpp

@@ -35,7 +35,7 @@ OTHER DEALINGS IN THE SOFTWARE.
 #include "Args.h"
 #include <cstdlib>
 
-#include "renderers/gl/GLRenderer.h"
+// #include "renderers/gl/GLRenderer.h"
 #include "renderers/gles/GLESRenderer.h"
 
 namespace crown
@@ -95,11 +95,11 @@ bool Device::Init(int argc, char** argv)
 	if (!mRenderer)
 	{
 		// FIXME FIXME FIXME
-		#ifdef CROWN_BUILD_OPENGL
-			mRenderer = new GLRenderer();
-		#elif defined CROWN_BUILD_OPENGLES
+		// #ifdef CROWN_BUILD_OPENGL
+		// 	mRenderer = new GLRenderer();
+		// #elif defined CROWN_BUILD_OPENGLES
 			mRenderer = new GLESRenderer();
-		#endif
+		// #endif
 	}
 	Log::D("Renderer created.");
 

+ 15 - 23
src/JSONParser.cpp

@@ -1,19 +1,8 @@
 #include "JSONParser.h"
-#include "OS.h"
 
 namespace crown
 {
 
-void JSONToken::print()
-{
-	os::printf("Type:\t%d\n",m_type);
-	os::printf("Start:\t%d\n",m_start);
-	os::printf("End:\t%d\n",m_end);
-	os::printf("Parent:\t%d\n",m_parent);
-	os::printf("Size:\t%d\n",m_size);
-	os::printf("\n");
-}
-
 //--------------------------------------------------------------------------
 JSONParser::JSONParser(size_t size)
 {
@@ -55,6 +44,7 @@ JSONParser::parse(const char* src)
 	while(src[m_pos] != '\0')
 	{
 		json_type type;
+
 		char c;
 
 		c = src[m_pos];
@@ -89,7 +79,6 @@ JSONParser::parse(const char* src)
 
 				if (m_next_token < 1)
 				{
-					os::printf("1\n");
 					return JSON_INV_CHAR;
 				}
 
@@ -101,7 +90,6 @@ JSONParser::parse(const char* src)
 					{
 						if (token->m_type != type)
 						{
-							os::printf("%d\t%d\n", token->m_type, type);
 							return JSON_INV_CHAR;
 						}
 						token->m_end = m_pos + 1;
@@ -117,6 +105,7 @@ JSONParser::parse(const char* src)
 					token = &m_tokens[token->m_parent];
 				}
 
+				token->m_size = token->m_end - token->m_start;
 				break;
 			}
 			case '\"':
@@ -163,6 +152,14 @@ JSONParser::parse(const char* src)
 		m_pos++;
 	}
 
+	for (int i = m_next_token - 1; i >= 0; i--)
+	{
+		if (m_tokens[i].m_start != -1 && m_tokens[i].m_end == -1)
+		{
+			return JSON_INV_PART;
+		}
+	}
+
 	return JSON_SUCCESS;
 }
 
@@ -221,7 +218,6 @@ JSONParser::parse_string(const char* src)
                 default:
                	{
                 	m_pos = start;
-					os::printf("3\n");
                 	return JSON_INV_CHAR;
                 	break;
                 }
@@ -247,14 +243,11 @@ JSONParser::parse_primitive(const char* src)
 
 		switch (c)
 		{
-			case ':' :
-			case '\t': 
-			case '\r':
-			case '\n': 
-			case ' ' :
-			case ',' : 
-			case ']' : 
-			case '}' :
+
+			case ' ':
+			case ',': 
+			case '}':
+			case ']':
 			{
 				token = allocate_token();
 				if (token == NULL)
@@ -275,7 +268,6 @@ JSONParser::parse_primitive(const char* src)
 		if (c < 32 || c >= 127)
 		{
 			m_pos = start;
-			os::printf("4\n");
 			return JSON_INV_CHAR;
 		}
 

+ 12 - 1
src/JSONParser.h

@@ -1,6 +1,8 @@
 #pragma once
 
 #include "Types.h"
+#include "OS.h"
+
 
 namespace crown
 {
@@ -30,7 +32,16 @@ struct JSONToken
 	size_t 		m_size;
 	int32_t 	m_parent;
 
-	void print();
+	inline void print()
+	{
+		os::printf("Type:\t%d\n",m_type);
+		os::printf("Start:\t%d\n",m_start);
+		os::printf("End:\t%d\n",m_end);
+		os::printf("Parent:\t%d\n",m_parent);
+		os::printf("Size:\t%d\n",m_size);
+		os::printf("\n");		
+	}
+
 };
 
 class JSONParser

+ 87 - 19
src/os/android/AndroidOS.cpp

@@ -33,6 +33,7 @@ OTHER DEALINGS IN THE SOFTWARE.
 #include <sys/time.h>
 #include <time.h>
 #include <android/asset_manager_jni.h>
+#include <pthread.h>
 
 #include "OS.h"
 #include "AndroidOS.h"
@@ -152,7 +153,7 @@ const char* get_cwd()
 	static char cwdBuf[MAX_PATH_LENGTH];
 	if (getcwd(cwdBuf, MAX_PATH_LENGTH) == NULL)
 	{
-		return Str::EMPTY;
+		return string::EMPTY;
 	}
 
 	return cwdBuf;
@@ -166,7 +167,7 @@ const char* get_home()
 
 	if (envHome == NULL)
 	{
-		return Str::EMPTY;
+		return string::EMPTY;
 	}
 
 	return envHome;
@@ -180,34 +181,34 @@ const char* get_env(const char* env)
 
 	if (envDevel == NULL)
 	{
-		return Str::EMPTY;
+		return string::EMPTY;
 	}
 
 	return envDevel;
 }
 
 //-----------------------------------------------------------------------------
-bool ls(const char* path, List<Str>& fileList)
-{
-	DIR *dir;
-	struct dirent *ent;
+// bool ls(const char* path, List<Str>& fileList)
+// {
+// 	DIR *dir;
+// 	struct dirent *ent;
 
-	dir = opendir(path);
+// 	dir = opendir(path);
 
-	if (dir == NULL)
-	{
-		return false;
-	}
+// 	if (dir == NULL)
+// 	{
+// 		return false;
+// 	}
 
-	while ((ent = readdir (dir)) != NULL)
-	{
-		fileList.push_back(Str(ent->d_name));
-	}
+// 	while ((ent = readdir (dir)) != NULL)
+// 	{
+// 		fileList.push_back(Str(ent->d_name));
+// 	}
 
-	closedir (dir);
+// 	closedir (dir);
 
-	return true;
-}
+// 	return true;
+// }
 
 //-----------------------------------------------------------------------------
 void init_os()
@@ -265,6 +266,73 @@ void swap_buffers()
 	// not necessary
 }
 
+//-----------------------------------------------------------------------------
+void thread_create(ThreadFunction f, void* params, OSThread& thread, const char* name)
+{
+	OSThread tid;
+	tid.name = name;
+
+	// Make thread joinable
+	pthread_attr_t attr;
+	pthread_attr_init(&attr);
+	pthread_attr_setdetachstate(&attr, PTHREAD_CREATE_JOINABLE);
+
+	// Create thread
+	int rc = pthread_create(&tid.thread, &attr, f, (void*)params);
+
+	if (rc != 0)
+	{
+		os::printf("OS: ERROR: Unable to create the thread '%s' Error code: %d\n", name, rc);
+		exit(-1);
+	}
+
+	// Free memory
+	pthread_attr_destroy(&attr);
+
+	thread = tid;
+}
+
+//-----------------------------------------------------------------------------
+void thread_join(OSThread thread)
+{
+	pthread_join(thread.thread, NULL);
+}
+
+//-----------------------------------------------------------------------------
+void thread_detach(OSThread thread)
+{
+	pthread_detach(thread.thread);
+}
+
+//-----------------------------------------------------------------------------
+void mutex_create(OSMutex& mutex)
+{
+	OSMutex mut;
+
+	pthread_mutex_init(&mut.mutex, NULL);
+
+	mutex = mut;
+}
+
+//-----------------------------------------------------------------------------
+void mutex_destroy(OSMutex mutex)
+{
+	pthread_mutex_destroy(&mutex.mutex);
+}
+
+//-----------------------------------------------------------------------------
+void mutex_lock(OSMutex mutex)
+{
+	pthread_mutex_lock(&mutex.mutex);
+}
+
+//-----------------------------------------------------------------------------
+void mutex_unlock(OSMutex mutex)
+{
+	pthread_mutex_unlock(&mutex.mutex);
+}
+
+
 //-----------------------------------------------------------------------------
 JNIEXPORT void JNICALL Java_crown_android_CrownLib_initAssetManager(JNIEnv* env, jobject obj, jobject assetManager)
 {

+ 0 - 1
tools/CMakeLists.txt

@@ -34,5 +34,4 @@ target_link_libraries(lua-compiler crown)
 
 target_link_libraries(resource-linker crown)
 
-add_subdirectory(gtk)
 

+ 38 - 35
tools/resource-compilers/lua-compiler.cpp

@@ -4,6 +4,7 @@
 #include <sys/wait.h>
 #include <unistd.h>
 
+#include "lua.hpp"
 #include "Crown.h"
 
 using namespace crown;
@@ -12,7 +13,6 @@ const char* root_path = NULL;
 const char* resource_in = NULL;
 const char* resource_out = NULL;
 
-
 void 	parse_command_line(int argc, char** argv);
 void 	print_help_message(const char* program_name);
 void	compile_script(char* tmp_out);
@@ -20,56 +20,59 @@ void	compile_script(char* tmp_out);
 /// Lua scripts compiler
 int main(int argc, char** argv)
 {
-	parse_command_line(argc, argv);
+	// parse_command_line(argc, argv);
 	
-	// FIXME: validate input
+	// // FIXME: validate input
 
-	Filesystem fs_root(root_path);
+	// Filesystem fs_root(root_path);
 	
-	if (!fs_root.exists(resource_in))
-	{
-		printf("%s: ERROR: %s does not exist. Aborting.\n", argv[0], resource_in);
-		return -1;
-	}
-
-	char resource_basename[256];
-	char resource_extension[256];
+	// if (!fs_root.exists(resource_in))
+	// {
+	// 	printf("%s: ERROR: %s does not exist. Aborting.\n", argv[0], resource_in);
+	// 	return -1;
+	// }
+
+	// char resource_basename[256];
+	// char resource_extension[256];
 	
-	path::filename_without_extension(resource_in, resource_basename, 256);
-	path::extension(resource_in, resource_extension, 256);
+	// path::filename_without_extension(resource_in, resource_basename, 256);
+	// path::extension(resource_in, resource_extension, 256);
 	
-	uint32_t resource_basename_hash = hash::fnv1a_32(resource_basename, string::strlen(resource_basename));
-	uint32_t resource_extension_hash = hash::fnv1a_32(resource_extension, string::strlen(resource_extension));
+	// uint32_t resource_basename_hash = hash::fnv1a_32(resource_basename, string::strlen(resource_basename));
+	// uint32_t resource_extension_hash = hash::fnv1a_32(resource_extension, string::strlen(resource_extension));
 
-	char tmp_file[256];
-	compile_script(tmp_file);
+	// char tmp_file[256];
+	// compile_script(tmp_file);
 
-	FileStream* src_file = (FileStream*)fs_root.open(tmp_file, SOM_READ);
+	// FileStream* src_file = (FileStream*)fs_root.open(tmp_file, SOM_READ);
 	
-	size_t src_file_size = src_file->size();
+	// size_t src_file_size = src_file->size();
 	
-	ArchiveEntry archive_entry;
-	archive_entry.name = resource_basename_hash;
-	archive_entry.type = resource_extension_hash;
-	archive_entry.offset = sizeof (ArchiveEntry);
-	archive_entry.size = src_file_size + sizeof(uint32_t);
+	// ArchiveEntry archive_entry;
+	// archive_entry.name = resource_basename_hash;
+	// archive_entry.type = resource_extension_hash;
+	// archive_entry.offset = sizeof (ArchiveEntry);
+	// archive_entry.size = src_file_size + sizeof(uint32_t);
 	
-	void* buffer = new uint8_t[src_file_size];
+	// void* buffer = new uint8_t[src_file_size];
 	
-	src_file->read(buffer, src_file_size);
+	// src_file->read(buffer, src_file_size);
 	
-	fs_root.close(src_file);
+	// fs_root.close(src_file);
 	
-	FileStream* dest_file = (FileStream*)fs_root.open(resource_out, SOM_WRITE);
+	// FileStream* dest_file = (FileStream*)fs_root.open(resource_out, SOM_WRITE);
 
-	dest_file->write(&archive_entry, sizeof(ArchiveEntry));
-	dest_file->write(&src_file_size, sizeof(uint32_t));
-	dest_file->write(buffer, src_file_size);
+	// dest_file->write(&archive_entry, sizeof(ArchiveEntry));
+	// dest_file->write(&src_file_size, sizeof(uint32_t));
+	// dest_file->write(buffer, src_file_size);
 
-	fs_root.delete_file(tmp_file);
-	fs_root.close(dest_file);	
+	// fs_root.delete_file(tmp_file);
+	// fs_root.close(dest_file);	
 
-	printf("Resource compilation completed: %s\n", resource_out);
+	// printf("Resource compilation completed: %s\n", resource_out);
+	lua_State *L;
+	 // = lua_open();
+ //  	lua_close(L);
 
 	return 0;
 }