Пример #1
0
void qspRefreshPlayList()
{
	QSP_CHAR **s, *file, *str, *pos;
	int count = qspPLFilesCount;
	if (!count) return;
	qspCopyStrs(&s, qspPLFiles, 0, count);
	qspClearPlayList(QSP_FALSE);
	while (--count >= 0)
	{
		str = s[count];
		pos = qspStrChar(str, QSP_PLVOLUMEDELIM[0]);
		if (pos) *pos = 0;
		if (qspIsAnyString(str))
		{
			file = qspGetAbsFromRelPath(str);
			if (qspSearchPlayList(str) < 0 && qspCallIsPlayingFile(file))
			{
				if (pos) *pos = QSP_PLVOLUMEDELIM[0];
				qspPLFiles[qspPLFilesCount++] = qspGetNewText(str, -1);
			}
			free(file);
		}
		free(str);
	}
	free(s);
}
Пример #2
0
static QSPVar *qspGetVarData(QSP_CHAR *s, QSP_BOOL isSet, int *index)
{
	QSPVar *var;
	QSPVariant ind;
	int oldRefreshCount;
	QSP_CHAR *temp, *rPos, *lPos = qspStrChar(s, QSP_LSBRACK[0]);
	if (lPos)
	{
		rPos = qspStrPos(lPos, QSP_RSBRACK, QSP_FALSE);
		if (!rPos)
		{
			qspSetError(QSP_ERR_BRACKNOTFOUND);
			return 0;
		}
		*lPos = 0;
		var = qspVarReference(s, isSet);
		*lPos = QSP_LSBRACK[0];
		if (!var) return 0;
		temp = qspSkipSpaces(lPos + 1);
		if (temp == rPos)
		{
			if (isSet)
				*index = var->ValsCount;
			else
				*index = (var->ValsCount ? var->ValsCount - 1 : 0);
		}
		else
		{
			oldRefreshCount = qspRefreshCount;
			*rPos = 0;
			ind = qspExprValue(temp);
			*rPos = QSP_RSBRACK[0];
			if (qspRefreshCount != oldRefreshCount || qspErrorNum) return 0;
			if (ind.IsStr)
			{
				*index = qspGetVarTextIndex(var, QSP_STR(ind), isSet);
				free(QSP_STR(ind));
			}
			else
				*index = QSP_NUM(ind);
		}
		return var;
	}
	*index = 0;
	return qspVarReference(s, isSet);
}
Пример #3
0
void qspPlayPLFiles()
{
	int i;
	QSP_CHAR *pos;
	for (i = 0; i < qspPLFilesCount; ++i)
	{
		pos = qspStrChar(qspPLFiles[i], QSP_PLVOLUMEDELIM[0]);
		if (pos)
		{
			*pos = 0;
			qspPlayFile(qspPLFiles[i], qspStrToNum(pos + 1, 0), QSP_FALSE);
			*pos = QSP_PLVOLUMEDELIM[0];
		}
		else
			qspPlayFile(qspPLFiles[i], 100, QSP_FALSE);
	}
}
Пример #4
0
static QSP_CHAR *qspGetVarNameOnly(QSP_CHAR *s)
{
	QSP_CHAR *brackPos = qspStrChar(s, QSP_LSBRACK[0]);
	if (brackPos) return qspGetNewText(s, (int)(brackPos - s));
	return qspDelSpc(s);
}