Пример #1
0
int Check_Pos(struct Property *p, struct PropValue *v)
{
	if(!Check_Value(p, v, PARSE_POS, Parse_Move))
		return(FALSE);

	if(v->value2)	/* compressed point list */
	{
		if(sgfc->info->FF < 4)
			PrintError(E_VERSION_CONFLICT, v->buffer, sgfc->info->FF);

		switch((Parse_Move)(v->value2, PARSE_POS))
		{
			case -1:	PrintError(E_BAD_VALUE_CORRECTED, v->buffer, p->idstr, v->value2);
						break;
			case 0:		PrintError(E_BAD_VALUE_DELETED, v->buffer, p->idstr);
						return(FALSE);
			case 1:		break;
		}

		if(sgfc->info->GM == 1)
			return((!ExpandPointList(p, v, TRUE)));
		else
			return(TRUE);
	}

	return(TRUE);
}
Пример #2
0
int Do_View(struct Node *n, struct Property *p, struct BoardStatus *st)
{
	struct PropValue *v;
	int i = 0;

	v = p->value;

	if(!strlen(v->value))	/* VW[] */
	{
		if(v->next)
		{
			PrintError(E_BAD_VW_VALUES, p->buffer, "values after '[]' value found", "deleted");
			v = v->next;
			while(v)
				v = Del_PropValue(p, v);
		}

		return(TRUE);
	}

	while(v)
	{
		i++;
		if(!strlen(v->value))	/* '[]' within other values */
		{
			PrintError(E_BAD_VW_VALUES, v->buffer, "empty value found in list", "deleted");
			v = Del_PropValue(p, v);
		}
		else
			v = v->next;
	}

	if(sgfc->info->GM != 1)		/* game not Go */
		return(TRUE);

	if(sgfc->info->FF < 4)		/* old definition of VW */
	{
		if(i == 2)				/* transform FF3 values */
		{
			v = p->value;
			v->value2 = v->next->value;
			v->next->value = NULL;
			Del_PropValue(p, v->next);
		
			if(!ExpandPointList(p, v, FALSE))
			{
				PrintError(E_BAD_VW_VALUES, v->buffer, "illegal FF[3] definition", "deleted");
				return(FALSE);
			}

			Del_PropValue(p, v);
		}
		else		/* looks like FF4 defintion (wrong FF set?) */
			PrintError(E_BAD_VW_VALUES, p->buffer, "FF[4] definition in older FF found", "parsing done anyway");
	}

	return(TRUE);
}