[svn] r7647: nemerle/trunk: macros/Data.n ncc/parsing/ParseTree.n ncc/parsing/Utility.n

nazgul svnadmin at nemerle.org
Thu May 3 00:27:18 CEST 2007


Log:
Change to FromQualifiedIdentifier

Author: nazgul
Date: Thu May  3 00:27:12 2007
New Revision: 7647

Modified:
   nemerle/trunk/macros/Data.n
   nemerle/trunk/ncc/parsing/ParseTree.n
   nemerle/trunk/ncc/parsing/Utility.n

Modified: nemerle/trunk/macros/Data.n
==============================================================================
--- nemerle/trunk/macros/Data.n	(original)
+++ nemerle/trunk/macros/Data.n	Thu May  3 00:27:12 2007
@@ -27,6 +27,7 @@
  */
 
 using Nemerle.Compiler;
+using Nemerle.Macros;
 using Nemerle.Collections;
 using System.Text.RegularExpressions;
 using System.Data;
@@ -41,7 +42,7 @@
                        Nemerle.MacroTargets.Assembly)]
   macro ConfigureConnection (connClass : string, con_str : string, name : string = "")
   {
-    def mng = Nemerle.Macros.Manager ();
+    def mng = Manager ();
     if (Helper.connections.Contains (name))
       Message.FatalError ("Connection with name `" + name + "' is already defined")
     else {
@@ -59,13 +60,13 @@
   }
 
   macro CreateConnection (connStr, con_name : string = "") {
-    <[ $(Helper.ConnectionExpr (con_name)) ($connStr) ]>
+    <[ $(Helper.ConnectionExpr (Manager (), con_name)) ($connStr) ]>
   }
   
   macro ExecuteNonQuery (query : string, conn, con_name : string = "")
   {
     def (query, tpars, pars_init) =
-      Helper.ExtractParameters (Nemerle.Macros.ImplicitCTX (), query, Helper.ParameterChar (con_name));
+      Helper.ExtractParameters (ImplicitCTX (), query, Helper.ParameterChar (con_name));
 
     // create compile-time query to check syntax and types in query
     def (mycmd, mytran) = Helper.CreateCommand (query, con_name);    
@@ -87,7 +88,7 @@
     };
 
     <[
-      using (querycmd = $(Helper.CommandExpr (con_name, query, conn))) 
+      using (querycmd = $(Helper.CommandExpr (Manager (), con_name, query, conn))) 
       {
         { .. $pars_init };
         querycmd.ExecuteNonQuery ();
@@ -98,7 +99,7 @@
   macro ExecuteScalar (query : string, conn, con_name : string = "")
   {
     def (query, tpars, pars_init) =
-      Helper.ExtractParameters (Nemerle.Macros.ImplicitCTX (), query, Helper.ParameterChar (con_name));
+      Helper.ExtractParameters (ImplicitCTX (), query, Helper.ParameterChar (con_name));
 
     // create compile-time query to check syntax and types in query
     def (mycmd, mytran) = Helper.CreateCommand (query, con_name);
@@ -115,7 +116,7 @@
       if (table.Rows.Count < 1)
         Message.FatalError ("this query doesn't return any value")
       else 
-        col_type = Util.ExprOfQid (table.Rows[0]["DataType"].ToString ());
+        col_type = Parsetree.PExpr.FromQualifiedIdentifier (Manager (), table.Rows[0]["DataType"].ToString ());
       myreader.Close ();
     }
     catch {
@@ -129,7 +130,7 @@
 
     /// final code for entire sql loop
     <[
-      using (querycmd = $(Helper.CommandExpr (con_name, query, conn)))
+      using (querycmd = $(Helper.CommandExpr (Manager (), con_name, query, conn)))
       {
         { .. $pars_init };
         (querycmd.ExecuteScalar () :> $col_type);
@@ -140,7 +141,7 @@
   macro ExecuteReader (query : string, conn, con_name : string = "")
   {
     def (query, tpars, pars_init) =
-      Helper.ExtractParameters (Nemerle.Macros.ImplicitCTX (), query, Helper.ParameterChar (con_name));
+      Helper.ExtractParameters (ImplicitCTX (), query, Helper.ParameterChar (con_name));
 
     // create compile-time query to check syntax and types in query
     def (mycmd, mytran) = Helper.CreateCommand (query, con_name);
@@ -162,7 +163,7 @@
 
     /// final code for entire sql loop
     <[
-      using (querycmd = $(Helper.CommandExpr (con_name, query, conn)))
+      using (querycmd = $(Helper.CommandExpr (Manager (), con_name, query, conn)))
       {
         { .. $pars_init };
         querycmd.ExecuteReader ();
@@ -173,7 +174,7 @@
   macro ExecuteReaderLoop (query : string, conn, body, con_name : string = "")
   {
     def (query, tpars, pars_init) =
-      Helper.ExtractParameters (Nemerle.Macros.ImplicitCTX (), query, Helper.ParameterChar (con_name));
+      Helper.ExtractParameters (ImplicitCTX (), query, Helper.ParameterChar (con_name));
 
     // list of definitions of query results inside loop body
     mutable bodyseq = [body];
@@ -194,7 +195,7 @@
         def col_type = myRow["DataType"].ToString ();
         def col_name = myRow["ColumnName"].ToString ();
         def allow_null = myRow["AllowDBNull"] :> bool;
-        def fetchexpr = Helper.GenerateFetchExpr (Nemerle.Macros.Manager (), col_type, col_num, allow_null);
+        def fetchexpr = Helper.GenerateFetchExpr (Manager (), col_type, col_num, allow_null);
           
         // create runtime variables definition according to extracted types
         bodyseq = <[ def $(col_name : usesite) = $fetchexpr ]> :: bodyseq;
@@ -214,7 +215,7 @@
 
     /// final code for entire sql loop
     <[
-      using (querycmd = $(Helper.CommandExpr (con_name, query, conn))) {
+      using (querycmd = $(Helper.CommandExpr (Manager (), con_name, query, conn))) {
         { .. $pars_init };
         def reader = querycmd.ExecuteReader ();
         while (reader.Read ()) { ..$bodyseq };
@@ -268,15 +269,15 @@
        _ = cmd.Parameters.Add (p);
     }
     
-    public ConnectionExpr (con_name : string) : Parsetree.PExpr {
+    public ConnectionExpr (mgr : ManagerClass, con_name : string) : Parsetree.PExpr {
       def connClass = connections [con_name].GetType ().FullName;
-      Util.ExprOfQid (connClass)
+      Parsetree.PExpr.FromQualifiedIdentifier (mgr, connClass)
     }
     
-    public CommandExpr (con_name : string, query : string, conn : Parsetree.PExpr) : Parsetree.PExpr {
+    public CommandExpr (mgr : ManagerClass, con_name : string, query : string, conn : Parsetree.PExpr) : Parsetree.PExpr {
       def connClass = connections [con_name].GetType ().FullName;
-      def cmdExpr = Util.ExprOfQid (connClass.Replace ("Connection", "Command"));
-      def connExpr = Util.ExprOfQid (connClass);
+      def cmdExpr = Parsetree.PExpr.FromQualifiedIdentifier (mgr, connClass.Replace ("Connection", "Command"));
+      def connExpr = Parsetree.PExpr.FromQualifiedIdentifier (mgr, connClass);
       
       <[ $cmdExpr ($(query : string), ($conn : IDbConnection) :> $connExpr) ]> 
     }
@@ -385,7 +386,7 @@
       def retTy = 
         match (mng.NameTree.LookupExactType (typeName)) {
           | Some (t) => 
-            def rawTy = <[ $(Util.ExprOfQid (typeName)) ]>;
+            def rawTy = <[ $(Parsetree.PExpr.FromQualifiedIdentifier (mng, typeName)) ]>;
             if (!allow_null || t.GetMemType ().CanBeNull) rawTy
             else <[ $rawTy ? ]>
           | None => Message.FatalError ("DB provider returned unknown type name: " + typeName);

Modified: nemerle/trunk/ncc/parsing/ParseTree.n
==============================================================================
--- nemerle/trunk/ncc/parsing/ParseTree.n	(original)
+++ nemerle/trunk/ncc/parsing/ParseTree.n	Thu May  3 00:27:12 2007
@@ -437,6 +437,19 @@
     public override ToString () : string {
       PrettyPrint.SprintExpr (None (), this);
     }
+    
+    // transforms dot-separated identifier to the parse-tree expression 
+    public static FromQualifiedIdentifier (manager : ManagerClass, qid : string) : PExpr 
+    {
+      if (string.IsNullOrEmpty (qid)) null
+      else {
+        def split = qid.Split ('.');
+        mutable expr = <[ $(Name (split [0], manager.MacroColors.UseColor, manager.MacroColors.UseContext) : name) ]>;
+        for (mutable i = 1; i < split.Length; i++)
+          expr = <[ $expr . $(Name (split [i], manager.MacroColors.UseColor, manager.MacroColors.UseContext) : name) ]>;
+        expr
+      }
+    }
   }
 
   [Record (Exclude = [typed_object])]

Modified: nemerle/trunk/ncc/parsing/Utility.n
==============================================================================
--- nemerle/trunk/ncc/parsing/Utility.n	(original)
+++ nemerle/trunk/ncc/parsing/Utility.n	Thu May  3 00:27:12 2007
@@ -108,9 +108,9 @@
       qidl_of_expr (expr)
     }
 
-    public ExprOfQid (fullname : string) : Parsetree.PExpr
+    internal ExprOfQid (fullname : string) : Parsetree.PExpr
     {
-      ExprOfList (NString.Split (fullname, array ['.']))
+      Parsetree.PExpr.FromQualifiedIdentifier (ManagerClass.Instance, fullname)
     }
 
     public ExprOfList (parts : list [string]) : Parsetree.PExpr



More information about the svn mailing list