github.com/artyom/thrift@v0.0.0-20130902103359-388840a05deb/field.go (about)

     1  /*
     2   * Licensed to the Apache Software Foundation (ASF) under one
     3   * or more contributor license agreements. See the NOTICE file
     4   * distributed with this work for additional information
     5   * regarding copyright ownership. The ASF licenses this file
     6   * to you under the Apache License, Version 2.0 (the
     7   * "License"); you may not use this file except in compliance
     8   * with the License. You may obtain a copy of the License at
     9   *
    10   *   http://www.apache.org/licenses/LICENSE-2.0
    11   *
    12   * Unless required by applicable law or agreed to in writing,
    13   * software distributed under the License is distributed on an
    14   * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
    15   * KIND, either express or implied. See the License for the
    16   * specific language governing permissions and limitations
    17   * under the License.
    18   */
    19  
    20  package thrift
    21  
    22  // Helper class that encapsulates field metadata.
    23  type field struct {
    24  	name   string
    25  	typeId TType
    26  	id     int
    27  }
    28  
    29  func newField(n string, t TType, i int) *field {
    30  	return &field{name: n, typeId: t, id: i}
    31  }
    32  
    33  func (p *field) Name() string {
    34  	if p == nil {
    35  		return ""
    36  	}
    37  	return p.name
    38  }
    39  
    40  func (p *field) TypeId() TType {
    41  	if p == nil {
    42  		return TType(VOID)
    43  	}
    44  	return p.typeId
    45  }
    46  
    47  func (p *field) Id() int {
    48  	if p == nil {
    49  		return -1
    50  	}
    51  	return p.id
    52  }
    53  
    54  func (p *field) String() string {
    55  	if p == nil {
    56  		return "<nil>"
    57  	}
    58  	return "<TField name:'" + p.name + "' type:" + string(p.typeId) + " field-id:" + string(p.id) + ">"
    59  }
    60  
    61  var ANONYMOUS_FIELD *field
    62  
    63  type fieldSlice []field
    64  
    65  func (p fieldSlice) Len() int {
    66  	return len(p)
    67  }
    68  
    69  func (p fieldSlice) Less(i, j int) bool {
    70  	return p[i].Id() < p[j].Id()
    71  }
    72  
    73  func (p fieldSlice) Swap(i, j int) {
    74  	p[i], p[j] = p[j], p[i]
    75  }
    76  
    77  func init() {
    78  	ANONYMOUS_FIELD = newField("", STOP, 0)
    79  }