Quellcodebibliothek Statistik Leitseite products/Sources/formale Sprachen/C/LibreOffice/bin/   (Office von Apache Version 25.8.3.2©)  Datei vom 5.10.2025 mit Größe 3 kB image not shown  

Quellcode-Bibliothek dump-poolitems-values.py   Sprache: Python

 
#!/usr/bin/python


# Produce a dump of name->constant of the poolitem values, to make interpreting things in the debugger easier
#

import subprocess

macroNameToValue = dict()
macroNameToOriginalLine = dict()


def extractMacroValue(macroValue):
    if isinstance(macroValue, int):
        return macroValue
    elif macroValue.isdigit():
        return int(macroValue)
    elif macroValue[0:2] == "0x":
        return int(macroValue, 16)
    elif macroValue.find("+") != -1:
        tokens = macroValue.split("+")
        tokens1 = tokens[0].strip()
        tokens2 = tokens[1].strip()
        return extractMacroValue(tokens1) + extractMacroValue(tokens2)
    elif macroValue.find("-") != -1:
        tokens = macroValue.split("-")
        tokens1 = tokens[0].strip()
        tokens2 = tokens[1].strip()
        return extractMacroValue(tokens1) - extractMacroValue(tokens2)
    rv = extractMacroValue(macroNameToValue[macroValue])
    macroNameToValue[macroValue] = rv
    return rv


a = subprocess.Popen("cpp -E -dD -Iinclude/ include/editeng/eeitem.hxx", stdout=subprocess.PIPE, shell=True)

with a.stdout as txt:
    for line in txt:
        line = line.strip()
        originalLine = line
        if not line.startswith("#define "):
            continue
        # strip the '#define' off the front
        idx1 = line.find(" ")
        line = line[idx1:len(line)].strip()
        # extract the name
        idx1 = line.find(" ")
        if (idx1 == -1):
            continue
        macroName = line[0:idx1].strip()
        line = line[idx1:len(line)].strip()
        # ignore internal stuff
        if macroName.startswith("_"):
            continue
        # strip any trailing comments
        idx1 = line.find("//")
        if (idx1 != -1):
            line = line[0:idx1].strip()
        idx1 = line.find("/*")
        if (idx1 != -1):
            line = line[0:idx1].strip()
        if len(line) == 0:
            continue
        # strip brackets
        if line[0] == "(":
            line = line[1:]
        if line[len(line)-1] == ")":
            line = line[0:len(line)-1]
        macroValue = line.strip()
        # ignore macros that #define strings, not interested in those
        if (macroValue.find("\"") != -1):
            continue
        # ignore the multiline macros
        if (macroValue.find("\\") != -1):
            continue
        # check for redefinitions
        if macroNameToValue.has_key(macroName):
            print("Redefinition:\n\t",  macroNameToOriginalLine[macroName], "\n\t", originalLine)
        else:
            macroNameToValue[macroName] = macroValue
            macroNameToOriginalLine[macroName] = originalLine

# decode the constants into their numeric values recursively
macroValueToName = dict()
for macroName in macroNameToValue:
    macroValue = macroNameToValue[macroName]
    try:
        macroValue = extractMacroValue(macroName)
        macroValueToName[macroValue] = macroName
    except KeyError:
        print("warning: could not decode macro ", macroName)

for macroValue in sorted(macroValueToName):
    macroName = macroValueToName[macroValue]
    print(repr(macroNameToValue[macroName]).rjust(5), " ", macroName)



87%


¤ Die Informationen auf dieser Webseite wurden nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit, noch Qualität der bereit gestellten Informationen zugesichert.0.12Bemerkung:  (vorverarbeitet)  ¤

*© Formatika GbR, Deutschland






Wurzel

Suchen

Beweissystem der NASA

Beweissystem Isabelle

NIST Cobol Testsuite

Cephes Mathematical Library

Wiener Entwicklungsmethode

Haftungshinweis

Die Informationen auf dieser Webseite wurden nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit, noch Qualität der bereit gestellten Informationen zugesichert.

Bemerkung:

Die farbliche Syntaxdarstellung ist noch experimentell.