80 }
81
82 StringToFileSystemString::~StringToFileSystemString() {
83 if (FRelease == true) {
84 delete[] FData;
85 }
86 }
87
88 StringToFileSystemString::operator TCHAR* () {
89 return FData;
90 }
91
92 MacPlatform::MacPlatform(void) : Platform(), PosixPlatform() {
93 }
94
95 MacPlatform::~MacPlatform(void) {
96 }
97
98 TString MacPlatform::GetPackageAppDirectory() {
99 return FilePath::IncludeTrailingSeparator(
100 GetPackageRootDirectory()) + _T("Java");
101 }
102
103 TString MacPlatform::GetPackageLauncherDirectory() {
104 return FilePath::IncludeTrailingSeparator(
105 GetPackageRootDirectory()) + _T("MacOS");
106 }
107
108 TString MacPlatform::GetPackageRuntimeBinDirectory() {
109 return FilePath::IncludeTrailingSeparator(GetPackageRootDirectory()) +
110 _T("runtime/Contents/Home/bin");
111 }
112
113 bool MacPlatform::UsePListForConfigFile() {
114 return FilePath::FileExists(GetConfigFileName()) == false;
115 }
116
117 void MacPlatform::ShowMessage(TString Title, TString Description) {
118 NSString *ltitle = StringToNSString(Title);
119 NSString *ldescription = StringToNSString(Description);
120
181 if (result != NULL) {
182 if (CFStringGetCString(StringRef, result, maxSize,
183 kCFStringEncodingUTF8) == true) {
184 release = true;
185 } else {
186 delete[] result;
187 result = NULL;
188 }
189 }
190 }
191 }
192 @finally
193 {
194 CFRelease(StringRef);
195 }
196 }
197
198 return result;
199 }
200
201 void MacPlatform::SetCurrentDirectory(TString Value) {
202 chdir(PlatformString(Value).toPlatformString());
203 }
204
205 TString MacPlatform::GetPackageRootDirectory() {
206 NSBundle *mainBundle = [NSBundle mainBundle];
207 NSString *mainBundlePath = [mainBundle bundlePath];
208 NSString *contentsPath =
209 [mainBundlePath stringByAppendingString : @"/Contents"];
210 TString result = [contentsPath UTF8String];
211 return result;
212 }
213
214 TString MacPlatform::GetAppDataDirectory() {
215 TString result;
216 NSArray *paths = NSSearchPathForDirectoriesInDomains(
217 NSApplicationSupportDirectory, NSUserDomainMask, YES);
218 NSString *applicationSupportDirectory = [paths firstObject];
219 result = [applicationSupportDirectory UTF8String];
220 return result;
221 }
222
223 TString MacPlatform::GetBundledJavaLibraryFileName(TString RuntimePath) {
224 TString result;
451
452 TPlatformNumber MacPlatform::GetMemorySize() {
453 unsigned long long memory = [[NSProcessInfo processInfo] physicalMemory];
454
455 // Convert from bytes to megabytes.
456 TPlatformNumber result = memory / 1048576;
457
458 return result;
459 }
460
461 std::map<TString, TString> MacPlatform::GetKeys() {
462 std::map<TString, TString> keys;
463
464 if (UsePListForConfigFile() == false) {
465 return Platform::GetKeys();
466 } else {
467 keys.insert(std::map<TString, TString>::value_type(CONFIG_VERSION,
468 _T("app.version")));
469 keys.insert(std::map<TString, TString>::value_type(CONFIG_MAINJAR_KEY,
470 _T("JavaMainJarName")));
471 keys.insert(std::map<TString, TString>::value_type(CONFIG_MAINMODULE_KEY,
472 _T("JavaMainModuleName")));
473 keys.insert(std::map<TString, TString>::value_type(
474 CONFIG_MAINCLASSNAME_KEY, _T("JavaMainClassName")));
475 keys.insert(std::map<TString, TString>::value_type(
476 CONFIG_CLASSPATH_KEY, _T("JavaAppClasspath")));
477 keys.insert(std::map<TString, TString>::value_type(APP_NAME_KEY,
478 _T("CFBundleName")));
479 keys.insert(std::map<TString, TString>::value_type(JAVA_RUNTIME_KEY,
480 _T("JavaRuntime")));
481 keys.insert(std::map<TString, TString>::value_type(JPACKAGE_APP_DATA_DIR,
482 _T("CFBundleIdentifier")));
483
484 keys.insert(std::map<TString, TString>::value_type(CONFIG_SPLASH_KEY,
485 _T("app.splash")));
486 keys.insert(std::map<TString, TString>::value_type(CONFIG_APP_MEMORY,
487 _T("app.memory")));
488 keys.insert(std::map<TString, TString>::value_type(CONFIG_APP_DEBUG,
489 _T("app.debug")));
490 keys.insert(std::map<TString, TString>::value_type(
491 CONFIG_APPLICATION_INSTANCE, _T("app.application.instance")));
492
493 keys.insert(std::map<TString, TString>::value_type(
494 CONFIG_SECTION_APPLICATION, _T("Application")));
495 keys.insert(std::map<TString, TString>::value_type(
496 CONFIG_SECTION_JAVAOPTIONS, _T("JavaOptions")));
497 keys.insert(std::map<TString, TString>::value_type(
498 CONFIG_SECTION_APPCDSJAVAOPTIONS, _T("AppCDSJavaOptions")));
499 keys.insert(std::map<TString, TString>::value_type(
500 CONFIG_SECTION_APPCDSGENERATECACHEJAVAOPTIONS,
501 _T("AppCDSGenerateCacheJavaOptions")));
|
80 }
81
82 StringToFileSystemString::~StringToFileSystemString() {
83 if (FRelease == true) {
84 delete[] FData;
85 }
86 }
87
88 StringToFileSystemString::operator TCHAR* () {
89 return FData;
90 }
91
92 MacPlatform::MacPlatform(void) : Platform(), PosixPlatform() {
93 }
94
95 MacPlatform::~MacPlatform(void) {
96 }
97
98 TString MacPlatform::GetPackageAppDirectory() {
99 return FilePath::IncludeTrailingSeparator(
100 GetPackageRootDirectory()) + _T("app");
101 }
102
103 TString MacPlatform::GetPackageLauncherDirectory() {
104 return FilePath::IncludeTrailingSeparator(
105 GetPackageRootDirectory()) + _T("MacOS");
106 }
107
108 TString MacPlatform::GetPackageRuntimeBinDirectory() {
109 return FilePath::IncludeTrailingSeparator(GetPackageRootDirectory()) +
110 _T("runtime/Contents/Home/bin");
111 }
112
113 bool MacPlatform::UsePListForConfigFile() {
114 return FilePath::FileExists(GetConfigFileName()) == false;
115 }
116
117 void MacPlatform::ShowMessage(TString Title, TString Description) {
118 NSString *ltitle = StringToNSString(Title);
119 NSString *ldescription = StringToNSString(Description);
120
181 if (result != NULL) {
182 if (CFStringGetCString(StringRef, result, maxSize,
183 kCFStringEncodingUTF8) == true) {
184 release = true;
185 } else {
186 delete[] result;
187 result = NULL;
188 }
189 }
190 }
191 }
192 @finally
193 {
194 CFRelease(StringRef);
195 }
196 }
197
198 return result;
199 }
200
201 TString MacPlatform::GetPackageRootDirectory() {
202 NSBundle *mainBundle = [NSBundle mainBundle];
203 NSString *mainBundlePath = [mainBundle bundlePath];
204 NSString *contentsPath =
205 [mainBundlePath stringByAppendingString : @"/Contents"];
206 TString result = [contentsPath UTF8String];
207 return result;
208 }
209
210 TString MacPlatform::GetAppDataDirectory() {
211 TString result;
212 NSArray *paths = NSSearchPathForDirectoriesInDomains(
213 NSApplicationSupportDirectory, NSUserDomainMask, YES);
214 NSString *applicationSupportDirectory = [paths firstObject];
215 result = [applicationSupportDirectory UTF8String];
216 return result;
217 }
218
219 TString MacPlatform::GetBundledJavaLibraryFileName(TString RuntimePath) {
220 TString result;
447
448 TPlatformNumber MacPlatform::GetMemorySize() {
449 unsigned long long memory = [[NSProcessInfo processInfo] physicalMemory];
450
451 // Convert from bytes to megabytes.
452 TPlatformNumber result = memory / 1048576;
453
454 return result;
455 }
456
457 std::map<TString, TString> MacPlatform::GetKeys() {
458 std::map<TString, TString> keys;
459
460 if (UsePListForConfigFile() == false) {
461 return Platform::GetKeys();
462 } else {
463 keys.insert(std::map<TString, TString>::value_type(CONFIG_VERSION,
464 _T("app.version")));
465 keys.insert(std::map<TString, TString>::value_type(CONFIG_MAINJAR_KEY,
466 _T("JavaMainJarName")));
467 keys.insert(std::map<TString,
468 TString>::value_type(CONFIG_MAINMODULE_KEY,
469 _T("JavaMainModuleName")));
470 keys.insert(std::map<TString, TString>::value_type(
471 CONFIG_MAINCLASSNAME_KEY, _T("JavaMainClassName")));
472 keys.insert(std::map<TString, TString>::value_type(
473 CONFIG_CLASSPATH_KEY, _T("JavaAppClasspath")));
474 keys.insert(std::map<TString, TString>::value_type(APP_NAME_KEY,
475 _T("CFBundleName")));
476 keys.insert(std::map<TString, TString>::value_type(JAVA_RUNTIME_KEY,
477 _T("JavaRuntime")));
478 keys.insert(std::map<TString,
479 TString>::value_type(JPACKAGE_APP_DATA_DIR,
480 _T("CFBundleIdentifier")));
481
482 keys.insert(std::map<TString, TString>::value_type(CONFIG_SPLASH_KEY,
483 _T("app.splash")));
484 keys.insert(std::map<TString, TString>::value_type(CONFIG_APP_MEMORY,
485 _T("app.memory")));
486 keys.insert(std::map<TString, TString>::value_type(CONFIG_APP_DEBUG,
487 _T("app.debug")));
488 keys.insert(std::map<TString, TString>::value_type(
489 CONFIG_APPLICATION_INSTANCE, _T("app.application.instance")));
490
491 keys.insert(std::map<TString, TString>::value_type(
492 CONFIG_SECTION_APPLICATION, _T("Application")));
493 keys.insert(std::map<TString, TString>::value_type(
494 CONFIG_SECTION_JAVAOPTIONS, _T("JavaOptions")));
495 keys.insert(std::map<TString, TString>::value_type(
496 CONFIG_SECTION_APPCDSJAVAOPTIONS, _T("AppCDSJavaOptions")));
497 keys.insert(std::map<TString, TString>::value_type(
498 CONFIG_SECTION_APPCDSGENERATECACHEJAVAOPTIONS,
499 _T("AppCDSGenerateCacheJavaOptions")));
|