{"id":24,"date":"2009-01-13T05:13:18","date_gmt":"2009-01-13T10:13:18","guid":{"rendered":"http:\/\/coherentpdf.com\/blog\/?p=24"},"modified":"2010-02-16T10:05:38","modified_gmt":"2010-02-16T15:05:38","slug":"keeping-the-codebase-together","status":"publish","type":"post","link":"https:\/\/coherentpdf.com\/blog\/?p=24","title":{"rendered":"Keeping the Codebase Together"},"content":{"rendered":"<p>We have to generate the following things from our <a href=\"http:\/\/caml.inria.fr\/\">OCaml<\/a> codebase:<\/p>\n<p>(a) <a href=\"http:\/\/www.coherentpdf.com\/\">Command Line PDF Tools<\/a> for Windows, Mac, Linux and Solaris, demo and full versions<br \/>\n(b) .NET DLL by compiling with <a href=\"http:\/\/msdn.microsoft.com\/en-us\/fsharp\/default.aspx\">F#<\/a>, demo and full versions<br \/>\n(c) The open-source <a href=\"http:\/\/www.coherentpdf.com\/ocaml-libraries.html\">CamlPDF<\/a> library<br \/>\n(d) The demonstration renderer and its GUI<br \/>\n(e) Literate Programs for all the code<\/p>\n<p>So far all this has been achieved with just plain Ocaml and a couple of makefiles and the very useful <a href=\"http:\/\/www.ocaml.info\/home\/ocaml_sources.html\">OCamlMakefile<\/a>. A little trickery is required to have demo and full versions compiled from the same source.<\/p>\n<p>Soon we&#8217;ll add:<\/p>\n<p>(f) Plain C Wrapper for the same library exposed to .NET<\/p>\n<p>which will allow the PDF library to work natively from C on any platform where OCaml can natively compile. This wrapper will be a little harder to write than the .NET wrapper, since we have less rich types available to express the various ML data structures.<\/p>\n<p>I&#8217;ve also been playing with Apple&#8217;s <a href=\"http:\/\/developer.apple.com\/cocoa\/\">Cocoa<\/a> with Objective-C, in preparation for a new PDF-related product for OS X. I&#8217;ll be linking in the new Plain C wrapper to that. Cocoa and Objective C is all object-oriented-kool-aid, but seemingly of the less gross kind. I&#8217;ll only be using it for the interface, where it seems to work.<\/p>\n<p>This will be our first consumer rather than business product, so a whole new set of problems to deal with.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>We have to generate the following things from our OCaml codebase: (a) Command Line PDF Tools for Windows, Mac, Linux and Solaris, demo and full versions (b) .NET DLL by compiling with F#, demo and full versions (c) The open-source &hellip; <a href=\"https:\/\/coherentpdf.com\/blog\/?p=24\">Continue reading <span class=\"meta-nav\">&rarr;<\/span><\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[1],"tags":[5],"class_list":["post-24","post","type-post","status-publish","format-standard","hentry","category-uncategorized","tag-ocaml"],"_links":{"self":[{"href":"https:\/\/coherentpdf.com\/blog\/index.php?rest_route=\/wp\/v2\/posts\/24","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/coherentpdf.com\/blog\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/coherentpdf.com\/blog\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/coherentpdf.com\/blog\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/coherentpdf.com\/blog\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=24"}],"version-history":[{"count":0,"href":"https:\/\/coherentpdf.com\/blog\/index.php?rest_route=\/wp\/v2\/posts\/24\/revisions"}],"wp:attachment":[{"href":"https:\/\/coherentpdf.com\/blog\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=24"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/coherentpdf.com\/blog\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=24"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/coherentpdf.com\/blog\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=24"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}