incubator-lucy-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Logan Bell <loganb...@gmail.com>
Subject Re: [lucy-dev] CFC's Model-View-Presenter architecture
Date Wed, 14 Mar 2012 03:53:14 GMT
+1

On Tue, Mar 13, 2012 at 6:03 PM, Marvin Humphrey <marvin@rectangular.com>wrote:

> Greets,
>
> Logan and I were discussing on IRC that CFC roughly follows a
> Model-View-Presenter design pattern[1].
>
>  * The parser reads in the source code files and builds a model of the
> class
>    hierarchy.
>  * The "Core" view traverses the model and generates per-class C header
>    files [plus some stuff].
>  * The "Perl" view traverses the model and generates Lucy.xs, "typemap",
>    etc. -- which contain per-class binding code [plus some stuff].
>
> To reflect this architecture, I think it makes sense to do a slight
> reorganization of the CFC class hierarchy.
>
> Everything that is used to model the class hierarchy moves under
> "Clownfish::CFC::Model":
>
>  Clownfish::CFC::Class       -> Clownfish::CFC::Model::Class
>  Clownfish::CFC::CBlock      -> Clownfish::CFC::Model::CBlock
>  Clownfish::CFC::DocuComment -> Clownfish::CFC::Model::DocuComment
>  Clownfish::CFC::File        -> Clownfish::CFC::Model::File
>  Clownfish::CFC::Function    -> Clownfish::CFC::Model::Function
>  Clownfish::CFC::Hierarchy   -> Clownfish::CFC::Model::Hierarchy
>  Clownfish::CFC::Method      -> Clownfish::CFC::Model::Method
>  Clownfish::CFC::ParamList   -> Clownfish::CFC::Model::ParamList
>  Clownfish::CFC::Parcel      -> Clownfish::CFC::Model::Parcel
>  Clownfish::CFC::Symbol      -> Clownfish::CFC::Model::Symbol
>  Clownfish::CFC::Type        -> Clownfish::CFC::Model::Type
>  Clownfish::CFC::Variable    -> Clownfish::CFC::Model::Variable
>
> Then, "Clownfish::CFC::Binding::Perl" gets renamed to
> "Clownfish::CFC::View::Perl" and "Clownfish::CFC::Binding::Core" gets
> renamed
> to "Clownfish::CFC::View::Core":
>
>  Clownfish::CFC::Binding::Perl              -> Clownfish::CFC::View::Perl
>  Clownfish::CFC::Binding::Perl::Class       ->
> Clownfish::CFC::View::Perl::Class
>  Clownfish::CFC::Binding::Perl::Constructor ->
> Clownfish::CFC::View::Perl::Constructor
>  Clownfish::CFC::Binding::Perl::Method      ->
> Clownfish::CFC::View::Perl::Method
>  Clownfish::CFC::Binding::Perl::Pod         ->
> Clownfish::CFC::View::Perl::Pod
>  Clownfish::CFC::Binding::Perl::Subroutine  ->
> Clownfish::CFC::View::Perl::Subroutine
>  Clownfish::CFC::Binding::Perl::TypeMap     ->
> Clownfish::CFC::View::Perl::TypeMap
>
>  Clownfish::CFC::Binding::Core           -> Clownfish::CFC::View::Core
>  Clownfish::CFC::Binding::Core::Class    ->
> Clownfish::CFC::View::Core::Class
>  Clownfish::CFC::Binding::Core::Aliases  ->
> Clownfish::CFC::View::Core::Aliases
>  Clownfish::CFC::Binding::Core::File     ->
> Clownfish::CFC::View::Core::File
>  Clownfish::CFC::Binding::Core::Function ->
> Clownfish::CFC::View::Core::Function
>  Clownfish::CFC::Binding::Core::Method   ->
> Clownfish::CFC::View::Core::Method
>
> The punchline:
>
>  To add a new host language to Clownfish, write a new View for CFC.
>
> I hope that helps to clarify both how CFC is organized and what it takes to
> contribute a new host language.
>
> Marvin Humphrey
>
> [1] CFC is clearly Model-View, but it's not MVC (because it's not
>    interactive, so there aren't any Controllers).  "Presenter" is kinda
> sorta
>    right.
>

Mime
  • Unnamed multipart/alternative (inline, None, 0 bytes)
View raw message