{- |
Module      : Data.ASN1.OID
License     : BSD-style
Copyright   : (c) 2010-2013 Vincent Hanquez <vincent@snarc.org>
Stability   : experimental
Portability : unknown
-}

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