Module: AdLint::Cpp::InlineAssemblyDefinition

Included in:
PreprocessedSource
Defined in:
lib/adlint/cpp/asm.rb

Instance Method Summary collapse

Instance Method Details

#create_cxx_asm_definition(src) ⇒ Object



42
43
44
45
46
47
48
# 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) ⇒ Object



50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
# 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) ⇒ Object



38
39
40
# 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