Rietveld Code Review Tool
Help | Bug tracker | Discussion group | Source code

Unified Diff: compiled/filter/RegExpFilter.cpp

Issue 29398655: Issue 5062 - [emscripten] Allow generation of custom bindings code (Closed) Base URL: https://hg.adblockplus.org/adblockpluscore
Patch Set: Improved binding generation Created April 4, 2017, 3:40 p.m.
Use n/p to move between diff chunks; N/P to move between comments.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « compiled/filter/RegExpFilter.h ('k') | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: compiled/filter/RegExpFilter.cpp
===================================================================
--- a/compiled/filter/RegExpFilter.cpp
+++ b/compiled/filter/RegExpFilter.cpp
@@ -10,17 +10,20 @@
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with Adblock Plus. If not, see <http://www.gnu.org/licenses/>.
*/
+#include <cctype>
#include <climits>
+#include <cstdio>
+#include <string>
#include <emscripten.h>
#include "RegExpFilter.h"
#include "../StringScanner.h"
#include "../StringMap.h"
namespace
@@ -341,21 +344,28 @@ void RegExpFilter::ParseSitekeys(const S
{
if (scanner.position() > start)
AddSitekey(DependentString(sitekeys, start, scanner.position() - start));
start = scanner.position() + 1;
}
}
}
-void RegExpFilter::InitJSTypes()
+void RegExpFilter::GenerateCustomBindings()
{
- EM_ASM(exports.RegExpFilter.typeMap = {};);
- for (auto it = typeMap.begin(); it != typeMap.end(); ++it)
- EM_ASM_ARGS(exports.RegExpFilter.typeMap[readString($0).replace("-", "_").toUpperCase()] = $1, &(it->first), it->second);
+ printf("exports.RegExpFilter.typeMap = {\n");
+
+ for (const auto& it : typeMap)
+ {
+ std::string type(it.first.length(), '\0');
+ for (int i = 0; i < it.first.length(); i++)
+ type[i] = (it.first[i] == '-' ? '_' : toupper(it.first[i]));
+ printf(" %s: %i,\n", type.c_str(), it.second);
+ }
+ printf("};\n");
}
RegExpFilter::DomainMap* RegExpFilter::GetDomains() const
{
if (!mData.DomainsParsingDone())
{
ParseDomains(mData.GetDomainsSource(mText), u'|');
mData.SetDomainsParsingDone();
« no previous file with comments | « compiled/filter/RegExpFilter.h ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld