Update of /cvsroot/monetdb/pathfinder/compiler/mil
In directory 23jxhf1.ch3.sourceforge.com:/tmp/cvs-serv22072/mil

Modified Files:
        mil.c milgen.brg milprint.c 
Log Message:
- add framework for handling ftcontains operator by funcall/funparam operators



U milprint.c
Index: milprint.c
===================================================================
RCS file: /cvsroot/monetdb/pathfinder/compiler/mil/milprint.c,v
retrieving revision 1.94
retrieving revision 1.95
diff -u -d -r1.94 -r1.95
--- milprint.c  13 Mar 2009 08:37:05 -0000      1.94
+++ milprint.c  1 Apr 2009 13:25:19 -0000       1.95
@@ -440,6 +440,7 @@
     , [m_tj_tokenize]      = "[tijah_tokenize]"
     , [m_tj_ft_index_info] = "ALG_tj_ft_index_info"
     , [m_tj_query_handler] = "ALG_tj_query_handler"
+    , [m_tj_ftfun_handler] = "ALG_tj_ftfun_handler"
     , [m_tj_add_fti_tape]  = "ALG_tj_add_fti_tape"
     , [m_tj_docmgmt_tape ] = "ALG_tj_docmgmt_tape"
 #endif
@@ -1394,6 +1395,25 @@
             print_expression (n->child[6]);
             milprintf (")");
             break;
+        case m_tj_ftfun_handler:
+            milprintf ("%s (", ID[n->kind]);
+            print_expression (n->child[0]);
+            milprintf (", ");
+            print_expression (n->child[1]);
+            milprintf (", ");
+            print_expression (n->child[2]);
+            milprintf (", ");
+            print_expression (n->child[3]);
+            milprintf (", ");
+            print_expression (n->child[4]);
+            milprintf (", ");
+            print_expression (n->child[5]);
+            milprintf (", ");
+            print_expression (n->child[6]);
+            milprintf (", ");
+            print_expression (n->child[7]);
+            milprintf (")");
+            break;
         case m_tj_add_fti_tape:
             milprintf ("%s (", ID[n->kind]);
             print_expression (n->child[0]);

U mil.c
Index: mil.c
===================================================================
RCS file: /cvsroot/monetdb/pathfinder/compiler/mil/mil.c,v
retrieving revision 1.80
retrieving revision 1.81
diff -u -d -r1.80 -r1.81
--- mil.c       10 Mar 2009 12:20:43 -0000      1.80
+++ mil.c       1 Apr 2009 13:25:18 -0000       1.81
@@ -2073,6 +2073,13 @@
     return wire7 (m_tj_query_handler, a, b, c, d, e, f, g);
 }
 
+/** pftijah main ftfun handler */
+PFmil_t *
+PFmil_tj_ftfun_handler (const PFmil_t *a, const PFmil_t *b, const PFmil_t *c, 
const PFmil_t *d, const PFmil_t *e, const PFmil_t *f, const PFmil_t *g, const 
PFmil_t *h)
+{
+    return wire8 (m_tj_ftfun_handler, a, b, c, d, e, f, g, h);
+}
+
 PFmil_t *
 PFmil_tj_add_fti_tape (const PFmil_t *a, const PFmil_t *b, const PFmil_t *c, 
const PFmil_t *d, const PFmil_t *e, const PFmil_t *f)
 {

U milgen.brg
Index: milgen.brg
===================================================================
RCS file: /cvsroot/monetdb/pathfinder/compiler/mil/milgen.brg,v
retrieving revision 1.211
retrieving revision 1.212
diff -u -d -r1.211 -r1.212
--- milgen.brg  18 Mar 2009 09:45:00 -0000      1.211
+++ milgen.brg  1 Apr 2009 13:25:19 -0000       1.212
@@ -10164,6 +10164,72 @@
                    
pft_unpack_pfop(p,tjqres,fc_iter_a,fc_item_a,restype,fc_item_a,fc_pos_a);
 
                    unpin(tjqres,1);
+               } else if ( PFT_FUN_FTFUN(fcname) ) {
+                   int fcci = 0;
+                   PFalg_simple_type_t restype;
+                   /* function returns nodes OR booleans */
+                   int returnNodes = PTF_QUERY_NODES(fcname);
+
+                   mvar_t *retNodes    = new_var (1);
+                   if ( returnNodes ) {
+                       execute (assgn(var(retNodes->name),lit_bit(false)));
+                       restype = aat_pre;
+                   } else {
+                       execute (assgn(var(retNodes->name),lit_bit(true)));
+                       restype = aat_int;
+                   }
+
+                   mvar_t *pfop_sn, *pfop_terms, *pfop_opt, *pfop_ign;
+
+                   if ( PTF_FTFUN_STARTNODES(fcname) ) {
+                       pfop_sn    = pft_create_pfop(*(PFpa_op_t **)PFarray_at 
(fun_params,fcci),aat_pre,PFT_NOT_ORDERED);
+                       fcci++;
+                   } else {
+                       pfop_sn    = 
pft_create_pfop(NULL,aat_pre,PFT_NOT_ORDERED);
+                   }
+
+                   pfop_terms = pft_create_pfop(*(PFpa_op_t **)PFarray_at 
(fun_params,fcci),aat_str,PFT_NOT_ORDERED);
+                   fcci++;
+
+                   if ( PTF_FTFUN_OPTIONS(fcname) ) {
+                       pfop_opt   = pft_create_pfop(*(PFpa_op_t **)PFarray_at 
(fun_params,fcci),aat_pre,PFT_NOT_ORDERED);
+                       fcci++;
+                   } else {
+                       pfop_opt   = 
pft_create_pfop(NULL,aat_pre,PFT_NOT_ORDERED);
+                   }
+
+                   if ( PTF_FTFUN_IGNORES(fcname) ) {
+                       pfop_ign   = pft_create_pfop(*(PFpa_op_t **)PFarray_at 
(fun_params,fcci),aat_pre,PFT_NOT_ORDERED);
+                       fcci++;
+                   } else {
+                       pfop_ign   = 
pft_create_pfop(NULL,aat_pre,PFT_NOT_ORDERED);
+                   }
+
+                   mvar_t *tjqres = new_var(1);
+                   execute(
+                       assgn(var(tjqres->name),
+                           tj_ftfun_handler(
+                               var(retNodes->name),
+                               var(pfop_sn->name),
+                               var(pfop_terms->name),
+                               var(pfop_opt->name),
+                               var(pfop_ign->name),
+                               var(fc_loop->name),
+                               var (PF_MIL_VAR_WS),
+                               var (PF_MIL_TIJAH_SCORE_DB)
+                           )
+                       )
+                   );
+                   unpin(retNodes,1);
+
+                   unpin(pfop_sn,1);
+                   unpin(pfop_terms,1);
+                   unpin(pfop_opt,1);
+                   unpin(pfop_ign,1);
+
+                   
pft_unpack_pfop(p,tjqres,fc_iter_a,fc_item_a,restype,fc_item_a,fc_pos_a);
+
+                   unpin(tjqres,1);
                } else if ( PFT_FUN_MANAGE(fcname) ) {
                    int fcci = 0;
 


------------------------------------------------------------------------------
_______________________________________________
Monetdb-pf-checkins mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/monetdb-pf-checkins

Reply via email to