< prev index next >

src/jdk.jpackage/share/native/libapplauncher/Platform.h

Print this page

        

@@ -24,98 +24,25 @@
  */
 
 #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>
 
-
-#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
-
+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,136 +65,24 @@
 #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;
 
-
-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)();
-    }
+    WideString() { length = 0; data = NULL; }
 };
 
-template <typename ValueType, void (*setter)(ValueType)>
-class StaticWriteProperty {
-public:
-    StaticWriteProperty() {
-    }
+struct MultibyteString {
+    size_t length;
+    char* data;
 
-    // To set the value using the set method.
-    ValueType operator =(const ValueType& Value) {
-        (*setter)(Value);
-        return Value;
-    }
+    MultibyteString() { length = 0; data = NULL; }
 };
 
-
 class Process {
 protected:
     std::list<TString> FOutput;
 
 public:

@@ -333,51 +148,10 @@
         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};
 

@@ -422,11 +196,11 @@
     virtual TString GetPackageAppDirectory() = 0;
     virtual TString GetPackageLauncherDirectory() = 0;
     virtual TString GetPackageRuntimeBinDirectory() = 0;
     virtual TString GetAppName() = 0;
 
-    virtual TString GetConfigFileName() = 0;
+    virtual TString GetConfigFileName();
 
     virtual TString GetBundledJVMLibraryFileName(TString RuntimePath) = 0;
 
     // Caller must free result.
     virtual ISectionalPropertyContainer* GetConfigFile(TString FileName) = 0;

@@ -435,70 +209,50 @@
     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::map<TString, TString> GetKeys();
 
-    virtual std::list<TString> LoadFromFile(TString FileName) = 0;
+    virtual void InitStreamLocale(wios *stream) = 0;
+    virtual std::list<TString> LoadFromFile(TString FileName);
     virtual void SaveToFile(TString FileName,
-             std::list<TString> Contents, bool ownerOnly) = 0;
+             std::list<TString> Contents, bool ownerOnly);
 
     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;
+    virtual void addPlatformDependencies(JavaLibrary *pJavaLibrary) = 0;
 
 public:
-    Library();
-    Library(const TString &FileName);
-    ~Library();
+    // String helpers
+    // Caller must free result using delete[].
+    static void CopyString(char *Destination,
+            size_t NumberOfElements, const char *Source);
 
-    bool Load(const TString &FileName);
-    bool Unload();
+    // Caller must free result using delete[].
+    static void CopyString(wchar_t *Destination,
+            size_t NumberOfElements, const wchar_t *Source);
 
-    const std::string& GetName() const {
-        return fname;
-    }
+    static WideString MultibyteStringToWideString(const char* value);
+    static MultibyteString WideStringToMultibyteString(const wchar_t* value);
 
-    void AddDependency(const TString &FileName);
-    void AddDependencies(const std::vector<TString> &Dependencies);
+#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,11 +268,6 @@
     virtual ~Exception() throw() {}
 
     TString GetMessage() { return FMessage; }
 };
 
-class FileNotFoundException: public Exception {
-public:
-    explicit FileNotFoundException(const TString Message) : Exception(Message) {}
-};
-
 #endif // PLATFORM_H
< prev index next >