-- Hoogle documentation, generated by Haddock
-- See Hoogle, http://www.haskell.org/hoogle/


-- | C++ FFI generator - Standard library bindings
--   
--   Hoppy generates Haskell bindings to C++ libraries.
--   
--   This package contains definitions for the C++ standard library.
@package hoppy-std
@version 0.3.0


-- | Bindings for <tt>std::string</tt>.
module Foreign.Hoppy.Generator.Std.String

-- | <pre>
--   std::string
--   </pre>
c_string :: Class


-- | Support for STL-style iterators. The functions in this module modify a
--   class to add functionality that is provided by different types of STL
--   iterators. In the method pseudotypes documented here, the parameter
--   types are <a>Type</a>s, and all methods are nonpure.
module Foreign.Hoppy.Generator.Std.Iterator

-- | Whether an iterator may be used to modify the underlying collection.
data IteratorMutability
Constant :: IteratorMutability
Mutable :: IteratorMutability

-- | <tt>makeTrivialIteartor mutable valueTypeMaybe cls</tt> turns a class
--   into a trivial iterator, adding:
--   
--   <ul>
--   <li>A default constructor named <tt>new</tt>.</li>
--   <li>The class features <a>Assignable</a>, <a>Copyable</a>, and
--   <a>Equatable</a>.</li>
--   <li><b>operator*:</b> <tt>getConst :: this -&gt; <a>refT</a>
--   (<a>constT</a> valueType)</tt>; if <tt>valueTypeMaybe</tt> is
--   present.</li>
--   <li><b>operator*:</b> <tt>get :: this -&gt; <a>refT</a>
--   valueType</tt>; if <tt>valueTypeMaybe</tt> is present and
--   <tt>mutable</tt> is <a>Mutable</a>.</li>
--   <li><b>*iter = x:</b> <tt>put :: this -&gt; valueType -&gt;
--   <a>voidT</a></tt>; if <tt>valueTypeMaybe</tt> is present and
--   <tt>mutable</tt> is <a>Mutable</a>.</li>
--   </ul>
makeTrivialIterator :: IteratorMutability -> Maybe Type -> Class -> Class

-- | Turns a class into a forward iterator, including everything from
--   <a>makeTrivialIterator</a> plus the pre-increment operator:
--   
--   <ul>
--   <li><b>operator++:</b> <tt>next :: this -&gt; <a>refT</a> (<a>objT</a>
--   cls)</tt>.</li>
--   </ul>
makeForwardIterator :: IteratorMutability -> Maybe Type -> Class -> Class

-- | Turns a class into a bidirectional iterator, including everything from
--   <a>makeForwardIterator</a> plus the pre-decrement operator:
--   
--   <ul>
--   <li><b>operator--:</b> <tt>prev :: this -&gt; <a>refT</a> (<a>objT</a>
--   cls)</tt>.</li>
--   </ul>
makeBidirectionalIterator :: IteratorMutability -> Maybe Type -> Class -> Class

-- | <tt>makeRandomIterator mutable valueTypeMaybe distanceType cls</tt>
--   turns a class into a random iterator, including everything from
--   <a>makeBidirectionalIterator</a> plus some methods:
--   
--   <ul>
--   <li><b>operator+=:</b> <tt>add :: this -&gt; distanceType -&gt;
--   <a>refT</a> (<a>objT</a> cls)</tt>.</li>
--   <li><b>operator+:</b> <tt>plus :: this -&gt; distanceType -&gt;
--   <a>toGcT</a> cls</tt>.</li>
--   <li><b>operator-=:</b> <tt>subtract :: distanceType -&gt; <a>refT</a>
--   (<a>objT</a> cls)</tt>.</li>
--   <li><b>operator-:</b> <tt>minus :: distanceType -&gt; <a>toGcT</a>
--   cls</tt>.</li>
--   <li><b>operator-:</b> <tt>difference :: this -&gt; this -&gt;
--   distanceType</tt>.</li>
--   <li><b>operator[]:</b> <tt>atConst :: distanceType -&gt; <a>refT</a>
--   (<a>constT</a> valueType)</tt>; if <tt>valueTypeMaybe</tt> is
--   present.</li>
--   <li><b>operator[]:</b> <tt>at :: distanceType -&gt; <a>refT</a>
--   valueType</tt>; if <tt>valueTypeMaybe</tt> is present and
--   <tt>mutable</tt> is <a>Mutable</a>.</li>
--   </ul>
makeRandomIterator :: IteratorMutability -> Maybe Type -> Type -> Class -> Class
instance GHC.Show.Show Foreign.Hoppy.Generator.Std.Iterator.IteratorMutability
instance GHC.Classes.Ord Foreign.Hoppy.Generator.Std.Iterator.IteratorMutability
instance GHC.Classes.Eq Foreign.Hoppy.Generator.Std.Iterator.IteratorMutability


-- | Bindings for <tt>std::pair</tt>.
module Foreign.Hoppy.Generator.Std.Pair

-- | Options for instantiating <tt>pair</tt>.
data Options
Options :: [ClassFeature] -> Options

-- | Additional features to add to the <tt>std::pair</tt> class. Pairs are
--   always <a>Assignable</a> and <a>Copyable</a>.
[optPairClassFeatures] :: Options -> [ClassFeature]

-- | The default options have no additional <a>ClassFeature</a>s.
defaultOptions :: Options

-- | A set of instantiated pair classes.
data Contents
Contents :: Class -> Contents

-- | <pre>
--   std::pair&lt;A, B&gt;
--   </pre>
[c_pair] :: Contents -> Class

-- | <tt>instantiate className a b reqs</tt> creates a set of bindings for
--   an instantiation of <tt>std::pair&lt;a, b&gt;</tt>. In the result, the
--   <a>c_pair</a> class has an external name of <tt>className</tt>.
instantiate :: String -> Type -> Type -> Reqs -> Contents

-- | <a>instantiate</a> with additional options.
instantiate' :: String -> Type -> Type -> Reqs -> Options -> Contents

-- | Converts an instantiation into a list of exports to be included in a
--   module.
toExports :: Contents -> [Export]


-- | Bindings for <tt>std</tt> that aren't in other modules.
module Foreign.Hoppy.Generator.Std

-- | Specifies how values in a collection should be converted when
--   converting the collection as a whole.
data ValueConversion

-- | A C++ value of type <tt>t</tt> will convert to a foreign value of type
--   <tt><a>ptrT</a> t</tt>.
ConvertPtr :: ValueConversion

-- | A C++ value of type <tt>t</tt> will convert to a foreign value of type
--   <tt>t</tt>. For an object type (<a>objT</a>), the class must have
--   conversions (<a>ClassConversion</a>).
ConvertValue :: ValueConversion

-- | Include <tt>std::string</tt>.
mod_std :: Module

-- | <pre>
--   std::string
--   </pre>
c_string :: Class
instance GHC.Show.Show Foreign.Hoppy.Generator.Std.ValueConversion
instance GHC.Classes.Ord Foreign.Hoppy.Generator.Std.ValueConversion
instance GHC.Classes.Eq Foreign.Hoppy.Generator.Std.ValueConversion
instance GHC.Enum.Enum Foreign.Hoppy.Generator.Std.ValueConversion
instance GHC.Enum.Bounded Foreign.Hoppy.Generator.Std.ValueConversion


-- | Bindings for <tt>std::list</tt>.
module Foreign.Hoppy.Generator.Std.List

-- | Options for instantiating the list classes.
data Options
Options :: [ClassFeature] -> Maybe ValueConversion -> Options

-- | Additional features to add to the <tt>std::list</tt> class. Lists are
--   always <a>Assignable</a> and <a>Copyable</a>, but you may want to add
--   <a>Equatable</a> and <a>Comparable</a> if your value type supports
--   those.
[optListClassFeatures] :: Options -> [ClassFeature]
[optValueConversion] :: Options -> Maybe ValueConversion

-- | The default options have no additional <a>ClassFeature</a>s.
defaultOptions :: Options

-- | A set of instantiated list classes.
data Contents
Contents :: Class -> Class -> Class -> Contents

-- | <pre>
--   std::list&lt;T&gt;
--   </pre>
[c_list] :: Contents -> Class

-- | <pre>
--   std::list&lt;T&gt;::iterator
--   </pre>
[c_iterator] :: Contents -> Class

-- | <pre>
--   std::list&lt;T&gt;::const_iterator
--   </pre>
[c_constIterator] :: Contents -> Class

-- | <tt>instantiate className t tReqs</tt> creates a set of bindings for
--   an instantiation of <tt>std::list</tt> and associated types (e.g.
--   iterators). In the result, the <a>c_list</a> class has an external
--   name of <tt>className</tt>, and the iterator classes are further
--   suffixed with <tt>"Iterator"</tt> and <tt>"ConstIterator"</tt>
--   respectively.
instantiate :: String -> Type -> Reqs -> Contents

-- | <a>instantiate</a> with additional options.
instantiate' :: String -> Type -> Reqs -> Options -> Contents

-- | Converts an instantiation into a list of exports to be included in a
--   module.
toExports :: Contents -> [Export]


-- | Bindings for <tt>std::map</tt>.
module Foreign.Hoppy.Generator.Std.Map

-- | Options for instantiating the map classes.
data Options
Options :: [ClassFeature] -> Maybe ValueConversion -> Maybe ValueConversion -> Options

-- | Additional features to add to the <tt>std::map</tt> class. Maps are
--   always <a>Assignable</a> and <a>Copyable</a>.
[optMapClassFeatures] :: Options -> [ClassFeature]

-- | How to convert values of the key type.
[optKeyConversion] :: Options -> Maybe ValueConversion

-- | How to convert values of the value type.
[optValueConversion] :: Options -> Maybe ValueConversion

-- | The default options have no additional <a>ClassFeature</a>s.
defaultOptions :: Options

-- | A set of instantiated map classes.
data Contents
Contents :: Class -> Class -> Class -> Contents

-- | <pre>
--   std::map&lt;K, V&gt;
--   </pre>
[c_map] :: Contents -> Class

-- | <pre>
--   std::map&lt;K, V&gt;::iterator
--   </pre>
[c_iterator] :: Contents -> Class

-- | <pre>
--   std::map&lt;K, V&gt;::const_iterator
--   </pre>
[c_constIterator] :: Contents -> Class

-- | <tt>instantiate className k v reqs</tt> creates a set of bindings for
--   an instantiation of <tt>std::map&lt;k, v&gt;</tt> and associated types
--   (e.g. iterators). In the result, the <a>c_map</a> class has an
--   external name of <tt>className</tt>, and the iterator classes are
--   further suffixed with <tt>"Iterator"</tt> and <tt>"ConstIterator"</tt>
--   respectively.
instantiate :: String -> Type -> Type -> Reqs -> Contents

-- | <a>instantiate</a> with additional options.
instantiate' :: String -> Type -> Type -> Reqs -> Options -> Contents

-- | Converts an instantiation into a list of exports to be included in a
--   module.
toExports :: Contents -> [Export]


-- | Bindings for <tt>std::set</tt>.
module Foreign.Hoppy.Generator.Std.Set

-- | Options for instantiating the set classes.
data Options
Options :: [ClassFeature] -> Maybe ValueConversion -> Options

-- | Additional features to add to the <tt>std::set</tt> class. Sets are
--   always <a>Assignable</a>, <a>Comparable</a>, and <a>Copyable</a>, but
--   you may want to add <a>Equatable</a> if your value type supports
--   those.
[optSetClassFeatures] :: Options -> [ClassFeature]
[optValueConversion] :: Options -> Maybe ValueConversion

-- | The default options have no additional <a>ClassFeature</a>s.
defaultOptions :: Options

-- | A set of instantiated set classes.
data Contents
Contents :: Class -> Class -> Contents

-- | <pre>
--   std::set&lt;T&gt;
--   </pre>
[c_set] :: Contents -> Class

-- | <pre>
--   std::set&lt;T&gt;::iterator
--   </pre>
[c_iterator] :: Contents -> Class

-- | <tt>instantiate className t tReqs</tt> creates a set of bindings for
--   an instantiation of <tt>std::set</tt> and associated types (e.g.
--   iterators). In the result, the <a>c_set</a> class has an external name
--   of <tt>className</tt>, and the iterator class is further suffixed with
--   <tt>"Iterator"</tt>.
instantiate :: String -> Type -> Reqs -> Contents

-- | <a>instantiate</a> with additional options.
instantiate' :: String -> Type -> Reqs -> Options -> Contents

-- | Converts an instantiation into a list of exports to be included in a
--   module.
toExports :: Contents -> [Export]


-- | Bindings for <tt>std::vector</tt>.
module Foreign.Hoppy.Generator.Std.Vector

-- | Options for instantiating the vector classes.
data Options
Options :: [ClassFeature] -> Maybe ValueConversion -> Options

-- | Additional features to add to the <tt>std::vector</tt> class. Vectors
--   are always <a>Assignable</a> and <a>Copyable</a>, but you may want to
--   add <a>Equatable</a> and <a>Comparable</a> if your value type supports
--   those.
[optVectorClassFeatures] :: Options -> [ClassFeature]
[optValueConversion] :: Options -> Maybe ValueConversion

-- | The default options have no additional <a>ClassFeature</a>s.
defaultOptions :: Options

-- | A set of instantiated vector classes.
data Contents
Contents :: Class -> Class -> Class -> Contents

-- | <pre>
--   std::vector&lt;T&gt;
--   </pre>
[c_vector] :: Contents -> Class

-- | <pre>
--   std::vector&lt;T&gt;::iterator
--   </pre>
[c_iterator] :: Contents -> Class

-- | <pre>
--   std::vector&lt;T&gt;::const_iterator
--   </pre>
[c_constIterator] :: Contents -> Class

-- | <tt>instantiate className t tReqs</tt> creates a set of bindings for
--   an instantiation of <tt>std::vector</tt> and associated types (e.g.
--   iterators). In the result, the <a>c_vector</a> class has an external
--   name of <tt>className</tt>, and the iterator classes are further
--   suffixed with <tt>"Iterator"</tt> and <tt>"ConstIterator"</tt>
--   respectively.
instantiate :: String -> Type -> Reqs -> Contents

-- | <a>instantiate</a> with additional options.
instantiate' :: String -> Type -> Reqs -> Options -> Contents

-- | Converts an instantiation into a list of exports to be included in a
--   module.
toExports :: Contents -> [Export]
