本文整理汇总了C++中ARRAY_LEN函数的典型用法代码示例。如果您正苦于以下问题:C++ ARRAY_LEN函数的具体用法?C++ ARRAY_LEN怎么用?C++ ARRAY_LEN使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。
在下文中一共展示了ARRAY_LEN函数的20个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于我们的系统推荐出更棒的C++代码示例。
示例1: strncpy
LTBOOL SURFACE::Init(CButeMgr & buteMgr, char* aTagName)
{
if (!aTagName) return LTFALSE;
eType = (SurfaceType) buteMgr.GetInt(aTagName, SRFMGR_SURFACE_ID);
bShowsMark = (LTBOOL) buteMgr.GetInt(aTagName, SRFMGR_SURFACE_SHOWSMARK);
bCanSeeThrough = (LTBOOL) buteMgr.GetInt(aTagName, SRFMGR_SURFACE_CANSEETHROUGH);
bCanShootThrough = (LTBOOL) buteMgr.GetInt(aTagName, SRFMGR_SURFACE_CANSHOOTTHROUGH);
bShowBreath = (LTBOOL) buteMgr.GetInt(aTagName, SRFMGR_SURFACE_SHOWBREATH);
nMaxShootThroughPerturb = buteMgr.GetInt(aTagName, SRFMGR_SURFACE_MAXSHOOTTHROUGHPERTURB);
nMaxShootThroughThickness= buteMgr.GetInt(aTagName, SRFMGR_SURFACE_MAXSHOOTTHROUGHTHICKNESS);
fDeathNoiseModifier = (LTFLOAT) buteMgr.GetDouble(aTagName, SRFMGR_SURFACE_DEATHNOISEMOD);
fMovementNoiseModifier = (LTFLOAT) buteMgr.GetDouble(aTagName, SRFMGR_SURFACE_MOVENOISEMOD);
fImpactNoiseModifier = (LTFLOAT) buteMgr.GetDouble(aTagName, SRFMGR_SURFACE_IMPACTNOISEMOD);
fBodyFallSndRadius = (LTFLOAT) buteMgr.GetDouble(aTagName, SRFMGR_SURFACE_BODYFALLSNDRADIUS);
fBodyLedgeFallSndRadius = (LTFLOAT) buteMgr.GetDouble(aTagName, SRFMGR_SURFACE_BODYLEDGEFALLSNDRADIUS);
fBulletHoleMinScale = (LTFLOAT) buteMgr.GetDouble(aTagName, SRFMGR_SURFACE_BULLETHOLEMINSCALE);
fBulletHoleMaxScale = (LTFLOAT) buteMgr.GetDouble(aTagName, SRFMGR_SURFACE_BULLETHOLEMAXSCALE);
fBulletRangeDampen = (LTFLOAT) buteMgr.GetDouble(aTagName, SRFMGR_SURFACE_BULLETRANGEDAMPEN);
fBulletDamageDampen = (LTFLOAT) buteMgr.GetDouble(aTagName, SRFMGR_SURFACE_BULLETDAMAGEDAMPEN);
fActivationSndRadius = (LTFLOAT) buteMgr.GetDouble(aTagName, SRFMGR_SURFACE_ACTIVATIONSNDRADIUS);
fShellSndRadius = (LTFLOAT) buteMgr.GetDouble(aTagName, SRFMGR_SURFACE_SHELLSNDRADIUS);
fGrenadeSndRadius = (LTFLOAT) buteMgr.GetDouble(aTagName, SRFMGR_SURFACE_GRENADESNDRADIUS);
fHardness = (LTFLOAT) buteMgr.GetDouble(aTagName, SRFMGR_SURFACE_HARDNESS);
fFootPrintLifetime = (LTFLOAT) buteMgr.GetDouble(aTagName, SRFMGR_SURFACE_FOOTPRINTLIFETIME);
fMotoVelMult = (LTFLOAT) buteMgr.GetDouble(aTagName, SRFMGR_SURFACE_MOTOVELMULTIPLIER);
fSnowVelMult = (LTFLOAT) buteMgr.GetDouble(aTagName, SRFMGR_SURFACE_SNOWVELMULTIPLIER);
bMagnetic = (LTBOOL) buteMgr.GetInt(aTagName, SRFMGR_SURFACE_MAGNETIC);
vFootPrintScale = buteMgr.GetVector(aTagName, SRFMGR_SURFACE_FOOTPRINTSCALE);
CString str = buteMgr.GetString(aTagName, SRFMGR_SURFACE_NAME);
if (!str.IsEmpty())
{
strncpy(szName, (char*)(LPCSTR)str, ARRAY_LEN(szName));
}
str = buteMgr.GetString(aTagName, SRFMGR_SURFACE_BULLETHOLESPR);
if (!str.IsEmpty())
{
strncpy(szBulletHoleSpr, (char*)(LPCSTR)str, ARRAY_LEN(szBulletHoleSpr));
}
str = buteMgr.GetString(aTagName, SRFMGR_SURFACE_RTFOOTPRINTSPR);
if (!str.IsEmpty())
{
strncpy(szRtFootPrintSpr, (char*)(LPCSTR)str, ARRAY_LEN(szRtFootPrintSpr));
}
str = buteMgr.GetString(aTagName, SRFMGR_SURFACE_LTFOOTPRINTSPR);
if (!str.IsEmpty())
{
strncpy(szLtFootPrintSpr, (char*)(LPCSTR)str, ARRAY_LEN(szLtFootPrintSpr));
}
int i;
for (i=1; i <= SRF_MAX_FOOTSTEP_SNDS; i++)
{
sprintf(s_aAttName, "%s%d", SRFMGR_SURFACE_RTFOOTSND, i);
str = buteMgr.GetString(aTagName, s_aAttName);
if (!str.IsEmpty())
{
strncpy(szRtFootStepSnds[i-1], (char*)(LPCSTR)str, ARRAY_LEN(szRtFootStepSnds[i-1]));
}
}
for (i=1; i <= SRF_MAX_FOOTSTEP_SNDS; i++)
{
sprintf(s_aAttName, "%s%d", SRFMGR_SURFACE_LTFOOTSND, i);
str = buteMgr.GetString(aTagName, s_aAttName);
if (!str.IsEmpty())
{
strncpy(szLtFootStepSnds[i-1], (char*)(LPCSTR)str, ARRAY_LEN(szLtFootStepSnds[i-1]));
}
}
for (i=1; i <= SRF_MAX_MOTORCYCLE_SNDS; i++)
{
sprintf(s_aAttName, "%s%d", SRFMGR_SURFACE_MOTORCYCLESND, i);
str = buteMgr.GetString(aTagName, s_aAttName);
if (!str.IsEmpty())
{
strncpy(szMotorcycleSnds[i-1], (char*)(LPCSTR)str, ARRAY_LEN(szMotorcycleSnds[i-1]));
}
}
for (i=1; i <= SRF_MAX_SNOWMOBILE_SNDS; i++)
{
sprintf(s_aAttName, "%s%d", SRFMGR_SURFACE_SNOWMOBILESND, i);
str = buteMgr.GetString(aTagName, s_aAttName);
if (!str.IsEmpty())
{
strncpy(szSnowmobileSnds[i-1], (char*)(LPCSTR)str, ARRAY_LEN(szSnowmobileSnds[i-1]));
}
}
//.........这里部分代码省略.........
开发者ID:germanocaldeira,项目名称:no-one-lives-forever,代码行数:101,代码来源:SurfaceMgr.cpp
示例2: ast_ari_asterisk_get_info_cb
/*!
* \brief Parameter parsing callback for /asterisk/info.
* \param get_params GET parameters in the HTTP request.
* \param path_vars Path variables extracted from the request.
* \param headers HTTP headers.
* \param[out] response Response to the HTTP request.
*/
static void ast_ari_asterisk_get_info_cb(
struct ast_tcptls_session_instance *ser,
struct ast_variable *get_params, struct ast_variable *path_vars,
struct ast_variable *headers, struct ast_ari_response *response)
{
struct ast_ari_asterisk_get_info_args args = {};
struct ast_variable *i;
RAII_VAR(struct ast_json *, body, NULL, ast_json_unref);
#if defined(AST_DEVMODE)
int is_valid;
int code;
#endif /* AST_DEVMODE */
for (i = get_params; i; i = i->next) {
if (strcmp(i->name, "only") == 0) {
/* Parse comma separated list */
char *vals[MAX_VALS];
size_t j;
args.only_parse = ast_strdup(i->value);
if (!args.only_parse) {
ast_ari_response_alloc_failed(response);
goto fin;
}
if (strlen(args.only_parse) == 0) {
/* ast_app_separate_args can't handle "" */
args.only_count = 1;
vals[0] = args.only_parse;
} else {
args.only_count = ast_app_separate_args(
args.only_parse, ',', vals,
ARRAY_LEN(vals));
}
if (args.only_count == 0) {
ast_ari_response_alloc_failed(response);
goto fin;
}
if (args.only_count >= MAX_VALS) {
ast_ari_response_error(response, 400,
"Bad Request",
"Too many values for only");
goto fin;
}
args.only = ast_malloc(sizeof(*args.only) * args.only_count);
if (!args.only) {
ast_ari_response_alloc_failed(response);
goto fin;
}
for (j = 0; j < args.only_count; ++j) {
args.only[j] = (vals[j]);
}
} else
{}
}
/* Look for a JSON request entity */
body = ast_http_get_json(ser, headers);
if (!body) {
switch (errno) {
case EFBIG:
ast_ari_response_error(response, 413, "Request Entity Too Large", "Request body too large");
goto fin;
case ENOMEM:
ast_ari_response_error(response, 500, "Internal Server Error", "Error processing request");
goto fin;
case EIO:
ast_ari_response_error(response, 400, "Bad Request", "Error parsing request body");
goto fin;
}
}
if (ast_ari_asterisk_get_info_parse_body(body, &args)) {
ast_ari_response_alloc_failed(response);
goto fin;
}
ast_ari_asterisk_get_info(headers, &args, response);
#if defined(AST_DEVMODE)
code = response->response_code;
switch (code) {
case 0: /* Implementation is still a stub, or the code wasn't set */
is_valid = response->message == NULL;
break;
case 500: /* Internal Server Error */
case 501: /* Not Implemented */
is_valid = 1;
break;
default:
if (200 <= code && code <= 299) {
is_valid = ast_ari_validate_asterisk_info(
//.........这里部分代码省略.........
开发者ID:lyx2014,项目名称:Asterisk,代码行数:101,代码来源:res_ari_asterisk.c
示例3: parse_naptr
//.........这里部分代码省略.........
}
regexp_len = strlen(regexp);
if (regexp_len < 7) {
ast_log(LOG_WARNING, "Regex too short to be meaningful.\n");
return -1;
}
/* this takes the first character of the regexp (which is a delimiter)
* and uses that character to find the index of the second delimiter */
delim = regexp[0];
delim2 = strchr(regexp + 1, delim);
if ((delim2 == NULL) || (regexp[regexp_len - 1] != delim)) { /* is the second delimiter found, and is the end of the regexp a delimiter */
ast_log(LOG_WARNING, "Regex delimiter error (on \"%s\").\n", regexp);
return -1;
} else if (strchr((delim2 + 1), delim) == NULL) { /* if the second delimiter is found, make sure there is a third instance. this could be the end one instead of the middle */
ast_log(LOG_WARNING, "Regex delimiter error (on \"%s\").\n", regexp);
return -1;
}
pattern = regexp + 1; /* pattern is the regex without the begining and ending delimiter */
*delim2 = 0; /* zero out the middle delimiter */
subst = delim2 + 1; /* dst substring is everything after the second delimiter. */
regexp[regexp_len - 1] = 0; /* zero out the last delimiter */
/*
* now do the regex wizardry.
*/
if (regcomp(&preg, pattern, REG_EXTENDED | REG_NEWLINE)) {
ast_log(LOG_WARNING, "NAPTR Regex compilation error (regex = \"%s\").\n", regexp);
return -1;
}
if (preg.re_nsub > ARRAY_LEN(pmatch)) {
ast_log(LOG_WARNING, "NAPTR Regex compilation error: too many subs.\n");
regfree(&preg);
return -1;
}
/* pmatch is an array containing the substring indexes for the regex backreference sub.
* max_bt is the maximum number of backreferences allowed to be stored in pmatch */
if ((rc = regexec(&preg, (char *) naptrinput, max_bt, pmatch, 0))) {
regerror(rc, &preg, errbuff, sizeof(errbuff));
ast_log(LOG_WARNING, "NAPTR Regex match failed. Reason: %s\n", errbuff);
regfree(&preg);
return -1;
}
regfree(&preg);
d = tempdst;
d_len--;
/* perform the backreference sub. Search the subst for backreferences,
* when a backreference is found, retrieve the backreferences number.
* use the backreference number as an index for pmatch to retrieve the
* beginning and ending indexes of the substring to insert as the backreference.
* if no backreference is found, continue copying the subst into tempdst */
while (*subst && (d_len > 0)) {
if ((subst[0] == '\\') && isdigit(subst[1])) { /* is this character the beginning of a backreference */
matchindex = (int) (subst[1] - '0');
if (matchindex >= ARRAY_LEN(pmatch)) {
ast_log(LOG_WARNING, "Error during regex substitution. Invalid pmatch index.\n");
return -1;
}
/* pmatch len is 10. we are garanteed a single char 0-9 is a valid index */
size = pmatch[matchindex].rm_eo - pmatch[matchindex].rm_so;
if (size > d_len) {
开发者ID:carlosdelfino,项目名称:WorkshopTelefoniaAutomacao,代码行数:67,代码来源:enum.c
示例4: callback_test
static void
callback_test (int converter, double src_ratio)
{ static TEST_CB_DATA test_callback_data ;
static float output [BUFFER_LEN] ;
SRC_STATE *src_state ;
long read_count, read_total ;
int input_len, output_len, error ;
printf ("\tcallback_test (SRC ratio = %6.4f) ........... ", src_ratio) ;
fflush (stdout) ;
/* Calculate maximun input and output lengths. */
if (src_ratio >= 1.0)
{ output_len = BUFFER_LEN ;
input_len = (int) floor (BUFFER_LEN / src_ratio) ;
}
else
{ input_len = BUFFER_LEN ;
output_len = (int) floor (BUFFER_LEN * src_ratio) ;
} ;
/* Reduce input_len by 10 so output is longer than necessary. */
input_len -= 10 ;
if (output_len > BUFFER_LEN)
{ printf ("\n\nLine %d : output_len > BUFFER_LEN\n\n", __LINE__) ;
exit (1) ;
} ;
test_callback_data.channels = 1 ;
test_callback_data.count = 0 ;
test_callback_data.total = input_len ;
if ((src_state = src_callback_new (test_callback_func, converter, 1, &error, &test_callback_data)) == NULL)
{ printf ("\n\nLine %d : %s\n\n", __LINE__, src_strerror (error)) ;
exit (1) ;
} ;
read_total = 0 ;
do
{ read_count = (ARRAY_LEN (output) - read_total > CB_READ_LEN) ? CB_READ_LEN : ARRAY_LEN (output) - read_total ;
read_count = src_callback_read (src_state, src_ratio, read_count, output + read_total) ;
read_total += read_count ;
}
while (read_count > 0) ;
if ((error = src_error (src_state)) != 0)
{ printf ("\n\nLine %d : %s\n\n", __LINE__, src_strerror (error)) ;
exit (1) ;
} ;
src_state = src_delete (src_state) ;
if (fabs (read_total - src_ratio * input_len) > 2)
{ printf ("\n\nLine %d : input / output length mismatch.\n\n", __LINE__) ;
printf (" input len : %d\n", input_len) ;
printf (" output len : %ld (should be %g +/- 2)\n\n", read_total, floor (0.5 + src_ratio * input_len)) ;
exit (1) ;
} ;
puts ("ok") ;
return ;
} /* callback_test */
开发者ID:hownam,项目名称:fennec,代码行数:66,代码来源:callback_test.c
示例5: CG_ConfigStringModified
//.........这里部分代码省略.........
cgs.teamVoteYes[num-CS_TEAMVOTE_YES] = atoi( str );
cgs.teamVoteModified[num-CS_TEAMVOTE_YES] = qtrue;
} else if ( num >= CS_TEAMVOTE_NO && num <= CS_TEAMVOTE_NO + 1) {
cgs.teamVoteNo[num-CS_TEAMVOTE_NO] = atoi( str );
cgs.teamVoteModified[num-CS_TEAMVOTE_NO] = qtrue;
} else if ( num >= CS_TEAMVOTE_STRING && num <= CS_TEAMVOTE_STRING + 1) {
Q_strncpyz( cgs.teamVoteString[num-CS_TEAMVOTE_STRING], str, sizeof( cgs.teamVoteString ) );
} else if ( num == CS_INTERMISSION ) {
cg.intermissionStarted = atoi( str );
} else if ( num >= CS_MODELS && num < CS_MODELS+MAX_MODELS ) {
char modelName[MAX_QPATH];
strcpy(modelName, str);
if (strstr(modelName, ".glm") || modelName[0] == '$')
{ //Check to see if it has a custom skin attached.
CG_HandleAppendedSkin(modelName);
CG_CacheG2AnimInfo(modelName);
}
if (modelName[0] != '$' && modelName[0] != '@')
{ //don't register vehicle names and saber names as models.
cgs.gameModels[ num-CS_MODELS ] = trap->R_RegisterModel( modelName );
}
else
{
cgs.gameModels[ num-CS_MODELS ] = 0;
}
// GHOUL2 Insert start
/*
} else if ( num >= CS_CHARSKINS && num < CS_CHARSKINS+MAX_CHARSKINS ) {
cgs.skins[ num-CS_CHARSKINS ] = trap->R_RegisterSkin( str );
*/
//rww - removed and replaced with CS_G2BONES
// Ghoul2 Insert end
} else if ( num >= CS_SOUNDS && num < CS_SOUNDS+MAX_SOUNDS ) {
if ( str[0] != '*' ) { // player specific sounds don't register here
cgs.gameSounds[ num-CS_SOUNDS] = trap->S_RegisterSound( str );
}
else if (str[1] == '$')
{ //an NPC soundset
CG_PrecacheNPCSounds(str);
}
} else if ( num >= CS_EFFECTS && num < CS_EFFECTS+MAX_FX ) {
if (str[0] == '*')
{ //it's a special global weather effect
CG_ParseWeatherEffect(str);
cgs.gameEffects[ num-CS_EFFECTS] = 0;
}
else
{
cgs.gameEffects[ num-CS_EFFECTS] = trap->FX_RegisterEffect( str );
}
}
else if ( num >= CS_SIEGE_STATE && num < CS_SIEGE_STATE+1 )
{
if (str[0])
{
CG_ParseSiegeState(str);
}
}
else if ( num >= CS_SIEGE_WINTEAM && num < CS_SIEGE_WINTEAM+1 )
{
if (str[0])
{
cg_siegeWinTeam = atoi(str);
}
}
else if ( num >= CS_SIEGE_OBJECTIVES && num < CS_SIEGE_OBJECTIVES+1 )
{
CG_ParseSiegeObjectiveStatus(str);
}
else if (num >= CS_SIEGE_TIMEOVERRIDE && num < CS_SIEGE_TIMEOVERRIDE+1)
{
cg_beatingSiegeTime = atoi(str);
CG_SetSiegeTimerCvar ( cg_beatingSiegeTime );
}
else if ( num >= CS_PLAYERS && num < CS_PLAYERS+MAX_CLIENTS )
{
CG_NewClientInfo( num - CS_PLAYERS, qtrue);
CG_BuildSpectatorString();
} else if ( num == CS_FLAGSTATUS ) {
if( cgs.gametype == GT_CTF || cgs.gametype == GT_CTY ) {
// format is rb where its red/blue, 0 is at base, 1 is taken, 2 is dropped
int redflagId = str[0] - '0', blueflagId = str[1] - '0';
if ( redflagId >= 0 && redflagId < ARRAY_LEN( ctfFlagStatusRemap ) )
cgs.redflag = ctfFlagStatusRemap[redflagId];
if ( blueflagId >= 0 && blueflagId < ARRAY_LEN( ctfFlagStatusRemap ) )
cgs.blueflag = ctfFlagStatusRemap[blueflagId];
}
}
else if ( num == CS_SHADERSTATE ) {
CG_ShaderStateChanged();
}
else if ( num >= CS_LIGHT_STYLES && num < CS_LIGHT_STYLES + (MAX_LIGHT_STYLES * 3))
{
CG_SetLightstyle(num - CS_LIGHT_STYLES);
}
}
开发者ID:Wookiee-,项目名称:jaPRO,代码行数:101,代码来源:cg_servercmds.c
示例6: ARRAY_LEN
vidmode_t r_vidModes[] =
{
{ "Mode 0: 320x240", 320, 240, 1 },
{ "Mode 1: 400x300", 400, 300, 1 },
{ "Mode 2: 512x384", 512, 384, 1 },
{ "Mode 3: 640x480", 640, 480, 1 },
{ "Mode 4: 800x600", 800, 600, 1 },
{ "Mode 5: 960x720", 960, 720, 1 },
{ "Mode 6: 1024x768", 1024, 768, 1 },
{ "Mode 7: 1152x864", 1152, 864, 1 },
{ "Mode 8: 1280x1024", 1280, 1024, 1 },
{ "Mode 9: 1600x1200", 1600, 1200, 1 },
{ "Mode 10: 2048x1536", 2048, 1536, 1 },
{ "Mode 11: 856x480 (wide)",856, 480, 1 }
};
static int s_numVidModes = ARRAY_LEN( r_vidModes );
qboolean R_GetModeInfo( int *width, int *height, float *windowAspect, int mode ) {
vidmode_t *vm;
float pixelAspect;
if ( mode < -1 ) {
return qfalse;
}
if ( mode >= s_numVidModes ) {
return qfalse;
}
if ( mode == -1 ) {
*width = r_customwidth->integer;
*height = r_customheight->integer;
开发者ID:Pan7,项目名称:ioq3df,代码行数:31,代码来源:tr_init.c
示例7: get_colour_map_value
static void
get_colour_map_value (float value, double spec_floor_db, unsigned char colour [3], bool gray_scale)
{ static unsigned char map [][3] =
{ /* These values were originally calculated for a dynamic range of 180dB. */
{ 255, 255, 255 }, /* -0dB */
{ 240, 254, 216 }, /* -10dB */
{ 242, 251, 185 }, /* -20dB */
{ 253, 245, 143 }, /* -30dB */
{ 253, 200, 102 }, /* -40dB */
{ 252, 144, 66 }, /* -50dB */
{ 252, 75, 32 }, /* -60dB */
{ 237, 28, 41 }, /* -70dB */
{ 214, 3, 64 }, /* -80dB */
{ 183, 3, 101 }, /* -90dB */
{ 157, 3, 122 }, /* -100dB */
{ 122, 3, 126 }, /* -110dB */
{ 80, 2, 110 }, /* -120dB */
{ 45, 2, 89 }, /* -130dB */
{ 19, 2, 70 }, /* -140dB */
{ 1, 3, 53 }, /* -150dB */
{ 1, 3, 37 }, /* -160dB */
{ 1, 2, 19 }, /* -170dB */
{ 0, 0, 0 }, /* -180dB */
} ;
float rem ;
int indx ;
if (gray_scale)
{ /* "value" is a negative value in decibels.
* black (0,0,0) is for <= -180.0, and the other 255 values
* should cover the range from -180 to 0 evenly.
* (value/spec_floor_db) is >=0.0 and <1.0
* because both value and spec_floor_db are negative.
* (v/s) * 255.0 goes from 0.0 to 254.9999999 and
* floor((v/s) * 255) gives us 0 to 254
* converted to 255 to 1 by subtracting it from 255. */
int gray ; /* The pixel value */
if (value <= spec_floor_db)
gray = 0 ;
else
{ gray = 255 - lrint (floor ((value / spec_floor_db) * 255.0)) ;
assert (gray >= 1 && gray <= 255) ;
} ;
colour [0] = colour [1] = colour [2] = gray ;
return ;
} ;
if (value >= 0.0)
{ colour [0] = colour [1] = colour [2] = 255 ;
return ;
} ;
value = fabs (value * (-180.0 / spec_floor_db) * 0.1) ;
indx = lrintf (floor (value)) ;
if (indx < 0)
{ printf ("\nError : colour map array index is %d\n\n", indx) ;
exit (1) ;
} ;
if (indx >= ARRAY_LEN (map) - 1)
{ colour [0] = colour [1] = colour [2] = 0 ;
return ;
} ;
rem = fmod (value, 1.0) ;
colour [0] = lrintf ((1.0 - rem) * map [indx][0] + rem * map [indx + 1][0]) ;
colour [1] = lrintf ((1.0 - rem) * map [indx][1] + rem * map [indx + 1][1]) ;
colour [2] = lrintf ((1.0 - rem) * map [indx][2] + rem * map [indx + 1][2]) ;
return ;
} /* get_colour_map_value */
开发者ID:erikd,项目名称:sndfile-tools,代码行数:76,代码来源:spectrogram.c
示例8: event_loop
//.........这里部分代码省略.........
continue;
}
break;
}
while(1);
suggestions_are_visible = 0;
/* Ensure that current working directory is set correctly (some pieces of
* code rely on this, e.g. %c macro in current directory). */
(void)vifm_chdir(flist_get_dir(curr_view));
if(got_input)
{
if(wait_for_enter)
{
wait_for_enter = 0;
curr_stats.save_msg = 0;
ui_sb_clear();
if(c == WC_CR)
{
continue;
}
}
if(c == WC_C_z)
{
ui_shutdown();
stop_process();
continue;
}
if(input_buf_pos < ARRAY_LEN(input_buf) - 2)
{
input_buf[input_buf_pos++] = c;
input_buf[input_buf_pos] = L'\0';
}
else
{
/* Recover from input buffer overflow by resetting its contents. */
reset_input_buf(input_buf, &input_buf_pos);
clear_input_bar();
continue;
}
}
counter = vle_keys_counter();
if(!got_input && last_result == KEYS_WAIT_SHORT)
{
hide_suggestion_box();
last_result = vle_keys_exec_timed_out(input_buf);
counter = vle_keys_counter() - counter;
assert(counter <= input_buf_pos);
if(counter > 0)
{
memmove(input_buf, input_buf + counter,
(wcslen(input_buf) - counter + 1)*sizeof(wchar_t));
}
}
else
{
if(got_input)
{
curr_stats.save_msg = 0;
开发者ID:vifm,项目名称:vifm,代码行数:67,代码来源:event_loop.c
示例9: sinc_set_converter
int
sinc_set_converter (SRC_PRIVATE *psrc, int src_enum)
{ SINC_FILTER *filter, temp_filter ;
increment_t count ;
int bits ;
/* Quick sanity check. */
if (SHIFT_BITS >= sizeof (increment_t) * 8 - 1)
return SRC_ERR_SHIFT_BITS ;
if (psrc->private_data != NULL)
{ free (psrc->private_data) ;
psrc->private_data = NULL ;
} ;
memset (&temp_filter, 0, sizeof (temp_filter)) ;
temp_filter.sinc_magic_marker = SINC_MAGIC_MARKER ;
temp_filter.channels = psrc->channels ;
if (psrc->channels > ARRAY_LEN (temp_filter.left_calc))
return SRC_ERR_BAD_CHANNEL_COUNT ;
else if (psrc->channels == 1)
{ psrc->const_process = sinc_mono_vari_process ;
psrc->vari_process = sinc_mono_vari_process ;
}
else
if (psrc->channels == 2)
{ psrc->const_process = sinc_stereo_vari_process ;
psrc->vari_process = sinc_stereo_vari_process ;
}
else
if (psrc->channels == 4)
{ psrc->const_process = sinc_quad_vari_process ;
psrc->vari_process = sinc_quad_vari_process ;
}
else
if (psrc->channels == 6)
{ psrc->const_process = sinc_hex_vari_process ;
psrc->vari_process = sinc_hex_vari_process ;
}
else
{ psrc->const_process = sinc_multichan_vari_process ;
psrc->vari_process = sinc_multichan_vari_process ;
} ;
psrc->reset = sinc_reset ;
switch (src_enum)
{ case SRC_SINC_FASTEST :
temp_filter.coeffs = fastest_coeffs.coeffs ;
temp_filter.coeff_half_len = ARRAY_LEN (fastest_coeffs.coeffs) - 1 ;
temp_filter.index_inc = fastest_coeffs.increment ;
break ;
case SRC_SINC_MEDIUM_QUALITY :
temp_filter.coeffs = slow_mid_qual_coeffs.coeffs ;
temp_filter.coeff_half_len = ARRAY_LEN (slow_mid_qual_coeffs.coeffs) - 1 ;
temp_filter.index_inc = slow_mid_qual_coeffs.increment ;
break ;
case SRC_SINC_BEST_QUALITY :
temp_filter.coeffs = slow_high_qual_coeffs.coeffs ;
temp_filter.coeff_half_len = ARRAY_LEN (slow_high_qual_coeffs.coeffs) - 1 ;
temp_filter.index_inc = slow_high_qual_coeffs.increment ;
break ;
default :
return SRC_ERR_BAD_CONVERTER ;
} ;
/*
** FIXME : This needs to be looked at more closely to see if there is
** a better way. Need to look at prepare_data () at the same time.
*/
temp_filter.b_len = lrint (2.5 * temp_filter.coeff_half_len / (temp_filter.index_inc * 1.0) * SRC_MAX_RATIO) ;
temp_filter.b_len = MAX (temp_filter.b_len, 4096) ;
temp_filter.b_len *= temp_filter.channels ;
if ((filter = calloc (1, sizeof (SINC_FILTER) + sizeof (filter->buffer [0]) * (temp_filter.b_len + temp_filter.channels))) == NULL)
return SRC_ERR_MALLOC_FAILED ;
*filter = temp_filter ;
memset (&temp_filter, 0xEE, sizeof (temp_filter)) ;
psrc->private_data = filter ;
sinc_reset (psrc) ;
count = filter->coeff_half_len ;
for (bits = 0 ; (MAKE_INCREMENT_T (1) << bits) < count ; bits++)
count |= (MAKE_INCREMENT_T (1) << bits) ;
if (bits + SHIFT_BITS - 1 >= (int) (sizeof (increment_t) * 8))
return SRC_ERR_FILTER_LEN ;
return SRC_ERR_NO_ERROR ;
} /* sinc_set_converter */
开发者ID:neurosuite,项目名称:ndmanager-plugins,代码行数:98,代码来源:src_sinc.c
示例10: ARRAY_LEN
}
consoleCommand_t ui_commands[] = {
//{ "levelselect", UI_SPLevelMenu_f, 0 },
{ "postgame", UI_CalcPostGameStats, CMD_INGAME },
{ "ui_cache", UI_Cache_f, 0 },
//{ "ui_cinematics", UI_CinematicsMenu_f, 0 },
//{ "ui_teamOrders", UI_TeamOrdersMenu_f, CMD_INGAME },
//{ "iamacheater", UI_SPUnlock_f, 0 },
//{ "iamamonkey", UI_SPUnlockMedals_f, 0 },
{ "ui_test", UI_Test_f, CMD_INGAME },
{ "ui_report", UI_Report, 0 },
{ "ui_load", UI_Load_f, 0 }
};
int ui_numCommands = ARRAY_LEN( ui_commands );
/*
=================
UI_ConsoleCommand
update frame time, commands are executed by CG_ConsoleCommand
=================
*/
void UI_ConsoleCommand( int realTime ) {
uiInfo.uiDC.frameTime = realTime - uiInfo.uiDC.realTime;
uiInfo.uiDC.realTime = realTime;
}
qboolean UI_CursorInRect (int x, int y, int width, int height)
{
开发者ID:SilverlineDev,项目名称:mint-arena,代码行数:31,代码来源:ui_atoms.c
示例11: main
int main(int argc, char *argv[])
{
int dummy, dummysigalrm, foreground = 0;
struct timeval tv, difftime, curtime, lasttime, *timeout;
fd_set rfds, readers;
int nfds, n, i, secs, ch;
struct sigaction sa;
time_t boottime;
struct option long_options[] = {
{"config", 1, 0, 'c'},
{"debug", 2, 0, 'd'},
{"foreground", 0, 0, 'f'},
{"disable-vifs", 0, 0, 'N'},
{"help", 0, 0, 'h'},
{"version", 0, 0, 'v'},
{"quit-daemon", 0, 0, 'q'},
{"reload-config", 0, 0, 'l'},
{"show-routes", 0, 0, 'r'},
/* {"show-cache", 0, 0, 'i'}, */
/* {"show-debug", 0, 0, 'p'}, */
{0, 0, 0, 0}
};
snprintf(versionstring, sizeof (versionstring), "pimd version %s", todaysversion);
while ((ch = getopt_long (argc, argv, "c:d::fhlNP::vqr", long_options, NULL)) != EOF) {
switch (ch) {
case 'c':
configfilename = optarg;
break;
case 'd':
if (!optarg) {
debug = DEBUG_DEFAULT;
} else {
char *p,*q;
size_t i, len;
struct debugname *d;
debug = 0;
p = optarg; q = NULL;
while (p) {
q = strchr(p, ',');
if (q)
*q++ = '\0';
len = strlen(p);
for (i = 0, d = debugnames; i < ARRAY_LEN(debugnames); i++, d++)
if (len >= d->nchars && strncmp(d->name, p, len) == 0)
break;
if (i == ARRAY_LEN(debugnames))
return usage();
debug |= d->level;
p = q;
}
}
break;
case 'f':
foreground = 1;
break;
case 'h':
return usage();
case 'l':
killshow(SIGHUP, NULL);
return 0;
case 'N':
disable_all_by_default = 1;
break;
case 'P':
#ifdef SNMP
if (!optarg)
dest_port = DEFAULT_PORT;
else {
dest_port = strtonum(optarg, 1, 65535, &errstr);
if (errstr) {
warnx("destination port %s", errstr);
dest_port = DEFAULT_PORT;
}
}
#else
warnx("SNMP support missing, please feel free to submit a patch.");
#endif
break;
case 'v':
printf("%s\n", versionstring);
return 0;
case 'q':
killshow(SIGTERM, NULL);
return 0;
case 'r':
killshow(SIGUSR1, _PATH_PIMD_DUMP);
//.........这里部分代码省略.........
开发者ID:tzuryby,项目名称:pimd,代码行数:101,代码来源:main.c
示例12: ARRAY_LEN
{ "scoresDown", CG_scrollScoresDown_f },
{ "scoresUp", CG_scrollScoresUp_f },
{ "startOrbit", CG_StartOrbit_f },
//{ "camera", CG_Camera_f },
{ "loaddeferred", CG_LoadDeferredPlayers },
{ "invnext", CG_NextInventory_f },
{ "invprev", CG_PrevInventory_f },
{ "forcenext", CG_NextForcePower_f },
{ "forceprev", CG_PrevForcePower_f },
{ "briefing", CG_SiegeBriefing_f },
{ "siegeCvarUpdate", CG_SiegeCvarUpdate_f },
{ "siegeCompleteCvarUpdate", CG_SiegeCompleteCvarUpdate_f },
{ "clientlist", CG_ClientList_f },
};
static size_t numCommands = ARRAY_LEN( commands );
/*
=================
CG_ConsoleCommand
The string has been tokenized and can be retrieved with
Cmd_Argc() / Cmd_Argv()
=================
*/
qboolean CG_ConsoleCommand( void ) {
const char *cmd;
int i;
cmd = CG_Argv(0);
开发者ID:Joanxt,项目名称:OpenJK,代码行数:30,代码来源:cg_consolecmds.c
示例13: SETUP
SETUP()
{
vle_cmds_add(commands, ARRAY_LEN(commands));
}
开发者ID:phantasea,项目名称:vifm,代码行数:4,代码来源:command_name.c
示例14: set_wordbreaks
/**
* Sets the word breaking information for a generic input string.
*
* @param[in] s input string
* @param[in] len length of the input
* @param[in] lang language of the input
* @param[out] brks pointer to the output breaking data, containing
* #WORDBREAK_BREAK, #WORDBREAK_NOBREAK, or
* #WORDBREAK_INSIDEACHAR
* @param[in] get_next_char function to get the next UTF-32 character
*/
static void set_wordbreaks(
const void *s,
size_t len,
const char *lang,
char *brks,
get_next_char_t get_next_char)
{
enum WordBreakClass wbcLast = WBP_Undefined;
/* wbcSeqStart is the class that started the current sequence.
* WBP_Undefined is a special case that means "sot".
* This value is the class that is at the start of the current rule
* matching sequence. For example, in case of Numeric+MidNum+Numeric
* it'll be Numeric all the way.
*/
enum WordBreakClass wbcSeqStart = WBP_Undefined;
utf32_t ch;
size_t posNext = 0;
size_t posCur = 0;
size_t posLast = 0;
/* TODO: Language-specific specialization. */
(void) lang;
/* Init brks. */
memset(brks, WORDBREAK_BREAK, len);
ch = get_next_char(s, len, &posNext);
while (ch != EOS)
{
enum WordBreakClass wbcCur;
wbcCur = get_char_wb_class(ch, wb_prop_default,
ARRAY_LEN(wb_prop_default));
switch (wbcCur)
{
case WBP_CR:
/* WB3b */
set_brks_to(s, brks, posLast, posCur, len,
WORDBREAK_BREAK, get_next_char);
wbcSeqStart = wbcCur;
posLast = posCur;
break;
case WBP_LF:
if (wbcSeqStart == WBP_CR) /* WB3 */
{
set_brks_to(s, brks, posLast, posCur, len,
WORDBREAK_NOBREAK, get_next_char);
wbcSeqStart = wbcCur;
posLast = posCur;
break;
}
/* Fall off */
case WBP_Newline:
/* WB3a,3b */
set_brks_to(s, brks, posLast, posCur, len,
WORDBREAK_BREAK, get_next_char);
wbcSeqStart = wbcCur;
posLast = posCur;
break;
case WBP_Extend:
case WBP_Format:
/* WB4 - If not the first char/after a newline (WB3a,3b), skip
* this class, set it to be the same as the prev, and mark
* brks not to break before them. */
if ((wbcSeqStart == WBP_Undefined) || IS_WB3ab(wbcSeqStart))
{
set_brks_to(s, brks, posLast, posCur, len,
WORDBREAK_BREAK, get_next_char);
wbcSeqStart = wbcCur;
}
else
{
/* It's surely not the first */
brks[posCur - 1] = WORDBREAK_NOBREAK;
/* "inherit" the previous class. */
wbcCur = wbcLast;
}
break;
case WBP_Katakana:
if ((wbcSeqStart == WBP_Katakana) || /* WB13 */
(wbcSeqStart == WBP_ExtendNumLet)) /* WB13b */
{
set_brks_to(s, brks, posLast, posCur, len,
WORDBREAK_NOBREAK, get_next_char);
//.........这里部分代码省略.........
开发者ID:AlexShiLucky,项目名称:luapower-all,代码行数:101,代码来源:wordbreak.c
示例15: switch
static char *timing_test(struct ast_cli_entry *e, int cmd, struct ast_cli_args *a)
{
struct ast_timer *timer;
int count = 0;
struct timeval start, end;
unsigned int test_rate = 50;
switch (cmd) {
case CLI_INIT:
e->command = "timing test";
e->usage = "Usage: timing test <rate>\n"
" Test a timer with a specified rate, 50/sec by default.\n"
"";
return NULL;
case CLI_GENERATE:
return NULL;
}
if (a->argc != 2 && a->argc != 3) {
return CLI_SHOWUSAGE;
}
if (a->argc == 3) {
unsigned int rate;
if (sscanf(a->argv[2], "%30u", &rate) == 1) {
test_rate = rate;
} else {
ast_cli(a->fd, "Invalid rate '%s', using default of %u\n", a->argv[2], test_rate);
}
}
ast_cli(a->fd, "Attempting to test a timer with %u ticks per second.\n", test_rate);
if (!(timer = ast_timer_open())) {
ast_cli(a->fd, "Failed to open timing fd\n");
return CLI_FAILURE;
}
ast_cli(a->fd, "Using the '%s' timing module for this test.\n", timer->holder->iface->name);
start = ast_tvnow();
ast_timer_set_rate(timer, test_rate);
while (ast_tvdiff_ms((end = ast_tvnow()), start) < 1000) {
int res;
struct pollfd pfd = {
.fd = ast_timer_fd(timer),
.events = POLLIN | POLLPRI,
};
res = ast_poll(&pfd, 1, 100);
if (res == 1) {
count++;
if (ast_timer_ack(timer, 1) < 0) {
ast_cli(a->fd, "Timer failed to acknowledge.\n");
ast_timer_close(timer);
return CLI_FAILURE;
}
} else if (!res) {
ast_cli(a->fd, "poll() timed out! This is bad.\n");
} else if (errno != EAGAIN && errno != EINTR) {
ast_cli(a->fd, "poll() returned error: %s\n", strerror(errno));
}
}
ast_timer_close(timer);
timer = NULL;
ast_cli(a->fd, "It has been %" PRIi64 " milliseconds, and we got %d timer ticks\n",
ast_tvdiff_ms(end, start), count);
return CLI_SUCCESS;
}
static struct ast_cli_entry cli_timing[] = {
AST_CLI_DEFINE(timing_test, "Run a timing test"),
};
static void timing_shutdown(void)
{
ast_cli_unregister_multiple(cli_timing, ARRAY_LEN(cli_timing));
ast_heap_destroy(timing_interfaces);
timing_interfaces = NULL;
}
开发者ID:aderbas,项目名称:asterisk,代码行数:87,代码来源:timing.c
示例16: CG_Obituary
static void CG_Obituary( entityState_t *ent )
{
int mod;
int target, attacker, assistant;
int attackerClass = -1;
const char *message;
const char *messageAssisted = nullptr;
const char *messageSuicide = nullptr;
const char *targetInfo;
const char *attackerInfo;
const char *assistantInfo;
char targetName[ MAX_NAME_LENGTH ];
char attackerName[ MAX_NAME_LENGTH ];
char assistantName[ MAX_NAME_LENGTH ];
gender_t gender;
clientInfo_t *ci;
team_t attackerTeam, assistantTeam = TEAM_NONE;
target = ent->otherEntityNum;
attacker = ent->otherEntityNum2;
assistant = ent->otherEntityNum3;
assistantTeam = (team_t) ( ent->generic1 & 0xFF ); // ugly hack allowing for future expansion(!)
mod = ent->eventParm;
if ( target < 0 || target >= MAX_CLIENTS )
{
CG_Error( "CG_Obituary: target out of range" );
}
ci = &cgs.clientinfo[ target ];
gender = ci->gender;
if ( attacker < 0 || attacker >= MAX_CLIENTS )
{
attacker = ENTITYNUM_WORLD;
attackerInfo = nullptr;
attackerTeam = TEAM_NONE;
strcpy( attackerName, "noname" );
}
else
{
attackerInfo = CG_ConfigString( CS_PLAYERS + attacker );
attackerTeam = cgs.clientinfo[ attacker ].team;
Q_strncpyz( attackerName, Info_ValueForKey( attackerInfo, "n" ), sizeof( attackerName ) );
// check for kill messages about the current clientNum
if ( target == cg.snap->ps.clientNum )
{
Q_strncpyz( cg.killerName, attackerName, sizeof( cg.killerName ) );
}
}
if ( assistant < 0 || assistant >= MAX_CLIENTS )
{
assistantInfo = nullptr;
}
else
{
assistantInfo = CG_ConfigString( CS_PLAYERS + assistant );
}
if ( assistantTeam < TEAM_NONE || assistantTeam >= NUM_TEAMS )
{
assistantTeam = TEAM_NONE;
}
if ( !assistantInfo )
{
strcpy( assistantName, "noname" );
}
else
{
Q_strncpyz( assistantName, Info_ValueForKey( assistantInfo, "n" ), sizeof( assistantName ) );
}
targetInfo = CG_ConfigString( CS_PLAYERS + target );
if ( !targetInfo )
{
return;
}
Q_strncpyz( targetName, Info_ValueForKey( targetInfo, "n" ), sizeof( targetName ) );
// check for single client messages
if ( cg_emoticonsInMessages.integer )
{
if ( mod < MOD_UNKNOWN || mod >= ARRAY_LEN( meansOfDeath ) )
{
mod = MOD_UNKNOWN;
}
if ( meansOfDeath[ mod ].team )
{
attackerTeam = meansOfDeath[ mod ].team;
}
// if the long form is needed, show it; but we need a kill icon for this kill type
if ( *meansOfDeath[ mod ].icon == '>' )
//.........这里部分代码省略.........
开发者ID:JacksonTech,项目名称:Unvanquished,代码行数:101,代码来源:cg_event.cpp
示例17: set_wordbreaks
/**
* Sets the word breaking information for a generic input string.
*
* @param[in] s input string
* @param[in] len length of the input
* @param[in] lang language of the input (reserved for future use)
* @param[out] brks pointer to the output breaking data, containing
* #WORDBREAK_BREAK, #WORDBREAK_NOBREAK, or
* #WORDBREAK_INSIDEACHAR
* @param[in] get_next_char function to get the next UTF-32 character
*/
static void set_wordbreaks(
const void *s,
size_t len,
const char *lang,
char *brks,
get_next_char_t get_next_char)
{
/* Counter of how many time we cam across RI */
int riCounter = 0;
enum WordBreakClass wbcLast = WBP_Undefined;
/* wbcSeqStart is the class that started the current sequence.
* WBP_Undefined is a special case that means "sot".
* This value is the class that is at the start of the current rule
* matching sequence. For example, in case of Numeric+MidNum+Numeric
* it'll be Numeric all the way.
*/
enum WordBreakClass wbcSeqStart = WBP_Undefined;
utf32_t ch;
size_t posNext = 0;
size_t posCur = 0;
size_t posLast = 0;
/* TODO: Language-specific specialization. */
(void) lang;
/* Init brks. */
memset(brks, WORDBREAK_BREAK, len);
ch = get_next_char(s, len, &posNext);
while (ch != EOS)
{
enum WordBreakClass wbcCur;
wbcCur = get_char_wb_class(ch, wb_prop_default,
ARRAY_LEN(wb_prop_default));
switch (wbcCur)
{
case WBP_CR:
/* WB3b */
set_brks_to(s, brks, posLast, posCur, len,
WORDBREAK_BREAK, get_next_char);
wbcSeqStart = wbcCur;
posLast = posCur;
break;
case WBP_LF:
if (wbcSeqStart == WBP_CR) /* WB3 */
{
set_brks_to(s, brks, posLast, posCur, len,
WORDBREAK_NOBREAK, get_next_char);
wbcSeqStart = wbcCur;
posLast = posCur;
break;
}
/* Fall off */
case WBP_Newline:
/* WB3a,3b */
set_brks_to(s, brks, posLast, posCur, len,
WORDBREAK_BREAK, get_next_char);
wbcSeqStart = wbcCur;
posLast = posCur;
break;
case WBP_E_Base_GAZ:
case WBP_Glue_After_Zwj:
/* WB3c */
if (wbcLast == WBP_ZWJ)
{
set_brks_to(s, brks, posLast, posCur, len,
WORDBREAK_NOBREAK, get_next_char);
}
/* No rule found, reset */
else
{
set_brks_to(s, brks, posLast, posCur, len,
WORDBREAK_BREAK, get_next_char);
}
wbcSeqStart = wbcCur;
posLast = posCur;
break;
case WBP_ZWJ:
case WBP_Extend:
case WBP_Format:
/* WB4 - If not the first char/after a newline (WB3a,3b), skip
* this class, set it to be the same as the prev, and mark
* brks not to break before them. */
//.........这里部分代码省略.........
开发者ID:luapower,项目名称:libunibreak,代码行数:101,代码来源:wordbreak.c
示例18: ARRAY_LEN
}
static const char *legacyCvars[] = {
"bg_fighterAltControl",
"g_dlURL",
"g_synchronousClients",
"jp_DlBaseURL",
"pmove_fixed",
"pmove_float",
"pmove_msec",
"vm_cgame",
"vm_game",
"vm_ui"
};
static const size_t numLegacyCvars = ARRAY_LEN( legacyCvars );
static bool FindLegacyCvar( const char *var_name ) {
for ( size_t i=0; i<numLegacyCvars; i++ ) {
if ( !Q_
|
请发表评论