generated from athena-framework/component-template
-
Notifications
You must be signed in to change notification settings - Fork 2
/
navigator_factory.cr
18 lines (14 loc) · 1.2 KB
/
navigator_factory.cr
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
module Athena::Serializer::Navigators::NavigatorFactoryInterface
abstract def get_serialization_navigator(visitor : ASR::Visitors::SerializationVisitorInterface, context : ASR::SerializationContext) : ASR::Navigators::SerializationNavigatorInterface
abstract def get_deserialization_navigator(visitor : ASR::Visitors::DeserializationVisitorInterface, context : ASR::DeserializationContext) : ASR::Navigators::DeserializationNavigatorInterface
end
struct Athena::Serializer::Navigators::NavigatorFactory
include Athena::Serializer::Navigators::NavigatorFactoryInterface
def initialize(@object_constructor : ASR::ObjectConstructorInterface = ASR::InstantiateObjectConstructor.new); end
def get_serialization_navigator(visitor : ASR::Visitors::SerializationVisitorInterface, context : ASR::SerializationContext) : ASR::Navigators::SerializationNavigatorInterface
ASR::Navigators::SerializationNavigator.new visitor, context
end
def get_deserialization_navigator(visitor : ASR::Visitors::DeserializationVisitorInterface, context : ASR::DeserializationContext) : ASR::Navigators::DeserializationNavigatorInterface
ASR::Navigators::DeserializationNavigator.new visitor, context, @object_constructor
end
end