@@ -199,9 +199,19 @@ private void writeMockJavaClasses(Path sourceDir) throws Exception {
199199 // java.lang.StringBuilder
200200 Files .write (lang .resolve ("StringBuilder.java" ), ("package java.lang;\n " +
201201 "public class StringBuilder {\n " +
202+ " char[] value = new char[16];\n " +
203+ " int count = 0;\n " +
202204 " public StringBuilder() {}\n " +
203205 " public StringBuilder(String str) {}\n " +
204206 " public StringBuilder(int cap) {}\n " +
207+ " void appendNull() {\n " +
208+ " append(\" null\" );\n " +
209+ " }\n " +
210+ " void enlargeBuffer(int newCap) {\n " +
211+ " if (newCap > value.length) {\n " +
212+ " value = new char[newCap];\n " +
213+ " }\n " +
214+ " }\n " +
205215 " public StringBuilder append(String s) { return this; }\n " +
206216 " public StringBuilder append(Object o) { return this; }\n " +
207217 " public StringBuilder append(int i) { return this; }\n " +
@@ -632,6 +642,8 @@ static void replaceLibraryWithExecutableTarget(Path cmakeLists, String sourceDir
632642 String globWithObjc = String .format ("file(GLOB TRANSLATOR_SOURCES \" %s/*.c\" \" %s/*.m\" )" , sourceDirName , sourceDirName );
633643 String globCOnly = String .format ("file(GLOB TRANSLATOR_SOURCES \" %s/*.c\" )" , sourceDirName );
634644 content = content .replace (globWithObjc , globCOnly );
645+ content = content .replaceAll ("LANGUAGES\\ s+C\\ s+OBJC" , "LANGUAGES C" );
646+ content = content .replaceAll ("(?m)^enable_language\\ (OBJC OPTIONAL\\ )\\ s*$\\ n?" , "" );
635647 String replacement = content .replace (
636648 "add_library(${PROJECT_NAME} ${TRANSLATOR_SOURCES} ${TRANSLATOR_HEADERS})" ,
637649 "add_executable(${PROJECT_NAME} ${TRANSLATOR_SOURCES} ${TRANSLATOR_HEADERS})\n target_link_libraries(${PROJECT_NAME} m pthread)"
@@ -884,27 +896,87 @@ private void patchHashMapNativeSupport(Path srcRoot) throws java.io.IOException
884896 }
885897
886898 Path entryHeader = srcRoot .resolve ("java_util_HashMap_Entry.h" );
887- if (!Files .exists (entryHeader )) {
888- String entryContent = "#ifndef __JAVA_UTIL_HASHMAP_ENTRY__\n " +
889- "#define __JAVA_UTIL_HASHMAP_ENTRY__\n \n " +
899+ String entryContent = "#ifndef __JAVA_UTIL_HASHMAP_ENTRY__\n " +
900+ "#define __JAVA_UTIL_HASHMAP_ENTRY__\n \n " +
901+ "#include \" cn1_globals.h\" \n " +
902+ "#include \" java_lang_Object.h\" \n \n " +
903+ "extern struct clazz class__java_util_HashMap_Entry;\n \n " +
904+ "struct obj__java_util_HashMap_Entry {\n " +
905+ " DEBUG_GC_VARIABLES\n " +
906+ " struct clazz *__codenameOneParentClsReference;\n " +
907+ " int __codenameOneReferenceCount;\n " +
908+ " void* __codenameOneThreadData;\n " +
909+ " int __codenameOneGcMark;\n " +
910+ " void* __ownerThread;\n " +
911+ " int __heapPosition;\n " +
912+ " JAVA_OBJECT java_util_MapEntry_key;\n " +
913+ " JAVA_OBJECT java_util_MapEntry_value;\n " +
914+ " JAVA_INT java_util_HashMap_Entry_origKeyHash;\n " +
915+ " JAVA_OBJECT java_util_HashMap_Entry_next;\n " +
916+ "};\n \n " +
917+ "#endif\n " ;
918+ Files .write (entryHeader , entryContent .getBytes (StandardCharsets .UTF_8 ));
919+
920+ Path dateHeader = srcRoot .resolve ("java_util_Date.h" );
921+ if (!Files .exists (dateHeader )) {
922+ String dateContent = "#ifndef __JAVA_UTIL_DATE__\n " +
923+ "#define __JAVA_UTIL_DATE__\n \n " +
924+ "#include \" cn1_globals.h\" \n " +
925+ "#include \" java_lang_Object.h\" \n \n " +
926+ "extern struct clazz class__java_util_Date;\n \n " +
927+ "struct obj__java_util_Date {\n " +
928+ " DEBUG_GC_VARIABLES\n " +
929+ " struct clazz *__codenameOneParentClsReference;\n " +
930+ " int __codenameOneReferenceCount;\n " +
931+ " void* __codenameOneThreadData;\n " +
932+ " int __codenameOneGcMark;\n " +
933+ " void* __ownerThread;\n " +
934+ " int __heapPosition;\n " +
935+ " JAVA_LONG java_util_Date_date;\n " +
936+ "};\n \n " +
937+ "#endif\n " ;
938+ Files .write (dateHeader , dateContent .getBytes (StandardCharsets .UTF_8 ));
939+ }
940+
941+ Path dateFormatHeader = srcRoot .resolve ("java_text_DateFormat.h" );
942+ if (!Files .exists (dateFormatHeader )) {
943+ String dateFormatContent = "#ifndef __JAVA_TEXT_DATEFORMAT__\n " +
944+ "#define __JAVA_TEXT_DATEFORMAT__\n \n " +
945+ "#include \" cn1_globals.h\" \n " +
946+ "#include \" java_lang_Object.h\" \n \n " +
947+ "extern struct clazz class__java_text_DateFormat;\n \n " +
948+ "struct obj__java_text_DateFormat {\n " +
949+ " DEBUG_GC_VARIABLES\n " +
950+ " struct clazz *__codenameOneParentClsReference;\n " +
951+ " int __codenameOneReferenceCount;\n " +
952+ " void* __codenameOneThreadData;\n " +
953+ " int __codenameOneGcMark;\n " +
954+ " void* __ownerThread;\n " +
955+ " int __heapPosition;\n " +
956+ " JAVA_INT java_text_DateFormat_dateStyle;\n " +
957+ "};\n \n " +
958+ "#endif\n " ;
959+ Files .write (dateFormatHeader , dateFormatContent .getBytes (StandardCharsets .UTF_8 ));
960+ }
961+
962+ Path stringToRealHeader = srcRoot .resolve ("java_lang_StringToReal.h" );
963+ if (!Files .exists (stringToRealHeader )) {
964+ String strContent = "#ifndef __JAVA_LANG_STRINGTOREAL__\n " +
965+ "#define __JAVA_LANG_STRINGTOREAL__\n \n " +
890966 "#include \" cn1_globals.h\" \n " +
891967 "#include \" java_lang_Object.h\" \n \n " +
892- "extern struct clazz class__java_util_HashMap_Entry ;\n \n " +
893- "struct obj__java_util_HashMap_Entry {\n " +
968+ "extern struct clazz class__java_lang_StringToReal ;\n \n " +
969+ "struct obj__java_lang_StringToReal {\n " +
894970 " DEBUG_GC_VARIABLES\n " +
895971 " struct clazz *__codenameOneParentClsReference;\n " +
896972 " int __codenameOneReferenceCount;\n " +
897973 " void* __codenameOneThreadData;\n " +
898974 " int __codenameOneGcMark;\n " +
899975 " void* __ownerThread;\n " +
900976 " int __heapPosition;\n " +
901- " JAVA_OBJECT java_util_MapEntry_key;\n " +
902- " JAVA_OBJECT java_util_MapEntry_value;\n " +
903- " JAVA_INT java_util_HashMap_Entry_origKeyHash;\n " +
904- " JAVA_OBJECT java_util_HashMap_Entry_next;\n " +
905977 "};\n \n " +
906978 "#endif\n " ;
907- Files .write (entryHeader , entryContent .getBytes (StandardCharsets .UTF_8 ));
979+ Files .write (stringToRealHeader , strContent .getBytes (StandardCharsets .UTF_8 ));
908980 }
909981 }
910982}
0 commit comments