[Swfdec] Branch 'as' - 3 commits - libswfdec/swfdec_as_string.c libswfdec/swfdec_as_strings.c test/trace
Benjamin Otte
company at kemper.freedesktop.org
Thu Jun 28 03:43:22 PDT 2007
libswfdec/swfdec_as_string.c | 25 +++++++++++++++++++++++++
libswfdec/swfdec_as_strings.c | 1 +
test/trace/Makefile.am | 7 +++++++
test/trace/string-indexof-5.swf |binary
test/trace/string-indexof-5.swf.trace | 19 +++++++++++++++++++
test/trace/string-indexof-6.swf |binary
test/trace/string-indexof-6.swf.trace | 19 +++++++++++++++++++
test/trace/string-indexof-7.swf |binary
test/trace/string-indexof-7.swf.trace | 19 +++++++++++++++++++
test/trace/string-indexof.as | 23 +++++++++++++++++++++++
10 files changed, 113 insertions(+)
New commits:
diff-tree 873e9bf85e325fdb7cad66d9d7eecb1dd1ce26d5 (from parents)
Merge: 7f298fef1fdf95fbc9c5754f2ffc63acc8895cd8 c7622a13456a723bef13fd0a1b80a4060758af70
Author: Benjamin Otte <otte at gnome.org>
Date: Thu Jun 28 12:41:18 2007 +0200
Merge branch 'as' of ssh://company@git.freedesktop.org/git/swfdec into as
diff-tree 7f298fef1fdf95fbc9c5754f2ffc63acc8895cd8 (from 09d2f3639447e1d6fa87f5d52c8abcbe55f4f10a)
Author: Andreas Henriksson <andreas at fatal.se>
Date: Thu Jun 28 12:34:31 2007 +0200
add String.indexOf()
diff --git a/libswfdec/swfdec_as_string.c b/libswfdec/swfdec_as_string.c
index 5ce98c9..8515c7c 100644
--- a/libswfdec/swfdec_as_string.c
+++ b/libswfdec/swfdec_as_string.c
@@ -68,6 +68,30 @@ swfdec_as_str_nth_char (const char *s, g
}
static void
+swfdec_as_string_indexOf (SwfdecAsContext *cx, SwfdecAsObject *object,
+ guint argc, SwfdecAsValue *argv, SwfdecAsValue *ret)
+{
+ SwfdecAsString *string = SWFDEC_AS_STRING (object);
+ int offset=0, len, i=-1;
+ const char *s, *t = NULL;
+
+ s = swfdec_as_value_to_string (object->context, &argv[0]);
+ if (argc == 2)
+ offset = swfdec_as_value_to_integer (object->context, &argv[1]);
+ if (offset < 0)
+ offset = 0;
+ len = g_utf8_strlen (string->string, -1);
+ if (offset < len) {
+ t = strstr (g_utf8_offset_to_pointer (string->string, offset), s);
+ }
+ if (t != NULL) {
+ i = g_utf8_pointer_to_offset (string->string, t);
+ }
+
+ SWFDEC_AS_VALUE_SET_INT (ret, i);
+}
+
+static void
swfdec_as_string_charAt (SwfdecAsContext *cx, SwfdecAsObject *object,
guint argc, SwfdecAsValue *argv, SwfdecAsValue *ret)
{
@@ -671,6 +695,7 @@ swfdec_as_string_init_context (SwfdecAsC
SWFDEC_AS_VALUE_SET_OBJECT (&val, string);
swfdec_as_object_set_variable (proto, SWFDEC_AS_STR_constructor, &val);
swfdec_as_object_add_function (proto, SWFDEC_AS_STR_charAt, SWFDEC_TYPE_AS_STRING, swfdec_as_string_charAt, 1);
+ swfdec_as_object_add_function (proto, SWFDEC_AS_STR_indexOf, SWFDEC_TYPE_AS_STRING, swfdec_as_string_indexOf, 1);
swfdec_as_object_add_function (proto, SWFDEC_AS_STR_charCodeAt, SWFDEC_TYPE_AS_STRING, swfdec_as_string_charCodeAt, 1);
swfdec_as_object_add_function (proto, SWFDEC_AS_STR_substr, SWFDEC_TYPE_AS_STRING, swfdec_as_string_substr, 1);
swfdec_as_object_add_function (proto, SWFDEC_AS_STR_substring, SWFDEC_TYPE_AS_STRING, swfdec_as_string_substring, 1);
diff --git a/libswfdec/swfdec_as_strings.c b/libswfdec/swfdec_as_strings.c
index 7a846f5..f7d3d6b 100644
--- a/libswfdec/swfdec_as_strings.c
+++ b/libswfdec/swfdec_as_strings.c
@@ -221,6 +221,7 @@ const char swfdec_as_strings[] =
SWFDEC_AS_CONSTANT_STRING ("time")
SWFDEC_AS_CONSTANT_STRING ("bytesLoaded")
SWFDEC_AS_CONSTANT_STRING ("bytesTotal")
+ SWFDEC_AS_CONSTANT_STRING ("indexOf")
/* add more here */
;
diff-tree 09d2f3639447e1d6fa87f5d52c8abcbe55f4f10a (from 81472f980827d624a88339abd8db0e40c8aaf453)
Author: Andreas Henriksson <andreas at fatal.se>
Date: Thu Jun 28 12:33:21 2007 +0200
add test for String.indexOf()
diff --git a/test/trace/Makefile.am b/test/trace/Makefile.am
index 222665c..4132702 100644
--- a/test/trace/Makefile.am
+++ b/test/trace/Makefile.am
@@ -650,6 +650,13 @@ EXTRA_DIST = \
string-convert-6.swf.trace \
string-convert-7.swf \
string-convert-7.swf.trace \
+ string-indexof.as \
+ string-indexof-5.swf \
+ string-indexof-5.swf.trace \
+ string-indexof-6.swf \
+ string-indexof-6.swf.trace \
+ string-indexof-7.swf \
+ string-indexof-7.swf.trace \
string-split.as \
string-split-5.swf \
string-split-5.swf.trace \
diff --git a/test/trace/string-indexof-5.swf b/test/trace/string-indexof-5.swf
new file mode 100644
index 0000000..a8fccc1
Binary files /dev/null and b/test/trace/string-indexof-5.swf differ
diff --git a/test/trace/string-indexof-5.swf.trace b/test/trace/string-indexof-5.swf.trace
new file mode 100644
index 0000000..0d2806e
--- /dev/null
+++ b/test/trace/string-indexof-5.swf.trace
@@ -0,0 +1,19 @@
+Check String.indexOf
+>>> ABCDEFGHIabcdefghiABCDEFGHIabcdefghi
+36
+12
+15
+-1
+-1
+-1
+35
+17
+>>> ÃÂÃÂÃÂtütGHIabcdefghiABCDEFGHIabcdefghi
+40
+16
+19
+-1
+-1
+39
+39
+21
diff --git a/test/trace/string-indexof-6.swf b/test/trace/string-indexof-6.swf
new file mode 100644
index 0000000..0192218
Binary files /dev/null and b/test/trace/string-indexof-6.swf differ
diff --git a/test/trace/string-indexof-6.swf.trace b/test/trace/string-indexof-6.swf.trace
new file mode 100644
index 0000000..5292ad6
--- /dev/null
+++ b/test/trace/string-indexof-6.swf.trace
@@ -0,0 +1,19 @@
+Check String.indexOf
+>>> ABCDEFGHIabcdefghiABCDEFGHIabcdefghi
+36
+12
+15
+-1
+-1
+-1
+35
+17
+>>> ÃÃÃtütGHIabcdefghiABCDEFGHIabcdefghi
+36
+12
+15
+-1
+-1
+-1
+35
+17
diff --git a/test/trace/string-indexof-7.swf b/test/trace/string-indexof-7.swf
new file mode 100644
index 0000000..2a11f9e
Binary files /dev/null and b/test/trace/string-indexof-7.swf differ
diff --git a/test/trace/string-indexof-7.swf.trace b/test/trace/string-indexof-7.swf.trace
new file mode 100644
index 0000000..5292ad6
--- /dev/null
+++ b/test/trace/string-indexof-7.swf.trace
@@ -0,0 +1,19 @@
+Check String.indexOf
+>>> ABCDEFGHIabcdefghiABCDEFGHIabcdefghi
+36
+12
+15
+-1
+-1
+-1
+35
+17
+>>> ÃÃÃtütGHIabcdefghiABCDEFGHIabcdefghi
+36
+12
+15
+-1
+-1
+-1
+35
+17
diff --git a/test/trace/string-indexof.as b/test/trace/string-indexof.as
new file mode 100644
index 0000000..4f4a3d4
--- /dev/null
+++ b/test/trace/string-indexof.as
@@ -0,0 +1,23 @@
+// makeswf -v 7 -s 200x150 -r 1 -o string-indexof.swf string-indexof.as
+
+trace ("Check String.indexOf");
+
+strings = [ "ABCDEFGHIabcdefghiABCDEFGHIabcdefghi",
+ "ÃÃÃtütGHIabcdefghiABCDEFGHIabcdefghi"
+];
+
+for (i = 0; i < strings.length; i++) {
+ foobar = strings[i];
+ trace (">>> " + foobar);
+ trace (foobar.length);
+ trace (foobar.indexOf ("def"));
+ trace (foobar.indexOf ("ghi", 3));
+ trace (foobar.indexOf ("no-such-string"));
+ trace (foobar.indexOf ("ABC", 30));
+ trace (foobar.indexOf ("i", 36));
+ trace (foobar.indexOf ("i", 35));
+ trace (foobar.indexOf ("i", -15));
+}
+
+loadMovie("FSCommand:quit", "");
+
More information about the Swfdec
mailing list