summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNathanael Sensfelder <SpamShield0@MultiAgentSystems.org>2017-08-29 13:54:43 +0200
committerNathanael Sensfelder <SpamShield0@MultiAgentSystems.org>2017-08-29 13:54:43 +0200
commit35e6857fb09b006da9f8cc3f59f239f078cc69a1 (patch)
tree9c049bc4a16a1202b1dc18ccd79ecfd8557f7dcc
parentf1dfb1eb04a705521238dba64e09bb9ecdea794f (diff)
Still working on the implementation.
-rw-r--r--instance-calculator/src/Instances.java30
-rw-r--r--instance-calculator/src/Main.java26
-rw-r--r--instance-calculator/src/ModelFile.java36
-rw-r--r--instance-calculator/src/ProcessInstance.java9
-rw-r--r--instance-calculator/src/VHDLArchitecture.java9
-rw-r--r--instance-calculator/src/VHDLComponent.java60
-rw-r--r--instance-calculator/src/VHDLEntity.java30
-rw-r--r--instance-calculator/src/VHDLProcess.java76
-rw-r--r--instance-calculator/src/VHDLWaveform.java99
9 files changed, 318 insertions, 57 deletions
diff --git a/instance-calculator/src/Instances.java b/instance-calculator/src/Instances.java
new file mode 100644
index 0000000..5d6ec8b
--- /dev/null
+++ b/instance-calculator/src/Instances.java
@@ -0,0 +1,30 @@
+import java.util.*;
+
+public class Instances
+{
+ private static final Map<Integer, String> instances;
+
+ static
+ {
+ instances = new HashMap<Integer, String>();
+ }
+
+ public static String get_id_for (final int i)
+ {
+ final Integer j;
+ String result;
+
+ j = new Integer(i);
+
+ result = instances.get(j);
+
+ if (result == null)
+ {
+ result = (Main.get_parameters().get_id_prefix() + i);
+
+ instances.put(j, result);
+ }
+
+ return result;
+ }
+}
diff --git a/instance-calculator/src/Main.java b/instance-calculator/src/Main.java
index 488b9bb..3835c16 100644
--- a/instance-calculator/src/Main.java
+++ b/instance-calculator/src/Main.java
@@ -54,25 +54,18 @@ public class Main
* {
* a = Candidates.pop();
*
- * for (c: a.component)
+ * if (a.has_components_not_in(ProcessedCandidates))
* {
- * if (!contains(c.target, ProcessedCandidates))
- * {
- * FuturCandidates.push(a);
- * continue;
- * }
+ * FuturCandidates.push(a);
* }
+ * else
+ * {
+ * is_stuck = False;
*
- * is_stuck = False;
- *
- * a.instantiate_all_processes();
+ * a.create_instance();
*
- * for (c: a.component)
- * {
- * a.integrate_instanciated_processes_from(c);
+ * ProcessedCandidates.add(a);
* }
- *
- * ProcessedCandidates.add(a);
* }
*
* if (is_stuck)
@@ -82,4 +75,9 @@ public class Main
* }
*/
}
+
+ public static Parameters get_parameters ()
+ {
+ return PARAMETERS;
+ }
}
diff --git a/instance-calculator/src/ModelFile.java b/instance-calculator/src/ModelFile.java
index 7ca0899..691de1a 100644
--- a/instance-calculator/src/ModelFile.java
+++ b/instance-calculator/src/ModelFile.java
@@ -178,9 +178,7 @@ public class ModelFile
return false;
}
- VHDLEntity.handle_is_port_of(input[1], input[2]);
-
- return true;
+ return VHDLEntity.handle_is_port_of(input[1], input[2]);
}
private static boolean handle_is_architecture_of
@@ -193,24 +191,7 @@ public class ModelFile
return false;
}
- VHDLArchitecture.handle_is_architecture_of(input[1], input[2]);
-
- return true;
- }
-
- private static boolean handle_belongs_to_architecture
- (
- final String[] input
- )
- {
- if (input.length != 3)
- {
- return false;
- }
-
- VHDLArchitecture.handle_belongs_to_architecture(input[1], input[2]);
-
- return true;
+ return VHDLArchitecture.handle_is_architecture_of(input[1], input[2]);
}
private static boolean handle_belongs_to_architecture
@@ -223,9 +204,8 @@ public class ModelFile
return false;
}
- VHDLArchitecture.handle_belongs_to_architecture(input[1], input[2]);
-
- return true;
+ return
+ VHDLArchitecture.handle_belongs_to_architecture(input[1], input[2]);
}
private static boolean handle_is_component_of
@@ -238,9 +218,7 @@ public class ModelFile
return false;
}
- VHDLComponent.handle_is_component_of(input[1], input[2]);
-
- return true;
+ return VHDLComponent.handle_is_component_of(input[1], input[2]);
}
private static boolean handle_port_maps
@@ -253,9 +231,7 @@ public class ModelFile
return false;
}
- VHDLComponent.handle_port_maps(input[1], input[2], input[3]);
-
- return true;
+ return VHDLComponent.handle_port_maps(input[1], input[2], input[3]);
}
private ModelFile () {} /* Utility Class */
diff --git a/instance-calculator/src/ProcessInstance.java b/instance-calculator/src/ProcessInstance.java
deleted file mode 100644
index 580df6b..0000000
--- a/instance-calculator/src/ProcessInstance.java
+++ /dev/null
@@ -1,9 +0,0 @@
-import java.util.*;
-
-public class ProcessInstance
-{
- private final String id;
- private String process_id;
- private Map<String, String> wfm_map;
-
-}
diff --git a/instance-calculator/src/VHDLArchitecture.java b/instance-calculator/src/VHDLArchitecture.java
index 2834ab3..7f3be10 100644
--- a/instance-calculator/src/VHDLArchitecture.java
+++ b/instance-calculator/src/VHDLArchitecture.java
@@ -23,6 +23,7 @@ public class VHDLArchitecture
final String arch_id
)
{
+ /* TODO */
return false;
}
@@ -32,6 +33,7 @@ public class VHDLArchitecture
final String e_id
)
{
+ /* TODO */
return false;
}
@@ -40,6 +42,8 @@ public class VHDLArchitecture
private final List<String> components;
private final String id;
+ private VHDLEntity entity;
+
private VHDLArchitecture (final String id)
{
this.id = id;
@@ -47,4 +51,9 @@ public class VHDLArchitecture
processes = new ArrayList<String>();
components = new ArrayList<String>();
}
+
+ public VHDLEntity get_entity ()
+ {
+ return entity;
+ }
}
diff --git a/instance-calculator/src/VHDLComponent.java b/instance-calculator/src/VHDLComponent.java
index 493ba22..5972173 100644
--- a/instance-calculator/src/VHDLComponent.java
+++ b/instance-calculator/src/VHDLComponent.java
@@ -23,6 +23,7 @@ public class VHDLComponent
final String e_id
)
{
+ /* TODO */
return false;
}
@@ -33,6 +34,7 @@ public class VHDLComponent
final String wfm_id
)
{
+ /* TODO */
return false;
}
@@ -40,6 +42,64 @@ public class VHDLComponent
private final Map<String, String> port_map;
private final String id;
+ private VHDLEntity destination;
+ private VHDLArchitecture parent;
+
+ public void add_instance_content_to
+ (
+ final Collection<VHDLProcess.Instance> process_instances,
+ final Collection<VHDLWaveform.Instance> waveform_instances
+ )
+ {
+ final Collection<VHDLProcess.Instance> dest_process_instances;
+ final Collection<VHDLWaveform.Instance> dest_waveform_instances;
+ final Map<VHDLWaveform.Instance, VHDLWaveform.Instance> wfm_map;
+
+ dest_process_instances = destination.get_process_instances();
+ dest_waveform_instances = destination.get_waveform_instances();
+
+ wfm_map = new HashMap<VHDLWaveform.Instance, VHDLWaveform.Instance>();
+
+ for (final VHDLWaveform.Instance i_wfm: dest_waveform_instances)
+ {
+ final String dest;
+ final VHDLWaveform.Instance replacement;
+
+ dest =
+ port_map.get
+ (
+ Waveforms.get_id_from_waveform_id
+ (
+ i_wfm.get_parent().get_id()
+ )
+ );
+
+ if (dest == null)
+ {
+ replacement = i_wfm.get_parent().add_instance(parent.get_entity());
+ }
+ else
+ {
+ replacement =
+ VHDLWaveform.get_from_id(dest).add_instance
+ (
+ parent.get_entity()
+ );
+ }
+
+ wfm_map.put(i_wfm, replacement);
+ waveform_instances.add(replacement);
+ }
+
+ for (final VHDLProcess.Instance i_ps: dest_process_instances)
+ {
+ process_instances.add
+ (
+ i_ps.add_instance(parent.get_entity(), wfm_map)
+ );
+ }
+ }
+
private VHDLComponent (final String id)
{
this.id = id;
diff --git a/instance-calculator/src/VHDLEntity.java b/instance-calculator/src/VHDLEntity.java
index a5ba28c..8059566 100644
--- a/instance-calculator/src/VHDLEntity.java
+++ b/instance-calculator/src/VHDLEntity.java
@@ -23,17 +23,45 @@ public class VHDLEntity
final String e_id
)
{
+ /* TODO */
+ return false;
+ }
+
+ public static boolean handle_is_architecture_of
+ (
+ final String pt_id,
+ final String e_id
+ )
+ {
+ /* TODO */
return false;
}
/******************************************************************************/
+ private final Collection<VHDLProcess.Instance> process_instances;
+ private final Collection<VHDLWaveform.Instance> waveform_instances;
+
private final List<String> ports;
private final String id;
+ private String architecture;
+
private VHDLEntity (final String id)
{
this.id = id;
-
ports = new ArrayList<String>();
+
+ this.process_instances = new ArrayList<VHDLProcess.Instance>();
+ this.waveform_instances = new ArrayList<VHDLWaveform.Instance>();
+ }
+
+ public Collection<VHDLProcess.Instance> get_process_instances ()
+ {
+ return process_instances;
+ }
+
+ public Collection<VHDLWaveform.Instance> get_waveform_instances ()
+ {
+ return waveform_instances;
}
}
diff --git a/instance-calculator/src/VHDLProcess.java b/instance-calculator/src/VHDLProcess.java
index a017ef4..f85fe9a 100644
--- a/instance-calculator/src/VHDLProcess.java
+++ b/instance-calculator/src/VHDLProcess.java
@@ -23,18 +23,88 @@ public class VHDLProcess
final String ps_id
)
{
+ /* TODO */
return false;
}
/******************************************************************************/
-
- private final List<String> accessed_wfm;
+ private final Collection<VHDLWaveform> accessed_wfm;
+ private final Collection<VHDLProcess.Instance> instances;
private final String id;
+ private int instances_count;
private VHDLProcess (final String id)
{
this.id = id;
+ accessed_wfm = new ArrayList<VHDLWaveform>();
+ instances = new ArrayList<VHDLProcess.Instance>();
+ instances_count = 0;
+ }
+
+ public static class Instance
+ {
+ private final String id;
+ private final VHDLProcess parent;
+ private final Map<VHDLWaveform.Instance, VHDLWaveform> iwfm_map;
+ private final VHDLEntity visibility;
+
+ private Instance
+ (
+ final String id,
+ final VHDLProcess parent,
+ final VHDLEntity visibility,
+ final Map<VHDLWaveform.Instance, VHDLWaveform> iwfm_map
+ )
+ {
+ this.id = id;
+ this.parent = parent;
+ this.visibility = visibility;
+ this.iwfm_map = iwfm_map;
+ }
+
+ public VHDLProcess get_parent ()
+ {
+ return parent;
+ }
+
+ public VHDLProcess.Instance add_instance
+ (
+ final VHDLEntity visibility,
+ final Map<VHDLWaveform.Instance, VHDLWaveform.Instance> convertion
+ )
+ {
+ final VHDLProcess.Instance result;
+ final Set<Map.Entry<VHDLWaveform.Instance, VHDLWaveform>> iwfm_set;
+ final Map<VHDLWaveform.Instance, VHDLWaveform> new_iwfm_map;
+
+ iwfm_set = iwfm_map.entrySet();
+
+ new_iwfm_map = new HashMap<VHDLWaveform.Instance, VHDLWaveform>();
- ports = new ArrayList<String>();
+ for
+ (
+ final Map.Entry<VHDLWaveform.Instance, VHDLWaveform> me: iwfm_set
+ )
+ {
+ new_iwfm_map.put
+ (
+ convertion.get(me.getKey()),
+ me.getValue()
+ );
+ }
+
+ result =
+ new VHDLProcess.Instance
+ (
+ Instances.get_id_for(parent.instances_count),
+ parent,
+ visibility,
+ new_iwfm_map
+ );
+
+ parent.instances_count += 1;
+
+ return result;
+ }
}
}
diff --git a/instance-calculator/src/VHDLWaveform.java b/instance-calculator/src/VHDLWaveform.java
new file mode 100644
index 0000000..83b9626
--- /dev/null
+++ b/instance-calculator/src/VHDLWaveform.java
@@ -0,0 +1,99 @@
+import java.util.*;
+
+public class VHDLWaveform
+{
+ private static final Map<String, VHDLWaveform> FROM_ID;
+
+ static
+ {
+ FROM_ID = new HashMap<String, VHDLWaveform>();
+ }
+
+ public static void add_element (final String id)
+ {
+ if (!FROM_ID.containsKey(id))
+ {
+ FROM_ID.put(id, new VHDLWaveform(id));
+ }
+ }
+
+ public static VHDLWaveform get_from_id (final String id)
+ {
+ return FROM_ID.get(id);
+ }
+
+ public static boolean handle_is_accessed_by
+ (
+ final String wfm_id,
+ final String ps_id
+ )
+ {
+ /* TODO */
+ return false;
+ }
+
+/******************************************************************************/
+ private final Collection<String> accessed_wfm;
+ private final Collection<VHDLWaveform.Instance> instances;
+ private final String id;
+ private int instances_count;
+
+ private VHDLWaveform (final String id)
+ {
+ this.id = id;
+ accessed_wfm = new ArrayList<String>();
+ instances = new ArrayList<VHDLWaveform.Instance>();
+ instances_count = 0;
+ }
+
+ public VHDLWaveform.Instance add_instance
+ (
+ final VHDLEntity visibility
+ )
+ {
+ final VHDLWaveform.Instance result;
+
+ result =
+ new VHDLWaveform.Instance
+ (
+ Instances.get_id_for(instances_count),
+ this,
+ visibility
+ );
+
+ instances.add(result);
+
+ instances_count += 1;
+
+ return result;
+ }
+
+ public String get_id ()
+ {
+ return id;
+ }
+
+ public static class Instance
+ {
+ private final String id;
+ private final VHDLWaveform parent;
+ private final VHDLEntity visibility;
+
+ private Instance
+ (
+ final String id,
+ final VHDLWaveform parent,
+ final VHDLEntity visibility
+ )
+ {
+ this.id = id;
+ this.parent = parent;
+ this.visibility = visibility;
+ }
+
+ public VHDLWaveform get_parent ()
+ {
+ return parent;
+ }
+ }
+}