Initial commit
[yaffs-website] / node_modules / node-sass / src / libsass / include / sass / functions.h
1 #ifndef SASS_C_FUNCTIONS_H
2 #define SASS_C_FUNCTIONS_H
3
4 #include <stddef.h>
5 #include <stdbool.h>
6 #include <sass/base.h>
7
8 #ifdef __cplusplus
9 extern "C" {
10 #endif
11
12
13 // Forward declaration
14 struct Sass_Env;
15 struct Sass_Callee;
16 struct Sass_Import;
17 struct Sass_Options;
18 struct Sass_Compiler;
19 struct Sass_Importer;
20 struct Sass_Function;
21
22 // Typedef helpers for callee lists
23 typedef struct Sass_Env (*Sass_Env_Frame);
24 // Typedef helpers for callee lists
25 typedef struct Sass_Callee (*Sass_Callee_Entry);
26 // Typedef helpers for import lists
27 typedef struct Sass_Import (*Sass_Import_Entry);
28 typedef struct Sass_Import* (*Sass_Import_List);
29 // Typedef helpers for custom importer lists
30 typedef struct Sass_Importer (*Sass_Importer_Entry);
31 typedef struct Sass_Importer* (*Sass_Importer_List);
32 // Typedef defining importer signature and return type
33 typedef Sass_Import_List (*Sass_Importer_Fn)
34   (const char* url, Sass_Importer_Entry cb, struct Sass_Compiler* compiler);
35
36 // Typedef helpers for custom functions lists
37 typedef struct Sass_Function (*Sass_Function_Entry);
38 typedef struct Sass_Function* (*Sass_Function_List);
39 // Typedef defining function signature and return type
40 typedef union Sass_Value* (*Sass_Function_Fn)
41   (const union Sass_Value*, Sass_Function_Entry cb, struct Sass_Compiler* compiler);
42
43 // Type of function calls
44 enum Sass_Callee_Type {
45   SASS_CALLEE_MIXIN,
46   SASS_CALLEE_FUNCTION,
47   SASS_CALLEE_C_FUNCTION,
48 };
49
50 // Creator for sass custom importer return argument list
51 ADDAPI Sass_Importer_List ADDCALL sass_make_importer_list (size_t length);
52 ADDAPI Sass_Importer_Entry ADDCALL sass_importer_get_list_entry (Sass_Importer_List list, size_t idx);
53 ADDAPI void ADDCALL sass_importer_set_list_entry (Sass_Importer_List list, size_t idx, Sass_Importer_Entry entry);
54 ADDAPI void ADDCALL sass_delete_importer_list (Sass_Importer_List list);
55
56
57 // Creators for custom importer callback (with some additional pointer)
58 // The pointer is mostly used to store the callback into the actual binding
59 ADDAPI Sass_Importer_Entry ADDCALL sass_make_importer (Sass_Importer_Fn importer, double priority, void* cookie);
60
61 // Getters for import function descriptors
62 ADDAPI Sass_Importer_Fn ADDCALL sass_importer_get_function (Sass_Importer_Entry cb);
63 ADDAPI double ADDCALL sass_importer_get_priority (Sass_Importer_Entry cb);
64 ADDAPI void* ADDCALL sass_importer_get_cookie (Sass_Importer_Entry cb);
65
66 // Deallocator for associated memory
67 ADDAPI void ADDCALL sass_delete_importer (Sass_Importer_Entry cb);
68
69 // Creator for sass custom importer return argument list
70 ADDAPI Sass_Import_List ADDCALL sass_make_import_list (size_t length);
71 // Creator for a single import entry returned by the custom importer inside the list
72 ADDAPI Sass_Import_Entry ADDCALL sass_make_import_entry (const char* path, char* source, char* srcmap);
73 ADDAPI Sass_Import_Entry ADDCALL sass_make_import (const char* imp_path, const char* abs_base, char* source, char* srcmap);
74 // set error message to abort import and to print out a message (path from existing object is used in output)
75 ADDAPI Sass_Import_Entry ADDCALL sass_import_set_error(Sass_Import_Entry import, const char* message, size_t line, size_t col);
76
77 // Setters to insert an entry into the import list (you may also use [] access directly)
78 // Since we are dealing with pointers they should have a guaranteed and fixed size
79 ADDAPI void ADDCALL sass_import_set_list_entry (Sass_Import_List list, size_t idx, Sass_Import_Entry entry);
80 ADDAPI Sass_Import_Entry ADDCALL sass_import_get_list_entry (Sass_Import_List list, size_t idx);
81
82 // Getters for callee entry
83 ADDAPI const char* ADDCALL sass_callee_get_name (Sass_Callee_Entry);
84 ADDAPI const char* ADDCALL sass_callee_get_path (Sass_Callee_Entry);
85 ADDAPI size_t ADDCALL sass_callee_get_line (Sass_Callee_Entry);
86 ADDAPI size_t ADDCALL sass_callee_get_column (Sass_Callee_Entry);
87 ADDAPI enum Sass_Callee_Type ADDCALL sass_callee_get_type (Sass_Callee_Entry);
88 ADDAPI Sass_Env_Frame ADDCALL sass_callee_get_env (Sass_Callee_Entry);
89
90 // Getters and Setters for environments (lexical, local and global)
91 ADDAPI union Sass_Value* ADDCALL sass_env_get_lexical (Sass_Env_Frame, const char*);
92 ADDAPI void ADDCALL sass_env_set_lexical (Sass_Env_Frame, const char*, union Sass_Value*);
93 ADDAPI union Sass_Value* ADDCALL sass_env_get_local (Sass_Env_Frame, const char*);
94 ADDAPI void ADDCALL sass_env_set_local (Sass_Env_Frame, const char*, union Sass_Value*);
95 ADDAPI union Sass_Value* ADDCALL sass_env_get_global (Sass_Env_Frame, const char*);
96 ADDAPI void ADDCALL sass_env_set_global (Sass_Env_Frame, const char*, union Sass_Value*);
97
98 // Getters for import entry
99 ADDAPI const char* ADDCALL sass_import_get_imp_path (Sass_Import_Entry);
100 ADDAPI const char* ADDCALL sass_import_get_abs_path (Sass_Import_Entry);
101 ADDAPI const char* ADDCALL sass_import_get_source (Sass_Import_Entry);
102 ADDAPI const char* ADDCALL sass_import_get_srcmap (Sass_Import_Entry);
103 // Explicit functions to take ownership of these items
104 // The property on our struct will be reset to NULL
105 ADDAPI char* ADDCALL sass_import_take_source (Sass_Import_Entry);
106 ADDAPI char* ADDCALL sass_import_take_srcmap (Sass_Import_Entry);
107 // Getters from import error entry
108 ADDAPI size_t ADDCALL sass_import_get_error_line (Sass_Import_Entry);
109 ADDAPI size_t ADDCALL sass_import_get_error_column (Sass_Import_Entry);
110 ADDAPI const char* ADDCALL sass_import_get_error_message (Sass_Import_Entry);
111
112 // Deallocator for associated memory (incl. entries)
113 ADDAPI void ADDCALL sass_delete_import_list (Sass_Import_List);
114 // Just in case we have some stray import structs
115 ADDAPI void ADDCALL sass_delete_import (Sass_Import_Entry);
116
117
118
119 // Creators for sass function list and function descriptors
120 ADDAPI Sass_Function_List ADDCALL sass_make_function_list (size_t length);
121 ADDAPI Sass_Function_Entry ADDCALL sass_make_function (const char* signature, Sass_Function_Fn cb, void* cookie);
122 ADDAPI void ADDCALL sass_delete_function (Sass_Function_Entry entry);
123 ADDAPI void ADDCALL sass_delete_function_list (Sass_Function_List list);
124
125 // Setters and getters for callbacks on function lists
126 ADDAPI Sass_Function_Entry ADDCALL sass_function_get_list_entry(Sass_Function_List list, size_t pos);
127 ADDAPI void ADDCALL sass_function_set_list_entry(Sass_Function_List list, size_t pos, Sass_Function_Entry cb);
128
129 // Getters for custom function descriptors
130 ADDAPI const char* ADDCALL sass_function_get_signature (Sass_Function_Entry cb);
131 ADDAPI Sass_Function_Fn ADDCALL sass_function_get_function (Sass_Function_Entry cb);
132 ADDAPI void* ADDCALL sass_function_get_cookie (Sass_Function_Entry cb);
133
134
135 #ifdef __cplusplus
136 } // __cplusplus defined.
137 #endif
138
139 #endif