github.com/Konstantin8105/c4go@v0.0.0-20240505174241-768bb1c65a51/ast/cxx_constructor_decl.go (about)

     1  package ast
     2  
     3  import (
     4  	"strings"
     5  )
     6  
     7  // CXXConstructorDecl is node constructor.
     8  type CXXConstructorDecl struct {
     9  	Addr       Address
    10  	Parent     string
    11  	Prev       string
    12  	Pos        Position
    13  	Position2  string
    14  	IsImplicit bool
    15  	IsUsed     bool
    16  	Type       string
    17  	Type2      string
    18  	IsInline   bool
    19  	Other      string
    20  	ChildNodes []Node
    21  }
    22  
    23  func parseCXXConstructorDecl(line string) *CXXConstructorDecl {
    24  	groups := groupsFromRegex(
    25  		`(?:parent (?P<parent>0x[0-9a-f]+) )?
    26  		(?:prev (?P<prev>0x[0-9a-f]+) )?
    27  		<(?P<position>.*)>
    28  		(?P<position2> col:\d+| line:\d+:\d+)?
    29  		(?P<implicit> implicit)?
    30  		(?P<used> used)?
    31  		( (?P<type>\w+)?)?
    32  		( '(?P<type2>.*?)')?
    33  		(?P<inline> inline)?
    34  		(?P<other>.*)`,
    35  		line,
    36  	)
    37  
    38  	return &CXXConstructorDecl{
    39  		Addr:       ParseAddress(groups["address"]),
    40  		Prev:       groups["prev"],
    41  		Parent:     groups["parent"],
    42  		Pos:        NewPositionFromString(groups["position"]),
    43  		Position2:  strings.TrimSpace(groups["position2"]),
    44  		IsImplicit: len(groups["implicit"]) > 0,
    45  		IsUsed:     len(groups["used"]) > 0,
    46  		Type:       groups["type"],
    47  		Type2:      groups["type2"],
    48  		IsInline:   len(groups["inline"]) > 0,
    49  		Other:      groups["other"],
    50  		ChildNodes: []Node{},
    51  	}
    52  }
    53  
    54  // AddChild adds a new child node. Child nodes can then be accessed with the
    55  // Children attribute.
    56  func (n *CXXConstructorDecl) AddChild(node Node) {
    57  	n.ChildNodes = append(n.ChildNodes, node)
    58  }
    59  
    60  // Address returns the numeric address of the node. See the documentation for
    61  // the Address type for more information.
    62  func (n *CXXConstructorDecl) Address() Address {
    63  	return n.Addr
    64  }
    65  
    66  // Children returns the child nodes. If this node does not have any children or
    67  // this node does not support children it will always return an empty slice.
    68  func (n *CXXConstructorDecl) Children() []Node {
    69  	return n.ChildNodes
    70  }
    71  
    72  // Position returns the position in the original source code.
    73  func (n *CXXConstructorDecl) Position() Position {
    74  	return n.Pos
    75  }