Skip to content

Commit 66dbc57

Browse files
committed
refactor(custom): add cstrPtr helper to simplify UUID function nil checks
- Add cstrPtr helper for nil-safe CStr pointer access in CGO calls - Simplify AVUuidParse, AVUuidUrnParse, AVUuidParseRange, AVUuidUnparse to use the helper instead of inline nil-check blocks - Remove 18 lines of repetitive boilerplate code
1 parent e73687e commit 66dbc57

1 file changed

Lines changed: 13 additions & 24 deletions

File tree

custom.go

Lines changed: 13 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -198,6 +198,15 @@ type AVCRC = uint32
198198
// Binary representation of a UUID per IETF RFC 4122.
199199
type AVUUID = [16]uint8
200200

201+
// cstrPtr returns the underlying C char pointer from a CStr, or nil if s is nil.
202+
// This helper simplifies nil-safe access to CStr pointers in CGO calls.
203+
func cstrPtr(s *CStr) *C.char {
204+
if s == nil {
205+
return nil
206+
}
207+
return s.ptr
208+
}
209+
201210
// --- Manual UUID function wrappers (arrays need pointer conversion in CGO) ---
202211

203212
// AVUuidParse parses a string representation of a UUID formatted according to IETF RFC 4122
@@ -210,11 +219,7 @@ type AVUUID = [16]uint8
210219
// @param[out] uu AVUUID
211220
// @return A non-zero value in case of an error.
212221
func AVUuidParse(in *CStr, uu *AVUUID) (int, error) {
213-
var tmpin *C.char
214-
if in != nil {
215-
tmpin = in.ptr
216-
}
217-
ret := C.av_uuid_parse(tmpin, (*C.uint8_t)(unsafe.Pointer(&uu[0])))
222+
ret := C.av_uuid_parse(cstrPtr(in), (*C.uint8_t)(unsafe.Pointer(&uu[0])))
218223
return int(ret), WrapErr(int(ret))
219224
}
220225

@@ -228,11 +233,7 @@ func AVUuidParse(in *CStr, uu *AVUUID) (int, error) {
228233
// @param[out] uu AVUUID
229234
// @return A non-zero value in case of an error.
230235
func AVUuidUrnParse(in *CStr, uu *AVUUID) (int, error) {
231-
var tmpin *C.char
232-
if in != nil {
233-
tmpin = in.ptr
234-
}
235-
ret := C.av_uuid_urn_parse(tmpin, (*C.uint8_t)(unsafe.Pointer(&uu[0])))
236+
ret := C.av_uuid_urn_parse(cstrPtr(in), (*C.uint8_t)(unsafe.Pointer(&uu[0])))
236237
return int(ret), WrapErr(int(ret))
237238
}
238239

@@ -246,15 +247,7 @@ func AVUuidUrnParse(in *CStr, uu *AVUUID) (int, error) {
246247
// @param[out] uu AVUUID
247248
// @return A non-zero value in case of an error.
248249
func AVUuidParseRange(inStart *CStr, inEnd *CStr, uu *AVUUID) (int, error) {
249-
var tmpinStart *C.char
250-
if inStart != nil {
251-
tmpinStart = inStart.ptr
252-
}
253-
var tmpinEnd *C.char
254-
if inEnd != nil {
255-
tmpinEnd = inEnd.ptr
256-
}
257-
ret := C.av_uuid_parse_range(tmpinStart, tmpinEnd, (*C.uint8_t)(unsafe.Pointer(&uu[0])))
250+
ret := C.av_uuid_parse_range(cstrPtr(inStart), cstrPtr(inEnd), (*C.uint8_t)(unsafe.Pointer(&uu[0])))
258251
return int(ret), WrapErr(int(ret))
259252
}
260253

@@ -264,11 +257,7 @@ func AVUuidParseRange(inStart *CStr, inEnd *CStr, uu *AVUUID) (int, error) {
264257
// @param[in] uu AVUUID
265258
// @param[out] out Pointer to an array of no less than 37 characters.
266259
func AVUuidUnparse(uu *AVUUID, out *CStr) {
267-
var tmpout *C.char
268-
if out != nil {
269-
tmpout = out.ptr
270-
}
271-
C.av_uuid_unparse((*C.uint8_t)(unsafe.Pointer(&uu[0])), tmpout)
260+
C.av_uuid_unparse((*C.uint8_t)(unsafe.Pointer(&uu[0])), cstrPtr(out))
272261
}
273262

274263
// AVUuidEqual compares two UUIDs for equality.

0 commit comments

Comments
 (0)