You can subscribe to this list here.
2004 |
Jan
|
Feb
|
Mar
|
Apr
|
May
(127) |
Jun
(1) |
Jul
|
Aug
|
Sep
|
Oct
|
Nov
|
Dec
(6) |
---|---|---|---|---|---|---|---|---|---|---|---|---|
2005 |
Jan
|
Feb
|
Mar
(35) |
Apr
(23) |
May
|
Jun
(1) |
Jul
(48) |
Aug
(23) |
Sep
(10) |
Oct
(4) |
Nov
|
Dec
|
2006 |
Jan
|
Feb
|
Mar
(27) |
Apr
|
May
|
Jun
|
Jul
|
Aug
|
Sep
|
Oct
|
Nov
(7) |
Dec
|
2007 |
Jan
|
Feb
(16) |
Mar
(2) |
Apr
|
May
|
Jun
|
Jul
|
Aug
|
Sep
|
Oct
|
Nov
|
Dec
|
2008 |
Jan
|
Feb
|
Mar
|
Apr
|
May
|
Jun
|
Jul
|
Aug
|
Sep
(19) |
Oct
(25) |
Nov
(8) |
Dec
(25) |
2009 |
Jan
(6) |
Feb
(1) |
Mar
|
Apr
|
May
|
Jun
|
Jul
|
Aug
(25) |
Sep
(2) |
Oct
|
Nov
|
Dec
|
2010 |
Jan
|
Feb
|
Mar
|
Apr
|
May
|
Jun
(3) |
Jul
|
Aug
|
Sep
|
Oct
|
Nov
|
Dec
|
From: Andre P. <at...@us...> - 2004-05-19 16:20:18
|
Update of /cvsroot/hoc/hoc/Samples/ExpressionParser In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv7697 Removed Files: Makefile Log Message: Removed Samples/ExpressionParser/Makefile from repo --- Makefile DELETED --- |
From: Andre P. <at...@us...> - 2004-05-19 16:18:37
|
Update of /cvsroot/hoc/hoc/docs In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv7527 Modified Files: Quick_Start.pod Tools.pod Removed Files: Accessing_Core_Frameworks.pod History.pod Log Message: More documentation updates --- History.pod DELETED --- --- Accessing_Core_Frameworks.pod DELETED --- Index: Tools.pod =================================================================== RCS file: /cvsroot/hoc/hoc/docs/Tools.pod,v retrieving revision 1.1 retrieving revision 1.2 diff -u -d -r1.1 -r1.2 --- Tools.pod 19 May 2004 15:59:28 -0000 1.1 +++ Tools.pod 19 May 2004 16:18:28 -0000 1.2 @@ -2,7 +2,16 @@ =head2 F<hocwrap> -=head2 F<hocnewapp> +The F<hocwrap> tool takes an executable and "wraps" it in a Mac OS +X F<.app> application bundle. You'll need to tell hocwrap where the +bundle's F<Contents/> directory using the C<-c> command-line parameter. +F<hocwrap> can also run the resulting application bundle using GHCi in an +interactive fashion: more documentation about this will be coming in the +future, but for now, check out the I<Browser> and I<Editor> applications' +F<Makefile>s in HOC's F<Samples/> directory, for an idea of how to use the +GHCi interaction feature. + +See C<hocwrap --help> for the definitive reference on F<hocwrap>. =for comment Modeline for vi(m) vi:sw=2 tw=65 Index: Quick_Start.pod =================================================================== RCS file: /cvsroot/hoc/hoc/docs/Quick_Start.pod,v retrieving revision 1.9 retrieving revision 1.10 diff -u -d -r1.9 -r1.10 --- Quick_Start.pod 19 May 2004 15:59:28 -0000 1.9 +++ Quick_Start.pod 19 May 2004 16:18:28 -0000 1.10 @@ -204,13 +204,13 @@ GUI application though: to do this, you could manually make the F<.app> bundle, which is rather tedious. A better idea would be to use Xcode to generate a boilerplate bundle for you and -customise that, or use the F<hocnewapp> tool (described in the -L<"Tools"> section) supplied with HOC, which performs a similar -task. Once you've produced the F<Contents/> directory layout -required for the bundle, you can then use the F<hocwrap> tool -(again described in L<"Tools">) to wrap your Haskell executable -to produce the final L<.app> directory (or hand-roll it yourself, -if you're into masochism). +customise that, or steal one of the directory layouts from one of +HOC's sample applications (in the F<Samples/> directory). Once +you've produced the F<Contents/> directory layout required for +the bundle, you can then use the F<hocwrap> tool (described in +the L<"Tools"> section) to wrap your Haskell executable in the +final F<.app> directory (or hand-roll it yourself, if you're into +masochism). For complete code examples, see the F<ExpressionParser>, F<Browser>, and F<Editor> applications in HOC's F<Samples/> |
From: Andre P. <at...@us...> - 2004-05-19 16:17:33
|
Update of /cvsroot/hoc/hoc In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv7355 Modified Files: Makefile.in Log Message: Added AUTHORS.txt file to dist_FILES in Makefile.in Index: Makefile.in =================================================================== RCS file: /cvsroot/hoc/hoc/Makefile.in,v retrieving revision 1.6 retrieving revision 1.7 diff -u -d -r1.6 -r1.7 --- Makefile.in 18 May 2004 03:05:02 -0000 1.6 +++ Makefile.in 19 May 2004 16:17:23 -0000 1.7 @@ -22,6 +22,7 @@ dist_srcdir = . dist_FILES = \ + AUTHORS.txt \ LICENSE \ Makefile.in \ README.txt \ |
From: Andre P. <at...@us...> - 2004-05-19 16:17:03
|
Update of /cvsroot/hoc/hoc In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv7222 Added Files: AUTHORS.txt Log Message: Added AUTHORS.txt file --- NEW FILE: AUTHORS.txt --- Wolfgang Thaller <wol...@gm...> Andre Pang <oz...@al...> |
From: Andre P. <at...@us...> - 2004-05-19 16:16:51
|
Update of /cvsroot/hoc/www In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv7215 Modified Files: index.html Log Message: Added mention of authors (hi mum!) to homepage Index: index.html =================================================================== RCS file: /cvsroot/hoc/www/index.html,v retrieving revision 1.8 retrieving revision 1.9 diff -u -d -r1.8 -r1.9 --- index.html 19 May 2004 07:20:24 -0000 1.8 +++ index.html 19 May 2004 16:16:40 -0000 1.9 @@ -50,5 +50,11 @@ <p>In the spirit of the Haskell and Mac OS X open-source communities, HOC is provided under the liberal BSD license.</p> +<h1>Authors</h1> + +The authors of HOC are <a href="mailto:wolfgang.thaller AT gmx DOT + net">Wolfgang Thaller</a> and <a href="mailto:ozone AT algorithm DOT com + DOT au">André Pang</a>. + <!--#include virtual="/templates.hoc/footer.shtml" --> |
From: Andre P. <at...@us...> - 2004-05-19 16:06:30
|
Update of /cvsroot/hoc/hoc In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv5442 Modified Files: config.mk.in Log Message: Install hocwrap to user's "./configure --prefix=" parameter, rather than hardcoding it to /usr/local/bin Index: config.mk.in =================================================================== RCS file: /cvsroot/hoc/hoc/config.mk.in,v retrieving revision 1.4 retrieving revision 1.5 diff -u -d -r1.4 -r1.5 --- config.mk.in 17 May 2004 18:31:23 -0000 1.4 +++ config.mk.in 19 May 2004 16:06:03 -0000 1.5 @@ -15,6 +15,11 @@ DOT=@DOT@ POD2HTML=@POD2HTML@ +# installation parameters + +prefix = @prefix@ +DESTDIR = $(prefix) +bindir = $(DESTDIR)/bin # distribution tarball information |
From: Andre P. <at...@us...> - 2004-05-19 16:06:15
|
Update of /cvsroot/hoc/hoc/Tools In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv5442/Tools Modified Files: Makefile.in Log Message: Install hocwrap to user's "./configure --prefix=" parameter, rather than hardcoding it to /usr/local/bin Index: Makefile.in =================================================================== RCS file: /cvsroot/hoc/hoc/Tools/Makefile.in,v retrieving revision 1.3 retrieving revision 1.4 diff -u -d -r1.3 -r1.4 --- Makefile.in 17 May 2004 18:07:42 -0000 1.3 +++ Makefile.in 19 May 2004 16:06:05 -0000 1.4 @@ -21,4 +21,4 @@ rm -rf hocwrap build install: all - install -s hocwrap /usr/local/bin/ + install -s hocwrap $(bindir) |
Update of /cvsroot/hoc/hoc/docs In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv4075 Modified Files: Accessing_Other_Frameworks.pod Appendices.pod Creating_an_Objective-C_Class_in_Haskell.pod Introduction.pod Makefile.in Mapping_Types.pod Quick_Start.pod Added Files: Tools.pod Log Message: Massive documentation update. See diff for more information :-) Index: Accessing_Other_Frameworks.pod =================================================================== RCS file: /cvsroot/hoc/hoc/docs/Accessing_Other_Frameworks.pod,v retrieving revision 1.1 retrieving revision 1.2 diff -u -d -r1.1 -r1.2 --- Accessing_Other_Frameworks.pod 6 May 2004 15:51:23 -0000 1.1 +++ Accessing_Other_Frameworks.pod 19 May 2004 15:59:28 -0000 1.2 @@ -1,7 +1,16 @@ =head1 Accessing Other Frameworks from Haskell -=head2 Using F<ifgen> +This section is not written yet: please write to the I<hoc-users> +mailing list (see L<http://hoc.sourceforge.net/support.html>) for +assistance or, have a look at the HOC source code yourself. -=head3 Binding Scripts +=begin comment +TODO :) + +=for comment =head2 Using F<ifgen> + +=for comment =head3 Binding Scripts + +=end comment Index: Introduction.pod =================================================================== RCS file: /cvsroot/hoc/hoc/docs/Introduction.pod,v retrieving revision 1.5 retrieving revision 1.6 diff -u -d -r1.5 -r1.6 --- Introduction.pod 19 May 2004 08:38:47 -0000 1.5 +++ Introduction.pod 19 May 2004 15:59:28 -0000 1.6 @@ -41,7 +41,9 @@ data types representing the Objective-C class hierarchy, and methods and selectors which enable HOC to communicate with Objective-C frameworks. If you are familiar with other Haskell -interface generators such as F<c2hs> or F<GreenCard>, HOC's +interface generators such as F<c2hs> +<L<http://www.cse.unsw.edu.au/~chak/haskell/c2hs/>> or +F<GreenCard> <L<http://www.haskell.org/greencard/>>, HOC's I<ifgen> tool does the same job, but for creating bindings to Objective-C classes instead. @@ -50,8 +52,6 @@ F<Cocoa> on S<Mac OS X>), but you can build your own bindings with F<ifgen> if required. -=for comment XXX insert hyperlink to c2hs etc - =item * Haskell-Friendly HOC was designed from the very beginning to be as 'Haskell-like' @@ -66,20 +66,17 @@ HOC's primary platform is S<Mac OS X>, Apple's modern UNIX-based operating system. However, HOC does provides preliminary support -for the GNUstep platform, and has been lightly toasted, err, -tested, with GNUstep on Linux. - -=for comment XXX insert link to GNUstep +for the GNUstep platform <L<http://www.gnustep.org/>>, and has +been lightly toasted, err, tested, with GNUstep on Linux. =head2 Requirements -HOC requires the Glasgow Haskell Compiler (GHC) 6.2 or later to -build. We use the latest features provided by GHC, such as -Template Haskell, to implement many parts of HOC, and it would be -impossible (as opposed to just plain hard) to port these -implementations to work with older versions of GHC. - -=for comment XXX: insert link to GHC +HOC requires the Glasgow Haskell Compiler (GHC) 6.2 +<L<http://www.haskell.org/ghc/>> or later to build. We use the +latest features provided by GHC, such as Template Haskell, to +implement many parts of HOC, and it would be impossible (as +opposed to just plain hard) to port these implementations to work +with older versions of GHC. =head2 Assumed Knowledge @@ -95,10 +92,6 @@ way. Hell, this author has done IO in Haskell for years and doesn't pretend to understand monads ... -=head2 Getting Started - -TODO: Building HOC. - =for comment Modeline for vi(m) vi:sw=2 tw=65 Index: Quick_Start.pod =================================================================== RCS file: /cvsroot/hoc/hoc/docs/Quick_Start.pod,v retrieving revision 1.8 retrieving revision 1.9 diff -u -d -r1.8 -r1.9 --- Quick_Start.pod 19 May 2004 08:38:47 -0000 1.8 +++ Quick_Start.pod 19 May 2004 15:59:28 -0000 1.9 @@ -77,12 +77,145 @@ Hopefully, the code listing above will give you a good idea about how to write Haskell code that sends messages to Objective-C -objects. For more detail, see Chapter 3. - -=for comment XXX: link to chapter 3 +objects. For more detail, see the chapter on +L<"Mapping Objective-C Concepts to Haskell">. =head2 A Simple GUI Application +Preface: This section presumes that you've written a Cocoa +application before with Objective-C, so that you understand the +basic development process and design patterns involved with Cocoa +programs, such as Model-View-Controller and how to use Interface +Builder. If you don't know any of this, you'll have to do some +background reading on Cocoa. Apple provides a simple tutorial at +L<http://developer.apple.com/documentation/Cocoa/Conceptual/ObjCTutorial/index.html?http://developer.apple.com/documentation/Cocoa/Conceptual/ObjCTutorial/chapter01/chapter_1_section_1.html>, +but if you're after something more comprehensive, this author has +read and highly recommends the book "Cocoa Programming for Mac OS +X", by Aaron Hillegass: +L<http://www.bignerdranch.com/products/cocoa1.shtml>. + +Say you've got a simple Haskell module: for this example, we'll +use the F<ExpressionParser.hs> module from the +F<Samples/ExpressionParser> directory of the HOC source +distribution. The code is short and schweet: + + module ExpressionParser + + where + + import Text.ParserCombinators.Parsec + import Text.ParserCombinators.Parsec.Expr + + expr :: Parser Integer + expr = buildExpressionParser table factor <?> "expression" + + table = [ [op "*" (*) AssocLeft, op "/" div AssocLeft] + , [op "+" (+) AssocLeft, op "-" (-) AssocLeft] ] + where + op s f assoc = Infix (do { string s; return f }) assoc + + factor = do { char '('; x <- expr; char ')'; return x } + <|> number + <?> "simple expression" + + number :: Parser Integer + number = do { ds <- many1 digit; return (read ds) } <?> "number" + +Now, you want to wrap a GUI around this module so that people can +use it without loading GHC or the Apple Terminal application: see +L<http://localhost/~andrep/hoc/screenshots/ExpressionParser_view.png> +for a screenshot of what the GUI will look like. From +a programing perspective, the GUI consists of: + +=over 4 + +=item An I<expressionEntry> outlet + +This is where the user types in the expression which they want +the answer to. + +=item An I<evaluateExpression> action + +The method which will be called when the user clicks on the +button, or presses Enter in the I<expressionEntry> text field. + +=item An I<evaluation> outlet + +Where the answer to the expression evaluation will be displayed. + +=back + +For this example, we assume that you've created and instantiated +an C<EPController> object in Interface Builder which the GUI view +will be connected to. The question is, of course: how do you +write this C<EPController> object in Haskell? The answer: like +this ... + + {-# OPTIONS -fglasgow-exts #-} + + module EPController where + + import Cocoa hiding (parse) + import ExpressionParser + import Selectors + import Text.ParserCombinators.Parsec (parse) + + $(declareClass "EPController" "NSObject") + + $(exportClass "EPController" "ep_" + [ Outlet "expressionEntry" [t| NSTextField () |] + , Outlet "evaluation" [t| NSTextField () |] + , InstanceMethod Selectors.info_evaluateExpression ]) + + obj #. var = obj # getIVar var + + ep_evaluateExpression _ self = do + -- Get the expressionEntry outlet text field from this object, and get + -- what the user typed as a Haskell string + expression <- self #. _expressionEntry >>= stringValue >>= haskellString + -- Parse the expression + case (parse expr "" expression) of + Left err -> + -- Parsing returned an error: display it in the output text field + self #. _evaluation >>= setStringValue (toNSString $ "Error " ++ show err) + Right answer -> + -- Parsing was successful: display the answer + self #. _evaluation >>= setStringValue (toNSString $ show answer) + +Additionally, you'll need to write a C<Selectors.hs> module, which +contains any additional selector names that aren't in Cocoa. +This enables HOC to statically type check your function names and +make sure that they exist. You can call the module whatever you +like: the important bit is that the C<declareSelector> function +you'll be using I<must> be in a different module from the +C<declareClass> and C<exportClass> functions, due to a limitation +of Template Haskell. e.g.: + + {-# OPTIONS -fglasgow-exts #-} + + module Selectors where + + import AppKit.NSButton + + $( declareSelector "evaluateExpression:" [t| forall a. NSButton a -> IO () |] ) + +That comprises the code for your graphical application. You'll +still need to produce a F<.app> application bundle to run your +GUI application though: to do this, you could manually make the +F<.app> bundle, which is rather tedious. A better idea would be +to use Xcode to generate a boilerplate bundle for you and +customise that, or use the F<hocnewapp> tool (described in the +L<"Tools"> section) supplied with HOC, which performs a similar +task. Once you've produced the F<Contents/> directory layout +required for the bundle, you can then use the F<hocwrap> tool +(again described in L<"Tools">) to wrap your Haskell executable +to produce the final L<.app> directory (or hand-roll it yourself, +if you're into masochism). + +For complete code examples, see the F<ExpressionParser>, +F<Browser>, and F<Editor> applications in HOC's F<Samples/> +directory. + =for comment Modeline for vi(m) vi:sw=2 tw=65 Index: Appendices.pod =================================================================== RCS file: /cvsroot/hoc/hoc/docs/Appendices.pod,v retrieving revision 1.2 retrieving revision 1.3 diff -u -d -r1.2 -r1.3 --- Appendices.pod 6 May 2004 15:52:35 -0000 1.2 +++ Appendices.pod 19 May 2004 15:59:28 -0000 1.3 @@ -2,8 +2,94 @@ =head2 Building HOC +HOC is distributed as a standard UNIX tarball (F<.tar.bz2> file), and +uses GNU I<autoconf> for its build system. Building HOC should +be a simple matter of the standard autoconf build mantra: + + ./configure + make + make install + +See the F<README.txt> file in the HOC distribution for the most +up-to-date build information. + +Building HOC from a CVS repository is only slightly more +involved: see the F<BUILDING.CVS> file in your checked out CVS +directory (which is not included in proper release tarball) for +more information. + =head2 Template Haskell in a Nutshell +I<Template Haskell is an extension to Haskell 98 that allows you +to do type-safe compile-time meta-programming, with Haskell both +as the manipulating language and the language being manipulated.> +E<mdash> from the Template Haskell webpage at +<L<http://www.haskell.org/th/>>. + +From a HOC user's viewpoint, Template Haskell makes lots of +things possible in HOC that are not possible without it, and +greatly simplifies the HOC API that you use to declare new +classes. In the L<"The Class Creation API"> section, the two +functions C<declareClass> and C<exportClass> "template" functions +were described. These are functions which have the mysterious +output type C<Q [Dec]>: to put it simply, the output of these +template functions are actually I<Haskell code>. Just as +functional languages such as Haskell can treat functions as +first-class entities, Template Haskell allows Haskell I<code> to +be treated as a first-class entity: you can pass code around to +other functions, inspect the code, change it, and pass that new +code to yet more functions. (If you're familiar with compilers, +the code that's passed around is actually a data structure that +represents the I<abstract syntax tree>: you can walk the tree and +add, change or remove nodes at your leisure.) + +Of course, as well as manipulating code, you can also I<execute> +these first-class code thingys, which is what the odd-looking +C<$(...)> syntax does. That tells GHC to execute the code +fragment inside the brackets: in Template Haskell terminology, +this is called I<splicing> in code. So, when you use template +functions such as C<exportClass>, they actually generate code +based on the parameters you give it, and immediately splice the +code in, writing out possibly hundreds of declarations and +functions for you invisibly. + +Of course, this appendix only covers Template Haskell as it +applies to HOC: see the Template Haskell webpage (link given +above) for more information on it, what you can do with it, and +why it (and meta-programming in general) kicks ass. + +=head2 History + +A long time ago, in a galaxy far, far away ... err, wait, wrong +chapter. Ahem. + +The first development snapshot of HOC came out in January 2003, +in a humble announcement to the I<glasgow-haskell-users> mailing +list by Wolfgang Thaller. While it worked, it was half of an +experiment with Template Haskell, and half a proof-of-concept, +rather than intending to be a proper language binding. + +During HOC's development, another Haskell to Objective-C binding +was being developed, named Mocha. Mocha was the result of +AndrE<eacute> Pang's thesis on Binding Haskell to Object-Oriented +and Component Systems +<L<http://www.algorithm.com.au/files/reflection/reflection.pdf>>, +and it, like many thesis implementations, was also more of +a proof-of-concept rather than a real, useful piece of software. + +The authors of HOC and Mocha met at the Haskell Implementor's +Meeting in Stockholm, Sweden later in 2003, and sat down to try +to reconcile the two projects. HOC was a very different beast +from Mocha: HOC wasn't typed at all (e.g. all Objective-C objects +were represented using only the one C<ID> type), for instance. +Mocha, being the result of a thesis on integrating Haskell with +object-oriented systems, was focused very much at bringing +object-oriented style overloading into the Haskell world. +Wolfgang Thaller did the heavy lifting and rewrote HOC from +scratch using many of the ideas from Mocha and AndrE<acute>'s +thesis, and the result is what you have today: a more supported, +stable Objective-C binding than would be possible without both +authors supporting each other. =for comment Modeline for vi(m) vi:sw=2 tw=65 Index: Makefile.in =================================================================== RCS file: /cvsroot/hoc/hoc/docs/Makefile.in,v retrieving revision 1.8 retrieving revision 1.9 diff -u -d -r1.8 -r1.9 --- Makefile.in 19 May 2004 08:40:51 -0000 1.8 +++ Makefile.in 19 May 2004 15:59:28 -0000 1.9 @@ -18,10 +18,9 @@ SOURCE_PODS = Introduction.pod \ Quick_Start.pod \ Mapping_Types.pod \ - Accessing_Core_Frameworks.pod \ Accessing_Other_Frameworks.pod \ Creating_an_Objective-C_Class_in_Haskell.pod \ - History.pod \ + Tools.pod \ Appendices.pod \ $(NULL) @@ -61,6 +60,10 @@ dist: HOC.html +# failed attempt at getting Safari to print to PDF; see +# http://64.233.167.104/search?q=cache:F2D2JTT0b98J:www1.odn.ne.jp/~cge02410/panther/system_events_003.html+applescript+safari+print+pdf&hl=en for more info +# HOC.pdf: HOC.html + install: true Index: Creating_an_Objective-C_Class_in_Haskell.pod =================================================================== RCS file: /cvsroot/hoc/hoc/docs/Creating_an_Objective-C_Class_in_Haskell.pod,v retrieving revision 1.4 retrieving revision 1.5 diff -u -d -r1.4 -r1.5 --- Creating_an_Objective-C_Class_in_Haskell.pod 12 May 2004 05:44:14 -0000 1.4 +++ Creating_an_Objective-C_Class_in_Haskell.pod 19 May 2004 15:59:28 -0000 1.5 @@ -48,10 +48,8 @@ C<exportClass>. Note that these functions are I<Template Haskell> (TH) functions, so you'll need to use Template Haskell's special C<$(...)> syntax to use them. (If you don't know what -Template Haskell is, see the next section which gives a very -quick overview about what it is.) - -=for comment XXX: Insert hyperlink to next section +Template Haskell is, see the L<"Template Haskell in a Nutshell"> +appendix which gives a very quick overview about what it is.) =head3 The C<declareClass> Function @@ -69,8 +67,6 @@ sits at the root of an object hierarchy (such as I<NSObject> or I<NSProxy>). -=for comment XXX: Maybe turn above into a type signature - For example, $(declareClass "MyDocument" "NSDocument") @@ -78,8 +74,6 @@ declares a new class named I<MyDocument> which is a subclass of I<NSDocument>. (Imaginative, huh?) -=for comment XXX: Wolfgang -- is the above correct? - =head3 The C<exportClass> Function After using the C<declareClass> Template Haskell function to @@ -139,10 +133,7 @@ Hopefully the type information will inform you about what arguments you need to provide to each of the data contructors to -produce a C<ClassMember>. (Refer to the documentation about -C<ClassMember>s if you need more help with them.) - -=for comment XXX: document & provide link to ClassMember +produce a C<ClassMember>. Here's an example of what this particular argument might look like (taken directly from the @@ -188,9 +179,9 @@ The I<HaskellDocument> class in the above example only implemented methods whose types were already known because the -selector was already defined somewhere in Cocoa. If you've just -used InterfaceBuilder to place a small button labeled with the -Greek letter Pi in the lower-left corner of your window and +selector was already defined somewhere in Cocoa. If you've used +InterfaceBuilder to place a small button labelled with the Greek +letter I<Pi> in the lower-left corner of your window and connected it to a method named C<smallPiClicked:>, then you'll need to declare that selector yourself using the C<declareSelector> template function, which has the following @@ -202,20 +193,22 @@ So for the C<smallPiClicked:> selector you might write: - $(declareSelector "smallPiClicked:" [t| forall a. ID a -> IO () |] + $( declareSelector "smallPiClicked:" [t| forall a. ID a -> IO () |] ) The Objective-C selector name "smallPiClicked:" will be -automatically mangled to C<smallPiClicked>. If you don't like -this, you can use C<declareRenamedSelector> instead: +automatically mangled to C<smallPiClicked> (as per the rules +given in the L<"Selectors"> section above). If you don't like this, +you can use C<declareRenamedSelector> instead: - $(declareRenamedSelector "smallPiClicked:" "haskellNameForThisSelector" - [t| forall a. ID a -> IO () |]) + $( declareRenamedSelector "smallPiClicked:" "haskellNameForThisSelector" + [t| forall a. ID a -> IO () |] ) Due to a limitation of Template Haskell, you cannot put this declaration in the same module as your C<exportClass> -declaration. This is because identifiers declared by Template -Haskell "splices" are not available to other splices within the -same module. +declaration: you'll have to put them in another module and +C<import> that module instead. (This is because identifiers +declared by Template Haskell "splices" are not available to other +splices within the same module.) =for comment Modeline for vi(m) vi:sw=2 tw=65 --- NEW FILE: Tools.pod --- =head1 Tools =head2 F<hocwrap> =head2 F<hocnewapp> =for comment Modeline for vi(m) vi:sw=2 tw=65 Index: Mapping_Types.pod =================================================================== RCS file: /cvsroot/hoc/hoc/docs/Mapping_Types.pod,v retrieving revision 1.5 retrieving revision 1.6 diff -u -d -r1.5 -r1.6 --- Mapping_Types.pod 19 May 2004 08:38:47 -0000 1.5 +++ Mapping_Types.pod 19 May 2004 15:59:28 -0000 1.6 @@ -1,6 +1,6 @@ -=head1 Mapping Objective-C Concepts to Haskell's Type System +=head1 Mapping Objective-C Concepts to Haskell -=head2 Objective-C Objects +=head2 Objects & Classes =head3 Classes @@ -21,22 +21,28 @@ C<alloc> message to the I<NSMovie> class object, write C<_NSMovie # alloc>. -=head3 Protocols +=head3 Protocols & Protocol Adoptions -=begin comment +=for comment XXX: fix up this section -Yes, formal protocols. Luckily, they're very rarely used in -Cocoa. It's only an ifgen issue; the current ifgen just -generates ID for all id<Foo> types. For id<Foo,Bar> used as -a parameter, it should generate (Foo (ID a), Bar (ID a)) => ID a. -For return values id<Foo,Bar>, we'll have to define a special -type ID_Bar_Foo and declare instances for Foo and Bar for it. The -only difficult part should be to avoid defining those types too -often... +This section of the documentation hasn't been written yet, but in +the meantime, you may find the following note from Wolfgang +Thaller useful: -=end comment + Yes, formal protocols. Luckily, they're very rarely used in + Cocoa. It's only an ifgen issue; the current ifgen just + generates ID for all id<Foo> types. For id<Foo,Bar> used as + a parameter, it should generate (Foo (ID a), Bar (ID a)) => ID + a. For return values id<Foo,Bar>, we'll have to define + a special type ID_Bar_Foo and declare instances for Foo and Bar + for it. The only difficult part should be to avoid defining + those types too often... -=head3 Protocol Adoptions +=head3 Categories + +This section is not written yet: please write to the I<hoc-users> +mailing list (see L<http://hoc.sourceforge.net/support.html>) for +assistance or, have a look at the HOC source code yourself. =head3 Specific Classes @@ -58,8 +64,6 @@ NSStringClass a -> IO (NSString a) >>. Use them as if they were Objective-C methods in the I<NSString> class. - - =head2 Object Messaging =head3 Sending Messages to Objects @@ -148,11 +152,8 @@ For example, you should pass in C<"initWithURL:byReference:">, and not C<"initWithURLByReference">. - =begin comment -XXX: Put this back in when HOC.Marshal is written ... - =for comment =head3 Generalised Marshaling The C<HOC.Marshal> module provides a function C<< marshal :: a -> @@ -177,6 +178,19 @@ =end comment +=head3 Foundation & AppKit Frameworks + +The Haskell interfaces for the Foundation and AppKit frameworks +(nE<eacute>e Cocoa) are automatically built when you build and +install HOC. To use them, simply write C<import Foundation>, +C<import AppKit> or C<import Cocoa> at the top of your Haskell +module to import the entire framework's class hierarchy and +method definitions into scope. (But, see the section on +L<"Ambiguous Function Names"> to see why some methods are I<not> +imported.) + +To use your own, custom frameworks with HOC, see the chapter on +L<"Accessing Other Frameworks from Haskell">. =head2 Miscellanea @@ -199,8 +213,16 @@ =head3 C<enum> Types +This section is not written yet: please write to the I<hoc-users> +mailing list (see L<http://hoc.sourceforge.net/support.html>) for +assistance or, have a look at the HOC source code yourself. + =head3 C<struct> Types +This section is not written yet: please write to the I<hoc-users> +mailing list (see L<http://hoc.sourceforge.net/support.html>) for +assistance or, have a look at the HOC source code yourself. + =for comment Modeline for vi(m) vi:sw=2 tw=65 |
From: Andre P. <at...@us...> - 2004-05-19 08:41:02
|
Update of /cvsroot/hoc/hoc/docs In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv15148 Modified Files: Makefile.in Log Message: Documentation: added missing files to dist target Index: Makefile.in =================================================================== RCS file: /cvsroot/hoc/hoc/docs/Makefile.in,v retrieving revision 1.7 retrieving revision 1.8 diff -u -d -r1.7 -r1.8 --- Makefile.in 19 May 2004 07:45:27 -0000 1.7 +++ Makefile.in 19 May 2004 08:40:51 -0000 1.8 @@ -8,6 +8,9 @@ $(SOURCE_PODS) \ Makefile.in \ HOC.html \ + README.txt \ + documentation-footer.template \ + documentation-header.template \ $(NULL) TITLE = HOC: a Haskell to Objective-C bridge |
From: Andre P. <at...@us...> - 2004-05-19 08:38:58
|
Update of /cvsroot/hoc/hoc/docs In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv14677 Modified Files: History.pod Introduction.pod Mapping_Types.pod Quick_Start.pod Log Message: Documentation: moved a lot of stuff from the Quick Start chapter to the "Mapping Concepts" chapter Index: History.pod =================================================================== RCS file: /cvsroot/hoc/hoc/docs/History.pod,v retrieving revision 1.2 retrieving revision 1.3 diff -u -d -r1.2 -r1.3 --- History.pod 7 May 2004 08:38:02 -0000 1.2 +++ History.pod 19 May 2004 08:38:47 -0000 1.3 @@ -1,4 +1,5 @@ =head1 History -=head2 Assumed Knowledge +=for comment Modeline for vi(m) +vi:sw=2 tw=65 Index: Introduction.pod =================================================================== RCS file: /cvsroot/hoc/hoc/docs/Introduction.pod,v retrieving revision 1.4 retrieving revision 1.5 diff -u -d -r1.4 -r1.5 --- Introduction.pod 10 May 2004 08:59:35 -0000 1.4 +++ Introduction.pod 19 May 2004 08:38:47 -0000 1.5 @@ -57,7 +57,7 @@ HOC was designed from the very beginning to be as 'Haskell-like' as possible: after all, you are writing Haskell code, not Objective-C code! We make heavy use of key Haskell features such -as type classes and partial evaluation, to ensure that you don't +as type classes and partial application, to ensure that you don't have to do evil things like method name mangling or understand a whole new bunch of syntax, just to do something simple like embed an I<NSMovie> in your application. @@ -77,9 +77,7 @@ build. We use the latest features provided by GHC, such as Template Haskell, to implement many parts of HOC, and it would be impossible (as opposed to just plain hard) to port these -implementations to work with older versions of GHC. If you're -not keeping up with GHC, you're not keeping up with the times! -:-) +implementations to work with older versions of GHC. =for comment XXX: insert link to GHC @@ -101,8 +99,6 @@ TODO: Building HOC. -TODO: A small (hello object world) example. - =for comment Modeline for vi(m) vi:sw=2 tw=65 Index: Quick_Start.pod =================================================================== RCS file: /cvsroot/hoc/hoc/docs/Quick_Start.pod,v retrieving revision 1.7 retrieving revision 1.8 diff -u -d -r1.7 -r1.8 --- Quick_Start.pod 12 May 2004 05:44:14 -0000 1.7 +++ Quick_Start.pod 19 May 2004 08:38:47 -0000 1.8 @@ -18,7 +18,7 @@ import Foundation import Foundation.NSProcessInfo (arguments) -- We need this import to disambiguate the 'arguments' - -- function: an arguments method is defined in many + -- function: an 'arguments' method is defined in many -- classes, including NSProcessInfo, NSScriptCommand, -- and NSTask. Any ambiguous functions are not exported -- by the framework by default: you will need to @@ -77,149 +77,11 @@ Hopefully, the code listing above will give you a good idea about how to write Haskell code that sends messages to Objective-C -objects. - -=head2 Sending Messages - -=over - -=item * Basic Message Sending - -The Objective-C syntax C<[receiver method:arg1 with:arg2]> used -to send a message to a receiving object is translated to Haskell -as C<methodWith arg1 arg2 receiver>. - -The receiving object goes I<last> in the parameter last, because -then you can use ye olde trick of defining an infix function "C<x -# f = f x>" to produce the more object-oriented-looking code -C<receiver # methodWith arg1 arg2>. (The C<#> infix function is -defined for you by HOC already, so you don't need to define it -yourself). - -Note that sending messages is an IO operation, so you'll need to -be in the IO monad to use it. Purely functional (non-mutable) -objects such as an C<NSArray> or a C<NSString> provide their own -specialised non-IO functions, which can be used outside of -monadic code. See their documentation (or source code -implementation) for details. - -=item * Message Chaining - -I<Message chaining> is a very common phenomenon in Objective-C: -syntactically, it looks like C<< [[NSCountedSet alloc] -initWithArray:args] >>. You first send an C<alloc> message to -the C<NSCountedSet> (class) object, and then send -C<initWithArray:args> to the result of that. - -Experienced Haskell programmers will realise that this is -analagous to the I<monadic bind> operator, C<E<gt>E<gt>=>, so the -above message chain could be written as C<<< _NSCountedSet -# alloc >>= initWithArray args >>>. - -=item * Ambiguous Function Names - -Some functions have the same name and are defined in more than -one class: e.g. the I<NSProcessInfo>, I<NSScriptCommand> and -I<NSTask> classes all define a method named C<arguments>. Any -such multiply-occuring method names are not exported from the -top-level framework module (I<Foundation> or I<AppKit>) by -default: you will need to import the class specifically, e.g. -C<import Foundation.NSProcessInfo> to import I<NSProcessInfo>'s -C<arguments> method. - -=back - -=head2 Types for the Objective-C Class Hierarchy - -An Objective-C class C<foo> has a corresponding Haskell type -C<foo ()>: the type signature for a function which takes in an -I<NSArray> (and I<only> an I<NSArray>) and outputs an I<NSMovie> -will look like C<< NSArray () -> NSMovie () >>. - -To permit a function to use a I<NSArray> or any of its subclasses -such as I<NSMutableArray> (which is the behaviour you'd expect -from an object-oriented language), use a type variable in place -of the C<()>: e.g. I<NSArray a>. - -=head2 Class Objects - -Class objects are represented in HOC by preprending an underscore -to the class name: I<_classname>. For example, to send the -C<alloc> message to the I<NSMovie> class object, write -C<_NSMovie # alloc>. - -=head2 I<NSString> vs. I<String> - -HOC provides the two functions C<< toNSString :: String -> NSString -() >>, and C<< fromNSString :: NSString () -> String >>, to -convert to and from Haskell strings and the Foundation -framework's C<NSString> objects. - -Note that C<fromNSString> is a pure function, and that it will not -accept a subclass of C<NSString> as an argument, because subclasses -may be mutable. Make sure you never pass a casted I<NSMutableString> -to C<fromNSString>. - -If you want to work with (potentially) mutable string objects, -you can use the functions C<< haskellString :: NSString a -> IO -String >> and C<< stringWithHaskellString :: String -> -NSStringClass a -> IO (NSString a) >>. Use them as if they were -Objective-C methods in the I<NSString> class. - -=head2 Generalised Marshaling - -The C<HOC.Marshal> module provides a function C<< marshal :: a -> -b >>, which can be used to try to marshal (convert) any type to -any other type. Be careful with the C<marshal> function: since -its output type is ambiguous (it's a type variable), Haskell's -type inference engine greatly relies on context to figure out -what the output type should really be. You may have to I<fix> -the output type explicitly by appending the C<:: t> syntax to -expression. For example, C<marshal "Foo"> on its own may -generate an error, but C<marshal "Foo" :: NSString ()> may not. - -You can also define marshalling for your own data types, by -making them part of C<HOC.Marshal>'s C<ObjCMarshal> type class: - - import HOC.Marshal - - instance ObjCMarshal FiniteMap ( NSDictionary () ) where - marshal fm = -- conversion code from FiniteMap to NSDictionary - instance ObjCMarshal ( NSDictionary () ) FiniteMap where - marshal dict = -- conversion code from NSDictionary to FiniteMap - -=head2 Selectors - -Use the C<< getSelectorForName :: String -> SEL >> function to -generate a Haskell C<SEL> datatype from a raw Haskell string. As -you can guess, the Haskell C<SEL> type is the same as -Objective-C's C<SEL> type: it represents a selector (method -name). - -Note that the string passed to C<getSelectorForName> is the -I<Objective-C> selector name (with all the colons in the -appropriate places), not the translated Haskell function name. -For example, you should pass in C<"initWithURL:byReference:">, -and not C<"initWithURLByReference">. - -=head2 Autorelease Pools - -Use the function C<withAutoreleasePool :: IO a> to create an -autorelease pool and run an IO action which which use the pool: - - main = do - withAutoreleasePool main' - - main' = do - args <- _NSProcessInfo # processInfo >>= arguments - ... +objects. For more detail, see Chapter 3. -Using C<withAutoreleasePool> instead of an explict C<alloc> and -C<release> for the pool saves you from remembering to -release it: after your action has been run, the pool is -automatically released. +=for comment XXX: link to chapter 3 -=for comment XXX: link to autorelease pool section +=head2 A Simple GUI Application =for comment Modeline for vi(m) vi:sw=2 tw=65 Index: Mapping_Types.pod =================================================================== RCS file: /cvsroot/hoc/hoc/docs/Mapping_Types.pod,v retrieving revision 1.4 retrieving revision 1.5 diff -u -d -r1.4 -r1.5 --- Mapping_Types.pod 17 May 2004 18:06:38 -0000 1.4 +++ Mapping_Types.pod 19 May 2004 08:38:47 -0000 1.5 @@ -1,12 +1,26 @@ =head1 Mapping Objective-C Concepts to Haskell's Type System -=head2 A Simple Example: I<NSMovie> - - =head2 Objective-C Objects =head3 Classes +An Objective-C class C<foo> has a corresponding Haskell type +C<foo ()>: the type signature for a function which takes in an +I<NSArray> (and I<only> an I<NSArray>) and outputs an I<NSMovie> +will look like C<< NSArray () -> NSMovie () >>. + +To permit a function to use a I<NSArray> or any of its subclasses +such as I<NSMutableArray> (which is the behaviour you'd expect +from an object-oriented language), use a type variable in place +of the C<()>: e.g. I<NSArray a>. + +=head3 Class Objects + +Class objects are represented in HOC by preprending an underscore +to the class name: I<_classname>. For example, to send the +C<alloc> message to the I<NSMovie> class object, write +C<_NSMovie # alloc>. + =head3 Protocols =begin comment @@ -24,23 +38,62 @@ =head3 Protocol Adoptions -=head2 Object Messaging +=head3 Specific Classes + +=head4 I<NSString> vs. I<String> + +HOC provides the two functions C<< toNSString :: String -> NSString +() >>, and C<< fromNSString :: NSString () -> String >>, to +convert to and from Haskell strings and the Foundation +framework's C<NSString> objects. + +Note that C<fromNSString> is a pure function, and that it will not +accept a subclass of C<NSString> as an argument, because subclasses +may be mutable. Make sure you never pass a casted I<NSMutableString> +to C<fromNSString>. + +If you want to work with (potentially) mutable string objects, +you can use the functions C<< haskellString :: NSString a -> IO +String >> and C<< stringWithHaskellString :: String -> +NSStringClass a -> IO (NSString a) >>. Use them as if they were +Objective-C methods in the I<NSString> class. -=head3 Selectors -=head3 Methods + +=head2 Object Messaging =head3 Sending Messages to Objects -=head4 Do not Resist the Monad +The Objective-C syntax C<[receiver method:arg1 with:arg2]> that +is used to send a message to a receiving object, is translated to +Haskell as C<methodWith arg1 arg2 receiver>. -=head2 Miscellanea +The receiving object goes I<last> in the parameter last, because +then you can use ye olde trick of defining an infix function "C<x +# f = f x>" to produce the more object-oriented-looking code +C<receiver # methodWith arg1 arg2>. (The C<#> infix function is +defined for you by HOC already, so you don't need to define it +yourself). -=head3 Autorelease Pools +Note that sending messages is an IO operation, so you'll need to +be in the IO monad to use it. Purely functional (non-mutable) +objects such as an C<NSArray> or a C<NSString> provide their own +specialised non-IO functions, which can be used outside of +monadic code. See their documentation (or source code +implementation) for details. -=head3 C<enum> Types +=head3 Message Chaining -=head3 C<struct> Types +I<Message chaining> is a very common phenomenon in Objective-C: +syntactically, it looks like C<< [[NSCountedSet alloc] +initWithArray:args] >>. You first send an C<alloc> message to +the C<NSCountedSet> (class) object, and then send +C<initWithArray:args> to the result of that. + +Experienced Haskell programmers will realise that this is +analagous to the I<monadic bind> operator, C<E<gt>E<gt>=>, so the +above message chain could be written as C<<< _NSCountedSet +# alloc >>= initWithArray args >>>. =head3 Ambiguous Function Names @@ -58,6 +111,96 @@ as if you were importing a same-named function from different Haskell modules normally. +=head3 Selectors + +An Objective-C selector name is translated to a Haskell function +name as follows: + +=over 4 + +=item Colons (C<:>) disappear + +e.g. The Objective-C method name "C<mouseDragged:>" is translated to +"C<mouseDragged>". + +=item Initial lower-case characters after a colon (C<:>) become upper-case + +e.g. The Objective-C method name "C<initWithURL:byReference:>" is +translated to "C<initWithURLByReference>". + +=item Leading upper-case characters become lower-case + +e.g. The Objective-C method name +"C<TIFFRepresentationUsingCompression:factor:>" is translated to +"C<tiffrepresentationUsingCompressionFactor>". + +=back + +Use the C<< getSelectorForName :: String -> SEL >> function to +generate a Haskell C<SEL> datatype from a raw Haskell string. As +you can guess, the Haskell C<SEL> type is the same as +Objective-C's C<SEL> type: it represents a selector (method +name). + +Note that the string you pass to C<getSelectorForName> is the +I<Objective-C> selector name (with all the colons in the +appropriate places), not the translated Haskell function name. +For example, you should pass in C<"initWithURL:byReference:">, +and not C<"initWithURLByReference">. + + +=begin comment + +XXX: Put this back in when HOC.Marshal is written ... + +=for comment =head3 Generalised Marshaling + +The C<HOC.Marshal> module provides a function C<< marshal :: a -> +b >>, which can be used to try to marshal (convert) any type to +any other type. Be careful with the C<marshal> function: since +its output type is ambiguous (it's a type variable), Haskell's +type inference engine greatly relies on context to figure out +what the output type should really be. You may have to I<fix> +the output type explicitly by appending the C<:: t> syntax to +expression. For example, C<marshal "Foo"> on its own may +generate an error, but C<marshal "Foo" :: NSString ()> may not. + +You can also define marshalling for your own data types, by +making them part of C<HOC.Marshal>'s C<ObjCMarshal> type class: + + import HOC.Marshal + + instance ObjCMarshal FiniteMap ( NSDictionary () ) where + marshal fm = -- conversion code from FiniteMap to NSDictionary + instance ObjCMarshal ( NSDictionary () ) FiniteMap where + marshal dict = -- conversion code from NSDictionary to FiniteMap + +=end comment + + +=head2 Miscellanea + +=head3 Autorelease Pools + +Use the function C<withAutoreleasePool :: IO a> to create an +autorelease pool and run an IO action which which use the pool: + + main = do + withAutoreleasePool main' + + main' = do + args <- _NSProcessInfo # processInfo >>= arguments + ... + +Using C<withAutoreleasePool> instead of an explict C<alloc> and +C<release> for the pool saves you from remembering to +release it: after your action has been run, the pool is +automatically released. + +=head3 C<enum> Types + +=head3 C<struct> Types + =for comment Modeline for vi(m) vi:sw=2 tw=65 |
From: Andre P. <at...@us...> - 2004-05-19 07:49:25
|
Update of /cvsroot/hoc/www/templates.hoc In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv4376 Modified Files: header.shtml Log Message: Header acknowledges override_css variable Index: header.shtml =================================================================== RCS file: /cvsroot/hoc/www/templates.hoc/header.shtml,v retrieving revision 1.2 retrieving revision 1.3 diff -u -d -r1.2 -r1.3 --- header.shtml 16 May 2004 16:20:16 -0000 1.2 +++ header.shtml 19 May 2004 07:49:16 -0000 1.3 @@ -4,7 +4,13 @@ <title>HOC: <!--#echo var="title" --></title> </head> + <!--#if expr="${override_css}" --> + <style type="text/css" media="screen"> + @import "<!--#echo var="override_css" -->"; + </style> + <!--#else --> <style type="text/css" media="screen">@import "hoc.css";</style> + <!--#endif --> <body> |
From: Andre P. <at...@us...> - 2004-05-19 07:45:37
|
Update of /cvsroot/hoc/hoc/docs In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv3612 Modified Files: Makefile.in Added Files: documentation-footer.template documentation-header.template Log Message: Building documentation.html now has SSI directives to include header and footer like the rest of the webpages Index: Makefile.in =================================================================== RCS file: /cvsroot/hoc/hoc/docs/Makefile.in,v retrieving revision 1.6 retrieving revision 1.7 diff -u -d -r1.6 -r1.7 --- Makefile.in 19 May 2004 07:32:08 -0000 1.6 +++ Makefile.in 19 May 2004 07:45:27 -0000 1.7 @@ -1,5 +1,8 @@ include ../config.mk +# require bash for building documentation.html +SHELL = /bin/bash + dist_srcdir = docs dist_FILES = \ $(SOURCE_PODS) \ @@ -44,7 +47,11 @@ # (suitable for inclusion into a SSI'ed webpage) documentation.html: HOC.html - sed -e '1,/^<body.*>$$/d' -e '/^<\/body>.*$$/,$$d' < $+ > $@ + cat \ + documentation-header.template \ + <(sed -e '1,/^<body.*>$$/d' -e '/^<\/body>.*$$/,$$d' < $+) \ + documentation-footer.template \ + > $@ view: HOC.html open $+ --- NEW FILE: documentation-header.template --- <!--#set var="title" value="Documentation" --> <!--#set var="active-tab" value="Documentation" --> <!--#set var="override_css" value="hoc-documentation.css" --> <!--#include virtual="/templates.hoc/header.shtml" --> --- NEW FILE: documentation-footer.template --- <!--#include virtual="/templates.hoc/footer.shtml" --> |
From: Andre P. <at...@us...> - 2004-05-19 07:44:58
|
Update of /cvsroot/hoc/www In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv3547 Added Files: hoc-documentation.css Log Message: Added CSS file for HOC (online) documentation page --- NEW FILE: hoc-documentation.css --- /* :: general text formatting :: */ a { color: 0000CC; text-decoration: none; border: none; border-bottom: 1px dashed #888888; } a:hover { color: #888800; border-color: #888800; } a.plain { border: none; } p { font-size:100%; margin: 12px 0; text-align: justify; } p.center { font-size:100%; margin: 12px 0; text-align: center; align: center; } p.right { font-size:100%; margin: 12px 0; text-align: right; } pre { font-size: 95%; line-height: 95%; } ul { /* same as inner-box */ margin: 12px 12px; padding: 12px 35px 12px 35px; background-image: url("bg-stripes-dark.png"); background-repeat: repeat; } li { margin: 8px 0; } h1 { font-family: Verdana, sans-serif; font-size:150%; line-height: 150%; color: #000066; text-align: center; } h2 { font-family: Verdana, sans-serif; font-size:120%; line-height: 120%; /* color: #000066; */ text-align: center; } h3 { font-family: Verdana, sans-serif; font-size:120%; color: #333333; } h4 { font-family: Verdana, sans-serif; font-size:110%; color: #333333; } h5 { font-family: Verdana, sans-serif; font-size:110%; color: #3A3A3A; } img { border: none; } img.bordered { border: 1px solid #BDBDBD; padding: 12px 12px; background-image: url("bg-stripes-verydark.png"); background-repeat: repeat; } /* :: header graphics :: */ img.site-header { position: absolute; left: 240px; top: 27px; z-index: 20; border: none; } img.site-logo { position: absolute; left: 27px; top: 27px; z-index: 30; border: none; } img.screenshot { } /* :: outer boxes :: */ body { margin: 4px 12px 4px 4px; font-size:100%; color: #000000; text-align: justify; } .main-box { padding: 19px; background: #FFFFFF; } .content-box { border: 1px solid #BDBDBD; font-family: Georgia, serif; background-image: url("body-bg.png"); background-repeat: repeat; } .logo-box { border: 0px; font-family: Georgia, serif; background-color: #FFFFFF; } /* :: inner boxes :: */ .tab-box { margin: 0px 0px 25px 0px; font-family: Georgia, serif; font-size:100%; line-height: 125%; background-image: url("tab-line.png"); background-repeat: repeat-x; } .firstpage { margin: 40px 40px 25px 35px; } .inner-box { margin: 12px 12px; padding: 12px 35px 12px 35px; border: 1px solid #BDBDBD; background-image: url("bg-stripes-dark.png"); background-repeat: repeat; } |
From: Andre P. <at...@us...> - 2004-05-19 07:32:19
|
Update of /cvsroot/hoc/hoc/docs In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv1181 Modified Files: Makefile.in Log Message: Added 'documentation.html' target (for online docs on hoc website) Index: Makefile.in =================================================================== RCS file: /cvsroot/hoc/hoc/docs/Makefile.in,v retrieving revision 1.5 retrieving revision 1.6 diff -u -d -r1.5 -r1.6 --- Makefile.in 18 May 2004 03:27:31 -0000 1.5 +++ Makefile.in 19 May 2004 07:32:08 -0000 1.6 @@ -40,6 +40,12 @@ --outfile "$@" \ $+ +# documentation.html is similar to HOC.html, but without the <body> tags +# (suitable for inclusion into a SSI'ed webpage) + +documentation.html: HOC.html + sed -e '1,/^<body.*>$$/d' -e '/^<\/body>.*$$/,$$d' < $+ > $@ + view: HOC.html open $+ @@ -49,5 +55,5 @@ true clean: - -rm HOC.html pod2htm* + -rm HOC.html pod2htm* documentation.html |
From: Andre P. <at...@us...> - 2004-05-19 07:20:54
|
Update of /cvsroot/hoc/www In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv31782 Modified Files: download.html hoc.css index.html Log Message: Got rid of the "last modified" footer (it won't work with the hourly CVS export mechanism used to keep the webpage in sync with the www/ CVS module) Index: download.html =================================================================== RCS file: /cvsroot/hoc/www/download.html,v retrieving revision 1.2 retrieving revision 1.3 diff -u -d -r1.2 -r1.3 --- download.html 19 May 2004 06:52:15 -0000 1.2 +++ download.html 19 May 2004 07:20:23 -0000 1.3 @@ -72,7 +72,5 @@ href="http://cvs.sourceforge.net/viewcvs.py/hoc/hoc/BUILDING.CVS?view=markup"><code>BUILDING.CVS</code></a> file for instructions on how to build it from the CVS tree.</p> -</div> - <!--#include virtual="/templates.hoc/footer.shtml" --> Index: index.html =================================================================== RCS file: /cvsroot/hoc/www/index.html,v retrieving revision 1.7 retrieving revision 1.8 diff -u -d -r1.7 -r1.8 --- index.html 19 May 2004 06:41:05 -0000 1.7 +++ index.html 19 May 2004 07:20:24 -0000 1.8 @@ -34,7 +34,7 @@ <h1>News</h1> -<p>Friday, 14 May 2004: <strong>HOC 0.2 released</strong>.</p> +<p>Friday, 19 May 2004: <strong>HOC 0.7 released</strong>.</p> <p>Thursday, 2 Jan 2003: <strong>HOC 0.1 released</strong>. See the <a href="http://www.haskell.org/pipermail/glasgow-haskell-users/2003-January/004602.html">full Index: hoc.css =================================================================== RCS file: /cvsroot/hoc/www/hoc.css,v retrieving revision 1.4 retrieving revision 1.5 diff -u -d -r1.4 -r1.5 --- hoc.css 19 May 2004 06:44:27 -0000 1.4 +++ hoc.css 19 May 2004 07:20:24 -0000 1.5 @@ -29,6 +29,12 @@ align: center; } +p.right { + font-size:100%; + margin: 12px 0; + text-align: right; +} + pre { font-size: 95%; line-height: 95%; |
From: Andre P. <at...@us...> - 2004-05-19 07:20:53
|
Update of /cvsroot/hoc/www/templates.hoc In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv31782/templates.hoc Modified Files: footer.shtml Log Message: Got rid of the "last modified" footer (it won't work with the hourly CVS export mechanism used to keep the webpage in sync with the www/ CVS module) Index: footer.shtml =================================================================== RCS file: /cvsroot/hoc/www/templates.hoc/footer.shtml,v retrieving revision 1.1 retrieving revision 1.2 diff -u -d -r1.1 -r1.2 --- footer.shtml 16 May 2004 08:42:16 -0000 1.1 +++ footer.shtml 19 May 2004 07:20:24 -0000 1.2 @@ -3,23 +3,12 @@ </div> </div> - <p><table width="100%" cellpadding="0" cellspacing="0"> - <tr> - <td align="left" valign="top"> - <font size="-1"> - <!--#config timefmt="%A, %B %d %Y (%H:%M %z)" --> - Last updated on <!--#echo var="LAST_MODIFIED" --> - </font> - </td> - - <td align="right"><a href="http://sourceforge.net/" class="plain"> - <img - src="http://sourceforge.net/sflogo.php?group_id=93369&type=5" - width="210" height="62" border="0" alt="SourceForge.net Logo" /> - </a> - </td> - </tr> - </table></p> + <p align="right" class="right"><a href="http://sourceforge.net/" class="plain"> + <img + src="http://sourceforge.net/sflogo.php?group_id=93369&type=5" + width="210" height="62" border="0" alt="SourceForge.net Logo" /> + </a> + </p> </div> |
From: Andre P. <at...@us...> - 2004-05-19 06:41:14
|
Update of /cvsroot/hoc/www In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv24818 Added Files: index.html support.html Log Message: Re-added index.html and support.html with proper permissions (+x execute bit set) --- NEW FILE: index.html --- <!--#set var="title" value="A Haskell to Objective-C Binding" --> <!--#set var="active-tab" value="Home" --> <!--#set var="big-logo" value="yes" --> <!--#include virtual="/templates.hoc/header.shtml" --> <h1>About</h1> <p>HOC is a <strong>H</strong>askell to <strong>O</strong>bjective-<strong>C</strong> binding. In a nutshell, it enables you to use Objective-C objects and frameworks from Haskell, and also enables you to write Objective-C objects in Haskell.</p> <p>The Haskell interfaces produced by HOC are:</p> <ul> <li><strong>Typed</strong>: Take advantage of Haskell's sound type inference to help you develop robust, correct Cocoa/GNUstep applications on your first compile.</li> <li><strong>Automatically Generated</strong>: HOC comes with an <em>interface generator</em> to generate Haskell bindings to Objective-C's objects; use it even with your own custom Objective-C frameworks!</li> <li><strong>Haskell-Friendly</strong>: We make heavy use of key Haskell features such as type classes and partial application, to ensure that the HOC API is as 'Haskell-like' as possible.</li> </ul> <p>You can use HOC to write full-blown GUI applications using Mac OS X's advanced Cocoa framework.</p> <h1>News</h1> <p>Friday, 14 May 2004: <strong>HOC 0.2 released</strong>.</p> <p>Thursday, 2 Jan 2003: <strong>HOC 0.1 released</strong>. See the <a href="http://www.haskell.org/pipermail/glasgow-haskell-users/2003-January/004602.html">full release announcement</a>, or <a href="http://prdownloads.sourceforge.net/hoc/HOC020103.tar.bz2?download">download it</a> here.</p> </p> <h1>License</h1> <p>In the spirit of the Haskell and Mac OS X open-source communities, HOC is provided under the liberal BSD license.</p> <!--#include virtual="/templates.hoc/footer.shtml" --> --- NEW FILE: support.html --- <!--#set var="title" value="Support" --> <!--#set var="active-tab" value="Support" --> <!--#include virtual="/templates.hoc/header.shtml" --> <h1>Mailing Lists</h1> <p>There are four mailing lists where you can contact the HOC developers and other users:</p> <div class="inner-box"> <table align="center" width="100%"> <tr> <td nowrap> <code><a href="http://lists.sourceforge.net/lists/listinfo/hoc-announce">hoc-announce</a> </code></td> <td>Announcements of HOC releases and related tools (low-traffic)</td> </tr> <tr> <td nowrap> <code><a href="http://lists.sourceforge.net/lists/listinfo/hoc-users">hoc-users</a></code> </td> <td>General HOC discussions</td> </tr> <tr> <td nowrap> <code><a href="http://lists.sourceforge.net/lists/listinfo/hoc-devel">hoc-devel</a></code> </td> <td>HOC developer & implementation discussions</td> </tr> <tr> <td nowrap> <code><a href="http://lists.sourceforge.net/lists/listinfo/hoc-cvs">hoc-cvs</a></code> </td> <td>CVS commit log messages</td> </tr> </table> </div> <!--#include virtual="/templates.hoc/footer.shtml" --> |
From: Andre P. <at...@us...> - 2004-05-19 06:40:26
|
Update of /cvsroot/hoc/www In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv24614 Removed Files: index.html support.html Log Message: Deleted index.html and support.html from repo (will be re-added in the next commit with +x execute bit permission on!) --- index.html DELETED --- --- support.html DELETED --- |
From: Andre P. <at...@us...> - 2004-05-18 03:27:40
|
Update of /cvsroot/hoc/hoc/docs In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv11269 Modified Files: Makefile.in Log Message: Added dummy 'install' target to docs/Makefile Index: Makefile.in =================================================================== RCS file: /cvsroot/hoc/hoc/docs/Makefile.in,v retrieving revision 1.4 retrieving revision 1.5 diff -u -d -r1.4 -r1.5 --- Makefile.in 17 May 2004 18:31:33 -0000 1.4 +++ Makefile.in 18 May 2004 03:27:31 -0000 1.5 @@ -45,6 +45,9 @@ dist: HOC.html +install: + true + clean: -rm HOC.html pod2htm* |
From: Andre P. <at...@us...> - 2004-05-18 03:05:16
|
Update of /cvsroot/hoc/hoc/Samples/Editor In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv7856/Samples/Editor Modified Files: Makefile.in Log Message: Fixed dist_FILES Makefile variables to make it work with BSD's cp Fixed removal of CVS and *~ directories from distribution tarball Index: Makefile.in =================================================================== RCS file: /cvsroot/hoc/hoc/Samples/Editor/Makefile.in,v retrieving revision 1.2 retrieving revision 1.3 diff -u -d -r1.2 -r1.3 --- Makefile.in 17 May 2004 18:31:33 -0000 1.2 +++ Makefile.in 18 May 2004 03:05:02 -0000 1.3 @@ -2,7 +2,7 @@ dist_srcdir = Samples/Editor dist_FILES = \ - Contents/ \ + Contents \ $(wildcard *.hs) \ Makefile.in \ $(NULL) |
From: Andre P. <at...@us...> - 2004-05-18 03:05:16
|
Update of /cvsroot/hoc/hoc In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv7856 Modified Files: Makefile.in Log Message: Fixed dist_FILES Makefile variables to make it work with BSD's cp Fixed removal of CVS and *~ directories from distribution tarball Index: Makefile.in =================================================================== RCS file: /cvsroot/hoc/hoc/Makefile.in,v retrieving revision 1.5 retrieving revision 1.6 diff -u -d -r1.5 -r1.6 --- Makefile.in 18 May 2004 02:36:48 -0000 1.5 +++ Makefile.in 18 May 2004 03:05:02 -0000 1.6 @@ -27,7 +27,7 @@ README.txt \ aclocal.m4 \ autogen.sh \ - autotools/ \ + autotools \ config.mk.in \ configure \ configure.ac \ @@ -40,10 +40,10 @@ -test -d "$(dist_dir)" && rm -rf "$(dist_dir)" $(MAKE) dist-recursive for dir in $(all_SUBDIRS); do (cd $$dir; $(MAKE) dist-recursive); done - find "$(dist_dir)" -type d -name 'CVS' -delete - find "$(dist_dir)" -name '*~' -delete cp -HRp libffi-src "$(dist_dir)" rm -rf "$(dist_dir)"/libffi-src/build + find "$(dist_dir)" -type d -name 'CVS' -exec rm -rf '{}' ';' -prune + find "$(dist_dir)" -type d -name '*~' -exec rm -rf '{}' ';' -prune tar jcvf @abs_top_builddir@/hoc-@PACKAGE_VERSION@.tar.bz2 \ ./hoc-@PACKAGE_VERSION@ |
From: Andre P. <at...@us...> - 2004-05-18 03:05:16
|
Update of /cvsroot/hoc/hoc/HOC In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv7856/HOC Modified Files: Makefile.in Log Message: Fixed dist_FILES Makefile variables to make it work with BSD's cp Fixed removal of CVS and *~ directories from distribution tarball Index: Makefile.in =================================================================== RCS file: /cvsroot/hoc/hoc/HOC/Makefile.in,v retrieving revision 1.5 retrieving revision 1.6 diff -u -d -r1.5 -r1.6 --- Makefile.in 17 May 2004 18:07:42 -0000 1.5 +++ Makefile.in 18 May 2004 03:05:01 -0000 1.6 @@ -2,7 +2,7 @@ dist_srcdir = HOC dist_FILES = \ - HOC/ \ + HOC \ HOC-gnustep.conf \ HOC-gnustep.conf-inplace \ HOC-macos.conf \ |
From: Andre P. <at...@us...> - 2004-05-18 03:05:16
|
Update of /cvsroot/hoc/hoc/Bindings In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv7856/Bindings Modified Files: Makefile.in Log Message: Fixed dist_FILES Makefile variables to make it work with BSD's cp Fixed removal of CVS and *~ directories from distribution tarball Index: Makefile.in =================================================================== RCS file: /cvsroot/hoc/hoc/Bindings/Makefile.in,v retrieving revision 1.3 retrieving revision 1.4 diff -u -d -r1.3 -r1.4 --- Makefile.in 17 May 2004 18:07:41 -0000 1.3 +++ Makefile.in 18 May 2004 03:05:01 -0000 1.4 @@ -2,7 +2,7 @@ dist_srcdir = Bindings dist_FILES = \ - AdditionalCode/ \ + AdditionalCode \ Makefile.in \ binding-script.txt \ $(NULL) |
From: Andre P. <at...@us...> - 2004-05-18 03:05:15
|
Update of /cvsroot/hoc/hoc/Samples/ExpressionParser In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv7856/Samples/ExpressionParser Modified Files: Makefile.in Log Message: Fixed dist_FILES Makefile variables to make it work with BSD's cp Fixed removal of CVS and *~ directories from distribution tarball Index: Makefile.in =================================================================== RCS file: /cvsroot/hoc/hoc/Samples/ExpressionParser/Makefile.in,v retrieving revision 1.1 retrieving revision 1.2 diff -u -d -r1.1 -r1.2 --- Makefile.in 17 May 2004 18:31:33 -0000 1.1 +++ Makefile.in 18 May 2004 03:05:02 -0000 1.2 @@ -2,7 +2,7 @@ dist_srcdir = Samples/ExpressionParser dist_FILES = \ - Contents/ \ + Contents \ $(wildcard *.hs) \ Makefile.in \ $(NULL) |
From: Andre P. <at...@us...> - 2004-05-18 03:05:15
|
Update of /cvsroot/hoc/hoc/Samples/Browser In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv7856/Samples/Browser Modified Files: Makefile.in Log Message: Fixed dist_FILES Makefile variables to make it work with BSD's cp Fixed removal of CVS and *~ directories from distribution tarball Index: Makefile.in =================================================================== RCS file: /cvsroot/hoc/hoc/Samples/Browser/Makefile.in,v retrieving revision 1.2 retrieving revision 1.3 diff -u -d -r1.2 -r1.3 --- Makefile.in 17 May 2004 18:31:33 -0000 1.2 +++ Makefile.in 18 May 2004 03:05:02 -0000 1.3 @@ -2,7 +2,7 @@ dist_srcdir = Samples/Browser dist_FILES = \ - Contents/ \ + Contents \ $(wildcard *.hs) \ Makefile.in \ $(NULL) |