58 lines
1.9 KiB
Go
58 lines
1.9 KiB
Go
package addrs
|
|
|
|
// AbsMoveable is an interface implemented by address types that can be either
|
|
// the source or destination of a "moved" statement in configuration, along
|
|
// with any other similar cross-module state refactoring statements we might
|
|
// allow.
|
|
//
|
|
// Note that AbsMoveable represents an absolute address relative to the root
|
|
// of the configuration, which is different than the direct representation
|
|
// of these in configuration where the author gives an address relative to
|
|
// the current module where the address is defined. The type MoveEndpoint
|
|
type AbsMoveable interface {
|
|
absMoveableSigil()
|
|
UniqueKeyer
|
|
|
|
String() string
|
|
}
|
|
|
|
// The following are all of the possible AbsMoveable address types:
|
|
var (
|
|
_ AbsMoveable = AbsResource{}
|
|
_ AbsMoveable = AbsResourceInstance{}
|
|
_ AbsMoveable = ModuleInstance(nil)
|
|
_ AbsMoveable = AbsModuleCall{}
|
|
)
|
|
|
|
// AbsMoveableResource is an AbsMoveable that is either a resource or a resource
|
|
// instance.
|
|
type AbsMoveableResource interface {
|
|
AbsMoveable
|
|
AffectedAbsResource() AbsResource
|
|
}
|
|
|
|
// The following are all of the possible AbsMoveableResource types:
|
|
var (
|
|
_ AbsMoveableResource = AbsResource{}
|
|
_ AbsMoveableResource = AbsResourceInstance{}
|
|
)
|
|
|
|
// ConfigMoveable is similar to AbsMoveable but represents a static object in
|
|
// the configuration, rather than an instance of that object created by
|
|
// module expansion.
|
|
//
|
|
// Note that ConfigMovable represents an absolute address relative to the root
|
|
// of the configuration, which is different than the direct representation
|
|
// of these in configuration where the author gives an address relative to
|
|
// the current module where the address is defined. The type MoveEndpoint
|
|
// represents the relative form given directly in configuration.
|
|
type ConfigMoveable interface {
|
|
configMoveableSigil()
|
|
}
|
|
|
|
// The following are all of the possible ConfigMovable address types:
|
|
var (
|
|
_ ConfigMoveable = ConfigResource{}
|
|
_ ConfigMoveable = Module(nil)
|
|
)
|