| Index: compiled/filter/RegExpFilter.cpp |
| =================================================================== |
| --- a/compiled/filter/RegExpFilter.cpp |
| +++ b/compiled/filter/RegExpFilter.cpp |
| @@ -10,17 +10,19 @@ |
| * 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 <emscripten.h> |
| #include "RegExpFilter.h" |
| #include "../StringScanner.h" |
| #include "../StringMap.h" |
| namespace |
| @@ -337,21 +339,36 @@ 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() |
| { |
|
sergei
2017/03/30 11:09:18
BTW, what about having of this method under `#ifde
Wladimir Palant
2017/03/30 12:58:58
Why? The compiler will remove it if not needed.
sergei
2017/04/04 14:49:30
Generally yes, but I'm not sure that compiler can
Wladimir Palant
2017/04/04 15:41:48
I sincerely disagee - we are adding EMSCRIPTEN_KEE
sergei
2017/04/11 16:29:20
I'm pretty sure that compiler is not removing this
Wladimir Palant
2017/04/11 18:22:44
That's actually me doing something stupid - this f
|
| - EM_ASM(exports.RegExpFilter.typeMap = {};); |
| + printf("exports.RegExpFilter.typeMap = {\n"); |
| + |
| + OwnedString type; |
| + char type_cstr[256]; |
| for (auto it = typeMap.begin(); it != typeMap.end(); ++it) |
| - EM_ASM_ARGS(exports.RegExpFilter.typeMap[readString($0).replace("-", "_").toUpperCase()] = $1, &(it->first), it->second); |
| + { |
| + type = it->first; |
| + for (int i = 0; i < type.length(); i++) |
| + { |
| + if (type[i] == '-') |
| + type_cstr[i] = '_'; |
| + else |
| + type_cstr[i] = toupper(type[i]); |
|
sergei
2017/03/30 11:09:17
Just wonder, does compiler generate a warning here
Wladimir Palant
2017/03/30 12:58:58
Nope, for me it doesn't.
|
| + } |
| + type_cstr[type.length()] = 0; |
| + printf(" %s: %i,\n", type_cstr, it->second); |
| + } |
| + printf("};\n"); |
| } |
|
sergei
2017/03/30 11:09:17
This implementation smells but since it's only to
Wladimir Palant
2017/03/30 12:58:58
Yes, this isn't runtime code.
|
| RegExpFilter::DomainMap* RegExpFilter::GetDomains() const |
| { |
| if (!mData.DomainsParsingDone()) |
| { |
| ParseDomains(mData.GetDomainsSource(mText), u'|'); |
| mData.SetDomainsParsingDone(); |