Ejemplo n.º 1
0
    def _bitstring(self, type_: oer.BitString, controller: Controller):
        if type_.number_of_bits is None:
            view, value_interface, optional_interface = self._view_factory.get_hex_string_view(
                self.__get_type_info(type_), None, None)

            ControllerFactory(controller).create_value_controller(
                type_, value_interface, optional_interface, None)
        else:
            view, value_interface, optional_interface = self._view_factory.get_bitstring_view(
                self.__get_type_info(type_), type_.number_of_bits,
                type_.named_bits)

            ControllerFactory(controller).create_bitstring_controller(
                type_, value_interface, optional_interface)

        return view
Ejemplo n.º 2
0
    def _time(self, type_: oer.TimeOfDay, controller: Controller):
        view, value_interface, optional_interface = self._view_factory.get_time_view(
            self.__get_type_info(type_))

        ControllerFactory(controller).create_value_controller(
            type_, value_interface, optional_interface)

        return view
Ejemplo n.º 3
0
    def _bool(self, type_: oer.Boolean, controller: Controller):
        view, value_interface, optional_interface = self._view_factory.get_boolean_view(
            self.__get_type_info(type_))

        ControllerFactory(controller).create_bool_controller(
            type_, value_interface, optional_interface)

        return view
Ejemplo n.º 4
0
    def _datetime(self, type_: typing.Union[oer.DateTime, oer.UTCTime,
                                            oer.GeneralizedTime],
                  controller: Controller):
        view, value_interface, optional_interface = self._view_factory.get_datetime_view(
            self.__get_type_info(type_))

        ControllerFactory(controller).create_value_controller(
            type_, value_interface, optional_interface)

        return view
Ejemplo n.º 5
0
    def _enumerated(self, type_: oer.Enumerated,
                    controller: Controller) -> AbstractView:
        choices = [str(value) for value in type_.value_to_data.values()]
        view, value_interface, optional_interface = self._view_factory.get_enumerated_view(
            self.__get_type_info(type_), choices)

        ControllerFactory(controller).create_value_controller(
            type_, value_interface, optional_interface)

        return view
Ejemplo n.º 6
0
    def _string(self, type_: oer.VisibleString,
                checker: constraints_checker.String, controller: Controller):
        view, value_interface, optional_interface = self._view_factory.get_string_view(
            self.__get_type_info(type_), self.__get_limit(checker.minimum),
            self.__get_limit(checker.maximum))

        ControllerFactory(controller).create_value_controller(
            type_, value_interface, optional_interface,
            self.__get_limit(checker.minimum))

        return view
Ejemplo n.º 7
0
    def _number(self, type_: typing.Union[oer.Integer, oer.Real],
                checker: constraints_checker.Type,
                controller: Controller) -> AbstractView:
        view, value_interface, optional_interface = self._view_factory.get_number_view(
            self.__get_type_info(type_), self.__get_limit(checker.minimum),
            self.__get_limit(checker.maximum), isinstance(type_, oer.Real))

        ControllerFactory(controller).create_value_controller(
            type_, value_interface, optional_interface,
            self.__get_limit(checker.minimum))

        return view
Ejemplo n.º 8
0
    def _sequence_of(self, type_: oer.SequenceOf,
                     checker: constraints_checker.List,
                     controller: Controller) -> AbstractView:
        view, value_interface, optional_interface = self._view_factory.get_list_view(
            self.__get_type_info(type_), self.__get_limit(checker.minimum),
            self.__get_limit(checker.maximum))

        list_instance_factory = ListInstanceFactory(self._view_factory, view,
                                                    type_.element_type,
                                                    checker.element_type)
        ControllerFactory(controller).create_list_controller(
            type_, value_interface, optional_interface, list_instance_factory,
            self.__get_limit(checker.minimum))

        return view
Ejemplo n.º 9
0
    def _choice(self, type_: oer.Choice, checker: constraints_checker.Choice,
                controller: Controller):
        choices = [member.name for member in type_.members]
        view, value_interface, optional_interface = self._view_factory.get_choice_view(
            self.__get_type_info(type_), choices)

        members = {member.name: member for member in type_.members}
        checkers = {member.name: member for member in checker.members}

        choice_instance_factory = ChoiceInstanceFactory(
            self._view_factory, view, members, checkers)
        ControllerFactory(controller).create_choice_controller(
            type_, value_interface, optional_interface,
            choice_instance_factory)

        return view
Ejemplo n.º 10
0
    def _sequence(self, type_: oer.Sequence, checker: constraints_checker.Dict,
                  controller: Controller) -> AbstractView:
        view, optional_interface = self._view_factory.get_container_view(
            self.__get_type_info(type_))

        sub_controller = ControllerFactory(
            controller).create_container_controller(type_, optional_interface)

        for sub_type in type_.root_members + ([] if type_.additions is None
                                              else type_.additions):
            view.add_child(
                self.create_view_and_controller(
                    sub_type,
                    self.__get_member_checker(checker,
                                              sub_type.name), sub_controller))

        return view
Ejemplo n.º 11
0
 def _null(self, type_: oer.Type, controller: Controller) -> AbstractView:
     ControllerFactory(controller).create_null_controller(type_)
     return self._view_factory.get_text_view(self.__get_type_info(type_),
                                             "NULL")