reoxide 0.7.0

Rust-bindings for the ReOxide decompiler extension framework
Documentation
use super::*;
use crate::cpp::*;

#[link(name = "reoxide")]
unsafe extern "C-unwind" {
    pub fn AddTreeState_apply(this: *mut AddTreeState) -> bool;
    pub fn AddTreeState_initAlternateForm(this: *mut AddTreeState) -> bool;

    pub fn AdditiveEdge_getMultiplier(this: *const AdditiveEdge) -> *mut PcodeOp;
    pub fn AdditiveEdge_getOp(this: *const AdditiveEdge) -> *mut PcodeOp;
    pub fn AdditiveEdge_getSlot(this: *const AdditiveEdge) -> i32;
    pub fn AdditiveEdge_getVarnode(this: *const AdditiveEdge) -> *mut Varnode;

    pub fn AddrSpace_doesDeadcode(this: *const AddrSpace) -> bool;
    pub fn AddrSpace_getAddrSize(this: *const AddrSpace) -> u32;
    pub fn AddrSpace_getContain(this: *const AddrSpace) -> *mut AddrSpace;
    pub fn AddrSpace_getHighest(this: *const AddrSpace) -> u64;
    pub fn AddrSpace_getIndex(this: *const AddrSpace) -> i32;
    pub fn AddrSpace_getType(this: *const AddrSpace) -> Spacetype;
    pub fn AddrSpace_getWordSize(this: *const AddrSpace) -> u32;
    pub fn AddrSpace_isBigEndian(this: *const AddrSpace) -> bool;
    pub fn AddrSpace_isTruncated(this: *const AddrSpace) -> bool;

    pub fn AddrSpaceManager_findJoin(this: *const AddrSpaceManager, offset: u64) -> *mut JoinRecord;
    pub fn AddrSpaceManager_getConstant(this: *const AddrSpaceManager, val: u64, retval: *mut Address);
    pub fn AddrSpaceManager_getDefaultCodeSpace(this: *const AddrSpaceManager) -> *mut AddrSpace;
    pub fn AddrSpaceManager_getDefaultDataSpace(this: *const AddrSpaceManager) -> *mut AddrSpace;

    pub fn Address_isBigEndian(this: *const Address) -> bool;
    pub fn Address_isJoin(this: *const Address) -> bool;
    pub fn Address_overlap(this: *const Address, skip: i32, op: *const Address, size: i32) -> i32;
    pub fn Address_renormalize(this: *mut Address, size: i32);

    pub fn Architecture_getSpaceBySpacebase(this: *const Architecture, loc: *const Address, size: i32) -> *mut AddrSpace;

    pub fn BlockBasic_earliestUse(this: *mut BlockBasic, vn: *mut Varnode) -> *mut PcodeOp;
    pub fn BlockBasic_getStart(this: *const BlockBasic, retval: *mut Address);
    pub fn BlockBasic_lastOp(this: *const BlockBasic) -> *mut PcodeOp;

    pub fn BlockGraph_clear(this: *mut BlockGraph);
    pub fn BlockGraph_getBlock(this: *const BlockGraph, i: i32) -> *mut FlowBlock;

    pub fn CPoolRecord_getTag(this: *const CPoolRecord) -> u32;
    pub fn CPoolRecord_getType(this: *const CPoolRecord) -> *mut Datatype;
    pub fn CPoolRecord_getValue(this: *const CPoolRecord) -> u64;

    pub fn CircleRange_circleUnion(this: *mut CircleRange, op2: *const CircleRange) -> i32;
    pub fn CircleRange_intersect(this: *mut CircleRange, op2: *const CircleRange) -> i32;
    pub fn CircleRange_translate2Op(this: *const CircleRange, opc: *mut OpCode, c: *mut u64, cslot: *mut i32) -> i32;

    pub fn CloneBlockOps_cloneExpression(this: *mut CloneBlockOps, ops: *mut StdVectorPtrPcodeOp, followOp: *mut PcodeOp) -> *mut Varnode;

    pub fn ConstantPool_getRecord(this: *const ConstantPool, refs: *const StdVectorU64) -> *const CPoolRecord;

    pub fn Datatype_getAlignSize(this: *const Datatype) -> i32;
    pub fn Datatype_getMetatype(this: *const Datatype) -> TypeMetatype;
    pub fn Datatype_getSize(this: *const Datatype) -> i32;
    pub fn Datatype_getSubType(this: *const Datatype, off: i64, newoff: *mut i64) -> *mut Datatype;
    pub fn Datatype_isCharPrint(this: *const Datatype) -> bool;
    pub fn Datatype_isEnumType(this: *const Datatype) -> bool;
    pub fn Datatype_isFormalPointerRel(this: *const Datatype) -> bool;
    pub fn Datatype_isPieceStructured(this: *const Datatype) -> bool;
    pub fn Datatype_isPtrsubMatching(this: *const Datatype, off: i64, extra: i64, multiplier: i64) -> bool;
    pub fn Datatype_needsResolution(this: *const Datatype) -> bool;
    pub fn Datatype_resolveInFlow(this: *mut Datatype, op: *mut PcodeOp, slot: i32) -> *mut Datatype;

    pub fn FlowBlock_getFalseOut(this: *const FlowBlock) -> *mut FlowBlock;
    pub fn FlowBlock_getIn(this: *mut FlowBlock, i: i32) -> *mut FlowBlock;
    pub fn FlowBlock_getIndex(this: *const FlowBlock) -> i32;
    pub fn FlowBlock_getOut(this: *mut FlowBlock, i: i32) -> *mut FlowBlock;
    pub fn FlowBlock_getTrueOut(this: *const FlowBlock) -> *mut FlowBlock;
    pub fn FlowBlock_hasLoopIn(this: *const FlowBlock) -> bool;
    pub fn FlowBlock_lastOp(this: *const FlowBlock) -> *mut PcodeOp;
    pub fn FlowBlock_sizeIn(this: *const FlowBlock) -> i32;
    pub fn FlowBlock_sizeOut(this: *const FlowBlock) -> i32;

    pub fn FuncCallSpecs_getName(this: *const FuncCallSpecs) -> *const StdString;
    pub fn FuncCallSpecs_isInputActive(this: *const FuncCallSpecs) -> bool;
    pub fn FuncCallSpecs_isOutputActive(this: *const FuncCallSpecs) -> bool;
    pub fn FuncCallSpecs_resolveSpacebaseRelative(this: *mut FuncCallSpecs, data: *mut Funcdata, phvn: *mut Varnode);
    pub fn FuncCallSpecs_setInputBytesConsumed(this: *const FuncCallSpecs, slot: i32, val: i32) -> bool;

    pub fn FuncProto_isInputLocked(this: *const FuncProto) -> bool;
    pub fn FuncProto_isOutputLocked(this: *const FuncProto) -> bool;
    pub fn FuncProto_setReturnBytesConsumed(this: *mut FuncProto, val: i32) -> bool;

    pub fn Funcdata_cseEliminateList(this: *mut Funcdata, list: *mut StdVectorCSEHashPair, outlist: *mut StdVectorPtrVarnode);
    pub fn Funcdata_deadRemovalAllowedSeen(this: *mut Funcdata, spc: *mut AddrSpace) -> bool;
    pub fn Funcdata_deleteVarnode(this: *mut Funcdata, vn: *mut Varnode);
    pub fn Funcdata_distributeIntMultAdd(this: *mut Funcdata, op: *mut PcodeOp) -> bool;
    pub fn Funcdata_findJumpTable(this: *const Funcdata, op: *const PcodeOp) -> *mut JumpTable;
    pub fn Funcdata_getArch(this: *const Funcdata) -> *mut Architecture;
    pub fn Funcdata_getBasicBlocks(this: *const Funcdata) -> *const BlockGraph;
    pub fn Funcdata_getCallSpecs(this: *const Funcdata, op: *const PcodeOp) -> *mut FuncCallSpecs;
    pub fn Funcdata_getFuncProto(this: *mut Funcdata) -> *mut FuncProto;
    pub fn Funcdata_getMerge(this: *mut Funcdata) -> *mut Merge;
    pub fn Funcdata_getScopeLocal(this: *mut Funcdata) -> *mut ScopeLocal;
    pub fn Funcdata_getStoreGuard(this: *const Funcdata, op: *mut PcodeOp) -> *const LoadGuard;
    pub fn Funcdata_getStructure(this: *mut Funcdata) -> *mut BlockGraph;
    pub fn Funcdata_hasTypeRecoveryStarted(this: *const Funcdata) -> bool;
    pub fn Funcdata_inheritResolution(this: *mut Funcdata, parent: *mut Datatype, op: *const PcodeOp, slot: i32, oldOp: *mut PcodeOp, oldSlot: i32) -> i32;
    pub fn Funcdata_isTypeRecoveryOn(this: *const Funcdata) -> bool;
    pub fn Funcdata_newCodeRef(this: *mut Funcdata, m: *const Address) -> *mut Varnode;
    pub fn Funcdata_newConstant(this: *mut Funcdata, s: i32, constant_val: u64) -> *mut Varnode;
    pub fn Funcdata_newExtendedConstant(this: *mut Funcdata, s: i32, val: *mut u64, op: *mut PcodeOp) -> *mut Varnode;
    pub fn Funcdata_newIndirectCreation(this: *mut Funcdata, indeffect: *mut PcodeOp, addr: *const Address, sz: i32, possibleout: bool) -> *mut PcodeOp;
    pub fn Funcdata_newOp(this: *mut Funcdata, inputs: i32, pc: *const Address) -> *mut PcodeOp;
    pub fn Funcdata_newOpBefore(this: *mut Funcdata, follow: *mut PcodeOp, opc: OpCode, in1: *mut Varnode, in2: *mut Varnode, in3: *mut Varnode) -> *mut PcodeOp;
    pub fn Funcdata_newUnique(this: *mut Funcdata, s: i32, ct: *mut Datatype) -> *mut Varnode;
    pub fn Funcdata_newUniqueOut(this: *mut Funcdata, s: i32, op: *mut PcodeOp) -> *mut Varnode;
    pub fn Funcdata_newVarnode(this: *mut Funcdata, s: i32, m: *const Address, ct: *mut Datatype) -> *mut Varnode;
    pub fn Funcdata_newVarnode1(this: *mut Funcdata, s: i32, base: *mut AddrSpace, off: u64) -> *mut Varnode;
    pub fn Funcdata_newVarnodeIop(this: *mut Funcdata, op: *mut PcodeOp) -> *mut Varnode;
    pub fn Funcdata_newVarnodeOut(this: *mut Funcdata, s: i32, m: *const Address, op: *mut PcodeOp) -> *mut Varnode;
    pub fn Funcdata_opBoolNegate(this: *mut Funcdata, vn: *mut Varnode, op: *mut PcodeOp, insertafter: bool) -> *mut Varnode;
    pub fn Funcdata_opDestroy(this: *mut Funcdata, op: *mut PcodeOp);
    pub fn Funcdata_opFlipCondition(this: *mut Funcdata, op: *mut PcodeOp);
    pub fn Funcdata_opInsertAfter(this: *mut Funcdata, op: *mut PcodeOp, prev: *mut PcodeOp);
    pub fn Funcdata_opInsertBefore(this: *mut Funcdata, op: *mut PcodeOp, follow: *mut PcodeOp);
    pub fn Funcdata_opInsertBegin(this: *mut Funcdata, op: *mut PcodeOp, bl: *mut BlockBasic);
    pub fn Funcdata_opInsertInput(this: *mut Funcdata, op: *mut PcodeOp, vn: *mut Varnode, slot: i32);
    pub fn Funcdata_opMarkCalculatedBool(this: *mut Funcdata, op: *mut PcodeOp);
    pub fn Funcdata_opMarkCpoolTransformed(this: *mut Funcdata, op: *mut PcodeOp);
    pub fn Funcdata_opMarkNoCollapse(this: *mut Funcdata, op: *mut PcodeOp);
    pub fn Funcdata_opMarkSpecialPrint(this: *mut Funcdata, op: *mut PcodeOp);
    pub fn Funcdata_opRemoveInput(this: *mut Funcdata, op: *mut PcodeOp, slot: i32);
    pub fn Funcdata_opSetAllInput(this: *mut Funcdata, op: *mut PcodeOp, vvec: *const StdVectorPtrVarnode);
    pub fn Funcdata_opSetInput(this: *mut Funcdata, op: *mut PcodeOp, vn: *mut Varnode, slot: i32);
    pub fn Funcdata_opSetOpcode(this: *mut Funcdata, op: *mut PcodeOp, opc: OpCode);
    pub fn Funcdata_opSetOutput(this: *mut Funcdata, op: *mut PcodeOp, vn: *mut Varnode);
    pub fn Funcdata_opSwapInput(this: *mut Funcdata, op: *mut PcodeOp, slot1: i32, slot2: i32);
    pub fn Funcdata_opUndoPtradd(this: *mut Funcdata, op: *mut PcodeOp, finalize: bool);
    pub fn Funcdata_opUninsert(this: *mut Funcdata, op: *mut PcodeOp);
    pub fn Funcdata_opUnlink(this: *mut Funcdata, op: *mut PcodeOp);
    pub fn Funcdata_opUnsetInput(this: *mut Funcdata, op: *mut PcodeOp, slot: i32);
    pub fn Funcdata_opUnsetOutput(this: *mut Funcdata, op: *mut PcodeOp);
    pub fn Funcdata_removeJumpTable(this: *mut Funcdata, jt: *mut JumpTable);
    pub fn Funcdata_replaceLessequal(this: *mut Funcdata, op: *mut PcodeOp) -> bool;
    pub fn Funcdata_totalReplace(this: *mut Funcdata, vn: *mut Varnode, newvn: *mut Varnode);
    pub fn Funcdata_warning(this: *const Funcdata, txt: *const StdString, ad: *const Address);
    pub fn Funcdata_warningHeader(this: *const Funcdata, txt: *const StdString);

    pub fn JoinRecord_getPiece(this: *const JoinRecord, i: i32) -> *const VarnodeData;
    pub fn JoinRecord_numPieces(this: *const JoinRecord) -> i32;

    pub fn JumpTable_getAddressByIndex(this: *const JumpTable, i: i32, retval: *mut Address);
    pub fn JumpTable_isLabelled(this: *const JumpTable) -> bool;
    pub fn JumpTable_numEntries(this: *const JumpTable) -> i32;

    pub fn LoadGuard_isGuarded(this: *const LoadGuard, addr: *const Address) -> bool;

    pub fn Merge_registerProtoPartialRoot(this: *mut Merge, vn: *mut Varnode);

    pub fn PcodeOp_clearMark(this: *const PcodeOp);
    pub fn PcodeOp_clearStopTypePropagation(this: *mut PcodeOp);
    pub fn PcodeOp_code(this: *const PcodeOp) -> OpCode;
    pub fn PcodeOp_collapse(this: *const PcodeOp, markedInput: *mut bool) -> u64;
    pub fn PcodeOp_collapseConstantSymbol(this: *const PcodeOp, newConst: *mut Varnode);
    pub fn PcodeOp_doesSpecialPrinting(this: *const PcodeOp) -> bool;
    pub fn PcodeOp_getAddr(this: *const PcodeOp) -> *const Address;
    pub fn PcodeOp_getCseHash(this: *const PcodeOp) -> u32;
    pub fn PcodeOp_getEvalType(this: *const PcodeOp) -> u32;
    pub fn PcodeOp_getIn(this: *mut PcodeOp, slot: i32) -> *mut Varnode;
    pub fn PcodeOp_getOpcode(this: *const PcodeOp) -> *mut TypeOp;
    pub fn PcodeOp_getOut(this: *mut PcodeOp) -> *mut Varnode;
    pub fn PcodeOp_getParent(this: *mut PcodeOp) -> *mut BlockBasic;
    pub fn PcodeOp_getSeqNum(this: *const PcodeOp) -> *const SeqNum;
    pub fn PcodeOp_getSlot(this: *const PcodeOp, vn: *const Varnode) -> i32;
    pub fn PcodeOp_isBoolOutput(this: *const PcodeOp) -> bool;
    pub fn PcodeOp_isBooleanFlip(this: *const PcodeOp) -> bool;
    pub fn PcodeOp_isCall(this: *const PcodeOp) -> bool;
    pub fn PcodeOp_isCollapsible(this: *const PcodeOp) -> bool;
    pub fn PcodeOp_isCpoolTransformed(this: *const PcodeOp) -> bool;
    pub fn PcodeOp_isCseMatch(this: *const PcodeOp, op: *const PcodeOp) -> bool;
    pub fn PcodeOp_isDead(this: *const PcodeOp) -> bool;
    pub fn PcodeOp_isIndirectCreation(this: *const PcodeOp) -> bool;
    pub fn PcodeOp_isIndirectSource(this: *const PcodeOp) -> bool;
    pub fn PcodeOp_isMark(this: *const PcodeOp) -> bool;
    pub fn PcodeOp_isMarker(this: *const PcodeOp) -> bool;
    pub fn PcodeOp_isPartialRoot(this: *const PcodeOp) -> bool;
    pub fn PcodeOp_isPtrFlow(this: *const PcodeOp) -> bool;
    pub fn PcodeOp_isReturnCopy(this: *const PcodeOp) -> bool;
    pub fn PcodeOp_isStoreUnmapped(this: *const PcodeOp) -> bool;
    pub fn PcodeOp_noIndirectCollapse(this: *const PcodeOp) -> bool;
    pub fn PcodeOp_numInput(this: *const PcodeOp) -> i32;
    pub fn PcodeOp_setMark(this: *const PcodeOp);
    pub fn PcodeOp_setPartialRoot(this: *mut PcodeOp);
    pub fn PcodeOp_setPtrFlow(this: *mut PcodeOp);
    pub fn PcodeOp_setStopTypePropagation(this: *mut PcodeOp);
    pub fn PcodeOp_usesSpacebasePtr(this: *const PcodeOp) -> bool;

    pub fn PieceNode_getOp(this: *const PieceNode) -> *mut PcodeOp;
    pub fn PieceNode_getSlot(this: *const PieceNode) -> i32;
    pub fn PieceNode_getTypeOffset(this: *const PieceNode) -> i32;
    pub fn PieceNode_getVarnode(this: *const PieceNode) -> *mut Varnode;
    pub fn PieceNode_isLeaf(this: *const PieceNode) -> bool;

    pub fn Scope_isReadOnly(this: *const Scope, addr: *const Address, size: i32, usepoint: *const Address) -> bool;

    pub fn ScopeLocal_markNotMapped(this: *mut ScopeLocal, spc: *mut AddrSpace, first: u64, sz: i32, param: bool);

    pub fn SegmentOp_execute(this: *const SegmentOp, input: *const StdVectorU64) -> u64;
    pub fn SegmentOp_hasFarPointerSupport(this: *const SegmentOp) -> bool;

    pub fn SeqNum_getOrder(this: *const SeqNum) -> u32;

    pub fn StringManager_isString(this: *mut StringManager, addr: *const Address, charType: *mut Datatype) -> bool;

    pub fn Symbol_isNameLocked(this: *const Symbol) -> bool;

    pub fn SymbolEntry_getAddr(this: *const SymbolEntry) -> *const Address;
    pub fn SymbolEntry_getOffset(this: *const SymbolEntry) -> i32;
    pub fn SymbolEntry_getSymbol(this: *const SymbolEntry) -> *mut Symbol;

    pub fn TermOrder_collect(this: *mut TermOrder);
    pub fn TermOrder_getSort(this: *mut TermOrder) -> *const StdVectorPtrAdditiveEdge;
    pub fn TermOrder_sortTerms(this: *mut TermOrder);

    pub fn TypeArray_numElements(this: *const TypeArray) -> i32;

    pub fn TypeEnum_hasNamedValue(this: *const TypeEnum, val: u64) -> bool;

    pub fn TypeFactory_getBase(this: *mut TypeFactory, s: i32, m: TypeMetatype) -> *mut Datatype;
    pub fn TypeFactory_getExactPiece(this: *mut TypeFactory, ct: *mut Datatype, offset: i32, size: i32) -> *mut Datatype;

    pub fn TypeOp_evaluateBinary(this: *const TypeOp, sizeout: i32, sizein: i32, in1: u64, in2: u64) -> u64;
    pub fn TypeOp_isFloatingPointOp(this: *const TypeOp) -> bool;

    pub fn TypePointer_getPtrTo(this: *const TypePointer) -> *mut Datatype;
    pub fn TypePointer_getWordSize(this: *const TypePointer) -> u32;

    pub fn TypePointerRel_evaluateThruParent(this: *const TypePointerRel, addrOff: u64) -> bool;
    pub fn TypePointerRel_getByteOffset(this: *const TypePointerRel) -> i32;
    pub fn TypePointerRel_getParent(this: *const TypePointerRel) -> *mut Datatype;

    pub fn TypeSpacebase_getAddress(this: *const TypeSpacebase, off: u64, sz: i32, point: *const Address, retval: *mut Address);
    pub fn TypeSpacebase_getMap(this: *const TypeSpacebase) -> *mut Scope;

    pub fn UserOpManage_getSegmentOp(this: *const UserOpManage, i: i32) -> *mut SegmentOp;

    pub fn Varnode_beginDescend(this: *const Varnode, retval: *mut StdConstIterPtrPcodeOp);
    pub fn Varnode_characterizeOverlap(this: *const Varnode, op: *const Varnode) -> i32;
    pub fn Varnode_clearMark(this: *const Varnode);
    pub fn Varnode_clearSpacebasePlaceholder(this: *mut Varnode);
    pub fn Varnode_constantMatch(this: *const Varnode, val: u64) -> bool;
    pub fn Varnode_contains(this: *const Varnode, op: *const Varnode) -> i32;
    pub fn Varnode_copySymbol(this: *mut Varnode, vn: *const Varnode);
    pub fn Varnode_copySymbolIfValid(this: *mut Varnode, vn: *const Varnode);
    pub fn Varnode_endDescend(this: *const Varnode, retval: *mut StdConstIterPtrPcodeOp);
    pub fn Varnode_getAddr(this: *const Varnode) -> *const Address;
    pub fn Varnode_getConsume(this: *const Varnode) -> u64;
    pub fn Varnode_getDef(this: *mut Varnode) -> *mut PcodeOp;
    pub fn Varnode_getNZMask(this: *const Varnode) -> u64;
    pub fn Varnode_getOffset(this: *const Varnode) -> u64;
    pub fn Varnode_getSize(this: *const Varnode) -> i32;
    pub fn Varnode_getSpace(this: *const Varnode) -> *mut AddrSpace;
    pub fn Varnode_getSpaceFromConst(this: *const Varnode) -> *mut AddrSpace;
    pub fn Varnode_getStructuredType(this: *const Varnode) -> *mut Datatype;
    pub fn Varnode_getSymbolEntry(this: *const Varnode) -> *mut SymbolEntry;
    pub fn Varnode_getType(this: *const Varnode) -> *mut Datatype;
    pub fn Varnode_getTypeDefFacing(this: *const Varnode) -> *mut Datatype;
    pub fn Varnode_getTypeReadFacing(this: *const Varnode, op: *const PcodeOp) -> *mut Datatype;
    pub fn Varnode_hasNoDescend(this: *const Varnode) -> bool;
    pub fn Varnode_hasNoLocalAlias(this: *const Varnode) -> bool;
    pub fn Varnode_isAddrForce(this: *const Varnode) -> bool;
    pub fn Varnode_isAddrTied(this: *const Varnode) -> bool;
    pub fn Varnode_isAutoLive(this: *const Varnode) -> bool;
    pub fn Varnode_isBooleanValue(this: *const Varnode, useAnnotation: bool) -> bool;
    pub fn Varnode_isConstant(this: *const Varnode) -> bool;
    pub fn Varnode_isConstantExtended(this: *const Varnode, val: *mut u64) -> bool;
    pub fn Varnode_isFree(this: *const Varnode) -> bool;
    pub fn Varnode_isHeritageKnown(this: *const Varnode) -> bool;
    pub fn Varnode_isIndirectZero(this: *const Varnode) -> bool;
    pub fn Varnode_isInput(this: *const Varnode) -> bool;
    pub fn Varnode_isMark(this: *const Varnode) -> bool;
    pub fn Varnode_isNameLock(this: *const Varnode) -> bool;
    pub fn Varnode_isPersist(this: *const Varnode) -> bool;
    pub fn Varnode_isPrecisHi(this: *const Varnode) -> bool;
    pub fn Varnode_isPrecisLo(this: *const Varnode) -> bool;
    pub fn Varnode_isProtoPartial(this: *const Varnode) -> bool;
    pub fn Varnode_isPtrFlow(this: *const Varnode) -> bool;
    pub fn Varnode_isSpacebase(this: *const Varnode) -> bool;
    pub fn Varnode_isSpacebasePlaceholder(this: *const Varnode) -> bool;
    pub fn Varnode_isTypeLock(this: *const Varnode) -> bool;
    pub fn Varnode_isWritten(this: *const Varnode) -> bool;
    pub fn Varnode_loneDescend(this: *const Varnode) -> *mut PcodeOp;
    pub fn Varnode_overlap(this: *const Varnode, op: *const Varnode) -> i32;
    pub fn Varnode_setMark(this: *const Varnode);
    pub fn Varnode_setProtoPartial(this: *mut Varnode);
    pub fn Varnode_setPtrFlow(this: *mut Varnode);
    pub fn Varnode_setStackStore(this: *mut Varnode);
    pub fn Varnode_updateType(this: *mut Varnode, ct: *mut Datatype) -> bool;
    pub fn Varnode_updateType1(this: *mut Varnode, ct: *mut Datatype, lock: bool, over: bool) -> bool;

    pub fn VarnodeData_getAddr(this: *const VarnodeData, retval: *mut Address);

}