From caed8d85f40199c1cf23ae09d00bc3d1341d3c07 Mon Sep 17 00:00:00 2001 From: Daniel Smith Date: Wed, 11 May 2016 22:14:15 -0700 Subject: [PATCH] add scheme builder --- pkg/runtime/scheme_builder.go | 37 +++++++++++++++++++++++++++++++++++ 1 file changed, 37 insertions(+) create mode 100644 pkg/runtime/scheme_builder.go diff --git a/pkg/runtime/scheme_builder.go b/pkg/runtime/scheme_builder.go new file mode 100644 index 00000000000..3685d4195e4 --- /dev/null +++ b/pkg/runtime/scheme_builder.go @@ -0,0 +1,37 @@ +/* +Copyright 2015 The Kubernetes Authors All rights reserved. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package runtime + +// SchemeBuilder collects functions that add things to a scheme. It's to allow +// code to compile without explicitly referencing generated types. You should +// declare one in each package that will have generated deep copy or conversion +// functions. +type SchemeBuilder []func(*Scheme) + +// AddToScheme applies all the stored functions to the scheme. +func (sb *SchemeBuilder) AddToScheme(s *Scheme) { + for _, f := range *sb { + f(s) + } +} + +// Register adds a scheme setup function to the list. +func (sb *SchemeBuilder) Register(funcs ...func(*Scheme)) { + for _, f := range funcs { + *sb = append(*sb, f) + } +}