35 #include "hurricane/Commons.h" 
   46       enum FunctionFlags { NoFlags        = 0
 
   47                          , NoTechnoUpdate = (1<<0)
 
   60                          , SmartTruncate  = (1<<4)
 
   70       static        void                checkGridBound          ( 
double value );
 
   71       static        void                checkLambdaBound        ( 
double value );
 
   72       static        void                checkPhysicalBound      ( 
double value, 
UnitPower p );
 
   78       static inline Unit                fromMicrons             ( 
double value );
 
   79       static inline Unit                fromNanos               ( 
double value );
 
   82       static inline Unit                grid                    ( 
double value );
 
   84       static inline Unit                physicalToDbu           ( 
double value, 
UnitPower p );
 
   89       static        void                setPrecision            ( 
unsigned int precision, 
unsigned int flags=NoFlags );
 
   91       static        double              getUnitPower            ( 
UnitPower p );
 
   92       static        void                setPhysicalsPerGrid     ( 
double gridsPerLambda, 
UnitPower p );
 
   93       static        double              getPhysicalsPerGrid     ();
 
   94       static        double              physicalToGrid          ( 
double physical, 
UnitPower p );
 
   96       static inline DbU::Unit           getPolygonStep          ();
 
   97       static inline void                setPolygonStep          ( 
DbU::Unit );
 
  115       static inline double              toGrid                  ( 
double u );
 
  117       static inline double              toLambda                ( 
double u );
 
  120       static inline double              toMicrons               ( 
Unit u );
 
  121       static inline double              toNanos                 ( 
Unit u );
 
  125       static inline double              getGrid                 ( 
double u );
 
  127       static inline double              getLambda               ( 
double u );
 
  129       static inline double              getPhysical             ( 
double u, 
UnitPower p );
 
  131       static        string              getValueString          ( 
double u, 
int mode=SmartTruncate );
 
  132       static        Record*             getValueRecord          ( 
const Unit* u );
 
  133       static        Slot*               getValueSlot            ( 
const string& name, 
const Unit* u );
 
  135       static        void                getStringMode           ( 
unsigned int& mode, 
UnitPower& p );
 
  137       static        void                _updateBounds           ();
 
  141       static const Unit          Min;
 
  142       static const Unit          Max;
 
  147       static const unsigned int  _maximalPrecision;
 
  148       static unsigned int        _precision;
 
  149       static double              _resolution;
 
  150       static double              _gridsPerLambda;
 
  151       static double              _physicalsPerGrid;
 
  152       static unsigned int        _stringMode;
 
  157       static double              _gridMax;
 
  158       static double              _lambdaMax;
 
  159       static double              _physicalMax;
 
  173   inline double     DbU::toGrid                  ( 
double u )                   { 
return _resolution*u; }
 
  177   inline double     DbU::toPhysical              ( 
double u, UnitPower p )      { 
return (_physicalsPerGrid*_resolution*u)/getUnitPower(p); }
 
  178   inline double     DbU::toMicrons               ( Unit u )                     { 
return toPhysical(u,UnitPower::Micro); }
 
  179   inline double     DbU::toNanos                 ( Unit u )                     { 
return toPhysical(u,UnitPower::Nano); }
 
  180   inline DbU::Unit  DbU::getPolygonStep          ()                             { 
return _polygonStep; }
 
  193   inline double     DbU::getPhysical             ( 
double u, UnitPower p )      { 
return toPhysical(u,p); }
 
  197   inline void       DbU::setPolygonStep          ( 
DbU::Unit step )             { _polygonStep = step; }
 
  201   { 
DbU::Unit modulo = u % step; 
return (modulo) ? (u + step - modulo) : u; }
 
  204   { 
DbU::Unit modulo = u % step; 
return (modulo) ? (u - modulo) : u; }
 
  215 inline std::string  getString ( 
const std::pair<Hurricane::DbU::Unit,Hurricane::DbU::Unit>& p )
 
  217   return "const std::pair<DbU::Unit,DbU::Unit>";
 
  222 inline Hurricane::Record* getRecord ( 
const std::pair<Hurricane::DbU::Unit,Hurricane::DbU::Unit>& p )
 
  224   Hurricane::Record* record = NULL;
 
  225   record = 
new Hurricane::Record ( 
"const std::pair<DbU::Unit,DbU::Unit>" );
 
  226   record->add( Hurricane::DbU::getValueSlot(
"first" , &p.first ) );
 
  227   record->add( Hurricane::DbU::getValueSlot(
"second", &p.second) );
 
  233 inline std::string  getString ( 
const std::array<Hurricane::DbU::Unit*,3>& a )
 
  235   return "const array<DbU::Unit*,3>";
 
  240 inline Hurricane::Record* getRecord ( 
const std::array<Hurricane::DbU::Unit*,3>& a )
 
  242   Hurricane::Record* record = NULL;
 
  243   record = 
new Hurricane::Record ( 
"const array<DbU::Unit*,3>" );
 
  245   for ( 
size_t i=0 ; i<a.size() ; ++i ) {
 
  246     std::string label = 
"[" + getString(i) + 
"] ";
 
  247     record->add( Hurricane::DbU::getValueSlot(label, a[i]) );
 
  254 inline std::string  getString ( 
const std::vector<Hurricane::DbU::Unit>* v )
 
  256   std::string name = 
"const std::vector<DbU::Unit>:";
 
  257   return name + getString<size_t>(v->size());
 
  262 inline Hurricane::Record* getRecord ( 
const std::vector<Hurricane::DbU::Unit>* v )
 
  264   Hurricane::Record* record = NULL;
 
  265   record = 
new Hurricane::Record ( 
"const vector<DbU::Unit>" );
 
  267   for ( 
size_t i=0 ; i<v->size() ; ++i ) {
 
  268     std::string label = 
"[" + getString(i) + 
"] ";
 
  269     record->add( Hurricane::DbU::getValueSlot(label, &(*v)[i]) );
 
The whole DataBase (API).
Definition: DataBase.h:40
DataBase Unit managment (API).
Definition: DbU.h:43
static DbU::Unit getRealSnapGridStep()
SnapMode
Definition: DbU.h:62
@ Nearest
Definition: DbU.h:64
@ Inferior
Definition: DbU.h:62
@ Superior
Definition: DbU.h:63
static Unit fromPhysical(double value, UnitPower p)
Definition: DbU.h:168
static double getResolution()
static Unit grid(double value)
Definition: DbU.h:184
static void setRealSnapGridStep(DbU::Unit step)
Definition: DbU.h:195
static double toGrid(Unit u)
Definition: DbU.h:172
static Unit fromGrid(double value)
Definition: DbU.h:166
static Unit getDb(Unit u)
Definition: DbU.h:187
static double toLambda(Unit u)
Definition: DbU.h:174
static Unit fromLambda(double value)
Definition: DbU.h:167
std::int64_t Unit
Definition: DbU.h:67
UnitPower
Definition: DbU.h:49
@ Nano
Definition: DbU.h:50
@ Pico
Definition: DbU.h:49
@ Kilo
Definition: DbU.h:54
@ Micro
Definition: DbU.h:51
@ Milli
Definition: DbU.h:52
@ Unity
Definition: DbU.h:53
static unsigned int getPrecision()
static DbU::Unit getSymbolicSnapGridStep()
StringMode
Definition: DbU.h:56
@ Symbolic
Definition: DbU.h:58
@ Grid
Definition: DbU.h:57
static DbU::Unit getOnCustomGrid(DbU::Unit u, DbU::Unit step, SnapMode mode=Nearest)
static DbU::Unit getOnRealSnapGrid(DbU::Unit u, SnapMode mode=Nearest)
static unsigned int getMaximalPrecision()
static void setStringMode(unsigned int mode, UnitPower p=Nano)
static DbU::Unit getOnPhysicalGrid(DbU::Unit u, SnapMode mode=Superior)
Definition: DbU.h:198
static double getGridsPerLambda()
static void setSymbolicSnapGridStep(DbU::Unit step)
Definition: DbU.h:196
static Unit lambda(double value)
Definition: DbU.h:185
static double toPhysical(Unit u, UnitPower p)
Definition: DbU.h:176
static void setGridsPerLambda(double gridsPerLambda, unsigned int flags=NoFlags)
static Unit db(Unit value)
Definition: DbU.h:183
static void setPrecision(unsigned int precision, unsigned int flags=NoFlags)
static DbU::Unit getOnSymbolicSnapGrid(DbU::Unit u, SnapMode mode=Nearest)
static double getGrid(Unit u)
Definition: DbU.h:188
static string getValueString(Unit u, int mode=SmartTruncate)
static double getLambda(Unit u)
Definition: DbU.h:190
static Unit toDb(Unit u)
Definition: DbU.h:171
static Unit fromDb(Unit value)
Definition: DbU.h:165
Contains Almost Everything.
Definition: BasicLayer.h:39