Blame src/sass.hpp

Packit bfcc33
// must be the first include in all compile units
Packit bfcc33
#ifndef SASS_SASS_H
Packit bfcc33
#define SASS_SASS_H
Packit bfcc33
Packit bfcc33
// undefine extensions macro to tell sys includes
Packit bfcc33
// that we do not want any macros to be exported
Packit bfcc33
// mainly fixes an issue on SmartOS (SEC macro)
Packit bfcc33
#undef __EXTENSIONS__
Packit bfcc33
Packit bfcc33
#ifdef _MSC_VER
Packit bfcc33
#pragma warning(disable : 4005)
Packit bfcc33
#endif
Packit bfcc33
Packit bfcc33
// aplies to MSVC and MinGW
Packit bfcc33
#ifdef _WIN32
Packit bfcc33
// we do not want the ERROR macro
Packit bfcc33
# define NOGDI
Packit bfcc33
// we do not want the min/max macro
Packit bfcc33
# define NOMINMAX
Packit bfcc33
// we do not want the IN/OUT macro
Packit bfcc33
# define _NO_W32_PSEUDO_MODIFIERS
Packit bfcc33
#endif
Packit bfcc33
Packit bfcc33
Packit bfcc33
// should we be case insensitive
Packit bfcc33
// when dealing with files or paths
Packit bfcc33
#ifndef FS_CASE_SENSITIVE
Packit bfcc33
# ifdef _WIN32
Packit bfcc33
#  define FS_CASE_SENSITIVE 0
Packit bfcc33
# else
Packit bfcc33
#  define FS_CASE_SENSITIVE 1
Packit bfcc33
# endif
Packit bfcc33
#endif
Packit bfcc33
Packit bfcc33
// path separation char
Packit bfcc33
#ifndef PATH_SEP
Packit bfcc33
# ifdef _WIN32
Packit bfcc33
#  define PATH_SEP ';'
Packit bfcc33
# else
Packit bfcc33
#  define PATH_SEP ':'
Packit bfcc33
# endif
Packit bfcc33
#endif
Packit bfcc33
Packit bfcc33
Packit bfcc33
// include C-API header
Packit bfcc33
#include "sass/base.h"
Packit bfcc33
Packit bfcc33
// For C++ helper
Packit bfcc33
#include <string>
Packit bfcc33
Packit bfcc33
// output behaviours
Packit bfcc33
namespace Sass {
Packit bfcc33
Packit bfcc33
  // create some C++ aliases for the most used options
Packit bfcc33
  const static Sass_Output_Style NESTED = SASS_STYLE_NESTED;
Packit bfcc33
  const static Sass_Output_Style COMPACT = SASS_STYLE_COMPACT;
Packit bfcc33
  const static Sass_Output_Style EXPANDED = SASS_STYLE_EXPANDED;
Packit bfcc33
  const static Sass_Output_Style COMPRESSED = SASS_STYLE_COMPRESSED;
Packit bfcc33
  // only used internal to trigger ruby inspect behavior
Packit bfcc33
  const static Sass_Output_Style INSPECT = SASS_STYLE_INSPECT;
Packit bfcc33
  const static Sass_Output_Style TO_SASS = SASS_STYLE_TO_SASS;
Packit bfcc33
Packit bfcc33
  // helper to aid dreaded MSVC debug mode
Packit bfcc33
  // see implementation for more details
Packit bfcc33
  char* sass_copy_string(std::string str);
Packit bfcc33
Packit bfcc33
}
Packit bfcc33
Packit bfcc33
// input behaviours
Packit bfcc33
enum Sass_Input_Style {
Packit bfcc33
  SASS_CONTEXT_NULL,
Packit bfcc33
  SASS_CONTEXT_FILE,
Packit bfcc33
  SASS_CONTEXT_DATA,
Packit bfcc33
  SASS_CONTEXT_FOLDER
Packit bfcc33
};
Packit bfcc33
Packit bfcc33
// simple linked list
Packit bfcc33
struct string_list {
Packit bfcc33
  string_list* next;
Packit bfcc33
  char* string;
Packit bfcc33
};
Packit bfcc33
Packit bfcc33
// sass config options structure
Packit bfcc33
struct Sass_Inspect_Options {
Packit bfcc33
Packit bfcc33
  // Output style for the generated css code
Packit bfcc33
  // A value from above SASS_STYLE_* constants
Packit bfcc33
  enum Sass_Output_Style output_style;
Packit bfcc33
Packit bfcc33
  // Precision for fractional numbers
Packit bfcc33
  int precision;
Packit bfcc33
Packit bfcc33
  // initialization list (constructor with defaults)
Packit bfcc33
  Sass_Inspect_Options(Sass_Output_Style style = Sass::NESTED,
Packit bfcc33
                       int precision = 5)
Packit bfcc33
  : output_style(style), precision(precision)
Packit bfcc33
  { }
Packit bfcc33
Packit bfcc33
};
Packit bfcc33
Packit bfcc33
// sass config options structure
Packit bfcc33
struct Sass_Output_Options : Sass_Inspect_Options {
Packit bfcc33
Packit bfcc33
  // String to be used for indentation
Packit bfcc33
  const char* indent;
Packit bfcc33
  // String to be used to for line feeds
Packit bfcc33
  const char* linefeed;
Packit bfcc33
Packit bfcc33
  // Emit comments in the generated CSS indicating
Packit bfcc33
  // the corresponding source line.
Packit bfcc33
  bool source_comments;
Packit bfcc33
Packit bfcc33
  // initialization list (constructor with defaults)
Packit bfcc33
  Sass_Output_Options(struct Sass_Inspect_Options opt,
Packit bfcc33
                      const char* indent = "  ",
Packit bfcc33
                      const char* linefeed = "\n",
Packit bfcc33
                      bool source_comments = false)
Packit bfcc33
  : Sass_Inspect_Options(opt),
Packit bfcc33
    indent(indent), linefeed(linefeed),
Packit bfcc33
    source_comments(source_comments)
Packit bfcc33
  { }
Packit bfcc33
Packit bfcc33
  // initialization list (constructor with defaults)
Packit bfcc33
  Sass_Output_Options(Sass_Output_Style style = Sass::NESTED,
Packit bfcc33
                      int precision = 5,
Packit bfcc33
                      const char* indent = "  ",
Packit bfcc33
                      const char* linefeed = "\n",
Packit bfcc33
                      bool source_comments = false)
Packit bfcc33
  : Sass_Inspect_Options(style, precision),
Packit bfcc33
    indent(indent), linefeed(linefeed),
Packit bfcc33
    source_comments(source_comments)
Packit bfcc33
  { }
Packit bfcc33
Packit bfcc33
};
Packit bfcc33
Packit bfcc33
#endif