void emit_class(EmitUnitState& state, UnitEmitter& ue, const php::Class& cls) { FTRACE(2, " class: {}\n", cls.name->data()); auto const pce = ue.newPreClassEmitter( cls.name, cls.hoistability ); pce->init( std::get<0>(cls.srcInfo.loc), std::get<1>(cls.srcInfo.loc), ue.bcPos(), cls.attrs, cls.parentName ? cls.parentName : s_empty.get(), cls.srcInfo.docComment ); pce->setUserAttributes(cls.userAttributes); for (auto& x : cls.interfaceNames) pce->addInterface(x); for (auto& x : cls.usedTraitNames) pce->addUsedTrait(x); for (auto& x : cls.traitRequirements) pce->addTraitRequirement(x); for (auto& x : cls.traitPrecRules) pce->addTraitPrecRule(x); for (auto& x : cls.traitAliasRules) pce->addTraitAliasRule(x); for (auto& m : cls.methods) { FTRACE(2, " method: {}\n", m->name->data()); auto const fe = ue.newMethodEmitter(m->name, pce); emit_init_func(*fe, *m); pce->addMethod(fe); auto const info = emit_bytecode(state, ue, *m); emit_finish_func(*m, *fe, info); } auto const privateProps = state.index.lookup_private_props(&cls); auto const privateStatics = state.index.lookup_private_statics(&cls); for (auto& prop : cls.properties) { auto const repoTy = [&] (const PropState& ps) -> RepoAuthType { // TODO(#3599292): we don't currently infer closure use var types. if (is_closure(cls)) return RepoAuthType{}; auto it = ps.find(prop.name); if (it == end(ps)) return RepoAuthType{}; auto const rat = make_repo_type(*state.index.array_table_builder(), it->second); merge_repo_auth_type(ue, rat); return rat; }; pce->addProperty( prop.name, prop.attrs, prop.typeConstraint, prop.docComment, &prop.val, (prop.attrs & AttrStatic) ? repoTy(privateStatics) : repoTy(privateProps) ); } for (auto& cconst : cls.constants) { pce->addConstant( cconst.name, cconst.typeConstraint, &cconst.val, cconst.phpCode ); } }
int ProCurveAuthentication::processDeviceConfig(Device *device, ConfigLine *command, char *line, int lineSize) { // Variables... authConfig *authPointer = 0; tacacsServerConfig *tacacsPointer = 0; radiusServerConfig *radiusPointer = 0; int tempInt = 0; int errorCode = 0; // tacacs... if (strcasecmp(command->part(0), "tacacs-server") == 0) { // key... if (strcasecmp(command->part(1), "key") == 0) { if (device->config->reportFormat == Config::Debug) printf("%sTACACS+ Key Line:%s %s\n", device->config->COL_GREEN, device->config->COL_RESET, line); tacacsKey.assign(command->part(2)); } // timeout... else if (strcasecmp(command->part(1), "timeout") == 0) { if (device->config->reportFormat == Config::Debug) printf("%sTACACS+ Timeout Line:%s %s\n", device->config->COL_GREEN, device->config->COL_RESET, line); tacacsTimeout = atoi(command->part(2)); } // host... else if (strcasecmp(command->part(1), "host") == 0) { if (device->config->reportFormat == Config::Debug) printf("%sTACACS+ Host Line:%s %s\n", device->config->COL_GREEN, device->config->COL_RESET, line); tacacsPointer = addTacacsServer(); tacacsPointer->address.assign(command->part(2)); if (strcasecmp(command->part(3), "key") == 0) tacacsPointer->key.assign(command->part(4)); else tacacsPointer->key.assign(tacacsKey); tacacsPointer->timeout = tacacsTimeout; if (tacacsFirst == true) tacacsPointer->description.assign(i18n("Primary")); else tacacsPointer->description.assign(i18n("Backup")); tacacsFirst = false; } // NOT PROCESSED... else device->lineNotProcessed(line); } // radius... else if (strcasecmp(command->part(0), "radius-server") == 0) { // key... if (strcasecmp(command->part(1), "key") == 0) { if (device->config->reportFormat == Config::Debug) printf("%sRADIUS Key Line:%s %s\n", device->config->COL_GREEN, device->config->COL_RESET, line); radiusKey.assign(command->part(2)); } // timeout... else if (strcasecmp(command->part(1), "timeout") == 0) { if (device->config->reportFormat == Config::Debug) printf("%sRADIUS Timeout Line:%s %s\n", device->config->COL_GREEN, device->config->COL_RESET, line); radiusTimeout = atoi(command->part(2)); } // host... else if (strcasecmp(command->part(1), "host") == 0) { if (device->config->reportFormat == Config::Debug) printf("%sRADIUS Host Line:%s %s\n", device->config->COL_GREEN, device->config->COL_RESET, line); radiusPointer = addRadiusServer(); radiusPointer->address.assign(command->part(2)); radiusPointer->key.assign(radiusKey); tempInt = 3; while (tempInt < command->parts) { if (strcasecmp(command->part(3), "key") == 0) { tempInt++; radiusPointer->key.assign(command->part(tempInt)); } tempInt++; } radiusPointer->timeout = radiusTimeout; if (radiusFirst == true) radiusPointer->description.assign(i18n("Primary")); else radiusPointer->description.assign(i18n("Backup")); radiusFirst = false; } // NOT PROCESSED... else device->lineNotProcessed(line); } // password manager... else if ((strcasecmp(command->part(0), "password") == 0) && (strcasecmp(command->part(1), "manager") == 0)) { if (device->config->reportFormat == Config::Debug) printf("%sManager Password Line:%s %s\n", device->config->COL_GREEN, device->config->COL_RESET, line); managerPresent = true; } // password operator... else if ((strcasecmp(command->part(0), "password") == 0) && (strcasecmp(command->part(1), "operator") == 0)) { if (device->config->reportFormat == Config::Debug) printf("%sOperator Password Line:%s %s\n", device->config->COL_GREEN, device->config->COL_RESET, line); operatorPresent = true; } // aaa authentication... else if ((strcasecmp(command->part(0), "aaa") == 0) && (strcasecmp(command->part(1), "authentication") == 0) && ((strcasecmp(command->part(3), "login") == 0) || (strcasecmp(command->part(3), "enable") == 0))) { if (device->config->reportFormat == Config::Debug) printf("%sAAA Authentication Line:%s %s\n", device->config->COL_GREEN, device->config->COL_RESET, line); authPointer = addMethod(); authPointer->appliesTo.assign(command->part(2)); authPointer->level.assign(command->part(3)); if (strcasecmp(command->part(4), "local") == 0) authPointer->method = localAuth; else if (strcasecmp(command->part(4), "radius") == 0) authPointer->method = radiusAuth; else if (strcasecmp(command->part(4), "tacacs") == 0) authPointer->method = tacacsAuth; if (command->parts == 6) { authPointer = addMethod(); authPointer->appliesTo.assign(command->part(2)); authPointer->level.assign(command->part(3)); if (strcasecmp(command->part(5), "local") == 0) authPointer->method = localAuth; else if (strcasecmp(command->part(5), "radius") == 0) authPointer->method = radiusAuth; else if (strcasecmp(command->part(5), "tacacs") == 0) authPointer->method = tacacsAuth; } } // NOT PROCESSED... else device->lineNotProcessed(line); return errorCode; }
void emit_class(EmitUnitState& state, UnitEmitter& ue, const php::Class& cls) { FTRACE(2, " class: {}\n", cls.name->data()); auto const pce = ue.newPreClassEmitter( cls.name, cls.hoistability ); pce->init( std::get<0>(cls.srcInfo.loc), std::get<1>(cls.srcInfo.loc), ue.bcPos(), cls.attrs, cls.parentName ? cls.parentName : s_empty.get(), cls.srcInfo.docComment ); pce->setUserAttributes(cls.userAttributes); for (auto& x : cls.interfaceNames) pce->addInterface(x); for (auto& x : cls.usedTraitNames) pce->addUsedTrait(x); for (auto& x : cls.requirements) pce->addClassRequirement(x); for (auto& x : cls.traitPrecRules) pce->addTraitPrecRule(x); for (auto& x : cls.traitAliasRules) pce->addTraitAliasRule(x); pce->setNumDeclMethods(cls.numDeclMethods); pce->setIfaceVtableSlot(state.index.lookup_iface_vtable_slot(&cls)); for (auto& m : cls.methods) { FTRACE(2, " method: {}\n", m->name->data()); auto const fe = ue.newMethodEmitter(m->name, pce); emit_init_func(*fe, *m); pce->addMethod(fe); auto const info = emit_bytecode(state, ue, *m); emit_finish_func(*m, *fe, info); } std::vector<Type> useVars; if (is_closure(cls)) { auto f = find_method(&cls, s_invoke.get()); useVars = state.index.lookup_closure_use_vars(f); } auto uvIt = useVars.begin(); auto const privateProps = state.index.lookup_private_props(&cls); auto const privateStatics = state.index.lookup_private_statics(&cls); for (auto& prop : cls.properties) { auto const makeRat = [&] (const Type& ty) -> RepoAuthType { if (ty.couldBe(TCls)) { return RepoAuthType{}; } auto const rat = make_repo_type(*state.index.array_table_builder(), ty); merge_repo_auth_type(ue, rat); return rat; }; auto const privPropTy = [&] (const PropState& ps) -> Type { if (is_closure(cls)) { // For closures use variables will be the first properties of the // closure object, in declaration order if (uvIt != useVars.end()) return *uvIt++; return Type{}; } auto it = ps.find(prop.name); if (it == end(ps)) return Type{}; return it->second; }; Type propTy; auto const attrs = prop.attrs; if (attrs & AttrPrivate) { propTy = privPropTy((attrs & AttrStatic) ? privateStatics : privateProps); } else if ((attrs & AttrPublic) && (attrs & AttrStatic)) { propTy = state.index.lookup_public_static(&cls, prop.name); } pce->addProperty( prop.name, prop.attrs, prop.typeConstraint, prop.docComment, &prop.val, makeRat(propTy) ); } assert(uvIt == useVars.end()); for (auto& cconst : cls.constants) { if (!cconst.val.hasValue()) { pce->addAbstractConstant( cconst.name, cconst.typeConstraint, cconst.isTypeconst ); } else { pce->addConstant( cconst.name, cconst.typeConstraint, &cconst.val.value(), cconst.phpCode, cconst.isTypeconst ); } } pce->setEnumBaseTy(cls.enumBaseTy); }
void JucerDocument::getOptionalMethods (StringArray& baseClasses, StringArray& returnValues, StringArray& methods, StringArray& initialContents) const { addMethod ("Component", "void", "visibilityChanged()", "", baseClasses, returnValues, methods, initialContents); addMethod ("Component", "void", "moved()", "", baseClasses, returnValues, methods, initialContents); addMethod ("Component", "void", "parentHierarchyChanged()", "", baseClasses, returnValues, methods, initialContents); addMethod ("Component", "void", "parentSizeChanged()", "", baseClasses, returnValues, methods, initialContents); addMethod ("Component", "void", "lookAndFeelChanged()", "", baseClasses, returnValues, methods, initialContents); addMethod ("Component", "bool", "hitTest (int x, int y)", "return true;", baseClasses, returnValues, methods, initialContents); addMethod ("Component", "void", "broughtToFront()", "", baseClasses, returnValues, methods, initialContents); addMethod ("Component", "void", "filesDropped (const StringArray& filenames, int mouseX, int mouseY)", "", baseClasses, returnValues, methods, initialContents); addMethod ("Component", "void", "handleCommandMessage (int commandId)", "", baseClasses, returnValues, methods, initialContents); addMethod ("Component", "void", "childrenChanged()", "", baseClasses, returnValues, methods, initialContents); addMethod ("Component", "void", "enablementChanged()", "", baseClasses, returnValues, methods, initialContents); addMethod ("Component", "void", "mouseMove (const MouseEvent& e)", "", baseClasses, returnValues, methods, initialContents); addMethod ("Component", "void", "mouseEnter (const MouseEvent& e)", "", baseClasses, returnValues, methods, initialContents); addMethod ("Component", "void", "mouseExit (const MouseEvent& e)", "", baseClasses, returnValues, methods, initialContents); addMethod ("Component", "void", "mouseDown (const MouseEvent& e)", "", baseClasses, returnValues, methods, initialContents); addMethod ("Component", "void", "mouseDrag (const MouseEvent& e)", "", baseClasses, returnValues, methods, initialContents); addMethod ("Component", "void", "mouseUp (const MouseEvent& e)", "", baseClasses, returnValues, methods, initialContents); addMethod ("Component", "void", "mouseDoubleClick (const MouseEvent& e)", "", baseClasses, returnValues, methods, initialContents); addMethod ("Component", "void", "mouseWheelMove (const MouseEvent& e, const MouseWheelDetails& wheel)", "", baseClasses, returnValues, methods, initialContents); addMethod ("Component", "bool", "keyPressed (const KeyPress& key)", "return false; // Return true if your handler uses this key event, or false to allow it to be passed-on.", baseClasses, returnValues, methods, initialContents); addMethod ("Component", "bool", "keyStateChanged (const bool isKeyDown)", "return false; // Return true if your handler uses this key event, or false to allow it to be passed-on.", baseClasses, returnValues, methods, initialContents); addMethod ("Component", "void", "modifierKeysChanged (const ModifierKeys& modifiers)", "", baseClasses, returnValues, methods, initialContents); addMethod ("Component", "void", "focusGained (FocusChangeType cause)", "", baseClasses, returnValues, methods, initialContents); addMethod ("Component", "void", "focusLost (FocusChangeType cause)", "", baseClasses, returnValues, methods, initialContents); addMethod ("Component", "void", "focusOfChildComponentChanged (FocusChangeType cause)", "", baseClasses, returnValues, methods, initialContents); addMethod ("Component", "void", "modifierKeysChanged (const ModifierKeys& modifiers)", "", baseClasses, returnValues, methods, initialContents); addMethod ("Component", "void", "inputAttemptWhenModal()", "", baseClasses, returnValues, methods, initialContents); }