public static void InitFusion( ) { MainVM = new ManagedHost( ); ScriptSource init_ide_src = new ScriptSource("data/script/ide/ide_init.vs"); Compiler comp = new Compiler(); CompiledSource init_ide_compiled = comp.Compile(init_ide_src); MainVM.SetEntry(init_ide_compiled.EntryPoint); void InitIDE(int w, int h, int fs) { App = new FusionIDE(w, h, fs == 1); InitState = new States.CodeScreen(); App.Run(); } CFuncLink initIDE = new CFuncLink { Link = (t) => { InitIDE(t[0], t[1], t[2]); return(null); } }; MainVM.AddCFunc("InitIDE", initIDE); CodeScope scope = MainVM.RunEntry( ); }
private void _WriteOneClassOrStruct(Type type, ExportFlags flags) { var classOrStruct = type.IsClass ? "class" : "struct"; var sealedClass = type.IsClass && EditorMetaCommon.IsFinalType(type) ? "sealed " : string.Empty; _writer.WriteLine("[Serializable]"); _writer.WriteLine("{0}partial {1} {2} : {3}", sealedClass, classOrStruct, type.Name, typeof(ILoadable).Name); using (MacroScope.CreateEditorScope(_writer.BaseWriter)) { _writer.WriteLine(", {0}", typeof(ISavable).Name); } using (CodeScope.CreateCSharpScope(_writer)) { var nestedTypes = type.GetNestedTypes(BindingFlags.Instance | BindingFlags.Public); _WriteNestedTypes(nestedTypes, flags); var members = new List <MemberBase>(); _CollectSerializableMembers(type, members); _WriteSaveMethod(type, members); _WriteLoadMethod(type, members); _WriteToStringMethod(type, members); _WriteGetMetadataTypeMethod(type); } }
private void _WriteSaveMethod(Type type, List <MemberBase> members) { if (_rootTypes.Contains(type)) { _writer.WriteLine("[Export(ExportFlags.AutoCode)]"); _writer.WriteLine("public virtual void Save (IOctetsWriter writer)"); using (CodeScope.CreateCSharpScope(_writer)) { _writer.WriteLine("throw new NotImplementedException(\"This method should be override~\");"); } } else { using (MacroScope.CreateEditorScope(_writer.BaseWriter)) { _writer.WriteLine("[Export(ExportFlags.AutoCode)]"); var overrideText = _rootTypes.Contains(EditorMetaCommon.GetRootMetadata(type)) ? "override " : string.Empty; _writer.WriteLine("public {0}void Save (IOctetsWriter writer)", overrideText); using (CodeScope.Create(_writer, "{\n", "}\n")) { for (int index = 0; index < members.Count; ++index) { var member = members[index]; member.WriteSave(_writer); } } } } }
private void _WriteGetMetadataTypeMethod(Type type) { _writer.WriteLine("[Export(ExportFlags.AutoCode)]"); if (_rootTypes.Contains(type)) { _writer.WriteLine("public virtual ushort GetMetadataType ()"); using (CodeScope.CreateCSharpScope(_writer)) { _writer.WriteLine("throw new NotImplementedException(\"This method should be override~\");"); } } else { var overrideText = _rootTypes.Contains(EditorMetaCommon.GetRootMetadata(type)) ? "override " : string.Empty; _writer.WriteLine("public {0}ushort GetMetadataType ()", overrideText); using (CodeScope.CreateCSharpScope(_writer)) { //var typeName = EditorMetaCommon.GetMetaTypeName(type); //_writer.WriteLine("return (ushort) MetadataType.{0};", typeName); _writer.WriteLine("throw new NotImplementedException(\"This method should be override~\");"); } } }
public override void WriteNotEqualsReturn(CodeWriter writer) { writer.WriteLine("if ((!string.IsNullOrEmpty({0}) || !string.IsNullOrEmpty(that.{0})) && ({0} != that.{0}))", _name); using (CodeScope.CreateCSharpScope(writer)) { writer.WriteLine("return false;"); } }
private void PopupTypes(string reference, CodeScope scope) { this.Callback.TextEditorBox.UIExtensions.PopupItems( CreatePopupTypes(scope), null, null, searchingKey: reference); }
public override void WriteNotEqualsReturn(CodeWriter writer) { writer.WriteLine("if ({0} != that.{0})", _name); using (CodeScope.CreateCSharpScope(writer)) { writer.WriteLine("return false;"); } }
private void PopupGenericParameters(string reference, CodeScope scope) { this.Callback.TextEditorBox.UIExtensions.PopupItems( PopupGenericParameters(scope), null, null, searchingKey: reference); }
private void PopupConcepts(CodeScope scope) { this.Callback.TextEditorBox.UIExtensions.PopupItems( CreatePopupConcepts(scope), null, null, forceClosingPrevious: true); }
public override void WriteNotEqualsReturn(CodeWriter writer) { writer.WriteLine("if (!Unique.ColorTools.IsEqual({0}, that.{0}))", _name); using (CodeScope.CreateCSharpScope(writer)) { writer.WriteLine("return false;"); } }
private void PopupInstanceFunctions(string reference, string conceptName, CodeScope scope) { this.Callback.TextEditorBox.UIExtensions.PopupItems( CreatePopupInstanceFunctions(conceptName, scope), null, null, searchingKey: reference, forceClosingPrevious: true); }
private void PopupExpressionsAndTypesAndStatements(string reference, CodeScope scope) { this.Callback.TextEditorBox.UIExtensions.PopupItems( CreatePopupExpressions(scope) .Concat(CreatePopupStatementKeywords()) .Concat(CreatePopupTypes(scope)), this.Snippets, Images.Snippet, searchingKey: reference); }
public CodeScope(CodeScope parent, int scopeTokenStartPos) { #if DEBUG if (parent == null) { throw new ArgumentNullException("parent"); } #endif _parent = parent; _startPos = scopeTokenStartPos; }
private void _WriteToStringMethod(Type type, List <MemberBase> members) { // _writer.WriteLine("[Export(ExportFlags.AutoCode)]"); _writer.WriteLine("public override string ToString ()"); using (CodeScope.Create(_writer, "{\n", "}\n")) { var memberCount = members.Count; if (memberCount > 0) { _sbText.Append("return string.Format(\"["); _sbText.Append(type.Name); _sbText.Append(":ToString()] "); for (int index = 0; index < memberCount; ++index) { _sbText.Append(members[index].GetMemberName()); _sbText.Append("={"); _sbText.Append(index); _sbText.Append("}"); if (index < memberCount - 1) { _sbText.Append(", "); } } _sbText.Append("\", "); for (int index = 0; index < memberCount; ++index) { _sbText.Append(members[index].GetMemberName()); if (index < memberCount - 1) { _sbText.Append(", "); } } _sbText.Append(");"); } else { _sbText.Append("return \"["); _sbText.Append(type.Name); _sbText.Append(":ToString()]\";"); } _writer.WriteLine(_sbText.ToString()); _sbText.Length = 0; } }
private bool TryReadFunctionArgument(CodeScope scope, bool createDefinitions, List <ArgumentDescriptor> args, List <Definition> newDefList) { var dataType = DataType.TryParse(new DataType.ParseArgs { Code = _code, DataTypeCallback = GlobalDataTypeCallback, VariableCallback = GlobalVariableCallback }); if (dataType == null) { return(false); } PassByMethod passByMethod = PassByMethod.Value; if (_code.ReadExact("&")) // Optional reference { if (_code.ReadExact("+")) // Optional &+ { passByMethod = PassByMethod.ReferencePlus; } else { passByMethod = PassByMethod.Reference; } } string name = null; if (_code.ReadWord()) { name = _code.Text; } args.Add(new ArgumentDescriptor(name, dataType, passByMethod)); if (name != null && createDefinitions) // Optional var name { var arrayLength = TryReadArrayDecl(); var localPos = _source.GetFilePosition(_code.TokenStartPostion); var def = new VariableDefinition(_code.Text, localPos, dataType, true, arrayLength, VariableType.Argument); scope.AddDefinition(def); if (!_visible || localPos.PrimaryFile) { newDefList.Add(def); } } return(true); }
public override void WriteSave(CodeWriter writer) { writer.WriteLine("int {0}Count = null != {0} ? {0}.Count : 0 ;", _name); writer.WriteLine("writer.Write ({0}Count);", _name); writer.WriteLine("for (int index= 0; index < {0}Count; ++index)", _name); using (CodeScope.CreateCSharpScope(writer)) { writer.WriteLine("var item = {0}[index];", _name); var elementType = _type.GetGenericArguments()[0]; _WriteSaveType(writer, elementType, "item"); } }
public override void WriteSave(CodeWriter writer) { writer.WriteLine("int {0}Length = null != {0} ? {0}.Length : 0 ;", _name); writer.WriteLine("writer.Write ({0}Length);", _name); writer.WriteLine("for (int i{1}= 0; i{1} < {0}Length; ++i{1})", _name, writer.Indent); using (CodeScope.CreateCSharpScope(writer)) { writer.WriteLine("var item{1} = {0}[i{1}];", _name, writer.Indent - 1); var elementType = _type.GetElementType(); _WriteSaveType(writer, elementType, string.Format("item{0}", writer.Indent - 1)); } }
private bool TryReadVariableDeclaration(CodeScope scope, List <Definition> newDefList) { var dataType = DataType.TryParse(new DataType.ParseArgs { Code = _code, DataTypeCallback = GlobalDataTypeCallback, VariableCallback = GlobalVariableCallback }); if (dataType == null) { return(false); } var gotVars = false; while (!_code.EndOfFile) { if (!_code.ReadWord()) { break; } var varName = _code.Text; var localPos = _source.GetFilePosition(_code.TokenStartPostion); var arrayLength = TryReadArrayDecl(); var def = new VariableDefinition(varName, localPos, dataType, false, arrayLength, VariableType.Local); scope.AddDefinition(def); if (!_visible || localPos.PrimaryFile) { newDefList.Add(def); } gotVars = true; if (_code.ReadExact(',')) { continue; } if (_code.ReadExact(';')) { break; } break; } return(gotVars); }
public override void WriteLoad(CodeWriter writer) { Type elementType = _type.GetGenericArguments() [0]; string elementTypeName = EditorMetaCommon.GetNestedClassName(elementType); writer.WriteLine("int {0}Count = reader.ReadInt32();", _name); writer.WriteLine("if (null == {0}) {{ {0} = new List<{1}>({0}Count); }} else {{ {0}.Clear(); }}", _name, elementTypeName); writer.WriteLine("for (int index= 0; index < {0}Count; ++index)", _name); using (CodeScope.CreateCSharpScope(writer)) { writer.WriteLine("{0}.Add (default({1}));", _name, elementTypeName); _WriteLoadType(writer, elementType, _name + "[index]"); } }
public override void WriteLoad(CodeWriter writer) { if (_type.IsClass) { writer.WriteLine(); writer.WriteLine("if (reader.ReadBoolean())"); using (CodeScope.CreateCSharpScope(writer)) { _WriteLoadMetadata(writer); } } else if (_type.IsValueType) { writer.WriteLine("{0}.Load(reader);", _name); } }
public override void WriteSave(CodeWriter writer) { if (_type.IsClass) { writer.WriteLine(); writer.WriteLine("writer.Write(null != {0});", _name); writer.WriteLine("if (null != {0})", _name); using (CodeScope.CreateCSharpScope(writer)) { _WriteSaveMetadata(writer); } } else if (_type.IsValueType) { writer.WriteLine("{0}.Save(writer);", _name); } }
public override NativeXAbstractType Unwrap(List <string> unwrappedReferences) { CodeScope scope = this.Scope; string name = this.ReferenceName; while (true) { if (scope == null || name == null || unwrappedReferences.Contains(name)) { break; } unwrappedReferences.Add(name); CodeNode node = this.Scope.Find(name); NativeXTypeRenameDeclaration typeRenameDeclaration = node as NativeXTypeRenameDeclaration; if (typeRenameDeclaration != null) { NativeXAbstractReferenceType reference = typeRenameDeclaration.AbstractType as NativeXAbstractReferenceType; if (reference != null) { scope = reference.Scope; name = reference.ReferenceName; } } NativeXDeclaration declaration = node as NativeXDeclaration; if (declaration != null) { NativeXAbstractType type = declaration.AbstractType; return(type == null ? null : type.Unwrap(unwrappedReferences)); } NativeXGenericParameter genericParameter = node as NativeXGenericParameter; if (genericParameter != null && genericParameter.ParameterName != null) { return new NativeXAbstractGenericParameterType() { ParameterName = genericParameter.ParameterName } } ; } return(base.Unwrap(unwrappedReferences)); } }
protected IEnumerable <TextEditorPopupItem> PopupGenericParameters(CodeScope scope) { Bitmap parameterImage = null; List <TextEditorPopupItem> items = new List <TextEditorPopupItem>(); foreach (CodeNode node in scope.FindAllDistinct()) { NativeXGenericParameter genparam = node as NativeXGenericParameter; if (genparam != null && genparam.ParameterName != null) { items.Add(new TextEditorPopupItem() { Text = genparam.ParameterName, Image = (parameterImage ?? (parameterImage = Images.Parameter)) }); } } return(items); }
protected IEnumerable <TextEditorPopupItem> CreatePopupConcepts(CodeScope scope) { Bitmap templateImage = null; List <TextEditorPopupItem> items = new List <TextEditorPopupItem>(); foreach (CodeNode node in scope.FindAllDistinct()) { NativeXConceptDeclaration conceptdecl = node as NativeXConceptDeclaration; if (conceptdecl != null && conceptdecl.Name != null) { items.Add(new TextEditorPopupItem() { Text = conceptdecl.Name, Image = (templateImage ?? (templateImage = Images.Template)) }); } } return(items); }
public override void WriteNotEqualsReturn(CodeWriter writer) { if (_type.IsValueType) { writer.WriteLine("if (!{0}.EqualsTo (that.{0}))", _name); using (CodeScope.CreateCSharpScope(writer)) { writer.WriteLine("return false;"); } } else { writer.WriteLine("if (null == {0} && null != that.{0} || null != {0} && !{0}.EqualsTo (that.{0}))", _name); using (CodeScope.CreateCSharpScope(writer)) { writer.WriteLine("return false;"); } } }
public override void WriteNotEqualsReturn(CodeWriter writer) { writer.WriteLine("int {0}Length1 = null != {0} ? {0}.Length : 0 ;", _name); writer.WriteLine("int {0}Length2 = null != that.{0} ? that.{0}.Length : 0 ;", _name); writer.WriteLine("if ({0}Length1 != {0}Length2)", _name); using (CodeScope.CreateCSharpScope(writer)) { writer.WriteLine("return false;"); } writer.WriteLine("for (int i{1}= 0; i{1} < {0}Length1; ++i{1})", _name, writer.Indent); using (CodeScope.CreateCSharpScope(writer)) { var elementType = _type.GetElementType(); var itemName = string.Format("{0}[i{1}]", _name, writer.Indent - 1); _WriteNotEqualsReturn(writer, elementType, itemName); } }
private void _WriteEqualsToMethod(Type type, List <MemberBase> members) { _writer.WriteLine("[Export(ExportFlags.AutoCode)]"); if (_rootTypes.Contains(type)) { _writer.WriteLine("public virtual bool EqualsTo (IMetadata other)"); using (CodeScope.CreateCSharpScope(_writer)) { _writer.WriteLine("throw new NotImplementedException(\"This method should be override~\");"); } } else { var overrideText = _rootTypes.Contains(EditorMetaCommon.GetRootMetadata(type)) ? "override " : string.Empty; _writer.WriteLine("public {0}bool EqualsTo (IMetadata other)", overrideText); using (CodeScope.CreateCSharpScope(_writer)) { var typeName = EditorMetaCommon.GetNestedClassName(type); _writer.WriteLine("var that = ({0}) other;", typeName); if (type.IsClass) { _writer.WriteLine("if (null == that)"); using (CodeScope.CreateCSharpScope(_writer)) { _writer.WriteLine("return false;"); } } var memberCount = members.Count; for (int index = 0; index < memberCount; ++index) { var member = members[index]; member.WriteNotEqualsReturn(_writer); } _writer.WriteLine("return true;"); } } }
public override void WriteLoad(CodeWriter writer) { string childtype = EditorMetaCommon.GetNestedClassName(_type.GetElementType()).Replace("+", "."); string prefix = childtype; string postfix = string.Empty; int first = childtype.IndexOf("[", StringComparison.Ordinal); if (first >= 0) { prefix = childtype.Substring(0, first); postfix = childtype.Substring(first); } writer.WriteLine("{0} = new {1}[reader.ReadInt32()]{2};", _name, prefix, postfix); writer.WriteLine("for (int i{1} = 0; i{1} < {0}.Length; i{1}++)", _name, writer.Indent); using (CodeScope.CreateCSharpScope(writer)) { _WriteLoadType(writer, _type.GetElementType(), _name + string.Format("[i{0}]", writer.Indent - 1)); } }
private void _WriterMetadataManagerConfigs(List <string> configs) { using (_writer = new CodeWriter(_GetConfigManagerPath())) { _WriteFileHead(); using (CodeScope.Create(_writer, "{\n", "}")) { _writer.WriteLine("public partial class ConfigManager"); using (CodeScope.CreateCSharpScope(_writer)) { _writer.WriteLine("partial void _LoadConfigs()"); using (CodeScope.CreateCSharpScope(_writer)) { foreach (var config in configs) { _writer.WriteLine("_AddLoaderConfig<{0}>();", config); } } } } } }
private void _WriteMetadataManagerTemplates(List <string> templates) { using (_writer = new CodeWriter(_GetTemplateManagerPath())) { _WriteFileHead(); using (CodeScope.Create(_writer, "{\n", "}")) { _writer.WriteLine("public partial class TemplateManager"); using (CodeScope.CreateCSharpScope(_writer)) { _writer.WriteLine("partial void _LoadTemplates()"); using (CodeScope.CreateCSharpScope(_writer)) { foreach (var template in templates) { _writer.WriteLine("_AddLoaderTemplate<{0}>();", template); } } } } } }
public CodeMapEventArgs(CodeScope address) { CodeAddress = address; }
public Error(Exception exp, StackFrame[] frames = null, bool snapshot = true) { #region HResult [Exception Type Code] HResult = exp.HResult; #endregion #region Error Line Column LineColumn = new CodeScope(exp); #endregion #region Method Method = (exp.TargetSite != null && exp.TargetSite.ReflectedType != null) ? exp.TargetSite.ReflectedType.FullName + "." + exp.TargetSite : ""; #endregion #region Id = HashCode Id = GetHashCode(); #endregion #region Screen Capture // First initialize Snapshot of Error, because that's speed is important! if (!CacheController.SdfManager.ErrorIds.ContainsKey(Id) && snapshot) { Snapshot = ScreenCapture.Capture(); if (Snapshot != null && ErrorHandlingOption.ResizeSnapshots) Snapshot = Snapshot.ResizeImage(ScreenCapture.ReSizeAspectRatio.Width, ScreenCapture.ReSizeAspectRatio.Height); } #endregion #region StackTrace StackTrace = CodeScope.StackFramesToString(frames) ?? (exp.InnerException != null ? exp.InnerException.StackTrace ?? "" : exp.StackTrace ?? ""); #endregion #region Error Date Time ErrorDateTime = DateTime.Now; #endregion #region Server Date Time ServerDateTime = ErrorHandlingOption.FetchServerDateTime ? ServerTransmitter.SqlServerManager.GetServerDateTime() : DateTime.Now; #endregion #region Current Culture CurrentCulture = String.Format("{0} ({1})", InputLanguage.CurrentInputLanguage.Culture.NativeName, InputLanguage.CurrentInputLanguage.Culture.Name); #endregion #region Message Message = exp.InnerException != null ? exp.InnerException.Message : exp.Message; #endregion #region Member Type MemberType = (exp.TargetSite != null) ? exp.TargetSite.MemberType.ToString() : ""; #endregion #region Module Name ModuleName = (exp.TargetSite != null) ? exp.TargetSite.Module.Name : ""; #endregion #region User [Domain.UserName] User = Environment.UserDomainName + "\\" + Environment.UserName; #endregion #region Host [Machine Name] Host = Environment.MachineName; #endregion #region Operation System Information OS = new OperationSystemInfo(true).ToString(); #endregion #region Application Name [Name v#####] AppName = Connection.GetRunningAppNameVersion(); #endregion #region Process Name String List Processes = new CurrentProcesses().ToString(); #endregion #region IsHandled default value is true IsHandled = true; #endregion #region Current Static Valid IPv4 Address IPv4Address = NetworkHelper.GetIpAddress(); #endregion #region Network Physical Address [MAC HEX] MacAddress = NetworkHelper.GetMacAddress(); #endregion #region Common Language Runtime Version [Major.Minor.Build.Revison] ClrVersion = Environment.Version.ToString(); #endregion #region Error Type ErrorType = exp.GetType().Name; #endregion #region Source Source = exp.Source; #endregion #region Data Data = DictionaryToXml(GetAdditionalData(exp), "ExtraProperties"); #endregion }