pure subroutine get(this, name, r,g,b, c,m,y,k, decimal, hex, h,s,v, hl,sl,vl, xyz_x,xyz_y,xyz_z)
class(color), intent(inout) :: this
character(len=:), allocatable, intent(out), optional :: name
integer(ik), intent(out), optional :: r, g, b, c, m, y, k, decimal
character(len=7), intent(out), optional :: hex
real(rk), intent(out), optional :: h, s, v, hl, sl, vl, xyz_x, xyz_y, xyz_z
if (present(name)) call this%get_name(name)
if (present(r) .and. present(g) .and. present(b)) call this%get_rgb(r, g, b)
if (present(c) .and. present(m) .and. present(y) .and. present(k)) call this%get_cmyk(c, m, y, k)
if (present(decimal)) call this%get_decimal(decimal)
if (present(hex)) call this%get_hex(hex)
if (present(h) .and. present(s) .and. present(v)) call this%get_hsv(h, s, v)
if (present(hl) .and. present(sl) .and. present(vl)) call this%get_hsl(hl, sl, vl)
if (present(xyz_x) .and. present(xyz_y) .and. present(xyz_z)) call this%get_xyz(xyz_x, xyz_y, xyz_z)
end subroutine get