-- |
-- Module      : Data.ASN1.OID
-- License     : BSD-style
-- Maintainer  : Vincent Hanquez <vincent@snarc.org>
-- Stability   : experimental
-- Portability : unknown
--
{-# LANGUAGE DeriveDataTypeable #-}
module Data.ASN1.OID
    ( OID
    -- * classes
    , OIDable(..)
    , OIDNameable(..)
    ) where

-- | Standard ASN.1 Object ID (OID)
type OID = [Integer]

-- | Class of things that have an Object ID
class OIDable a where
    -- | return the object ID of an Object from the ObjectIdentifiable class.
    getObjectID :: a -> OID

-- | Class of things that can be named by Object ID
class OIDNameable a where
    -- | Try to convert an OID into an Object
    fromObjectID :: OID -> Maybe a