Added project specific format; Default values in WireArray are now U
authorFabian Stemmler <stemmler@in.tum.de>
Sat, 18 May 2019 13:13:45 +0000 (15:13 +0200)
committerFabian Stemmler <stemmler@in.tum.de>
Sat, 18 May 2019 13:13:45 +0000 (15:13 +0200)
30 files changed:
era.mi/.classpath
era.mi/.settings/org.eclipse.jdt.core.prefs
era.mi/.settings/org.eclipse.jdt.ui.prefs [new file with mode: 0644]
era.mi/src/era/mi/logic/Bit.java
era.mi/src/era/mi/logic/Simulation.java
era.mi/src/era/mi/logic/Util.java
era.mi/src/era/mi/logic/components/BasicComponent.java
era.mi/src/era/mi/logic/components/BitDisplay.java
era.mi/src/era/mi/logic/components/Clock.java
era.mi/src/era/mi/logic/components/Component.java
era.mi/src/era/mi/logic/components/Demux.java
era.mi/src/era/mi/logic/components/ManualSwitch.java
era.mi/src/era/mi/logic/components/Merger.java
era.mi/src/era/mi/logic/components/Mux.java
era.mi/src/era/mi/logic/components/Splitter.java
era.mi/src/era/mi/logic/components/TriStateBuffer.java
era.mi/src/era/mi/logic/components/gates/AndGate.java
era.mi/src/era/mi/logic/components/gates/MultiInputGate.java
era.mi/src/era/mi/logic/components/gates/NotGate.java
era.mi/src/era/mi/logic/components/gates/OrGate.java
era.mi/src/era/mi/logic/components/gates/XorGate.java
era.mi/src/era/mi/logic/tests/ComponentTest.java
era.mi/src/era/mi/logic/tests/Connector.java
era.mi/src/era/mi/logic/tests/GUITest.java
era.mi/src/era/mi/logic/tests/TestBitDisplay.java
era.mi/src/era/mi/logic/timeline/Timeline.java
era.mi/src/era/mi/logic/timeline/TimelineEvent.java
era.mi/src/era/mi/logic/timeline/TimelineEventHandler.java
era.mi/src/era/mi/logic/wires/WireArray.java
era.mi/src/era/mi/logic/wires/WireArrayObserver.java

index bc8d71b..d286d86 100644 (file)
@@ -1,11 +1,13 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<classpath>
-       <classpathentry kind="src" path="src"/>
-       <classpathentry kind="con" path="org.eclipse.jdt.junit.JUNIT_CONTAINER/5"/>
-       <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-10">
-               <attributes>
-                       <attribute name="module" value="true"/>
-               </attributes>
-       </classpathentry>
-       <classpathentry kind="output" path="bin"/>
-</classpath>
+<?xml version="1.0" encoding="UTF-8"?>\r
+<classpath>\r
+       <classpathentry kind="src" path="src" />\r
+       <classpathentry kind="con"\r
+               path="org.eclipse.jdt.junit.JUNIT_CONTAINER/5" />\r
+       <classpathentry kind="con"\r
+               path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-10">\r
+               <attributes>\r
+                       <attribute name="module" value="true" />\r
+               </attributes>\r
+       </classpathentry>\r
+       <classpathentry kind="output" path="bin" />\r
+</classpath>\r
index a54bb93..c4bbd67 100644 (file)
-eclipse.preferences.version=1
-org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
-org.eclipse.jdt.core.compiler.codegen.targetPlatform=10
-org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve
-org.eclipse.jdt.core.compiler.compliance=10
-org.eclipse.jdt.core.compiler.debug.lineNumber=generate
-org.eclipse.jdt.core.compiler.debug.localVariable=generate
-org.eclipse.jdt.core.compiler.debug.sourceFile=generate
-org.eclipse.jdt.core.compiler.problem.assertIdentifier=error
-org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
-org.eclipse.jdt.core.compiler.release=enabled
-org.eclipse.jdt.core.compiler.source=10
+eclipse.preferences.version=1\r
+org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled\r
+org.eclipse.jdt.core.compiler.codegen.targetPlatform=10\r
+org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve\r
+org.eclipse.jdt.core.compiler.compliance=10\r
+org.eclipse.jdt.core.compiler.debug.lineNumber=generate\r
+org.eclipse.jdt.core.compiler.debug.localVariable=generate\r
+org.eclipse.jdt.core.compiler.debug.sourceFile=generate\r
+org.eclipse.jdt.core.compiler.problem.assertIdentifier=error\r
+org.eclipse.jdt.core.compiler.problem.enumIdentifier=error\r
+org.eclipse.jdt.core.compiler.release=enabled\r
+org.eclipse.jdt.core.compiler.source=10\r
+org.eclipse.jdt.core.formatter.align_assignment_statements_on_columns=false\r
+org.eclipse.jdt.core.formatter.align_fields_grouping_blank_lines=2147483647\r
+org.eclipse.jdt.core.formatter.align_type_members_on_columns=false\r
+org.eclipse.jdt.core.formatter.align_variable_declarations_on_columns=false\r
+org.eclipse.jdt.core.formatter.align_with_spaces=false\r
+org.eclipse.jdt.core.formatter.alignment_for_arguments_in_allocation_expression=16\r
+org.eclipse.jdt.core.formatter.alignment_for_arguments_in_annotation=0\r
+org.eclipse.jdt.core.formatter.alignment_for_arguments_in_enum_constant=16\r
+org.eclipse.jdt.core.formatter.alignment_for_arguments_in_explicit_constructor_call=16\r
+org.eclipse.jdt.core.formatter.alignment_for_arguments_in_method_invocation=16\r
+org.eclipse.jdt.core.formatter.alignment_for_arguments_in_qualified_allocation_expression=16\r
+org.eclipse.jdt.core.formatter.alignment_for_assignment=0\r
+org.eclipse.jdt.core.formatter.alignment_for_binary_expression=16\r
+org.eclipse.jdt.core.formatter.alignment_for_compact_if=16\r
+org.eclipse.jdt.core.formatter.alignment_for_compact_loops=16\r
+org.eclipse.jdt.core.formatter.alignment_for_conditional_expression=80\r
+org.eclipse.jdt.core.formatter.alignment_for_enum_constants=16\r
+org.eclipse.jdt.core.formatter.alignment_for_expressions_in_array_initializer=16\r
+org.eclipse.jdt.core.formatter.alignment_for_expressions_in_for_loop_header=0\r
+org.eclipse.jdt.core.formatter.alignment_for_method_declaration=0\r
+org.eclipse.jdt.core.formatter.alignment_for_module_statements=16\r
+org.eclipse.jdt.core.formatter.alignment_for_multiple_fields=16\r
+org.eclipse.jdt.core.formatter.alignment_for_parameterized_type_references=0\r
+org.eclipse.jdt.core.formatter.alignment_for_parameters_in_constructor_declaration=16\r
+org.eclipse.jdt.core.formatter.alignment_for_parameters_in_method_declaration=16\r
+org.eclipse.jdt.core.formatter.alignment_for_resources_in_try=80\r
+org.eclipse.jdt.core.formatter.alignment_for_selector_in_method_invocation=16\r
+org.eclipse.jdt.core.formatter.alignment_for_superclass_in_type_declaration=16\r
+org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_enum_declaration=16\r
+org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_type_declaration=16\r
+org.eclipse.jdt.core.formatter.alignment_for_throws_clause_in_constructor_declaration=16\r
+org.eclipse.jdt.core.formatter.alignment_for_throws_clause_in_method_declaration=16\r
+org.eclipse.jdt.core.formatter.alignment_for_type_arguments=0\r
+org.eclipse.jdt.core.formatter.alignment_for_type_parameters=0\r
+org.eclipse.jdt.core.formatter.alignment_for_union_type_in_multicatch=16\r
+org.eclipse.jdt.core.formatter.blank_lines_after_imports=1\r
+org.eclipse.jdt.core.formatter.blank_lines_after_package=1\r
+org.eclipse.jdt.core.formatter.blank_lines_before_field=0\r
+org.eclipse.jdt.core.formatter.blank_lines_before_first_class_body_declaration=0\r
+org.eclipse.jdt.core.formatter.blank_lines_before_imports=1\r
+org.eclipse.jdt.core.formatter.blank_lines_before_member_type=1\r
+org.eclipse.jdt.core.formatter.blank_lines_before_method=1\r
+org.eclipse.jdt.core.formatter.blank_lines_before_new_chunk=1\r
+org.eclipse.jdt.core.formatter.blank_lines_before_package=0\r
+org.eclipse.jdt.core.formatter.blank_lines_between_import_groups=1\r
+org.eclipse.jdt.core.formatter.blank_lines_between_type_declarations=1\r
+org.eclipse.jdt.core.formatter.brace_position_for_annotation_type_declaration=next_line\r
+org.eclipse.jdt.core.formatter.brace_position_for_anonymous_type_declaration=next_line\r
+org.eclipse.jdt.core.formatter.brace_position_for_array_initializer=end_of_line\r
+org.eclipse.jdt.core.formatter.brace_position_for_block=next_line\r
+org.eclipse.jdt.core.formatter.brace_position_for_block_in_case=next_line\r
+org.eclipse.jdt.core.formatter.brace_position_for_constructor_declaration=next_line\r
+org.eclipse.jdt.core.formatter.brace_position_for_enum_constant=next_line\r
+org.eclipse.jdt.core.formatter.brace_position_for_enum_declaration=next_line\r
+org.eclipse.jdt.core.formatter.brace_position_for_lambda_body=next_line\r
+org.eclipse.jdt.core.formatter.brace_position_for_method_declaration=next_line\r
+org.eclipse.jdt.core.formatter.brace_position_for_switch=next_line\r
+org.eclipse.jdt.core.formatter.brace_position_for_type_declaration=next_line\r
+org.eclipse.jdt.core.formatter.comment.align_tags_descriptions_grouped=true\r
+org.eclipse.jdt.core.formatter.comment.align_tags_names_descriptions=false\r
+org.eclipse.jdt.core.formatter.comment.clear_blank_lines_in_block_comment=false\r
+org.eclipse.jdt.core.formatter.comment.clear_blank_lines_in_javadoc_comment=false\r
+org.eclipse.jdt.core.formatter.comment.count_line_length_from_starting_position=true\r
+org.eclipse.jdt.core.formatter.comment.format_block_comments=true\r
+org.eclipse.jdt.core.formatter.comment.format_header=false\r
+org.eclipse.jdt.core.formatter.comment.format_html=true\r
+org.eclipse.jdt.core.formatter.comment.format_javadoc_comments=true\r
+org.eclipse.jdt.core.formatter.comment.format_line_comments=true\r
+org.eclipse.jdt.core.formatter.comment.format_source_code=true\r
+org.eclipse.jdt.core.formatter.comment.indent_parameter_description=false\r
+org.eclipse.jdt.core.formatter.comment.indent_root_tags=false\r
+org.eclipse.jdt.core.formatter.comment.insert_new_line_before_root_tags=insert\r
+org.eclipse.jdt.core.formatter.comment.insert_new_line_for_parameter=do not insert\r
+org.eclipse.jdt.core.formatter.comment.line_length=140\r
+org.eclipse.jdt.core.formatter.comment.new_lines_at_block_boundaries=true\r
+org.eclipse.jdt.core.formatter.comment.new_lines_at_javadoc_boundaries=true\r
+org.eclipse.jdt.core.formatter.comment.preserve_white_space_between_code_and_line_comments=false\r
+org.eclipse.jdt.core.formatter.compact_else_if=true\r
+org.eclipse.jdt.core.formatter.continuation_indentation=2\r
+org.eclipse.jdt.core.formatter.continuation_indentation_for_array_initializer=2\r
+org.eclipse.jdt.core.formatter.disabling_tag=@formatter\:off\r
+org.eclipse.jdt.core.formatter.enabling_tag=@formatter\:on\r
+org.eclipse.jdt.core.formatter.format_guardian_clause_on_one_line=false\r
+org.eclipse.jdt.core.formatter.format_line_comment_starting_on_first_column=false\r
+org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_annotation_declaration_header=true\r
+org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_enum_constant_header=true\r
+org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_enum_declaration_header=true\r
+org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_type_header=true\r
+org.eclipse.jdt.core.formatter.indent_breaks_compare_to_cases=true\r
+org.eclipse.jdt.core.formatter.indent_empty_lines=false\r
+org.eclipse.jdt.core.formatter.indent_statements_compare_to_block=true\r
+org.eclipse.jdt.core.formatter.indent_statements_compare_to_body=true\r
+org.eclipse.jdt.core.formatter.indent_switchstatements_compare_to_cases=true\r
+org.eclipse.jdt.core.formatter.indent_switchstatements_compare_to_switch=false\r
+org.eclipse.jdt.core.formatter.indentation.size=4\r
+org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_enum_constant=insert\r
+org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_field=insert\r
+org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_local_variable=insert\r
+org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_method=insert\r
+org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_package=insert\r
+org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_parameter=do not insert\r
+org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_type=insert\r
+org.eclipse.jdt.core.formatter.insert_new_line_after_label=do not insert\r
+org.eclipse.jdt.core.formatter.insert_new_line_after_opening_brace_in_array_initializer=do not insert\r
+org.eclipse.jdt.core.formatter.insert_new_line_after_type_annotation=do not insert\r
+org.eclipse.jdt.core.formatter.insert_new_line_at_end_of_file_if_missing=do not insert\r
+org.eclipse.jdt.core.formatter.insert_new_line_before_catch_in_try_statement=insert\r
+org.eclipse.jdt.core.formatter.insert_new_line_before_closing_brace_in_array_initializer=do not insert\r
+org.eclipse.jdt.core.formatter.insert_new_line_before_else_in_if_statement=do not insert\r
+org.eclipse.jdt.core.formatter.insert_new_line_before_finally_in_try_statement=insert\r
+org.eclipse.jdt.core.formatter.insert_new_line_before_while_in_do_statement=do not insert\r
+org.eclipse.jdt.core.formatter.insert_new_line_in_empty_annotation_declaration=insert\r
+org.eclipse.jdt.core.formatter.insert_new_line_in_empty_anonymous_type_declaration=insert\r
+org.eclipse.jdt.core.formatter.insert_new_line_in_empty_block=insert\r
+org.eclipse.jdt.core.formatter.insert_new_line_in_empty_enum_constant=insert\r
+org.eclipse.jdt.core.formatter.insert_new_line_in_empty_enum_declaration=insert\r
+org.eclipse.jdt.core.formatter.insert_new_line_in_empty_method_body=insert\r
+org.eclipse.jdt.core.formatter.insert_new_line_in_empty_type_declaration=insert\r
+org.eclipse.jdt.core.formatter.insert_space_after_and_in_type_parameter=insert\r
+org.eclipse.jdt.core.formatter.insert_space_after_assignment_operator=insert\r
+org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation=do not insert\r
+org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation_type_declaration=do not insert\r
+org.eclipse.jdt.core.formatter.insert_space_after_binary_operator=insert\r
+org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_arguments=do not insert\r
+org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_parameters=insert\r
+org.eclipse.jdt.core.formatter.insert_space_after_closing_brace_in_block=insert\r
+org.eclipse.jdt.core.formatter.insert_space_after_closing_paren_in_cast=insert\r
+org.eclipse.jdt.core.formatter.insert_space_after_colon_in_assert=insert\r
+org.eclipse.jdt.core.formatter.insert_space_after_colon_in_case=insert\r
+org.eclipse.jdt.core.formatter.insert_space_after_colon_in_conditional=insert\r
+org.eclipse.jdt.core.formatter.insert_space_after_colon_in_for=insert\r
+org.eclipse.jdt.core.formatter.insert_space_after_colon_in_labeled_statement=insert\r
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_allocation_expression=insert\r
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_annotation=insert\r
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_array_initializer=insert\r
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_constructor_declaration_parameters=insert\r
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_constructor_declaration_throws=insert\r
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_enum_constant_arguments=insert\r
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_enum_declarations=insert\r
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_explicitconstructorcall_arguments=insert\r
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_for_increments=insert\r
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_for_inits=insert\r
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_declaration_parameters=insert\r
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_declaration_throws=insert\r
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_invocation_arguments=insert\r
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_multiple_field_declarations=insert\r
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_multiple_local_declarations=insert\r
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_parameterized_type_reference=insert\r
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_superinterfaces=insert\r
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_type_arguments=insert\r
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_type_parameters=insert\r
+org.eclipse.jdt.core.formatter.insert_space_after_ellipsis=insert\r
+org.eclipse.jdt.core.formatter.insert_space_after_lambda_arrow=insert\r
+org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_parameterized_type_reference=do not insert\r
+org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_arguments=do not insert\r
+org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_parameters=do not insert\r
+org.eclipse.jdt.core.formatter.insert_space_after_opening_brace_in_array_initializer=insert\r
+org.eclipse.jdt.core.formatter.insert_space_after_opening_bracket_in_array_allocation_expression=do not insert\r
+org.eclipse.jdt.core.formatter.insert_space_after_opening_bracket_in_array_reference=do not insert\r
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_annotation=do not insert\r
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_cast=do not insert\r
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_catch=do not insert\r
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_constructor_declaration=do not insert\r
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_enum_constant=do not insert\r
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_for=do not insert\r
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_if=do not insert\r
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_method_declaration=do not insert\r
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_method_invocation=do not insert\r
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_parenthesized_expression=do not insert\r
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_switch=do not insert\r
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_synchronized=do not insert\r
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_try=do not insert\r
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_while=do not insert\r
+org.eclipse.jdt.core.formatter.insert_space_after_postfix_operator=do not insert\r
+org.eclipse.jdt.core.formatter.insert_space_after_prefix_operator=do not insert\r
+org.eclipse.jdt.core.formatter.insert_space_after_question_in_conditional=insert\r
+org.eclipse.jdt.core.formatter.insert_space_after_question_in_wildcard=do not insert\r
+org.eclipse.jdt.core.formatter.insert_space_after_semicolon_in_for=insert\r
+org.eclipse.jdt.core.formatter.insert_space_after_semicolon_in_try_resources=insert\r
+org.eclipse.jdt.core.formatter.insert_space_after_unary_operator=do not insert\r
+org.eclipse.jdt.core.formatter.insert_space_before_and_in_type_parameter=insert\r
+org.eclipse.jdt.core.formatter.insert_space_before_assignment_operator=insert\r
+org.eclipse.jdt.core.formatter.insert_space_before_at_in_annotation_type_declaration=insert\r
+org.eclipse.jdt.core.formatter.insert_space_before_binary_operator=insert\r
+org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_parameterized_type_reference=do not insert\r
+org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_type_arguments=do not insert\r
+org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_type_parameters=do not insert\r
+org.eclipse.jdt.core.formatter.insert_space_before_closing_brace_in_array_initializer=insert\r
+org.eclipse.jdt.core.formatter.insert_space_before_closing_bracket_in_array_allocation_expression=do not insert\r
+org.eclipse.jdt.core.formatter.insert_space_before_closing_bracket_in_array_reference=do not insert\r
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_annotation=do not insert\r
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_cast=do not insert\r
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_catch=do not insert\r
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_constructor_declaration=do not insert\r
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_enum_constant=do not insert\r
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_for=do not insert\r
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_if=do not insert\r
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_method_declaration=do not insert\r
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_method_invocation=do not insert\r
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_parenthesized_expression=do not insert\r
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_switch=do not insert\r
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_synchronized=do not insert\r
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_try=do not insert\r
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_while=do not insert\r
+org.eclipse.jdt.core.formatter.insert_space_before_colon_in_assert=insert\r
+org.eclipse.jdt.core.formatter.insert_space_before_colon_in_case=do not insert\r
+org.eclipse.jdt.core.formatter.insert_space_before_colon_in_conditional=insert\r
+org.eclipse.jdt.core.formatter.insert_space_before_colon_in_default=do not insert\r
+org.eclipse.jdt.core.formatter.insert_space_before_colon_in_for=insert\r
+org.eclipse.jdt.core.formatter.insert_space_before_colon_in_labeled_statement=do not insert\r
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_allocation_expression=do not insert\r
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_annotation=do not insert\r
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_array_initializer=do not insert\r
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_constructor_declaration_parameters=do not insert\r
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_constructor_declaration_throws=do not insert\r
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_enum_constant_arguments=do not insert\r
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_enum_declarations=do not insert\r
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_explicitconstructorcall_arguments=do not insert\r
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_for_increments=do not insert\r
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_for_inits=do not insert\r
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_declaration_parameters=do not insert\r
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_declaration_throws=do not insert\r
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_invocation_arguments=do not insert\r
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_multiple_field_declarations=do not insert\r
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_multiple_local_declarations=do not insert\r
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_parameterized_type_reference=do not insert\r
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_superinterfaces=do not insert\r
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_type_arguments=do not insert\r
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_type_parameters=do not insert\r
+org.eclipse.jdt.core.formatter.insert_space_before_ellipsis=do not insert\r
+org.eclipse.jdt.core.formatter.insert_space_before_lambda_arrow=insert\r
+org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_parameterized_type_reference=do not insert\r
+org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_type_arguments=do not insert\r
+org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_type_parameters=do not insert\r
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_annotation_type_declaration=insert\r
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_anonymous_type_declaration=insert\r
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_array_initializer=insert\r
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_block=insert\r
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_constructor_declaration=insert\r
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_enum_constant=insert\r
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_enum_declaration=insert\r
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_method_declaration=insert\r
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_switch=insert\r
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_type_declaration=insert\r
+org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_allocation_expression=do not insert\r
+org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_reference=do not insert\r
+org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_type_reference=do not insert\r
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_annotation=do not insert\r
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_annotation_type_member_declaration=do not insert\r
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_catch=insert\r
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_constructor_declaration=do not insert\r
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_enum_constant=do not insert\r
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_for=insert\r
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_if=insert\r
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_method_declaration=do not insert\r
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_method_invocation=do not insert\r
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_parenthesized_expression=do not insert\r
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_switch=insert\r
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_synchronized=insert\r
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_try=insert\r
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_while=insert\r
+org.eclipse.jdt.core.formatter.insert_space_before_parenthesized_expression_in_return=insert\r
+org.eclipse.jdt.core.formatter.insert_space_before_parenthesized_expression_in_throw=insert\r
+org.eclipse.jdt.core.formatter.insert_space_before_postfix_operator=do not insert\r
+org.eclipse.jdt.core.formatter.insert_space_before_prefix_operator=do not insert\r
+org.eclipse.jdt.core.formatter.insert_space_before_question_in_conditional=insert\r
+org.eclipse.jdt.core.formatter.insert_space_before_question_in_wildcard=do not insert\r
+org.eclipse.jdt.core.formatter.insert_space_before_semicolon=do not insert\r
+org.eclipse.jdt.core.formatter.insert_space_before_semicolon_in_for=do not insert\r
+org.eclipse.jdt.core.formatter.insert_space_before_semicolon_in_try_resources=do not insert\r
+org.eclipse.jdt.core.formatter.insert_space_before_unary_operator=do not insert\r
+org.eclipse.jdt.core.formatter.insert_space_between_brackets_in_array_type_reference=do not insert\r
+org.eclipse.jdt.core.formatter.insert_space_between_empty_braces_in_array_initializer=do not insert\r
+org.eclipse.jdt.core.formatter.insert_space_between_empty_brackets_in_array_allocation_expression=do not insert\r
+org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_annotation_type_member_declaration=do not insert\r
+org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_constructor_declaration=do not insert\r
+org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_enum_constant=do not insert\r
+org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_method_declaration=do not insert\r
+org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_method_invocation=do not insert\r
+org.eclipse.jdt.core.formatter.join_lines_in_comments=true\r
+org.eclipse.jdt.core.formatter.join_wrapped_lines=true\r
+org.eclipse.jdt.core.formatter.keep_else_statement_on_same_line=false\r
+org.eclipse.jdt.core.formatter.keep_empty_array_initializer_on_one_line=false\r
+org.eclipse.jdt.core.formatter.keep_imple_if_on_one_line=false\r
+org.eclipse.jdt.core.formatter.keep_simple_do_while_body_on_same_line=false\r
+org.eclipse.jdt.core.formatter.keep_simple_for_body_on_same_line=false\r
+org.eclipse.jdt.core.formatter.keep_simple_while_body_on_same_line=false\r
+org.eclipse.jdt.core.formatter.keep_then_statement_on_same_line=false\r
+org.eclipse.jdt.core.formatter.lineSplit=140\r
+org.eclipse.jdt.core.formatter.never_indent_block_comments_on_first_column=false\r
+org.eclipse.jdt.core.formatter.never_indent_line_comments_on_first_column=false\r
+org.eclipse.jdt.core.formatter.number_of_blank_lines_at_beginning_of_method_body=0\r
+org.eclipse.jdt.core.formatter.number_of_empty_lines_to_preserve=1\r
+org.eclipse.jdt.core.formatter.parentheses_positions_in_annotation=common_lines\r
+org.eclipse.jdt.core.formatter.parentheses_positions_in_catch_clause=common_lines\r
+org.eclipse.jdt.core.formatter.parentheses_positions_in_enum_constant_declaration=common_lines\r
+org.eclipse.jdt.core.formatter.parentheses_positions_in_for_statment=common_lines\r
+org.eclipse.jdt.core.formatter.parentheses_positions_in_if_while_statement=common_lines\r
+org.eclipse.jdt.core.formatter.parentheses_positions_in_lambda_declaration=common_lines\r
+org.eclipse.jdt.core.formatter.parentheses_positions_in_method_delcaration=common_lines\r
+org.eclipse.jdt.core.formatter.parentheses_positions_in_method_invocation=common_lines\r
+org.eclipse.jdt.core.formatter.parentheses_positions_in_switch_statement=common_lines\r
+org.eclipse.jdt.core.formatter.parentheses_positions_in_try_clause=common_lines\r
+org.eclipse.jdt.core.formatter.put_empty_statement_on_new_line=true\r
+org.eclipse.jdt.core.formatter.tabulation.char=tab\r
+org.eclipse.jdt.core.formatter.tabulation.size=4\r
+org.eclipse.jdt.core.formatter.use_on_off_tags=true\r
+org.eclipse.jdt.core.formatter.use_tabs_only_for_leading_indentations=false\r
+org.eclipse.jdt.core.formatter.wrap_before_assignment_operator=false\r
+org.eclipse.jdt.core.formatter.wrap_before_binary_operator=true\r
+org.eclipse.jdt.core.formatter.wrap_before_conditional_operator=true\r
+org.eclipse.jdt.core.formatter.wrap_before_or_operator_multicatch=true\r
+org.eclipse.jdt.core.formatter.wrap_outer_expressions_when_nested=true\r
+org.eclipse.jdt.core.javaFormatter=org.eclipse.jdt.core.defaultJavaFormatter\r
diff --git a/era.mi/.settings/org.eclipse.jdt.ui.prefs b/era.mi/.settings/org.eclipse.jdt.ui.prefs
new file mode 100644 (file)
index 0000000..ec9fa57
--- /dev/null
@@ -0,0 +1,3 @@
+eclipse.preferences.version=1\r
+formatter_profile=_MyPrefrence\r
+formatter_settings_version=14\r
index 812ee27..ff424c7 100644 (file)
@@ -5,35 +5,44 @@ import java.util.Arrays;
 /**\r
  * stdlogic according to IEEE 1164\r
  */\r
-public enum Bit {\r
+public enum Bit\r
+{\r
        U, X, ZERO, ONE, Z;\r
 \r
-       public static Bit and(Bit a, Bit b) {\r
+       public static Bit and(Bit a, Bit b)\r
+       {\r
                return a.and(b);\r
        }\r
 \r
-       public Bit and(Bit other) {\r
+       public Bit and(Bit other)\r
+       {\r
                return fromTable(AND_TABLE, this, other);\r
        }\r
 \r
-       public static Bit or(Bit a, Bit b) {\r
+       public static Bit or(Bit a, Bit b)\r
+       {\r
                return a.or(b);\r
        }\r
 \r
-       public Bit or(Bit other) {\r
+       public Bit or(Bit other)\r
+       {\r
                return fromTable(OR_TABLE, this, other);\r
        }\r
 \r
-       public static Bit xor(Bit a, Bit b) {\r
+       public static Bit xor(Bit a, Bit b)\r
+       {\r
                return a.xor(b);\r
        }\r
 \r
-       public Bit xor(Bit other) {\r
+       public Bit xor(Bit other)\r
+       {\r
                return fromTable(XOR_TABLE, this, other);\r
        }\r
 \r
-       public Bit not() {\r
-               switch (this) {\r
+       public Bit not()\r
+       {\r
+               switch (this)\r
+               {\r
                case U:\r
                        return U;\r
                case ONE:\r
@@ -45,21 +54,25 @@ public enum Bit {
                }\r
        }\r
 \r
-       public Bit[] makeArray(int length) {\r
+       public Bit[] makeArray(int length)\r
+       {\r
                Bit[] bits = new Bit[length];\r
                Arrays.fill(bits, this);\r
                return bits;\r
        }\r
 \r
-       public Bit combineWith(Bit other) {\r
+       public Bit combineWith(Bit other)\r
+       {\r
                return fromTable(JOIN_TABLE, this, other);\r
        }\r
 \r
-       public static Bit combine(Bit a, Bit b) {\r
+       public static Bit combine(Bit a, Bit b)\r
+       {\r
                return a.combineWith(b);\r
        }\r
 \r
-       private static Bit fromTable(Bit[][] table, Bit a, Bit b) {\r
+       private static Bit fromTable(Bit[][] table, Bit a, Bit b)\r
+       {\r
                return table[a.ordinal()][b.ordinal()];\r
        }\r
 \r
index 6490613..20ffbaf 100644 (file)
@@ -2,9 +2,11 @@ package era.mi.logic;
 \r
 import era.mi.logic.timeline.Timeline;\r
 \r
-public class Simulation {\r
+public class Simulation\r
+{\r
        public final static Timeline TIMELINE = new Timeline(11);\r
 \r
-       public static void main(String[] args) {\r
+       public static void main(String[] args)\r
+       {\r
        }\r
 }
\ No newline at end of file
index 5a6e4f5..88b2393 100644 (file)
@@ -2,10 +2,12 @@ package era.mi.logic;
 \r
 import java.util.Arrays;\r
 \r
-public final class Util {\r
+public final class Util\r
+{\r
 \r
        @SuppressWarnings("unchecked")\r
-       public static <T> T[] concat(T[]... arrays) {\r
+       public static <T> T[] concat(T[]... arrays)\r
+       {\r
                if (arrays.length == 0)\r
                        throw new IllegalArgumentException("Cannot concatenate 0 arrays.");\r
 \r
@@ -15,7 +17,8 @@ public final class Util {
 \r
                T[] newArray = Arrays.copyOf(arrays[0], length);\r
                int appendIndex = arrays[0].length;\r
-               for (int i = 1; i < arrays.length; i++) {\r
+               for (int i = 1; i < arrays.length; i++)\r
+               {\r
                        System.arraycopy(arrays[i], 0, newArray, appendIndex, arrays[i].length);\r
                        appendIndex += arrays[i].length;\r
                }\r
@@ -45,31 +48,38 @@ public final class Util {
 //             return (T[][]) newArray;\r
 //     }\r
 \r
-       public static Bit[] and(Bit[] a, Bit[] b) {\r
+       public static Bit[] and(Bit[] a, Bit[] b)\r
+       {\r
                return binBitOp(a, b, (bA, bB) -> Bit.and(bA, bB));\r
        }\r
 \r
-       public static Bit[] or(Bit[] a, Bit[] b) {\r
+       public static Bit[] or(Bit[] a, Bit[] b)\r
+       {\r
                return binBitOp(a, b, (bA, bB) -> Bit.or(bA, bB));\r
        }\r
 \r
-       public static Bit[] xor(Bit[] a, Bit[] b) {\r
+       public static Bit[] xor(Bit[] a, Bit[] b)\r
+       {\r
                return binBitOp(a, b, (bA, bB) -> Bit.xor(bA, bB));\r
        }\r
 \r
-       private static Bit[] binBitOp(Bit[] a, Bit[] b, BitOp op) {\r
+       private static Bit[] binBitOp(Bit[] a, Bit[] b, BitOp op)\r
+       {\r
                if (a.length != b.length)\r
                        throw new IllegalArgumentException("Bit Arrays were not of equal length.");\r
                Bit[] out = new Bit[a.length];\r
-               for (int i = 0; i < a.length; i++) {\r
+               for (int i = 0; i < a.length; i++)\r
+               {\r
                        out[i] = op.execute(a[i], b[i]);\r
                }\r
                return out;\r
        }\r
 \r
-       public static Bit[] not(Bit[] a) {\r
+       public static Bit[] not(Bit[] a)\r
+       {\r
                Bit[] out = new Bit[a.length];\r
-               for (int i = 0; i < a.length; i++) {\r
+               for (int i = 0; i < a.length; i++)\r
+               {\r
                        out[i] = a[i].not();\r
                }\r
                return out;\r
@@ -80,16 +90,19 @@ public final class Util {
         * \r
         * @author Christian Femers\r
         */\r
-       public static Bit[] combineInto(Bit[] dest, Bit[] addition) {\r
+       public static Bit[] combineInto(Bit[] dest, Bit[] addition)\r
+       {\r
                if (dest.length != addition.length)\r
                        throw new IllegalArgumentException("Bit Arrays were not of equal length.");\r
-               for (int i = 0; i < addition.length; i++) {\r
+               for (int i = 0; i < addition.length; i++)\r
+               {\r
                        dest[i] = dest[i].combineWith(addition[i]);\r
                }\r
                return dest;\r
        }\r
 \r
-       interface BitOp {\r
+       interface BitOp\r
+       {\r
                Bit execute(Bit a, Bit b);\r
        }\r
 }\r
index 7b4069c..204f3a6 100644 (file)
@@ -10,7 +10,8 @@ import era.mi.logic.wires.WireArrayObserver;
  * \r
  * @author Fabian Stemmler\r
  */\r
-public abstract class BasicComponent implements WireArrayObserver, Component {\r
+public abstract class BasicComponent implements WireArrayObserver, Component\r
+{\r
        private int processTime;\r
 \r
        /**\r
@@ -19,13 +20,16 @@ public abstract class BasicComponent implements WireArrayObserver, Component {
         * \r
         * @author Fabian Stemmler\r
         */\r
-       public BasicComponent(int processTime) {\r
+       public BasicComponent(int processTime)\r
+       {\r
                this.processTime = processTime > 0 ? processTime : 1;\r
        }\r
 \r
        @Override\r
-       public void update(WireArray initiator, Bit[] oldValues) {\r
-               Simulation.TIMELINE.addEvent((e) -> {\r
+       public void update(WireArray initiator, Bit[] oldValues)\r
+       {\r
+               Simulation.TIMELINE.addEvent((e) ->\r
+               {\r
                        compute();\r
                }, processTime);\r
        }\r
index 25ee2f8..fd1a88c 100644 (file)
@@ -8,11 +8,13 @@ import java.util.List;
 import era.mi.logic.Bit;\r
 import era.mi.logic.wires.WireArray;\r
 \r
-public class BitDisplay extends BasicComponent {\r
+public class BitDisplay extends BasicComponent\r
+{\r
        private final WireArray in;\r
        private Bit[] displayedValue;\r
 \r
-       public BitDisplay(WireArray in) {\r
+       public BitDisplay(WireArray in)\r
+       {\r
                super(1);\r
                this.in = in;\r
                in.addObserver(this);\r
@@ -20,25 +22,30 @@ public class BitDisplay extends BasicComponent {
        }\r
 \r
        @Override\r
-       protected void compute() {\r
+       protected void compute()\r
+       {\r
                displayedValue = in.getValues();\r
        }\r
 \r
-       public Bit[] getDisplayedValue() {\r
+       public Bit[] getDisplayedValue()\r
+       {\r
                return displayedValue;\r
        }\r
 \r
-       public boolean isDisplaying(Bit... values) {\r
+       public boolean isDisplaying(Bit... values)\r
+       {\r
                return Arrays.equals(displayedValue, values);\r
        }\r
 \r
        @Override\r
-       public List<WireArray> getAllInputs() {\r
+       public List<WireArray> getAllInputs()\r
+       {\r
                return Collections.unmodifiableList(Arrays.asList(in));\r
        }\r
 \r
        @Override\r
-       public List<WireArray> getAllOutputs() {\r
+       public List<WireArray> getAllOutputs()\r
+       {\r
                return Collections.unmodifiableList(new ArrayList<WireArray>());\r
        }\r
 }\r
index 8e966f1..ac47dbf 100644 (file)
@@ -9,11 +9,12 @@ import era.mi.logic.Simulation;
 import era.mi.logic.timeline.TimelineEvent;\r
 import era.mi.logic.timeline.TimelineEventHandler;\r
 import era.mi.logic.wires.WireArray;\r
-import era.mi.logic.wires.WireArray.WireArrayInput;\r
+import era.mi.logic.wires.WireArray.WireArrayEnd;\r
 \r
-public class Clock implements TimelineEventHandler, Component {\r
+public class Clock implements TimelineEventHandler, Component\r
+{\r
        private boolean toggle = false;\r
-       private WireArrayInput outI;\r
+       private WireArrayEnd outI;\r
        private int delta;\r
 \r
        /**\r
@@ -21,34 +22,40 @@ public class Clock implements TimelineEventHandler, Component {
         * @param out   {@link WireArray} the clock's impulses are fed into\r
         * @param delta ticks between rising and falling edge\r
         */\r
-       public Clock(WireArray out, int delta) {\r
+       public Clock(WireArray out, int delta)\r
+       {\r
                this.delta = delta;\r
                this.outI = out.createInput();\r
                Simulation.TIMELINE.addEvent(this, 50);\r
        }\r
 \r
        @Override\r
-       public void handle(TimelineEvent e) {\r
+       public void handle(TimelineEvent e)\r
+       {\r
                addToTimeline();\r
                outI.feedSignals(new Bit[] { toggle ? Bit.ONE : Bit.ZERO });\r
                toggle = !toggle;\r
        }\r
 \r
-       public WireArray getOut() {\r
+       public WireArray getOut()\r
+       {\r
                return outI.owner;\r
        }\r
 \r
-       private void addToTimeline() {\r
+       private void addToTimeline()\r
+       {\r
                Simulation.TIMELINE.addEvent(this, delta);\r
        }\r
 \r
        @Override\r
-       public List<WireArray> getAllInputs() {\r
+       public List<WireArray> getAllInputs()\r
+       {\r
                return Collections.unmodifiableList(Arrays.asList());\r
        }\r
 \r
        @Override\r
-       public List<WireArray> getAllOutputs() {\r
+       public List<WireArray> getAllOutputs()\r
+       {\r
                return Collections.unmodifiableList(Arrays.asList(outI.owner));\r
        }\r
 }\r
index 518521f..c3919bf 100644 (file)
@@ -4,7 +4,8 @@ import java.util.List;
 \r
 import era.mi.logic.wires.WireArray;\r
 \r
-public interface Component {\r
+public interface Component\r
+{\r
 \r
        /**\r
         * Returns immutable list of all inputs to the {@link Component} (including e.g. the select bits to a MUX). Intended for visualization\r
index f77aa38..64f5d26 100644 (file)
@@ -5,7 +5,7 @@ import java.util.Collections;
 import java.util.List;\r
 \r
 import era.mi.logic.wires.WireArray;\r
-import era.mi.logic.wires.WireArray.WireArrayInput;\r
+import era.mi.logic.wires.WireArray.WireArrayEnd;\r
 \r
 /**\r
  * Models a multiplexer. Takes an arbitrary amount of input {@link WireArray}s, one of which, as determined by select, is put through to the\r
@@ -14,10 +14,11 @@ import era.mi.logic.wires.WireArray.WireArrayInput;
  * @author Fabian Stemmler\r
  *\r
  */\r
-public class Demux extends BasicComponent {\r
+public class Demux extends BasicComponent\r
+{\r
        private final WireArray select, in;\r
        private final WireArray[] outputs;\r
-       private final WireArrayInput[] outputsI;\r
+       private final WireArrayEnd[] outputsI;\r
        private final int outputSize;\r
        private int selected = -1;\r
 \r
@@ -28,14 +29,16 @@ public class Demux extends BasicComponent {
         * @param select  Indexes the input array which is to be mapped to the output. Must have enough bits to index all inputs.\r
         * @param outputs One of these inputs is mapped to the output, depending on the select bits\r
         */\r
-       public Demux(int processTime, WireArray in, WireArray select, WireArray... outputs) {\r
+       public Demux(int processTime, WireArray in, WireArray select, WireArray... outputs)\r
+       {\r
                super(processTime);\r
                outputSize = in.length;\r
 \r
                this.in = in;\r
                this.outputs = outputs;\r
-               this.outputsI = new WireArrayInput[outputs.length];\r
-               for (int i = 0; i < this.outputsI.length; i++) {\r
+               this.outputsI = new WireArrayEnd[outputs.length];\r
+               for (int i = 0; i < this.outputsI.length; i++)\r
+               {\r
                        if (outputs[i].length != outputSize)\r
                                throw new IllegalArgumentException("All DEMUX wire arrays must be of uniform length!");\r
                        this.outputsI[i] = outputs[i].createInput();\r
@@ -52,7 +55,8 @@ public class Demux extends BasicComponent {
        }\r
 \r
        @Override\r
-       public void compute() {\r
+       public void compute()\r
+       {\r
                int selectValue = select.hasNumericValue() ? (int) select.getUnsignedValue() : -1;\r
                if (selectValue >= outputsI.length)\r
                        selectValue = -1;\r
@@ -67,12 +71,14 @@ public class Demux extends BasicComponent {
        }\r
 \r
        @Override\r
-       public List<WireArray> getAllInputs() {\r
+       public List<WireArray> getAllInputs()\r
+       {\r
                return Collections.unmodifiableList(Arrays.asList(in, select));\r
        }\r
 \r
        @Override\r
-       public List<WireArray> getAllOutputs() {\r
+       public List<WireArray> getAllOutputs()\r
+       {\r
                return Collections.unmodifiableList(Arrays.asList(outputs));\r
        }\r
 }\r
index 93c1319..14ca280 100644 (file)
@@ -4,7 +4,7 @@ import java.util.List;
 \r
 import era.mi.logic.Bit;\r
 import era.mi.logic.wires.WireArray;\r
-import era.mi.logic.wires.WireArray.WireArrayInput;\r
+import era.mi.logic.wires.WireArray.WireArrayEnd;\r
 \r
 /**\r
  * This class models a simple on/off (ONE/ZERO) switch for user interaction.\r
@@ -12,52 +12,62 @@ import era.mi.logic.wires.WireArray.WireArrayInput;
  * @author Christian Femers\r
  *\r
  */\r
-public class ManualSwitch implements Component {\r
+public class ManualSwitch implements Component\r
+{\r
        private WireArray output;\r
-       private WireArrayInput outputI;\r
+       private WireArrayEnd outputI;\r
        private boolean isOn;\r
 \r
-       public ManualSwitch(WireArray output) {\r
+       public ManualSwitch(WireArray output)\r
+       {\r
                if (output.length != 1)\r
                        throw new IllegalArgumentException("Switch output can be only a single wire");\r
                this.output = output;\r
                this.outputI = output.createInput();\r
        }\r
 \r
-       public void switchOn() {\r
+       public void switchOn()\r
+       {\r
                setState(true);\r
        }\r
 \r
-       public void switchOff() {\r
+       public void switchOff()\r
+       {\r
                setState(false);\r
        }\r
 \r
-       public void toggle() {\r
+       public void toggle()\r
+       {\r
                setState(!isOn);\r
        }\r
 \r
-       public void setState(boolean isOn) {\r
+       public void setState(boolean isOn)\r
+       {\r
                if (this.isOn == isOn)\r
                        return;\r
                this.isOn = isOn;\r
                outputI.feedSignals(getValue());\r
        }\r
 \r
-       public boolean isOn() {\r
+       public boolean isOn()\r
+       {\r
                return isOn;\r
        }\r
 \r
-       public Bit getValue() {\r
+       public Bit getValue()\r
+       {\r
                return isOn ? Bit.ONE : Bit.ZERO;\r
        }\r
 \r
        @Override\r
-       public List<WireArray> getAllInputs() {\r
+       public List<WireArray> getAllInputs()\r
+       {\r
                return List.of();\r
        }\r
 \r
        @Override\r
-       public List<WireArray> getAllOutputs() {\r
+       public List<WireArray> getAllOutputs()\r
+       {\r
                return List.of(output);\r
        }\r
 \r
index a54fb95..75884f8 100644 (file)
@@ -6,11 +6,12 @@ import java.util.List;
 \r
 import era.mi.logic.Bit;\r
 import era.mi.logic.wires.WireArray;\r
-import era.mi.logic.wires.WireArray.WireArrayInput;\r
+import era.mi.logic.wires.WireArray.WireArrayEnd;\r
 import era.mi.logic.wires.WireArrayObserver;\r
 \r
-public class Merger implements WireArrayObserver, Component {\r
-       private WireArrayInput outI;\r
+public class Merger implements WireArrayObserver, Component\r
+{\r
+       private WireArrayEnd outI;\r
        private WireArray[] inputs;\r
        private int[] beginningIndex;\r
 \r
@@ -19,13 +20,15 @@ public class Merger implements WireArrayObserver, Component {
         * @param union  The output of merging n {@link WireArray}s into one. Must have length = a1.length() + a2.length() + ... + an.length().\r
         * @param inputs The inputs to be merged into the union\r
         */\r
-       public Merger(WireArray union, WireArray... inputs) {\r
+       public Merger(WireArray union, WireArray... inputs)\r
+       {\r
                this.inputs = inputs;\r
                this.outI = union.createInput();\r
                this.beginningIndex = new int[inputs.length];\r
 \r
                int length = 0;\r
-               for (int i = 0; i < inputs.length; i++) {\r
+               for (int i = 0; i < inputs.length; i++)\r
+               {\r
                        beginningIndex[i] = length;\r
                        length += inputs[i].length;\r
                        inputs[i].addObserver(this);\r
@@ -36,39 +39,46 @@ public class Merger implements WireArrayObserver, Component {
                                        "The output of merging n WireArrays into one must have length = a1.length() + a2.length() + ... + an.length().");\r
        }\r
 \r
-       public WireArray getInput(int index) {\r
+       public WireArray getInput(int index)\r
+       {\r
                return inputs[index];\r
        }\r
 \r
-       public WireArray getUnion() {\r
+       public WireArray getUnion()\r
+       {\r
                return outI.owner;\r
        }\r
 \r
        @Override\r
-       public void update(WireArray initiator, Bit[] oldValues) {\r
+       public void update(WireArray initiator, Bit[] oldValues)\r
+       {\r
                int index = find(initiator);\r
                int beginning = beginningIndex[index];\r
                outI.feedSignals(beginning, initiator.getValues());\r
        }\r
 \r
-       private int find(WireArray w) {\r
+       private int find(WireArray w)\r
+       {\r
                for (int i = 0; i < inputs.length; i++)\r
                        if (inputs[i] == w)\r
                                return i;\r
                return -1;\r
        }\r
 \r
-       public WireArray[] getInputs() {\r
+       public WireArray[] getInputs()\r
+       {\r
                return inputs.clone();\r
        }\r
 \r
        @Override\r
-       public List<WireArray> getAllInputs() {\r
+       public List<WireArray> getAllInputs()\r
+       {\r
                return Collections.unmodifiableList(Arrays.asList(inputs));\r
        }\r
 \r
        @Override\r
-       public List<WireArray> getAllOutputs() {\r
+       public List<WireArray> getAllOutputs()\r
+       {\r
                return Collections.unmodifiableList(Arrays.asList(outI.owner));\r
        }\r
 }\r
index d98e0f1..6003723 100644 (file)
@@ -6,7 +6,7 @@ import java.util.Collections;
 import java.util.List;\r
 \r
 import era.mi.logic.wires.WireArray;\r
-import era.mi.logic.wires.WireArray.WireArrayInput;\r
+import era.mi.logic.wires.WireArray.WireArrayEnd;\r
 \r
 /**\r
  * Models a multiplexer. Takes an arbitrary amount of input {@link WireArray}s, one of which, as determined by select, is put through to the\r
@@ -15,9 +15,10 @@ import era.mi.logic.wires.WireArray.WireArrayInput;
  * @author Fabian Stemmler\r
  *\r
  */\r
-public class Mux extends BasicComponent {\r
+public class Mux extends BasicComponent\r
+{\r
        private WireArray select;\r
-       private WireArrayInput outI;\r
+       private WireArrayEnd outI;\r
        private WireArray[] inputs;\r
        private final int outputSize;\r
 \r
@@ -28,12 +29,14 @@ public class Mux extends BasicComponent {
         * @param select Indexes the input array which is to be mapped to the output. Must have enough bits to index all inputs.\r
         * @param inputs One of these inputs is mapped to the output, depending on the select bits\r
         */\r
-       public Mux(int processTime, WireArray out, WireArray select, WireArray... inputs) {\r
+       public Mux(int processTime, WireArray out, WireArray select, WireArray... inputs)\r
+       {\r
                super(processTime);\r
                outputSize = out.length;\r
 \r
                this.inputs = inputs.clone();\r
-               for (int i = 0; i < this.inputs.length; i++) {\r
+               for (int i = 0; i < this.inputs.length; i++)\r
+               {\r
                        if (inputs[i].length != outputSize)\r
                                throw new IllegalArgumentException("All MUX wire arrays must be of uniform length!");\r
                        inputs[i].addObserver(this);\r
@@ -50,18 +53,22 @@ public class Mux extends BasicComponent {
                outI = out.createInput();\r
        }\r
 \r
-       public WireArray getOut() {\r
+       public WireArray getOut()\r
+       {\r
                return outI.owner;\r
        }\r
 \r
-       public WireArray getSelect() {\r
+       public WireArray getSelect()\r
+       {\r
                return select;\r
        }\r
 \r
        @Override\r
-       public void compute() {\r
+       public void compute()\r
+       {\r
                int selectValue;\r
-               if (!select.hasNumericValue() || (selectValue = (int) select.getUnsignedValue()) >= inputs.length) {\r
+               if (!select.hasNumericValue() || (selectValue = (int) select.getUnsignedValue()) >= inputs.length)\r
+               {\r
                        outI.clearSignals();\r
                        return;\r
                }\r
@@ -71,14 +78,16 @@ public class Mux extends BasicComponent {
        }\r
 \r
        @Override\r
-       public List<WireArray> getAllInputs() {\r
+       public List<WireArray> getAllInputs()\r
+       {\r
                ArrayList<WireArray> wires = new ArrayList<WireArray>(Arrays.asList(inputs));\r
                wires.add(select);\r
                return Collections.unmodifiableList(wires);\r
        }\r
 \r
        @Override\r
-       public List<WireArray> getAllOutputs() {\r
+       public List<WireArray> getAllOutputs()\r
+       {\r
                return Collections.unmodifiableList(Arrays.asList(outI.owner));\r
        }\r
 }\r
index ff23e5c..1264aa3 100644 (file)
@@ -2,14 +2,16 @@ package era.mi.logic.components;
 \r
 import era.mi.logic.Bit;\r
 import era.mi.logic.wires.WireArray;\r
-import era.mi.logic.wires.WireArray.WireArrayInput;\r
+import era.mi.logic.wires.WireArray.WireArrayEnd;\r
 import era.mi.logic.wires.WireArrayObserver;\r
 \r
-public class Splitter implements WireArrayObserver {\r
+public class Splitter implements WireArrayObserver\r
+{\r
        private WireArray input;\r
-       private WireArrayInput[] outputs;\r
+       private WireArrayEnd[] outputs;\r
 \r
-       public Splitter(WireArray input, WireArray... outputs) {\r
+       public Splitter(WireArray input, WireArray... outputs)\r
+       {\r
                this.input = input;\r
                this.outputs = WireArray.extractInputs(outputs);\r
                input.addObserver(this);\r
@@ -22,10 +24,12 @@ public class Splitter implements WireArrayObserver {
                                        "The input of splitting one into n WireArrays must have length = a1.length() + a2.length() + ... + an.length().");\r
        }\r
 \r
-       protected void compute() {\r
+       protected void compute()\r
+       {\r
                int startIndex = 0;\r
                Bit[] inputBits = input.getValues();\r
-               for (int i = 0; i < outputs.length; i++) {\r
+               for (int i = 0; i < outputs.length; i++)\r
+               {\r
                        Bit[] outputBits = new Bit[outputs[i].owner.length];\r
                        System.arraycopy(inputBits, startIndex, outputBits, 0, outputs[i].owner.length);\r
                        outputs[i].feedSignals(outputBits);\r
@@ -34,7 +38,8 @@ public class Splitter implements WireArrayObserver {
        }\r
 \r
        @Override\r
-       public void update(WireArray initiator, Bit[] oldValues) {\r
+       public void update(WireArray initiator, Bit[] oldValues)\r
+       {\r
                compute();\r
        }\r
 }\r
index 4db18e4..8a41424 100644 (file)
@@ -6,13 +6,15 @@ import java.util.List;
 \r
 import era.mi.logic.Bit;\r
 import era.mi.logic.wires.WireArray;\r
-import era.mi.logic.wires.WireArray.WireArrayInput;\r
+import era.mi.logic.wires.WireArray.WireArrayEnd;\r
 \r
-public class TriStateBuffer extends BasicComponent {\r
+public class TriStateBuffer extends BasicComponent\r
+{\r
        WireArray in, enable;\r
-       WireArrayInput outI;\r
+       WireArrayEnd outI;\r
 \r
-       public TriStateBuffer(int processTime, WireArray in, WireArray out, WireArray enable) {\r
+       public TriStateBuffer(int processTime, WireArray in, WireArray out, WireArray enable)\r
+       {\r
                super(processTime);\r
                if (in.length != out.length)\r
                        throw new IllegalArgumentException(\r
@@ -27,7 +29,8 @@ public class TriStateBuffer extends BasicComponent {
        }\r
 \r
        @Override\r
-       protected void compute() {\r
+       protected void compute()\r
+       {\r
                if (enable.getValue() == Bit.ONE)\r
                        outI.feedSignals(in.getValues());\r
                else\r
@@ -35,12 +38,14 @@ public class TriStateBuffer extends BasicComponent {
        }\r
 \r
        @Override\r
-       public List<WireArray> getAllInputs() {\r
+       public List<WireArray> getAllInputs()\r
+       {\r
                return Collections.unmodifiableList(Arrays.asList(in, enable));\r
        }\r
 \r
        @Override\r
-       public List<WireArray> getAllOutputs() {\r
+       public List<WireArray> getAllOutputs()\r
+       {\r
                return Collections.unmodifiableList(Arrays.asList(outI.owner));\r
        }\r
 \r
index 88d7841..35664d3 100644 (file)
@@ -3,8 +3,10 @@ package era.mi.logic.components.gates;
 import era.mi.logic.Util;\r
 import era.mi.logic.wires.WireArray;\r
 \r
-public class AndGate extends MultiInputGate {\r
-       public AndGate(int processTime, WireArray out, WireArray... in) {\r
+public class AndGate extends MultiInputGate\r
+{\r
+       public AndGate(int processTime, WireArray out, WireArray... in)\r
+       {\r
                super(processTime, Util::and, out, in);\r
        }\r
 }\r
index d67e8ea..faf0eb6 100644 (file)
@@ -7,23 +7,26 @@ import java.util.List;
 import era.mi.logic.Bit;\r
 import era.mi.logic.components.BasicComponent;\r
 import era.mi.logic.wires.WireArray;\r
-import era.mi.logic.wires.WireArray.WireArrayInput;\r
+import era.mi.logic.wires.WireArray.WireArrayEnd;\r
 \r
-public abstract class MultiInputGate extends BasicComponent {\r
+public abstract class MultiInputGate extends BasicComponent\r
+{\r
        protected WireArray[] in;\r
        protected WireArray out;\r
-       protected WireArrayInput outI;\r
+       protected WireArrayEnd outI;\r
        protected final int length;\r
        protected Operation op;\r
 \r
-       protected MultiInputGate(int processTime, Operation op, WireArray out, WireArray... in) {\r
+       protected MultiInputGate(int processTime, Operation op, WireArray out, WireArray... in)\r
+       {\r
                super(processTime);\r
                this.op = op;\r
                length = out.length;\r
                this.in = in.clone();\r
                if (in.length < 1)\r
                        throw new IllegalArgumentException(String.format("Cannot create gate with %d wires.", in.length));\r
-               for (WireArray w : in) {\r
+               for (WireArray w : in)\r
+               {\r
                        if (w.length != length)\r
                                throw new IllegalArgumentException("All wires connected to the gate must be of uniform length.");\r
                        w.addObserver(this);\r
@@ -33,23 +36,27 @@ public abstract class MultiInputGate extends BasicComponent {
        }\r
 \r
        @Override\r
-       public List<WireArray> getAllInputs() {\r
+       public List<WireArray> getAllInputs()\r
+       {\r
                return Collections.unmodifiableList(Arrays.asList(in));\r
        }\r
 \r
        @Override\r
-       public List<WireArray> getAllOutputs() {\r
+       public List<WireArray> getAllOutputs()\r
+       {\r
                return Collections.unmodifiableList(Arrays.asList(out));\r
        }\r
 \r
-       protected void compute() {\r
+       protected void compute()\r
+       {\r
                Bit[] result = in[0].getValues();\r
                for (int i = 1; i < in.length; i++)\r
                        result = op.execute(result, in[i].getValues());\r
                outI.feedSignals(result);\r
        }\r
 \r
-       protected interface Operation {\r
+       protected interface Operation\r
+       {\r
                public Bit[] execute(Bit[] a, Bit[] b);\r
        }\r
 }\r
index 01b2cc8..79c7f3e 100644 (file)
@@ -7,13 +7,15 @@ import java.util.List;
 import era.mi.logic.Util;\r
 import era.mi.logic.components.BasicComponent;\r
 import era.mi.logic.wires.WireArray;\r
-import era.mi.logic.wires.WireArray.WireArrayInput;\r
+import era.mi.logic.wires.WireArray.WireArrayEnd;\r
 \r
-public class NotGate extends BasicComponent {\r
+public class NotGate extends BasicComponent\r
+{\r
        private WireArray in, out;\r
-       private WireArrayInput outI;\r
+       private WireArrayEnd outI;\r
 \r
-       public NotGate(int processTime, WireArray in, WireArray out) {\r
+       public NotGate(int processTime, WireArray in, WireArray out)\r
+       {\r
                super(processTime);\r
                this.in = in;\r
                in.addObserver(this);\r
@@ -21,25 +23,30 @@ public class NotGate extends BasicComponent {
                outI = out.createInput();\r
        }\r
 \r
-       public void compute() {\r
+       public void compute()\r
+       {\r
                outI.feedSignals(Util.not(in.getValues()));\r
        }\r
 \r
-       public WireArray getIn() {\r
+       public WireArray getIn()\r
+       {\r
                return in;\r
        }\r
 \r
-       public WireArray getOut() {\r
+       public WireArray getOut()\r
+       {\r
                return out;\r
        }\r
 \r
        @Override\r
-       public List<WireArray> getAllInputs() {\r
+       public List<WireArray> getAllInputs()\r
+       {\r
                return Collections.unmodifiableList(Arrays.asList(in));\r
        }\r
 \r
        @Override\r
-       public List<WireArray> getAllOutputs() {\r
+       public List<WireArray> getAllOutputs()\r
+       {\r
                return Collections.unmodifiableList(Arrays.asList(out));\r
        }\r
 }\r
index 1115c42..4cc8220 100644 (file)
@@ -3,8 +3,10 @@ package era.mi.logic.components.gates;
 import era.mi.logic.Util;\r
 import era.mi.logic.wires.WireArray;\r
 \r
-public class OrGate extends MultiInputGate {\r
-       public OrGate(int processTime, WireArray out, WireArray... in) {\r
+public class OrGate extends MultiInputGate\r
+{\r
+       public OrGate(int processTime, WireArray out, WireArray... in)\r
+       {\r
                super(processTime, Util::or, out, in);\r
        }\r
 }\r
index 3181954..1a63e8b 100644 (file)
@@ -8,8 +8,10 @@ import era.mi.logic.wires.WireArray;
  * \r
  * @author Fabian Stemmler\r
  */\r
-public class XorGate extends MultiInputGate {\r
-       public XorGate(int processTime, WireArray out, WireArray... in) {\r
+public class XorGate extends MultiInputGate\r
+{\r
+       public XorGate(int processTime, WireArray out, WireArray... in)\r
+       {\r
                super(processTime, Util::xor, out, in);\r
        }\r
 \r
index 3bdaed2..81a2e1f 100644 (file)
@@ -19,12 +19,14 @@ import era.mi.logic.components.gates.NotGate;
 import era.mi.logic.components.gates.OrGate;\r
 import era.mi.logic.components.gates.XorGate;\r
 import era.mi.logic.wires.WireArray;\r
-import era.mi.logic.wires.WireArray.WireArrayInput;\r
+import era.mi.logic.wires.WireArray.WireArrayEnd;\r
 \r
-class ComponentTest {\r
+class ComponentTest\r
+{\r
 \r
        @Test\r
-       void circuitExampleTest() {\r
+       void circuitExampleTest()\r
+       {\r
                Simulation.TIMELINE.reset();\r
                WireArray a = new WireArray(1, 1), b = new WireArray(1, 1), c = new WireArray(1, 10), d = new WireArray(2, 1),\r
                                e = new WireArray(1, 1), f = new WireArray(1, 1), g = new WireArray(1, 1), h = new WireArray(2, 1), i = new WireArray(2, 1),\r
@@ -48,7 +50,8 @@ class ComponentTest {
        }\r
 \r
        @Test\r
-       void splitterTest() {\r
+       void splitterTest()\r
+       {\r
                Simulation.TIMELINE.reset();\r
                WireArray a = new WireArray(3, 1), b = new WireArray(2, 1), c = new WireArray(3, 1), in = new WireArray(8, 1);\r
                in.createInput().feedSignals(Bit.ZERO, Bit.ONE, Bit.ZERO, Bit.ONE, Bit.ZERO, Bit.ONE, Bit.ZERO, Bit.ONE);\r
@@ -62,7 +65,8 @@ class ComponentTest {
        }\r
 \r
        @Test\r
-       void mergerTest() {\r
+       void mergerTest()\r
+       {\r
                Simulation.TIMELINE.reset();\r
                WireArray a = new WireArray(3, 1), b = new WireArray(2, 1), c = new WireArray(3, 1), out = new WireArray(8, 1);\r
                a.createInput().feedSignals(Bit.ZERO, Bit.ONE, Bit.ZERO);\r
@@ -78,13 +82,14 @@ class ComponentTest {
        }\r
 \r
        @Test\r
-       void triStateBufferTest() {\r
+       void triStateBufferTest()\r
+       {\r
                WireArray a = new WireArray(1, 1), b = new WireArray(1, 1), en = new WireArray(1, 1), notEn = new WireArray(1, 1);\r
                new NotGate(1, en, notEn);\r
                new TriStateBuffer(1, a, b, en);\r
                new TriStateBuffer(1, b, a, notEn);\r
 \r
-               WireArrayInput enI = en.createInput(), aI = a.createInput(), bI = b.createInput();\r
+               WireArrayEnd enI = en.createInput(), aI = a.createInput(), bI = b.createInput();\r
                enI.feedSignals(Bit.ONE);\r
                aI.feedSignals(Bit.ONE);\r
 \r
@@ -109,11 +114,12 @@ class ComponentTest {
        }\r
 \r
        @Test\r
-       void muxTest() {\r
+       void muxTest()\r
+       {\r
                Simulation.TIMELINE.reset();\r
                WireArray a = new WireArray(4, 3), b = new WireArray(4, 6), c = new WireArray(4, 4), select = new WireArray(2, 5),\r
                                out = new WireArray(4, 1);\r
-               WireArrayInput selectIn = select.createInput();\r
+               WireArrayEnd selectIn = select.createInput();\r
 \r
                selectIn.feedSignals(Bit.ZERO, Bit.ZERO);\r
                a.createInput().feedSignals(Bit.ONE, Bit.ZERO, Bit.ONE, Bit.ZERO);\r
@@ -136,11 +142,12 @@ class ComponentTest {
        }\r
 \r
        @Test\r
-       void demuxTest() {\r
+       void demuxTest()\r
+       {\r
                Simulation.TIMELINE.reset();\r
                WireArray a = new WireArray(4, 3), b = new WireArray(4, 6), c = new WireArray(4, 4), select = new WireArray(2, 5),\r
                                in = new WireArray(4, 1);\r
-               WireArrayInput selectIn = select.createInput();\r
+               WireArrayEnd selectIn = select.createInput();\r
 \r
                selectIn.feedSignals(Bit.ZERO, Bit.ZERO);\r
                in.createInput().feedSignals(Bit.ONE, Bit.ZERO, Bit.ONE, Bit.ZERO);\r
@@ -149,26 +156,27 @@ class ComponentTest {
                Simulation.TIMELINE.executeAll();\r
 \r
                assertBitArrayEquals(a.getValues(), Bit.ONE, Bit.ZERO, Bit.ONE, Bit.ZERO);\r
-               assertBitArrayEquals(b.getValues(), Bit.Z, Bit.Z, Bit.Z, Bit.Z);\r
-               assertBitArrayEquals(c.getValues(), Bit.Z, Bit.Z, Bit.Z, Bit.Z);\r
+               assertBitArrayEquals(b.getValues(), Bit.U, Bit.U, Bit.U, Bit.U);\r
+               assertBitArrayEquals(c.getValues(), Bit.U, Bit.U, Bit.U, Bit.U);\r
                selectIn.feedSignals(Bit.ZERO, Bit.ONE);\r
                Simulation.TIMELINE.executeAll();\r
 \r
                assertBitArrayEquals(a.getValues(), Bit.Z, Bit.Z, Bit.Z, Bit.Z);\r
-               assertBitArrayEquals(b.getValues(), Bit.Z, Bit.Z, Bit.Z, Bit.Z);\r
+               assertBitArrayEquals(b.getValues(), Bit.U, Bit.U, Bit.U, Bit.U);\r
                assertBitArrayEquals(c.getValues(), Bit.ONE, Bit.ZERO, Bit.ONE, Bit.ZERO);\r
 \r
                selectIn.feedSignals(Bit.ONE, Bit.ONE);\r
                Simulation.TIMELINE.executeAll();\r
 \r
                assertBitArrayEquals(a.getValues(), Bit.Z, Bit.Z, Bit.Z, Bit.Z);\r
-               assertBitArrayEquals(b.getValues(), Bit.Z, Bit.Z, Bit.Z, Bit.Z);\r
+               assertBitArrayEquals(b.getValues(), Bit.U, Bit.U, Bit.U, Bit.U);\r
                assertBitArrayEquals(c.getValues(), Bit.Z, Bit.Z, Bit.Z, Bit.Z);\r
 \r
        }\r
 \r
        @Test\r
-       void andTest() {\r
+       void andTest()\r
+       {\r
                Simulation.TIMELINE.reset();\r
                WireArray a = new WireArray(4, 1), b = new WireArray(4, 3), c = new WireArray(4, 1);\r
                new AndGate(1, c, a, b);\r
@@ -181,7 +189,8 @@ class ComponentTest {
        }\r
 \r
        @Test\r
-       void orTest() {\r
+       void orTest()\r
+       {\r
                Simulation.TIMELINE.reset();\r
                WireArray a = new WireArray(4, 1), b = new WireArray(4, 3), c = new WireArray(4, 1);\r
                new OrGate(1, c, a, b);\r
@@ -194,7 +203,8 @@ class ComponentTest {
        }\r
 \r
        @Test\r
-       void xorTest() {\r
+       void xorTest()\r
+       {\r
                Simulation.TIMELINE.reset();\r
                WireArray a = new WireArray(3, 1), b = new WireArray(3, 2), c = new WireArray(3, 1), d = new WireArray(3, 1);\r
                new XorGate(1, d, a, b, c);\r
@@ -208,7 +218,8 @@ class ComponentTest {
        }\r
 \r
        @Test\r
-       void rsLatchCircuitTest() {\r
+       void rsLatchCircuitTest()\r
+       {\r
                Simulation.TIMELINE.reset();\r
                WireArray r = new WireArray(1, 1), s = new WireArray(1, 1), t1 = new WireArray(1, 15), t2 = new WireArray(1, 1),\r
                                q = new WireArray(1, 1), nq = new WireArray(1, 1);\r
@@ -218,7 +229,7 @@ class ComponentTest {
                new NotGate(1, t2, q);\r
                new NotGate(1, t1, nq);\r
 \r
-               WireArrayInput sIn = s.createInput(), rIn = r.createInput();\r
+               WireArrayEnd sIn = s.createInput(), rIn = r.createInput();\r
 \r
                sIn.feedSignals(Bit.ONE);\r
                rIn.feedSignals(Bit.ZERO);\r
@@ -243,7 +254,8 @@ class ComponentTest {
        }\r
 \r
        @Test\r
-       void numericValueTest() {\r
+       void numericValueTest()\r
+       {\r
                Simulation.TIMELINE.reset();\r
 \r
                WireArray a = new WireArray(4, 1);\r
@@ -256,10 +268,11 @@ class ComponentTest {
        }\r
 \r
        @Test\r
-       void multipleInputs() {\r
+       void multipleInputs()\r
+       {\r
                Simulation.TIMELINE.reset();\r
                WireArray w = new WireArray(2, 1);\r
-               WireArrayInput wI1 = w.createInput(), wI2 = w.createInput();\r
+               WireArrayEnd wI1 = w.createInput(), wI2 = w.createInput();\r
                wI1.feedSignals(Bit.ONE, Bit.Z);\r
                wI2.feedSignals(Bit.Z, Bit.X);\r
                Simulation.TIMELINE.executeAll();\r
@@ -279,8 +292,9 @@ class ComponentTest {
                assertBitArrayEquals(w.getValues(), Bit.ONE, Bit.Z);\r
        }\r
 \r
-       @Test\r
-       void wireConnections() {\r
+//     @Test\r
+       void wireConnections()\r
+       {\r
                // Nur ein Experiment, was Ã¼ber mehrere 'passive' Bausteine hinweg passieren würde\r
 \r
                Simulation.TIMELINE.reset();\r
@@ -288,9 +302,9 @@ class ComponentTest {
                WireArray a = new WireArray(1, 2);\r
                WireArray b = new WireArray(1, 2);\r
                WireArray c = new WireArray(1, 2);\r
-               WireArrayInput aI = a.createInput();\r
-               WireArrayInput bI = b.createInput();\r
-               WireArrayInput cI = c.createInput();\r
+               WireArrayEnd aI = a.createInput();\r
+               WireArrayEnd bI = b.createInput();\r
+               WireArrayEnd cI = c.createInput();\r
 \r
                TestBitDisplay test = new TestBitDisplay(c);\r
                TestBitDisplay test2 = new TestBitDisplay(a);\r
@@ -352,7 +366,8 @@ class ComponentTest {
                test2.assertAfterSimulationIs(Bit.ONE);\r
        }\r
 \r
-       private static void assertBitArrayEquals(Bit[] actual, Bit... expected) {\r
+       private static void assertBitArrayEquals(Bit[] actual, Bit... expected)\r
+       {\r
                assertArrayEquals(expected, actual);\r
        }\r
 }\r
index c25fd6d..5e9c576 100644 (file)
@@ -3,16 +3,18 @@ package era.mi.logic.tests;
 import era.mi.logic.Bit;\r
 import era.mi.logic.Simulation;\r
 import era.mi.logic.wires.WireArray;\r
-import era.mi.logic.wires.WireArray.WireArrayInput;\r
+import era.mi.logic.wires.WireArray.WireArrayEnd;\r
 import era.mi.logic.wires.WireArrayObserver;\r
 \r
-public class Connector implements WireArrayObserver {\r
+public class Connector implements WireArrayObserver\r
+{\r
        private final WireArray a;\r
 //     private final WireArray b;\r
-       private final WireArrayInput aI;\r
-       private final WireArrayInput bI;\r
+       private final WireArrayEnd aI;\r
+       private final WireArrayEnd bI;\r
 \r
-       public Connector(WireArray a, WireArray b) {\r
+       public Connector(WireArray a, WireArray b)\r
+       {\r
                if (a.length != b.length)\r
                        throw new IllegalArgumentException(String.format("WireArray width does not match: %d, %d", a.length, b.length));\r
                this.a = a;\r
@@ -24,8 +26,10 @@ public class Connector implements WireArrayObserver {
        }\r
 \r
        @Override\r
-       public void update(WireArray initiator, Bit[] oldValues) {\r
-               Simulation.TIMELINE.addEvent((e) -> {\r
+       public void update(WireArray initiator, Bit[] oldValues)\r
+       {\r
+               Simulation.TIMELINE.addEvent((e) ->\r
+               {\r
                        if (initiator == a)\r
                                bI.feedSignals(aI.wireValuesExcludingMe());\r
                        else\r
index a6e0580..3fcb7a6 100644 (file)
@@ -22,7 +22,8 @@ import era.mi.logic.components.gates.OrGate;
 import era.mi.logic.timeline.Timeline.ExecutionResult;\r
 import era.mi.logic.wires.WireArray;\r
 \r
-public class GUITest extends JPanel {\r
+public class GUITest extends JPanel\r
+{\r
 \r
        private static final long serialVersionUID = 1L;\r
 \r
@@ -51,13 +52,18 @@ public class GUITest extends JPanel {
        int width;\r
        boolean sizeChanged;\r
 \r
-       public GUITest() {\r
-               addMouseListener(new MouseListener() {\r
+       public GUITest()\r
+       {\r
+               addMouseListener(new MouseListener()\r
+               {\r
 \r
                        @Override\r
-                       public void mouseReleased(MouseEvent e) {\r
-                               for (Entry<ManualSwitch, Rectangle> dim : switchMap.entrySet()) {\r
-                                       if (dim.getValue().contains(e.getPoint())) {\r
+                       public void mouseReleased(MouseEvent e)\r
+                       {\r
+                               for (Entry<ManualSwitch, Rectangle> dim : switchMap.entrySet())\r
+                               {\r
+                                       if (dim.getValue().contains(e.getPoint()))\r
+                                       {\r
                                                dim.getKey().switchOff();\r
                                                repaint();\r
                                        }\r
@@ -65,9 +71,12 @@ public class GUITest extends JPanel {
                        }\r
 \r
                        @Override\r
-                       public void mousePressed(MouseEvent e) {\r
-                               for (Entry<ManualSwitch, Rectangle> dim : switchMap.entrySet()) {\r
-                                       if (dim.getValue().contains(e.getPoint())) {\r
+                       public void mousePressed(MouseEvent e)\r
+                       {\r
+                               for (Entry<ManualSwitch, Rectangle> dim : switchMap.entrySet())\r
+                               {\r
+                                       if (dim.getValue().contains(e.getPoint()))\r
+                                       {\r
                                                dim.getKey().switchOn();\r
                                                repaint();\r
                                        }\r
@@ -75,17 +84,20 @@ public class GUITest extends JPanel {
                        }\r
 \r
                        @Override\r
-                       public void mouseExited(MouseEvent e) {\r
+                       public void mouseExited(MouseEvent e)\r
+                       {\r
                                // none\r
                        }\r
 \r
                        @Override\r
-                       public void mouseEntered(MouseEvent e) {\r
+                       public void mouseEntered(MouseEvent e)\r
+                       {\r
                                // none\r
                        }\r
 \r
                        @Override\r
-                       public void mouseClicked(MouseEvent e) {\r
+                       public void mouseClicked(MouseEvent e)\r
+                       {\r
                                // If you want toggle buttons, use this code instead\r
 //                             for (Entry<ManualSwitch, Rectangle> dim : switchMap.entrySet()) {\r
 //                                     if (dim.getValue().contains(e.getPoint())) {\r
@@ -98,7 +110,8 @@ public class GUITest extends JPanel {
        }\r
 \r
        @Override\r
-       public void paint(Graphics some_g) {\r
+       public void paint(Graphics some_g)\r
+       {\r
                super.paint(some_g);\r
                Graphics2D g = ((Graphics2D) some_g);\r
                g.setRenderingHint(RenderingHints.KEY_TEXT_ANTIALIASING, RenderingHints.VALUE_TEXT_ANTIALIAS_GASP);\r
@@ -142,31 +155,37 @@ public class GUITest extends JPanel {
                drawString(g, "Hint: drag the cursor out of the pressed switch to keep it's state", 5, 0, 0.0, 1.0);\r
        }\r
 \r
-       private void checkSizeChange() {\r
+       private void checkSizeChange()\r
+       {\r
                sizeChanged = height != getHeight() || width != getWidth();\r
-               if (sizeChanged) {\r
+               if (sizeChanged)\r
+               {\r
                        height = getHeight();\r
                        width = getWidth();\r
                }\r
        }\r
 \r
-       private void adaptFont(Graphics g) {\r
+       private void adaptFont(Graphics g)\r
+       {\r
                g.setFont(g.getFont().deriveFont(Math.min(height, width) / 40f));\r
        }\r
 \r
-       private void drawString(Graphics g, String s, int x, int y, double anchorX, double anchorY) {\r
+       private void drawString(Graphics g, String s, int x, int y, double anchorX, double anchorY)\r
+       {\r
                int h = g.getFontMetrics().getAscent();\r
                int w = g.getFontMetrics().stringWidth(s);\r
                g.drawString(s, x - (int) (w * anchorX), y + (int) (h * anchorY));\r
        }\r
 \r
-       private void drawWire(Graphics g, WireArray wa, String name, double x1, double y1, double x2, double y2) {\r
+       private void drawWire(Graphics g, WireArray wa, String name, double x1, double y1, double x2, double y2)\r
+       {\r
                setTo(g, wa);\r
                g.drawLine(gX(x1), gY(y1), gX(x2), gY(y2));\r
                drawString(g, name, (gX(x1) + gX(x2)) / 2, (gY(y1) + gY(y2)) / 2 - 5, 0, 0);\r
        }\r
 \r
-       private void drawSquare(Graphics g, int posX, int posY, String text) {\r
+       private void drawSquare(Graphics g, int posX, int posY, String text)\r
+       {\r
                int x1 = gX(posX) - 5;\r
                int x2 = gX(posX + 1) + 5;\r
                int y1 = gY(posY) - 5;\r
@@ -180,13 +199,15 @@ public class GUITest extends JPanel {
 \r
        }\r
 \r
-       private void drawSwitch(Graphics g, ManualSwitch ms, String text, double posX1, double posY1, double posX2, double posY2) {\r
+       private void drawSwitch(Graphics g, ManualSwitch ms, String text, double posX1, double posY1, double posX2, double posY2)\r
+       {\r
                int x1 = gX(posX1) - 5;\r
                int x2 = gX(posX2) + 5;\r
                int y1 = gY(posY1) - 5;\r
                int y2 = gY(posY2) + 5;\r
 \r
-               if (sizeChanged) {\r
+               if (sizeChanged)\r
+               {\r
                        Rectangle r = new Rectangle(x1, y1, x2 - x1, y2 - y1);\r
                        switchMap.put(ms, r);\r
                }\r
@@ -198,12 +219,15 @@ public class GUITest extends JPanel {
                drawString(g, text, (x1 + x2) / 2, (y1 + y2) / 2, 0.5, 0.5);\r
        }\r
 \r
-       private static void setBlack(Graphics g) {\r
+       private static void setBlack(Graphics g)\r
+       {\r
                g.setColor(Color.BLACK);\r
        }\r
 \r
-       private static void setTo(Graphics g, WireArray wa) {\r
-               switch (wa.getValue()) {\r
+       private static void setTo(Graphics g, WireArray wa)\r
+       {\r
+               switch (wa.getValue())\r
+               {\r
                case ONE:\r
                        g.setColor(Color.GREEN);\r
                        break;\r
@@ -221,15 +245,18 @@ public class GUITest extends JPanel {
                }\r
        }\r
 \r
-       private int gY(double pos) {\r
+       private int gY(double pos)\r
+       {\r
                return (int) (pos * height / 11);\r
        }\r
 \r
-       private int gX(double pos) {\r
+       private int gX(double pos)\r
+       {\r
                return (int) (pos * width / 11) + 50;\r
        }\r
 \r
-       public static void main(String[] args) {\r
+       public static void main(String[] args)\r
+       {\r
                JFrame f = new JFrame("Test circuit 1.0.0");\r
                GUITest gt = new GUITest();\r
                f.add(gt);\r
@@ -243,15 +270,19 @@ public class GUITest extends JPanel {
                long lastFrame = begin;\r
                long updateT = 16;\r
 \r
-               while (f.isVisible()) {\r
+               while (f.isVisible())\r
+               {\r
                        ExecutionResult er = Simulation.TIMELINE.executeUpTo((lastFrame - begin) * 3, lastFrame + 14);\r
 //                             if (Simulation.TIMELINE.hasNext()) \r
 //                             Simulation.TIMELINE.executeNext();\r
                        if (er != ExecutionResult.NOTHING_DONE)\r
                                gt.repaint(12);\r
-                       try {\r
+                       try\r
+                       {\r
                                Thread.sleep(Math.max(16 - System.currentTimeMillis() + lastFrame, 0));\r
-                       } catch (Exception e) {\r
+                       }\r
+                       catch (Exception e)\r
+                       {\r
                                e.printStackTrace();\r
                        }\r
                        lastFrame = System.currentTimeMillis();\r
index d7c715d..7c6b435 100644 (file)
@@ -10,23 +10,29 @@ import era.mi.logic.Simulation;
 import era.mi.logic.components.BitDisplay;\r
 import era.mi.logic.wires.WireArray;\r
 \r
-public final class TestBitDisplay extends BitDisplay {\r
+public final class TestBitDisplay extends BitDisplay\r
+{\r
 \r
-       public TestBitDisplay(WireArray in) {\r
+       public TestBitDisplay(WireArray in)\r
+       {\r
                super(in);\r
        }\r
 \r
-       public void assertDisplays(Bit... expected) {\r
+       public void assertDisplays(Bit... expected)\r
+       {\r
                assertArrayEquals(expected, getDisplayedValue());\r
        }\r
 \r
-       public void assertAfterSimulationIs(Bit... expected) {\r
+       public void assertAfterSimulationIs(Bit... expected)\r
+       {\r
                Simulation.TIMELINE.executeAll();\r
                assertDisplays(expected);\r
        }\r
 \r
-       public void assertAfterSimulationIs(LongConsumer r, Bit... expected) {\r
-               while (Simulation.TIMELINE.hasNext()) {\r
+       public void assertAfterSimulationIs(LongConsumer r, Bit... expected)\r
+       {\r
+               while (Simulation.TIMELINE.hasNext())\r
+               {\r
                        Simulation.TIMELINE.executeNext();\r
                        r.accept(Simulation.TIMELINE.getSimulationTime());\r
                }\r
@@ -34,7 +40,8 @@ public final class TestBitDisplay extends BitDisplay {
        }\r
 \r
        @Override\r
-       protected void compute() {\r
+       protected void compute()\r
+       {\r
                super.compute();\r
                System.out.println("update: value is " + Arrays.toString(getDisplayedValue()));\r
        }\r
index a0266c0..1055d1c 100644 (file)
@@ -11,14 +11,17 @@ import java.util.function.Consumer;
  * @author Fabian Stemmler\r
  *\r
  */\r
-public class Timeline {\r
+public class Timeline\r
+{\r
        private PriorityQueue<InnerEvent> events;\r
        private long currentTime = 0;\r
 \r
        private final List<Consumer<TimelineEvent>> eventAddedListener;\r
 \r
-       public Timeline(int initCapacity) {\r
-               events = new PriorityQueue<InnerEvent>(initCapacity, (a, b) -> {\r
+       public Timeline(int initCapacity)\r
+       {\r
+               events = new PriorityQueue<InnerEvent>(initCapacity, (a, b) ->\r
+               {\r
                        long difference = a.getTiming() - b.getTiming();\r
                        if (difference == 0)\r
                                return 0;\r
@@ -28,17 +31,20 @@ public class Timeline {
                eventAddedListener = new ArrayList<>();\r
        }\r
 \r
-       public boolean hasNext() {\r
+       public boolean hasNext()\r
+       {\r
                return !events.isEmpty();\r
        }\r
 \r
-       public void executeNext() {\r
+       public void executeNext()\r
+       {\r
                InnerEvent first = events.poll();\r
                currentTime = first.getTiming();\r
                first.run();\r
        }\r
 \r
-       public void executeAll() {\r
+       public void executeAll()\r
+       {\r
                while (hasNext())\r
                        executeNext();\r
        }\r
@@ -51,14 +57,17 @@ public class Timeline {
         * @return if it was possible to fulfil the goal in the given real world time.\r
         * @author Christian Femers\r
         */\r
-       public ExecutionResult executeUpTo(long timestamp, long stopMillis) {\r
-               if (events.isEmpty()) {\r
+       public ExecutionResult executeUpTo(long timestamp, long stopMillis)\r
+       {\r
+               if (events.isEmpty())\r
+               {\r
                        currentTime = timestamp;\r
                        return ExecutionResult.NOTHING_DONE;\r
                }\r
                int checkStop = 0;\r
                InnerEvent first = events.peek();\r
-               while (first != null && first.getTiming() <= timestamp) {\r
+               while (first != null && first.getTiming() <= timestamp)\r
+               {\r
                        events.remove();\r
                        currentTime = first.getTiming();\r
                        first.run();\r
@@ -72,27 +81,32 @@ public class Timeline {
                return ExecutionResult.DONE_IN_TIME;\r
        }\r
 \r
-       public long getSimulationTime() {\r
+       public long getSimulationTime()\r
+       {\r
                return currentTime;\r
        }\r
 \r
-       public long nextEventTime() {\r
+       public long nextEventTime()\r
+       {\r
                if (!hasNext())\r
                        return -1;\r
                else\r
                        return events.peek().timing;\r
        }\r
 \r
-       public void reset() {\r
+       public void reset()\r
+       {\r
                events.clear();\r
                currentTime = 0;\r
        }\r
 \r
-       public void addEventAddedListener(Consumer<TimelineEvent> listener) {\r
+       public void addEventAddedListener(Consumer<TimelineEvent> listener)\r
+       {\r
                eventAddedListener.add(listener);\r
        }\r
 \r
-       public void removeEventAddedListener(Consumer<TimelineEvent> listener) {\r
+       public void removeEventAddedListener(Consumer<TimelineEvent> listener)\r
+       {\r
                eventAddedListener.remove(listener);\r
        }\r
 \r
@@ -102,14 +116,16 @@ public class Timeline {
         * @param function       The {@link TimelineEventHandler} that will be executed, when the {@link InnerEvent} occurs on the timeline.\r
         * @param relativeTiming The amount of MI ticks in which the {@link InnerEvent} is called, starting from the current time.\r
         */\r
-       public void addEvent(TimelineEventHandler function, int relativeTiming) {\r
+       public void addEvent(TimelineEventHandler function, int relativeTiming)\r
+       {\r
                long timing = currentTime + relativeTiming;\r
                TimelineEvent event = new TimelineEvent(timing);\r
                events.add(new InnerEvent(function, event, timing));\r
                eventAddedListener.forEach(l -> l.accept(event));\r
        }\r
 \r
-       private class InnerEvent {\r
+       private class InnerEvent\r
+       {\r
 \r
                private final long timing;\r
                private final TimelineEventHandler function;\r
@@ -121,36 +137,43 @@ public class Timeline {
                 * @param function {@link TimelineEventHandler} to be executed when the {@link InnerEvent} occurs\r
                 * @param timing   Point in the MI simulation {@link Timeline}, at which the {@link InnerEvent} is executed;\r
                 */\r
-               InnerEvent(TimelineEventHandler function, TimelineEvent event, long timing) {\r
+               InnerEvent(TimelineEventHandler function, TimelineEvent event, long timing)\r
+               {\r
                        this.function = function;\r
                        this.event = event;\r
                        this.timing = timing;\r
                }\r
 \r
-               public long getTiming() {\r
+               public long getTiming()\r
+               {\r
                        return timing;\r
                }\r
 \r
-               public void run() {\r
+               public void run()\r
+               {\r
                        function.handle(event);\r
                }\r
 \r
                @Override\r
-               public String toString() {\r
+               public String toString()\r
+               {\r
                        return event.toString();\r
                }\r
        }\r
 \r
        @Override\r
-       public String toString() {\r
+       public String toString()\r
+       {\r
                return "simulation time: " + currentTime + ", " + events.toString();\r
        }\r
 \r
-       public static long toNanoseconds(long ticks) {\r
+       public static long toNanoseconds(long ticks)\r
+       {\r
                return ticks; // TODO: Alter this when it has been determined how ticks should relate to real time.\r
        }\r
 \r
-       public enum ExecutionResult {\r
+       public enum ExecutionResult\r
+       {\r
                NOTHING_DONE, DONE_IN_TIME, RAN_OUT_OF_TIME\r
        }\r
 }
\ No newline at end of file
index 9f702e4..26799a3 100644 (file)
@@ -7,19 +7,23 @@ package era.mi.logic.timeline;
  * @author Fabian Stemmler\r
  *\r
  */\r
-public class TimelineEvent {\r
+public class TimelineEvent\r
+{\r
        private final long timing;\r
 \r
-       TimelineEvent(long timing) {\r
+       TimelineEvent(long timing)\r
+       {\r
                super();\r
                this.timing = timing;\r
        }\r
 \r
-       public long getTiming() {\r
+       public long getTiming()\r
+       {\r
                return timing;\r
        }\r
 \r
-       public String toString() {\r
+       public String toString()\r
+       {\r
                return "timestamp: " + timing;\r
        }\r
 }
\ No newline at end of file
index 76bd37d..c2dcb98 100644 (file)
@@ -1,5 +1,6 @@
 package era.mi.logic.timeline;\r
 \r
-public interface TimelineEventHandler {\r
+public interface TimelineEventHandler\r
+{\r
        public void handle(TimelineEvent e);\r
 }
\ No newline at end of file
index 1e98f70..7599a98 100644 (file)
@@ -1,5 +1,6 @@
 package era.mi.logic.wires;\r
 \r
+import java.io.Closeable;\r
 import java.util.ArrayList;\r
 import java.util.Arrays;\r
 import java.util.Iterator;\r
@@ -15,14 +16,16 @@ import era.mi.logic.Util;
  * @author Fabian Stemmler\r
  *\r
  */\r
-public class WireArray {\r
+public class WireArray\r
+{\r
        private Bit[] values;\r
        public final int travelTime;\r
        private List<WireArrayObserver> observers = new ArrayList<WireArrayObserver>();\r
        public final int length;\r
-       private List<WireArrayInput> inputs = new ArrayList<WireArrayInput>();\r
+       private List<WireArrayEnd> inputs = new ArrayList<WireArrayEnd>();\r
 \r
-       public WireArray(int length, int travelTime) {\r
+       public WireArray(int length, int travelTime)\r
+       {\r
                if (length < 1)\r
                        throw new IllegalArgumentException(\r
                                        String.format("Tried to create an array of wires with length %d, but a length of less than 1 makes no sense.", length));\r
@@ -31,27 +34,33 @@ public class WireArray {
                initValues();\r
        }\r
 \r
-       private void initValues() {\r
-               values = Bit.Z.makeArray(length);\r
+       private void initValues()\r
+       {\r
+               values = Bit.U.makeArray(length);\r
        }\r
 \r
-       private void recalculateSingleInput() {\r
-               WireArrayInput input = inputs.get(0);\r
-               if (!Arrays.equals(input.getValues(), values)) {\r
+       private void recalculateSingleInput()\r
+       {\r
+               WireArrayEnd input = inputs.get(0);\r
+               if (!Arrays.equals(input.getValues(), values))\r
+               {\r
                        Bit[] oldValues = values.clone();\r
                        System.arraycopy(input.getValues(), 0, values, 0, length);\r
                        notifyObservers(oldValues);\r
                }\r
        }\r
 \r
-       private void recalculateMultipleInputs() {\r
-               Iterator<WireArrayInput> it = inputs.iterator();\r
+       private void recalculateMultipleInputs()\r
+       {\r
+               Iterator<WireArrayEnd> it = inputs.iterator();\r
                Bit[] newValues = it.next().inputValues.clone();\r
 \r
-               while (it.hasNext()) {\r
-                       WireArrayInput input = it.next();\r
+               while (it.hasNext())\r
+               {\r
+                       WireArrayEnd input = it.next();\r
                        Bit[] bits = input.getValues();\r
-                       for (int i = 0; i < length; i++) {\r
+                       for (int i = 0; i < length; i++)\r
+                       {\r
                                if (Bit.Z.equals(bits[i]) || newValues[i].equals(bits[i]))\r
                                        continue;\r
                                else if (Bit.Z.equals(newValues[i]))\r
@@ -61,15 +70,18 @@ public class WireArray {
                        }\r
                }\r
 \r
-               if (!Arrays.equals(newValues, values)) {\r
+               if (!Arrays.equals(newValues, values))\r
+               {\r
                        Bit[] oldValues = values;\r
                        values = newValues;\r
                        notifyObservers(oldValues);\r
                }\r
        }\r
 \r
-       private void recalculate() {\r
-               switch (inputs.size()) {\r
+       private void recalculate()\r
+       {\r
+               switch (inputs.size())\r
+               {\r
                case 0:\r
                        return;\r
                case 1:\r
@@ -88,8 +100,10 @@ public class WireArray {
         * \r
         * @author Fabian Stemmler\r
         */\r
-       public boolean hasNumericValue() {\r
-               for (Bit b : values) {\r
+       public boolean hasNumericValue()\r
+       {\r
+               for (Bit b : values)\r
+               {\r
                        if (b != Bit.ZERO && b != Bit.ONE)\r
                                return false;\r
                }\r
@@ -103,11 +117,14 @@ public class WireArray {
         * \r
         * @author Fabian Stemmler\r
         */\r
-       public long getUnsignedValue() {\r
+       public long getUnsignedValue()\r
+       {\r
                long val = 0;\r
                long mask = 1;\r
-               for (int i = 0; i < length; i++) {\r
-                       switch (values[i]) {\r
+               for (int i = 0; i < length; i++)\r
+               {\r
+                       switch (values[i])\r
+                       {\r
                        default:\r
                        case Z:\r
                        case X:\r
@@ -130,10 +147,12 @@ public class WireArray {
         * \r
         * @author Fabian Stemmler\r
         */\r
-       public long getSignedValue() {\r
+       public long getSignedValue()\r
+       {\r
                long val = getUnsignedValue();\r
                long mask = 1 << (length - 1);\r
-               if ((mask & val) != 0) {\r
+               if ((mask & val) != 0)\r
+               {\r
                        int shifts = 64 - length;\r
                        return (val << shifts) >> shifts;\r
                }\r
@@ -147,7 +166,8 @@ public class WireArray {
         * \r
         * @author Fabian Stemmler\r
         */\r
-       public Bit getValue() {\r
+       public Bit getValue()\r
+       {\r
                return getValue(0);\r
        }\r
 \r
@@ -158,11 +178,13 @@ public class WireArray {
         * \r
         * @author Fabian Stemmler\r
         */\r
-       public Bit getValue(int index) {\r
+       public Bit getValue(int index)\r
+       {\r
                return values[index];\r
        }\r
 \r
-       public Bit[] getValues(int start, int end) {\r
+       public Bit[] getValues(int start, int end)\r
+       {\r
                int length = end - start;\r
                Bit[] bits = new Bit[length];\r
                System.arraycopy(values, start, bits, 0, length);\r
@@ -174,7 +196,8 @@ public class WireArray {
         * \r
         * @author Fabian Stemmler\r
         */\r
-       public Bit[] getValues() {\r
+       public Bit[] getValues()\r
+       {\r
                return values.clone();\r
        }\r
 \r
@@ -186,45 +209,54 @@ public class WireArray {
         * \r
         * @author Fabian Stemmler\r
         */\r
-       public boolean addObserver(WireArrayObserver ob) {\r
+       public boolean addObserver(WireArrayObserver ob)\r
+       {\r
                return observers.add(ob);\r
        }\r
 \r
-       private void notifyObservers(Bit[] oldValues) {\r
+       private void notifyObservers(Bit[] oldValues)\r
+       {\r
                for (WireArrayObserver o : observers)\r
                        o.update(this, oldValues);\r
        }\r
 \r
        /**\r
-        * Create and register a {@link WireArrayInput} object, which is tied to this {@link WireArray}.\r
+        * Create and register a {@link WireArrayEnd} object, which is tied to this {@link WireArray}.\r
         */\r
-       public WireArrayInput createInput() {\r
-               return new WireArrayInput(this);\r
+       public WireArrayEnd createInput()\r
+       {\r
+               return new WireArrayEnd(this);\r
        }\r
 \r
-       private void registerInput(WireArrayInput toRegister) {\r
+       private void registerInput(WireArrayEnd toRegister)\r
+       {\r
                inputs.add(toRegister);\r
        }\r
 \r
        /**\r
-        * A {@link WireArrayInput} feeds a constant signal into the {@link WireArray} it is tied to. The combination of all inputs determines\r
-        * the {@link WireArray}s final value. X dominates all other inputs Z does not affect the final value, unless there are no other inputs\r
-        * than Z 0 and 1 turn into X when they are mixed\r
+        * A {@link WireArrayEnd} feeds a constant signal into the {@link WireArray} it is tied to. The combination of all inputs determines the\r
+        * {@link WireArray}s final value. X dominates all other inputs Z does not affect the final value, unless there are no other inputs than\r
+        * Z 0 and 1 turn into X when they are mixed\r
         * \r
         * @author Fabian Stemmler\r
         */\r
-       public class WireArrayInput {\r
+       public class WireArrayEnd implements Closeable\r
+       {\r
                public final WireArray owner;\r
+               private boolean open;\r
                private Bit[] inputValues;\r
 \r
-               private WireArrayInput(WireArray owner) {\r
+               private WireArrayEnd(WireArray owner)\r
+               {\r
                        super();\r
                        this.owner = owner;\r
+                       open = true;\r
                        initValues();\r
                        owner.registerInput(this);\r
                }\r
 \r
-               private void initValues() {\r
+               private void initValues()\r
+               {\r
                        inputValues = Bit.Z.makeArray(length);\r
                }\r
 \r
@@ -235,12 +267,14 @@ public class WireArray {
                 * \r
                 * @author Fabian Stemmler\r
                 */\r
-               public void feedSignals(Bit... newValues) {\r
-                       if (newValues.length == length) {\r
+               public void feedSignals(Bit... newValues)\r
+               {\r
+                       if (newValues.length == length)\r
+                       {\r
                                feedSignals(0, newValues);\r
                        } else\r
                                throw new IllegalArgumentException(\r
-                                               String.format("Attempted to input %o bits instead of %o bits.", newValues.length, length));\r
+                                               String.format("Attempted to input %d bits instead of %d bits.", newValues.length, length));\r
                }\r
 \r
                /**\r
@@ -251,40 +285,49 @@ public class WireArray {
                 * \r
                 * @author Fabian Stemmler\r
                 */\r
-               public void feedSignals(int startingBit, Bit... newValues) {\r
+               public void feedSignals(int startingBit, Bit... newValues)\r
+               {\r
+                       if (!open)\r
+                               throw new RuntimeException("Attempted to write to closed WireArrayEnd.");\r
                        Simulation.TIMELINE.addEvent((e) -> setValues(startingBit, newValues), travelTime);\r
                }\r
 \r
-               private void setValues(int startingBit, Bit... newValues) {\r
+               private void setValues(int startingBit, Bit... newValues)\r
+               {\r
                        int exclLastIndex = startingBit + newValues.length;\r
                        if (length < exclLastIndex)\r
                                throw new ArrayIndexOutOfBoundsException(\r
-                                               String.format("Attempted to input bits from index %o to %o when there are only %o wires.", startingBit,\r
+                                               String.format("Attempted to input bits from index %d to %d when there are only %d wires.", startingBit,\r
                                                                exclLastIndex - 1, length));\r
-                       if (!Arrays.equals(inputValues, startingBit, exclLastIndex, newValues, 0, newValues.length)) {\r
+                       if (!Arrays.equals(inputValues, startingBit, exclLastIndex, newValues, 0, newValues.length))\r
+                       {\r
                                System.arraycopy(newValues, 0, inputValues, startingBit, newValues.length);\r
                                owner.recalculate();\r
                        }\r
                }\r
 \r
                /**\r
-                * Returns a copy (safe to modify) of the values the {@link WireArrayInput} is currently feeding into the associated\r
+                * Returns a copy (safe to modify) of the values the {@link WireArrayEnd} is currently feeding into the associated\r
                 * {@link WireArray}.\r
                 */\r
-               public Bit[] getValues() {\r
+               public Bit[] getValues()\r
+               {\r
                        return inputValues.clone();\r
                }\r
 \r
                /**\r
-                * {@link WireArrayInput} now feeds Z into the associated {@link WireArray}.\r
+                * {@link WireArrayEnd} now feeds Z into the associated {@link WireArray}.\r
                 */\r
-               public void clearSignals() {\r
+               public void clearSignals()\r
+               {\r
                        feedSignals(Bit.Z.makeArray(length));\r
                }\r
 \r
-               public Bit[] wireValuesExcludingMe() {\r
+               public Bit[] wireValuesExcludingMe()\r
+               {\r
                        Bit[] bits = Bit.Z.makeArray(length);\r
-                       for (WireArrayInput wai : inputs) {\r
+                       for (WireArrayEnd wai : inputs)\r
+                       {\r
                                if (wai == this)\r
                                        continue;\r
                                Util.combineInto(bits, wai.getValues());\r
@@ -292,19 +335,39 @@ public class WireArray {
                        return bits;\r
                }\r
 \r
+               public Bit getWireValue()\r
+               {\r
+                       return owner.getValue();\r
+               }\r
+\r
+               public Bit[] getWireValues()\r
+               {\r
+                       return owner.getValues();\r
+               }\r
+\r
                @Override\r
-               public String toString() {\r
+               public String toString()\r
+               {\r
                        return Arrays.toString(inputValues);\r
                }\r
+\r
+               @Override\r
+               public void close()\r
+               {\r
+                       inputs.remove(this);\r
+                       open = false;\r
+               }\r
        }\r
 \r
        @Override\r
-       public String toString() {\r
+       public String toString()\r
+       {\r
                return String.format("wire 0x%08x value: %s inputs: %s", hashCode(), Arrays.toString(values), inputs);\r
        }\r
 \r
-       public static WireArrayInput[] extractInputs(WireArray[] w) {\r
-               WireArrayInput[] inputs = new WireArrayInput[w.length];\r
+       public static WireArrayEnd[] extractInputs(WireArray[] w)\r
+       {\r
+               WireArrayEnd[] inputs = new WireArrayEnd[w.length];\r
                for (int i = 0; i < w.length; i++)\r
                        inputs[i] = w[i].createInput();\r
                return inputs;\r
index fba64c9..9884abc 100644 (file)
@@ -2,6 +2,7 @@ package era.mi.logic.wires;
 \r
 import era.mi.logic.Bit;\r
 \r
-public interface WireArrayObserver {\r
+public interface WireArrayObserver\r
+{\r
        public void update(WireArray initiator, Bit[] oldValues);\r
 }\r