sass_context_wrapper.cpp 1.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263
  1. #include "sass_context_wrapper.h"
  2. extern "C" {
  3. using namespace std;
  4. void compile_it(uv_work_t* req) {
  5. sass_context_wrapper* ctx_w = (sass_context_wrapper*)req->data;
  6. if (ctx_w->dctx) {
  7. compile_data(ctx_w->dctx);
  8. }
  9. else if (ctx_w->fctx) {
  10. compile_file(ctx_w->fctx);
  11. }
  12. }
  13. void compile_data(struct Sass_Data_Context* dctx) {
  14. sass_compile_data_context(dctx);
  15. }
  16. void compile_file(struct Sass_File_Context* fctx) {
  17. sass_compile_file_context(fctx);
  18. }
  19. sass_context_wrapper* sass_make_context_wrapper() {
  20. sass_context_wrapper* ctx_w = (sass_context_wrapper*)calloc(1, sizeof(sass_context_wrapper));
  21. ctx_w->importer_mutex = new std::mutex();
  22. ctx_w->importer_condition_variable = new std::condition_variable();
  23. return ctx_w;
  24. }
  25. void sass_wrapper_dispose(struct sass_context_wrapper* ctx_w, char* string = 0) {
  26. if (ctx_w->dctx) {
  27. sass_delete_data_context(ctx_w->dctx);
  28. }
  29. else if (ctx_w->fctx) {
  30. sass_delete_file_context(ctx_w->fctx);
  31. }
  32. delete ctx_w->file;
  33. delete ctx_w->prev;
  34. delete ctx_w->error_callback;
  35. delete ctx_w->success_callback;
  36. delete ctx_w->importer_callback;
  37. delete ctx_w->importer_mutex;
  38. delete ctx_w->importer_condition_variable;
  39. NanDisposePersistent(ctx_w->result);
  40. if(string) {
  41. free(string);
  42. }
  43. }
  44. void sass_free_context_wrapper(sass_context_wrapper* ctx_w) {
  45. sass_wrapper_dispose(ctx_w);
  46. free(ctx_w);
  47. }
  48. }