Skip to main content
aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
Diffstat (limited to 'org.eclipse.efm.symbex/src/fml/executable/InstanceOfBuffer.h')
-rw-r--r--org.eclipse.efm.symbex/src/fml/executable/InstanceOfBuffer.h158
1 files changed, 158 insertions, 0 deletions
diff --git a/org.eclipse.efm.symbex/src/fml/executable/InstanceOfBuffer.h b/org.eclipse.efm.symbex/src/fml/executable/InstanceOfBuffer.h
new file mode 100644
index 0000000..a859225
--- /dev/null
+++ b/org.eclipse.efm.symbex/src/fml/executable/InstanceOfBuffer.h
@@ -0,0 +1,158 @@
+/*******************************************************************************
+ * Copyright (c) 2016 CEA LIST.
+ *
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Created on: 21 mars 2011
+ *
+ * Contributors:
+ * Arnault Lapitre (CEA LIST) arnault.lapitre@cea.fr
+ * - Initial API and implementation
+ ******************************************************************************/
+
+#ifndef INSTANCEOFBUFFER_H_
+#define INSTANCEOFBUFFER_H_
+
+#include <fml/executable/BaseInstanceForm.h>
+
+#include <common/AvmPointer.h>
+
+#include <fml/lib/ITypeSpecifier.h>
+
+
+namespace sep
+{
+
+class BaseAvmProgram;
+class Buffer;
+
+
+class InstanceOfBuffer :
+ public BaseInstanceForm,
+ AVM_INJECT_INSTANCE_COUNTER_CLASS( InstanceOfBuffer )
+{
+
+ AVM_DECLARE_CLONABLE_CLASS( InstanceOfBuffer )
+
+
+protected:
+ /*
+ * ATTRIBUTES
+ */
+ avm_type_specifier_kind_t mPolicySpecifierKind;
+
+ avm_size_t mCapacity;
+
+
+public:
+ /**
+ * CONSTRUCTOR
+ * Default
+ */
+ InstanceOfBuffer(BaseAvmProgram * aContainer,
+ Buffer * aBuffer, avm_offset_t anOffset);
+
+ InstanceOfBuffer(BaseAvmProgram * aContainer, Buffer * aCompiled,
+ avm_offset_t anOffset, avm_type_specifier_kind_t aSpecifierKind,
+ long aCapacity);
+
+ /**
+ * CONSTRUCTOR
+ * copy
+ */
+ InstanceOfBuffer(const InstanceOfBuffer & aBuffer)
+ : BaseInstanceForm( aBuffer ),
+ mPolicySpecifierKind( aBuffer.mPolicySpecifierKind ),
+ mCapacity( aBuffer.mCapacity )
+ {
+ //!! NOTHING
+ }
+
+
+
+
+ /**
+ * CONSTRUCTOR
+ * for Alias
+ */
+ InstanceOfBuffer(BaseAvmProgram * aContainer, InstanceOfBuffer * aTarget,
+ VectorOfInstanceOfMachine & aRelativeMachinePath)
+ : BaseInstanceForm(CLASS_KIND_T( InstanceOfBuffer ),
+ aContainer, aTarget, aRelativeMachinePath),
+ mPolicySpecifierKind( aTarget->mPolicySpecifierKind ),
+ mCapacity( aTarget->mCapacity )
+ {
+ //!! NOTHING
+ }
+
+
+ /**
+ * DESTRUCTOR
+ */
+ virtual ~InstanceOfBuffer()
+ {
+ //!! NOTHING
+ }
+
+
+ /**
+ * GETTER - SETTER
+ * mPolicySpecifierKind
+ */
+ inline avm_type_specifier_kind_t getPolicySpecifierKind() const
+ {
+ return( mPolicySpecifierKind );
+ }
+
+ inline void setPolicySpecifierKind(avm_type_specifier_kind_t aSpecifierKind)
+ {
+ mPolicySpecifierKind = aSpecifierKind;
+ }
+
+
+ /**
+ * GETTER - SETTER
+ * mCapacity
+ */
+ inline avm_size_t capacity() const
+ {
+ return( mCapacity );
+ }
+
+ inline long realCapacity() const
+ {
+ return( (mCapacity == AVM_NUMERIC_MAX_SIZE_T)? -1 : mCapacity );
+ }
+
+ inline void setCapacity(long aCapacity)
+ {
+ mCapacity = (aCapacity < 0) ? AVM_NUMERIC_MAX_SIZE_T : aCapacity;
+ }
+
+ inline bool isFinite() const
+ {
+ return( mCapacity < AVM_NUMERIC_MAX_SIZE_T );
+ }
+
+ inline bool isInfinite() const
+ {
+ return( mCapacity == AVM_NUMERIC_MAX_SIZE_T );
+ }
+
+
+ /**
+ * Serialization
+ */
+ void strHeader(OutStream & out) const;
+
+ void toStream(OutStream & out) const;
+
+};
+
+
+}
+
+#endif /* INSTANCEOFBUFFER_H_ */

Back to the top