Source file src/structs/hostlayout.go

     1  // Copyright 2024 The Go Authors. All rights reserved.
     2  // Use of this source code is governed by a BSD-style
     3  // license that can be found in the LICENSE file.
     4  
     5  package structs
     6  
     7  // HostLayout marks a struct as using host memory layout. A struct with a
     8  // field of type HostLayout will be laid out in memory according to host
     9  // expectations, generally following the host's C ABI.
    10  //
    11  // HostLayout does not affect layout within any other struct-typed fields
    12  // of the containing struct, nor does it affect layout of structs
    13  // containing the struct marked as host layout.
    14  //
    15  // By convention, HostLayout should be used as the type of a field
    16  // named "_", placed at the beginning of the struct type definition.
    17  type HostLayout struct {
    18  	_ hostLayout // prevent accidental conversion with plain struct{}
    19  }
    20  
    21  // We use an unexported type within the exported type to give the marker
    22  // type itself, rather than merely its name, a recognizable identity in
    23  // the type system. The main consequence of this is that a user can give
    24  // the type a new name and it will still have the same properties, e.g.,
    25  //
    26  //	type HL structs.HostLayout
    27  //
    28  // It also prevents unintentional conversion of struct{} to a named marker type.
    29  type hostLayout struct {
    30  }
    31  

View as plain text