From 801ade78e61ac7771ada1268a3bb5e6e5c1326ff Mon Sep 17 00:00:00 2001
From: Roland Haeder <roland@mxchange.org>
Date: Tue, 13 May 2014 23:09:09 +0200
Subject: [PATCH] Continued with file-based stacks: - added first draft of
 file-based stacks (hash sums are missing) - added initial base class and stub
 for file-based stacks - ignored chash.pos (file created by chash.php) -
 ignored any backup files (*.*~)
MIME-Version: 1.0
Content-Type: text/plain; charset=utf8
Content-Transfer-Encoding: 8bit

Signed-off-by: Roland Häder <roland@mxchange.org>
---
 .gitignore                                    |  2 +
 contrib/file_stack/format.txt                 | 20 ++++++++
 inc/classes/main/file_stack/.htaccess         |  1 +
 inc/classes/main/file_stack/class_            | 50 +++++++++++++++++++
 .../main/file_stack/class_BaseFileStack.php   | 38 ++++++++++++++
 5 files changed, 111 insertions(+)
 create mode 100644 contrib/file_stack/format.txt
 create mode 100644 inc/classes/main/file_stack/.htaccess
 create mode 100644 inc/classes/main/file_stack/class_
 create mode 100644 inc/classes/main/file_stack/class_BaseFileStack.php

diff --git a/.gitignore b/.gitignore
index fd0d0d9f..e4688a2d 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1,3 +1,4 @@
+contrib/chash/chash.pos
 contrib/lfdb2/*.bin*
 contrib/lfdb2/*.out*
 contrib/mindmaps/*.png
@@ -6,3 +7,4 @@ inc/config/config-local.php
 /nbproject
 templates/_compiled/*.*
 templates/images/_cache/*.*
+*.*~
diff --git a/contrib/file_stack/format.txt b/contrib/file_stack/format.txt
new file mode 100644
index 00000000..12c18863
--- /dev/null
+++ b/contrib/file_stack/format.txt
@@ -0,0 +1,20 @@
+A file-based stack:
+===================
+
+This is the format for a file-based stack which works as any Stackable class.
+
+General made up:
+
+Purpose: | "magic"   | separator | count    | position      | separator |
+---------+-----------+-----------+----------+---------------+-----------+
+Bytes:   | 9         | 1         | 20 (hex) | 2 - n^2 (hex) | 1         |
+---------+-----------+-----------+----------+---------------+-----------+
+Example: | STACKv1.0 |    ???    | 0...ff   | 01            |    ???    |
+
+Continued:
+
+Purpose: | name 0 | entry 0    | separator | name 1 | entry 1    | separator | name n | entry n    | EOF |
+---------+--------+------------+-----------+--------+------------+-----------+--------+------------+-----+
+Bytes:   | 10     | 1-n (pack) | 1         | 10     | 1-n (pack) | 1         | 10     | 1-n (pack) | 1   |
+---------+--------+------------+-----------+--------+------------+-----------+--------+------------+-----+
+Example: | foo    |     ...    |    ???    | bar    |     ...    |    ???    | bar    |     ...    | EOF |
diff --git a/inc/classes/main/file_stack/.htaccess b/inc/classes/main/file_stack/.htaccess
new file mode 100644
index 00000000..3a428827
--- /dev/null
+++ b/inc/classes/main/file_stack/.htaccess
@@ -0,0 +1 @@
+Deny from all
diff --git a/inc/classes/main/file_stack/class_ b/inc/classes/main/file_stack/class_
new file mode 100644
index 00000000..b3359656
--- /dev/null
+++ b/inc/classes/main/file_stack/class_
@@ -0,0 +1,50 @@
+<?php
+/**
+ * A ??? file-based stack
+ *
+ * @author		Roland Haeder <webmaster@ship-simu.org>
+ * @version		0.0.0
+ * @copyright	Copyright (c) 2014 Core Developer Team
+ * @license		GNU GPL 3.0 or any newer version
+ * @link		http://www.ship-simu.org
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program.  If not, see <http://www.gnu.org/licenses/>.
+ */
+class ???FileStack extends BaseFileStack implements Stackable {
+	/**
+	 * Protected constructor
+	 *
+	 * @return	void
+	 */
+	protected function __construct () {
+		// Call parent constructor
+		parent::__construct(__CLASS__);
+	}
+
+	/**
+	 * Creates an instance of this class
+	 *
+	 * @return	$stackInstance	An instance of a Stackable class
+	 */
+	public final static function create???FileStack () {
+		// Get new instance
+		$stackInstance = new ???FileStack();
+
+		// Return the prepared instance
+		return $stackInstance;
+	}
+}
+
+// [EOF]
+?>
diff --git a/inc/classes/main/file_stack/class_BaseFileStack.php b/inc/classes/main/file_stack/class_BaseFileStack.php
new file mode 100644
index 00000000..7c4c91e5
--- /dev/null
+++ b/inc/classes/main/file_stack/class_BaseFileStack.php
@@ -0,0 +1,38 @@
+<?php
+/**
+ * A general file-based stack class
+ *
+ * @author		Roland Haeder <webmaster@ship-simu.org>
+ * @version		0.0.0
+ * @copyright	Copyright (c) 2007, 2008 Roland Haeder, 2009 - 2012 Hub Developer Team
+ * @license		GNU GPL 3.0 or any newer version
+ * @link		http://www.ship-simu.org
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program.  If not, see <http://www.gnu.org/licenses/>.
+ */
+class BaseFileStack extends BaseFrameworkSystem {
+	/**
+	 * Protected constructor
+	 *
+	 * @param	$className	Name of the class
+	 * @return	void
+	 */
+	protected function __construct ($className) {
+		// Call parent constructor
+		parent::__construct($className);
+	}
+}
+
+// [EOF]
+?>
-- 
2.39.5