virtual Version GetVersion() { return Version("Allows locking of the server to stop all incoming connections until unlocked again", VF_VENDOR); }
virtual Version GetVersion() { return Version("Adds user mode +c, which if set, users must be on a common channel with you to private message you", VF_VENDOR); }
Version GetVersion() { return Version("Allows the customisation of penalty levels."); }
static int GenerateAvahiConfig(const char *path) { FILE *fout; Writer *writer = NULL; fout = fopen(path, "w+"); if (fout == NULL) { CfOut(OUTPUT_LEVEL_ERROR, "", "Unable to open %s", path); return -1; } writer = FileWriter(fout); fprintf(fout, "<?xml version=\"1.0\" standalone='no'?>\n"); fprintf(fout, "<!DOCTYPE service-group SYSTEM \"avahi-service.dtd\">\n"); XmlComment(writer, "This file has been automatically generated by cf-serverd."); XmlStartTag(writer, "service-group", 0); #ifdef HAVE_NOVA fprintf(fout,"<name replace-wildcards=\"yes\" >CFEngine Enterprise %s Policy Hub on %s </name>\n", Version(), "%h"); #else fprintf(fout,"<name replace-wildcards=\"yes\" >CFEngine Community %s Policy Server on %s </name>\n", Version(), "%h"); #endif XmlStartTag(writer, "service", 0); XmlTag(writer, "type", "_cfenginehub._tcp",0); DetermineCfenginePort(); XmlTag(writer, "port", STR_CFENGINEPORT, 0); XmlEndTag(writer, "service"); XmlEndTag(writer, "service-group"); fclose(fout); return 0; }
namespace otawa { static SilentFeature::Maker<LoopUnroller> UNROLLED_LOOPS_MAKER; /** * This feature that the loops have been unrolled at least once. * * @ingroup cfg */ SilentFeature UNROLLED_LOOPS_FEATURE ("otawa::UNROLLED_LOOPS_FEATURE", UNROLLED_LOOPS_MAKER); /** * Put on the header ex-header of a loop, this property gives the BB of the unrolled loop. * * @par Hooks * @li @ref BasicBlock * * @ingroup cfg */ Identifier<BasicBlock*> UNROLLED_FROM("otawa::UNROLLED_FROM", 0); /** * @class LoopUnroller * * This processor unrolls the first iteration of each loop * * @par Configuration * none * * @par Required features * @li @ref DOMINANCE_FEATURE * @li @ref LOOP_HEADERS_FEATURE * @li @ref FLOW_FACT_FEATURE * @li @ref LOOP_INFO_FEATURE * @li @ref COLLECTED_CFGS_FEATURE * * @par Provided features * @li @ref UNROLLED_LOOPS_FEATURE * * @par Statistics * none * * @ingroup cfg */ p::declare LoopUnroller::reg = p::init("otawa::LoopUnroller", Version(1, 1, 0)) .base(Processor::reg) .maker<LoopUnroller>() .use(DOMINANCE_FEATURE) .use(LOOP_HEADERS_FEATURE) .use(LOOP_INFO_FEATURE) .use(COLLECTED_CFG_FEATURE) .invalidate(COLLECTED_CFG_FEATURE) .provide(COLLECTED_CFG_FEATURE) .provide(UNROLLED_LOOPS_FEATURE); LoopUnroller::LoopUnroller(p::declare& r): Processor(r), coll(new CFGCollection()), idx(0) { } void LoopUnroller::processWorkSpace(otawa::WorkSpace *fw) { int cfgidx = 0; const CFGCollection *orig_coll = INVOLVED_CFGS(fw); // Create the new VCFG collection first, so that it will be available when we do the loop unrolling for (CFGCollection::Iterator cfg(*orig_coll); cfg; cfg++, cfgidx++) { VirtualCFG *vcfg = new VirtualCFG(false); coll->add(vcfg); INDEX(vcfg) = cfgidx; vcfg->addBB(vcfg->entry()); } cfgidx = 0; for (CFGCollection::Iterator vcfg(*coll), cfg(*orig_coll); vcfg; vcfg++, cfg++) { ASSERT(INDEX(vcfg) == INDEX(cfg)); LABEL(vcfg) = cfg->label(); INDEX(vcfg->entry()) = 0; idx = 1; // if (isVerbose()) { cout << "Processing CFG: " << cfg->label() << "\n"; //} /* !!GRUIK!! Ca serait bien d'avoir une classe VCFGCollection */ VirtualCFG *casted_vcfg = static_cast<otawa::VirtualCFG*>((otawa::CFG*)vcfg); unroll((otawa::CFG*) cfg, 0, casted_vcfg); if (ENTRY_CFG(fw) == cfg) ENTRY_CFG(fw) = vcfg; casted_vcfg->addBB(vcfg->exit()); INDEX(vcfg->exit()) = idx; } } /** */ void LoopUnroller::cleanup(WorkSpace *ws) { INVOLVED_CFGS(ws) = coll; ENTRY_CFG(ws) = coll->get(0); } void LoopUnroller::unroll(otawa::CFG *cfg, BasicBlock *header, VirtualCFG *vcfg) { VectorQueue<BasicBlock*> workList; VectorQueue<BasicBlock*> loopList; VectorQueue<BasicBlock*> virtualCallList; genstruct::Vector<BasicBlock*> doneList; typedef genstruct::Vector<Pair<VirtualBasicBlock*, Edge::kind_t> > BackEdgePairVector; BackEdgePairVector backEdges; bool dont_unroll = false; BasicBlock *unrolled_from; int start; /* Avoid unrolling loops with LOOP_COUNT of 0, since it would create a LOOP_COUNT of -1 for the non-unrolled part of the loop*/ /* if (header && (ipet::LOOP_COUNT(header) == 0)) { dont_unroll = true; } */ //if (header) dont_unroll = true; start = dont_unroll ? 1 : 0; for (int i = start; ((i < 2) && header) || (i < 1); i++) { doneList.clear(); ASSERT(workList.isEmpty()); ASSERT(loopList.isEmpty()); ASSERT(doneList.isEmpty()); workList.put(header ? header : cfg->entry()); doneList.add(header ? header : cfg->entry()); genstruct::Vector<BasicBlock*> bbs; while (!workList.isEmpty()) { BasicBlock *current = workList.get(); if (LOOP_HEADER(current) && (current != header)) { /* we enter another loop */ loopList.put(current); /* add exit edges destinations to the worklist */ for (genstruct::Vector<Edge*>::Iterator exitedge(**EXIT_LIST(current)); exitedge; exitedge++) { if (!doneList.contains(exitedge->target())) { workList.put(exitedge->target()); doneList.add(exitedge->target()); } } } else { VirtualBasicBlock *new_bb = 0; if ((!current->isEntry()) && (!current->isExit())) { /* Duplicate the current basic block */ new_bb = new VirtualBasicBlock(current); new_bb->removeAllProp(&ENCLOSING_LOOP_HEADER); new_bb->removeAllProp(&EXIT_LIST); new_bb->removeAllProp(&REVERSE_DOM); new_bb->removeAllProp(&LOOP_EXIT_EDGE); new_bb->removeAllProp(&LOOP_HEADER); new_bb->removeAllProp(&ENTRY); /* Remember the call block so we can correct its destination when we have processed it */ if (VIRTUAL_RETURN_BLOCK(new_bb)) virtualCallList.put(new_bb); if ((current == header) && (!dont_unroll)) { if (i == 0) { unrolled_from = new_bb; } else { UNROLLED_FROM(new_bb) = unrolled_from; } } /* if (ipet::LOOP_COUNT(new_bb) != -1) { if (i == 0) { new_bb->removeAllProp(&ipet::LOOP_COUNT); } else { int old_count = ipet::LOOP_COUNT(new_bb); new_bb->removeAllProp(&ipet::LOOP_COUNT); ipet::LOOP_COUNT(new_bb) = old_count - (1 - start); ASSERT(ipet::LOOP_COUNT(new_bb) >= 0); } } */ INDEX(new_bb) = idx; idx++; vcfg->addBB(new_bb); bbs.add(current); map.put(current, new_bb); } /* add successors which are in loop (including possible sub-loop headers) */ for (BasicBlock::OutIterator outedge(current); outedge; outedge++) { if (outedge->target() == cfg->exit()) continue; if (outedge->kind() == Edge::CALL) continue; if (ENCLOSING_LOOP_HEADER(outedge->target()) == header) { // cout << "Test for add: " << outedge->target()->number() << "\n"; if (!doneList.contains(outedge->target())) { workList.put(outedge->target()); doneList.add(outedge->target()); } } if (LOOP_EXIT_EDGE(outedge)) { ASSERT(new_bb); /* Connect exit edge */ VirtualBasicBlock *vdst = map.get(outedge->target()); new Edge(new_bb, vdst, outedge->kind()); } } } } while (!virtualCallList.isEmpty()) { BasicBlock *vcall = virtualCallList.get(); BasicBlock *vreturn = map.get(VIRTUAL_RETURN_BLOCK(vcall), 0); ASSERT(vreturn != 0); VIRTUAL_RETURN_BLOCK(vcall) = vreturn; } while (!loopList.isEmpty()) { BasicBlock *loop = loopList.get(); unroll(cfg, loop, vcfg); } /* Connect the internal edges for the current loop */ for (genstruct::Vector<BasicBlock*>::Iterator bb(bbs); bb; bb++) { for (BasicBlock::OutIterator outedge(bb); outedge; outedge++) { if (LOOP_EXIT_EDGE(outedge)) continue; if (LOOP_HEADER(outedge->target()) && (outedge->target() != header)) continue; if (outedge->target() == cfg->exit()) continue; VirtualBasicBlock *vsrc = map.get(*bb, 0); VirtualBasicBlock *vdst = map.get(outedge->target(), 0); if (outedge->kind() == Edge::CALL) { CFG *called_cfg = outedge->calledCFG(); int called_idx = INDEX(called_cfg); CFG *called_vcfg = coll->get(called_idx); Edge *vedge = new Edge(vsrc, called_vcfg->entry(), Edge::CALL); CALLED_BY(called_vcfg).add(vedge); ENTRY(called_vcfg->entry()) = called_vcfg; CALLED_CFG(outedge) = called_vcfg; /* XXX: ??!? */ } else if ((outedge->target() != header) || ((i == 1) /* XXX && !dont_unroll XXX*/ )) { new Edge(vsrc, vdst, outedge->kind()); } else { backEdges.add(pair(vsrc, outedge->kind())); } } } if (i == start) { /* Connect virtual entry edges */ if (header) { for (BasicBlock::InIterator inedge(header); inedge; inedge++) { if (Dominance::dominates(header, inedge->source())) continue; /* skip back edges */ if (inedge->source() == cfg->entry()) continue; VirtualBasicBlock *vsrc = map.get(inedge->source()); VirtualBasicBlock *vdst = map.get(header); new Edge(vsrc, vdst, inedge->kind()); } } } else { /* Connect virtual backedges from the first to the other iterations */ for (BackEdgePairVector::Iterator iter(backEdges); iter; iter++) { VirtualBasicBlock *vdst = map.get(header); new Edge((*iter).fst, vdst, (*iter).snd); } } } if (!header) { /* add main entry edges */ for (BasicBlock::OutIterator outedge(cfg->entry()); outedge; outedge++) { VirtualBasicBlock *vdst = map.get(outedge->target()); new Edge(vcfg->entry(), vdst, Edge::VIRTUAL_CALL); } /* add main exit edges */ for (BasicBlock::InIterator inedge(cfg->exit()); inedge; inedge++) { VirtualBasicBlock *vsrc = map.get(inedge->source()); new Edge(vsrc, vcfg->exit(), Edge::VIRTUAL_RETURN); } } } } /* end namespace */
virtual Version GetVersion() { return Version("$Id: m_spy.cpp 11223 2009-03-15 12:42:35Z psychon $", VF_VENDOR, API_VERSION); }
Version GetVersion() override { return Version("Provides custom prefix channel modes", VF_VENDOR); }
Version GetVersion() override { return Version("Disallows /LIST for recently connected clients to hinder spam bots", VF_VENDOR); }
Version GetVersion() { return Version("Provides channel mode +" + ConvToStr(mf.GetModeChar()) + " (slowmode)"); }
Version GetVersion() override { return Version("Provides user and channel mode +z to allow for SSL-only channels, queries and notices.", VF_VENDOR); }
Version GetVersion() override { return Version("Provides the +E channel mode - for blocking of similar messages", VF_COMMON|VF_VENDOR, rm.GetModuleSettings()); }
virtual Version GetVersion() { return Version("$Id: m_connflood.cpp 11388 2009-05-24 02:53:45Z danieldg $", VF_VENDOR,API_VERSION); }
virtual Version GetVersion() { return Version("Provides support for channel mode +P to provide permanent channels",VF_VENDOR); }
Int GetTexture2DNameIndex( const String &name) const; const String& GetSpriteSheetName(Int index) const; Int GetSpriteSheetNameIndex( const String &name) const; Int GetNumCollisionModels() const; SpriteCollisionModel* GetCollisionModel(Int index); const SpriteCollisionModel& GetCollisionModel(Int index) const; Int GetCollisionModelIndex( const String &name) const; Int GetNumFrameConfigs() const; SpriteFrameConfig* GetFrameConfig(Int index); const SpriteFrameConfig& GetFrameConfig(Int index) const; Int GetFrameConfigIndex( const String &name) const; Int GetNumActions() const; SpriteAction* GetAction(Int index); const SpriteAction& GetAction(Int index) const; Int GetActionIndex(const String &name) const; // Misc ErrorType SaveAs(const String &fileName, const Version &version = Version(0, 1)); // Operators SpriteData& operator= (const SpriteData &that); Bool operator==(const SpriteData &that) const; Bool operator!=(const SpriteData &that) const; }; } #endif // FastSpriteDataHppIncluded
virtual Version GetVersion() { return Version("Provides support for RFC1413 ident lookups", VF_VENDOR); }
virtual Version GetVersion() { return Version("$Id: m_sha256.cpp 11223 2009-03-15 12:42:35Z psychon $", VF_VENDOR|VF_SERVICEPROVIDER, API_VERSION); }
const Version applicationVersion() { return Version( WOLFRAME_MAJOR_VERSION, WOLFRAME_MINOR_VERSION ,WOLFRAME_REVISION); }
virtual Version GetVersion() { return Version("$Id: m_showwhois.cpp 11311 2009-04-17 21:10:06Z danieldg $",VF_COMMON|VF_VENDOR,API_VERSION); }
bool CCheatMgr::Process( CheatCode nCheatCode, CParsedMsg &cMsg ) { if ( nCheatCode <= CHEAT_NONE || nCheatCode >= CHEAT_MAX ) return false; #ifdef _FINAL // Don't do cheats in multiplayer... if (IsMultiplayerGame()) { // Well, okay, let them toggle between 1st and 3rd person ;) // and, well, blood is pretty cool... switch ( nCheatCode ) { case CHEAT_CHASETOGGLE: ChaseToggle(); break; case CHEAT_EXITLEVEL: // exit the current level SetExitLevel(); break; case CHEAT_NEXTMISSION: // exit the current mission NextMission(); break; case CHEAT_BOOT: // boot players BootPlayer(cMsg); break; default : return false; break; } m_bPlayerCheated = LTTRUE; return true; } #endif // _FINAL // process cheat codes switch ( nCheatCode ) { case CHEAT_GOD: // god mode toggle SetGodMode(!s_CheatInfo[nCheatCode].bActive); break; case CHEAT_SKILLZ: // give em skill points GetSkills(); break; case CHEAT_ARMOR: // full armor SetArmor(); break; case CHEAT_HEALTH: // full health SetHealth(); break; case CHEAT_EXITLEVEL: // exit the current level SetExitLevel(); break; case CHEAT_VERSION: // display version info Version(); break; case CHEAT_BUILDGUID: // display build guid BuildGuid(); break; case CHEAT_INVISIBLE: // time to mess with the AI SetInvisible(!s_CheatInfo[nCheatCode].bActive); break; case CHEAT_BODYGOLFING: // bodies fly far BodyGolfing(!s_CheatInfo[nCheatCode].bActive); break; case CHEAT_POS: // show/hide player position SetPos(!s_CheatInfo[nCheatCode].bActive); break; #ifndef _TO2DEMO case CHEAT_KFA: // give em everything SetKFA(); break; case CHEAT_AMMO: // full ammo SetAmmo(); break; case CHEAT_MODSQUAD: // give all mods for current weapons ModSquad(); break; case CHEAT_CONSOLE: SetConsole(!s_CheatInfo[nCheatCode].bActive); break; case CHEAT_NEXTMISSION: // exit the current mission NextMission(); break; case CHEAT_BOOT: // exit the current mission BootPlayer(cMsg); break; case CHEAT_FULL_WEAPONS: // give all weapons SetFullWeapons(); break; case CHEAT_SNOWMOBILE: // spawn in snowmobile Snowmobile(!s_CheatInfo[nCheatCode].bActive); break; case CHEAT_FULL_GEAR: // give all gear FullGear(); break; case CHEAT_TEARS: // toggle tears cheat Tears(!s_CheatInfo[nCheatCode].bActive); break; case CHEAT_GIMMEGUN: GimmeGun( cMsg ); break; case CHEAT_GIMMEMOD: GimmeMod( cMsg ); break; case CHEAT_GIMMEGEAR: GimmeGear( cMsg ); break; case CHEAT_GIMMEAMMO: GimmeAmmo( cMsg ); break; case CHEAT_ENDGAME: ToggleEndgameFlag(); break; #ifndef _FINAL case CHEAT_CHASETOGGLE: // toggle 3rd person view ChaseToggle(); break; case CHEAT_CLIP: // toggle clipping mode SetClipMode(!s_CheatInfo[nCheatCode].bActive); break; case CHEAT_TELEPORT: // teleport to beginning Teleport(); break; case CHEAT_CAM_POSROT: // show/hide camera position/rotation SetCamPosRot(!s_CheatInfo[nCheatCode].bActive); break; case CHEAT_POSWEAPON: // toggle adjust of weapon pos PosWeapon(!s_CheatInfo[nCheatCode].bActive); break; case CHEAT_POSWEAPON_MUZZLE: // toggle adjust of weapon muzzle pos PosWeaponMuzzle(!s_CheatInfo[nCheatCode].bActive); break; case CHEAT_WEAPON_BREACHOFFSET: // toggle adjust of weapon breach offset pos WeaponBreachOffset(!s_CheatInfo[nCheatCode].bActive); break; case CHEAT_LIGHTSCALE: // toggle client light scale offset LightScale(!s_CheatInfo[nCheatCode].bActive); break; case CHEAT_LIGHTADD: // toggle client light add offset LightAdd(!s_CheatInfo[nCheatCode].bActive); break; case CHEAT_FOV: // toggle fov cheat FOV(!s_CheatInfo[nCheatCode].bActive); break; case CHEAT_REMOVEAI: // remove all ai RemoveAI(!s_CheatInfo[nCheatCode].bActive); break; case CHEAT_TRIGGERBOX: // toggle trigger boxes on/off TriggerBox(!s_CheatInfo[nCheatCode].bActive); break; case CHEAT_POS1STCAM: // toggle 1st person camera adjust on/off Pos1stCam(!s_CheatInfo[nCheatCode].bActive); break; #endif // _FINAL #endif // _TO2DEMO default: return false; // skip setting global cheat indicator for unhandled cheats } m_bPlayerCheated = LTTRUE; return true; }
Version GetVersion() { return Version("Reports ircd stats to a locally running Telegraf instance"); }
void TexinfoManual(const char *source_dir, const char *output_file) { char filename[CF_BUFSIZE]; const SubTypeSyntax *st; Item *done = NULL; FILE *fout; int i; if ((fout = fopen(output_file, "w")) == NULL) { CfOut(cf_error, "fopen", "Unable to open %s for writing\n", filename); return; } TexinfoHeader(fout); /* General background */ fprintf(fout, "@c *****************************************************\n"); fprintf(fout, "@c * CHAPTER \n"); fprintf(fout, "@c *****************************************************\n"); fprintf(fout, "@node Getting started\n@chapter CFEngine %s -- Getting started\n\n", Version()); IncludeManualFile(source_dir, fout, "reference_basics.texinfo"); /* Control promises */ fprintf(fout, "@c *****************************************************\n"); fprintf(fout, "@c * CHAPTER \n"); fprintf(fout, "@c *****************************************************\n"); fprintf(fout, "@node Control Promises\n@chapter Control promises\n\n"); IncludeManualFile(source_dir, fout, "reference_control_intro.texinfo"); fprintf(fout, "@menu\n"); for (i = 0; CF_ALL_BODIES[i].bundle_type != NULL; ++i) { fprintf(fout, "* control %s::\n", CF_ALL_BODIES[i].bundle_type); } fprintf(fout, "@end menu\n"); for (i = 0; CF_ALL_BODIES[i].bundle_type != NULL; i++) { fprintf(fout, "@node control %s\n@section @code{%s} control promises\n\n", CF_ALL_BODIES[i].bundle_type, CF_ALL_BODIES[i].bundle_type); snprintf(filename, CF_BUFSIZE - 1, "control/%s_example.texinfo", CF_ALL_BODIES[i].bundle_type); IncludeManualFile(source_dir, fout, filename); snprintf(filename, CF_BUFSIZE - 1, "control/%s_notes.texinfo", CF_ALL_BODIES[i].bundle_type); IncludeManualFile(source_dir, fout, filename); TexinfoBodyParts(source_dir, fout, CF_ALL_BODIES[i].bs, CF_ALL_BODIES[i].bundle_type); } /* Components */ for (i = 0; i < CF3_MODULES; i++) { st = (CF_ALL_SUBTYPES[i]); if ((st == CF_COMMON_SUBTYPES) || (st == CF_EXEC_SUBTYPES) || (st == CF_REMACCESS_SUBTYPES) || (st == CF_KNOWLEDGE_SUBTYPES) || (st == CF_MEASUREMENT_SUBTYPES)) { CfOut(cf_verbose, "", "Dealing with chapter / bundle type %s\n", st->bundle_type); fprintf(fout, "@c *****************************************************\n"); fprintf(fout, "@c * CHAPTER \n"); fprintf(fout, "@c *****************************************************\n"); if (strcmp(st->bundle_type, "*") == 0) { fprintf(fout, "@node Bundles for common\n@chapter Bundles of @code{common}\n\n"); } else { fprintf(fout, "@node Bundles for %s\n@chapter Bundles of @code{%s}\n\n", st->bundle_type, st->bundle_type); } } if (!IsItemIn(done, st->bundle_type)) /* Avoid multiple reading if several modules */ { PrependItem(&done, st->bundle_type, NULL); snprintf(filename, CF_BUFSIZE - 1, "bundletypes/%s_example.texinfo", st->bundle_type); IncludeManualFile(source_dir, fout, filename); snprintf(filename, CF_BUFSIZE - 1, "bundletypes/%s_notes.texinfo", st->bundle_type); IncludeManualFile(source_dir, fout, filename); fprintf(fout, "@menu\n"); for (int k = 0; k < CF3_MODULES; ++k) { for (int j = 0; CF_ALL_SUBTYPES[k][j].bundle_type != NULL; ++j) { const char *constraint_type_name; if (strcmp(CF_ALL_SUBTYPES[k][j].subtype, "*") == 0) { constraint_type_name = "Miscellaneous"; } else { constraint_type_name = CF_ALL_SUBTYPES[k][j].subtype; } const char *bundle_type_name; if (strcmp(CF_ALL_SUBTYPES[k][j].bundle_type, "*") == 0) { bundle_type_name = "common"; } else { bundle_type_name = CF_ALL_SUBTYPES[k][j].bundle_type; } fprintf(fout, "* %s in %s promises: %s in %s promises\n", CF_ALL_SUBTYPES[k][j].subtype, bundle_type_name, constraint_type_name, bundle_type_name); } } fprintf(fout, "@end menu\n"); } TexinfoPromiseTypesFor(source_dir, fout, st); } /* Special functions */ CfOut(cf_verbose, "", "Dealing with chapter / bundle type - special functions\n"); fprintf(fout, "@c *****************************************************\n"); fprintf(fout, "@c * CHAPTER \n"); fprintf(fout, "@c *****************************************************\n"); fprintf(fout, "@node Special functions\n@chapter Special functions\n\n"); fprintf(fout, "@menu\n"); fprintf(fout, "* Introduction to functions::\n"); for (i = 0; CF_FNCALL_TYPES[i].name != NULL; ++i) { fprintf(fout, "* Function %s::\n", CF_FNCALL_TYPES[i].name); } fprintf(fout, "@end menu\n"); fprintf(fout, "@node Introduction to functions\n@section Introduction to functions\n\n"); IncludeManualFile(source_dir, fout, "functions_intro.texinfo"); for (i = 0; CF_FNCALL_TYPES[i].name != NULL; i++) { fprintf(fout, "@node Function %s\n@section Function %s \n\n", CF_FNCALL_TYPES[i].name, CF_FNCALL_TYPES[i].name); TexinfoSpecialFunction(source_dir, fout, CF_FNCALL_TYPES[i]); } /* Special variables */ CfOut(cf_verbose, "", "Dealing with chapter / bundle type - special variables\n"); fprintf(fout, "@c *****************************************************\n"); fprintf(fout, "@c * CHAPTER \n"); fprintf(fout, "@c *****************************************************\n"); fprintf(fout, "@node Special Variables\n@chapter Special Variables\n\n"); static const char *scopes[] = { "const", "edit", "match", "mon", "sys", "this", NULL, }; fprintf(fout, "@menu\n"); for (const char **s = scopes; *s != NULL; ++s) { fprintf(fout, "* Variable context %s::\n", *s); } fprintf(fout, "@end menu\n"); // scopes const and sys NewScope("edit"); NewScalar("edit", "filename", "x", cf_str); NewScope("match"); NewScalar("match", "0", "x", cf_str); for (const char **s = scopes; *s != NULL; ++s) { TexinfoVariables(source_dir, fout, (char *) *s); } // Log files CfOut(cf_verbose, "", "Dealing with chapter / bundle type - Logs and records\n"); fprintf(fout, "@c *****************************************************\n"); fprintf(fout, "@c * CHAPTER \n"); fprintf(fout, "@c *****************************************************\n"); fprintf(fout, "@node Logs and records\n@chapter Logs and records\n\n"); IncludeManualFile(source_dir, fout, "reference_logs.texinfo"); TexinfoFooter(fout); fclose(fout); }
Version GetVersion() { return Version("Blocks clients not replying to CTCP."); }
/* SPI initialization and configuration */ int lgw_spi_open(void **spi_target_ptr) { struct mpsse_context *mpsse = NULL; int a, b; /* check input variables */ CHECK_NULL(spi_target_ptr); /* cannot be null, must point on a void pointer (*spi_target_ptr can be null) */ /* try to open the first available FTDI device matching VID/PID parameters */ mpsse = OpenIndex(VID,PID,SPI0, SIX_MHZ, MSB, IFACE_A, NULL, NULL, 0); if (mpsse == NULL) { DEBUG_MSG("ERROR: MPSSE OPEN FUNCTION RETURNED NULL\n"); return LGW_SPI_ERROR; } if (mpsse->open != 1) { DEBUG_MSG("ERROR: MPSSE OPEN FUNCTION FAILED\n"); return LGW_SPI_ERROR; } #ifdef _MULTITECH_H_ /* toggle pin ADBUS5 of the FT232H */ /* On the MTAC LORA, it resets the SX1301 */ a = PinLow(mpsse, GPIOL1); b = PinHigh(mpsse, GPIOL1); #else /* toggle pin ADBUS5 of the FT2232H */ /* On the Semtech reference board, it resets the SX1301 */ a = PinHigh(mpsse, GPIOL1); b = PinLow(mpsse, GPIOL1); #endif if ((a != MPSSE_OK) || (b != MPSSE_OK)) { DEBUG_MSG("ERROR: IMPOSSIBLE TO TOGGLE GPIOL1/ADBUS5\n"); return LGW_SPI_ERROR; } DEBUG_PRINTF("SPI port opened and configured ok\ndesc: %s\nPID: 0x%04X\nVID: 0x%04X\nclock: %d\nLibmpsse version: 0x%02X\n", GetDescription(mpsse), GetPid(mpsse), GetVid(mpsse), GetClock(mpsse), Version()); *spi_target_ptr = (void *)mpsse; return LGW_SPI_SUCCESS; }
PlanSum::PlanSum (void) : Demand_Service () { Program ("PlanSum"); Version ("4.0.59"); Title ("Summarize Plan File Demand"); Network_File optional_network [] = { DIRECTORY, LINK, NODE, LANE_USE, PARKING, ACTIVITY_LOCATION, PROCESS_LINK, LANE_CONNECTIVITY, TRANSIT_STOP, TRANSIT_ROUTE, TRANSIT_SCHEDULE, TRANSIT_DRIVER, END_NETWORK }; Demand_File optional_demand [] = { LINK_DELAY, VEHICLE_TYPE, NEW_LINK_DELAY, NEW_RIDERSHIP, END_DEMAND }; char *keys [] = { PLAN_FILE, PLAN_FORMAT, NODE_LIST_PATHS, HOUSEHOLD_LIST, HOUSEHOLD_PERSON_COUNT, SUMMARY_TIME_PERIODS, SUMMARY_TIME_INCREMENT, NEW_PLAN_FILE, NEW_LINK_VOLUME_FILE, NEW_LINK_VOLUME_FORMAT, KEEP_INPUT_TRAVEL_TIMES, EQUATION_PARAMETERS_x, LINK_EQUIVALENCE_FILE, NEW_TRIP_TIME_FILE, NEW_ZONE_SKIM_FILE, NEW_ZONE_SKIM_FORMAT, SKIM_MODE_SELECTION, SKIM_TOTAL_TIME, SKIM_TRIP_LENGTH, SKIM_TIME_CONTROL_POINT, NEAREST_NEIGHBOR_FACTOR, NEW_TRIP_TABLE_FILE, NEW_TRIP_TABLE_FORMAT, TRIP_MODE_SELECTION, ZONE_EQUIVALENCE_FILE, NEW_TURN_MOVEMENT_FILE, NEW_TURN_MOVEMENT_FORMAT, TURN_NODE_RANGE, STOP_EQUIVALENCE_FILE, OUTPUT_ALL_TRANSIT_STOPS, NULL }; char *reports [] = { "TOP_100_V/C_RATIOS", "ALL_V/C_RATIOS_GREATER_THAN_*", "LINK_GROUP_V/C_RATIOS_*", "PRINT_LINK_EQUIVALENCIES", "PRINT_ZONE_EQUIVALENCIES", "PRINT_STOP_EQUIVALENCIES", "TRANSIT_RIDERSHIP_SUMMARY", "TRANSIT_STOP_SUMMARY", "TRANSIT_TRANSFER_SUMMARY", "TRANSIT_TRANSFER_DETAILS", "TRANSIT_STOP_GROUP_SUMMARY", "TRANSIT_PASSENGER_SUMMARY", "TRANSIT_LINK_GROUP_SUMMARY", "TRIP_TIME_REPORT", "TRAVEL_SUMMARY_REPORT", NULL }; Optional_Network_Files (optional_network); Optional_Demand_Files (optional_demand); Key_List (keys); Report_List (reports); Enable_Partitions (true); AB_Key_Flag (true); volume_flag = time_flag = skim_flag = trip_flag = zone_flag = transit_flag = passenger_flag = false; delay_in = delay_out = turn_flag = turn_delay = hhlist_flag = travel_flag = update_flag = false; time_skim_flag = xfer_flag = xfer_detail = neighbor_flag = length_flag = count_flag = stops_flag = false; type_flag = vc_flag = true; layer = 1; increment = 900; num_inc = 96; cap_factor = 0.25; neighbor_factor = 0.5; skim_point = 2; movement_data = NULL; node_range = NULL; boardings = NULL; max_rail = 0; xfer_label [0] = '\0'; stop_array = (Stop_Array *) new Transfer_Array (); }
namespace otawa { namespace ccg { // DFA Properties static Identifier<dfa::BitSet *> IN("", 0); /** * @class Builder * This processor builds the Cache Conflict Graph of the current task. * An instruction cache is required to make it work. * * @par Provided Feature * @ref @li FEATURE * * @par Required Feature * @ref @li COLLECTED_LBLOCKS_FEATURE * * @par Plugin * @li @ref ccg * * @ingroup ccg */ p::declare Builder::reg = p::init("Builder", Version(1, 1, 0)) .base(CFGProcessor::reg) .maker<Builder>() .provide(FEATURE) .require(COLLECTED_LBLOCKS_FEATURE) .require(COLLECTED_CFG_FEATURE); /** * Create a new Builder. */ Builder::Builder(p::declare& r): Processor(r) { } /** * This property stores the list of CCG for the current task. * * @par Hooks * @li @ref FrameWork */ Identifier<Collection *> Graph::GRAPHS("otawa::ccg:Graph::GRAPHS", 0); /** * This property stores the CCG node matching the L-Block it is hooked to. * * @par Hooks * @li @ref LBlock */ Identifier<Node *> Graph::NODE("otawa::ccg::Graph::NODE", 0); /** */ Identifier<bool> Builder::NON_CONFLICT("otawa::ccg::Builder::NON_CONFLICT", false); /** */ void Builder::processLBlockSet(WorkSpace *fw, otawa::ccg::LBlockSet *lbset) { ASSERT(fw); ASSERT(lbset); const hard::Cache *cache = hard::CACHE_CONFIGURATION(fw)->instCache(); // Create the CCG Collection *ccgs = Graph::GRAPHS(fw); if(!ccgs) { ccgs = new Collection(cache->rowCount()); fw->addProp(new DeletableProperty<Collection *>(Graph::GRAPHS, ccgs)); } Graph *ccg = new Graph; ccgs->ccgs[lbset->line()] = ccg; // Initialization for(LBlockSet::Iterator lblock(*lbset); lblock; lblock++) { Node *node = new Node(lblock); ccg->add(node); Graph::NODE(lblock) = node; } // Run the DFA Problem prob(lbset, lbset->count(), cache, fw); const CFGCollection *coll = INVOLVED_CFGS(fw); dfa::XCFGVisitor<Problem> visitor(*coll, prob); dfa::XIterativeDFA<dfa::XCFGVisitor<Problem> > engine(visitor); engine.process(); // Add the annotations from the DFA result for (CFGCollection::Iterator cfg(coll); cfg; cfg++) { for (CFG::BBIterator block(*cfg); block; block++) { dfa::XCFGVisitor<Problem>::key_t pair(*cfg, *block); dfa::BitSet *bitset = engine.in(pair); block->addProp(new DeletableProperty<dfa::BitSet *>(IN, new dfa::BitSet(*bitset))); } } // Detecting the non conflict state of each lblock BasicBlock *BB; LBlock *line; int length = lbset->count(); for(LBlockSet::Iterator lbloc(*lbset); lbloc; lbloc++) if(lbloc->id() != 0 && lbloc->id() != length - 1) { BB = lbloc->bb(); dfa::BitSet *inid = IN(BB); for(dfa::BitSet::Iterator bit(*inid); bit; bit++) line = lbset->lblock(*bit); if(cache->block(line->address()) == cache->block(lbloc->address()) && BB != line->bb()) NON_CONFLICT(lbloc) = true; } // Building the ccg edges using DFA length = lbset->count(); address_t adinst; LBlock *aux; for (CFGCollection::Iterator cfg(coll); cfg; cfg++) { for (CFG::BBIterator bb(*cfg); bb; bb++) { if ((cfg != ENTRY_CFG(fw)) || (!bb->isEntry() && !bb->isExit())) { dfa::BitSet *info = IN(bb); ASSERT(info); bool test = false; bool visit; for(BasicBlock::InstIter inst(bb); inst; inst++) { visit = false; adinst = inst->address(); for (LBlockSet::Iterator lbloc(*lbset); lbloc; lbloc++){ address_t address = lbloc->address(); // the first lblock in the BB it's a conflict if(adinst == address && !test && bb == lbloc->bb()) { for (int i = 0; i< length; i++) if (info->contains(i)) { LBlock *lblock = lbset->lblock(i); Node *node = Graph::NODE(lblock); new Edge (node, Graph::NODE(lbloc)); } aux = lbloc; test = true; visit = true; break; } if(adinst == address && !visit && bb == lbloc->bb()) { new Edge(Graph::NODE(aux), Graph::NODE(lbloc)); aux = lbloc; break; } } } } } } // build edge to LBlock end BasicBlock *exit = ENTRY_CFG(fw)->exit(); LBlock *end = lbset->lblock(length-1); dfa::BitSet *info = IN(exit); for (int i = 0; i< length; i++) if (info->contains(i)) { LBlock *ccgnode1 = lbset->lblock(i); new Edge(Graph::NODE(ccgnode1), Graph::NODE(end)); } // Build edge from 'S' till 'end' LBlock *s = lbset->lblock(0); new Edge(Graph::NODE(s), Graph::NODE(end)); // Cleanup the DFA annotations for (CFGCollection::Iterator cfg(coll); cfg; cfg++) for (CFG::BBIterator block(cfg); block; block++) block->removeProp(&IN); } /** */ void Builder::processWorkSpace(WorkSpace *fw) { ASSERT(fw); // Check the cache const hard::Cache *cache = hard::CACHE_CONFIGURATION(fw)->instCache(); if(!cache) out << "WARNING: no instruction cache !\n"; // Process the l-block sets LBlockSet **lbsets = LBLOCKS(fw); ASSERT(lbsets); for(int i = 0; i < cache->rowCount(); i++) processLBlockSet(fw, lbsets[i]); } /** * This feature ensures that Cache Conflict Graphs has been built. They may * accessed by @ref CCG::GRAPHS put on the framework. * * @par Properties * @li @ref Graph::GRAPHS (Framework) * @li @ref Graph::NODE (LBlock) * * @ingroup ccg */ p::feature FEATURE("otawa::ccg::FEATURE", new Maker<Builder>()); } } //otawa::ccg
Version ModManager::UCCUVersion() { return Version(1,0,0); }
bool ValidationContext::getQueryParameterInfo(GLenum pname, GLenum *type, unsigned int *numParams) { if (pname >= GL_DRAW_BUFFER0_EXT && pname <= GL_DRAW_BUFFER15_EXT) { *type = GL_INT; *numParams = 1; return true; } // Please note: the query type returned for DEPTH_CLEAR_VALUE in this implementation // is FLOAT rather than INT, as would be suggested by the GL ES 2.0 spec. This is due // to the fact that it is stored internally as a float, and so would require conversion // if returned from Context::getIntegerv. Since this conversion is already implemented // in the case that one calls glGetIntegerv to retrieve a float-typed state variable, we // place DEPTH_CLEAR_VALUE with the floats. This should make no difference to the calling // application. switch (pname) { case GL_COMPRESSED_TEXTURE_FORMATS: { *type = GL_INT; *numParams = static_cast<unsigned int>(getCaps().compressedTextureFormats.size()); return true; } case GL_PROGRAM_BINARY_FORMATS_OES: { *type = GL_INT; *numParams = static_cast<unsigned int>(getCaps().programBinaryFormats.size()); return true; } case GL_SHADER_BINARY_FORMATS: { *type = GL_INT; *numParams = static_cast<unsigned int>(getCaps().shaderBinaryFormats.size()); return true; } case GL_MAX_VERTEX_ATTRIBS: case GL_MAX_VERTEX_UNIFORM_VECTORS: case GL_MAX_VARYING_VECTORS: case GL_MAX_COMBINED_TEXTURE_IMAGE_UNITS: case GL_MAX_VERTEX_TEXTURE_IMAGE_UNITS: case GL_MAX_TEXTURE_IMAGE_UNITS: case GL_MAX_FRAGMENT_UNIFORM_VECTORS: case GL_MAX_RENDERBUFFER_SIZE: case GL_MAX_COLOR_ATTACHMENTS_EXT: case GL_MAX_DRAW_BUFFERS_EXT: case GL_NUM_SHADER_BINARY_FORMATS: case GL_NUM_COMPRESSED_TEXTURE_FORMATS: case GL_ARRAY_BUFFER_BINDING: // case GL_FRAMEBUFFER_BINDING: // equivalent to DRAW_FRAMEBUFFER_BINDING_ANGLE case GL_DRAW_FRAMEBUFFER_BINDING_ANGLE: case GL_READ_FRAMEBUFFER_BINDING_ANGLE: case GL_RENDERBUFFER_BINDING: case GL_CURRENT_PROGRAM: case GL_PACK_ALIGNMENT: case GL_PACK_REVERSE_ROW_ORDER_ANGLE: case GL_UNPACK_ALIGNMENT: case GL_GENERATE_MIPMAP_HINT: case GL_FRAGMENT_SHADER_DERIVATIVE_HINT_OES: case GL_RED_BITS: case GL_GREEN_BITS: case GL_BLUE_BITS: case GL_ALPHA_BITS: case GL_DEPTH_BITS: case GL_STENCIL_BITS: case GL_ELEMENT_ARRAY_BUFFER_BINDING: case GL_CULL_FACE_MODE: case GL_FRONT_FACE: case GL_ACTIVE_TEXTURE: case GL_STENCIL_FUNC: case GL_STENCIL_VALUE_MASK: case GL_STENCIL_REF: case GL_STENCIL_FAIL: case GL_STENCIL_PASS_DEPTH_FAIL: case GL_STENCIL_PASS_DEPTH_PASS: case GL_STENCIL_BACK_FUNC: case GL_STENCIL_BACK_VALUE_MASK: case GL_STENCIL_BACK_REF: case GL_STENCIL_BACK_FAIL: case GL_STENCIL_BACK_PASS_DEPTH_FAIL: case GL_STENCIL_BACK_PASS_DEPTH_PASS: case GL_DEPTH_FUNC: case GL_BLEND_SRC_RGB: case GL_BLEND_SRC_ALPHA: case GL_BLEND_DST_RGB: case GL_BLEND_DST_ALPHA: case GL_BLEND_EQUATION_RGB: case GL_BLEND_EQUATION_ALPHA: case GL_STENCIL_WRITEMASK: case GL_STENCIL_BACK_WRITEMASK: case GL_STENCIL_CLEAR_VALUE: case GL_SUBPIXEL_BITS: case GL_MAX_TEXTURE_SIZE: case GL_MAX_CUBE_MAP_TEXTURE_SIZE: case GL_SAMPLE_BUFFERS: case GL_SAMPLES: case GL_IMPLEMENTATION_COLOR_READ_TYPE: case GL_IMPLEMENTATION_COLOR_READ_FORMAT: case GL_TEXTURE_BINDING_2D: case GL_TEXTURE_BINDING_CUBE_MAP: case GL_RESET_NOTIFICATION_STRATEGY_EXT: case GL_NUM_PROGRAM_BINARY_FORMATS_OES: { *type = GL_INT; *numParams = 1; return true; } case GL_MAX_SAMPLES_ANGLE: { if (!getExtensions().framebufferMultisample) { return false; } *type = GL_INT; *numParams = 1; return true; } case GL_MAX_VIEWPORT_DIMS: { *type = GL_INT; *numParams = 2; return true; } case GL_VIEWPORT: case GL_SCISSOR_BOX: { *type = GL_INT; *numParams = 4; return true; } case GL_SHADER_COMPILER: case GL_SAMPLE_COVERAGE_INVERT: case GL_DEPTH_WRITEMASK: case GL_CULL_FACE: // CULL_FACE through DITHER are natural to IsEnabled, case GL_POLYGON_OFFSET_FILL: // but can be retrieved through the Get{Type}v queries. case GL_SAMPLE_ALPHA_TO_COVERAGE: // For this purpose, they are treated here as // bool-natural case GL_SAMPLE_COVERAGE: case GL_SCISSOR_TEST: case GL_STENCIL_TEST: case GL_DEPTH_TEST: case GL_BLEND: case GL_DITHER: case GL_CONTEXT_ROBUST_ACCESS_EXT: { *type = GL_BOOL; *numParams = 1; return true; } case GL_COLOR_WRITEMASK: { *type = GL_BOOL; *numParams = 4; return true; } case GL_POLYGON_OFFSET_FACTOR: case GL_POLYGON_OFFSET_UNITS: case GL_SAMPLE_COVERAGE_VALUE: case GL_DEPTH_CLEAR_VALUE: case GL_LINE_WIDTH: { *type = GL_FLOAT; *numParams = 1; return true; } case GL_ALIASED_LINE_WIDTH_RANGE: case GL_ALIASED_POINT_SIZE_RANGE: case GL_DEPTH_RANGE: { *type = GL_FLOAT; *numParams = 2; return true; } case GL_COLOR_CLEAR_VALUE: case GL_BLEND_COLOR: { *type = GL_FLOAT; *numParams = 4; return true; } case GL_MAX_TEXTURE_MAX_ANISOTROPY_EXT: if (!getExtensions().maxTextureAnisotropy) { return false; } *type = GL_FLOAT; *numParams = 1; return true; case GL_TIMESTAMP_EXT: if (!getExtensions().disjointTimerQuery) { return false; } *type = GL_INT_64_ANGLEX; *numParams = 1; return true; case GL_GPU_DISJOINT_EXT: if (!getExtensions().disjointTimerQuery) { return false; } *type = GL_INT; *numParams = 1; return true; case GL_COVERAGE_MODULATION_CHROMIUM: if (!getExtensions().framebufferMixedSamples) { return false; } *type = GL_INT; *numParams = 1; return true; case GL_TEXTURE_BINDING_EXTERNAL_OES: if (!getExtensions().eglStreamConsumerExternal && !getExtensions().eglImageExternal) { return false; } *type = GL_INT; *numParams = 1; return true; } if (getExtensions().debug) { switch (pname) { case GL_DEBUG_LOGGED_MESSAGES: case GL_DEBUG_NEXT_LOGGED_MESSAGE_LENGTH: case GL_DEBUG_GROUP_STACK_DEPTH: case GL_MAX_DEBUG_MESSAGE_LENGTH: case GL_MAX_DEBUG_LOGGED_MESSAGES: case GL_MAX_DEBUG_GROUP_STACK_DEPTH: case GL_MAX_LABEL_LENGTH: *type = GL_INT; *numParams = 1; return true; case GL_DEBUG_OUTPUT_SYNCHRONOUS: case GL_DEBUG_OUTPUT: *type = GL_BOOL; *numParams = 1; return true; } } if (getExtensions().multisampleCompatibility) { switch (pname) { case GL_MULTISAMPLE_EXT: case GL_SAMPLE_ALPHA_TO_ONE_EXT: *type = GL_BOOL; *numParams = 1; return true; } } if (getExtensions().pathRendering) { switch (pname) { case GL_PATH_MODELVIEW_MATRIX_CHROMIUM: case GL_PATH_PROJECTION_MATRIX_CHROMIUM: *type = GL_FLOAT; *numParams = 16; return true; } } if (getExtensions().bindGeneratesResource) { switch (pname) { case GL_BIND_GENERATES_RESOURCE_CHROMIUM: *type = GL_BOOL; *numParams = 1; return true; } } if (getExtensions().sRGBWriteControl) { switch (pname) { case GL_FRAMEBUFFER_SRGB_EXT: *type = GL_BOOL; *numParams = 1; return true; } } // Check for ES3.0+ parameter names which are also exposed as ES2 extensions switch (pname) { case GL_PACK_ROW_LENGTH: case GL_PACK_SKIP_ROWS: case GL_PACK_SKIP_PIXELS: if ((getClientMajorVersion() < 3) && !getExtensions().packSubimage) { return false; } *type = GL_INT; *numParams = 1; return true; case GL_UNPACK_ROW_LENGTH: case GL_UNPACK_SKIP_ROWS: case GL_UNPACK_SKIP_PIXELS: if ((getClientMajorVersion() < 3) && !getExtensions().unpackSubimage) { return false; } *type = GL_INT; *numParams = 1; return true; case GL_VERTEX_ARRAY_BINDING: if ((getClientMajorVersion() < 3) && !getExtensions().vertexArrayObject) { return false; } *type = GL_INT; *numParams = 1; return true; case GL_PIXEL_PACK_BUFFER_BINDING: case GL_PIXEL_UNPACK_BUFFER_BINDING: if ((getClientMajorVersion() < 3) && !getExtensions().pixelBufferObject) { return false; } *type = GL_INT; *numParams = 1; return true; } if (getClientVersion() < Version(3, 0)) { return false; } // Check for ES3.0+ parameter names switch (pname) { case GL_MAX_UNIFORM_BUFFER_BINDINGS: case GL_UNIFORM_BUFFER_OFFSET_ALIGNMENT: case GL_UNIFORM_BUFFER_BINDING: case GL_TRANSFORM_FEEDBACK_BINDING: case GL_TRANSFORM_FEEDBACK_BUFFER_BINDING: case GL_COPY_READ_BUFFER_BINDING: case GL_COPY_WRITE_BUFFER_BINDING: case GL_SAMPLER_BINDING: case GL_READ_BUFFER: case GL_TEXTURE_BINDING_3D: case GL_TEXTURE_BINDING_2D_ARRAY: case GL_MAX_3D_TEXTURE_SIZE: case GL_MAX_ARRAY_TEXTURE_LAYERS: case GL_MAX_VERTEX_UNIFORM_BLOCKS: case GL_MAX_FRAGMENT_UNIFORM_BLOCKS: case GL_MAX_COMBINED_UNIFORM_BLOCKS: case GL_MAX_VERTEX_OUTPUT_COMPONENTS: case GL_MAX_FRAGMENT_INPUT_COMPONENTS: case GL_MAX_VARYING_COMPONENTS: case GL_MAX_VERTEX_UNIFORM_COMPONENTS: case GL_MAX_FRAGMENT_UNIFORM_COMPONENTS: case GL_MIN_PROGRAM_TEXEL_OFFSET: case GL_MAX_PROGRAM_TEXEL_OFFSET: case GL_NUM_EXTENSIONS: case GL_MAJOR_VERSION: case GL_MINOR_VERSION: case GL_MAX_ELEMENTS_INDICES: case GL_MAX_ELEMENTS_VERTICES: case GL_MAX_TRANSFORM_FEEDBACK_INTERLEAVED_COMPONENTS: case GL_MAX_TRANSFORM_FEEDBACK_SEPARATE_ATTRIBS: case GL_MAX_TRANSFORM_FEEDBACK_SEPARATE_COMPONENTS: case GL_UNPACK_IMAGE_HEIGHT: case GL_UNPACK_SKIP_IMAGES: { *type = GL_INT; *numParams = 1; return true; } case GL_MAX_ELEMENT_INDEX: case GL_MAX_UNIFORM_BLOCK_SIZE: case GL_MAX_COMBINED_VERTEX_UNIFORM_COMPONENTS: case GL_MAX_COMBINED_FRAGMENT_UNIFORM_COMPONENTS: case GL_MAX_SERVER_WAIT_TIMEOUT: { *type = GL_INT_64_ANGLEX; *numParams = 1; return true; } case GL_TRANSFORM_FEEDBACK_ACTIVE: case GL_TRANSFORM_FEEDBACK_PAUSED: case GL_PRIMITIVE_RESTART_FIXED_INDEX: case GL_RASTERIZER_DISCARD: { *type = GL_BOOL; *numParams = 1; return true; } case GL_MAX_TEXTURE_LOD_BIAS: { *type = GL_FLOAT; *numParams = 1; return true; } } if (getClientVersion() < Version(3, 1)) { return false; } switch (pname) { case GL_MAX_FRAMEBUFFER_WIDTH: case GL_MAX_FRAMEBUFFER_HEIGHT: case GL_MAX_FRAMEBUFFER_SAMPLES: case GL_MAX_SAMPLE_MASK_WORDS: case GL_MAX_COLOR_TEXTURE_SAMPLES: case GL_MAX_DEPTH_TEXTURE_SAMPLES: case GL_MAX_INTEGER_SAMPLES: case GL_MAX_VERTEX_ATTRIB_RELATIVE_OFFSET: case GL_MAX_VERTEX_ATTRIB_BINDINGS: case GL_MAX_VERTEX_ATTRIB_STRIDE: case GL_MAX_VERTEX_ATOMIC_COUNTER_BUFFERS: case GL_MAX_VERTEX_ATOMIC_COUNTERS: case GL_MAX_VERTEX_IMAGE_UNIFORMS: case GL_MAX_VERTEX_SHADER_STORAGE_BLOCKS: case GL_MAX_FRAGMENT_ATOMIC_COUNTER_BUFFERS: case GL_MAX_FRAGMENT_ATOMIC_COUNTERS: case GL_MAX_FRAGMENT_IMAGE_UNIFORMS: case GL_MAX_FRAGMENT_SHADER_STORAGE_BLOCKS: case GL_MIN_PROGRAM_TEXTURE_GATHER_OFFSET: case GL_MAX_PROGRAM_TEXTURE_GATHER_OFFSET: case GL_MAX_COMPUTE_WORK_GROUP_INVOCATIONS: case GL_MAX_COMPUTE_UNIFORM_BLOCKS: case GL_MAX_COMPUTE_TEXTURE_IMAGE_UNITS: case GL_MAX_COMPUTE_SHARED_MEMORY_SIZE: case GL_MAX_COMPUTE_UNIFORM_COMPONENTS: case GL_MAX_COMPUTE_ATOMIC_COUNTER_BUFFERS: case GL_MAX_COMPUTE_ATOMIC_COUNTERS: case GL_MAX_COMPUTE_IMAGE_UNIFORMS: case GL_MAX_COMBINED_COMPUTE_UNIFORM_COMPONENTS: case GL_MAX_COMPUTE_SHADER_STORAGE_BLOCKS: case GL_MAX_COMBINED_SHADER_OUTPUT_RESOURCES: case GL_MAX_UNIFORM_LOCATIONS: case GL_MAX_ATOMIC_COUNTER_BUFFER_BINDINGS: case GL_MAX_ATOMIC_COUNTER_BUFFER_SIZE: case GL_MAX_COMBINED_ATOMIC_COUNTER_BUFFERS: case GL_MAX_COMBINED_ATOMIC_COUNTERS: case GL_MAX_IMAGE_UNITS: case GL_MAX_COMBINED_IMAGE_UNIFORMS: case GL_MAX_SHADER_STORAGE_BUFFER_BINDINGS: case GL_MAX_COMBINED_SHADER_STORAGE_BLOCKS: case GL_SHADER_STORAGE_BUFFER_OFFSET_ALIGNMENT: *type = GL_INT; *numParams = 1; return true; case GL_MAX_SHADER_STORAGE_BLOCK_SIZE: *type = GL_INT_64_ANGLEX; *numParams = 1; return true; } return false; }
Version GetVersion() { return Version("Provides support for oper-only chans via the +O channel mode and 'O' extban", VF_VENDOR); }
Version GetVersion() { return Version("Reload SSL credentials on SIGUSR1"); }
virtual Version GetVersion() { return Version("A module to prevent against bots using random patterns",VF_NONE); }