hsext loader using Pd path
[pdhaskell:hsext.git] / hsext / Pd.hs
1 -- hsext -- Haskell objects for Pd
2 -- Copyright (C) 2007 Claude Heiland-Allen
3 -- 
4 -- 
5 -- This program is free software; you can redistribute it and/or
6 -- modify it under the terms of the GNU General Public License
7 -- as published by the Free Software Foundation; either version 2
8 -- of the License, or (at your option) any later version.
9 -- 
10 -- This program is distributed in the hope that it will be useful,
11 -- but WITHOUT ANY WARRANTY; without even the implied warranty of
12 -- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
13 -- GNU General Public License for more details.
14 -- 
15 -- You should have received a copy of the GNU General Public License
16 -- along with this program; if not, write to the Free Software
17 -- Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.
18
19 module Pd (
20   Setup,
21   PdInt,
22   PdFloat,
23   PdFloatArg,
24   ClassFlags,
25   AtomType,
26   GimmeTerminator,
27   Symbol,
28   Atom(AFloat,ASymbol),
29   Class,
30   Object,
31   NewMethodGimme,
32   FreeMethod,
33   ClassNewGimme,
34   peekSymbol,
35   gensym,
36   peekPath,
37 ) where
38
39 import Foreign.Ptr
40 import Foreign.C.Types
41
42 import PdStructs
43 -- typedef struct _symbol { char *s_name; } t_symbol;
44
45 type Setup           = IO ()
46
47 type PdInt           = CLong
48 type PdFloat         = CFloat
49 type PdFloatArg      = CFloat
50 type ClassFlags      = CInt
51 type AtomType        = CInt
52 type GimmeTerminator = CInt
53
54 type Class           = ()
55 type Object          = ()
56
57 type NewMethodGimme  = Ptr Symbol -> CInt -> Ptr Atom -> IO (Ptr Object)
58 type FreeMethod      = Ptr Object -> IO ()
59 type ClassNewGimme   = Ptr Symbol -> NewMethodGimme -> FreeMethod ->
60   CSize -> ClassFlags -> AtomType -> GimmeTerminator -> IO (Ptr Class)