Valeur Sass
Les Sass_Values permettent de transmettre des valeurs et leurs types entre l'implémenteur et LibSass. Sass gère différents types de valeurs (dont les tableaux imbriqués et les tables de hachage). Si vous implémentez une liaison vers un autre langage de programmation, vous devez trouver un moyen de convertir les Sass_Values ??entre le langage cible et le langage C. Les Sass_Values ??ne sont actuellement utilisées que par des fonctions personnalisées, mais il devrait également être possible de les utiliser sans contexte de compilation.
Utilisation de base
- #include "sass/values.h"
Les valeurs de base :
- // Type pour les valeurs Sass
- enum Sass_Tag {
- SASS_BOOLEAN,
- SASS_NUMBER,
- SASS_COLOR,
- SASS_STRING,
- SASS_LIST,
- SASS_MAP,
- SASS_NULL,
- SASS_ERROR,
- SASS_WARNING
- };
-
- // Balises pour désigner les séparateurs de liste Sass
- enum Sass_Separator {
- SASS_COMMA,
- SASS_SPACE,
- // utilisé uniquement en interne pour représenter une table de hachage avant évaluation
- // sinon nous serions trop tôt pour vérifier les clefs en double
- SASS_HASH
- };
-
- // Opérateurs de valeur
- enum Sass_OP {
- AND, OR, // connecteurs logiques
- EQ, NEQ, GT, GTE, LT, LTE, // relations arithmétiques
- ADD, SUB, MUL, DIV, MOD, // fonctions arithmétiques
- NUM_OPS // nous savons donc quelle taille donner à la table d'opération
- };
API de valeur Sass
- // Déclaration anticipée
- union Sass_Value;
-
- // Fonctions de création pour tous les types de valeur
- union Sass_Value* sass_make_null (void);
- union Sass_Value* sass_make_boolean (bool val);
- union Sass_Value* sass_make_string (const char* val);
- union Sass_Value* sass_make_qstring (const char* val);
- union Sass_Value* sass_make_number (double val, const char* unit);
- union Sass_Value* sass_make_color (double r, double g, double b, double a);
- union Sass_Value* sass_make_list (size_t len, enum Sass_Separator sep, bool is_bracketed);
- union Sass_Value* sass_make_map (size_t len);
- union Sass_Value* sass_make_error (const char* msg);
- union Sass_Value* sass_make_warning (const char* msg);
-
- // Fonction destructrice générique pour tous les types
- // Libère la mémoire de toutes les valeurs Sass_Values associées
- // Cela signifie que nous supprimerons récursivement les listes et les cartes
- void sass_delete_value (union Sass_Value* val);
-
- // Créer une copie clonée en profondeur de la valeur sass donnée
- union Sass_Value* sass_clone_value (const union Sass_Value* val);
-
- // Stringifiez une Sass_Values et renvoyez également le résultat sous forme de Sass_Value (de type STRING)
- union Sass_Value* sass_value_stringify (const union Sass_Value* a, bool compressed, int precision);
-
- // Exécutez une opération pour deux Sass_Values et renvoyez également le résultat sous forme de Sass_Value
- union Sass_Value* sass_value_op (enum Sass_OP op, const union Sass_Value* a, const union Sass_Value* b);
-
- // Renvoie la balise sass pour une valeur sass générique
- // Une vérification est nécessaire avant d'accéder à des valeurs spécifiques !
- enum Sass_Tag sass_value_get_tag (const union Sass_Value* v);
-
- // Vérifier que la valeur est d'un type spécifique
- // Peut également être utilisé avant d'accéder aux propriétés !
- bool sass_value_is_null (const union Sass_Value* v);
- bool sass_value_is_number (const union Sass_Value* v);
- bool sass_value_is_string (const union Sass_Value* v);
- bool sass_value_is_boolean (const union Sass_Value* v);
- bool sass_value_is_color (const union Sass_Value* v);
- bool sass_value_is_list (const union Sass_Value* v);
- bool sass_value_is_map (const union Sass_Value* v);
- bool sass_value_is_error (const union Sass_Value* v);
- bool sass_value_is_warning (const union Sass_Value* v);
-
- // Getters et setters pour Sass_Number
- double sass_number_get_value (const union Sass_Value* v);
- void sass_number_set_value (union Sass_Value* v, double value);
- const char* sass_number_get_unit (const union Sass_Value* v);
- void sass_number_set_unit (union Sass_Value* v, char* unit);
-
- // Getters et setters pour Sass_String
- const char* sass_string_get_value (const union Sass_Value* v);
- void sass_string_set_value (union Sass_Value* v, char* value);
- bool sass_string_is_quoted(const union Sass_Value* v);
- void sass_string_set_quoted(union Sass_Value* v, bool quoted);
-
- // Getters et setters pour Sass_Boolean
- bool sass_boolean_get_value (const union Sass_Value* v);
- void sass_boolean_set_value (union Sass_Value* v, bool value);
-
- // Getters et setters pour Sass_Color
- double sass_color_get_r (const union Sass_Value* v);
- void sass_color_set_r (union Sass_Value* v, double r);
- double sass_color_get_g (const union Sass_Value* v);
- void sass_color_set_g (union Sass_Value* v, double g);
- double sass_color_get_b (const union Sass_Value* v);
- void sass_color_set_b (union Sass_Value* v, double b);
- double sass_color_get_a (const union Sass_Value* v);
- void sass_color_set_a (union Sass_Value* v, double a);
-
- // Getter pour le nombre d'éléments dans la liste
- size_t sass_list_get_length (const union Sass_Value* v);
- // Getters et setters pour Sass_List
- enum Sass_Separator sass_list_get_separator (const union Sass_Value* v);
- void sass_list_set_separator (union Sass_Value* v, enum Sass_Separator value);
- bool sass_list_get_is_bracketed (const union Sass_Value* v);
- void sass_list_set_is_bracketed (union Sass_Value* v, bool value);
- // Getters et setters pour les valeurs Sass_List
- union Sass_Value* sass_list_get_value (const union Sass_Value* v, size_t i);
- void sass_list_set_value (union Sass_Value* v, size_t i, union Sass_Value* value);
-
- // Getter pour le nombre d'éléments dans la carte
- size_t sass_map_get_length (const union Sass_Value* v);
- // Getters et setters pour les clés et valeurs Sass_Map
- union Sass_Value* sass_map_get_key (const union Sass_Value* v, size_t i);
- void sass_map_set_key (union Sass_Value* v, size_t i, union Sass_Value*);
- union Sass_Value* sass_map_get_value (const union Sass_Value* v, size_t i);
- void sass_map_set_value (union Sass_Value* v, size_t i, union Sass_Value*);
-
- // Getters et setters pour Sass_Error
- char* sass_error_get_message (const union Sass_Value* v);
- void sass_error_set_message (union Sass_Value* v, char* msg);
-
- // Getters et setters pour Sass_Warning
- char* sass_warning_get_message (const union Sass_Value* v);
- void sass_warning_set_message (union Sass_Value* v, char* msg);
Autres liens
Dernière mise à jour : Mardi, le 8 octobre 2024