[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