summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBenjamin Otte <otte@redhat.com>2017-10-17 16:55:27 +0200
committerBenjamin Otte <otte@redhat.com>2017-10-30 02:58:03 +0100
commit6a95433046c8501f8d7daad5b26c8bfcbb13542a (patch)
tree56ab89bbd7cb1ddddd541678f6c1e11982c88257
parentb5919bf8489d41696d3dcc447e0ed21e2d07cbca (diff)
downloadgtk+-6a95433046c8501f8d7daad5b26c8bfcbb13542a.tar.gz
gsksltype: Add gsk_sl_type_is_basic()
That way, code doesn't have to do if (is_vector() || is_matrix() || is_scalar()) everywhere.
-rw-r--r--gsk/gskslexpression.c2
-rw-r--r--gsk/gskslstatement.c2
-rw-r--r--gsk/gsksltype.c8
-rw-r--r--gsk/gsksltypeprivate.h1
4 files changed, 11 insertions, 2 deletions
diff --git a/gsk/gskslexpression.c b/gsk/gskslexpression.c
index 6f7ec10d94..550d5e08b5 100644
--- a/gsk/gskslexpression.c
+++ b/gsk/gskslexpression.c
@@ -2330,7 +2330,7 @@ gsk_sl_expression_parse_unary (GskSlScope *scope,
gsk_sl_preprocessor_consume (preproc, negation);
negation->expr = gsk_sl_expression_parse_unary (scope, preproc);
type = gsk_sl_expression_get_return_type (negation->expr);
- if (!gsk_sl_type_is_scalar (type) && !gsk_sl_type_is_vector (type) && !gsk_sl_type_is_matrix (type))
+ if (!gsk_sl_type_is_basic (type))
{
gsk_sl_preprocessor_error (preproc, TYPE_MISMATCH,
"Negation only works on scalars, vectors and matrices, not on %s.",
diff --git a/gsk/gskslstatement.c b/gsk/gskslstatement.c
index ca4708ff88..56fc2ac988 100644
--- a/gsk/gskslstatement.c
+++ b/gsk/gskslstatement.c
@@ -769,7 +769,7 @@ its_a_type:
GskSlStatementExpression *statement_expression;
statement_expression = gsk_sl_statement_new (GskSlStatementExpression, &GSK_SL_STATEMENT_EXPRESSION);
- if (gsk_sl_type_is_scalar (type) || gsk_sl_type_is_vector (type) || gsk_sl_type_is_matrix (type))
+ if (gsk_sl_type_is_basic (type))
{
statement_expression->expression = gsk_sl_expression_parse_constructor (scope, preproc, type);
}
diff --git a/gsk/gsksltype.c b/gsk/gsksltype.c
index c4050de4d1..4afd840f0e 100644
--- a/gsk/gsksltype.c
+++ b/gsk/gsksltype.c
@@ -2057,6 +2057,14 @@ gsk_sl_type_is_matrix (const GskSlType *type)
}
gboolean
+gsk_sl_type_is_basic (const GskSlType *type)
+{
+ return gsk_sl_type_is_scalar (type)
+ || gsk_sl_type_is_vector (type)
+ || gsk_sl_type_is_matrix (type);
+}
+
+gboolean
gsk_sl_type_is_struct (const GskSlType *type)
{
return type->class == &GSK_SL_TYPE_STRUCT;
diff --git a/gsk/gsksltypeprivate.h b/gsk/gsksltypeprivate.h
index 55b6956d5d..567762c31b 100644
--- a/gsk/gsksltypeprivate.h
+++ b/gsk/gsksltypeprivate.h
@@ -48,6 +48,7 @@ gboolean gsk_sl_type_is_void (const GskSlType
gboolean gsk_sl_type_is_scalar (const GskSlType *type);
gboolean gsk_sl_type_is_vector (const GskSlType *type);
gboolean gsk_sl_type_is_matrix (const GskSlType *type);
+gboolean gsk_sl_type_is_basic (const GskSlType *type);
gboolean gsk_sl_type_is_struct (const GskSlType *type);
gboolean gsk_sl_type_is_block (const GskSlType *type);
gboolean gsk_sl_type_is_opaque (const GskSlType *type);