< prev index next >
src/jdk.jpackage/share/native/libapplauncher/Platform.h
Print this page
*** 24,121 ****
*/
#ifndef PLATFORM_H
#define PLATFORM_H
#include "OrderedMap.h"
#include <stdio.h>
#include <stdlib.h>
#include <memory.h>
#include <string>
#include <map>
#include <list>
#include <vector>
!
! #ifdef WIN32
! #ifndef WINDOWS
! #define WINDOWS
! #endif
! #endif //WIN32
!
! #ifdef __APPLE__
! #define MAC
! #define POSIX
! #endif //__APPLE__
!
!
! #ifdef __linux
! #ifndef LINUX
! #define LINUX
! #endif
! #endif //__linux
!
! #ifdef LINUX
! #define POSIX
! #endif //LINUX
!
!
!
! #ifdef WINDOWS
! // Define Windows compatibility requirements XP or later
! #define WINVER 0x0600
! #define _WIN32_WINNT 0x0600
!
! #include <Windows.h>
! #include <tchar.h>
! #include <shlobj.h>
! #include <direct.h>
! #include <process.h>
! #include <malloc.h>
!
! typedef std::wstring TString;
! #define StringLength wcslen
!
! #define TRAILING_PATHSEPARATOR '\\'
! #define BAD_TRAILING_PATHSEPARATOR '/'
! #define PATH_SEPARATOR ';'
! #define BAD_PATH_SEPARATOR ':'
!
! typedef ULONGLONG TPlatformNumber;
! typedef DWORD TProcessID;
!
! #endif //WINDOWS
!
!
! #ifdef POSIX
! #include <errno.h>
! #include <unistd.h>
! #include <sys/stat.h>
! #include <dlfcn.h>
! #include <libgen.h>
!
! #define _T(x) x
!
! typedef char TCHAR;
! typedef std::string TString;
! #define StringLength strlen
!
! typedef unsigned long DWORD;
!
! #define TRAILING_PATHSEPARATOR '/'
! #define BAD_TRAILING_PATHSEPARATOR '\\'
! #define PATH_SEPARATOR ':'
! #define BAD_PATH_SEPARATOR ';'
! #define MAX_PATH 1000
!
! typedef long TPlatformNumber;
! typedef pid_t TProcessID;
!
! #define HMODULE void*
! #endif //POSIX
!
// Config file sections
#define CONFIG_SECTION_APPLICATION _T("CONFIG_SECTION_APPLICATION")
#define CONFIG_SECTION_JVMOPTIONS _T("CONFIG_SECTION_JVMOPTIONS")
#define CONFIG_SECTION_APPCDSJVMOPTIONS _T("CONFIG_SECTION_APPCDSJVMOPTIONS")
--- 24,48 ----
*/
#ifndef PLATFORM_H
#define PLATFORM_H
+ #include "PlatformDefs.h"
+ #include "Properties.h"
#include "OrderedMap.h"
+ #include "Library.h"
#include <stdio.h>
#include <stdlib.h>
#include <memory.h>
#include <string>
#include <map>
#include <list>
#include <vector>
+ #include <fstream>
! using namespace std;
// Config file sections
#define CONFIG_SECTION_APPLICATION _T("CONFIG_SECTION_APPLICATION")
#define CONFIG_SECTION_JVMOPTIONS _T("CONFIG_SECTION_JVMOPTIONS")
#define CONFIG_SECTION_APPCDSJVMOPTIONS _T("CONFIG_SECTION_APPCDSJVMOPTIONS")
*** 138,273 ****
#define CONFIG_APPLICATION_INSTANCE _T("CONFIG_APPLICATION_INSTANCE")
#define JVM_RUNTIME_KEY _T("JVM_RUNTIME_KEY")
#define JPACKAGE_APP_DATA_DIR _T("CONFIG_APP_IDENTIFIER")
!
! typedef void* Module;
! typedef void* Procedure;
!
!
! template <typename ObjectType, typename ValueType,
! ValueType (ObjectType::*getter)(void),
! void (ObjectType::*setter)(ValueType)>
! class Property {
! private:
! ObjectType* FObject;
!
! public:
! Property() {
! FObject = NULL;
! }
!
! void SetInstance(ObjectType* Value) {
! FObject = Value;
! }
!
! // To set the value using the set method.
! ValueType operator =(const ValueType& Value) {
! assert(FObject != NULL);
! (FObject->*setter)(Value);
! return Value;
! }
!
! // The Property class is treated as the internal type.
! operator ValueType() {
! assert(FObject != NULL);
! return (FObject->*getter)();
! }
! };
!
! template <typename ObjectType, typename ValueType,
! ValueType (ObjectType::*getter)(void)>
! class ReadProperty {
! private:
! ObjectType* FObject;
!
! public:
! ReadProperty() {
! FObject = NULL;
! }
!
! void SetInstance(ObjectType* Value) {
! FObject = Value;
! }
!
! // The Property class is treated as the internal type.
! operator ValueType() {
! assert(FObject != NULL);
! return (FObject->*getter)();
! }
! };
!
! template <typename ObjectType, typename ValueType,
! void (ObjectType::*setter)(ValueType)>
! class WriteProperty {
! private:
! ObjectType* FObject;
!
! public:
! WriteProperty() {
! FObject = NULL;
! }
!
! void SetInstance(ObjectType* Value) {
! FObject = Value;
! }
!
! // To set the value using the set method.
! ValueType operator =(const ValueType& Value) {
! assert(FObject != NULL);
! (FObject->*setter)(Value);
! return Value;
! }
! };
!
! template <typename ValueType,
! ValueType (*getter)(void), void (*setter)(ValueType)>
! class StaticProperty {
! public:
! StaticProperty() {
! }
!
! // To set the value using the set method.
! ValueType operator =(const ValueType& Value) {
! (*getter)(Value);
! return Value;
! }
!
! // The Property class is treated as the internal type which is the getter.
! operator ValueType() {
! return (*setter)();
! }
! };
!
! template <typename ValueType, ValueType (*getter)(void)>
! class StaticReadProperty {
! public:
! StaticReadProperty() {
! }
!
! // The Property class is treated as the internal type which is the getter.
! operator ValueType() {
! return (*getter)();
! }
};
! template <typename ValueType, void (*setter)(ValueType)>
! class StaticWriteProperty {
! public:
! StaticWriteProperty() {
! }
! // To set the value using the set method.
! ValueType operator =(const ValueType& Value) {
! (*setter)(Value);
! return Value;
! }
};
-
class Process {
protected:
std::list<TString> FOutput;
public:
--- 65,88 ----
#define CONFIG_APPLICATION_INSTANCE _T("CONFIG_APPLICATION_INSTANCE")
#define JVM_RUNTIME_KEY _T("JVM_RUNTIME_KEY")
#define JPACKAGE_APP_DATA_DIR _T("CONFIG_APP_IDENTIFIER")
+ struct WideString {
+ size_t length;
+ wchar_t* data;
! WideString() { length = 0; data = NULL; }
};
! struct MultibyteString {
! size_t length;
! char* data;
! MultibyteString() { length = 0; data = NULL; }
};
class Process {
protected:
std::list<TString> FOutput;
public:
*** 333,383 ****
FObject = rhs;
return FObject;
}
};
-
- class IPropertyContainer {
- public:
- IPropertyContainer(void) {}
- virtual ~IPropertyContainer(void) {}
-
- virtual bool GetValue(const TString Key, TString& Value) = 0;
- virtual size_t GetCount() = 0;
- };
-
- class ISectionalPropertyContainer {
- public:
- ISectionalPropertyContainer(void) {}
- virtual ~ISectionalPropertyContainer(void) {}
-
- virtual bool GetValue(const TString SectionName,
- const TString Key, TString& Value) = 0;
- virtual bool ContainsSection(const TString SectionName) = 0;
- virtual bool GetSection(const TString SectionName,
- OrderedMap<TString, TString> &Data) = 0;
- };
-
- class Environment {
- private:
- Environment() {
- }
-
- public:
- static TString GetNewLine() {
- #ifdef WINDOWS
- return _T("\r\n");
- #endif //WINDOWS
- #ifdef POSIX
- return _T("\n");
- #endif //POSIX
- }
-
- static StaticReadProperty<TString, &Environment::GetNewLine> NewLine;
- };
-
-
enum DebugState {dsNone, dsNative, dsJava};
enum MessageResponse {mrOK, mrCancel};
enum AppCDSState {cdsUninitialized, cdsDisabled,
cdsEnabled, cdsAuto, cdsGenCache};
--- 148,157 ----
*** 422,432 ****
virtual TString GetPackageAppDirectory() = 0;
virtual TString GetPackageLauncherDirectory() = 0;
virtual TString GetPackageRuntimeBinDirectory() = 0;
virtual TString GetAppName() = 0;
! virtual TString GetConfigFileName() = 0;
virtual TString GetBundledJVMLibraryFileName(TString RuntimePath) = 0;
// Caller must free result.
virtual ISectionalPropertyContainer* GetConfigFile(TString FileName) = 0;
--- 196,206 ----
virtual TString GetPackageAppDirectory() = 0;
virtual TString GetPackageLauncherDirectory() = 0;
virtual TString GetPackageRuntimeBinDirectory() = 0;
virtual TString GetAppName() = 0;
! virtual TString GetConfigFileName();
virtual TString GetBundledJVMLibraryFileName(TString RuntimePath) = 0;
// Caller must free result.
virtual ISectionalPropertyContainer* GetConfigFile(TString FileName) = 0;
*** 435,504 ****
virtual TString GetPackageRootDirectory() = 0;
virtual Module LoadLibrary(TString FileName) = 0;
virtual void FreeLibrary(Module Module) = 0;
virtual Procedure GetProcAddress(Module Module, std::string MethodName) = 0;
- virtual std::vector<TString> GetLibraryImports(const TString FileName) = 0;
- virtual std::vector<TString> FilterOutRuntimeDependenciesForPlatform(
- std::vector<TString> Imports) = 0;
// Caller must free result.
virtual Process* CreateProcess() = 0;
virtual bool IsMainThread() = 0;
// Returns megabytes.
virtual TPlatformNumber GetMemorySize() = 0;
! virtual std::map<TString, TString> GetKeys() = 0;
! virtual std::list<TString> LoadFromFile(TString FileName) = 0;
virtual void SaveToFile(TString FileName,
! std::list<TString> Contents, bool ownerOnly) = 0;
virtual TString GetTempDirectory() = 0;
! #ifdef DEBUG
! virtual DebugState GetDebugState() = 0;
! virtual int GetProcessID() = 0;
! virtual bool IsNativeDebuggerPresent() = 0;
! #endif //DEBUG
! };
!
!
! class Library {
! private:
! std::vector<TString> *FDependentLibraryNames;
! std::vector<Library*> *FDependenciesLibraries;
! Module FModule;
! std::string fname;
!
! void Initialize();
! void InitializeDependencies();
! void LoadDependencies();
! void UnloadDependencies();
!
! public:
! void* GetProcAddress(const std::string& MethodName) const;
public:
! Library();
! Library(const TString &FileName);
! ~Library();
! bool Load(const TString &FileName);
! bool Unload();
! const std::string& GetName() const {
! return fname;
! }
! void AddDependency(const TString &FileName);
! void AddDependencies(const std::vector<TString> &Dependencies);
};
-
class Exception: public std::exception {
private:
TString FMessage;
protected:
--- 209,258 ----
virtual TString GetPackageRootDirectory() = 0;
virtual Module LoadLibrary(TString FileName) = 0;
virtual void FreeLibrary(Module Module) = 0;
virtual Procedure GetProcAddress(Module Module, std::string MethodName) = 0;
// Caller must free result.
virtual Process* CreateProcess() = 0;
virtual bool IsMainThread() = 0;
// Returns megabytes.
virtual TPlatformNumber GetMemorySize() = 0;
! virtual std::map<TString, TString> GetKeys();
! virtual void InitStreamLocale(wios *stream) = 0;
! virtual std::list<TString> LoadFromFile(TString FileName);
virtual void SaveToFile(TString FileName,
! std::list<TString> Contents, bool ownerOnly);
virtual TString GetTempDirectory() = 0;
! virtual void addPlatformDependencies(JavaLibrary *pJavaLibrary) = 0;
public:
! // String helpers
! // Caller must free result using delete[].
! static void CopyString(char *Destination,
! size_t NumberOfElements, const char *Source);
! // Caller must free result using delete[].
! static void CopyString(wchar_t *Destination,
! size_t NumberOfElements, const wchar_t *Source);
! static WideString MultibyteStringToWideString(const char* value);
! static MultibyteString WideStringToMultibyteString(const wchar_t* value);
! #ifdef DEBUG
! virtual DebugState GetDebugState() = 0;
! virtual int GetProcessID() = 0;
! virtual bool IsNativeDebuggerPresent() = 0;
! #endif //DEBUG
};
class Exception: public std::exception {
private:
TString FMessage;
protected:
*** 514,524 ****
virtual ~Exception() throw() {}
TString GetMessage() { return FMessage; }
};
- class FileNotFoundException: public Exception {
- public:
- explicit FileNotFoundException(const TString Message) : Exception(Message) {}
- };
-
#endif // PLATFORM_H
--- 268,273 ----
< prev index next >