/* 
 * File:   operators.h
 * Author: pgess <v.melnychenko@xreate.org>
 *
 * Created on April 8, 2017, 1:33 PM
 */

#ifndef OPERATORS_H
#define OPERATORS_H

#include "pass/compilepass.h"

namespace llvm {
    class Value;
}

namespace xreate { namespace compilation {
    
class PointerArithmetic {
public:
    static llvm::Value* add(llvm::Value *left, llvm::Value *right, Context context, const std::string& hintVarDecl);
};

class StructUpdate {
public:
    static llvm::Value*  add(const Expression& left, llvm::Value *leftRaw, const Expression& right, Context context, const std::string& hintVarDecl);
};
   
    
} } //namespace xreate

#endif /* OPERATORS_H */

