00001 // +-------------------------------------------------------------------------+ 00002 // | I__n__t__e__L__i__b 0.6.10 development | 00003 // | Copyright (c) Andrey Vikt. Stolyarov <crocodil_AT_croco.net> 2000-2007. | 00004 // | | 00005 // | This is free software. The library part is available under | 00006 // | GNU LESSER GENERAL PUBLIC LICENSE v.2.1. | 00007 // | GNU LGPL v2.1 is found in docs/gnu_gpl2.txt, or at http://www.gnu.org | 00008 // | Please see also docs/readme.txt and visit http://www.intelib.org | 00009 // | | 00010 // | !!! THERE IS NO WARRANTY OF ANY KIND, NEITHER EXPRESSED NOR IMPLIED !!! | 00011 // +-------------------------------------------------------------------------+ 00012 00013 00014 00015 00026 #ifndef INTELIB_SLOCATN_HPP_SENTRY 00027 #define INTELIB_SLOCATN_HPP_SENTRY 00028 00029 #include "sexpress.hpp" 00030 #include "iexcept.hpp" 00031 00033 00040 class SExpressionLocation : public SExpression { 00041 SReference superstructure; 00042 SReference *location_pointer; 00043 public: 00045 static IntelibTypeId TypeId; 00046 00048 00055 SExpressionLocation(const SReference &superstruct, SReference *location); 00056 00057 protected: 00058 ~SExpressionLocation(); 00059 00060 public: 00062 void Assign(const SReference &value) const { *location_pointer = value; } 00063 00064 #if INTELIB_TEXT_REPRESENTATIONS == 1 00065 virtual class SString TextRepresentation() const; 00066 #endif 00067 }; 00068 00070 class IntelibX_not_a_location : public IntelibX { 00071 public: 00072 IntelibX_not_a_location(SReference a_param); 00073 }; 00074 00075 #endif // sentry