Changeset 19095 for ext

Show
Ignore:
Timestamp:
12/07/07 10:31:08 (13 months ago)
Author:
Darren_Duncan
Message:

ext/Muldis-DB/ : renamed all ::DBMS Perl packages to ::Machine, and all other 'dbms' named vars etc

Location:
ext/Muldis-DB
Files:
7 modified

Legend:

Unmodified
Added
Removed
  • ext/Muldis-DB/Changes

    r18514 r19095  
    22--------------------------------------------------------------------------- 
    33 
    4 2007-10-20   Darren Duncan <perl@DarrenDuncan.net> 
    5  
    6     * Muldis DB version 0.5.0 for Perl 5 is released on CPAN as 
    7     Muldis-DB-0.5.0.tar.gz.  Muldis DB version 0.5.0 for Perl 6 is not 
     42007-12-xx   Darren Duncan <perl@DarrenDuncan.net> 
     5 
     6    * Muldis DB version 0.6.0 for Perl 5 is released on CPAN as 
     7    Muldis-DB-0.6.0.tar.gz.  Muldis DB version 0.6.0 for Perl 6 is not 
    88    released at this time, if ever, since it is currently released only as 
    99    part of the Perl6-Pugs project (in its ext/Muldis-DB/ subdirectory), 
    1010    which sets its own less frequent release schedule.  The rest of this 
    1111    Changes entry refers only to the Perl 5 version. 
     12 
     13    * New file versions are: DB.pm and Interface.pm and Validator.pm and 
     14    Example.pm 0.6.0 and SeeAlso.pm 0.4.2. 
     15 
     16    * (Interface.pm, Example.pm, Validator.pm, DB.pm, SeeAlso.pod, 
     17    MDB_50_Validate_Example.t)  Renamed all Perl packages named ::DBMS to 
     18    ::Machine (that is, under Interface:: and Example::Public::), and 
     19    similarly renamed all routines, attributes, parameters, variables, 
     20    config keys, and so on, to use 'machine' rather than 'dbms'. 
     21 
     22    * TODO: split all ::Machine pkgs each into itself and ::Process. 
     23 
     242007-10-20   Darren Duncan <perl@DarrenDuncan.net> 
     25 
     26    * Muldis DB version 0.5.0 for Perl 5 is released on CPAN as 
     27    Muldis-DB-0.5.0.tar.gz.  Muldis DB version 0.5.0 for Perl 6 is not 
     28    released at all.  The rest of this Changes entry refers only to the 
     29    Perl 5 version. 
    1230 
    1331    * Removed the files PhysType.pm and Operators.pm; these files were very 
  • ext/Muldis-DB/lib/Muldis/DB.pm

    r18514 r19095  
    108108Perl code runs). 
    109109 
    110 A Muldis::DB::Interface::DBMS object represents a single active Muldis DB 
    111 virtual machine; it has a spartan DBI-inspired set of methods which you use 
    112 to compile/prepare and/or invoke/execute Muldis D statements and routines 
    113 within the virtual machine, input data to it, and output data from it. 
    114  
    115 You can create more than one DBMS object at a time, and they are 
     110A Muldis::DB::Interface::Machine object represents a single active Muldis 
     111DB virtual machine; it has a spartan DBI-inspired set of methods which you 
     112use to compile/prepare and/or invoke/execute Muldis D statements and 
     113routines within the virtual machine, input data to it, and output data from 
     114it. 
     115 
     116You can create more than one Machine object at a time, and they are 
    116117essentially all isolated from each other, even if more than one uses the 
    117 same Engine class to implement it; that is, multiple DBMS objects will not 
    118 have references to each other at a level visible in the Muldis DB Native 
    119 Interface, if at all.  To account for situations where multiple DBMS 
    120 objects want to use the same external resources, such as a repository file 
    121 on disk, it is expected that the Engines will employ appropriate measures 
    122 such as system-managed locks so that resource corruption or application 
    123 failure is prevented.  I<Also, Muldis DB should be thread safe and/or 
    124 savvy in the future, but for now it officially is not and you should not 
    125 share Muldis DB objects between multiple threads, nor have objects in 
    126 separate threads try to access the same external resources.> 
     118same Engine class to implement it; that is, multiple Machine objects will 
     119not have references to each other at a level visible in the Muldis DB 
     120Native Interface, if at all.  To account for situations where multiple 
     121Machine objects want to use the same external resources, such as a 
     122repository file on disk, it is expected that the Engines will employ 
     123appropriate measures such as system-managed locks so that resource 
     124corruption or application failure is prevented.  I<Also, Muldis DB should 
     125be thread safe and/or savvy in the future, but for now it officially is not 
     126and you should not share Muldis DB objects between multiple threads, nor 
     127have objects in separate threads try to access the same external 
     128resources.> 
    127129 
    128130Muldis DB does not use any dialect of SQL in its native API (unlike many 
  • ext/Muldis-DB/lib/Muldis/DB/Engine/Example.pm

    r18514 r19095  
    1111########################################################################### 
    1212 
    13 sub new_dbms of Muldis::DB::Engine::Example::Public::DBMS 
    14         (Array :$exp_ast_lang!, Any :$dbms_config!) { 
    15     return ::Muldis::DB::Engine::Example::Public::DBMS.new( 
    16         :exp_ast_lang($exp_ast_lang), :dbms_config($dbms_config) ); 
     13sub new_machine of Muldis::DB::Engine::Example::Public::Machine 
     14        (Array :$exp_ast_lang!, Any :$machine_config!) { 
     15    return ::Muldis::DB::Engine::Example::Public::Machine.new( 
     16        :exp_ast_lang($exp_ast_lang), :machine_config($machine_config) ); 
    1717} 
    1818 
     
    2424########################################################################### 
    2525 
    26 class Muldis::DB::Engine::Example::Public::DBMS { 
    27     does Muldis::DB::Interface::DBMS; 
    28  
    29     # Allow objects of these to update DBMS' "assoc" list re themselves. 
     26class Muldis::DB::Engine::Example::Public::Machine { 
     27    does Muldis::DB::Interface::Machine; 
     28 
     29    # Allow objects of these to update Machine' "assoc" list re themselves. 
    3030    trusts Muldis::DB::Engine::Example::Public::Var; 
    3131    trusts Muldis::DB::Engine::Example::Public::FuncBinding; 
    3232    trusts Muldis::DB::Engine::Example::Public::ProcBinding; 
    3333 
    34     # User-supplied config data for this DBMS object / virtual machine. 
     34    # User-supplied config data for this Machine object. 
    3535    # For the moment, the Example Engine doesn't actually have anything 
    36     # that can be configured in this way, so input $dbms_config is ignored. 
     36    # that can be config in this way, so input $machine_config is ignored. 
    3737    has Any $!exp_ast_lang; 
    38     has Any $!dbms_config; 
    39  
    40     # Lists of user-held objects associated with parts of this DBMS. 
     38    has Any $!machine_config; 
     39 
     40    # Lists of user-held objects associated with parts of this Machine. 
    4141    # For each of these, Hash keys are obj .WHERE/addrs, vals the objs. 
    4242    # These should be weak obj-refs, so objs disappear from here 
     
    5151########################################################################### 
    5252 
    53 submethod BUILD (Array :$exp_ast_lang!, Any :$dbms_config!) { 
     53submethod BUILD (Array :$exp_ast_lang!, Any :$machine_config!) { 
    5454 
    5555    # TODO: input checks. 
    56     $!exp_ast_lang = [$exp_ast_lang.values]; 
    57     $!dbms_config  = $dbms_config; 
     56    $!exp_ast_lang   = [$exp_ast_lang.values]; 
     57    $!machine_config = $machine_config; 
    5858 
    5959    $!assoc_vars          = {}; 
     
    8989        (Str :$decl_type!) { 
    9090    return ::Muldis::DB::Engine::Example::Public::Var.new( 
    91         :dbms(self), :decl_type($decl_type) ); 
     91        :machine(self), :decl_type($decl_type) ); 
    9292} 
    9393 
     
    9999        () { 
    100100    return ::Muldis::DB::Engine::Example::Public::FuncBinding.new( 
    101         :dbms(self) ); 
     101        :machine(self) ); 
    102102} 
    103103 
     
    109109        () { 
    110110    return ::Muldis::DB::Engine::Example::Public::ProcBinding.new( 
    111         :dbms(self) ); 
     111        :machine(self) ); 
    112112} 
    113113 
     
    122122 
    123123#    my $f = ::Muldis::DB::Engine::Example::Public::FuncBinding.new( 
    124 #        :dbms(self) ); 
     124#        :machine(self) ); 
    125125 
    126126    my $result = ::Muldis::DB::Engine::Example::Public::Var.new( 
    127         :dbms(self), :decl_type('sys.Core.Universal.Universal') ); 
     127        :machine(self), :decl_type('sys.Core.Universal.Universal') ); 
    128128 
    129129#    $f.bind_func( :func_name($func_name) ); 
     
    141141 
    142142#    my $p = ::Muldis::DB::Engine::Example::Public::ProcBinding.new( 
    143 #        :dbms(self) ); 
     143#        :machine(self) ); 
    144144 
    145145#    $p.bind_proc( :proc_name($proc_name) ); 
     
    184184########################################################################### 
    185185 
    186 } # class Muldis::DB::Engine::Example::Public::DBMS 
     186} # class Muldis::DB::Engine::Example::Public::Machine 
    187187 
    188188########################################################################### 
     
    192192    does Muldis::DB::Interface::Var; 
    193193 
    194     has Muldis::DB::Engine::Example::Public::DBMS $!dbms; 
     194    has Muldis::DB::Engine::Example::Public::Machine $!machine; 
    195195 
    196196    has Muldis::DB::Engine::Example::VM::Var $!var; 
     
    199199########################################################################### 
    200200 
    201 submethod BUILD (Muldis::DB::Engine::Example::Public::DBMS :$dbms!, 
     201submethod BUILD (Muldis::DB::Engine::Example::Public::Machine :$machine!, 
    202202        Str :$decl_type!) { 
    203203 
    204204    # TODO: input checks. 
    205205 
    206     $!dbms = $dbms; 
    207 #    $dbms!assoc_vars.{self.WHERE} = self; 
    208 #    weaken $dbms!assoc_vars.{self.WHERE}; 
     206    $!machine = $machine; 
     207#    $machine!assoc_vars.{self.WHERE} = self; 
     208#    weaken $machine!assoc_vars.{self.WHERE}; 
    209209 
    210210#    $!var = ::Muldis::DB::Engine::Example::VM::Var.new( 
     
    215215 
    216216submethod DESTROY () { 
    217 #    $!dbms!assoc_vars.delete( self.WHERE ); 
     217#    $!machine!assoc_vars.delete( self.WHERE ); 
    218218    return; 
    219219} 
     
    281281 
    282282It also describes the same-number versions for Perl 6 of 
    283 Muldis::DB::Engine::Example::Public::DBMS, 
     283Muldis::DB::Engine::Example::Public::Machine, 
    284284Muldis::DB::Engine::Example::Public::Var, 
    285285Muldis::DB::Engine::Example::Public::FuncBinding, and 
  • ext/Muldis-DB/lib/Muldis/DB/Interface.pm

    r18514 r19095  
    99########################################################################### 
    1010 
    11 sub new_dbms of Muldis::DB::Interface::DBMS 
    12         (Str :$engine_name!, Array :$exp_ast_lang!, Any :$dbms_config!) { 
    13  
    14     die q{new_dbms(): Bad :$engine_name arg; it is not an object of a} 
     11sub new_machine of Muldis::DB::Interface::Machine (Str :$engine_name!, 
     12        Array :$exp_ast_lang!, Any :$machine_config!) { 
     13 
     14    die q{new_machine(): Bad :$engine_name arg; it is not an object of a} 
    1515            ~ q{ Str-doing class, or it is the empty string.} 
    1616        if !$engine_name.defined or !$engine_name.does(Str) 
     
    2424        eval "require $engine_name;"; 
    2525        if (my $err = $!) { 
    26             die q{new_dbms(): Could not load Muldis DB Engine module} 
    27                 ~ qq{ '$engine_name': $err}; 
     26            die q{new_machine(): Could not load Muldis DB Engine} 
     27                ~ qq{ module '$engine_name': $err}; 
    2828        } 
    29 #        die qq{new_dbms(): Could not load Muldis DB Engine module} 
     29#        die qq{new_machine(): Could not load Muldis DB Engine module} 
    3030#                ~ qq{ '$engine_name': while that file did compile without} 
    3131#                ~ q{ errors, it did not declare the same-named module.} 
    3232#            if !::($engine_name).does(Module); 
    3333    } 
    34 #    die qq{new_dbms(): The Muldis DB Engine module '$engine_name' does} 
    35 #            ~ q{ not provide the new_dbms() constructor function.} 
    36 #        if !::($engine_name).HOW.can('new_dbms'); 
    37     my $dbms = undef; 
     34#    die qq{new_machine(): The Muldis DB Engine module '$engine_name'} 
     35#            ~ q{ does not provide the new_machine() constructor function.} 
     36#        if !::($engine_name).HOW.can('new_machine'); 
     37    my $machine = undef; 
    3838    try { 
    39         $dbms = &::($engine_name)::new_dbms( 
    40             :exp_ast_lang($exp_ast_lang), :dbms_config($dbms_config) ); 
     39        $machine = &::($engine_name)::new_machine( 
     40            :exp_ast_lang($exp_ast_lang), 
     41            :machine_config($machine_config) ); 
    4142    }; 
    4243    if (my $err = $!) { 
    43         die qq{new_dbms(): The Muldis DB Engine module '$engine_name'} 
    44             ~ qq{ threw an exception during its new_dbms() exec: $err}; 
    45     } 
    46     die q{new_dbms(): The new_dbms() constructor function of the} 
     44        die qq{new_machine(): The Muldis DB Engine modu '$engine_name'} 
     45            ~ qq{ threw an exception during its new_machine() exec: $err}; 
     46    } 
     47    die q{new_machine(): The new_machine() constructor function of the} 
    4748            ~ qq{ Muldis DB Engine module '$engine_name' did not return an} 
    48             ~ q{ object of a Muldis::DB::Interface::DBMS-doing class.} 
    49         if !$dbms.defined or !$dbms.does(::Muldis::DB::Interface::DBMS); 
    50  
    51     return $dbms; 
     49            ~ q{ object of a Muldis::DB::Interface::Machine-doing class.} 
     50        if !$machine.defined 
     51            or !$machine.does(::Muldis::DB::Interface::Machine); 
     52 
     53    return $machine; 
    5254} 
    5355 
     
    5961########################################################################### 
    6062 
    61 role Muldis::DB::Interface::DBMS { 
     63role Muldis::DB::Interface::Machine { 
    6264 
    6365    method fetch_exp_ast_lang { 
     
    117119    } 
    118120 
    119 } # role Muldis::DB::Interface::DBMS 
     121} # role Muldis::DB::Interface::Machine 
    120122 
    121123########################################################################### 
     
    124126role Muldis::DB::Interface::Var { 
    125127 
    126     method assoc_dbms { 
     128    method assoc_machine { 
    127129        die q{not implemented by subclass } ~ self.WHAT; 
    128130    } 
     
    147149role Muldis::DB::Interface::FuncBinding { 
    148150 
    149     method assoc_dbms { 
     151    method assoc_machine { 
    150152        die q{not implemented by subclass } ~ self.WHAT; 
    151153    } 
     
    186188role Muldis::DB::Interface::ProcBinding { 
    187189 
    188     method assoc_dbms { 
     190    method assoc_machine { 
    189191        die q{not implemented by subclass } ~ self.WHAT; 
    190192    } 
     
    237239 
    238240It also describes the same-number versions for Perl 6 of 
    239 Muldis::DB::Interface::DBMS ("DBMS"), Muldis::DB::Interface::Var ("Var"), 
    240 Muldis::DB::Interface::FuncBinding ("FuncBinding"), and 
     241Muldis::DB::Interface::Machine ("Machine"), Muldis::DB::Interface::Var 
     242("Var"), Muldis::DB::Interface::FuncBinding ("FuncBinding"), and 
    241243Muldis::DB::Interface::ProcBinding ("ProcBinding"). 
    242244 
     
    249251    use Muldis::DB::Interface; 
    250252 
    251     my $dbms = Muldis::DB::Interface::new_dbms( 
     253    my $machine = Muldis::DB::Interface::new_machine( 
    252254        :engine_name('Muldis::DB::Engine::Example'), 
    253255        :exp_ast_lang([ 'MuldisD', 'cpan:DUNCAND', '0.8.1' ]), 
    254         :dbms_config({}), 
     256        :machine_config({}), 
    255257    ); 
    256258 
    257     my $r1 = $dbms.new_var( :decl_type('sys.Core.Relation.Relation') ); 
    258     my $r2 = $dbms.new_var( :decl_type('sys.Core.Relation.Relation') ); 
     259    my $r1 = $machine.new_var( :decl_type('sys.Core.Relation.Relation') ); 
     260    my $r2 = $machine.new_var( :decl_type('sys.Core.Relation.Relation') ); 
    259261 
    260262    $r1.store_ast( :ast([ 'Relation', 'sys.Core.Relation.Relation', [ 
     
    284286    ] ]) ); 
    285287 
    286     my $r3 = $dbms.call_func( 
     288    my $r3 = $machine.call_func( 
    287289        :func_name('sys.Core.Relation.join'), 
    288290        :args({ 
     
    337339names, you don't need to change your code when the package names change due 
    338340to switching the Engine.  You only refer to some Engine's root package name 
    339 once, as a C<Muldis::DB::Interface::new_dbms> argument, and even that can 
    340 be read from a config file rather than being hard-coded in your 
     341once, as a C<Muldis::DB::Interface::new_machine> argument, and even that 
     342can be read from a config file rather than being hard-coded in your 
    341343application. 
    342344 
     
    355357=over 
    356358 
    357 =item C<new_dbms of Muldis::DB::Interface::DBMS (Str :$engine_name!, Array 
    358 :$exp_ast_lang!, Any :$dbms_config!)> 
    359  
    360 This constructor function creates and returns a C<DBMS> object that is 
     359=item C<new_machine of Muldis::DB::Interface::Machine (Str :$engine_name!, 
     360Array :$exp_ast_lang!, Any :$machine_config!)> 
     361 
     362This constructor function creates and returns a C<Machine> object that is 
    361363implemented by the Muldis DB Engine named by its named argument 
    362 C<$engine_name>; that object is initialized using the C<$dbms_config> 
     364C<$engine_name>; that object is initialized using the C<$machine_config> 
    363365argument.  The named argument C<$engine_name> is the name of a Perl module 
    364366that is expected to be the root package of a Muldis DB Engine, and which is 
    365 expected to declare a C<new_dbms> subroutine with a single named argument 
    366 C<$dbms_config>; invoking this subroutine is expected to return an object 
    367 of some class of the same Engine which does the Muldis::DB::Interface::DBMS 
    368 role.  This function will start by testing if the root package is already 
    369 loaded (it may be declared by some already-loaded file of another name), 
    370 and only if not, will it do a Perl 'require' of the C<$engine_name>.  The 
    371 new C<DBMS> object's "expected AST language" attribute is initialized from 
    372 the C<$exp_ast_lang> argument, which is a 3-element Array as described for 
    373 the argument of the C<DBMS> method C<store_exp_ast_lang> (if applicable, 
    374 the C<$dbms_config> argument is interpreted in light of C<$exp_ast_lang>). 
     367expected to declare a C<new_machine> subroutine with a single named 
     368argument C<$machine_config>; invoking this subroutine is expected to return 
     369an object of some class of the same Engine which does the 
     370Muldis::DB::Interface::Machine role.  This function will start by testing 
     371if the root package is already loaded (it may be declared by some 
     372already-loaded file of another name), and only if not, will it do a Perl 
     373'require' of the C<$engine_name>.  The new C<Machine> object's "expected 
     374AST language" attribute is initialized from the C<$exp_ast_lang> argument, 
     375which is a 3-element Array as described for the argument of the C<Machine> 
     376method C<store_exp_ast_lang> (if applicable, the C<$machine_config> 
     377argument is interpreted in light of C<$exp_ast_lang>). 
    375378 
    376379=back 
    377380 
    378 =head2 The Muldis::DB::Interface::DBMS Role 
    379  
    380 A C<DBMS> object represents a single active Muldis DB virtual machine / 
     381=head2 The Muldis::DB::Interface::Machine Role 
     382 
     383A C<Machine> object represents a single active Muldis DB virtual machine / 
    381384Muldis D environment, which is the widest scope stateful context in which 
    382385any other database activities happen.  Other activities meaning the 
    383386compilation and execution of Muldis D code, mounting or unmounting depots, 
    384387performing queries, data manipulation, data definition, and transactions. 
    385 If a C<DBMS> object is ever garbage collected by Perl while it has any 
     388If a C<Machine> object is ever garbage collected by Perl while it has any 
    386389active transactions, then those will all be rolled back, and then an 
    387390exception thrown. 
     
    392395 
    393396This method returns, as a 3-element (ordered) Array, the long name of the 
    394 Muldis D (or alternative) language version that its invocant C<DBMS> object 
    395 and its associated/child objects expect their AST/code/value input to 
    396 conform to, and that their AST/code/value output will conform to.  The 3 
     397Muldis D (or alternative) language version that its invocant C<Machine> 
     398object and its associated/child objects expect their AST/code/value input 
     399to conform to, and that their AST/code/value output will conform to.  The 3 
    397400elements of the array (each a Str) are, in order, the language spec base 
    398401name (typically C<MuldisD>), the language spec authority (typically 
     
    403406 
    404407This method assigns a new expected language long name to its invocant 
    405 C<DBMS>, which is supplied in the C<$lang> argument; the argument is 
     408C<Machine>, which is supplied in the C<$lang> argument; the argument is 
    406409expected to be a 3-element Array as described for C<fetch_exp_ast_lang>. 
    407410This method dies if the specified language/version isn't one that the 
     
    411414 
    412415This method creates and returns a new C<Var> object that is associated with 
    413 the invocant C<DBMS>, and whose declared Muldis D type is named by the 
     416the invocant C<Machine>, and whose declared Muldis D type is named by the 
    414417C<$decl_type> argument, and whose default Muldis D value is the default 
    415418value of its declared type. 
     
    419422This method returns, as elements of a new (unordered) Array, all the 
    420423currently existing C<Var> objects that are associated with the invocant 
    421 C<DBMS>. 
     424C<Machine>. 
    422425 
    423426=item C<new_func_binding of Muldis::DB::Interface::FuncBinding ()> 
    424427 
    425428This method creates and returns a new C<FuncBinding> object that is 
    426 associated with the invocant C<DBMS>. 
     429associated with the invocant C<Machine>. 
    427430 
    428431=item C<assoc_func_bindings of Array ()> 
     
    430433This method returns, as elements of a new (unordered) Array, all the 
    431434currently existing C<FuncBinding> objects that are associated with the 
    432 invocant C<DBMS>. 
     435invocant C<Machine>. 
    433436 
    434437=item C<new_proc_binding of Muldis::DB::Interface::ProcBinding ()> 
    435438 
    436439This method creates and returns a new C<ProcBinding> object that is 
    437 associated with the invocant C<DBMS>. 
     440associated with the invocant C<Machine>. 
    438441 
    439442=item C<assoc_proc_bindings of Array ()> 
     
    441444This method returns, as elements of a new (unordered) Array, all the 
    442445currently existing C<ProcBinding> objects that are associated with the 
    443 invocant C<DBMS>. 
     446invocant C<Machine>. 
    444447 
    445448=item C<call_func of Muldis::DB::Interface::Var (Str :$func_name!, Hash 
     
    465468This method returns the current transaction nesting level of its invocant's 
    466469virtual machine.  If no explicit transactions were started, then the 
    467 nesting level is zero, in which case the DBMS is conceptually 
     470nesting level is zero, in which case the Machine is conceptually 
    468471auto-committing every successful Muldis D statement.  Each call of 
    469472C<start_trans> will increase the nesting level by one, and each 
     
    497500A C<Var> object is a Muldis D variable that is lexically scoped to the Perl 
    498501environment (like an ordinary Perl variable).  It is associated with a 
    499 specific C<DBMS> object, the one whose C<new_var> method created it, but it 
    500 is considered anonymous and non-invokable within the virtual machine.  The 
    501 only way for Muldis D code to work with these variables is if they bound to 
    502 Perl invocations of Muldis D routines being C<call(|\w+)> by Perl; a Muldis 
    503 D routine parameter one is bound to is the name it is referenced by in the 
    504 virtual machine.  C<Var> objects are the normal way to directly share or 
    505 move data between the Muldis D and Perl environments.  A C<Var> is strongly 
    506 typed, and the declared Muldis D type of the variable (which affects what 
    507 values it is allowed to hold) is set when the C<Var> object is created, and 
    508 this declared type can't be changed afterwards. 
     502specific C<Machine> object, the one whose C<new_var> method created it, but 
     503it is considered anonymous and non-invokable within the virtual machine. 
     504The only way for Muldis D code to work with these variables is if they 
     505bound to Perl invocations of Muldis D routines being C<call(|\w+)> by Perl; 
     506a Muldis D routine parameter one is bound to is the name it is referenced 
     507by in the virtual machine.  C<Var> objects are the normal way to directly 
     508share or move data between the Muldis D and Perl environments.  A C<Var> is 
     509strongly typed, and the declared Muldis D type of the variable (which 
     510affects what values it is allowed to hold) is set when the C<Var> object is 
     511created, and this declared type can't be changed afterwards. 
    509512 
    510513=over 
    511514 
    512 =item C<assoc_dbms of Muldis::DB::Interface::DBMS ()> 
    513  
    514 This method returns the C<DBMS> object that the invocant C<Var> is 
     515=item C<assoc_machine of Muldis::DB::Interface::Machine ()> 
     516 
     517This method returns the C<Machine> object that the invocant C<Var> is 
    515518associated with. 
    516519 
     
    537540 
    538541A C<FuncBinding> represents a single Muldis D function that may be directly 
    539 invoked by Perl code.  It is associated with a specific C<DBMS> object, the 
    540 one whose C<new_func_binding> method created it, and the function it 
     542invoked by Perl code.  It is associated with a specific C<Machine> object, 
     543the one whose C<new_func_binding> method created it, and the function it 
    541544represents lives in and has a global-public scoped name in the 
    542545corresponding virtual machine.  This is specifically a lazy binding, so no 
     
    544547C<call> method is being executed, and a then-valid object can then become 
    545548invalid afterwards.  A C<FuncBinding> is conceptually used behind the 
    546 scenes to implement a C<DBMS> object's C<call_func> method, but you can use 
    547 it directly instead, for possibly better performance. 
     549scenes to implement a C<Machine> object's C<call_func> method, but you can 
     550use it directly instead, for possibly better performance. 
    548551 
    549552=over 
    550553 
    551 =item C<assoc_dbms of Muldis::DB::Interface::DBMS ()> 
    552  
    553 This method returns the C<DBMS> object that the invocant C<FuncBinding> is 
    554 associated with. 
     554=item C<assoc_machine of Muldis::DB::Interface::Machine ()> 
     555 
     556This method returns the C<Machine> object that the invocant C<FuncBinding> 
     557is associated with. 
    555558 
    556559=item C<bind_func (Str :$func_name!)> 
     
    604607 
    605608A C<ProcBinding> represents a single Muldis D procedure that may be 
    606 directly invoked by Perl code.  It is associated with a specific C<DBMS> 
     609directly invoked by Perl code.  It is associated with a specific C<Machine> 
    607610object, the one whose C<new_proc_binding> method created it, and the 
    608611procedure it represents lives in and has a global-public scoped name in the 
     
    611614C<call> method is being executed, and a then-valid object can then become 
    612615invalid afterwards.  A C<ProcBinding> is conceptually used behind the 
    613 scenes to implement a C<DBMS> object's C<call_proc> method, but you can use 
    614 it directly instead, for possibly better performance. 
     616scenes to implement a C<Machine> object's C<call_proc> method, but you can 
     617use it directly instead, for possibly better performance. 
    615618 
    616619=over 
    617620 
    618 =item C<assoc_dbms of Muldis::DB::Interface::DBMS ()> 
    619  
    620 This method returns the C<DBMS> object that the invocant C<ProcBinding> is 
    621 associated with. 
     621=item C<assoc_machine of Muldis::DB::Interface::Machine ()> 
     622 
     623This method returns the C<Machine> object that the invocant C<ProcBinding> 
     624is associated with. 
    622625 
    623626=item C<bind_proc (Str :$proc_name!)> 
  • ext/Muldis-DB/lib/Muldis/DB/SeeAlso.pod

    r18514 r19095  
    6060 
    6161A Muldis DB Engine built around Jeffrey Cohen's L<Genezzo> DBMS, or 
    62 specifically the root module that provides the C<new_dbms> function, could 
    63 conceivably have either of the above file or package names, depending on 
    64 what its author prefers, or something else yet.  A strong name influence 
     62specifically the root module that provides the C<new_machine> function, 
     63could conceivably have either of the above file or package names, depending 
     64on what its author prefers, or something else yet.  A strong name influence 
    6565could be whether Muldis DB forms the sole public interface for Genezzo 
    6666after its conversion to use it, or whether Genezzo would retain alternate