summaryrefslogtreecommitdiff
path: root/vala/valaobjectcreationexpression.vala
diff options
context:
space:
mode:
authorJuerg Billeter <j@bitron.ch>2007-07-27 15:36:23 +0000
committerJürg Billeter <juergbi@src.gnome.org>2007-07-27 15:36:23 +0000
commit5a32f9e2108feff5cdc997fd79303e5f4e9b6175 (patch)
treebbb31850d9a7279f7e6cfb2561b3a80ef0536b1d /vala/valaobjectcreationexpression.vala
parentb49e7bae77c537a08cf5c5cb1850fc34d859252a (diff)
downloadvala-5a32f9e2108feff5cdc997fd79303e5f4e9b6175.tar.gz
add internal copy of libgee and use Gee.ArrayList, Gee.HashMap, and
2007-07-27 Juerg Billeter <j@bitron.ch> * Makefile.am, README, configure.ac, gee/Makefile.am, gee/arraylist.vala, gee/collection.vala, gee/hashmap.vala, gee/hashset.vala, gee/iterable.vala, gee/iterator.vala, gee/list.vala, gee/map.vala, gee/readonlycollection.vala, gee/readonlylist.vala, gee/readonlymap.vala, gee/readonlyset.vala, gee/set.vala, vala/Makefile.am, vala/parser.y, vala/valaarray.vala, vala/valaarraycreationexpression.vala, vala/valaattribute.vala, vala/valablock.vala, vala/valacallback.vala, vala/valaclass.vala, vala/valacodecontext.vala, vala/valacodenode.vala, vala/valadatatype.vala, vala/valaelementaccess.vala, vala/valaenum.vala, vala/valaexpression.vala, vala/valafield.vala, vala/valaformalparameter.vala, vala/valaforstatement.vala, vala/valainitializerlist.vala, vala/valainstancecast.vala, vala/valainterface.vala, vala/valainterfacewriter.vala, vala/valainvocationexpression.vala, vala/valainvokable.vala, vala/valalambdaexpression.vala, vala/valalocalvariabledeclaration.vala, vala/valamember.vala, vala/valamemberaccess.vala, vala/valamemorymanager.vala, vala/valamethod.vala, vala/valanamespace.vala, vala/valaobjectcreationexpression.vala, vala/valapointer.vala, vala/valascope.vala, vala/valasemanticanalyzer.vala, vala/valasignal.vala, vala/valasourcefile.vala, vala/valasourcefilecycle.vala, vala/valastruct.vala, vala/valaswitchsection.vala, vala/valaswitchstatement.vala, vala/valasymbol.vala, vala/valasymbolresolver.vala, vala/valatrystatement.vala, vala/valatypeparameter.vala, vala/valatypereference.vala, vala/valavariabledeclarator.vala, ccode/Makefile.am, ccode/valaccodeblock.vala, ccode/valaccodecasestatement.vala, ccode/valaccodecommaexpression.vala, ccode/valaccodedeclaration.vala, ccode/valaccodeenum.vala, ccode/valaccodeforstatement.vala, ccode/valaccodefragment.vala, ccode/valaccodefunction.vala, ccode/valaccodefunctioncall.vala, ccode/valaccodefunctiondeclarator.vala, ccode/valaccodeinitializerlist.vala, ccode/valaccodestruct.vala, ccode/valaccodeswitchstatement.vala, gobject/Makefile.am, gobject/valaclassregisterfunction.vala, gobject/valacodegenerator.vala, gobject/valacodegeneratorassignment.vala, gobject/valacodegeneratorclass.vala, gobject/valacodegeneratorinterface.vala, gobject/valacodegeneratorinvocationexpression.vala, gobject/valacodegeneratormemberaccess.vala, gobject/valacodegeneratormethod.vala, gobject/valacodegeneratorsignal.vala, gobject/valacodegeneratorsourcefile.vala, gobject/valainterfaceregisterfunction.vala, compiler/Makefile.am, vapi/gio-standalone.vala, vapi/gstreamer-0.10.vala, vapi/gtk+-2.0.vala, vapigen/Makefile.am, vapigen/valagidlparser.vala: add internal copy of libgee and use Gee.ArrayList, Gee.HashMap, and Gee.HashSet instead of GLib.List and GLib.HashTable svn path=/trunk/; revision=406
Diffstat (limited to 'vala/valaobjectcreationexpression.vala')
-rw-r--r--vala/valaobjectcreationexpression.vala33
1 files changed, 13 insertions, 20 deletions
diff --git a/vala/valaobjectcreationexpression.vala b/vala/valaobjectcreationexpression.vala
index 5adf02228..80a138a3c 100644
--- a/vala/valaobjectcreationexpression.vala
+++ b/vala/valaobjectcreationexpression.vala
@@ -21,6 +21,7 @@
*/
using GLib;
+using Gee;
/**
* Represents an object creation expression in the source code.
@@ -43,18 +44,16 @@ public class Vala.ObjectCreationExpression : Expression {
*/
public MemberAccess member_name { get; set; }
- private List<Expression> argument_list;
+ private Gee.List<Expression> argument_list = new ArrayList<Expression> ();
/**
* Creates a new object creation expression.
*
- * @param type object type to create
- * @param source reference to source code
- * @return newly created object creation expression
+ * @param member_name object type to create
+ * @param source_reference reference to source code
+ * @return newly created object creation expression
*/
- public ObjectCreationExpression (MemberAccess! name, SourceReference source) {
- member_name = name;
- source_reference = source;
+ public ObjectCreationExpression (construct MemberAccess! member_name, construct SourceReference source_reference) {
}
/**
@@ -63,7 +62,7 @@ public class Vala.ObjectCreationExpression : Expression {
* @param arg an argument
*/
public void add_argument (Expression! arg) {
- argument_list.append (arg);
+ argument_list.add (arg);
arg.parent_node = this;
}
@@ -72,8 +71,8 @@ public class Vala.ObjectCreationExpression : Expression {
*
* @return argument list
*/
- public List<weak Expression> get_argument_list () {
- return argument_list.copy ();
+ public Collection<Expression> get_argument_list () {
+ return new ReadOnlyCollection<Expression> (argument_list);
}
public override void accept (CodeVisitor! visitor) {
@@ -87,8 +86,7 @@ public class Vala.ObjectCreationExpression : Expression {
visitor.visit_begin_object_creation_expression (this);
- // iterate over list copy as list may change in loop body
- foreach (Expression arg in argument_list.copy ()) {
+ foreach (Expression arg in argument_list) {
arg.accept (visitor);
}
@@ -96,14 +94,9 @@ public class Vala.ObjectCreationExpression : Expression {
}
public override void replace (CodeNode! old_node, CodeNode! new_node) {
- weak List<Expression> l = argument_list.find (old_node);
- if (l != null) {
- if (new_node.parent_node != null) {
- return;
- }
-
- argument_list.insert_before (l, new_node);
- argument_list.remove_link (l);
+ int index = argument_list.index_of (old_node);
+ if (index >= 0 && new_node.parent_node == null) {
+ argument_list[index] = (Expression) new_node;
new_node.parent_node = this;
}
}