Fix building and installing package.
[genetic.git] / include / gene.h
diff --git a/include/gene.h b/include/gene.h
new file mode 100644 (file)
index 0000000..781cd3e
--- /dev/null
@@ -0,0 +1,56 @@
+#ifndef __GENE_H
+#define __GENE_H
+
+namespace genetic {
+
+    /**
+     * Class representing Gene
+     */
+    template < typename Type >
+    class Gene {
+    protected:
+        /**
+         * Value of the Gene
+         * This for example can be a primitive value such as: int or double, or
+         * with additional changes complex struct.
+         */
+        Type value;
+
+        template<typename> friend class Gene;
+    public:
+        /**
+         * Default constructor
+         */
+        Gene() {}
+
+        /**
+         * Class constructor, initializes Gene with default value.
+         */
+        Gene(Type value) {
+            this->value = value;
+        }
+
+        /** Copy constructor */
+        Gene(const Gene& gene) : value(gene.value) {}
+
+        /**
+         * Copy operator.
+         *
+         * @param gene Gene from which the value should be copied.
+         * @return Gene instance containing copied value
+         */
+        Gene& operator=(const Gene& gene) {
+            this->value = gene.value;
+            return *this;
+        }
+
+        /**
+         * Allows read-only access to Gene value
+         */
+        Type get() const {
+            return value;
+        }
+    };
+}
+
+#endif /* __GENE_H */