Add thin abstraction layer for processes and filesystem

This is used instead of some hardcoded Unix calls and means this code
now works on Windows

(This is a rework of a previous patch which used boost, now that I have
been informed that we are trying to move towards removing boost).

Change-Id: Ib0d11055279bbd7b710f086e9890369e3ecbfe9a
Signed-off-by: Robert Hughes <robert.hughes@arm.com>
diff --git a/src/armnnUtils/Filesystem.cpp b/src/armnnUtils/Filesystem.cpp
new file mode 100644
index 0000000..08c447b
--- /dev/null
+++ b/src/armnnUtils/Filesystem.cpp
@@ -0,0 +1,50 @@
+//
+// Copyright © 2020 Arm Ltd. All rights reserved.
+// SPDX-License-Identifier: MIT
+//
+
+#include "Filesystem.hpp"
+
+#if defined(__unix__)
+#include <sys/stat.h>
+#include <stdio.h>
+#elif defined(_MSC_VER)
+#define WIN32_LEAN_AND_MEAN
+#include <Windows.h>
+#endif
+
+namespace armnnUtils
+{
+namespace Filesystem
+{
+
+long GetFileSize(const char* path)
+{
+#if defined(__unix__)
+    struct stat statusBuffer;
+    if (stat(path, & statusBuffer) != 0)
+    {
+        return -1;
+    }
+    return statusBuffer.st_size;
+#elif defined(_MSC_VER)
+    WIN32_FILE_ATTRIBUTE_DATA attr;
+    if (::GetFileAttributesEx(path, GetFileExInfoStandard, &attr) == 0)
+    {
+        return -1;
+    }
+    return attr.nFileSizeLow;
+#endif
+}
+
+bool Remove(const char* path)
+{
+#if defined(__unix__)
+    return remove(path) == 0;
+#elif defined(_MSC_VER)
+    return ::DeleteFile(path);
+#endif
+}
+
+}
+}
diff --git a/src/armnnUtils/Filesystem.hpp b/src/armnnUtils/Filesystem.hpp
new file mode 100644
index 0000000..d6dc5b9
--- /dev/null
+++ b/src/armnnUtils/Filesystem.hpp
@@ -0,0 +1,18 @@
+//
+// Copyright © 2020 Arm Ltd. All rights reserved.
+// SPDX-License-Identifier: MIT
+//
+
+#pragma once
+
+namespace armnnUtils
+{
+namespace Filesystem
+{
+
+long GetFileSize(const char* path);
+
+bool Remove(const char* path);
+
+}
+}
diff --git a/src/armnnUtils/Processes.cpp b/src/armnnUtils/Processes.cpp
new file mode 100644
index 0000000..0e43e8c
--- /dev/null
+++ b/src/armnnUtils/Processes.cpp
@@ -0,0 +1,30 @@
+//
+// Copyright © 2020 Arm Ltd. All rights reserved.
+// SPDX-License-Identifier: MIT
+//
+
+#include "Processes.hpp"
+
+#if defined(__unix__)
+#include <unistd.h>
+#elif defined(_MSC_VER)
+#define WIN32_LEAN_AND_MEAN
+#include <Windows.h>
+#endif
+
+namespace armnnUtils
+{
+namespace Processes
+{
+
+int GetCurrentId()
+{
+#if defined(__unix__)
+    return getpid();
+#elif defined(_MSC_VER)
+    return ::GetCurrentProcessId();
+#endif
+}
+
+}
+}
diff --git a/src/armnnUtils/Processes.hpp b/src/armnnUtils/Processes.hpp
new file mode 100644
index 0000000..0f1d955
--- /dev/null
+++ b/src/armnnUtils/Processes.hpp
@@ -0,0 +1,16 @@
+//
+// Copyright © 2020 Arm Ltd. All rights reserved.
+// SPDX-License-Identifier: MIT
+//
+
+#pragma once
+
+namespace armnnUtils
+{
+namespace Processes
+{
+
+int GetCurrentId();
+
+}
+}