0024624: Lost word in license statement in source files
[occt.git] / src / AdvApp2Var / AdvApp2Var_SysBase.hxx
old mode 100755 (executable)
new mode 100644 (file)
index bc6ecb1..6f1c533
@@ -1,19 +1,15 @@
-// Copyright (c) 1999-2012 OPEN CASCADE SAS
+// Copyright (c) 1999-2014 OPEN CASCADE SAS
 //
-// The content of this file is subject to the Open CASCADE Technology Public
-// License Version 6.5 (the "License"). You may not use the content of this file
-// except in compliance with the License. Please obtain a copy of the License
-// at http://www.opencascade.org and read it completely before using this file.
+// This file is part of Open CASCADE Technology software library.
 //
-// The Initial Developer of the Original Code is Open CASCADE S.A.S., having its
-// main offices at: 1, place des Freres Montgolfier, 78280 Guyancourt, France.
+// This library is free software; you can redistribute it and/or modify it under
+// the terms of the GNU Lesser General Public License version 2.1 as published
+// by the Free Software Foundation, with special exception defined in the file
+// OCCT_LGPL_EXCEPTION.txt. Consult the file LICENSE_LGPL_21.txt included in OCCT
+// distribution for complete text of the license and disclaimer of any warranty.
 //
-// The Original Code and all software distributed under the License is
-// distributed on an "AS IS" basis, without warranty of any kind, and the
-// Initial Developer hereby disclaims all such warranties, including without
-// limitation, any warranties of merchantability, fitness for a particular
-// purpose or non-infringement. Please see the License for the specific terms
-// and conditions governing the rights and limitations under the License.
+// Alternatively, this file may be used under the terms of Open CASCADE
+// commercial license or contractual agreement.
 
 // AdvApp2Var_SysBase.hxx
 #ifndef AdvApp2Var_SysBase_HeaderFile
 #endif
 
 class AdvApp2Var_SysBase {
- public: 
+ public:
+  Standard_EXPORT AdvApp2Var_SysBase();
+  Standard_EXPORT ~AdvApp2Var_SysBase();
+  
   //
-  Standard_EXPORT static int mainial_();
+  Standard_EXPORT int mainial_();
 
   Standard_EXPORT static int macinit_(int *, 
                                      int *);
   //
-  Standard_EXPORT static int mcrdelt_(integer *iunit, 
+  Standard_EXPORT int mcrdelt_(integer *iunit, 
                                      integer *isize, 
                                      void *t, 
                                      intptr_t *iofset, 
@@ -45,37 +44,32 @@ class AdvApp2Var_SysBase {
                                      void *tin, 
                                      void *tout);
 
-  Standard_EXPORT static int mcrrqst_(integer *iunit, 
+  Standard_EXPORT int mcrrqst_(integer *iunit, 
                                      integer *isize, 
                                      void *t, 
                                      intptr_t *iofset, 
                                      integer *iercod);
   Standard_EXPORT static integer mnfndeb_();
 
-  Standard_EXPORT static integer mnfnimp_();
   Standard_EXPORT static int do__fio(); 
   Standard_EXPORT static int do__lio ();
-  Standard_EXPORT static int e__wsfe ();
-  Standard_EXPORT static int e__wsle ();
-  Standard_EXPORT static int s__wsfe ();
-  Standard_EXPORT static int s__wsle ();
-  Standard_EXPORT static int macrai4_(integer *nbelem, 
+  Standard_EXPORT int macrai4_(integer *nbelem, 
                                      integer *maxelm, 
                                      integer *itablo,
                                      intptr_t *iofset,
                                      integer *iercod);
-  Standard_EXPORT static int macrar8_(integer *nbelem, 
+  Standard_EXPORT int macrar8_(integer *nbelem, 
                                      integer *maxelm,
                                      doublereal *xtablo, 
                                      intptr_t *iofset, 
                                      integer *iercod);
-  Standard_EXPORT static int macrdi4_(integer *nbelem, 
+  Standard_EXPORT int macrdi4_(integer *nbelem, 
                                      integer *maxelm, 
                                      integer *itablo, 
                                      intptr_t *iofset, 
                                      integer *iercod);
 
-  Standard_EXPORT static int macrdr8_(integer *nbelem,
+  Standard_EXPORT int macrdr8_(integer *nbelem,
                                      integer *maxelm, 
                                      doublereal *xtablo, 
                                      intptr_t *iofset, 
@@ -105,6 +99,64 @@ class AdvApp2Var_SysBase {
   Standard_EXPORT static void mvriraz_(integer *taille,
                                       void*adt);
   
+private:
+  int macrchk_();
+  int mcrlist_(integer *ier) const;
+
+  /* Maximum number of allowed allocation requests.
+     Currently the maximum known number of requests is 7 - see
+     AdvApp2Var_MathBase::mmresol_(). So the current value is a safe margin and
+     a reasonable balance to not provoke stack overflow (especially in
+     multi-threaded execution). Previous number of 1000 was excessive but
+     tolerable when used for static memory.
+  */
+  static const int MAX_ALLOC_NB = 32;
+  
+  enum {
+    static_allocation = 0, /* indicates static allocation, currently not used */
+    heap_allocation   = 1  /* indicates heap allocation */
+  };
+  
+  /* Describes an individual memory allocation request.
+     See format description in the AdvApp2Var_SysBase.cxx.
+     The field order is preserved and the sizes are chosen to minimize
+     memory footprint. Fields containing address have the intptr_t type
+     for easier arithmetic and to avoid casts in the source code.
+
+     No initialization constructor should be provided to avoid wasting
+     time when allocating a field mcrgene_.
+  */
+  struct mitem {
+    unsigned char   prot;
+    unsigned char   unit; //unit of allocation: 1, 2, 4 or 8
+    integer         reqsize;
+    intptr_t        loc;
+    intptr_t        offset;
+    unsigned char   alloctype; // static_allocation or heap_allocation
+    integer         size;
+    intptr_t        addr;
+    integer         userzone; //not used
+    intptr_t        startaddr;
+    intptr_t        endaddr;
+    integer         rank;
+  };
+  
+  struct {
+    mitem           icore[MAX_ALLOC_NB];
+    integer         ncore;
+    unsigned char   lprot;
+  } mcrgene_;
+
+  /* Contains statistics on allocation requests.
+     Index 0 corresponds to static_allocation, 1 - to heap allocation.
+     nrqst - number of allocation requests;
+     ndelt - number of deallocation requests;
+     nbyte - current number of allocated bytes;
+     mbyte - maximum number of ever allocated bytes.
+  */
+  struct {
+    integer nrqst[2], ndelt[2], nbyte[2], mbyte[2];
+  } mcrstac_; 
 };
 
 #endif