SWAG[T] = ref object op: proc (x, y: T): T e: T top: seq[T] bottom: seq[T] topfold: seq[T] bottomfold: seq[T]
CPLIB_COLLECTIONS_SWAG = 1
proc `$`[T](self: SWAG[T]): string
proc `[]`[T](self: SWAG[T]; index: int): T
proc addFirst[T](self: SWAG[T]; x: T)
proc addLast[T](self: SWAG[T]; x: T)
proc fold[T](self: SWAG[T]): T
proc initSWAG[T](op: proc (x, y: T): T; e: T): SWAG[T]
proc len[T](self: SWAG[T]): int
proc popFirst[T](self: SWAG[T]): T
proc popLast[T](self: SWAG[T]): T