diff --git a/src/main/java/com/syncleus/dann/annotation/Immutable.java b/src/main/java/com/syncleus/dann/annotation/Immutable.java
index 38abb97f33d9111ab0e396fc7fa661dec1bb3850..4c2f60b042ef62ccaa52192355dcdc016d8c255c 100644
--- a/src/main/java/com/syncleus/dann/annotation/Immutable.java
+++ b/src/main/java/com/syncleus/dann/annotation/Immutable.java
@@ -1,3 +1,21 @@
+/******************************************************************************
+ * *
+ * Copyright: (c) Syncleus, Inc. *
+ * *
+ * You may redistribute and modify this source code under the terms and *
+ * conditions of the Open Source Community License - Type C version 1.0 *
+ * or any later version as published by Syncleus, Inc. at www.syncleus.com. *
+ * There should be a copy of the license included with this file. If a copy *
+ * of the license is not included you are granted no right to distribute or *
+ * otherwise use this file except through a legal and valid license. You *
+ * should also contact Syncleus, Inc. at the information below if you cannot *
+ * find a license: *
+ * *
+ * Syncleus, Inc. *
+ * 2604 South 12th Street *
+ * Philadelphia, PA 19148 *
+ * *
+ ******************************************************************************/
package com.syncleus.dann.annotation;
import java.lang.annotation.*;
diff --git a/src/main/java/com/syncleus/dann/annotation/processing/Requires.java b/src/main/java/com/syncleus/dann/annotation/processing/Requires.java
index 4fd180c66e4295537e29f0d8b7c5a42659c8a10a..c9c2e2a0a0a0d53c63d940fcbdf4f1a7462f818e 100644
--- a/src/main/java/com/syncleus/dann/annotation/processing/Requires.java
+++ b/src/main/java/com/syncleus/dann/annotation/processing/Requires.java
@@ -1,3 +1,21 @@
+/******************************************************************************
+ * *
+ * Copyright: (c) Syncleus, Inc. *
+ * *
+ * You may redistribute and modify this source code under the terms and *
+ * conditions of the Open Source Community License - Type C version 1.0 *
+ * or any later version as published by Syncleus, Inc. at www.syncleus.com. *
+ * There should be a copy of the license included with this file. If a copy *
+ * of the license is not included you are granted no right to distribute or *
+ * otherwise use this file except through a legal and valid license. You *
+ * should also contact Syncleus, Inc. at the information below if you cannot *
+ * find a license: *
+ * *
+ * Syncleus, Inc. *
+ * 2604 South 12th Street *
+ * Philadelphia, PA 19148 *
+ * *
+ ******************************************************************************/
package com.syncleus.dann.annotation.processing;
import java.lang.annotation.*;
diff --git a/src/main/java/com/syncleus/dann/annotation/processing/RequiresImmutable.java b/src/main/java/com/syncleus/dann/annotation/processing/RequiresImmutable.java
index 64a0f23513060fb0c8aa9b34b1caa1b2c90224d0..1ba010a07cce6a82266a819a6ed51175af5ff207 100644
--- a/src/main/java/com/syncleus/dann/annotation/processing/RequiresImmutable.java
+++ b/src/main/java/com/syncleus/dann/annotation/processing/RequiresImmutable.java
@@ -1,3 +1,21 @@
+/******************************************************************************
+ * *
+ * Copyright: (c) Syncleus, Inc. *
+ * *
+ * You may redistribute and modify this source code under the terms and *
+ * conditions of the Open Source Community License - Type C version 1.0 *
+ * or any later version as published by Syncleus, Inc. at www.syncleus.com. *
+ * There should be a copy of the license included with this file. If a copy *
+ * of the license is not included you are granted no right to distribute or *
+ * otherwise use this file except through a legal and valid license. You *
+ * should also contact Syncleus, Inc. at the information below if you cannot *
+ * find a license: *
+ * *
+ * Syncleus, Inc. *
+ * 2604 South 12th Street *
+ * Philadelphia, PA 19148 *
+ * *
+ ******************************************************************************/
package com.syncleus.dann.annotation.processing;
import com.syncleus.dann.annotation.Immutable;
diff --git a/src/main/java/com/syncleus/dann/graph/BidirectedCloud.java b/src/main/java/com/syncleus/dann/graph/BidirectedCloud.java
new file mode 100644
index 0000000000000000000000000000000000000000..046c51e13070ffe3c156fb4d234fd758aed7ff0d
--- /dev/null
+++ b/src/main/java/com/syncleus/dann/graph/BidirectedCloud.java
@@ -0,0 +1,28 @@
+/******************************************************************************
+ * Copyright: (c) Syncleus, Inc. *
+ * *
+ * You may redistribute and modify this source code under the terms and *
+ * conditions of the Open Source Community License - Type C version 1.0 *
+ * or any later version as published by Syncleus, Inc. at www.syncleus.com. *
+ * There should be a copy of the license included with this file. If a copy *
+ * of the license is not included you are granted no right to distribute or *
+ * otherwise use this file except through a legal and valid license. You *
+ * should also contact Syncleus, Inc. at the information below if you cannot *
+ * find a license: *
+ * *
+ * Syncleus, Inc. *
+ * 2604 South 12th Street *
+ * Philadelphia, PA 19148 *
+ ******************************************************************************/
+
+package com.syncleus.dann.graph;
+
+public interface BidirectedCloud<
+ T,
+ EP extends BidirectedCloud.Endpoint<? extends T>
+ > extends TraversableCloud<T,EP>
+{
+ interface Endpoint<T> extends TraversableCloud.Endpoint<T>
+ {
+ }
+}
diff --git a/src/main/java/com/syncleus/dann/graph/Cloud.java b/src/main/java/com/syncleus/dann/graph/Cloud.java
index 053fb050f4fdeb199d1c7c2c13f4c41dee28f512..cd796f6c2387dd445b94b0d3a7f526cf6bc2ed88 100644
--- a/src/main/java/com/syncleus/dann/graph/Cloud.java
+++ b/src/main/java/com/syncleus/dann/graph/Cloud.java
@@ -33,10 +33,6 @@ public interface Cloud<
interface Endpoint<T>
{
Set<? extends Cloud.Endpoint<? extends T>> getNeighbors();
- Set<? extends Cloud.Endpoint<? extends T>> getTraversableNeighborsTo();
- Set<? extends Cloud.Endpoint<? extends T>> getTraversableNeighborsFrom();
- boolean isTraversable();
- boolean isTraversable(Cloud.Endpoint<?> destination);
T getTarget();
};
@@ -44,14 +40,11 @@ public interface Cloud<
Set<EP> getEndpoints(Object target);
Set<T> getTargets();
Set<T> getNeighbors(Object target);
- Set<T> getTraversableFrom(Object target);
- Set<T> getTraversableTo(Object target);
- boolean isTraversable(Object sourceTarget, Object destinationTarget);
- int getDegree();
boolean contains( Object endpoint);
boolean containsAny(Collection<? extends Endpoint<?>> endpoint);
boolean containsAll(Collection<? extends Endpoint<?>> endpoint);
boolean containsTarget(Object target);
boolean containsAnyTargets(Collection<?> target);
boolean containsAllTargets(Collection<?> target);
+ int getDegree();
}
diff --git a/src/main/java/com/syncleus/dann/graph/DynamicCloud.java b/src/main/java/com/syncleus/dann/graph/DynamicCloud.java
new file mode 100644
index 0000000000000000000000000000000000000000..02c643217b2c216189b5259c403824f2127ab2e9
--- /dev/null
+++ b/src/main/java/com/syncleus/dann/graph/DynamicCloud.java
@@ -0,0 +1,28 @@
+/******************************************************************************
+ * Copyright: (c) Syncleus, Inc. *
+ * *
+ * You may redistribute and modify this source code under the terms and *
+ * conditions of the Open Source Community License - Type C version 1.0 *
+ * or any later version as published by Syncleus, Inc. at www.syncleus.com. *
+ * There should be a copy of the license included with this file. If a copy *
+ * of the license is not included you are granted no right to distribute or *
+ * otherwise use this file except through a legal and valid license. You *
+ * should also contact Syncleus, Inc. at the information below if you cannot *
+ * find a license: *
+ * *
+ * Syncleus, Inc. *
+ * 2604 South 12th Street *
+ * Philadelphia, PA 19148 *
+ ******************************************************************************/
+
+package com.syncleus.dann.graph;
+
+public interface DynamicCloud<
+ T,
+ EP extends DynamicCloud.Endpoint<? extends T>
+ > extends MutableCloud<T,EP>, TraversableCloud<T,EP>
+{
+ interface Endpoint<T> extends MutableCloud.Endpoint<T>, TraversableCloud.Endpoint<T>
+ {
+ }
+}
diff --git a/src/main/java/com/syncleus/dann/graph/TraversableCloud.java b/src/main/java/com/syncleus/dann/graph/TraversableCloud.java
new file mode 100644
index 0000000000000000000000000000000000000000..67d1319ee9ce4ce9f46fcd11b15a7d97737b17c8
--- /dev/null
+++ b/src/main/java/com/syncleus/dann/graph/TraversableCloud.java
@@ -0,0 +1,38 @@
+/******************************************************************************
+ * *
+ * Copyright: (c) Syncleus, Inc. *
+ * *
+ * You may redistribute and modify this source code under the terms and *
+ * conditions of the Open Source Community License - Type C version 1.0 *
+ * or any later version as published by Syncleus, Inc. at www.syncleus.com. *
+ * There should be a copy of the license included with this file. If a copy *
+ * of the license is not included you are granted no right to distribute or *
+ * otherwise use this file except through a legal and valid license. You *
+ * should also contact Syncleus, Inc. at the information below if you cannot *
+ * find a license: *
+ * *
+ * Syncleus, Inc. *
+ * 2604 South 12th Street *
+ * Philadelphia, PA 19148 *
+ * *
+ ******************************************************************************/
+package com.syncleus.dann.graph;
+
+import java.util.Set;
+
+public interface TraversableCloud<
+ T,
+ EP extends TraversableCloud.Endpoint<? extends T>
+ > extends Cloud<T,EP>
+{
+ interface Endpoint<T> extends Cloud.Endpoint<T>
+ {
+ Set<? extends Cloud.Endpoint<? extends T>> getTraversableNeighborsTo();
+ Set<? extends Cloud.Endpoint<? extends T>> getTraversableNeighborsFrom();
+ boolean isTraversable(Cloud.Endpoint<?> destination);
+ }
+
+ Set<T> getTraversableFrom(Object target);
+ Set<T> getTraversableTo(Object target);
+ boolean isTraversable(Object sourceTarget, Object destinationTarget);
+}
diff --git a/src/main/java/com/syncleus/dann/graph/annotation/FixedEndpoints.java b/src/main/java/com/syncleus/dann/graph/annotation/FixedEndpoints.java
index e3b3bae4e2bf9cc36dbd9a9b7fb77022ada335d3..08d4d1a6ecc22749a2cffd37bc508a31a5b98edf 100644
--- a/src/main/java/com/syncleus/dann/graph/annotation/FixedEndpoints.java
+++ b/src/main/java/com/syncleus/dann/graph/annotation/FixedEndpoints.java
@@ -1,3 +1,21 @@
+/******************************************************************************
+ * *
+ * Copyright: (c) Syncleus, Inc. *
+ * *
+ * You may redistribute and modify this source code under the terms and *
+ * conditions of the Open Source Community License - Type C version 1.0 *
+ * or any later version as published by Syncleus, Inc. at www.syncleus.com. *
+ * There should be a copy of the license included with this file. If a copy *
+ * of the license is not included you are granted no right to distribute or *
+ * otherwise use this file except through a legal and valid license. You *
+ * should also contact Syncleus, Inc. at the information below if you cannot *
+ * find a license: *
+ * *
+ * Syncleus, Inc. *
+ * 2604 South 12th Street *
+ * Philadelphia, PA 19148 *
+ * *
+ ******************************************************************************/
package com.syncleus.dann.graph.annotation;
import java.lang.annotation.*;
diff --git a/src/main/java/com/syncleus/dann/graph/annotation/processing/RequiresUndirected.java b/src/main/java/com/syncleus/dann/graph/annotation/processing/RequiresUndirected.java
index 85e6844fb307fd714b05f31e9b9bc5797c2701e2..ced035fe0b6ce66e5dde93f16f76579963fda399 100644
--- a/src/main/java/com/syncleus/dann/graph/annotation/processing/RequiresUndirected.java
+++ b/src/main/java/com/syncleus/dann/graph/annotation/processing/RequiresUndirected.java
@@ -1,3 +1,21 @@
+/******************************************************************************
+ * *
+ * Copyright: (c) Syncleus, Inc. *
+ * *
+ * You may redistribute and modify this source code under the terms and *
+ * conditions of the Open Source Community License - Type C version 1.0 *
+ * or any later version as published by Syncleus, Inc. at www.syncleus.com. *
+ * There should be a copy of the license included with this file. If a copy *
+ * of the license is not included you are granted no right to distribute or *
+ * otherwise use this file except through a legal and valid license. You *
+ * should also contact Syncleus, Inc. at the information below if you cannot *
+ * find a license: *
+ * *
+ * Syncleus, Inc. *
+ * 2604 South 12th Street *
+ * Philadelphia, PA 19148 *
+ * *
+ ******************************************************************************/
package com.syncleus.dann.graph.annotation.processing;
public @interface RequiresUndirected