static unsigned char data[100000];
memset(data, 0, sizeof(data));
const wchar_t *pstr = wstr.c_str();
unsigned int ptr = 0, c = 0;
unsigned int length = wstr.length();
for(; c < length; c++){
switch(pstr[c]){
case L'>': ptr++; break;
case L'<': if(ptr) ptr--; break;
case L'+': data[ptr]++; break;
case L'-': data[ptr]--; break;
case L'.': out << data[ptr] << std::flush; break;
case L'[':
if(!data[ptr]){
unsigned int m = 0;
while(1){
switch(pstr[++c]){
case L'[': m++; break;
case L']': if(!m--) goto out1;
}
}
out1:;
} break;
case L']':
if(data[ptr]){
unsigned int m = 0;
while(1){
switch(pstr[--c]){
case L'[': if(!m--) goto out2;
case L']': m++; break;
}
}
out2:;
} break;
case L',': break; //TODO:
}
}
var popup_html = p.document.getElementsByTagName("html").item(0);
var popup_body = p.document.getElementsByTagName("body").item(0);
var i, len = d.styleSheets.length;
for(i = 0; i < len; ++i){
var sheet = p.document.createStyleSheet();
sheet.disabled = d.styleSheets[i].disabled;
sheet.cssText = d.styleSheets[i].cssText;
}
var list = create(p.document);