feat(py): add set type
This commit is contained in:
70
py/set.go
Normal file
70
py/set.go
Normal file
@@ -0,0 +1,70 @@
|
|||||||
|
/*
|
||||||
|
* Copyright (c) 2024 The GoPlus Authors (goplus.org). 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 py
|
||||||
|
|
||||||
|
import (
|
||||||
|
_ "unsafe"
|
||||||
|
)
|
||||||
|
|
||||||
|
// https://docs.python.org/3/c-api/set.html
|
||||||
|
|
||||||
|
// Return a new set containing objects returned by the iterable. The iterable
|
||||||
|
// may be nil to create a new empty set. Return the new set on success or nil
|
||||||
|
// on failure. set a TypeError exception if iterable is not actually iterable.
|
||||||
|
// The constructor is also useful for copying a set (c=set(s)).
|
||||||
|
//
|
||||||
|
//go:linkname NewSet C.PySet_New
|
||||||
|
func NewSet(iterable *Object) *Object { return nil }
|
||||||
|
|
||||||
|
// Return the length of a set or frozenset object. Equivalent to len(anyset).
|
||||||
|
// Set a SystemError if anyset is not a set, frozenset, or an instance of a
|
||||||
|
// subtype.
|
||||||
|
//
|
||||||
|
// llgo:link (*Object).SetLen C.PySet_Size
|
||||||
|
func (s *Object) SetLen() int { return 0 }
|
||||||
|
|
||||||
|
// Return 1 if found, 0 if not found, and -1 if an error is encountered.
|
||||||
|
// Unlike the Python __contains__() method, this function does not automatically
|
||||||
|
// convert unhashable sets into temporary frozensets. Set a TypeError if the key
|
||||||
|
// is unhashable. Set SystemError if s is not a set, frozenset, or an instance
|
||||||
|
// of a subtype.
|
||||||
|
//
|
||||||
|
// llgo:link (*Object).SetContains C.PySet_Contains
|
||||||
|
func (s *Object) SetContains(key *Object) int { return 0 }
|
||||||
|
|
||||||
|
// Add key to a set instance. Also works with frozenset instances (like
|
||||||
|
// PyTuple_SetItem() it can be used to fill in the values of brand new
|
||||||
|
// frozensets before they are exposed to other code). Return 0 on success or -1
|
||||||
|
// on failure. Set a TypeError if the key is unhashable. Set a MemoryError if
|
||||||
|
// there is no room to grow. Set a SystemError if set is not an instance of set
|
||||||
|
// or its subtype.
|
||||||
|
//
|
||||||
|
// llgo:link (*Object).SetAdd C.PySet_Add
|
||||||
|
func (s *Object) SetAdd(key *Object) int { return 0 }
|
||||||
|
|
||||||
|
// Return a new reference to an arbitrary object in the set, and removes the
|
||||||
|
// object from the set. Return nil on failure. Set KeyError if the set is empty.
|
||||||
|
// Set a SystemError if set is not an instance of set or its subtype.
|
||||||
|
//
|
||||||
|
// llgo:link (*Object).SetPop C.PySet_Pop
|
||||||
|
func (s *Object) SetPop() *Object { return nil }
|
||||||
|
|
||||||
|
// Empty an existing set of all elements. Return 0 on success. Return -1 and
|
||||||
|
// set SystemError if set is not an instance of set or its subtype.
|
||||||
|
//
|
||||||
|
// llgo:link (*Object).SetClear C.PySet_Clear
|
||||||
|
func (s *Object) SetClear() *Object { return nil }
|
||||||
Reference in New Issue
Block a user