Skip to content

Commit 606fa02

Browse files
committed
Merge pull request #1617 from mgreter/c-api/changes-for-3.3
Change C-API to pass compiler to custom functions
2 parents a90e6b1 + 8057222 commit 606fa02

File tree

5 files changed

+11
-6
lines changed

5 files changed

+11
-6
lines changed

contrib/plugin.cpp

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,8 +10,11 @@ extern "C" const char* ADDCALL libsass_get_version() {
1010
return libsass_version();
1111
}
1212

13-
union Sass_Value* custom_function(const union Sass_Value* s_args, Sass_Function_Entry cb, struct Sass_Options* opts)
13+
union Sass_Value* custom_function(const union Sass_Value* s_args, Sass_Function_Entry cb, struct Sass_Compiler* comp)
1414
{
15+
// get context/option struct associated with this compiler
16+
struct Sass_Context* ctx = sass_compiler_get_context(comp);
17+
struct Sass_Options* opts = sass_compiler_get_options(comp);
1518
// get the cookie from function descriptor
1619
void* cookie = sass_function_get_cookie(cb);
1720
// we actually abuse the void* to store an "int"

include/sass/context.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -136,6 +136,7 @@ ADDAPI char** ADDCALL sass_context_take_included_files (struct Sass_Context* ctx
136136
// Getters for Sass_Compiler options
137137
ADDAPI enum Sass_Compiler_State ADDCALL sass_compiler_get_state(struct Sass_Compiler* compiler);
138138
ADDAPI struct Sass_Context* ADDCALL sass_compiler_get_context(struct Sass_Compiler* compiler);
139+
ADDAPI struct Sass_Options* ADDCALL sass_compiler_get_options(struct Sass_Compiler* compiler);
139140
ADDAPI size_t ADDCALL sass_compiler_get_import_stack_size(struct Sass_Compiler* compiler);
140141
ADDAPI Sass_Import_Entry ADDCALL sass_compiler_get_last_import(struct Sass_Compiler* compiler);
141142
ADDAPI Sass_Import_Entry ADDCALL sass_compiler_get_import_entry(struct Sass_Compiler* compiler, size_t idx);

include/sass/functions.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,7 @@ typedef struct Sass_Function (*Sass_Function_Entry);
3232
typedef struct Sass_Function* (*Sass_Function_List);
3333
// Typedef defining function signature and return type
3434
typedef union Sass_Value* (*Sass_Function_Fn)
35-
(const union Sass_Value*, Sass_Function_Entry cb, struct Sass_Options* options);
35+
(const union Sass_Value*, Sass_Function_Entry cb, struct Sass_Compiler* compiler);
3636

3737

3838
// Creator for sass custom importer return argument list

src/eval.cpp

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -330,7 +330,7 @@ namespace Sass {
330330
To_C to_c;
331331
union Sass_Value* c_args = sass_make_list(1, SASS_COMMA);
332332
sass_list_set_value(c_args, 0, message->perform(&to_c));
333-
union Sass_Value* c_val = c_func(c_args, c_function, ctx.c_options);
333+
union Sass_Value* c_val = c_func(c_args, c_function, ctx.c_compiler);
334334
sass_delete_value(c_args);
335335
sass_delete_value(c_val);
336336
return 0;
@@ -363,7 +363,7 @@ namespace Sass {
363363
To_C to_c;
364364
union Sass_Value* c_args = sass_make_list(1, SASS_COMMA);
365365
sass_list_set_value(c_args, 0, message->perform(&to_c));
366-
union Sass_Value* c_val = c_func(c_args, c_function, ctx.c_options);
366+
union Sass_Value* c_val = c_func(c_args, c_function, ctx.c_compiler);
367367
sass_delete_value(c_args);
368368
sass_delete_value(c_val);
369369
return 0;
@@ -393,7 +393,7 @@ namespace Sass {
393393
To_C to_c;
394394
union Sass_Value* c_args = sass_make_list(1, SASS_COMMA);
395395
sass_list_set_value(c_args, 0, message->perform(&to_c));
396-
union Sass_Value* c_val = c_func(c_args, c_function, ctx.c_options);
396+
union Sass_Value* c_val = c_func(c_args, c_function, ctx.c_compiler);
397397
sass_delete_value(c_args);
398398
sass_delete_value(c_val);
399399
return 0;
@@ -688,7 +688,7 @@ namespace Sass {
688688
Expression* arg = static_cast<Expression*>(node);
689689
sass_list_set_value(c_args, i, arg->perform(&to_c));
690690
}
691-
union Sass_Value* c_val = c_func(c_args, c_function, ctx.c_options);
691+
union Sass_Value* c_val = c_func(c_args, c_function, ctx.c_compiler);
692692
if (sass_value_get_tag(c_val) == SASS_ERROR) {
693693
error("error in C function " + c->name() + ": " + sass_error_get_message(c_val), c->pstate(), backtrace());
694694
} else if (sass_value_get_tag(c_val) == SASS_WARNING) {

src/sass_context.cpp

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -806,6 +806,7 @@ extern "C" {
806806
// Getters for Sass_Compiler options (get conected sass context)
807807
enum Sass_Compiler_State ADDCALL sass_compiler_get_state(struct Sass_Compiler* compiler) { return compiler->state; }
808808
struct Sass_Context* ADDCALL sass_compiler_get_context(struct Sass_Compiler* compiler) { return compiler->c_ctx; }
809+
struct Sass_Options* ADDCALL sass_compiler_get_options(struct Sass_Compiler* compiler) { return compiler->c_ctx; }
809810
// Getters for Sass_Compiler options (query import stack)
810811
size_t ADDCALL sass_compiler_get_import_stack_size(struct Sass_Compiler* compiler) { return compiler->cpp_ctx->import_stack.size(); }
811812
Sass_Import_Entry ADDCALL sass_compiler_get_last_import(struct Sass_Compiler* compiler) { return compiler->cpp_ctx->import_stack.back(); }

0 commit comments

Comments
 (0)