module AdLint::Cpp::InlineAssemblyDefinition

Public Instance Methods

create_cxx_asm_definition(src) click to toggle source
# File lib/adlint/cpp/asm.rb, line 42
def create_cxx_asm_definition(src)
  CodeSubstitution.new("asm(__adlint__any);", "").tap do |sub|
    sub.on_substitution += lambda { |matched_toks|
      src.on_inline_assembly.invoke(matched_toks)
    }
  end
end
create_extended_asm_definitions(src) click to toggle source
# File lib/adlint/cpp/asm.rb, line 50
def create_extended_asm_definitions(src)
  [
    "__asm(__adlint__any);",
    "asm { __adlint__any }",
    "__asm { __adlint__any }",
    "__asm__(__adlint__any);",
    "__asm__ volatile (__adlint__any);",
    "__asm__ __volatile__ (__adlint__any);",
    "asm(__adlint__any);",
    "asm volatile (__adlint__any);",
    "asm __volatile__ (__adlint__any);"
  ].map do |ptn|
    CodeSubstitution.new(ptn, "").tap { |sub|
      sub.on_substitution += lambda { |matched_toks|
        src.on_inline_assembly.invoke(matched_toks)
      }
    }
  end
end
create_inline_assembly_substitutions(src) click to toggle source
# File lib/adlint/cpp/asm.rb, line 38
def create_inline_assembly_substitutions(src)
  [create_cxx_asm_definition(src)] + create_extended_asm_definitions(src)
end