本文整理汇总了C#中ASCompletion.Model.ClassModel类的典型用法代码示例。如果您正苦于以下问题:C# ClassModel类的具体用法?C# ClassModel怎么用?C# ClassModel使用的例子?那么恭喜您, 这里精选的类代码示例或许可以为您提供帮助。
ClassModel类属于ASCompletion.Model命名空间,在下文中一共展示了ClassModel类的20个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于我们的系统推荐出更棒的C#代码示例。
示例1: ImportTreeNode
public ImportTreeNode(ClassModel importModel, int imageIndex, bool showQualifiedClassNames)
: base(importModel, imageIndex, false)
{
Text = importModel.Name;
Tag = "class";
Label = showQualifiedClassNames ? importModel.QualifiedName : importModel.Name;
}
开发者ID:Neverbirth,项目名称:fd-navigationbar,代码行数:7,代码来源:ImportTreeNode.cs
示例2: InheritedClassTreeNode
public InheritedClassTreeNode(ClassModel classModel, int imageIndex, bool showQualifiedClassNames)
: base(classModel, classModel, imageIndex, false)
{
Text = classModel.Name;
Tag = "class";
Label = showQualifiedClassNames ? classModel.QualifiedName : classModel.Name;
}
开发者ID:Neverbirth,项目名称:fd-navigationbar,代码行数:7,代码来源:InheritedClassTreeNode.cs
示例3: RenameMember
static void RenameMember(ClassModel inClass, string name, string newName, bool outputResults)
{
MemberModel m = inClass.Members.Items.FirstOrDefault(it => it.Name == name);
if (m == null) return;
ASResult result = new ASResult();
ASComplete.FindMember(name, inClass, result, FlagType.Dynamic | FlagType.Function, 0);
if (result.Member == null) return;
queue.Add(new Rename(result, outputResults, newName));
}
开发者ID:JoeRobich,项目名称:flashdevelop,代码行数:9,代码来源:RenamingHelper.cs
示例4: ReadMethod
private MemberModel ReadMethod(JsonReader reader, ClassModel cClass)
{
MemberModel member = new MemberModel();
member.Flags = FlagType.Function;
string prop = null;
while (reader.Read())
{
if (reader.Token == JsonToken.ObjectEnd) break;
if (reader.Token == JsonToken.PropertyName) prop = reader.Value.ToString();
else if (reader.Token == JsonToken.String)
{
string val = reader.Value.ToString();
switch (prop)
{
case "name":
if (!val.StartsWith("__op_")) {
member.Name = val;
cClass.Members.Add(member);
}
break;
case "returntype": if (member.Type == null) member.Type = CleanType(val); break;
case "docstring": member.Comments = ExtractDoc(val); break;
}
}
else if (reader.Token == JsonToken.ArrayStart)
{
switch (prop)
{
case "methodattributes":
ReadAttributes(reader, member);
if ((member.Flags & FlagType.Static) == 0) member.Flags |= FlagType.Dynamic;
break;
case "parameters": ReadParameters(reader, member); break;
case "metainfo": ReadMetas(reader, member); break;
default: reader.SkipArray(); break;
}
}
else if (reader.Token == JsonToken.ObjectStart)
{
switch (prop)
{
case "templatetypes": ReadTemplateTypes(reader, member); break;
default: reader.SkipObject(); break;
}
}
}
return member;
}
开发者ID:Neverbirth,项目名称:flashdevelop,代码行数:49,代码来源:LibParser.cs
示例5: ReadInterfaces
private void ReadInterfaces(JsonReader reader, ClassModel cClass)
{
while (reader.Read())
{
if (reader.Token == JsonToken.ArrayEnd) break;
if (reader.Token == JsonToken.String)
{
string type = reader.Value.ToString();
if (cClass.Implements == null) cClass.Implements = new List<string>();
cClass.Implements.Add(type);
}
}
}
开发者ID:Neverbirth,项目名称:flashdevelop,代码行数:13,代码来源:LibParser.cs
示例6: GenerateJob
static public void GenerateJob(GeneratorJobType job, MemberModel member, ClassModel inClass, string itemLabel, Object data)
{
ScintillaNet.ScintillaControl Sci = ASContext.CurSciControl;
lookupPosition = Sci.CurrentPos;
int position;
MemberModel latest = null;
bool detach = true;
switch (job)
{
case GeneratorJobType.Getter:
case GeneratorJobType.Setter:
case GeneratorJobType.GetterSetter:
GenerateProperty(job, member, inClass, Sci);
break;
case GeneratorJobType.BasicEvent:
case GeneratorJobType.ComplexEvent:
latest = TemplateUtils.GetTemplateBlockMember(Sci,
TemplateUtils.GetBoundary("EventHandlers"));
if (latest == null)
{
if (ASContext.CommonSettings.MethodsGenerationLocations == MethodsGenerationLocations.AfterSimilarAccessorMethod)
latest = GetLatestMemberForFunction(inClass, GetDefaultVisibility(), member);
if (latest == null)
latest = member;
}
position = Sci.PositionFromLine(latest.LineTo + 1) - ((Sci.EOLMode == 0) ? 2 : 1);
Sci.SetSel(position, position);
string type = contextParam;
if (job == GeneratorJobType.BasicEvent)
if (itemLabel.IndexOf("DataEvent") >= 0) type = "DataEvent"; else type = "Event";
GenerateEventHandler(contextToken, type, member, position);
break;
case GeneratorJobType.Delegate:
position = Sci.PositionFromLine(member.LineTo + 1) - ((Sci.EOLMode == 0) ? 2 : 1);
Sci.SetSel(position, position);
GenerateDelegateMethod(contextToken, member, position);
break;
case GeneratorJobType.Constant:
case GeneratorJobType.Variable:
case GeneratorJobType.VariablePublic:
Sci.BeginUndoAction();
try
{
GenerateVariableJob(job, Sci, member, detach, inClass);
}
finally
{
Sci.EndUndoAction();
}
break;
case GeneratorJobType.Function:
case GeneratorJobType.FunctionPublic:
Sci.BeginUndoAction();
try
{
GenerateFunctionJob(job, Sci, member, detach, inClass);
}
finally
{
Sci.EndUndoAction();
}
break;
case GeneratorJobType.ImplementInterface:
ClassModel aType = ASContext.Context.ResolveType(contextParam, ASContext.Context.CurrentModel);
if (aType.IsVoid()) return;
latest = GetLatestMemberForFunction(inClass, Visibility.Public, null);
if (latest == null)
latest = FindLatest(0, 0, inClass, false, false);
if (latest == null) return;
position = Sci.PositionFromLine(latest.LineTo + 1) - ((Sci.EOLMode == 0) ? 2 : 1);
Sci.SetSel(position, position);
GenerateImplementation(aType, position);
break;
case GeneratorJobType.MoveLocalUp:
Sci.BeginUndoAction();
try
{
if (!RemoveLocalDeclaration(Sci, contextMember)) return;
position = GetBodyStart(member.LineFrom, member.LineTo, Sci);
Sci.SetSel(position, position);
string varType = contextMember.Type;
if (varType == "") varType = null;
string template = TemplateUtils.GetTemplate("Variable");
template = TemplateUtils.ReplaceTemplateVariable(template, "Name", contextMember.Name);
template = TemplateUtils.ReplaceTemplateVariable(template, "Type", varType);
//.........这里部分代码省略.........
开发者ID:zaynyatyi,项目名称:flashdevelop,代码行数:101,代码来源:ASGenerator.cs
示例7: GeneratorItem
public GeneratorItem(string label, GeneratorJobType job, MemberModel member, ClassModel inClass, Object data) : this(label, job, member, inClass)
{
this.data = data;
}
开发者ID:zaynyatyi,项目名称:flashdevelop,代码行数:5,代码来源:ASGenerator.cs
示例8: GetSuperCall
private static string GetSuperCall(MemberModel member, List<string> typesUsed, ClassModel aType)
{
string args = "";
if (member.Parameters != null)
foreach (MemberModel param in member.Parameters)
{
if (param.Name.StartsWith(".")) break;
args += ", " + param.Name;
addTypeOnce(typesUsed, getQualifiedType(param.Type, aType));
}
bool noRet = member.Type == null || member.Type.Length == 0 || member.Type.Equals("void", StringComparison.OrdinalIgnoreCase);
if (!noRet) addTypeOnce(typesUsed, getQualifiedType(member.Type, aType));
string action = "";
if ((member.Flags & FlagType.Function) > 0)
{
action =
(noRet ? "" : "return ")
+ "super." + member.Name
+ ((args.Length > 2) ? "(" + args.Substring(2) + ")" : "()") + ";";
}
else if ((member.Flags & FlagType.Setter) > 0 && args.Length > 0)
{
action = "super." + member.Name + " = " + member.Parameters[0].Name + ";";
}
else if ((member.Flags & FlagType.Getter) > 0)
{
action = "return super." + member.Name + ";";
}
return action;
}
开发者ID:zaynyatyi,项目名称:flashdevelop,代码行数:32,代码来源:ASGenerator.cs
示例9: GenerateOverride
static public void GenerateOverride(ScintillaNet.ScintillaControl Sci, ClassModel ofClass, MemberModel member, int position)
{
ContextFeatures features = ASContext.Context.Features;
List<string> typesUsed = new List<string>();
bool isProxy = (member.Namespace == "flash_proxy");
if (isProxy) typesUsed.Add("flash.utils.flash_proxy");
bool isAS2Event = ASContext.Context.Settings.LanguageId == "AS2" && member.Name.StartsWith("on");
bool isObjectMethod = ofClass.QualifiedName == "Object";
int line = Sci.LineFromPosition(position);
string currentText = Sci.GetLine(line);
int startPos = currentText.Length;
GetStartPos(currentText, ref startPos, features.privateKey);
GetStartPos(currentText, ref startPos, features.protectedKey);
GetStartPos(currentText, ref startPos, features.internalKey);
GetStartPos(currentText, ref startPos, features.publicKey);
GetStartPos(currentText, ref startPos, features.staticKey);
GetStartPos(currentText, ref startPos, features.overrideKey);
startPos += Sci.PositionFromLine(line);
FlagType flags = member.Flags;
string acc = "";
string decl = "";
if (features.hasNamespaces && !string.IsNullOrEmpty(member.Namespace) && member.Namespace != "internal")
acc = member.Namespace;
else if ((member.Access & Visibility.Public) > 0) acc = features.publicKey;
else if ((member.Access & Visibility.Internal) > 0) acc = features.internalKey;
else if ((member.Access & Visibility.Protected) > 0) acc = features.protectedKey;
else if ((member.Access & Visibility.Private) > 0 && features.methodModifierDefault != Visibility.Private)
acc = features.privateKey;
bool isStatic = (flags & FlagType.Static) > 0;
if (isStatic) acc = features.staticKey + " " + acc;
if (!isAS2Event && !isObjectMethod)
acc = features.overrideKey + " " + acc;
acc = Regex.Replace(acc, "[ ]+", " ").Trim();
if ((flags & (FlagType.Getter | FlagType.Setter)) > 0)
{
string type = member.Type;
string name = member.Name;
if (member.Parameters != null && member.Parameters.Count == 1)
type = member.Parameters[0].Type;
type = FormatType(type);
if (type == null && !features.hasInference) type = features.objectKey;
bool genGetter = ofClass.Members.Search(name, FlagType.Getter, 0) != null;
bool genSetter = ofClass.Members.Search(name, FlagType.Setter, 0) != null;
if (isHaxe)
{
// property is public but not the methods
acc = features.overrideKey;
}
if (genGetter)
{
string tpl = TemplateUtils.GetTemplate("OverrideGetter", "Getter");
tpl = TemplateUtils.ReplaceTemplateVariable(tpl, "Modifiers", acc);
tpl = TemplateUtils.ReplaceTemplateVariable(tpl, "Name", name);
tpl = TemplateUtils.ReplaceTemplateVariable(tpl, "Type", type);
tpl = TemplateUtils.ReplaceTemplateVariable(tpl, "Member", "super." + name);
decl += tpl;
}
if (genSetter)
{
string tpl = TemplateUtils.GetTemplate("OverrideSetter", "Setter");
tpl = TemplateUtils.ReplaceTemplateVariable(tpl, "Modifiers", acc);
tpl = TemplateUtils.ReplaceTemplateVariable(tpl, "Name", name);
tpl = TemplateUtils.ReplaceTemplateVariable(tpl, "Type", type);
tpl = TemplateUtils.ReplaceTemplateVariable(tpl, "Member", "super." + name);
tpl = TemplateUtils.ReplaceTemplateVariable(tpl, "Void", ASContext.Context.Features.voidKey ?? "void");
if (decl.Length > 0)
{
tpl = "\n\n" + tpl.Replace("$(EntryPoint)", "");
}
decl += tpl;
}
decl = TemplateUtils.ReplaceTemplateVariable(decl, "BlankLine", "");
}
else
{
string type = FormatType(member.Type);
//if (type == null) type = features.objectKey;
decl = acc + features.functionKey + " ";
bool noRet = type == null || type.Equals("void", StringComparison.OrdinalIgnoreCase);
type = (noRet && type != null) ? ASContext.Context.Features.voidKey : type;
if (!noRet)
{
string qType = getQualifiedType(type, ofClass);
typesUsed.Add(qType);
if (qType == type)
{
ClassModel rType = ASContext.Context.ResolveType(type, ofClass.InFile);
if (!rType.IsVoid()) type = rType.Name;
}
}
//.........这里部分代码省略.........
开发者ID:zaynyatyi,项目名称:flashdevelop,代码行数:101,代码来源:ASGenerator.cs
示例10: GetStatementReturnType
private static StatementReturnType GetStatementReturnType(ScintillaNet.ScintillaControl Sci, ClassModel inClass, string line, int startPos)
{
Regex target = new Regex(@"[;\s\n\r]*", RegexOptions.RightToLeft);
Match m = target.Match(line);
if (!m.Success)
{
return null;
}
line = line.Substring(0, m.Index);
if (line.Length == 0)
{
return null;
}
line = ReplaceAllStringContents(line);
ASResult resolve = null;
int pos = -1;
string word = null;
int stylemask = (1 << Sci.StyleBits) - 1;
ClassModel type = null;
if (line[line.Length - 1] == ')')
{
pos = -1;
int lastIndex = 0;
int bracesBalance = 0;
while (true)
{
int pos1 = line.IndexOf("(", lastIndex);
int pos2 = line.IndexOf(")", lastIndex);
if (pos1 != -1 && pos2 != -1)
{
lastIndex = Math.Min(pos1, pos2);
}
else if (pos1 != -1 || pos2 != -1)
{
lastIndex = Math.Max(pos1, pos2);
}
else
{
break;
}
if (lastIndex == pos1)
{
bracesBalance++;
if (bracesBalance == 1)
{
pos = lastIndex;
}
}
else if (lastIndex == pos2)
{
bracesBalance--;
}
lastIndex++;
}
}
else
{
pos = line.Length;
}
if (pos != -1)
{
line = line.Substring(0, pos);
pos += startPos;
pos -= line.Length - line.TrimEnd().Length + 1;
pos = Sci.WordEndPosition(pos, true);
resolve = ASComplete.GetExpressionType(Sci, pos);
if (resolve.IsNull()) resolve = null;
word = Sci.GetWordFromPosition(pos);
}
IASContext ctx = inClass.InFile.Context;
m = Regex.Match(line, "new\\s+([\\w\\d.<>,_$-]+)+(<[^]]+>)|(<[^]]+>)", RegexOptions.IgnoreCase);
if (m.Success)
{
string m1 = m.Groups[1].Value;
string m2 = m.Groups[2].Value;
string cname;
if (string.IsNullOrEmpty(m1) && string.IsNullOrEmpty(m2))
cname = m.Groups[0].Value;
else
cname = String.Concat(m1, m2);
if (cname.StartsWith("<"))
cname = "Vector." + cname; // literal vector
type = ctx.ResolveType(cname, inClass.InFile);
if (!type.IsVoid()) resolve = null;
}
else
{
char c = (char)Sci.CharAt(pos);
if (c == '"' || c == '\'')
{
type = ctx.ResolveType("String", inClass.InFile);
//.........这里部分代码省略.........
开发者ID:zaynyatyi,项目名称:flashdevelop,代码行数:101,代码来源:ASGenerator.cs
示例11: FindNewVarPosition
private static int FindNewVarPosition(ScintillaNet.ScintillaControl Sci, ClassModel inClass, MemberModel latest)
{
firstVar = false;
// found a var?
if ((latest.Flags & FlagType.Variable) > 0)
return Sci.PositionFromLine(latest.LineTo + 1) - ((Sci.EOLMode == 0) ? 2 : 1);
// add as first member
int line = 0;
int maxLine = Sci.LineCount;
if (inClass != null)
{
line = inClass.LineFrom;
maxLine = inClass.LineTo;
}
else if (ASContext.Context.InPrivateSection) line = ASContext.Context.CurrentModel.PrivateSectionIndex;
else maxLine = ASContext.Context.CurrentModel.PrivateSectionIndex;
while (line < maxLine)
{
string text = Sci.GetLine(line++);
if (text.IndexOf('{') >= 0)
{
firstVar = true;
return Sci.PositionFromLine(line) - ((Sci.EOLMode == 0) ? 2 : 1);
}
}
return -1;
}
开发者ID:zaynyatyi,项目名称:flashdevelop,代码行数:28,代码来源:ASGenerator.cs
示例12: GenerateClass
private static void GenerateClass(ScintillaNet.ScintillaControl Sci, String className, ClassModel inClass)
{
AddLookupPosition(); // remember last cursor position for Shift+F4
List<FunctionParameter> parameters = ParseFunctionParameters(Sci, Sci.WordEndPosition(Sci.CurrentPos, true));
List<MemberModel> constructorArgs = new List<MemberModel>();
List<String> constructorArgTypes = new List<String>();
MemberModel paramMember = new MemberModel();
for (int i = 0; i < parameters.Count; i++)
{
FunctionParameter p = parameters[i];
constructorArgs.Add(new MemberModel(p.paramName, p.paramType, FlagType.ParameterVar, 0));
constructorArgTypes.Add(CleanType(getQualifiedType(p.paramQualType, inClass)));
}
paramMember.Parameters = constructorArgs;
IProject project = PluginBase.CurrentProject;
if (String.IsNullOrEmpty(className)) className = "Class";
string projFilesDir = Path.Combine(PathHelper.TemplateDir, "ProjectFiles");
string projTemplateDir = Path.Combine(projFilesDir, project.GetType().Name);
string paramsString = TemplateUtils.ParametersString(paramMember, true);
Hashtable info = new Hashtable();
info["className"] = className;
if (project.Language.StartsWith("as")) info["templatePath"] = Path.Combine(projTemplateDir, "Class.as.fdt");
else if (project.Language.StartsWith("haxe")) info["templatePath"] = Path.Combine(projTemplateDir, "Class.hx.fdt");
else if (project.Language.StartsWith("loom")) info["templatePath"] = Path.Combine(projTemplateDir, "Class.ls.fdt");
info["inDirectory"] = Path.GetDirectoryName(inClass.InFile.FileName);
info["constructorArgs"] = paramsString.Length > 0 ? paramsString : null;
info["constructorArgTypes"] = constructorArgTypes;
DataEvent de = new DataEvent(EventType.Command, "ProjectManager.CreateNewFile", info);
EventManager.DispatchEvent(null, de);
if (de.Handled) return;
}
开发者ID:zaynyatyi,项目名称:flashdevelop,代码行数:34,代码来源:ASGenerator.cs
示例13: GenerateFunctionJob
private static void GenerateFunctionJob(GeneratorJobType job, ScintillaNet.ScintillaControl Sci, MemberModel member,
bool detach, ClassModel inClass)
{
int position = 0;
MemberModel latest = null;
bool isOtherClass = false;
Visibility funcVisi = job.Equals(GeneratorJobType.FunctionPublic) ? Visibility.Public : GetDefaultVisibility();
int wordPos = Sci.WordEndPosition(Sci.CurrentPos, true);
List<FunctionParameter> functionParameters = ParseFunctionParameters(Sci, wordPos);
// evaluate, if the function should be generated in other class
ASResult funcResult = ASComplete.GetExpressionType(Sci, Sci.WordEndPosition(Sci.CurrentPos, true));
int contextOwnerPos = GetContextOwnerEndPos(Sci, Sci.WordStartPosition(Sci.CurrentPos, true));
MemberModel isStatic = new MemberModel();
if (contextOwnerPos != -1)
{
ASResult contextOwnerResult = ASComplete.GetExpressionType(Sci, contextOwnerPos);
if (contextOwnerResult != null)
{
if (contextOwnerResult.Member == null && contextOwnerResult.Type != null)
{
isStatic.Flags |= FlagType.Static;
}
}
}
else if (member != null && (member.Flags & FlagType.Static) > 0)
{
isStatic.Flags |= FlagType.Static;
}
if (funcResult.RelClass != null && !funcResult.RelClass.IsVoid() && !funcResult.RelClass.Equals(inClass))
{
AddLookupPosition();
lookupPosition = -1;
DockContent dc = ASContext.MainForm.OpenEditableDocument(funcResult.RelClass.InFile.FileName, true);
Sci = ASContext.CurSciControl;
isOtherClass = true;
FileModel fileModel = new FileModel();
fileModel.Context = ASContext.Context;
ASFileParser parser = new ASFileParser();
parser.ParseSrc(fileModel, Sci.Text);
foreach (ClassModel cm in fileModel.Classes)
{
if (cm.QualifiedName.Equals(funcResult.RelClass.QualifiedName))
{
funcResult.RelClass = cm;
break;
}
}
inClass = funcResult.RelClass;
ASContext.Context.UpdateContext(inClass.LineFrom);
}
string blockTmpl = null;
if ((isStatic.Flags & FlagType.Static) > 0)
{
blockTmpl = TemplateUtils.GetBoundary("StaticMethods");
}
else if ((funcVisi & Visibility.Public) > 0)
{
blockTmpl = TemplateUtils.GetBoundary("PublicMethods");
}
else
{
blockTmpl = TemplateUtils.GetBoundary("PrivateMethods");
}
latest = TemplateUtils.GetTemplateBlockMember(Sci, blockTmpl);
if (latest == null || (!isOtherClass && member == null))
{
latest = GetLatestMemberForFunction(inClass, funcVisi, isStatic);
// if we generate function in current class..
if (!isOtherClass)
{
MethodsGenerationLocations location = ASContext.CommonSettings.MethodsGenerationLocations;
if (member == null)
{
detach = false;
lookupPosition = -1;
position = Sci.WordStartPosition(Sci.CurrentPos, true);
Sci.SetSel(position, Sci.WordEndPosition(position, true));
}
else if (latest != null && location == MethodsGenerationLocations.AfterSimilarAccessorMethod)
{
position = Sci.PositionFromLine(latest.LineTo + 1) - ((Sci.EOLMode == 0) ? 2 : 1);
Sci.SetSel(position, position);
}
else
{
position = Sci.PositionFromLine(member.LineTo + 1) - ((Sci.EOLMode == 0) ? 2 : 1);
Sci.SetSel(position, position);
}
}
//.........这里部分代码省略.........
开发者ID:zaynyatyi,项目名称:flashdevelop,代码行数:101,代码来源:ASGenerator.cs
示例14: GenerateVariableJob
private static void GenerateVariableJob(GeneratorJobType job, ScintillaNet.ScintillaControl Sci, MemberModel member,
bool detach, ClassModel inClass)
{
int position = 0;
MemberModel latest = null;
bool isOtherClass = false;
Visibility varVisi = job.Equals(GeneratorJobType.Variable) ? GetDefaultVisibility() : Visibility.Public;
FlagType ft = job.Equals(GeneratorJobType.Constant) ? FlagType.Constant : FlagType.Variable;
// evaluate, if the variable (or constant) should be generated in other class
ASResult varResult = ASComplete.GetExpressionType(Sci, Sci.WordEndPosition(Sci.CurrentPos, true));
int contextOwnerPos = GetContextOwnerEndPos(Sci, Sci.WordStartPosition(Sci.CurrentPos, true));
MemberModel isStatic = new MemberModel();
if (contextOwnerPos != -1)
{
ASResult contextOwnerResult = ASComplete.GetExpressionType(Sci, contextOwnerPos);
if (contextOwnerResult != null)
{
if (contextOwnerResult.Member == null && contextOwnerResult.Type != null)
{
isStatic.Flags |= FlagType.Static;
}
}
}
else if (member != null && (member.Flags & FlagType.Static) > 0)
{
isStatic.Flags |= FlagType.Static;
}
ASResult returnType = null;
int lineNum = Sci.CurrentLine;
string line = Sci.GetLine(lineNum);
Match m = Regex.Match(line, "\\b" + Regex.Escape(contextToken) + "\\(");
if (m.Success)
{
returnType = new ASResult();
returnType.Type = ASContext.Context.ResolveType("Function", null);
}
else
{
m = Regex.Match(line, @"=\s*[^;\n\r}}]+");
if (m.Success)
{
int posLineStart = Sci.PositionFromLine(lineNum);
if (posLineStart + m.Index >= Sci.CurrentPos)
{
line = line.Substring(m.Index);
StatementReturnType rType = GetStatementReturnType(Sci, inClass, line, posLineStart + m.Index);
if (rType != null)
{
returnType = rType.resolve;
}
}
}
}
if (varResult.RelClass != null && !varResult.RelClass.IsVoid() && !varResult.RelClass.Equals(inClass))
{
AddLookupPosition();
lookupPosition = -1;
ASContext.MainForm.OpenEditableDocument(varResult.RelClass.InFile.FileName, false);
Sci = ASContext.CurSciControl;
isOtherClass = true;
FileModel fileModel = new FileModel();
fileModel.Context = ASContext.Context;
ASFileParser parser = new ASFileParser();
parser.ParseSrc(fileModel, Sci.Text);
foreach (ClassModel cm in fileModel.Classes)
{
if (cm.QualifiedName.Equals(varResult.RelClass.QualifiedName))
{
varResult.RelClass = cm;
break;
}
}
inClass = varResult.RelClass;
ASContext.Context.UpdateContext(inClass.LineFrom);
}
latest = GetLatestMemberForVariable(job, inClass, varVisi, isStatic);
// if we generate variable in current class..
if (!isOtherClass && member == null)
{
detach = false;
lookupPosition = -1;
position = Sci.WordStartPosition(Sci.CurrentPos, true);
Sci.SetSel(position, Sci.WordEndPosition(position, true));
}
else // if we generate variable in another class
{
if (latest != null)
{
//.........这里部分代码省略.........
开发者ID:zaynyatyi,项目名称:flashdevelop,代码行数:101,代码来源:ASGenerator.cs
示例15: GenerateToString
private static void GenerateToString(ClassModel inClass, ScintillaNet.ScintillaControl Sci, MemberModel member)
{
MemberModel resultMember = new MemberModel("toString", "String", FlagType.Function, Visibility.Public);
bool isOverride = false;
inClass.ResolveExtends();
if (inClass.Extends != null)
{
ClassModel aType = inClass.Extends;
while (!aType.IsVoid() && aType.QualifiedName != "Object")
{
foreach (MemberModel method in aType.Members)
{
if (method.Name == "toString")
{
isOverride = true;
break;
}
}
if (isOverride)
{
resultMember.Flags |= FlagType.Override;
break;
}
// interface inheritance
aType = aType.Extends;
}
}
MemberList members = inClass.Members;
StringBuilder membersString = new StringBuilder();
StringBuilder oneMembersString;
int len = 0;
int indent = Sci.GetLineIndentation(Sci.CurrentLine);
foreach (MemberModel m in members)
{
if (((m.Flags & FlagType.Variable) > 0 || (m.Flags & FlagType.Getter) > 0)
&& (m.Access & Visibility.Public) > 0
&& (m.Flags & FlagType.Constant) == 0)
{
oneMembersString = new StringBuilder();
oneMembersString.Append(" ").Append(m.Name).Append("=\" + ").Append(m.Name).Append(" + ");
membersString.Append(oneMembersString);
len += oneMembersString.Length;
if (len > 80)
{
len = 0;
membersString.Append("\n\t\t\t\t");
}
membersString.Append("\"");
}
}
string template = TemplateUtils.GetTemplate("ToString");
string result = TemplateUtils.ToDeclarationWithModifiersString(resultMember, template);
result = TemplateUtils.ReplaceTemplateVariable(result, "Body", "\"[" + inClass.Name + membersString.ToString() + "]\"");
InsertCode(Sci.CurrentPos, result);
}
开发者ID:zaynyatyi,项目名称:flashdevelop,代码行数:59,代码来源:ASGenerator.cs
示例16: FindLatest
static private MemberModel FindLatest(FlagType match, Visibility visi, ClassModel inClass)
{
return FindLatest(match, visi, inClass, true, true);
}
开发者ID:zaynyatyi,项目名称:flashdevelop,代码行数:4,代码来源:ASGenerator.cs
示例17: GenerateImplementation
private static void GenerateImplementation(ClassModel aType, int position)
{
List<string> typesUsed = new List<string>();
StringBuilder sb = new StringBuilder(TemplateUtils.ReplaceTemplateVariable(TemplateUtils.GetTemplate("ImplementHeader"), "Class", aType.Type));
sb.Append(NewLine);
bool entry = true;
ASResult result = new ASResult();
IASContext context = ASContext.Context;
ClassModel cClass = context.CurrentClass;
ContextFeatures features = context.Features;
bool canGenerate = false;
aType.ResolveExtends(); // resolve inheritance chain
while (!aType.IsVoid() && aType.QualifiedName != "Object")
{
foreach (MemberModel method in aType.Members)
{
if ((method.Flags & (FlagType.Function | FlagType.Getter | FlagType.Setter)) == 0
|| method.Name == aType.Name)
continue;
// check if method exists
ASComplete.FindMember(method.Name, cClass, result, method.Flags, 0);
if (!result.IsNull()) continue;
string decl = entry ? NewLine : "";
if ((method.Flags & FlagType.Getter) > 0)
decl = TemplateUtils.ToDeclarationWithModifiersString(method, TemplateUtils.GetTemplate("Getter"));
else if ((method.Flags & FlagType.Setter) > 0)
decl = TemplateUtils.ToDeclarationWithModifiersString(method, TemplateUtils.GetTemplate("Setter"));
else
decl = TemplateUtils.ToDeclarationWithModifiersString(method, TemplateUtils.GetTemplate("Function"));
decl = TemplateUtils.ReplaceTemplateVariable(decl, "Member", "_" + method.Name);
decl = TemplateUtils.ReplaceTemplateVariable(decl, "Void", features.voidKey);
decl = TemplateUtils.ReplaceTemplateVariable(decl, "Body", null);
decl = TemplateUtils.ReplaceTemplateVariable(decl, "BlankLine", NewLine);
if (!entry)
{
decl = TemplateUtils.ReplaceTemplateVariable(decl, "EntryPoint", null);
}
decl += NewLine;
entry = false;
sb.Append(decl);
canGenerate = true;
addTypeOnce(typesUsed, getQualifiedType(method.Type, aType));
if (method.Parameters != null && method.Parameters.Count > 0)
foreach (MemberModel param in method.Parameters)
addTypeOnce(typesUsed, getQualifiedType(param.Type, aType));
}
// interface inheritance
aType = aType.Extends;
}
if (!canGenerate)
return;
ScintillaNet.ScintillaControl Sci = ASContext.CurSciControl;
Sci.BeginUndoAction();
try
{
position = Sci.CurrentPos;
if (ASContext.Context.Settings.GenerateImports && typesUsed.Count > 0)
{
int offset = AddImportsByName(typesUsed, Sci.LineFromPosition(position));
position += offset;
Sci.SetSel(position, position);
}
InsertCode(position, sb.ToString());
}
finally { Sci.EndUndoAction(); }
}
开发者ID:zaynyatyi,项目名称:flashdevelop,代码行数:77,代码来源:ASGenerator.cs
示例18: GenerateDelegateMethods
public static void GenerateDelegateMethods(ScintillaNet.ScintillaControl Sci, MemberModel member,
Dictionary<MemberModel, ClassModel> selectedMembers, ClassModel classModel, ClassModel inClass)
{
Sci.BeginUndoAction();
try
{
string result = TemplateUtils.ReplaceTemplateVariable(
TemplateUtils.GetTemplate("DelegateMethodsHeader"),
"Class",
classModel.Type);
int position = -1;
ClassModel type;
List<string>
|
请发表评论