#pragma once #include #include #include #include #include #include template using IPLVector = std::vector; using IPLString = std::string; template using IPLPair = std::pair; template using IPLStack = std::stack; template using IPLUnorderedMap = std::unordered_map; template using IPLSharedPtr = std::shared_ptr; template inline IPLSharedPtr IPLMakeSharePtr(Args&&... args) { return std::make_shared(args...); }; template< typename T> using IPLEnableShared = std::enable_shared_from_this; struct IPLError { unsigned Row; unsigned Column; IPLString File; IPLString What; }; #define NOT_IMPLEMENTED assert(0 && "not-implemented")