Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
K
k3s
Project
Project
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Registry
Registry
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
Jacklull
k3s
Commits
210bac10
Commit
210bac10
authored
Feb 03, 2016
by
k8s-merge-robot
Browse files
Options
Browse Files
Download
Plain Diff
Merge pull request #19200 from wojtek-t/public_deep_copies
Auto commit by PR queue bot
parents
fc2929ed
68d0f638
Expand all
Hide whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
22 additions
and
6 deletions
+22
-6
deepcopy.go
cmd/libs/go2idl/deepcopy-gen/generators/deepcopy.go
+22
-6
deep_copy_generated.go
pkg/api/deep_copy_generated.go
+0
-0
No files found.
cmd/libs/go2idl/deepcopy-gen/generators/deepcopy.go
View file @
210bac10
...
...
@@ -17,6 +17,7 @@ limitations under the License.
package
generators
import
(
"fmt"
"io"
"path/filepath"
"strings"
...
...
@@ -202,6 +203,16 @@ func (g *genDeepCopy) Imports(c *generator.Context) (imports []string) {
return
importLines
}
func
argsFromType
(
t
*
types
.
Type
)
interface
{}
{
return
map
[
string
]
interface
{}{
"type"
:
t
,
}
}
func
(
g
*
genDeepCopy
)
funcNameTmpl
(
t
*
types
.
Type
)
string
{
return
"DeepCopy_$.type|public$"
}
func
(
g
*
genDeepCopy
)
Init
(
c
*
generator
.
Context
,
w
io
.
Writer
)
error
{
sw
:=
generator
.
NewSnippetWriter
(
w
,
c
,
"$"
,
"$"
)
sw
.
Do
(
"func init() {
\n
"
,
nil
)
...
...
@@ -211,7 +222,7 @@ func (g *genDeepCopy) Init(c *generator.Context, w io.Writer) error {
sw
.
Do
(
"if err := api.Scheme.AddGeneratedDeepCopyFuncs(
\n
"
,
nil
)
}
for
_
,
t
:=
range
g
.
typesForInit
{
sw
.
Do
(
"deepCopy_$.|public$,
\n
"
,
t
)
sw
.
Do
(
fmt
.
Sprintf
(
"%s,
\n
"
,
g
.
funcNameTmpl
(
t
)),
argsFromType
(
t
)
)
}
sw
.
Do
(
"); err != nil {
\n
"
,
nil
)
sw
.
Do
(
"// if one of the deep copy functions is malformed, detect it immediately.
\n
"
,
nil
)
...
...
@@ -224,7 +235,8 @@ func (g *genDeepCopy) Init(c *generator.Context, w io.Writer) error {
// GenerateType makes the body of a file implementing a set for type t.
func
(
g
*
genDeepCopy
)
GenerateType
(
c
*
generator
.
Context
,
t
*
types
.
Type
,
w
io
.
Writer
)
error
{
sw
:=
generator
.
NewSnippetWriter
(
w
,
c
,
"$"
,
"$"
)
sw
.
Do
(
"func deepCopy_$.|public$(in $.|raw$, out *$.|raw$, c *conversion.Cloner) error {
\n
"
,
t
)
funcName
:=
g
.
funcNameTmpl
(
t
)
sw
.
Do
(
fmt
.
Sprintf
(
"func %s(in $.type|raw$, out *$.type|raw$, c *conversion.Cloner) error {
\n
"
,
funcName
),
argsFromType
(
t
))
g
.
generateFor
(
t
,
sw
)
sw
.
Do
(
"return nil
\n
"
,
nil
)
sw
.
Do
(
"}
\n\n
"
,
nil
)
...
...
@@ -270,7 +282,8 @@ func (g *genDeepCopy) doMap(t *types.Type, sw *generator.SnippetWriter) {
}
else
{
if
g
.
copyableWithinPackage
(
t
.
Elem
)
{
sw
.
Do
(
"newVal := new($.|raw$)
\n
"
,
t
.
Elem
)
sw
.
Do
(
"if err := deepCopy_$.|public$(val, newVal, c); err != nil {
\n
"
,
t
.
Elem
)
funcName
:=
g
.
funcNameTmpl
(
t
.
Elem
)
sw
.
Do
(
fmt
.
Sprintf
(
"if err := %s(val, newVal, c); err != nil {
\n
"
,
funcName
),
argsFromType
(
t
.
Elem
))
sw
.
Do
(
"return err
\n
"
,
nil
)
sw
.
Do
(
"}
\n
"
,
nil
)
sw
.
Do
(
"(*out)[key] = *newVal
\n
"
,
nil
)
...
...
@@ -298,7 +311,8 @@ func (g *genDeepCopy) doSlice(t *types.Type, sw *generator.SnippetWriter) {
if
t
.
Elem
.
IsAssignable
()
{
sw
.
Do
(
"(*out)[i] = in[i]
\n
"
,
nil
)
}
else
if
g
.
copyableWithinPackage
(
t
.
Elem
)
{
sw
.
Do
(
"if err := deepCopy_$.|public$(in[i], &(*out)[i], c); err != nil {
\n
"
,
t
.
Elem
)
funcName
:=
g
.
funcNameTmpl
(
t
.
Elem
)
sw
.
Do
(
fmt
.
Sprintf
(
"if err := %s(in[i], &(*out)[i], c); err != nil {
\n
"
,
funcName
),
argsFromType
(
t
.
Elem
))
sw
.
Do
(
"return err
\n
"
,
nil
)
sw
.
Do
(
"}
\n
"
,
nil
)
}
else
{
...
...
@@ -330,7 +344,8 @@ func (g *genDeepCopy) doStruct(t *types.Type, sw *generator.SnippetWriter) {
sw
.
Do
(
"}
\n
"
,
nil
)
case
types
.
Struct
:
if
g
.
copyableWithinPackage
(
m
.
Type
)
{
sw
.
Do
(
"if err := deepCopy_$.type|public$(in.$.name$, &out.$.name$, c); err != nil {
\n
"
,
args
)
funcName
:=
g
.
funcNameTmpl
(
m
.
Type
)
sw
.
Do
(
fmt
.
Sprintf
(
"if err := %s(in.$.name$, &out.$.name$, c); err != nil {
\n
"
,
funcName
),
args
)
sw
.
Do
(
"return err
\n
"
,
nil
)
sw
.
Do
(
"}
\n
"
,
nil
)
}
else
{
...
...
@@ -364,7 +379,8 @@ func (g *genDeepCopy) doPointer(t *types.Type, sw *generator.SnippetWriter) {
if
t
.
Elem
.
Kind
==
types
.
Builtin
{
sw
.
Do
(
"**out = *in"
,
nil
)
}
else
if
g
.
copyableWithinPackage
(
t
.
Elem
)
{
sw
.
Do
(
"if err := deepCopy_$.|public$(*in, *out, c); err != nil {
\n
"
,
t
.
Elem
)
funcName
:=
g
.
funcNameTmpl
(
t
.
Elem
)
sw
.
Do
(
fmt
.
Sprintf
(
"if err := %s(*in, *out, c); err != nil {
\n
"
,
funcName
),
argsFromType
(
t
.
Elem
))
sw
.
Do
(
"return err
\n
"
,
nil
)
sw
.
Do
(
"}
\n
"
,
nil
)
}
else
{
...
...
pkg/api/deep_copy_generated.go
View file @
210bac10
This diff is collapsed.
Click to expand it.
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment