Scanner.cpp
Scanner.output
Bridge.def
-Bridge.gperf
+Hasher.gperf
stack.hh
sysroot.ios
sysroot.sim
lex.backup
/cycript
-Bridge.hpp
+Hasher.hpp
package
aclocal.m4
stamp-h1
#include <clang-c/Index.h>
+#include "Bridge.hpp"
#include "Functor.hpp"
#include "Replace.hpp"
#include "Syntax.hpp"
std::string name(spelling);
std::ostringstream value;
unsigned priority(2);
- unsigned flags(0);
+ unsigned flags(CYBridgeHold);
/*CXSourceLocation location(clang_getCursorLocation(cursor));
CYCXPosition<> position(location);
value << "new Type([" << types.str() << "],[" << names.str() << "]).withName(\"" << name << "\")";
name += "$cy";
+ flags = CYBridgeType;
} break;
case CXCursor_TypedefDecl: try {
--- /dev/null
+/* Cycript - The Truly Universal Scripting Language
+ * Copyright (C) 2009-2016 Jay Freeman (saurik)
+*/
+
+/* GNU Affero General Public License, Version 3 {{{ */
+/*
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Affero General Public License for more details.
+
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+**/
+/* }}} */
+
+#ifndef BRIDGE_HPP
+#define BRIDGE_HPP
+
+static const unsigned int CYBridgeVoid = 1;
+static const unsigned int CYBridgeHold = 2;
+static const unsigned int CYBridgeType = 3;
+
+#endif//BRIDGE_HPP
+++ /dev/null
-#!/usr/bin/env bash
-
-# Cycript - The Truly Universal Scripting Language
-# Copyright (C) 2009-2016 Jay Freeman (saurik)
-
-# GNU Affero General Public License, Version 3 {{{
-#
-# This program is free software: you can redistribute it and/or modify
-# it under the terms of the GNU Affero General Public License as published by
-# the Free Software Foundation, either version 3 of the License, or
-# (at your option) any later version.
-#
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU Affero General Public License for more details.
-#
-# You should have received a copy of the GNU Affero General Public License
-# along with this program. If not, see <http://www.gnu.org/licenses/>.
-# }}}
-
-cat << EOF
-%{
-#include <cstddef>
-#include <cstring>
-#include "Execute.hpp"
-
-#if defined(__clang__)
-#pragma clang diagnostic push
-#pragma clang diagnostic ignored "-Wunknown-pragmas"
-#pragma clang diagnostic ignored "-Wdeprecated-register"
-#endif
-%}
-
-%language=ANSI-C
-
-%define lookup-function-name CYBridgeHash_
-%define slot-name name_
-
-%struct-type
-
-%pic
-
-%delimiters="|"
-
-struct CYBridgeEntry {
- int name_;
- const char *value_;
-};
-
-%%
-EOF
-
-grep -v '^$'
-
-cat <<EOF
-%%
-#if defined(__clang__)
-#pragma clang diagnostic pop
-#endif
-EOF
#include "sig/parse.hpp"
#include "sig/ffi_type.hpp"
+#include "Bridge.hpp"
#include "Code.hpp"
#include "Decode.hpp"
#include "Error.hpp"
CYThrow("%s", pool.strcat("error caching ", CYPoolCString(pool, context, property), ": ", error.PoolCString(pool), NULL));
}
- JSValueRef result(_jsccall(JSEvaluateScript, context, CYJSString(parsed), NULL, NULL, 0));
-
- if (flags == 0) {
- JSObjectRef cache(CYGetCachedObject(context, CYJSString("cache")));
- CYSetProperty(context, cache, property, result);
+ JSObjectRef cache(CYGetCachedObject(context, CYJSString("cache")));
+
+ JSObjectRef stub;
+ if (flags == CYBridgeType) {
+ stub = CYMakeType(context, sig::Void());
+ CYSetProperty(context, cache, property, stub);
+ } else
+ stub = NULL;
+
+ JSValueRef value(_jsccall(JSEvaluateScript, context, CYJSString(parsed), NULL, NULL, 0));
+
+ switch (flags) {
+ case CYBridgeVoid: {
+ } break;
+
+ case CYBridgeHold: {
+ CYSetProperty(context, cache, property, value);
+ } break;
+
+ case CYBridgeType: {
+ JSObjectRef swap(CYCastJSObject(context, value));
+ void *source(JSObjectGetPrivate(swap));
+ _assert(source != NULL);
+ void *target(JSObjectGetPrivate(stub));
+ _assert(JSObjectSetPrivate(swap, target));
+ _assert(JSObjectSetPrivate(stub, source));
+ value = stub;
+ } break;
}
- return result;
+ return value;
}
return NULL;
--- /dev/null
+#!/usr/bin/env bash
+
+# Cycript - The Truly Universal Scripting Language
+# Copyright (C) 2009-2016 Jay Freeman (saurik)
+
+# GNU Affero General Public License, Version 3 {{{
+#
+# This program is free software: you can redistribute it and/or modify
+# it under the terms of the GNU Affero General Public License as published by
+# the Free Software Foundation, either version 3 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU Affero General Public License for more details.
+#
+# You should have received a copy of the GNU Affero General Public License
+# along with this program. If not, see <http://www.gnu.org/licenses/>.
+# }}}
+
+cat << EOF
+%{
+#include <cstddef>
+#include <cstring>
+#include "Execute.hpp"
+
+#if defined(__clang__)
+#pragma clang diagnostic push
+#pragma clang diagnostic ignored "-Wunknown-pragmas"
+#pragma clang diagnostic ignored "-Wdeprecated-register"
+#endif
+%}
+
+%language=ANSI-C
+
+%define lookup-function-name CYBridgeHash_
+%define slot-name name_
+
+%struct-type
+
+%pic
+
+%delimiters="|"
+
+struct CYBridgeEntry {
+ int name_;
+ const char *value_;
+};
+
+%%
+EOF
+
+grep -v '^$'
+
+cat <<EOF
+%%
+#if defined(__clang__)
+#pragma clang diagnostic pop
+#endif
+EOF
cat $< >$@
endif
-CLEANFILES += Bridge.gperf
-Bridge.gperf: Bridge.def Bridge.sh
- $(srcdir)/Bridge.sh <$< >$@
+#CLEANFILES += Hasher.gperf
+#Hasher.gperf: Hasher.def Hasher.sh
+# $(srcdir)/Hasher.sh <$< >$@
-CLEANFILES += Bridge.hpp
-Bridge.hpp: Bridge.gperf
- $(GPERF) $< >$@
+#CLEANFILES += Hasher.hpp
+#Hasher.hpp: Hasher.gperf
+# $(GPERF) $< >$@
endif
if CY_JAVA
@CY_EXECUTE_TRUE@am__append_7 = libcycript.db
@CY_EXECUTE_TRUE@@CY_PRELINK_TRUE@am__append_8 = Analyze Bridge.def
@CY_EXECUTE_TRUE@@CY_PRELINK_FALSE@am__append_9 = Bridge.def
-@CY_EXECUTE_TRUE@am__append_10 = Bridge.gperf Bridge.hpp
-@CY_JAVA_TRUE@am__append_11 = Java
-@CY_JAVA_TRUE@am__append_12 = Java/Execute.cpp
-@CY_JAVA_TRUE@am__append_13 = $(LTJAVA)
-@CY_JAVA_TRUE@am__append_14 = libcycript.jar
-@CY_JAVA_TRUE@am__append_15 = Class libcycript.jar
-@CY_RUBY_TRUE@am__append_16 = Ruby
-@CY_RUBY_TRUE@am__append_17 = Ruby/Execute.cpp
-@CY_RUBY_TRUE@am__append_18 = $(LTRUBY)
-@CY_PYTHON_TRUE@am__append_19 = Python
-@CY_PYTHON_TRUE@am__append_20 = Python/Execute.cpp
-@CY_PYTHON_TRUE@am__append_21 = $(LTPYTHON)
-@CY_OBJECTIVEC_TRUE@am__append_22 = -DCY_OBJECTIVEC
-@CY_OBJECTIVEC_TRUE@am__append_23 = ObjectiveC
-@CY_OBJECTIVEC_TRUE@am__append_24 = ObjectiveC/Output.cpp ObjectiveC/Replace.cpp ObjectiveC/Library.mm
-@CY_OBJECTIVEC_TRUE@am__append_25 = $(LTOBJECTIVEC)
-@CY_ATTACH_TRUE@am__append_26 = Handler.cpp
-@CY_ATTACH_TRUE@@CY_CONSOLE_TRUE@am__append_27 = Inject.cpp
-@CY_ATTACH_TRUE@@CY_CONSOLE_TRUE@am__append_28 = -DCY_ATTACH
+
+#CLEANFILES += Hasher.gperf
+#Hasher.gperf: Hasher.def Hasher.sh
+# $(srcdir)/Hasher.sh <$< >$@
+
+#CLEANFILES += Hasher.hpp
+#Hasher.hpp: Hasher.gperf
+# $(GPERF) $< >$@
+@CY_JAVA_TRUE@am__append_10 = Java
+@CY_JAVA_TRUE@am__append_11 = Java/Execute.cpp
+@CY_JAVA_TRUE@am__append_12 = $(LTJAVA)
+@CY_JAVA_TRUE@am__append_13 = libcycript.jar
+@CY_JAVA_TRUE@am__append_14 = Class libcycript.jar
+@CY_RUBY_TRUE@am__append_15 = Ruby
+@CY_RUBY_TRUE@am__append_16 = Ruby/Execute.cpp
+@CY_RUBY_TRUE@am__append_17 = $(LTRUBY)
+@CY_PYTHON_TRUE@am__append_18 = Python
+@CY_PYTHON_TRUE@am__append_19 = Python/Execute.cpp
+@CY_PYTHON_TRUE@am__append_20 = $(LTPYTHON)
+@CY_OBJECTIVEC_TRUE@am__append_21 = -DCY_OBJECTIVEC
+@CY_OBJECTIVEC_TRUE@am__append_22 = ObjectiveC
+@CY_OBJECTIVEC_TRUE@am__append_23 = ObjectiveC/Output.cpp ObjectiveC/Replace.cpp ObjectiveC/Library.mm
+@CY_OBJECTIVEC_TRUE@am__append_24 = $(LTOBJECTIVEC)
+@CY_ATTACH_TRUE@am__append_25 = Handler.cpp
+@CY_ATTACH_TRUE@@CY_CONSOLE_TRUE@am__append_26 = Inject.cpp
+@CY_ATTACH_TRUE@@CY_CONSOLE_TRUE@am__append_27 = -DCY_ATTACH
subdir = .
ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
am__aclocal_m4_deps = $(top_srcdir)/m4/ax_cxx_compile_stdcxx_11.m4 \
top_srcdir = @top_srcdir@
AUTOMAKE_OPTIONS = subdir-objects
CLEANFILES = $(am__append_7) $(am__append_8) $(am__append_9) \
- $(am__append_10) $(am__append_15) Parser.ypp Scanner.lpp \
- Scanner.cpp Scanner.output lex.backup Parser.cpp Parser.hpp \
- stack.hh Parser.output
+ $(am__append_14) Parser.ypp Scanner.lpp Scanner.cpp \
+ Scanner.output lex.backup Parser.cpp Parser.hpp stack.hh \
+ Parser.output
SUBDIRS =
ACLOCAL_AMFLAGS = -I m4
AM_CPPFLAGS = -DYYDEBUG=1 -DCY_SYSTEM="\"$(CY_SYSTEM)\"" -include \
config.h -include $(srcdir)/unconfig.h $(am__append_5) \
- $(am__append_22) $(am__append_28)
+ $(am__append_21) $(am__append_27)
AM_CFLAGS = -fvisibility=hidden
AM_CXXFLAGS = -fvisibility=hidden
AM_OBJCXXFLAGS = -fvisibility=hidden -fobjc-exceptions
AM_LDFLAGS = -fvisibility=hidden
CY_LDFLAGS = -no-undefined -avoid-version -export-dynamic
datdir = $(libdir)
-dat_DATA = $(am__append_4) $(am__append_14)
+dat_DATA = $(am__append_4) $(am__append_13)
lib_LTLIBRARIES = libcycript.la
libcycript_la_LDFLAGS = $(CY_LDFLAGS)
libcycript_la_LIBADD = $(LTLIBUV) $(LTLIBFFI) $(LTLIBSQLITE3) \
- $(LTLIBGCC) -ldl $(am__append_3) $(am__append_13) \
- $(am__append_18) $(am__append_21) $(am__append_25)
+ $(LTLIBGCC) -ldl $(am__append_3) $(am__append_12) \
+ $(am__append_17) $(am__append_20) $(am__append_24)
libcycript_la_SOURCES = ConvertUTF.c Decode.cpp Driver.cpp Error.cpp \
Highlight.cpp Library.cpp Network.cpp Output.cpp Replace.cpp \
Syntax.cpp Parser.cpp Scanner.cpp $(am__append_1) \
- $(am__append_2) $(am__append_12) $(am__append_17) \
- $(am__append_20) $(am__append_24) $(am__append_26)
-filters = $(am__append_6) $(am__append_11) $(am__append_16) \
- $(am__append_19) $(am__append_23)
-@CY_CONSOLE_TRUE@cycript_SOURCES = Console.cpp $(am__append_27)
+ $(am__append_2) $(am__append_11) $(am__append_16) \
+ $(am__append_19) $(am__append_23) $(am__append_25)
+filters = $(am__append_6) $(am__append_10) $(am__append_15) \
+ $(am__append_18) $(am__append_22)
+@CY_CONSOLE_TRUE@cycript_SOURCES = Console.cpp $(am__append_26)
@CY_CONSOLE_TRUE@cycript_LDADD = libcycript.la $(LTLIBREADLINE) $(LTLIBTERMCAP) $(LTLIBGCC) $(PTHREAD_CFLAGS) -ldl
@CY_EXECUTE_TRUE@@CY_PRELINK_TRUE@CY_LANGFLAGS = -DCY_JAVA=$(CY_JAVA) -DCY_PYTHON=$(CY_PYTHON) -DCY_OBJECTIVEC=$(CY_OBJECTIVEC)
all: config.h
@CY_EXECUTE_TRUE@@CY_PRELINK_TRUE@ ./Analyze $< $(OBJCXX) $(CPPFLAGS) $(AM_OBJCXXFLAGS) $(OBJCXXFLAGS) $(CY_LANGFLAGS) >$@
@CY_EXECUTE_TRUE@@CY_PRELINK_FALSE@Bridge.def: Bridge.def.in
@CY_EXECUTE_TRUE@@CY_PRELINK_FALSE@ cat $< >$@
-@CY_EXECUTE_TRUE@Bridge.gperf: Bridge.def Bridge.sh
-@CY_EXECUTE_TRUE@ $(srcdir)/Bridge.sh <$< >$@
-@CY_EXECUTE_TRUE@Bridge.hpp: Bridge.gperf
-@CY_EXECUTE_TRUE@ $(GPERF) $< >$@
@CY_JAVA_TRUE@Class/Cycript.class: Java/Cycript.java
@CY_JAVA_TRUE@ rm -rf Class; mkdir Class; javac -g -Xlint:unchecked -source 1.5 -target 1.5 -d Class -sourcepath $(srcdir)/Java $<
@CY_JAVA_TRUE@Class/classes.dex: Class/Cycript.class