You are viewing a plain text version of this content. The canonical link for it is here.
Posted to docs-cvs@perl.apache.org by st...@apache.org on 2001/11/15 17:31:56 UTC

cvs commit: modperl-docs/src/devel/core_explained core_explained.pod

stas        01/11/15 08:31:56

  Modified:    src/devel/core_explained core_explained.pod
  Log:
  - starting to work on the core guide
  
  Revision  Changes    Path
  1.5       +115 -23   modperl-docs/src/devel/core_explained/core_explained.pod
  
  Index: core_explained.pod
  ===================================================================
  RCS file: /home/cvs/modperl-docs/src/devel/core_explained/core_explained.pod,v
  retrieving revision 1.4
  retrieving revision 1.5
  diff -u -r1.4 -r1.5
  --- core_explained.pod	2001/11/12 02:44:40	1.4
  +++ core_explained.pod	2001/11/15 16:31:56	1.5
  @@ -2,39 +2,131 @@
   
   mod_perl 2.0 Source Code Explained
   
  -=head1 Code Layout
  +=head1 Project's Layout
   
  -Apache-Test/ - test kit for mod_perl and Apache::* modules
  -Changes      - Changes file
  -LICENSE      - ASF LICENSE doc
  -Makefile.PL  - Generates all the needed Makefiles
  -Makefile     - autogenerated
  -WrapXS/      - autogenerated
  -lib/
  -src/
  -t/           - mod_perl tests
  -todo/        - things to be done
  -util/        - useful utilities for developers
  -xs/
  -
  -
  -=head1 ...
  -
  -most of the xs/ *.h files have code in them.  they are .h because they are
  -always #include-d, never compiled into their own object file.  and only
  -the file that #include-s a .h file from xs/ should be able to see what's
  -in there.  anything else belongs in a src/modules/perl/foo.c public api.
  +In its pristine state the project is comprised of the following root
  +directories and files:
   
  +  Apache-Test/      - test kit for mod_perl and Apache::* modules
  +  ModPerl-Registry/ - ModPerl::Registry sub-project
  +  build/            - utilities used during project build
  +  docs/             - documentation
  +  lib/              - Perl modules
  +  src/              - C code that builds libmodperl.so
  +  t/                - mod_perl tests
  +  todo/             - things to be done
  +  util/             - useful utilities for developers
  +  xs/               - source xs code and maps
  +  Changes           - Changes file
  +  LICENSE           - ASF LICENSE document
  +  Makefile.PL       - generates all the needed Makefiles
  +
  +After building the project, the following root directories and files
  +get generated:
  +
  +  Makefile     - Makefile
  +  WrapXS/      - autogenerated XS code
  +  blib/        - ready to install version of the package
  +
  +=head2 Directory xs/
  +
  +  Apache/                 - Apache specific XS code
  +  APR/                    - APR specific XS code
  +  ModPerl/                - ModPerl specific XS code
  +  maps/                   - 
  +  tables/                 - 
  +  Makefile.PL             - 
  +  modperl_xs_sv_convert.h - 
  +  modperl_xs_typedefs.h   - 
  +  modperl_xs_util.h       - 
  +  typemap                 - 
  +
  +=head3 xs/Apache, xs/APR and xs/ModPerl
  +
  +The I<xs/Apache>, I<xs/APR> and I<xs/ModPerl> directories include I<.h> files which
  +have C and XS code in them. They all have the I<.h> extension because
  +they are always C<#include-d>, never compiled into their own object
  +file.  and only the file that C<#include-s> an I<.h> file from these
  +directories should be able to see what's in there.  Anything else
  +belongs in a I<src/modules/perl/foo.c> public API.
  +
  +=head3 xs/maps
  +
  +The I<xs/maps> directory includes mapping files which describe how
  +Apache Perl API should be constructed and various XS typemapping. The
  +map files are comprised of three groups:
  +
  +=over
  +
  +=item * Functions Mapping
  +
  +  apache_functions.map
  +  modperl_functions.map
  +  apr_functions.map
  +
  +=item * Structures Mapping
  +
  +apache_structures.map
  +apr_structures.map
  +
  +=item * Types Mapping
  +
  +apache_types.map
  +apr_types.map
  +modperl_types.map
  +
  +=back
  +
  +The following sections describe the syntax of the files in each group
  +
  +=head4 Functions Mapping
  +
  +
  +#keywords:
  +# MODULE  = the module name
  +#           e.g. Apache::Connection -> Apache/Connection.{pm,xs}
  +#
  +# PACKAGE = the package name functions belong to, defaults to MODULE
  +#           value of 'guess' indicates that package name should be
  +#           guessed based on first argument found that maps to a Perl class
  +#           fallsback on the prefix (ap_ -> Apache, apr_ -> APR)
  +#
  +# PREFIX  = prefix to be stripped
  +#           defaults to PACKAGE, converted to C name convention, e.g.
  +#           APR::Base64 -> apr_base64_
  +#           if the converted prefix does not match, defaults to ap_ or apr_
  +
  +#format of entries:
  +# C function name | dispatch function name | argspec | Perl alias
  +
  +# dispatch function name defaults to C function name
  +# if the dispatch name is just a prefix (mpxs_, MPXS_)
  +# the C function name is appended to it
  +# the return type can be specified before the C function name,
  +# defaults to return_type in {Apache,ModPerl}::FunctionTable
  +
  +# the argspec defaults to arguments in {Apache,ModPerl}::FunctionTable
  +# argument types can be specified to override those in the FunctionTable
  +# default values can be specified, e.g. arg=default_value
  +# argspec of '...' indicates passthru, calling the function with
  +# (aTHX_ I32 items, SP **sp, SV **MARK)
  +
  +# the alias will be created in the current PACKAGE
  +
  +# function names that do not begin with /^\w/ are skipped
  +# for details see: %ModPerl::MapUtil::disabled_map
  +
  +
   =head1 Maintainers
   
   Maintainer is the person(s) you should contact with updates,
   corrections and patches.
   
  -Stas Bekman E<lt>stas@stason.orgE<gt>
  +Stas Bekman E<lt>stas (at) stason.orgE<gt>
   
   =head1 Authors
   
  -Stas Bekman E<lt>stas@stason.orgE<gt>
  +Stas Bekman E<lt>stas (at) stason.orgE<gt>
   Philippe M. Chiasson E<lt>gozer@cpan.orgE<gt>
   
   =cut
  
  
  

---------------------------------------------------------------------
To unsubscribe, e-mail: docs-cvs-unsubscribe@perl.apache.org
For additional commands, e-mail: docs-cvs-help@perl.apache.org