本文整理汇总了C#中CodeWriter.Close方法的典型用法代码示例。如果您正苦于以下问题:C# CodeWriter.Close方法的具体用法?C# CodeWriter.Close怎么用?C# CodeWriter.Close使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类CodeWriter
的用法示例。
在下文中一共展示了CodeWriter.Close方法的4个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C#代码示例。
示例1: TypeGen
static void TypeGen (Type t)
{
//TODO: we only handle ordinary classes for now
/*
else if (t.IsSubclassOf (typeof (Delegate))) {
Console.WriteLine ("Ignoring delegate: " + t.Name);
return;
}
*/
cur_type = NsToC (ns) + "_" + CamelToC (t.Name);
//CurType = NsToFlat (ns) + t.Name;
CurType = CsTypeToG (t);
if (t.IsInterface)
CurTypeClass = GToGI (CurType);
else
CurTypeClass = GToGC (CurType);
//ns = t.Namespace;
string fname = NsToFlat (ns).ToLower () + t.Name.ToLower ();
C = new CodeWriter (target_dir + fname + ".c");
H = new CodeWriter (target_dir + fname + ".h");
Hindex.WriteLine ("#include <" + fname + ".h" + ">");
string H_id = "__" + NsToFlat (ns).ToUpper () + "_" + t.Name.ToUpper () + "_H__";
H.WriteLine ("#ifndef " + H_id);
H.WriteLine ("#define " + H_id);
H.WriteLine ();
H.WriteLine ("#include <glib.h>");
H.WriteLine ("#include <glib-object.h>");
foreach (string include in extincludes)
H.WriteLine ("#include <" + include + ">");
H.WriteLine ();
if (t.BaseType != null && IsRegistered (t.BaseType) && !IsExternal (t.BaseType))
H.WriteLine ("#include \"" + NsToFlat (t.BaseType.Namespace).ToLower () + t.BaseType.Name.ToLower () + ".h\"");
foreach (string ext_ns in namespaces)
H.WriteLine ("#include \"" + NsToFlat (ext_ns).ToLower () + "types.h\"");
H.WriteLine ();
H.WriteLine ("#ifdef __cplusplus");
H.WriteLine ("extern \"C\" {", false);
H.WriteLine ("#endif /* __cplusplus */");
H.WriteLine ();
C.WriteLine ("#include \"" + fname + ".h" + "\"");
Type[] ifaces;
ifaces = t.GetInterfaces ();
foreach (Type iface in ifaces) {
if (!IsRegistered (iface))
continue;
string iface_fname = NsToFlat (ns).ToLower () + iface.Name.ToLower ();
C.WriteLine ("#include \"" + iface_fname + ".h" + "\"");
}
C.WriteLine ("#include <mono/metadata/object.h>");
C.WriteLine ("#include <mono/metadata/debug-helpers.h>");
C.WriteLine ("#include <mono/metadata/appdomain.h>");
C.WriteLine ();
if (t.IsClass)
ClassGen (t);
else if (t.IsInterface)
ClassGen (t);
else if (t.IsEnum)
EnumGen (t);
H.WriteLine ();
H.WriteLine ("#ifdef __cplusplus");
H.WriteLine ("}", false);
H.WriteLine ("#endif /* __cplusplus */");
H.WriteLine ();
H.WriteLine ("#endif /* " + H_id + " */");
C.Close ();
H.Close ();
}
示例2: Generate
public static void Generate (string assembly, string target)
{
target_dir = target + Path.DirectorySeparatorChar;
if (Directory.Exists (target_dir)) {
Console.WriteLine ("Error: Target directory " + target_dir + " already exists.");
return;
}
Directory.CreateDirectory (target_dir);
Assembly a = Assembly.LoadFrom (assembly);
Console.WriteLine ();
Console.WriteLine ("References (not followed):");
foreach (AssemblyName reference in a.GetReferencedAssemblies ())
Console.WriteLine (" " + reference.Name);
Console.WriteLine ();
dllname = Path.GetFileName (assembly);
AssemblyGen (a);
//we might not want to do this in future
File.Copy (dllname, target_dir + dllname);
string soname = "lib" + NsToFlat (Path.GetFileNameWithoutExtension (assembly)).ToLower () + ".so";
//create the static makefile
StreamWriter makefile = new StreamWriter (File.Create (target_dir + "Makefile"));
StreamReader sr = new StreamReader (Assembly.GetAssembly (typeof(cilc)).GetManifestResourceStream ("res-Makefile"));
makefile.Write (sr.ReadToEnd ());
sr.Close ();
makefile.Close ();
//create makefile defs
CodeWriter makefile_defs = new CodeWriter (target_dir + "defs.mk");
makefile_defs.Indenter = "\t";
makefile_defs.WriteLine ("ASSEMBLY = " + assembly);
makefile_defs.WriteLine ("SONAME = " + soname);
makefile_defs.WriteLine (@"OBJS = $(shell ls *.c | sed -e 's/\.c/.o/')");
if (extpkgs != String.Empty) {
makefile_defs.WriteLine ("EXTRAINCLUDES = $(shell pkg-config --cflags" + extpkgs + ")");
makefile_defs.WriteLine ("EXTRALIBS = $(shell pkg-config --libs" + extpkgs + ")");
}
makefile_defs.Close ();
Console.WriteLine ();
//identify hits on types that were registered too late
foreach (string tn in registered_types) {
if (registry_hits.Contains (tn)) {
Console.WriteLine ("Warning: " + tn + " was incorrectly registered after it was needed instead of before. Consider re-ordering.");
}
}
MakeReport (registry_hits, "Type registry missed hits", 20);
Console.WriteLine ();
//TODO: this count is now wrong
Console.WriteLine (registered_types.Count + " types generated/seen in " + namespaces.Length + " namespaces; " + warnings_ignored + " types ignored");
Console.WriteLine ();
}
示例3: NamespaceGen
//.........这里部分代码省略.........
string Hindex_id = "__" + NsToFlat (ns).ToUpper () + "_H__";
Hindex.WriteLine ("#ifndef " + Hindex_id);
Hindex.WriteLine ("#define " + Hindex_id);
Hindex.WriteLine ();
string Hdecls_id = "__" + NsToFlat (ns).ToUpper () + "_DECLS_H__";
Hdecls.WriteLine ("#ifndef " + Hdecls_id);
Hdecls.WriteLine ("#define " + Hdecls_id);
Hdecls.WriteLine ();
Cindex.WriteLine ("#include <glib.h>");
Cindex.WriteLine ("#include <glib-object.h>");
Cindex.WriteLine ("#include <mono/jit/jit.h>");
Cindex.WriteLine ();
Cindex.WriteLine ("#include <mono/metadata/object.h>");
Cindex.WriteLine ("#include <mono/metadata/debug-helpers.h>");
Cindex.WriteLine ("#include <mono/metadata/appdomain.h>");
Cindex.WriteLine ();
Cindex.WriteLine ("#ifdef CILC_BUNDLE");
Cindex.WriteLine ("#include \"bundle.h\"");
Cindex.WriteLine ("#endif");
Cindex.WriteLine ();
Cindex.WriteLine ("MonoDomain *" + NsToC (ns) + "_get_mono_domain (void)");
Cindex.WriteLine ("{");
Cindex.WriteLine ("static MonoDomain *domain = NULL;");
Cindex.WriteLine ("if (domain != NULL) return domain;");
Cindex.WriteLine ("mono_config_parse (NULL);");
Cindex.WriteLine ("domain = mono_jit_init (\"cilc\");");
Cindex.WriteLine ();
Cindex.WriteLine ("#ifdef CILC_BUNDLE");
Cindex.WriteLine ("mono_register_bundled_assemblies (bundled);");
Cindex.WriteLine ("#endif");
Cindex.WriteLine ();
Cindex.WriteLine ("return domain;");
Cindex.WriteLine ("}");
Cindex.WriteLine ();
Cindex.WriteLine ("MonoAssembly *" + NsToC (ns) + "_get_mono_assembly (void)");
Cindex.WriteLine ("{");
Cindex.WriteLine ("static MonoAssembly *assembly = NULL;");
Cindex.WriteLine ("if (assembly != NULL) return assembly;");
Cindex.WriteLine ("assembly = mono_domain_assembly_open (" + NsToC (ns) + "_get_mono_domain (), \"" + dllname + "\");");
Cindex.WriteLine ();
Cindex.WriteLine ("return assembly;");
Cindex.WriteLine ("}");
Cindex.WriteLine ();
Cindex.WriteLine ("MonoObject *" + NsToC (ns) + "_cilc_glib_gobject_get_mobject (GObject *_handle)");
Cindex.WriteLine ("{");
//FIXME: instantiate monobject if it doesn't exist
Cindex.WriteLine ("return g_object_get_data (G_OBJECT (" + "_handle" + "), \"mono-object\");");
Cindex.WriteLine ("}");
Cindex.WriteLine ("gpointer " + NsToC (ns) + "_cilc_glib_mobject_get_gobject (MonoObject *_mono_object)");
Cindex.WriteLine ("{");
Cindex.WriteLine ("static MonoAssembly *_mono_assembly = NULL;");
Cindex.WriteLine ("static MonoMethod *_mono_method = NULL;");
Cindex.WriteLine ("static MonoClass *_mono_class = NULL;");
Cindex.WriteLine ("gpointer *retval;");
Cindex.WriteLine ();
Cindex.WriteLine ("if (_mono_assembly == NULL) {");
Cindex.WriteLine ("_mono_assembly = mono_domain_assembly_open (" + NsToC (ns) + "_get_mono_domain (), \"" + "glib-sharp" + "\");");
Cindex.WriteLine ("}");
Cindex.WriteLine ("if (_mono_class == NULL) {");
Cindex.WriteLine ("_mono_class = (MonoClass*) mono_class_from_name ((MonoImage*) mono_assembly_get_image (_mono_assembly), \"GLib\", \"Object\");");
Cindex.WriteLine ("}");
Cindex.WriteLine ("if (_mono_method == NULL) {");
Cindex.WriteLine ("MonoMethodDesc *_mono_method_desc = mono_method_desc_new (\":get_Handle()\", FALSE);");
Cindex.WriteLine ("_mono_method = mono_method_desc_search_in_class (_mono_method_desc, _mono_class);");
Cindex.WriteLine ("}");
Cindex.WriteLine ();
Cindex.WriteLine ("retval = (gpointer *) mono_object_unbox (mono_runtime_invoke (_mono_method, _mono_object, NULL, NULL));");
Cindex.WriteLine ("return (gpointer ) *retval;");
Cindex.WriteLine ("}");
Cindex.WriteLine ();
Console.Write ("Generating sources in " + ns);
foreach (Type t in types) {
TypeGen (t);
Console.Write (".");
}
Console.WriteLine ();
Hindex.WriteLine ();
Hindex.WriteLine ("#endif /* " + Hindex_id + " */");
Hdecls.WriteLine ();
Hdecls.WriteLine ("#endif /* " + Hdecls_id + " */");
Cindex.Close ();
Hindex.Close ();
Hdecls.Close ();
}
示例4: Generate
public static void Generate (string fname, string name)
{
StreamReader sr = new StreamReader (fname);
XmlSerializer sz = new XmlSerializer (typeof (xcb));
xcb xcb = (xcb)sz.Deserialize (sr);
extName = xcb.extensionxname == null ? "" : xcb.extensionxname;
isExtension = extName != "";
cw = new CodeWriter (name + ".cs");
cwt = new CodeWriter (name + "Types.cs");
cwi = new CodeWriter (name + "Iface.cs");
cw.WriteLine ("using System;", cwt, cwi);
cw.WriteLine ("using System.Collections;", cwt);
cw.WriteLine ("using System.Collections.Generic;", cwt);
cw.WriteLine ("using System.Runtime.InteropServices;", cwt);
cw.WriteLine ("using Mono.Unix;", cwt);
cw.WriteLine ("using Xnb.Protocol." + "Xnb" + ";", cwt);
cw.WriteLine ("using Xnb.Protocol." + "XProto" + ";", cwt);
cw.WriteLine ("", cwt, cwi);
//cw.WriteLine ("namespace Xnb", cwt);
cw.WriteLine ("namespace Xnb");
cwt.WriteLine ("namespace Xnb.Protocol." + name);
cw.WriteLine ("{", cwt);
cw.WriteLine ("using Protocol." + name + ";");
cw.WriteLine ("public class " + name + " : Extension");
cwi.WriteLine ("public interface I" + name);
cw.WriteLine ("{", cwi);
cw.WriteLine ("public override string XName");
cw.WriteLine ("{");
cw.WriteLine ("get {");
cw.WriteLine ("return \"" + extName + "\";");
cw.WriteLine ("}");
cw.WriteLine ("}");
cw.WriteLine ();
cwt.WriteLine ("#pragma warning disable 0169, 0414");
foreach (object o in xcb.Items) {
if (o == null)
continue;
else if (o is @xidtype)
GenXidType (o as @xidtype);
else if (o is @errorcopy)
GenErrorCopy (o as @errorcopy);
else if (o is @eventcopy)
GenEventCopy (o as @eventcopy);
else if (o is @struct)
GenStruct (o as @struct);
else if (o is @union)
GenUnion (o as @union);
else if (o is @enum)
GenEnum (o as @enum);
else if (o is @event)
GenEvent (o as @event, name);
else if (o is @request) {
GenRequest (o as @request, name);
GenFunction (o as @request, name);
} else if (o is @error)
GenError (o as @error, name);
}
cwt.WriteLine ("#pragma warning restore 0169, 0414");
cwi.WriteLine ("}");
cw.WriteLine ("}");
cw.WriteLine ("}", cwt);
cw.Close ();
cwt.Close ();
cwi.Close ();
}