int main(int argc, char *argv[], char *envp[]) { USHORT w; if(argc == 1 || (argc == 2 && argv[1][0] == '/' && argv[1][1] == '?')) { _verbose(); return 0; } _readstate(); for(w = 1; w < argc; w++) if(_is(argv[w], "numlock")) _setflag(bFlag, VK_NUMLOCK+1, NUMLOCK_ON); else if(_is(argv[w], "capslock")) _setflag(bFlag, VK_CAPSLOCK+1, CAPSLOCK_ON); else if(_is(argv[w], "scrolllock")) _setflag(bFlag, VK_SCRLLOCK+1, SCROLLLOCK_ON); else _error(argv[w]); _writestate(); return 0; }
bool operator()(const PATH& _path, ITEM& _item) { _item.clear(); std::ifstream _is(_path); std::string _line; while (std::getline(_is, _line)) { std::vector<std::string> _split; boost::algorithm::split(_split,_line,boost::is_any_of("=")); if (_split.size() != 2) continue; std::istringstream _boundsStr(_split[0]); std::istringstream _valueStr(_split[1]); gex::Bounds3 _bounds; gex::Scalar _value = 1.0; _boundsStr >> _bounds.min().x(); _boundsStr >> _bounds.min().y(); _boundsStr >> _bounds.min().z(); _boundsStr >> _bounds.max().x(); _boundsStr >> _bounds.max().y(); _boundsStr >> _bounds.max().z(); _valueStr >> _value; if (!_bounds.valid()) continue; _item.insert(_bounds,_value); } return true; }
static int _isj(jd_var *got, jd_var *want, const char *msg, va_list ap) { jd_var vgot = JD_INIT; int rc; jd_to_json(&vgot, got); rc = _is(&vgot, want, msg, ap); jd_release(&vgot); return rc; }
static bool load(tomo::Color3& _c, const tbd::ConfigPath& _path, CONFIG const& _config) { auto&& _clrStr = _config.template get_optional<std::string>(_path); if (!_clrStr) return false; std::istringstream _is(_clrStr.get()); _is >> _c.r() >> _c.g() >> _c.b(); return true; }
int jdt_is_string(jd_var *got, const char *want, const char *msg, ...) { va_list ap; jd_var vwant = JD_INIT; int rc; jd_set_string(&vwant, want); va_start(ap, msg); rc = _is(got, &vwant, msg, ap); va_end(ap); jd_release(&vwant); return rc; }
int jdt_throws(void (*func)(void *), void *ctx, const char *want, const char *msg, ...) { va_list ap; int rc = 0; scope { JD_VAR(caught); JD_SV(vwant, want); try { func(ctx); } catch(e) { jd_assign(caught, e); } va_start(ap, msg); rc = _is(jd_get_ks(caught, "message", 0), vwant, msg, ap); va_end(ap); } return rc; }
// H <- ('a' 'b')+5 bool is_H(_iterator &it){ PEG( LOOP(5) && _is('a') && _is('b') && END_LOOP ); return true; }
// G <- ('a')+ bool is_G(_iterator &it){ PEG( LOOP(1) && _is('a') && END_LOOP ); return true; }
// F <- ('a' | 'b' | ('c' 'd' ('e' | 'f') ) ('g' | 'h') ) 'i' | 'j' bool is_F(_iterator &it){ PEG( _L && _is('a') && _C && _is('b') && _C && _L && _is('c') && _is('d') && _L && _is('e') && _C && _is('f') && _R && _R && _L && _is('g') && _C && _is('h') && _R && _R && _is('i') && _C && _is('j') ); return true; }
// E <- 'd' ('a' 'b' | 'd') bool is_E(_iterator &it){ PEG( _is('d') && _L && _is('a') && _is('b') && _C && _is('d') && _R ); return true; }
// This example is equivalent to is_C: // D <- ('a' | '') 'b' bool is_D(_iterator &it){ _head(2); if(_L(1) && _is('a') && _C(1) && true && _R && _is('b')){ return true; } return _false; }
// The first example of tiny-peg is the following: // A <- 'a' 'b' 'c' 'd' 'e' bool is_A(_iterator &it){ _head(1); if(_is('a') && _is('b') && _is('c') && _is('d') && _is('e')){ return true; } return _false; }
// A <- 'a' 'b' 'c' 'd' 'e' bool is_A(_iterator &it){ PEG( _is('a') && _is('b') && _is('c') && _is('d') && _is('e') ); return true; }
// I denote by "**n" the counterpart of "TIMES(n)." // I <- ('a' 'b')**3 bool is_I(_iterator &it){ PEG( TIMES(3) && _is('a') && _is('b') && END_TIMES ); return true; }
// This example is already appeared: // F <- ('a' | 'b' | ('c' 'd' ('e' | 'f') ) ('g' | 'h') ) 'i' | 'j' bool is_F(_iterator &it){ _head(4); if(_L(1) && _is('a') && _C(1) && _is('b') && _C(1) && _L(2) && _is('c') && _is('d') && _L(3) && _is('e') && _C(3) && _is('f') && _R && _R && _L(2) && _is('g') && _C(2) && _is('h') && _R && _R && _is('i') && _C(0) && _is('j')){ return true; } return _false; }
// G <- 'a' (G | '') bool is_G(_iterator &it){ _head(2); if(_is('a') && _L(1) && is_G(it) && _C(1) && true && _R){ return true; } return _false; }
// B <- &('a' | 'b') 'c' 'd' bool is_B(_iterator &it){ PEG( AND && _is('a') && _C && _is('b') && END_AND && _is('c') && _is('d') ); return true; }
// The next example is // C <- 'a' 'b' | 'b' bool is_C(_iterator &it){ _head(1); if(_is('a') && _is('b') && _C(0) && _is('b')){ return true; } return _false; }
// C <- !('a' 'b') 'a' bool is_C(_iterator &it){ PEG( NOT && _is('a') && _is('b') && END_NOT && _is('a') ); return true; }
// E <- 'd' ('a' 'b' | 'd') bool is_E(_iterator &it){ _head(2); if(_is('d') && _L(1) && _is('a') && _is('b') && _C(1) && _is('d') && _R){ return true; } return _false; }
// D <- ?('a') 'b' bool is_D(_iterator &it){ PEG( H && _is('a') && END_H && _is('b') ); return true; }