/* This Source Code Form is subject to the terms of the Mozilla Public
 * License, v. 2.0. If a copy of the MPL was not distributed with this
 * file, You can obtain one at http://mozilla.org/MPL/2.0/.
 * 
 * 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 pointerarithmetic {
    class PointerArithmetic {
    public:
        static llvm::Value* add(llvm::Value *left, llvm::Value *right, compilation::Context context, const std::string& hintVarDecl);
    };
} //end of pointerarithmetic namespace

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

#endif /* OPERATORS_H */

